Network Working Group R. Sparks Internet-Draft dynamicsoft Expires: April 27, 2003 October 27, 2002 Establishing jabber Messaging Sessions with the Session Initiation Protocol draft-sparks-simple-jabber-sessions-00 Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. 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 April 27, 2003. Copyright Notice Copyright (C) The Internet Society (2002). All Rights Reserved. Abstract This document explores modeling jabber message streams as media sessions, and how they can be initiated with the Session Initiation Protocol. It also explores how these sessions can be integrated into existing session-based multimedia communication applications. Sparks Expires April 27, 2003 [Page 1] Internet-Draft Establishing jabber Sessions with SIP October 2002 Table of Contents 1. An overview of session management using SIP . . . . . . . . . 3 2. Jabber messaging as a media session . . . . . . . . . . . . . 3 3. A example jabber chat session . . . . . . . . . . . . . . . . 4 4. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 8 References . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Author's Address . . . . . . . . . . . . . . . . . . . . . . . 9 Full Copyright Statement . . . . . . . . . . . . . . . . . . . 10 Sparks Expires April 27, 2003 [Page 2] Internet-Draft Establishing jabber Sessions with SIP October 2002 1. An overview of session management using SIP The Session Initiation Protocol [1] (SIP) is designed to manage media "sessions" between communicating parties. The types of media these sessions can use is unbounded and can range from simple audio to synchronized audio, video, and text. To establish such session, SIP first provides a rendezvous mechanism. Parties wishing to enter into a communication session do not need to know beforehand how to reach their intended peers' endpoints. Rather, they can send an invite to a session to the peer's address of record. SIP services will route that invitation to the appropriate endpoint(s) based on information the peer has provided and the characteristics of the invitation. In most cases, the invitation will contain an "offer" of a session (maybe several), describing the potential transports and encoding characteristics for the media streams within the session. The peer provides an "answer" accepting or declining each stream in the offer, and includes its contribution to the necessary transport information and characteristic tuning for those streams it accepts. ([2] discusses this offer/answer model in detail). At this point, the session is established and the parties begin communication over those streams. When one of the parties is finished with the session, they tell their peer "bye" using SIP, terminating the session. 2. Jabber messaging as a media session A series of jabber "chat" or "groupchat" messages can be viewed as a session. This allows a communication user agent to offer a jabber messaging session as one of the possible media types in a session. For instance, Alice may want to communicate with Bob. Alice doesn't know at the moment whether Bob has his phone or his jabber client handy, but she's willing to use either. She sends an invitation to a session to the address of record she has for Bob, sip:bob@biloxi.com. Her invitation offers both voice and a jabber chat session. The SIP services at biloxi.com forward the invitation to Bob at his currently registered clients. Bob accepts the invitation at his jabber client and they begin a threaded chat conversation. This session model allows jabber message sessions to be integrated into advanced communications applications with little to no additional protocol development. For example, during the above chat session, Bob decides Alice really needs to be talking to Carol. Bob can transfer Alice to Carol, introducing them into their own jabber messaging session. Jabber messaging sessions could be integrated into call-center and dispatch environments utilizing third-party call control and conferencing applications. The rendezvous and characteristics negotiation features of SIP can also be used to introduce peers to jabber networks that have Sparks Expires April 27, 2003 [Page 3] Internet-Draft Establishing jabber Sessions with SIP October 2002 restricted server-to-server policies. A SIP invitation can contain an address and port of a jabber server for the peer to connect to. It can also securely provide credentials or other data to be consumed by that jabber server. Further, the invitation could provide material to be used to encrypt the bodies of the messages transported in the chat session being established. In the extreme, an endpoint could create an ephemeral stand-alone jabber server co-located with its client and use SIP to invite a peer to enter into a chat session at that server. In other cases, the invitation would allow an endpoint's jabber client to use its usual "home" jabber server, establishing chat or groupchat sessions over an existing connection, if present. The session management capabilities of SIP can be used to add concrete start and stop times to those sessions and, as above, provide material that the endpoints can use to secure the session. For example, Alice might be in a phone conference with Bob and decides she needs a text sub-channel. She is currently connected to the public jabber cloud through atlanta.com and Bob is currently connected to the public cloud through biloxi.com. Alice and Bob don't know each other's jabber id. Alice can use SIP to invite Bob into a chat session, providing her jabber id, a thread to use, and maybe even a key to encrypt the messages with. Bob will provide his jabber id in the SIP answer. Armed with this information, each of their endpoints can associate the resulting chat session with the phone call. Similarly, SIP can be used to invite peers to join ad-hoc or permanent jabber groupchat sessions. 3. A example jabber chat session Figure 1 shows Romeo attempting to establish a session with Juliet. Romeo offers both voice and a jabber chat session. Juliet declines the voice session in favor of jabber chat, leading to the messaging dialog from section 4.5 of [3]. Caveat: This is a very rough first cut at what the session description (the SDP in the body of the messages) might look like, and must not be taken as a normative suggestion. As this problem is studied, a different form will almost certainly be decided on. The point of this example is to show, roughly, how the important information needed to set up such a session can be carried. --------------------------------------------------------------------- SIP Message 1: Sparks Expires April 27, 2003 [Page 4] Internet-Draft Establishing jabber Sessions with SIP October 2002 INVITE sip:juliet@capulet.com SIP/2.0 Via: SIP/2.0/TCP orchard.montague.net;branch=z9hG4bK2a9323 To: Juliet From: Romeo ;tag=29923923 Call-ID: 2349098234@orchard.montague.net CSeq: 13992 INVITE Max-Forwards: 70 Contact: Content-Type: application/sdp Content-Length: (appropriate value) v=0 o=romeo 28908764872 28908764872 IN IP4 orchard.montague.net s=- c=IN IP4 orchard.montague.net t=0 0 m=audio 39923 RTP/AVP 0 a=rtpmap:0 PCMU/8000 c=IN IP4 xmpp.montague.net t=0 0 m=message 5222 xmpp/tcp chat a=jid:romeo@mantague.net/orchard a=thread:283461923759234 SIP Message 2 : SIP/2.0 200 OK Via: SIP/2.0/TCP orchard.montague.net;branch=z9hG4bK2a9323 To: Juliet ;tag=9392312353 From: Romeo ;tag=29923923 Call-ID: 2349098234@orchard.montague.net CSeq: 13992 INVITE Max-Forwards: 70 Contact: Content-Type: application/sdp Content-Length: (appropriate value) v=0 o=juliet 28908765142 28908765142 IN IP4 balcony.capulet.com s=- c=IN IP4 balcony.capulet.com t=0 0 m=audio 0 RTP/AVP 0 a=rtpmap:0 PCMU/8000 c=IN IP4 xmpp.montague.net t=0 0 m=message 5222 xmpp/tcp chat a=jid:juliet@capulet.com/balcony Sparks Expires April 27, 2003 [Page 5] Internet-Draft Establishing jabber Sessions with SIP October 2002 SIP Message 3 : ACK sip:juliet@balconey.capulet.com SIP/2.0 Via: SIP/2.0/TCP orchard.montague.net;branch=z9hG4bK239s934 To: Juliet ;tag=9392312353 From: Romeo ;tag=29923923 Call-ID: 2349098234@orchard.montague.net CSeq: 13992 ACK Max-Forwards: 70 Content-Length:0 Figure 1: Establishing a chat session --------------------------------------------------------------------- If they aren't already connected to the public jabber network, Romeo and Juliet now establish jabber sessions with xmpp.montague.net at port 5222 and register with the service. They can then enter into the jabber chat session from section 4.5 of [3] also shown here in Figure 2. Sparks Expires April 27, 2003 [Page 6] Internet-Draft Establishing jabber Sessions with SIP October 2002 --------------------------------------------------------------------- Art thou not Romeo, and a Montague? 283461923759234 Neither, fair saint, if either thee dislike. 283461923759234 How cam'st thou hither, tell me, and wherefore? 283461923759234 Figure 2: A jabber chat session --------------------------------------------------------------------- When they are done, Juliet terminates the session as shown in Figure 3. Sparks Expires April 27, 2003 [Page 7] Internet-Draft Establishing jabber Sessions with SIP October 2002 --------------------------------------------------------------------- SIP Message 4: BYE sip:romeo@orchard.montague.net SIP/2.0 Via: SIP/2.0/TCP balconey.capulet.com;branch=z9hG4bK993231 From: Juliet ;tag=9392312353 To: Romeo ;tag=29923923 Call-ID: 2349098234@orchard.montague.net CSeq: 33903 BYE Max-Forwards: 70 Content-Length:0 SIP Message 5: SIP/2.0 200 OK Via: SIP/2.0/TCP balconey.capulet.com;branch=z9hG4bK993231 From: Juliet ;tag=9392312353 To: Romeo ;tag=29923923 Call-ID: 2349098234@orchard.montague.net CSeq: 33903 BYE Max-Forwards: 70 Content-Length:0 Figure 3: Terminating a jabber chat session --------------------------------------------------------------------- 4. Acknowledgments The following have provided significant support to the creation of this document through detailed discussions and review: Jonathan Rosenberg Adam Roach Ben Campbell References [1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002. [2] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Sparks Expires April 27, 2003 [Page 8] Internet-Draft Establishing jabber Sessions with SIP October 2002 Session Description Protocol (SDP)", RFC 3264, June 2002. [3] Miller, J. and P. Saint-Andre, "XMPP Instant Messaging", Internet-Draft