| TOC |
|
By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work in progress.”
The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.
This Internet-Draft will expire on May 31, 2008.
Copyright © The IETF Trust (2007).
This document defines a bi-directional protocol mapping for use by gateways that enable the exchange of multimedia signalling messages between systems that implement the Jingle extensions to the Extensible Messaging and Presence Protocol (XMPP) and those that implement the Session Initiation Protocol (SIP).
1.
Introduction
1.1.
Architectural Assumptions
1.2.
Terminology
2.
Jingle to SIP
2.1.
Overview
2.2.
Syntax Mappings
2.3.
Sample Scenarios
3.
SIP to Jingle
4.
Security Considerations
5.
References
5.1.
Normative References
5.2.
Informative References
§
Author's Address
§
Intellectual Property and Copyright Statements
| TOC |
The Session Initiation Protocol [SIP] (Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, “SIP: Session Initiation Protocol,” June 2002.) is a widely-deployed technology for the management of multimedia sessions (such as voice calls) over the Internet. SIP itself provides a signalling channel (typically via the User Datagram Protocol [UDP] (Postel, J., “User Datagram Protocol,” August 1980.)), over which two or more parties can exchange messages for the purpose of negotiating a media session that uses a dedicated media channel such as the Real-time Transport Protocol [RTP] (Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, “RTP: A Transport Protocol for Real-Time Applications,” July 2003.).
The Extensible Messaging and Presence Protocol [XMPP] (Saint-Andre, P., “Extensible Messaging and Presence Protocol (XMPP): Core,” October 2004.) also provides a signalling channel, typically via the Transmission Control Protocol [TCP] (Postel, J., “Transmission Control Protocol,” September 1981.). Given the significant differences between XMPP and SIP, it is difficult to combine the two technologies in a single user agent. Therefore, developers wishing to add multimedia session capabilities to XMPP clients have defined an XMPP-specific negotiation protocol called Jingle [JINGLE] (Ludwig, S., Beda, J., Saint-Andre, P., McQueen, R., Egan, S., and J. Hildebrand, “Jingle,” June 2007.). However, Jingle has been designed to easily map to SIP for communication through gateways or other transformation mechanisms. Consistent with existing specifications for mapping between XMPP and SIP for basic messaging and presence [XMPP‑SIMPLE] (Saint-Andre, P., “Basic Messaging and Presence Interworking between the Extensible Messaging and Presence Protocol (XMPP) and Session Initiation Protocol (SIP) for Instant Messaging and Presence Leveraging Extensions (SIMPLE),” August 2007.) as well as text chat sessions [XMPP‑MSRP] (Saint-Andre, P., Gavita, E., Hossain, N., and S. Loreto, “Interworking between the Extensible Messaging and Presence Protocol (XMPP) and the Message Session Relay Protocol (MSRP),” November 2007.), this document describes a bi-directional protocol mapping for use by gateways that enable the exchange of multimedia signalling messages between systems that implement the XMPP Jingle extensions and those that implement SIP.
| TOC |
Protocol translation between Jingle and SIP could occur in a number of different entities, depending on the architecture of presence and messaging deployments. For example, protocol translation could occur within a multi-protocol server, within a multi-protocol client, or within a gateway that acts as a dedicated protocol translator.
This document assumes that the protocol translation will occur within a gateway. (This assumption not meant to discourage protocol translation within multi-protocol clients or servers; instead, this assumption is followed mainly to clarify the discussion and examples so that the protocol translation principles can be more easily understood and can be applied by client and server implementors with appropriate modifications to the examples and terminology.) Specifically, we assume that the protocol translation will occur within an "Jingle-to-SIP gateway" that translates Jingle syntax and semantics on behalf of an XMPP service when communicating with SIP services and/or within a "SIP-to-Jingle gateway" that translates SIP syntax and semantics when communicating with XMPP services.
We further assume that protocol translation will occur within a gateway in the source domain, so that information generated by the user of an XMPP service will be translated by a gateway within the trust domain of that XMPP service, and information generated by the user of a SIMPLE service will be translated by a gateway within the trust domain of that SIP service.
An architectural diagram for a typical gateway deployment is shown below, where the entities have the following significance and the "#" character is used to show the boundary of a trust domain:
##################################################################### # # # # +-- s2j.example.net---#------------- example.com # # | # | | # # example.net -----------------#--- j2s.example.com | # # | # | # # | # | # # romeo@example.net # juliet@example.com # # # # #####################################################################
| TOC |
The capitalized key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.) [TERMS].
| TOC |
| TOC |
As mentioned, Jingle was designed in part to enable straightforward protocol mapping between XMPP and SIP. However, given the significantly different technology assumptions underlying XMPP and SIP, Jingle is naturally different from SIP in several important respects:
| TOC |
| TOC |
Jingle is designed in a modular fashion, so that session description data is generally carried in a payload within the generic Jingle elements, i.e., the <jingle/> element and its <content/> child. The following example illustrates this structure, where the XMPP stanza is a request to initiate an audio session using RTP over a raw UDP transport.
<iq from='romeo@example.net/orchard'
id='jingle1'
to='juliet@example.com/balcony'
type='set'>
<jingle xmlns='urn:xmpp:jingle'
action='session-initiate'
initiator='romeo@example.net/orchard'
responder='juliet@example.com/balcony'
sid='a73sjjvkla37jfea'>
<content creator='initiator'
name='this-is-the-audio-content'
profile='RTP/AVP'
senders='both'>
<description xmlns='urn:xmpp:jingle:app:audio-rtp'>
<payload-type id='96' name='speex' clockrate='16000'/>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
<payload-type channels='2'
clockrate='16000'
id='103'
name='L16'/>
<payload-type id='98' name='x-ISAC' clockrate='8000'/>
</description>
<transport xmlns='urn:xmpp:jingle:transport:raw-udp'>
<candidate ip='10.1.1.104' port='13540' generation='0'/>
</transport>
</content>
</jingle>
</iq>
In the foregoing example, the syntax and semantics of the <jingle/> and <content/> elements are defined in [JINGLE] (Ludwig, S., Beda, J., Saint-Andre, P., McQueen, R., Egan, S., and J. Hildebrand, “Jingle,” June 2007.), the syntax and semantics of the <description/> element are defined in [JINGLE‑AUDIO] (Ludwig, S., Saint-Andre, P., Egan, S., and R. McQueen, “Jingle Audio via RTP,” November 2007.), and the syntax and semantics of the <transport/> element are defined in [JINGLE‑UDP] (Beda, J., Saint-Andre, P., Ludwig, S., Hildebrand, J., and S. Egan, “Jingle Raw UDP Transport,” November 2007.). Other <description/> elements are defined in specifications for the appropriate application types (see for example [JINGLE‑VIDEO] (Saint-Andre, P. and M. Chen, “Jingle Video via RTP,” November 2007.)) and other <transport/> elements are defined in the specifications for appropriate transport methods (see for example [JINGLE‑ICE] (Beda, J., Ludwig, S., Saint-Andre, P., Hildebrand, J., and S. Egan, “Jingle ICE-UDP Transport Method,” November 2007.), which defines an XMPP profile of [ICE] (Rosenberg, J., “Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols,” October 2007.)).
At the core Jingle layer, the following mappings are defined.
+--------------------------------+--------------------------------+ | Jingle | SIP | +--------------------------------+--------------------------------+ | <jingle/> 'action' | [ see next table ] | +--------------------------------+--------------------------------+ | <jingle/> 'initiator' | [ no mapping ] | +--------------------------------+--------------------------------+ | <jingle/> 'responder' | [ no mapping ] | +--------------------------------+--------------------------------+ | <jingle/> 'sid' | local-part of Call-ID | +--------------------------------+--------------------------------+ | local-part of 'initiator' | <username> in SDP o= line | +--------------------------------+--------------------------------+ | <content/> 'creator' | [ no mapping ] | +--------------------------------+--------------------------------+ | <content/> 'name' | [ no mapping ] | +--------------------------------+--------------------------------+ | <content/> 'profile' | <proto> in SDP m= line | +--------------------------------+--------------------------------+ | <content/> 'senders' value of | a= line of sendrecv, recvonly, | | both, initiator, or responder | or sendonly | +--------------------------------+--------------------------------+
The 'action' attribute of the <jingle/> element has nine allowable values. In general they should be mapped as shown in the following table, with some exceptions as described herein.
+-------------------+-----------------+ | Jingle Action | SIP Method | +-------------------+-----------------+ | content-accept | INVITE response | | | (1xx) | +-------------------+-----------------+ | content-add | INVITE request | +-------------------+-----------------+ | content-modify | INVITE request | +-------------------+-----------------+ | content-remove | INVITE request | +-------------------+-----------------+ | session-accept | INVITE response | | | (1xx or 2xx) | +-------------------+-----------------+ | session-info | [varies] | +-------------------+-----------------+ | session-initiate | INVITE request | +-------------------+-----------------+ | session-terminate | BYE | +-------------------+-----------------+ | transport-info | [varies] | +-------------------+-----------------+
| TOC |
A Jingle application format for audio exchange via RTP is specified in [JINGLE‑AUDIO] (Ludwig, S., Saint-Andre, P., Egan, S., and R. McQueen, “Jingle Audio via RTP,” November 2007.). This application format effectively maps to the "RTP/AVP" profile specified in [RTP‑AVP] (Schulzrinne, H. and S. Casner, “RTP Profile for Audio and Video Conferences with Minimal Control,” July 2003.), where the media type is "audio" and the specific mappings to SDP syntax are provided in [JINGLE‑AUDIO] (Ludwig, S., Saint-Andre, P., Egan, S., and R. McQueen, “Jingle Audio via RTP,” November 2007.).
| TOC |
A Jingle application format for video exchange via RTP is specified in [JINGLE‑VIDEO] (Saint-Andre, P. and M. Chen, “Jingle Video via RTP,” November 2007.). This application format effectively maps to the "RTP/AVP" profile specified in [RTP‑AVP] (Schulzrinne, H. and S. Casner, “RTP Profile for Audio and Video Conferences with Minimal Control,” July 2003.), where the media type is "audio" and the specific mappings to SDP syntax are provided in [JINGLE‑VIDEO] (Saint-Andre, P. and M. Chen, “Jingle Video via RTP,” November 2007.).
| TOC |
A basic Jingle transport method for exchanging media over UDP is specified in [JINGLE‑UDP] (Beda, J., Saint-Andre, P., Ludwig, S., Hildebrand, J., and S. Egan, “Jingle Raw UDP Transport,” November 2007.). This transport method involves the negotiation of an IP address and port only, and does not provide NAT traversal. The Jingle 'ip' attribute maps to the connection-address parameter of the SDP c= line and the 'port' attribute maps to the port parameter of the SDP m= line.
| TOC |
A more advanced Jingle transport method for exchanging media over UDP is specified in [JINGLE‑ICE] (Beda, J., Ludwig, S., Saint-Andre, P., Hildebrand, J., and S. Egan, “Jingle ICE-UDP Transport Method,” November 2007.). Under ideal conditions this transport method provides NAT traversal by following the Interactive Connectivity Exchange methodology specified in [ICE] (Rosenberg, J., “Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols,” October 2007.). The relevant SDP mappings are provided in [JINGLE‑ICE] (Beda, J., Ludwig, S., Saint-Andre, P., Hildebrand, J., and S. Egan, “Jingle ICE-UDP Transport Method,” November 2007.).
| TOC |
The following sections provide sample scenarios (or "call flows") that illustrate the principles of interworking from Jingle to SIP. These scenarios are not exhaustive.
| TOC |
The protocol flow for a basic voice chat between a Jingle user and a SIP user through a gateway is illustrated in the following diagram.
Juliet ...Jingle... Gateway ...SIP... Romeo | | | | session-initiate | | |----------------------->| INVITE | | IQ-result (ack) |---------------------->| |<-----------------------| 180 Ringing | | session-info (ringing) |<----------------------| |<-----------------------| | | IQ-result (ack) | | |----------------------->| 200 OK | | session-accept |<----------------------| |<-----------------------| | | IQ-result (ack) | | |----------------------->| ACK | | MEDIA SESSION | |<==============================================>| | | BYE | | |<----------------------| | session-terminate | | |<-----------------------| | | IQ-result (ack) | | |----------------------->| | | | 200 OK | | |---------------------->| | | |
| TOC |
To follow.
| TOC |
To follow.
| TOC |
| TOC |
| TOC |
| TOC |
| Peter Saint-Andre | |
| XMPP Standards Foundation | |
| P.O. Box 1641 | |
| Denver, CO 80201 | |
| USA | |
| Email: | stpeter@jabber.org |
| URI: | https://stpeter.im/ |
| TOC |
Copyright © The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an “AS IS” basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA).