idnits 2.17.1 draft-ietf-stox-chat-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (July 1, 2013) is 3945 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-11) exists of draft-ietf-stox-core-00 Summary: 0 errors (**), 0 flaws (~~), 2 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group P. Saint-Andre 3 Internet-Draft Cisco Systems, Inc. 4 Intended status: Standards Track S. Loreto 5 Expires: January 2, 2014 E. Gavita 6 N. Hossain 7 Ericsson 8 July 1, 2013 10 Interworking between the Session Initiation Protocol (SIP) and the 11 Extensible Messaging and Presence Protocol (XMPP): One-to-One Text Chat 12 draft-ietf-stox-chat-00 14 Abstract 16 This document defines a bidirectional protocol mapping for the 17 exchange of instant messages in the context of a one-to-one chat 18 session between a user of the Session Initiation Protocol (SIP) and a 19 user of the Extensible Messaging and Presence Protocol (XMPP). 20 Specifically for SIP text chat, this document specifies a mapping to 21 the Message Session Relay Protocol (MSRP). 23 Status of this Memo 25 This Internet-Draft is submitted in full conformance with the 26 provisions of BCP 78 and BCP 79. 28 Internet-Drafts are working documents of the Internet Engineering 29 Task Force (IETF). Note that other groups may also distribute 30 working documents as Internet-Drafts. The list of current Internet- 31 Drafts is at http://datatracker.ietf.org/drafts/current/. 33 Internet-Drafts are draft documents valid for a maximum of six months 34 and may be updated, replaced, or obsoleted by other documents at any 35 time. It is inappropriate to use Internet-Drafts as reference 36 material or to cite them other than as "work in progress." 38 This Internet-Draft will expire on January 2, 2014. 40 Copyright Notice 42 Copyright (c) 2013 IETF Trust and the persons identified as the 43 document authors. All rights reserved. 45 This document is subject to BCP 78 and the IETF Trust's Legal 46 Provisions Relating to IETF Documents 47 (http://trustee.ietf.org/license-info) in effect on the date of 48 publication of this document. Please review these documents 49 carefully, as they describe your rights and restrictions with respect 50 to this document. Code Components extracted from this document must 51 include Simplified BSD License text as described in Section 4.e of 52 the Trust Legal Provisions and are provided without warranty as 53 described in the Simplified BSD License. 55 Table of Contents 57 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 58 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 59 3. XMPP to MSRP . . . . . . . . . . . . . . . . . . . . . . . . . 4 60 4. MSRP to XMPP . . . . . . . . . . . . . . . . . . . . . . . . . 7 61 5. Security Considerations . . . . . . . . . . . . . . . . . . . 10 62 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 63 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11 64 7.1. Normative References . . . . . . . . . . . . . . . . . . . 11 65 7.2. Informative References . . . . . . . . . . . . . . . . . . 12 66 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 12 67 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12 69 1. Introduction 71 Both the Session Initiation Protocol [RFC3261] and the Extensible 72 Messaging and Presence Protocol [RFC6120] can be used for the purpose 73 of one-to-one text chat over the Internet. To ensure interworking 74 between these technologies, it is important to define bidirectional 75 protocol mappings. 77 The architectural assumptions underlying such protocol mappings are 78 provided in [I-D.ietf-stox-core], including mapping of addresses and 79 error conditions. This document specifies mappings for one-to-one 80 text chat sessions (sometimes called "session-mode" messaging); in 81 particular, this document specifies mappings between XMPP messages of 82 type "chat" and the Message Session Relay Protocol [RFC4975]. 83 Mappings for single instant messages and groupchat are provided in 84 separate documents. 86 The approach taken here is to directly map syntax and semantics from 87 one protocol to another. The mapping described herein depends on the 88 protocols defined in the following specifications: 90 o XMPP chat sessions using message stanzas of type "chat" are 91 specified in [RFC6121]. 92 o SIP-based chat sessions using the SIP INVITE and SEND request 93 types are specified in [RFC4975]. 95 In SIMPLE, a chat session is formally negotiated just as any other 96 session type is using SIP. By contrast, a one-to-one chat "session" 97 in XMPP is an informal construct and is not formally negotiated: a 98 user simply sends a message of type "chat" to a contact, the contact 99 then replies to the message, and the sum total of such messages 100 exchanged during a defined period of time is considered to be a chat 101 session. To overcome the disparity between these approaches, a 102 gateway that wishes to map between SIP and XMPP for one-to-one chat 103 sessions needs to maintain some additional state, as described below. 105 The discussion venue for this document is the mailing list of the 106 STOX WG; visit https://www.ietf.org/mailman/listinfo/stox for 107 subscription information and discussion archives. 109 2. Terminology 111 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 112 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 113 "OPTIONAL" in this document are to be interpreted as described in 114 [RFC2119]. 116 3. XMPP to MSRP 118 In XMPP, the "informal session" approach is to simply send someone a 119 of type "chat" without starting any session negotiation 120 ahead of time (as described in [RFC6121]). The XMPP "informal 121 session" approach maps very well into a SIP MESSAGE request, as 122 described in [I-D.ietf-stox-core]. However, the XMPP informal 123 session approach can also be mapped to MSRP if the XMPP-to-SIP 124 gateway maintains additional state. 126 The order of events is as follows. 128 XMPP User GW SIP User 129 | | | 130 |(F1) (XMPP) Chat message | | 131 |------------------------->| | 132 | |(F2) (SIP) INVITE | 133 | |------------------------->| 134 | |(F3) (SIP) 200 OK | 135 | |<-------------------------| 136 | |(F4) (SIP) ACK | 137 | |------------------------->| 138 | |(F5) (MSRP) SEND | 139 | |------------------------->| 140 | |(F6) (MSRP) A reply | 141 | |<-------------------------| 142 |(F7) (XMPP) A reply | | 143 |<-------------------------| | 144 | | | 145 . . . 146 . . . 147 . . . 148 | | | 149 | |(F8) (SIP) BYE | 150 | |<-------------------------| 151 | |(F9) (SIP) 200 OK | 152 | |------------------------->| 153 | | | 155 First the XMPP user would generate an XMPP chat message. 157 Example: (F1) Juliet sends an XMPP message 159 162 711609sa 163 Art thou not Romeo, and a Montague? 164 166 The local SIP-to-XMPP gateway at the SIMPLE server would then 167 determine if Romeo supports MSRP. If so, the SIP-to-XMPP gateway 168 would initiate an MSRP session with Romeo on Juliet's behalf. 170 Example: (F2) Gateway starts a formal session on behalf of Juliet 172 INVITE sip:romeo@example.net SIP/2.0 173 To: 174 From: 175 Contact: ;gr=balcony 176 Subject: Open chat with Juliet? 177 Call-ID: 711609sa 178 Content-Type: application/sdp 180 c=IN IP4 x2s.example.com 181 m=message 7654 TCP/MSRP * 182 a=accept-types:text/plain 183 a=lang:en 184 a=lang:it 185 a=path:msrp://x2s.example.com:7654/jshA7weztas;tcp 187 Here we assume that Romeo accepts the MSRP session request. 189 Example: (F3) Romeo accepts the request 191 SIP/2.0 200 OK 192 To: ;gr=balcony 193 From: 194 Contact: ;gr=orchard 195 Call-ID: 711609sa 196 Content-Type: application/sdp 198 c=IN IP4 s2x.example.net 199 m=message 12763 TCP/MSRP * 200 a=accept-types:text/plain 201 a=lang:it 202 a=path:msrp://s2x.example.net:12763/kjhd37s2s20w2a;tcp 204 The XMPP-to-SIP gateway then acknowledges the session acceptance on 205 behalf of Romeo. 207 Example: (F4) Gateway sends ACK to Romeo's UA 209 ACK sip:juliet@example.com SIP/2.0 210 To: ;gr=orchard 211 From: 212 Contact: ;gr=balcony 213 Call-ID: 711609sa 215 The XMPP-to-SIP gateway then transforms the original XMPP chat 216 message into MSRP. 218 Example: (F5) Gateway transforms XMPP message to MSRP 220 MSRP a786hjs2 SEND 221 From-Path: msrp://x2s.example.com:7654/jshA7weztas;tcp 222 To-Path: msrp://s2x.example.net:12763/kjhd37s2s20w2a;tcp 223 Message-ID: 87652491 224 Byte-Range: 1-25/25 225 Content-Type: text/plain 227 Art thou not Romeo, and a Montague? 228 -------a786hjs2$ 230 Romeo can then send a reply using his MSRP user agent. 232 Example: (F6) Romeo sends a reply 234 MSRP a786hjs2 SEND 235 To-Path: msrp://x2s.example.com:7654/jshA7weztas;tcp 236 From-Path: msrp://s2x.example.net:12763/kjhd37s2s20w2a;tcp 237 Message-ID: 87652491 238 Byte-Range: 1-25/25 239 Failure-Report: no 240 Content-Type: text/plain 242 Neither, fair saint, if either thee dislike. 243 -------a786hjs2$ 245 The SIP-to-XMPP gateway would then transform that message into 246 appropriate XMPP syntax for routing to the intended recipient. 248 Example: (F7) Gateway transforms MSRP message to XMPP 250 253 711609sa 254 Neither, fair saint, if either thee dislike. 255 257 When the MSRP user wishes to end the chat session, the user's MSRP 258 client sends a SIP BYE. 260 Example: (F8) Romeo terminates the chat session 262 BYE juliet@example.com sip: SIP/2.0 263 Max-Forwards: 70 264 From: ;tag=087js 265 To: ;tag=786 266 Call-ID: 711609sa 267 Cseq: 1 BYE 268 Content-Length: 0 270 The BYE is then acknowledged by the XMPP-to-SIP gateway. 272 Example: (F9) Gateway acknowledges termination 274 SIP/2.0 200 OK 275 From: ;tag=786 276 To: ;tag=087js 277 Call-ID: 711609sa 278 CSeq: 1 BYE 279 Content-Length: 0 281 4. MSRP to XMPP 283 When an MSRP client sends messages through a gateway to an XMPP 284 client that does not support formal sessinos, the order of events is 285 as follows. 287 SIP User GW XMPP User 288 | | | 289 |(F1)(SIP) INVITE | | 290 |------------------------>| | 291 |(F2)(SIP) 200 OK | | 292 |<------------------------| | 293 |(F3)(SIP) ACK | | 294 |------------------------>| | 295 |(F4)(MSRP) SEND | | 296 |------------------------>| | 297 | |(F5)(XMPP) A chat message | 298 | |------------------------->| 299 | |(F6)(XMPP) A reply | 300 | |<-------------------------| 301 | | | 302 |(F7)(MSRP) SEND | | 303 |<------------------------| | 304 | | | 305 . . . 306 . . . 307 . . . 308 | | | 309 |(F8)(SIP) BYE | | 310 |------------------------>| | 311 |(F9)(SIP) 200 OK | | 312 |<------------------------| | 313 | | | 315 Example: (F1) SIP user starts the session 317 INVITE sip:juliet@example.com SIP/2.0 318 To: 319 From: 320 Contact: ;gr=orchard 321 Subject: Open chat with Romeo? 322 Call-ID: 742507no 323 Content-Type: application/sdp 325 c=IN IP4 s2x.example.net 326 m=message 7313 TCP/MSRP * 327 a=accept-types:text/plain 328 a=lang:en 329 a=lang:it 330 a=path:msrp://s2x.example.net:7313/ansp71weztas;tcp 331 Example: (F2) Gateway accepts session on Juliet's behalf 333 SIP/2.0 200 OK 334 To: ;gr=orchard 335 From: 336 Contact: ;gr=balcony 337 Call-ID: 742507no 338 Content-Type: application/sdp 340 c=IN IP4 x2s.example.com 341 m=message 8763 TCP/MSRP * 342 a=accept-types:text/plain 343 a=lang:it 344 a=path:msrp://x2s.example.com:8763/lkjh37s2s20w2a;tcp 346 Example: (F3) Romeo sends ACK 348 ACK sip:juliet@example.com SIP/2.0 349 To: ;gr=balcony 350 From: 351 Contact: ;gr=orchard 352 Call-ID: 742507no 354 Example: (F4) Romeo sends a message 356 MSRP ad49kswow SEND 357 To-Path: msrp://x2s.example.com:8763/lkjh37s2s20w2a;tcp 358 From-Path: msrp://s2x.example.net:7313/ansp71weztas;tcp 359 Message-ID: 44921zaqwsx 360 Byte-Range: 1-32/32 361 Failure-Report: no 362 Content-Type: text/plain 364 I take thee at thy word ... 365 -------ad49kswow$ 367 Example: (F5) Romeo sends a message (XMPP translation) 369 372 742507no 373 I take thee at thy word ... 374 375 Example: (F6) Juliet sends a reply 377 380 711609sa 381 What man art thou ...? 382 384 Example: (F8) Gateway transforms XMPP message to MSRP 386 MSRP a786hjs2 SEND 387 To-Path: msrp://s2x.example.net:7313/jshA7weztas;tcp 388 From-Path: msrp://x2s.example.com:8763/lkjh37s2s20w2a;tcp 389 Message-ID: 87652491 390 Byte-Range: 1-25/25 391 Failure-Report: no 392 Content-Type: text/plain 394 What man art thou ...? 395 -------a786hjs2$ 397 Example: (F9) Romeo terminates the session 399 BYE juliet@example.com sip: SIP/2.0 400 Max-Forwards: 70 401 To: ;gr=balcony 402 From: 403 Contact: ;gr=orchard 404 Call-ID: 742507no 405 Cseq: 1 BYE 406 Content-Length: 0 408 Example: (F10) Gateway acknowledges the termination of the session on 409 behalf of XMPP user 411 SIP/2.0 200 OK 412 To: ;gr=balcony 413 From: 414 Contact: ;gr=orchard 415 Call-ID: 742507no 416 CSeq: 1 BYE 418 5. Security Considerations 420 Detailed security considerations for instant messaging protocols are 421 given in [RFC2779], for SIP-based instant messaging in [RFC3428] (see 422 also [RFC3261]), and for XMPP-based instant messaging in [RFC6121] 423 (see also [RFC6120]). 425 This document specifies methods for exchanging instant messages 426 through a gateway that translates between SIP and XMPP. Such a 427 gateway MUST be compliant with the minimum security requirements of 428 the instant messaging protocols for which it translates (i.e., SIP 429 and XMPP). The addition of gateways to the security model of instant 430 messaging specified in [RFC2779] introduces some new risks. In 431 particular, end-to-end security properties (especially 432 confidentiality and integrity) between instant messaging user agents 433 that interface through a SIMPLE-XMPP gateway can be provided only if 434 common formats are supported. Specification of those common formats 435 is out of scope for this document, although it is recommended to use 436 [RFC3862] for instant messages. 438 6. IANA Considerations 440 This document requests no actions of IANA. 442 7. References 444 7.1. Normative References 446 [I-D.ietf-stox-core] 447 Saint-Andre, P., Houri, A., and J. Hildebrand, 448 "Interworking between the Session Initiation Protocol 449 (SIP) and the Extensible Messaging and Presence Protocol 450 (XMPP): Core", draft-ietf-stox-core-00 (work in progress), 451 July 2013. 453 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 454 Requirement Levels", BCP 14, RFC 2119, March 1997. 456 [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, 457 A., Peterson, J., Sparks, R., Handley, M., and E. 458 Schooler, "SIP: Session Initiation Protocol", RFC 3261, 459 June 2002. 461 [RFC3862] Klyne, G. and D. Atkins, "Common Presence and Instant 462 Messaging (CPIM): Message Format", RFC 3862, August 2004. 464 [RFC4975] Campbell, B., Mahy, R., and C. Jennings, "The Message 465 Session Relay Protocol (MSRP)", RFC 4975, September 2007. 467 [RFC6120] Saint-Andre, P., "Extensible Messaging and Presence 468 Protocol (XMPP): Core", RFC 6120, March 2011. 470 [RFC6121] Saint-Andre, P., "Extensible Messaging and Presence 471 Protocol (XMPP): Instant Messaging and Presence", 472 RFC 6121, March 2011. 474 7.2. Informative References 476 [RFC2779] Day, M., Aggarwal, S., and J. Vincent, "Instant Messaging 477 / Presence Protocol Requirements", RFC 2779, 478 February 2000. 480 [RFC3428] Campbell, B., Rosenberg, J., Schulzrinne, H., Huitema, C., 481 and D. Gurle, "Session Initiation Protocol (SIP) Extension 482 for Instant Messaging", RFC 3428, December 2002. 484 Appendix A. Acknowledgements 486 Some text in this document was borrowed from [I-D.ietf-stox-core]. 488 Thanks to Adrian Georgescu, Saul Ibarra, and Tory Patnoe for their 489 feedback. 491 Authors' Addresses 493 Peter Saint-Andre 494 Cisco Systems, Inc. 495 1899 Wynkoop Street, Suite 600 496 Denver, CO 80202 497 USA 499 Phone: +1-303-308-3282 500 Email: psaintan@cisco.com 502 Salvatore Loreto 503 Ericsson 504 Hirsalantie 11 505 Jorvas 02420 506 Finland 508 Email: Salvatore.Loreto@ericsson.com 509 Eddy Gavita 510 Ericsson 511 Decarie Boulevard 512 Town of Mount Royal, Quebec 513 Canada 515 Email: eddy.gavita@ericsson.com 517 Nazin Hossain 518 Ericsson 519 Decarie Boulevard 520 Town of Mount Royal, Quebec 521 Canada 523 Email: Nazin.Hossain@ericsson.com