Internet Engineering Task Force Alan Johnston Internet Draft WorldCom Document: draft-ietf-sip-call-flows-02.txt Steve Donovan Category: Informational Robert Sparks November 2000 Chris Cunningham Expires: June 2001 Dean Willis Jonathan Rosenberg dynamicsoft Kevin Summers TTI Henning Schulzrinne Columbia University SIP Telephony Call Flow Examples Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026[1]. 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. Abstract This document gives examples of SIP (Session Initiation Protocol) call flows for IP telephony. Elements in these call flows include SIP User Agents and Clients, SIP Proxy and Redirect Servers, and Gateways to the PSTN (Public Switch Telephone Network). IP telephony scenarios include SIP Registration, SIP to SIP calling, SIP to Gateway, Gateway to SIP, and Gateway to Gateway via SIP. Call flow diagrams and message details are shown. PSTN telephony protocols are illustrated using ISDN (Integrated Services Digital Network), ANSI ISUP (ISDN User Part), and FGB (Feature Group B) circuit associated signaling. PSTN calls are illustrated using global telephone numbers from the PSTN and private extensions served on by a PBX (Private Branch Exchange). Example SIP messages used for testing during SIP "bakeoff" events include SIP "torture test" messages, and messages with invalid parameters, methods, and tags. Johnston, et al. [Page 1] Internet Draft SIP Telephony Call Flow Examples November 2000 Table of Contents 1 Overview...................................................3 1.1 General Assumptions........................................4 1.2 Legend for Message Flows...................................6 1.3 SIP Protocol Assumptions...................................6 1.4 Changes to 00 draft .......................................7 1.5 Changes to 01 draft .......................................7 2 SIP Registration Services..................................8 2.1 Success Scenarios..........................................8 2.1.1 SIP Client New Registration................................8 2.1.2 User updates contact list.................................11 2.1.3 User Requests Current Contact List........................13 2.1.4 User Cancels Registration.................................15 2.2 Failure Scenarios.........................................16 2.2.1 Unsuccessful SIP registration.............................16 3 SIP to SIP Dialing........................................18 3.1 Success Scenarios.........................................18 3.1.1 Successful Simple SIP to SIP..............................19 3.1.2 Successful SIP to SIP through two proxies.................22 3.1.3 Successful SIP to SIP with Multi Proxy Authentication.....31 3.1.4 Successful SIP to SIP with Proxy failure..................40 3.1.5 Successful SIP to SIP through SIP Firewall Proxy..........48 3.1.6 Successful SIP to SIP via Redirect and Proxy SDP in ACK...56 3.2 Failure Scenarios.........................................62 3.2.1 Unsuccessful SIP to SIP no answer.........................62 3.2.2 Unsuccessful SIP to SIP busy..............................69 3.2.3 Unsuccessful SIP to SIP no response.......................73 3.2.4 Unsuccessful SIP to SIP Temporarily Unavailable...........78 4 SIP to Gateway Dialing....................................83 4.1 Success Scenarios.........................................83 4.1.1 Successful SIP to ISUP PSTN call..........................84 4.1.2 Successful SIP to ISDN PBX call...........................89 4.1.3 Successful SIP to ISUP PSTN call with overflow...........102 4.2 Failure Scenarios........................................110 4.2.1 Unsuccessful SIP to PSTN call: Treatment from PSTN.......111 4.2.2 Unsuccessful SIP to PSTN: REL w/Cause from PSTN..........117 4.2.3 Unsuccessful SIP to PSTN: ANM Timeout....................119 5 Gateway to SIP Dialing...................................126 5.1 Success Scenarios........................................126 5.1.1 Successful PSTN to SIP call..............................127 5.1.2 Successful PSTN to SIP call, Fast Answer.................134 5.1.3 Successful PBX to SIP call...............................139 5.2 Failure Scenarios........................................145 5.2.1 Unsuccessful PSTN to SIP REL, SIP error mapped to REL....145 5.2.2 Unsuccessful PSTN to SIP REL, SIP busy mapped to REL.....147 5.2.3 Unsuccessful PSTN->SIP, SIP error interworking to tones..151 5.2.4 Unsuccessful PSTN->SIP, ACM timeout......................155 5.2.5 Unsuccessful PSTN->SIP, ACM timeout, stateless Proxy.....160 5.2.6 Unsuccessful PSTN->SIP, ANM timeout......................165 6 Gateway to Gateway Dialing via SIP Network...............171 Johnston, et al. Informational [Page 2] Internet Draft SIP Telephony Call Flow Examples November 2000 6.1 Success Scenarios........................................171 6.1.1 Successful ISUP PSTN to ISUP PSTN call...................172 6.1.2 Successful FGB PBX to ISDN PBX call with overflow........180 7 SIP Test Messages........................................189 7.1 INVITE Parser Torture Test Message.......................189 7.2 INVITE with Proxy-Require and Require....................190 7.3 INVITE with Unknown Schemes in URIs and URLs.............190 7.4 REGISTER with Y2038 Test.................................191 7.5 INVITE with inconsistent Accept and message body.........191 7.6 INVITE with non-SDP message body.........................192 7.7 Unknown Method Message...................................192 7.8 Unknown Method with CSeq Error...........................193 7.9 REGISTER with Unknown Authorization Scheme...............193 7.10 INVITE with Invalid SIP Version Number...................194 7.11 INVITE missing Required Headers..........................195 7.12 INVITE with Duplicate Required Headers...................195 7.13 INVITE with Illegal Expires Header.......................196 7.14 200 OK Response with Broadcast Via Header................196 7.15 INVITE with Invalid Via and Contact Headers..............197 7.16 INVITE with Incorrect Content-Length Header..............197 7.17 INVITE with Invalid Value for Content-Length.............198 7.18 INVITE with Garbage after Message Body...................199 7.19 INVITE with Error in Display Name in To Header...........199 7.20 INVITE with long tokens, Call-ID, and SIP URLs...........200 8 Acknowledgements.........................................200 9 References...............................................200 1 Overview The call flows shown in this document were developed in the design of a carrier-class SIP IP Telephony network. They represent an example minimum set of functionality for SIP to be used in IP Telephony applications. The message examples were developed during the SIP interoperability testing "bake-offs." It is the hope of the authors that this document will be useful for SIP implementors, designers, and protocol researchers alike and will help further the goal of a standard SIP implementation for IP Telephony. It is envisioned that as changes to the standard and additional RFCs are added that this document will reflect those changes and represent the current state of a standard interoperable SIP IP Telephony implementation. These call flows are based on the current version 2.0 of SIP in RFC2543[2]. Various PSTN signaling protocols are illustrated in this document: ISDN (Integrated Services Digital Network), ANSI ISUP (ISDN User Part) and FGB (Feature Group B) circuit associated signaling. They were chosen to illustrate the nature of SIP/PSTN interworking - they Johnston, et al. Informational [Page 3] Internet Draft SIP Telephony Call Flow Examples November 2000 are not a complete or even representative set. Also, some details and parameters of these PSTN protocols have been omitted. The intent of this document was not to provide a complete and exact mapping of PSTN protocols to SIP. Rather the emphasis is on the SIP signaling, the message interaction, and the modifications to SIP currently proposed to solve IP Telephony issues. Finally, some example messages are given along with expected behavior of clients and servers. 1.1 General Assumptions A number of architecture, network, and protocol assumptions underlie the call flows in this document. They are outlined in this section so that they may be taken into consideration. Differences in these assumptions will affect the nature of the call flows. The authentication of SIP User Agents in these example call flows is performed using SIP Digest[2]. No authentication of Gateways is shown, since it is assumed that: . Gateways will only accept calls routed through a trusted Proxy. . Proxies will perform the Client authentication. . The Proxy and the Gateway will authenticate each other using IPSec[3]. The SIP Proxy Server has access to a Location Service and other databases. Information present in the Request-URI and the context (From header) is sufficient to determine to which proxy or gateway the message should be routed. In most cases, a primary and secondary route will be determined in case of Proxy or Gateway failure downstream. The Proxy Servers in these call flows insert Record-Route headers into requests to ensure that they are in the signaling path for future message exchanges. This allows them to implement features later in the call. Gateways receive enough information in the Request-URI field to determine how to route a call, i.e. what trunk group or link to select, what digits to outpulse, etc. Gateways provide tones (ringing, busy, etc) and announcements to the PSTN side based on SIP response messages, or pass along audio in-band tones (ringing, busy tone, etc.) in an early media stream to the SIP side. Two types of Gateways are described in this document. The actual names of Gateways will be vendor and implementation specific. However, two catagories are described here since the type of Gateway determines the form of the SIP URL used to identify them. The two Johnston, et al. Informational [Page 4] Internet Draft SIP Telephony Call Flow Examples November 2000 types are: . Network Gateway. This high port count PSTN gateway originates and terminates calls to the PSTN. Its use is shared by many customers. Incoming calls from the PSTN have the From header populated with a SIP URL containing the telephone number from the calling party telephone number, if available. A Network Gateway typically uses carrier protocols such as SS7. . Enterprise Gateway. This low port count PBX (Private Branch Exchange) gateway has trunks or lines for a single customer or user. Incoming calls from the PBX have the From header populated with a provisionable string which uniquely identifies the customer, trunk group, or carrier. This allows private numbers to be interpreted in their correct context. An Enterprise Gateway typically uses SS7, ISDN, circuit associated signaling, or other PBX interfaces. The interactions between the Proxy and Gateway can be summarized as follows: . The SIP Proxy Server performs digit analysis and lookup and locates the correct gateway. . The SIP Proxy Server performs gateway location based on primary and secondary routing. Digit handling by the Gateways will be as follows: . Dialed digits received from a Network or Enterprise Gateway will be put in a SIP URL with a telephone number. The number will either be globalized (e.g. sip:+1-314-555-1111@ngw.wcom.com ;user=phone) or left as a private number (sip:555- 6666@gw.wcom.com;phone-context=p1234) which will require interpretation based on From header. The "phone-context" qualifier is used to interpret the private number. It is used the same as the tag of the same name from the tel URL draft[5]. All Gateways will need to be provisioned to be able to parse the user portion of a Request-URI to determine the customer, trunk group, or circuit referenced. Note that the visual separator "-" is used purely to aid in the readability of the examples; a real gateway would be unlikely to insert visual separators. . The From header will be populated with a SIP URL with a telephone number if it is Calling Party number (CgPN) from the PSTN. If it is an Enterprise Gateway, a provisionable string which uniquely identifies the customer, trunk group, or carrier will be used in the sip URI (e.g. From: sip:ProvisionableString@gw1.wcom.com;user=phone). . Note that an alternative to using a SIP URL for telephone Johnston, et al. Informational [Page 5] Internet Draft SIP Telephony Call Flow Examples November 2000 numbers is the tel URL[5]. The major difference between using the SIP URL and the tel URL is that the SIP URL is routable in a SIP network (resolves down to an IP address) where the tel URL is not (it just represents digits). These flows show UDP for transport. TCP could also be used. 1.2 Legend for Message Flows Dashed lines (---) represent control messages that are mandatory to the call scenario. These control messages can be SIP or PSTN signaling. Double dashed lines (===) represent media paths between network elements. Messages with parenthesis around name represent optional control messages. Messages are identified in the Figures as F1, F2, etc. This references the message details in the table that follows the Figure. Comments in the message details are shown in the following form: /* Comments. */ 1.3 SIP Protocol Assumptions Except for the following, this call flows document uses the April 1999 version 2.0 of SIP defined by RFC2543[2]. The following changes/extensions are assumed throughout: . A Contact header is included with every INVITE message. . A Contact header is included in every 200 OK Response. . The 183 Session Progress response message is used in SIP to Gateway and Gateway to Gateway via SIP calling (Sections 4 and 6). The 183 response with SDP will cause the User Agent to immediately play the SDP media stream to hear in-band call progress information. See Section 4 for more information. . A Content-Length header is present in every message, set to zero if there is no message body. The content length calculations assume that each line of SDP ends with a CR and a LF character. . The final entry in a Route header is always the Contact information obtained from the INVITE or 200 OK messages. . In the SDP message bodies, the time field is "t=0 0" It is expected that an actual SDP message body would have a non-zero start timestamp. Johnston, et al. Informational [Page 6] Internet Draft SIP Telephony Call Flow Examples November 2000 . Branch tags inserted by proxies are unique for each request. In this document, they are not due to editing simplications. . Tags and Call-IDs are also reused for editing purposes. 1.4 Changes to 00 draft The major changes between this draft and the previous draft are listed below: - SIP Telephony Service Examples have been removed from the draft. They will be revised using the TRANSFER header in a separate draft. - Updated draft with RFC2543bis changes including: adding maddr to all Record-Route and Route headers, adding branch tags to Via headers inserted by proxies, added 487 response to CANCEL scenarios. - Added example of INFO method in 5.1.1. - Added Session: media to all 183 messages. - Corrected a number of typos including putting user=phone tags inside <>, fixing Request-URI on PRACK, added missing tags, fixed Request-URIs that did not match To header in initial INVITE. - Corrected all registrations to have same Call-ID. 1.5 Changes to 01 draft The major changes between this draft and the previous draft are listed below: - Added an example of multiple proxy authentication (3.1.3). - Removed INFO method from 5.1.1. The use of INFO to transport DTMF is controversial. - Fixed CSeq and Call-ID errors in Section 2. - Replaced Session: media with Content-Disposition: session - Added notes about CSeq numbering spaces. - Fixed maddr in some Route headers. Johnston, et al. Informational [Page 7] Internet Draft SIP Telephony Call Flow Examples November 2000 - Corrected tag handling and Record-Routes in Section 4. Johnston, et al. Informational [Page 8] Internet Draft SIP Telephony Call Flow Examples November 2000 2 SIP Registration Services 2.1 Success Scenarios Registration either validates or invalidates a SIP client for user services provided by a SIP server. Additionally, the client provides one or more contact locations to the SIP server with the registration request. Registration is used by a Proxy to route incoming calls in an IP Telephony network. Registration are shown with authentication in these call flows. If authentication is not used, an imposter could "hijack" someone else's calls. 2.1.1 SIP Client New Registration User B SIP Server | | | REGISTER F1 | |------------------------------>| | | | 401 Unauthorized F2 | |<------------------------------| | | | REGISTER F3 | |------------------------------>| | | | 200 OK F4 | |<------------------------------| | | User B initiates a new SIP session with the SIP Server (i.e. the user "logs on to" the SIP server). User B sends a SIP REGISTER request to the SIP server. The request includes the user's contact list. The SIP server provides a challenge to User B. User B enters her/his valid user ID and password. User B's SIP client encrypts the user information according to the challenge issued by the SIP server and sends the response to the SIP server. The SIP server validates the user's credentials. It registers the user in its contact database and returns a response (200 OK) to User B's SIP client. The response includes the user's current contact list in Contact headers. The format of the authentication shown is SIP digest as described by RFC2543[2]. It is assumed that User B has not previously registered with this Server. Message Details F1 REGISTER B -> SIP Server REGISTER sip:ss2.wcom.com SIP/2.0 Johnston, et al. Informational [Page 9] Internet Draft SIP Telephony Call Flow Examples November 2000 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 1 REGISTER Contact: LittleGuy Contact: Contact: tel:+1-972-555-2222 Content-Length: 0 F2 401 Unauthorized SIP Server -> User B SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 1 REGISTER WWW-Authenticate: Digest realm="MCI WorldCom SIP", domain="wcom.com", nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F3 REGISTER B -> SIP Server REGISTER sip:ss2.wcom.com SIP/2.0 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 2 REGISTER Contact: LittleGuy Contact: Contact: tel:+1-972-555-2222 Authorization:Digest username="UserB", realm="MCI WorldCom SIP", nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="", uri="sip:ss2.wcom.com", response="dfe56131d1958046689cd83306477ecc" Content-Length: 0 F4 200 OK SIP Server -> B SIP/2.0 200 OK Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 2 REGISTER Contact: LittleGuy Johnston, et al. Informational [Page 10] Internet Draft SIP Telephony Call Flow Examples November 2000 Contact: Contact: tel:+1-972-555-2222 Content-Length: 0 Johnston, et al. Informational [Page 11] Internet Draft SIP Telephony Call Flow Examples November 2000 2.1.2 User updates contact list User B SIP Server | | | REGISTER F1 | |------------------------------>| | | | 200 OK F2 | |<------------------------------| | | User B wishes to update the list of addresses where the SIP server will redirect or forward INVITE requests. User B sends a SIP REGISTER request to the SIP server. User B's request includes an updated contact list. Since the user already has authenticated with the server, the user supplies authentication credentials with the request and is not challenged by the server. The SIP server validates the user's credentials. It registers the user in its contact database, updates the user's contact list, and returns a response (200 OK) to User B's SIP client. The response includes the user's current contact list in Contact headers. Message Details F1 REGISTER B -> SIP Server REGISTER sip:ss2.wcom.com SIP/2.0 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 1 REGISTER Contact: mailto:UserB@there.com Authorization:Digest username="UserB", realm="MCI WorldCom SIP", nonce="1cec4341ae6cbe5a359ea9c8e88df84f", opaque="", uri="sip:ss2.wcom.com", response="71ba27c64bd01de719686aa4590d5824" Content-Length: 0 F2 200 OK SIP Server -> B SIP/2.0 200 OK Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 1 REGISTER Johnston, et al. Informational [Page 12] Internet Draft SIP Telephony Call Flow Examples November 2000 Contact: LittleGuy Contact: Contact: tel:+1-972-555-2222 Contact: mailto:UserB@there.com Content-Length: 0 Johnston, et al. Informational [Page 13] Internet Draft SIP Telephony Call Flow Examples November 2000 2.1.3 User Requests Current Contact List User B SIP Server | | | REGISTER F1 | |------------------------------>| | | | 200 OK F2 | |<------------------------------| | | User B sends a register request to the Proxy Server containing no Contact headers, indicating the user wishes to query the server for the user's current contact list. Since the user already has authenticated with the server, the user supplies authentication credentials with the request and is not challenged by the server. The SIP server validates the user's credentials. The server returns a response (200 OK) which includes the user's current registration list in Contact headers. Message Details F1 REGISTER B -> SIP Server REGISTER sip:ss2.wcom.com SIP/2.0 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 1 REGISTER Authorization:Digest username="UserB", realm="MCI WorldCom SIP", nonce="df84f1cec4341ae6cbe5ap359a9c8e88", opaque="", uri="sip:ss2.wcom.com", response="aa7ab4678258377c6f7d4be6087e2f60" Content-Length: 0 F2 200 OK SIP Server -> B SIP/2.0 200 OK Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 1 REGISTER Contact: LittleGuy Contact: Contact: tel:+1-972-555-2222 Contact: mailto:UserB@there.com Content-Length: 0 Johnston, et al. Informational [Page 14] Internet Draft SIP Telephony Call Flow Examples November 2000 Johnston, et al. Informational [Page 15] Internet Draft SIP Telephony Call Flow Examples November 2000 2.1.4 User Cancels Registration User B SIP Server | | | REGISTER F1 | |------------------------------>| | | | 200 OK F2 | |<------------------------------| | | User B wishes to cancel their registration with the SIP server. User B sends a SIP REGISTER request to the SIP server. The request has an expiration period of 0 and applies to all existing contact locations. Since the user already has authenticated with the server, the user supplies authentication credentials with the request and is not challenged by the server. The SIP server validates the user's credentials. It clears the user's contact list, and returns a response (200 OK) to User B's SIP client. Message Details F1 REGISTER B -> SIP Server REGISTER sip:ss2.wcom.com SIP/2.0 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 1 REGISTER Expires: 0 Contact: * Authorization:Digest username="UserB", realm="MCI WorldCom SIP", nonce="88df84f1cac4341aea9c8ee6cbe5a359", opaque="", uri="sip:ss2.wcom.com", response="ff0437c51696f9a76244f0cf1dbabbea" Content-Length: 0 F2 200 OK SIP Server -> B SIP/2.0 200 OK Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 1 REGISTER Content-Length: 0 Johnston, et al. Informational [Page 16] Internet Draft SIP Telephony Call Flow Examples November 2000 2.2 Failure Scenarios 2.2.1 Unsuccessful SIP registration User B SIP Server | | | REGISTER F1 | |------------------------------>| | | | 401 Unauthorized F2 | |<------------------------------| | | | REGISTER F3 | |------------------------------>| | | | 401 Unauthorized F4 | |<------------------------------| | | User B sends a SIP REGISTER request to the SIP Server. The SIP server provides a challenge to User B. User B enters her/his user ID and password. User B's SIP client encrypts the user information according to the challenge issued by the SIP server and sends the response to the SIP server. The SIP server attempts to validate the user's credentials, but they are not valid (the user's password does not match the password established for the user's account). The server returns a response (401 Unauthorized) to User B's SIP client. Message Details F1 REGISTER B -> SIP Server REGISTER sip:ss2.wcom.com SIP/2.0 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 1 REGISTER Contact: LittleGuy Contact: Contact: tel:+1-972-555-2222 Content-Length: 0 F2 Unauthorized SIP Server -> User B Johnston, et al. Informational [Page 17] Internet Draft SIP Telephony Call Flow Examples November 2000 SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 1 REGISTER WWW-Authenticate: Digest realm="MCI WorldCom SIP", domain="wcom.com", nonce="f1cec4341ae6ca9c8e88df84be55a359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F3 REGISTER B -> SIP Server REGISTER sip:ss2.wcom.com SIP/2.0 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 2 REGISTER Contact: LittleGuy Contact: Contact: tel:+1-972-555-2222 Authorization:Digest username="UserB", realm="MCI WorldCom SIP", nonce="f1cec4341ae6ca9c8e88df84be55a359", opaque="", uri="sip:ss2.wcom.com", response="61f8470ceb87d7ebf508220214ed438b" Content-Length: 0 /* The response above encodes the incorrect password */ F4 401 Unauthorized SIP Server -> User B SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 2 REGISTER WWW-Authenticate: Digest realm="MCI WorldCom SIP", domain="wcom.com", nonce="84f1c1ae6cbe5ua9c8e88dfa3ecm3459", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 Johnston, et al. Informational [Page 18] Internet Draft SIP Telephony Call Flow Examples November 2000 3 SIP to SIP Dialing 3.1 Success Scenarios This section details calls between two SIP User Agents (UAs): User A and User B. User A (LittleGuy sip:UserA@here.com) and User B (BigGuy sip:UserB@there.com) are assumed to be SIP phones or SIP- enabled devices. The successful calls show the initial signaling, the exchange of media information in the form of SDP payloads, the establishment of the media session, then finally the termination of the call. SIP digest authentication is used by the first Proxy Server to authenticate the caller User A. It is assumed that User B has registered with Proxy Server Proxy 2 as per Section 2.1 to be able to receive the calls. Johnston, et al. Informational [Page 19] Internet Draft SIP Telephony Call Flow Examples November 2000 3.1.1 Successful Simple SIP to SIP User A User B | | | INVITE F1 | |----------------------->| | (100 Trying) F2 | |<-----------------------| | 180 Ringing F3 | |<-----------------------| | | | 200 OK F4 | |<-----------------------| | ACK F5 | |----------------------->| | Both Way RTP Media | |<======================>| | | | BYE F6 | |<-----------------------| | 200 OK F7 | |----------------------->| | | In this scenario, User A completes a call to User B directly. Message Details F1 INVITE User A -> User B INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Johnston, et al. Informational [Page 20] Internet Draft SIP Telephony Call Flow Examples November 2000 F2 (100 Trying) User B -> User A SIP/2.0 100 Trying Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Content-Length: 0 F3 180 Ringing User B -> User A SIP/2.0 180 Ringing Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Content-Length: 0 F4 200 OK User B -> User A SIP/2.0 200 OK Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F5 ACK User A -> User B ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 ACK Johnston, et al. Informational [Page 21] Internet Draft SIP Telephony Call Flow Examples November 2000 Content-Length: 0 /* RTP streams are established between A and B */ /* User B Hangs Up with User A. Note that the CSeq is NOT 2, since User A and User B maintain their own independent CSeq counts. (The INVITE was request 1 generated by User A, and the BYE is request 1 generated by User B */ F6 BYE User B -> User A BYE sip:UserA@here.com SIP/2.0 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: BigGuy Call-ID: 12345601@here.com CSeq: 1 BYE Content-Length: 0 F7 200 OK User A -> User B SIP/2.0 200 OK Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: BigGuy Call-ID: 12345601@here.com CSeq: 1 BYE Content-Length: 0 Johnston, et al. Informational [Page 22] Internet Draft SIP Telephony Call Flow Examples November 2000 3.1.2 Successful SIP to SIP through two proxies User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| | | | 407 F2 | | | |<---------------| | | | ACK F3 | | | |--------------->| | | | INVITE F4 | | | |--------------->| INVITE F5 | | | (100) F6 |--------------->| INVITE F7 | |<---------------| (100) F8 |--------------->| | |<---------------| | | | | 180 F9 | | | 180 F10 |<---------------| | 180 F11 |<---------------| | |<---------------| | 200 F12 | | | 200 F13 |<---------------| | 200 F14 |<---------------| | |<---------------| | | | ACK F15 | | | |--------------->| ACK F16 | | | |--------------->| ACK F17 | | | |--------------->| | Both Way RTP Media | |<================================================>| | | | BYE F18 | | | BYE F19 |<---------------| | BYE F20 |<---------------| | |<---------------| | | | 200 F21 | | | |--------------->| 200 F22 | | | |--------------->| 200 F23 | | | |--------------->| | | | | In this scenario, User A completes a call to User B using two proxies Proxy 1 and Proxy 2. The initial INVITE (F1) does not contain the Authorization credentials Proxy 1 requires, so a 407 Proxy Authorization response is sent containing the challenge information. A new INVITE (F4) is then sent containing the correct credentials and the call proceeds. The call terminates when User B disconnects by initiating a BYE message. Proxy 1 inserts a Record-Route header into the INVITE message to ensure that it is present in all subsequent message exchanges. Proxy 2 also inserts itself into the Record-Route header. The ACK (F15) and BYE (F18) both have a Route header. Johnston, et al. Informational [Page 23] Internet Draft SIP Telephony Call Flow Examples November 2000 A tag is inserted by User B in message F9 since the initial INVITE message contains more than one Via header and may have been forked. Message Details F1 INVITE A -> Proxy 1 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 challenges User A for authentication */ F2 407 Proxy Authorization Required Proxy 1 -> User A SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Proxy-Authenticate: Digest realm="MCI WorldCom SIP", domain="wcom.com", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F3 ACK A -> Proxy 1 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com Johnston, et al. Informational [Page 24] Internet Draft SIP Telephony Call Flow Examples November 2000 CSeq: 1 INVITE Content-Length: 0 /* User A responds be re-sending the INVITE with authentication credentials in it. A new Call-ID is used, so the CSeq is reset back to 1 */ F4 INVITE A -> Proxy 1 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Contact: BigGuy Authorization:Digest username="UserA", realm="MCI WorldCom SIP", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", uri="sip:ss1.wcom.com", response="42ce3cef44b22f50c6a6071bc8" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 accepts the credentials and forwards the INVITE to Proxy 2. Proxy 1 is assumed to have been authenticated by Proxy 2 using IPSec. Client for A prepares to receive data on port 49172 from the network. */ F5 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 Johnston, et al. Informational [Page 25] Internet Draft SIP Telephony Call Flow Examples November 2000 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F6 (100 Trying) Proxy 1 -> User A SIP/2.0 100 Trying Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Content-Length: 0 F7 INVITE Proxy 2 -> B INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F8 (100 Trying) Proxy 2 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy Johnston, et al. Informational [Page 26] Internet Draft SIP Telephony Call Flow Examples November 2000 To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Content-Length: 0 F9 180 Ringing B -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345601@here.com CSeq: 1 INVITE Content-Length: 0 F10 180 Ringing Proxy 2 -> Proxy 1 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345601@here.com CSeq: 1 INVITE Content-Length: 0 F11 180 Ringing Proxy 1 -> A SIP/2.0 180 Ringing Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345601@here.com CSeq: 1 INVITE Content-Length: 0 F12 200 OK B -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy Johnston, et al. Informational [Page 27] Internet Draft SIP Telephony Call Flow Examples November 2000 To: LittleGuy ;tag=314159 Call-ID: 12345601@here.com CSeq: 1 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F13 200 OK Proxy 2 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345601@here.com CSeq: 1 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F14 200 OK Proxy 1 -> A SIP/2.0 200 OK Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345601@here.com CSeq: 1 INVITE Contact: LittleGuy Johnston, et al. Informational [Page 28] Internet Draft SIP Telephony Call Flow Examples November 2000 Content-Type: application/sdp Content-Length: 147 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F15 ACK A -> Proxy 1 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 Route: , From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345601@here.com CSeq: 1 ACK Content-Length: 0 F16 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Route: From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345601@here.com CSeq: 1 ACK Content-Length: 0 F17 ACK Proxy 2 -> B ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345601@here.com CSeq: 1 ACK Content-Length: 0 Johnston, et al. Informational [Page 29] Internet Draft SIP Telephony Call Flow Examples November 2000 /* RTP streams are established between A and B */ /* User B Hangs Up with User A. */ /* Again, note that the CSeq is NOT 2. User A and User B maintain their own separate CSeq counts */ F18 BYE User B -> Proxy 2 BYE sip:UserA@here.com SIP/2.0 Via: SIP/2.0/UDP there.com:5060 Route: , From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345601@here.com CSeq: 1 BYE Content-Length: 0 F19 BYE Proxy 2 -> Proxy 1 BYE sip:UserA@here.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP there.com:5060 Route: From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345601@here.com CSeq: 1 BYE Content-Length: 0 F20 BYE Proxy 1 -> User A BYE sip:UserA@here.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345601@here.com CSeq: 1 BYE Content-Length: 0 F21 200 OK User A -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP there.com:5060 Johnston, et al. Informational [Page 30] Internet Draft SIP Telephony Call Flow Examples November 2000 From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345601@here.com CSeq: 1 BYE Content-Length: 0 F22 200 OK Proxy 1 -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345601@here.com CSeq: 1 BYE Content-Length: 0 F23 200 OK Proxy 2 -> User B SIP/2.0 200 OK Via: SIP/2.0/UDP there.com:5060 From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345601@here.com CSeq: 1 BYE Content-Length: 0 Johnston, et al. Informational [Page 31] Internet Draft SIP Telephony Call Flow Examples November 2000 3.1.3 SIP to SIP with Multi Proxy Authentication User A Proxy 1 Proxy 2 User B | INVITE F1 | | | |----------->| | | | 407 Proxy Authorization Required F2 | |<-----------| | | | ACK F3 | | | |----------->| | | | INVITE F4 | | | |----------->| | | | (100 F5) | | | |<-----------| INVITE F6 | | | |---------->| | | | 407 Proxy Authorization Required F7 | |<----------| | | | ACK F8 | | | |---------->| | | 407 Proxy Authorization Required F9 | |<-----------| | | | ACK F10 | | | |----------->| | | | INVITE F11| | | |----------->| | | | (100 F12) | | | |<-----------| INVITE F13| | | |---------->| | | | (100 F14) | | | |<----------| INVITE F15 | | | |------------>| | | | 200 OK F16 | | | 200 OK F17|<------------| | 200 OK F18 |<----------| | |<-----------| | | | ACK F19 | | | |----------->| ACK F20 | | | |---------->| ACK F21 | | | |------------>| | RTP Media Path | |<====================================>| In this scenario, User A completes a call to User B using two proxies Proxy 1 and Proxy 2. The initial INVITE (F1) does not contain the Authorization credentials Proxy 1 requires, so a 407 Proxy Authorization response is sent containing the challenge information. A new INVITE (F4) is then sent containing the correct credentials and the call proceeds after Proxy 2 challenges and receives valid credentials. The call terminates when User B disconnects by initiating a BYE message. Proxy 1 inserts a Record-Route header into the INVITE message to Johnston, et al. Informational [Page 32] Internet Draft SIP Telephony Call Flow Examples November 2000 ensure that it is present in all subsequent message exchanges. Proxy 2 also inserts itself into the Record-Route header. Message Details F1 INVITE A -> Proxy 1 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 challenges User A for authentication */ F2 407 Proxy Authorization Required Proxy 1 -> User A SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Proxy-Authenticate: Digest realm="WorldCom SIP", domain="wcom.com", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F3 ACK A -> Proxy 1 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Johnston, et al. Informational [Page 33] Internet Draft SIP Telephony Call Flow Examples November 2000 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 /* User A responds be re-sending the INVITE with authentication credentials in it. The same Call-ID is used, so the CSeq is increased. */ F4 INVITE A -> Proxy 1 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 2 INVITE Contact: BigGuy Authorization:Digest username="UserA", realm="WorldCom SIP", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", uri="sip:ss1.wcom.com", response="42ce3cef44b22f50c6a6071bc8" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 accepts the credentials and forwards the INVITE to Proxy 2. Proxy 1 is assumed to have been authenticated by Proxy 2 using IPSec. Client for A prepares to receive data on port 49172 from the network. */ F5 (100 Trying Proxy 1 -> User A) SIP/2.0 100 Trying Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 2 INVITE Content-Length: 0 F6 INVITE Proxy 1 -> Proxy 2 Johnston, et al. Informational [Page 34] Internet Draft SIP Telephony Call Flow Examples November 2000 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=230f2.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 2 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 2 challenges User A for authentication */ F7 407 Proxy Authorization Required Proxy 2 -> Proxy 1 SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=230f2.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy ;tag=838209 Call-ID: 12345600@here.com CSeq: 2 INVITE Proxy-Authenticate: Digest realm="MCI SIP", domain="mci.com", nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F8 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=838209 Call-ID: 12345600@here.com CSeq: 2 INVITE Content-Length: 0 Johnston, et al. Informational [Page 35] Internet Draft SIP Telephony Call Flow Examples November 2000 /* Proxy 1 forwards the challenge to User A for authentication from Proxy 2 */ F9 407 Proxy Authorization Required Proxy 1 -> User A SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy ;tag=2341d Call-ID: 12345600@here.com CSeq: 2 INVITE Proxy-Authenticate: Digest realm="MCI SIP", domain="mci.com", nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F10 ACK User A -> Proxy 1 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=2341d Call-ID: 12345600@here.com CSeq: 2 INVITE Content-Length: 0 /* User A responds be re-sending the INVITE with authentication credentials for Proxy 1 AND Proxy 2. */ F11 INVITE A -> Proxy 1 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 3 INVITE Contact: BigGuy Authorization:Digest username="UserA", realm="WorldCom SIP", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", uri="sip:ss1.wcom.com", response="42ce3cef44b22f50c6a6071bc8" Authorization:Digest username="UserA", realm="MCI SIP", nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", uri="sip:ss2.mci.com", response="f44ab22f150c6a56071bce8" Content-Type: application/sdp Content-Length: 147 v=0 Johnston, et al. Informational [Page 36] Internet Draft SIP Telephony Call Flow Examples November 2000 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 finds its credentials and authorizes User A, forwarding the INVITE to Proxy. */ F12 (100 Trying Proxy 1 -> User A) SIP/2.0 100 Trying Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 3 INVITE Content-Length: 0 F13 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=230f2.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 3 INVITE Contact: BigGuy Authorization:Digest username="UserA", realm="MCI SIP", nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", uri="sip:ss2.mci.com", response="f44ab22f150c6a56071bce8" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 2 finds its credentials and authorizes User A, forwarding the INVITE to User B. */ Johnston, et al. Informational [Page 37] Internet Draft SIP Telephony Call Flow Examples November 2000 F14 (100 Trying Proxy 2 -> Proxy 1) SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=230f2.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 3 INVITE Content-Length: 0 F15 INVITE Proxy 1 -> User B INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.mci.com:5060;branch=31972.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=230f2.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 3 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* User B answers the call immediately */ F16 200 OK User B -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.mci.com:5060;branch=31972.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=230f2.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy ;tag=9103874 Call-ID: 12345600@here.com Johnston, et al. Informational [Page 38] Internet Draft SIP Telephony Call Flow Examples November 2000 CSeq: 3 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 149 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F17 200 OK Proxy 2 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=230f2.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy ;tag=9103874 Call-ID: 12345600@here.com CSeq: 3 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 149 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F18 200 OK Proxy 1 -> User A SIP/2.0 200 OK Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy ;tag=9103874 Call-ID: 12345600@here.com CSeq: 3 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 149 Johnston, et al. Informational [Page 39] Internet Draft SIP Telephony Call Flow Examples November 2000 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F19 ACK User A -> Proxy 1 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 Route: , From: BigGuy To: LittleGuy ;tag=9103874 Call-ID: 12345600@here.com CSeq: 3 ACK Contact: LittleGuy Content-Length: 0 F20 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=230f2.1 Via: SIP/2.0/UDP here.com:5060 Route: From: BigGuy To: LittleGuy ;tag=9103874 Call-ID: 12345600@here.com CSeq: 3 ACK Contact: LittleGuy Content-Length: 0 F21 ACK Proxy 2 -> User A ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.mci.com:5060;branch=31972.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=230f2.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=9103874 Call-ID: 12345600@here.com CSeq: 3 ACK Contact: LittleGuy Content-Length: 0 Johnston, et al. Informational [Page 40] Internet Draft SIP Telephony Call Flow Examples November 2000 3.1.4 Successful SIP to SIP with Proxy failure User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| | | | INVITE F2 | | | |--------------->| | | | INVITE F3 | | | |--------------->| | | | INVITE F4 | | | |--------------->| | | | INVITE F5 | | | |--------------->| | | | INVITE F6 | | | |--------------->| | | | INVITE F7 | | | |--------------->| | | | CANCEL F8 | | | |--------------->| | | | INVITE F9 | | |-------------------------------->| | | 407 F10 | | |<--------------------------------| | | ACK F11 | | |-------------------------------->| | | INVITE F12 | | |-------------------------------->| INVITE F13 | | (100) F14 |--------------->| |<--------------------------------| | | | 180 F15 | | 180 F16 |<---------------| |<--------------------------------| | | | 200 F17 | | 200 F18 |<---------------| |<--------------------------------| | | ACK F19 | | |-------------------------------->| ACK F20 | | |--------------->| | Both Way RTP Media | |<================================================>| | | BYE F21 | | BYE F22 |<---------------| |<--------------------------------| | | 200 F23 | | |-------------------------------->| 200 F24 | | |--------------->| | | | Johnston, et al. Informational [Page 41] Internet Draft SIP Telephony Call Flow Examples November 2000 In this scenario, User A completes a call to User B via a Proxy Server. User A is configured for a primary SIP Proxy Server Proxy 1 and a secondary SIP Proxy Server Proxy 2 (Or is able to use DNS SRV records to locate Proxy 1 and Proxy 2). Proxy 1 is out of service and does not respond to INVITEs (it is reachable, but unresponsive). After sending a CANCEL to Proxy 1, User A then completes the call to User B using Proxy 2. Message Details F1 INVITE A -> Proxy 1 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 INVITE A -> Proxy 1 Same as Message F1 F3 INVITE A -> Proxy 1 Same as Message F1 F4 INVITE A -> Proxy 1 Same as Message F1 F5 INVITE A -> Proxy 1 Same as Message F1 Johnston, et al. Informational [Page 42] Internet Draft SIP Telephony Call Flow Examples November 2000 F6 INVITE A -> Proxy 1 Same as Message F1 F7 INVITE A -> Proxy 1 Same as Message F1 /* User A gives up on the unresponsive proxy and sends a CANCEL. */ F8 CANCEL A -> Proxy 1 CANCEL sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 CANCEL F9 INVITE A -> Proxy 2 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 2 challenges User A for authentication */ F10 407 Proxy Authorization Required Proxy 2 -> User A SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP here.com:5060 Johnston, et al. Informational [Page 43] Internet Draft SIP Telephony Call Flow Examples November 2000 From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Proxy-Authenticate: Digest realm="MCI WorldCom SIP", domain="wcom.com", nonce="1ae6cbe5ea9c8e8df84fqnlec434a359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F11 ACK A -> Proxy 2 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Content-Length: 0 /* User A responds be re-sending the INVITE with authentication credentials in it. */ F12 INVITE A -> Proxy 2 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345602@here.com CSeq: 1 INVITE Contact: BigGuy Authorization:Digest username="UserA", realm="MCI WorldCom SIP", nonce="1ae6cbe5ea9c8e8df84fqnlec434a359", opaque="", uri="sip:ss2.wcom.com", response="8a880c919d1a52f20a1593e228adf599" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 2 accepts the credentials and forwards the INVITE to User B. Client for A prepares to receive data on port 49172 from the network. */ Johnston, et al. Informational [Page 44] Internet Draft SIP Telephony Call Flow Examples November 2000 F13 INVITE Proxy 2 -> B INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy Call-ID: 12345602@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F14 (100 Trying) Proxy 2 -> User A SIP/2.0 100 Trying Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345602@here.com CSeq: 1 INVITE Content-Length: 0 F15 180 Ringing B -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345602@here.com CSeq: 1 INVITE Content-Length: 0 F16 180 Ringing Proxy 2 -> A SIP/2.0 180 Ringing Johnston, et al. Informational [Page 45] Internet Draft SIP Telephony Call Flow Examples November 2000 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345602@here.com CSeq: 1 INVITE Content-Length: 0 F17 200 OK B -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345602@here.com CSeq: 1 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 149 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F18 200 OK Proxy 2 -> A SIP/2.0 200 OK Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345602@here.com CSeq: 1 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 149 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Johnston, et al. Informational [Page 46] Internet Draft SIP Telephony Call Flow Examples November 2000 F19 ACK A -> Proxy 2 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 Route: From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345602@here.com CSeq: 1 ACK Content-Length: 0 F20 ACK Proxy 2 -> B ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345602@here.com CSeq: 1 ACK Content-Length: 0 /* RTP streams are established between A and B */ /* User B Hangs Up with User A. */ F21 BYE User B -> Proxy 2 BYE sip:UserA@here.com SIP/2.0 Via: SIP/2.0/UDP there.com:5060 Route: From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345602@here.com CSeq: 1 BYE Content-Length: 0 F22 BYE Proxy 2 -> User A BYE sip:UserA@here.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345602@here.com CSeq: 1 BYE Johnston, et al. Informational [Page 47] Internet Draft SIP Telephony Call Flow Examples November 2000 Content-Length: 0 F23 200 OK User A -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345602@here.com CSeq: 1 BYE Content-Length: 0 F24 200 OK Proxy 2 -> User B SIP/2.0 200 OK Via: SIP/2.0/UDP there.com:5060 From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345602@here.com CSeq: 1 BYE Content-Length: 0 Johnston, et al. Informational [Page 48] Internet Draft SIP Telephony Call Flow Examples November 2000 3.1.5 Successful SIP to SIP through SIP Firewall Proxy User A FW Proxy Proxy 1 User B | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | (100) F3 |--------------->| INVITE F4 | |<---------------| (100) F5 |--------------->| | |<---------------| (100) F6 | | | |<---------------| | | | 180 F7 | | | 180 F8 |<---------------| | 180 F9 |<---------------| | |<---------------| | 200 F10 | | | 200 F11 |<---------------| | 200 F12 |<---------------| | |<---------------| | | | ACK F13 | | | |--------------->| ACK F14 | | | |--------------->| ACK F15 | | | |--------------->| | RTP Media | Both Way RTP Media | |<==============>|<===============================>| | BYE F16 | | | |--------------->| BYE F17 | | | |--------------->| BYE F18 | | | |--------------->| | | | 200 F19 | | | 200 F20 |<---------------| | 200 F21 |<---------------| | |<---------------| | | | | | | User A completes a call to User B through a Firewall Proxy and a SIP Proxy. The signaling message exchange is identical to 3.1.1 but the media stream setup is not end-to-end - the Firewall proxy terminates both media streams and bridges them. This is done by the Proxy modifying the SDP in the INVITE (F1) and 200 OK (F11) messages. In addition to firewall traversal, this back-to-back User Agent Client and User Agent Server could be used as part of an anonymizer service (in which all identifying information on User A would be removed), or to perform codec media conversion, such as mu-law to A- law conversion of PCM on an international call. Message Details F1 INVITE A -> SIP FW INVITE sip:UserB@ fwp1.wcom.com SIP/2.0 Johnston, et al. Informational [Page 49] Internet Draft SIP Telephony Call Flow Examples November 2000 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Authorization:Digest username="UserA", realm="MCI WorldCom SIP", nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="", uri="sip:ss1.wcom.com", response="b3f392f9218a328b9294076d708e6815" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Client for A prepares to receive data on port 49172 from the network. */ F2 INVITE SIP FW -> Proxy 1 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Authorization:Digest username="UserA", realm="MCI WorldCom SIP", nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="", uri="sip:ss1.wcom.com", response="b3f392f9218a328b9294076d708e6815" Content-Type: application/sdp Content-Length: 149 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 200.201.202.203 t=0 0 m=audio 1000 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 (100 Trying) SIP FW -> A Johnston, et al. Informational [Page 50] Internet Draft SIP Telephony Call Flow Examples November 2000 SIP/2.0 100 Trying Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 /* SIP FW prepares to proxy data from port 200.201.202.203/1000 to 100.101.102.103/49172. Proxy 1 uses a Location Service function to determine where B is located. Based upon location analysis the call is forwarded to User B */ F4 INVITE Proxy 1 -> B INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 146 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 200.201.202.203 t=0 0 m=audio 1000 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F5 (100 Trying) Proxy 1 -> SIP FW SIP/2.0 100 Trying Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 Johnston, et al. Informational [Page 51] Internet Draft SIP Telephony Call Flow Examples November 2000 F6 (100 Trying) B -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F7 180 Ringing B -> Proxy 1 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F8 180 Ringing Proxy 1 -> SIP FW SIP/2.0 180 Ringing Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F9 180 Ringing SIP FW -> A SIP/2.0 180 Ringing Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F10 200 OK B -> Proxy 1 Johnston, et al. Informational [Page 52] Internet Draft SIP Telephony Call Flow Examples November 2000 SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F11 200 OK Proxy 1 -> SIP FW SIP/2.0 200 OK Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F12 200 OK SIP FW -> A SIP/2.0 200 OK Johnston, et al. Informational [Page 53] Internet Draft SIP Telephony Call Flow Examples November 2000 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserB 2890844527 2890844527 IN IP4 there.com s=Session SDP c=IN IP4 200.201.202.203 t=0 0 m=audio 1002 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* The Firewall Proxy prepares to proxy packets from 200.201.202.203/ 1002 to 110.111.112.113/3456 */ F13 ACK A -> SIP FW ACK sip:UserB@fwp1.wcom.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 Route: , From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0 F14 ACK SIP FW -> Proxy 1 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 Route: From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0 F15 ACK Proxy 1 -> B Johnston, et al. Informational [Page 54] Internet Draft SIP Telephony Call Flow Examples November 2000 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0 /* RTP streams are established between A and the Firewall Proxy and between the Firewall Proxy and B*/ /* User A Hangs Up with User B. */ F16 BYE A -> SIP FW BYE sip:UserB@fwp1.wcom.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 Route: , From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 BYE Content-Length: 0 F17 BYE SIP FW -> Proxy 1 BYE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 Route: From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 BYE Content-Length: 0 F18 BYE F18 Proxy 1 -> B BYE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 BYE Johnston, et al. Informational [Page 55] Internet Draft SIP Telephony Call Flow Examples November 2000 Content-Length: 0 F19 200 OK B -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 BYE Content-Length: 0 F20 200 OK Proxy 1 -> SIP FW SIP/2.0 200 OK Via: SIP/2.0/UDP fwp1.wcom.com:5060;branch=9471385739578.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 BYE Content-Length: 0 F21 200 OK SIP FW -> A SIP/2.0 200 OK Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 BYE Content-Length: 0 Johnston, et al. Informational [Page 56] Internet Draft SIP Telephony Call Flow Examples November 2000 3.1.6 Successful SIP to SIP via Redirect and Proxy SDP in ACK User A Redirect Proxy Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| | | | 302 F2 | | | |<---------------| | | | ACK F3 | | | |--------------->| | | | INVITE F4 | | |-------------------------------->| INVITE F5 | | (100) F6 |--------------->| |<--------------------------------| (100) F7 | | |<---------------| | | 180 F8 | | 180 F9 |<---------------| |<--------------------------------| | | | 200 F10 | | 200 F11 |<---------------| |<--------------------------------| | | ACK F12 | | |-------------------------------->| ACK F13 | | |--------------->| | Both Way RTP Media | |<================================================>| | | BYE F14 | | BYE F15 |<---------------| |<--------------------------------| | | 200 F16 | | |-------------------------------->| 200 F17 | | |--------------->| | | | In this scenario, User A places a call to User B using first a Redirect server then a Proxy Server. The INVITE message is first sent to the Redirect Server. The Server returns a 302 Moved Temporarily response (F2) containing a Contact header with User B's current SIP address. User A then generates a new INVITE and sends to User B via the Proxy Server and the call proceeds normally. In this example, no SDP is present in the INVITE, so the SDP is carried in the ACK message. The call is terminated when User B sends a BYE message. Message Details F1 INVITE A -> Redirect Proxy Johnston, et al. Informational [Page 57] Internet Draft SIP Telephony Call Flow Examples November 2000 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Length: 0 F2 302 Moved Temporarily Redirect Proxy -> A SIP/2.0 302 Moved Temporarily Contact: sip:UserB@everywhere.com Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F3 ACK A -> Redirect Proxy ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F4 INVITE A -> Proxy 2 INVITE sip:UserB@everywhere.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 2 INVITE Contact: BigGuy Content-Length: 0 F5 INVITE Proxy 2 -> B INVITE sip:UserB@everywhere.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: Johnston, et al. Informational [Page 58] Internet Draft SIP Telephony Call Flow Examples November 2000 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 2 INVITE Contact: BigGuy Content-Length: 0 F6 (100 Trying) Proxy 2 -> A SIP/2.0 100 Trying Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 2 INVITE Content-Length: 0 F7 (100 Trying) B -> Proxy 2 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 2 INVITE Content-Length: 0 F8 180 Ringing B -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 INVITE Content-Length: 0 F9 180 Ringing Proxy 2 -> A SIP/2.0 180 Ringing Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 INVITE Johnston, et al. Informational [Page 59] Internet Draft SIP Telephony Call Flow Examples November 2000 Content-Length: 0 F10 200 OK B -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 everywhere.com s=Session SDP c=IN IP4 111.112.113.114 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F11 200 OK Proxy -> A SIP/2.0 200 OK Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 INVITE Contact: LittleGuy Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 everywhere.com s=Session SDP c=IN IP4 111.112.113.114 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* ACK contains SDP of A since none present in INVITE */ F12 ACK A -> Proxy 2 Johnston, et al. Informational [Page 60] Internet Draft SIP Telephony Call Flow Examples November 2000 ACK sip:UserB@everyhere.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 Route: From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 ACK Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F13 ACK Proxy 2 -> B ACK sip:UserB@everywhere.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 2 ACK Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* RTP streams are established between A and B*/ /* User B Hangs Up with User A. */ F14 BYE B -> Proxy 2 BYE sip:UserA@here.com SIP/2.0 Via: SIP/2.0/UDP everywhere.com:5060 Route: From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345600@here.com CSeq: 1 BYE Johnston, et al. Informational [Page 61] Internet Draft SIP Telephony Call Flow Examples November 2000 Content-Length: 0 F15 BYE Proxy 2 -> A BYE sip:UserA@here.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP everywhere.com:5060 From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345600@here.com CSeq: 1 BYE Content-Length: 0 F16 200 OK A -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP everywhere.com:5060 From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345600@here.com CSeq: 1 BYE Content-Length: 0 F17 200 OK Proxy 2 -> B SIP/2.0 200 OK Via: SIP/2.0/UDP everywhere.com:5060 From: LittleGuy ;tag=314159 To: BigGuy Call-ID: 12345600@here.com CSeq: 1 BYE Content-Length: 0 Johnston, et al. Informational [Page 62] Internet Draft SIP Telephony Call Flow Examples November 2000 3.2 Failure Scenarios 3.2.1 Unsuccessful SIP to SIP no answer User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | (100) F3 |--------------->| INVITE F4 | |<---------------| (100) F5 |--------------->| | |<---------------| | | | | 180 F6 | | | 180 F7 |<---------------| | 180 F8 |<---------------| | |<---------------| | | | | | | | CANCEL F9 | | | |--------------->| | | | 200 F10 | | | |<---------------| CANCEL F11 | | | |--------------->| | | | 200 F12 | | | |<---------------| | | | | CANCEL F13 | | | |--------------->| | | | 200 F14 | | | |<---------------| | | | 487 F15 | | | |<---------------| | | | ACK F16 | | | 487 F17 |--------------->| | |<---------------| | | | ACK F18 | | | 487 F19 |--------------->| | |<---------------| | | | ACK F20 | | | |--------------->| | | | | | | In this scenario, User A gives up on the call before User B answers (sends a 200 OK response). User A sends a CANCEL (F9) since no final response had been received from User B. If a 200 OK to the INVITE had crossed with the CANCEL, User A would have sent an ACK then a BYE to User B in order to properly terminate the call. Note that the CANCEL message is acknowledged with a 200 OK on a hop by hop basis, rather than end to end. Johnston, et al. Informational [Page 63] Internet Draft SIP Telephony Call Flow Examples November 2000 Message Details F1 INVITE A -> Proxy 1 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Authorization:Digest username="UserA", realm="MCI WorldCom SIP", nonce="ze7k1ee88df84f1cec431ae6cbe5a359", opaque="", uri="sip:ss1.wcom.com", response="b00b416324679d7e243f55708d44be7b" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /*Client for A prepares to receive data on port 49172 from the network.*/ F2 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 Johnston, et al. Informational [Page 64] Internet Draft SIP Telephony Call Flow Examples November 2000 a=rtpmap:0 PCMU/8000 F3 (100 Trying) Proxy 1 -> A SIP/2.0 100 Trying Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F4 INVITE Proxy 2 -> B INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F5 (100 Trying) Proxy 2 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 Johnston, et al. Informational [Page 65] Internet Draft SIP Telephony Call Flow Examples November 2000 F6 180 Ringing B -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F7 180 Ringing Proxy 2 -> Proxy 1 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F8 180 Ringing Proxy 1 -> A SIP/2.0 180 Ringing Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F9 CANCEL A -> Proxy 1 CANCEL sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 CANCEL Content-Length: 0 F10 200 OK Proxy 1 -> A SIP/2.0 200 OK Via: SIP/2.0/UDP here.com:5060 Johnston, et al. Informational [Page 66] Internet Draft SIP Telephony Call Flow Examples November 2000 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 CANCEL Content-Length: 0 F11 CANCEL Proxy 1 -> Proxy 2 CANCEL sip:UserA@here.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 CANCEL Content-Length: 0 F12 200 OK Proxy 2 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 CANCEL Content-Length: 0 F13 CANCEL Proxy 2 -> B CANCEL sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 CANCEL Content-Length: 0 F14 200 OK B -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 CANCEL Content-Length: 0 Johnston, et al. Informational [Page 67] Internet Draft SIP Telephony Call Flow Examples November 2000 F15 487 Request Cancelled B -> Proxy 2 SIP/2.0 487 Request Cancelled Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F16 ACK Proxy 2 -> B ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0 F17 487 Request Cancelled Proxy 2 -> Proxy 1 SIP/2.0 487 Request Cancelled Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=9876 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F18 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 From: BigGuy To: LittleGuy ;tag=9876 Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0 F19 487 Request Cancelled Proxy 1 -> A SIP/2.0 487 Request Cancelled Via: SIP/2.0/UDP here.com:5060 Johnston, et al. Informational [Page 68] Internet Draft SIP Telephony Call Flow Examples November 2000 From: BigGuy To: LittleGuy ;tag=4321 Call-ID: 12345600@here.com CSeq: 1 INVITE F20 ACK A -> Proxy 1 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=4321 Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0 Johnston, et al. Informational [Page 69] Internet Draft SIP Telephony Call Flow Examples November 2000 3.2.2 Unsuccessful SIP to SIP busy User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | (100) F3 |--------------->| INVITE F4 | |<---------------| (100) F5 |--------------->| | |<---------------| | | | | 486 F6 | | | |<---------------| | | | ACK F7 | | | 486 F8 |--------------->| | |<---------------| | | | ACK F9 | | | 486 F10 |--------------->| | |<---------------| | | | ACK F11 | | | |--------------->| | | | | | | In this scenario, User B is busy and sends a 486 Busy Here response to User A's INVITE. Note that the 4xx response is ACKed at each signaling leg. Message Details F1 INVITE User A -> Proxy 1 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Authorization:Digest username="UserA", realm="MCI WorldCom SIP", nonce="dc3a5ab2530aa93112cf5904ba7d88fa", opaque="", uri="sip:ss1.wcom.com", response="702138b27d869ac8741e10ec643d55be" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Johnston, et al. Informational [Page 70] Internet Draft SIP Telephony Call Flow Examples November 2000 /*Client for A prepares to receive data on port 49172 from the network.*/ F2 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 (100 Trying) Proxy 1 -> User A SIP/2.0 100 Trying Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F4 INVITE Proxy 2 -> User B INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Johnston, et al. Informational [Page 71] Internet Draft SIP Telephony Call Flow Examples November 2000 Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F5 (100 Trying) Proxy 2 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F6 486 Busy Here User B -> Proxy 2 SIP/2.0 486 Busy Here Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F7 ACK Proxy 2 -> User B ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0 F8 486 Busy Here Proxy 2 -> Proxy 1 Johnston, et al. Informational [Page 72] Internet Draft SIP Telephony Call Flow Examples November 2000 SIP/2.0 486 Busy Here Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=1293 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F9 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 From: BigGuy To: LittleGuy ;tag=1293 Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0 F10 486 Busy Here Proxy 1 -> User A SIP/2.0 486 Busy Here Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=a6b4 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F11 ACK User A -> Proxy 1 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=a6b4 Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0 Johnston, et al. Informational [Page 73] Internet Draft SIP Telephony Call Flow Examples November 2000 3.2.3 Unsuccessful SIP to SIP no response User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | (100) F3 |--------------->| INVITE F4 | |<---------------| (100) F5 |--------------->| | |<---------------| INVITE F6 | | | |--------------->| | | | INVITE F7 | | | |--------------->| | | | INVITE F8 | | | |--------------->| | | | INVITE F9 | | | |--------------->| | | | INVITE F10 | | | |--------------->| | | | INVITE F11 | | | |--------------->| | | | CANCEL F12 | | | 480 F13 |--------------->| | |<---------------| | | | ACK F14 | | | 480 F15 |--------------->| | |<---------------| | | | ACK F16 | | | |--------------->| | | | | | | In this example, there is no response from User B to User A's INVITE messages being re-transmitted by Proxy 2. After the sixth re- transmission, Proxy 2 gives up and sends a CANCEL to User B and a 480 No Response to User A. Note that the CANCEL would also be retransmitted six times, as governed by SIP timer T1 as in Call Flow 5.2.6. Message Details F1 INVITE User A -> Proxy 1 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Authorization:Digest username="UserA", realm="MCI WorldCom SIP", Johnston, et al. Informational [Page 74] Internet Draft SIP Telephony Call Flow Examples November 2000 nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="", uri="sip:ss1.wcom.com", response="7afc04be7961f053c24f80e7dbaf888f" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /*Client for A prepares to receive data on port 49172 from the network.*/ F2 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 (100 Trying) Proxy 1 -> User A SIP/2.0 100 Trying Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 Johnston, et al. Informational [Page 75] Internet Draft SIP Telephony Call Flow Examples November 2000 F4 INVITE Proxy 2 -> User B INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F5 (100 Trying) Proxy 2 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F6 INVITE Proxy 2 -> User B Resend of Message F4 F7 INVITE Proxy 2 -> User B Resend of Message F4 F8 INVITE Proxy 2 -> User B Resend of Message F4 Johnston, et al. Informational [Page 76] Internet Draft SIP Telephony Call Flow Examples November 2000 F9 INVITE Proxy 2 -> User B Resend of Message F4 F10 INVITE Proxy 2 -> User B Resend of Message F4 F11 INVITE Proxy 2 -> User B Resend of Message F4 F12 CANCEL Proxy 2 -> User B CANCEL sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 CANCEL Content-Length: 0 F13 480 No Response Proxy 2 -> Proxy 1 SIP/2.0 480 No Response Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F14 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0 F15 480 No Response Proxy 1 -> User A Johnston, et al. Informational [Page 77] Internet Draft SIP Telephony Call Flow Examples November 2000 SIP/2.0 480 No Response Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=159 Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F16 ACK User A -> Proxy 1 ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy ;tag=159 Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0 Johnston, et al. Informational [Page 78] Internet Draft SIP Telephony Call Flow Examples November 2000 3.2.4 Unsuccessful SIP to SIP Temporarily Unavailable User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | (100) F4 |--------------->| INVITE F3 | |<---------------| (100) F5 |--------------->| | |<---------------| (100) F6 | | | |<---------------| | | | 180 F7 | | | 180 F8 |<---------------| | 180 F9 |<---------------| | |<---------------| | 480 F10 | | | |<---------------| | | | ACK F11 | | | 480 F12 |--------------->| | |<---------------| | | | ACK F13 | | | 480 F14 |--------------->| | |<---------------| | | | ACK F15 | | | |--------------->| | | | | | | In this scenario, User B initially sends a 180 Ringing response to User A, indicating that alerting is taking place. However, then a 480 Unavailable is then sent to User A. This response is acknowledged then proxied back to User A. Message Details F1 INVITE A -> Proxy 1 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Authorization:Digest username="UserA", realm="MCI WorldCom SIP", nonce="aa9311cf5904ba7d8dc3a5ab253028fa", opaque="", uri="sip:ss1.wcom.com", response="59a46a91bf1646562a4d486c84b399db" Content-Type: application/sdp Content-Length: 147 v=0 Johnston, et al. Informational [Page 79] Internet Draft SIP Telephony Call Flow Examples November 2000 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /*Client for A prepares to receive data on port 49172 from the network.*/ F2 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 INVITE Proxy 2 -> B INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 Record-Route: , From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: BigGuy Content-Type: application/sdp Content-Length: 147 v=0 Johnston, et al. Informational [Page 80] Internet Draft SIP Telephony Call Flow Examples November 2000 o=UserA 2890844526 2890844526 IN IP4 here.com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F4 (100 Trying) Proxy 1 -> A SIP/2.0 100 Trying Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F5 (100 Trying) Proxy 2 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F6 (100 Trying) User B -> Proxy 2 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Content-Length: 0 F7 180 Ringing B -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.wcom.com:5060;branch=721e418c4.1 Via: SIP/2.0/UDP ss1.wcom.com:5060;branch=2d4790.1 Via: SIP/2.0/UDP here.com:5060 From: BigGuy Johnston, et al. Informational [Page 81] Internet Draft SIP Telephony Call Flow Examples November 2000 To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE