[Standards-JIG] Jingle relaying or proxying
Jean-Louis Seguineau
jean-louis.seguineau at laposte.net
Wed Nov 1 10:13:09 CST 2006
In the preceding discussion about a Jingle media proxy, Peter very
appropriately mentioned that in real life this kind of service may provided
from a different machine that a user's home server.
The current XEP-0166 most of the examples refer to point-to-point session
use cases, where two Jingle clients negotiate a session directly between
themselves. The generic signaling context of the XEP can be summarized as:
ClientA ---- XMPPServer1 ----- XMPPServer2 ----- ClientB
Now, in the case where a Jingle proxying service of any sort (IPBX, media
proxy, etc) is provided by a separate server, the signaling context would be
more like:
ClientA ---- XMPPServer1 ----- JingleSce ----- XMPPServer2 ----- ClientB
In this use case, we would have ClientA discovering the JingleSce server
through XEP-0030 disco, and ending up knowing the JID of the service, and
negotiate directly with the service. So in the Jingle stanza the client
would use something like:
<iq to='jingle.capulet.com/balcony' from='romeo at montague.net/orchard'
id='jingle1' type='set'>
<jingle xmlns='http://jabber.org/protocol/jingle'
action='session-initiate'
initiator='romeo at montague.net/orchard'
sid='a73sjjvkla37jfea'>
...
</iq>
If the Jingle service is only acting as a signaling relay, as it would be
the case of an IPBX or Jingle media proxy, ClientA will in fact be trying to
reach ClientB *through* the JingleSce server. At this point we need a way to
tell the JingleSce server that the negotiation is in fact destined to
ClientB.
I wanted to reformulate the question on how this can be achieved. After
off-list discussion two alternatives approaches have emerged:
- modify the XEP-0166 specification to include a relaying/forwarding
capability. This would be achieved by creating a new element to hold the JID
of ClientB.
<iq to='jingle.capulet.com/balcony' from='romeo at montague.net/orchard'
id='jingle1' type='set'>
<jingle xmlns='http://jabber.org/protocol/jingle'
action='session-initiate'
initiator='romeo at montague.net/orchard'
sid='a73sjjvkla37jfea'>
<relay>juliet at capulet.com/balcony</relay>
<content name='this-is-the-audio-content'>
...
</content>
</iq>
- use the XEP-0033 extended addressing to hold the JID of ClientB without
modifying the XEP-0166.
<iq to='jingle.capulet.com/balcony' from='romeo at montague.net/orchard'
id='jingle1' type='set'>
<addresses xmlns='http://jabber.org/protocol/address'>
<address type='to' jid=' juliet at capulet.com/balcony '/>
</addresses>
<jingle xmlns='http://jabber.org/protocol/jingle'
action='session-initiate'
initiator='romeo at montague.net/orchard'
sid='a73sjjvkla37jfea'>
<content name='this-is-the-audio-content'>
...
</content>
</iq>
We would be interested in hearing everyone's comments on these two protocol
approaches.
Jean-Louis
More information about the Standards-JIG
mailing list