Internet Engineering Task Force Alan Johnston Internet Draft WorldCom Document: draft-ietf-sip-call-flows-05.txt Steve Donovan Category: Informational Robert Sparks June 2001 Chris Cunningham Expires: December 2001 Dean Willis Jonathan Rosenberg dynamicsoft Kevin Summers Sonus Henning Schulzrinne Columbia University SIP 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 informational 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 Call Flow Examples April 2001 Table of Contents 1 Overview...................................................4 1.1 General Assumptions........................................4 1.2 Legend for Message Flows...................................6 1.3 SIP Protocol Assumptions...................................7 1.4 Changes to 00 draft .......................................7 1.5 Changes to 01 draft .......................................8 1.6 Changes to 02 draft .......................................8 1.7 Changes to 03 draft .......................................9 2 SIP Registration Services.................................10 2.1 Success Scenarios.........................................10 2.1.1 SIP Client New Registration...............................10 2.1.2 User updates contact list.................................13 2.1.3 User Requests Current Contact List........................15 2.1.4 User Cancels Registration.................................17 2.2 Failure Scenarios.........................................18 2.2.1 Unsuccessful SIP registration.............................18 3 SIP to SIP Dialing........................................20 3.1 Success Scenarios.........................................20 3.1.1 Successful Simple SIP to SIP..............................21 3.1.2 Successful SIP to SIP through two proxies.................24 3.1.3 Successful SIP to SIP with Multi Proxy Authentication.....33 3.1.4 Successful SIP to SIP with Proxy failure..................42 3.1.5 Successful SIP to SIP through SIP Firewall Proxy..........50 3.1.6 Successful SIP to SIP via Redirect and Proxy SDP in ACK...58 3.1.7 Successful SIP to SIP with re-INVITE......................64 3.2 Failure Scenarios.........................................75 3.2.1 Unsuccessful SIP to SIP no answer.........................75 3.2.2 Unsuccessful SIP to SIP busy..............................82 3.2.3 Unsuccessful SIP to SIP no response.......................86 3.2.4 Unsuccessful SIP to SIP Temporarily Unavailable...........91 4 SIP to Gateway Dialing....................................96 4.1 Success Scenarios.........................................96 4.1.1 Successful SIP to ISUP PSTN call..........................97 4.1.2 Successful SIP to ISDN PBX call..........................104 4.1.3 Successful SIP to ISUP PSTN call with overflow...........111 4.2 Failure Scenarios........................................119 4.2.1 Unsuccessful SIP to PSTN call: Treatment from PSTN.......120 4.2.2 Unsuccessful SIP to PSTN: REL w/Cause from PSTN..........126 4.2.3 Unsuccessful SIP to PSTN: ANM Timeout....................130 5 Gateway to SIP Dialing...................................133 5.1 Success Scenarios........................................133 5.1.1 Successful PSTN to SIP call..............................134 5.1.2 Successful PSTN to SIP call, Fast Answer.................140 5.1.3 Successful PBX to SIP call...............................145 5.2 Failure Scenarios........................................151 5.2.1 Unsuccessful PSTN to SIP REL, SIP error mapped to REL....151 5.2.2 Unsuccessful PSTN to SIP REL, SIP busy mapped to REL.....153 5.2.3 Unsuccessful PSTN->SIP, SIP error interworking to tones..157 5.2.4 Unsuccessful PSTN->SIP, ACM timeout......................161 Johnston, et al. Informational [Page 2] Internet Draft SIP Call Flow Examples April 2001 5.2.5 Unsuccessful PSTN->SIP, ACM timeout, stateless Proxy.....166 5.2.6 Unsuccessful PSTN->SIP, ANM timeout......................173 6 Gateway to Gateway Dialing via SIP Network...............179 6.1 Success Scenarios........................................179 6.1.1 Successful ISUP PSTN to ISUP PSTN call...................180 6.1.2 Successful FGB PBX to ISDN PBX call with overflow........187 7 SIP Test Messages........................................196 7.1 INVITE Parser Torture Test Message.......................196 7.2 INVITE with Proxy-Require and Require....................197 7.3 INVITE with Unknown Schemes in URIs and URLs.............197 7.4 REGISTER with Y2038 Test.................................198 7.5 INVITE with inconsistent Accept and message body.........198 7.6 INVITE with non-SDP message body.........................199 7.7 Unknown Method Message...................................199 7.8 Unknown Method with CSeq Error...........................200 7.9 REGISTER with Unknown Authorization Scheme...............200 7.10 Multiple SIP Request in a Single Message.................201 7.11 INVITE missing Required Headers..........................201 7.12 INVITE with Duplicate Required Headers...................202 7.13 INVITE with Illegal Expires Header.......................202 7.14 200 OK Response with Broadcast Via Header................203 7.15 INVITE with Invalid Via and Contact Headers..............204 7.16 INVITE with Incorrect Content-Length Header..............204 7.17 INVITE with Invalid Value for Content-Length.............205 7.18 INVITE with Garbage after Message Body...................205 7.19 INVITE with Error in Display Name in To Header...........206 7.20 INVITE with long tokens, Call-ID, and SIP URLs...........206 7.21 INVITE with Illegal Enclosing of Request-URI in "<>".....207 7.22 INVITE with Illegal LWS within Elements of Request-URI...207 7.23 INVITE with Illegal >1 SP between elements Request-URI...208 7.24 INVITE with a Legal SIP URL With Escaped Characters......209 7.25 INVITE with the Illegal Escaped Headers Request-URI......209 7.26 INVITE with Unknown in Request-URI.......................210 7.27 OPTIONS with no LWS between display name and "<".........210 7.28 OPTIONS with Extra WS between display name and "<".......211 7.29 INVITE with an Illegal Date Format.......................211 7.30 INVITE with Passed Expires Time..........................212 7.31 INVITE with Max-Forwards Set to Zero.....................212 7.32 REGISTER with Escaped Header in a Legal Contact URL......213 7.33 REGISTER with Escaped Header in an Illegal Contact URL...213 7.34 INVITE with Long Values in Headers.......................214 7.35 OPTIONS with Multiple Headers............................215 7.36 INVITE with Large Number of SDP Attributes and Long URI..216 7.37 REGISTER with Contact Parameter..........................216 7.38 REGISTER with a URL Parameter............................217 7.39 INVITE with Unquoted Display Name with Tokens............217 7.40 INVITE with Unquoted Display Name with Non-Token Chars...218 7.41 INVITE with Unknown (Higher) Protocol Version Start Line.218 8 Acknowledgements.........................................218 9 References...............................................219 Johnston, et al. Informational [Page 3] Internet Draft SIP Call Flow Examples April 2001 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. Note that this document is informational, and is not normative on any aspect of SIP or SIP/PSTN interworking. 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 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. Note that these assumptions are NOT requirements. They are outlined in this section so that they may be taken into consideration and to aide in the understanding of the call flow examples. 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. Johnston, et al. Informational [Page 4] Internet Draft SIP Call Flow Examples April 2001 . The Proxy and the Gateway will authenticate each other using IPSec[3] or some other non-SIP scheme. 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, which are not shown in these flows. 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 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. Johnston, et al. Informational [Page 5] Internet Draft SIP Call Flow Examples April 2001 . 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@wcom.com) Alternatively, the "phone-context" qualifier could be used to interpret the private number. It is defined in the telephony URL document [4]. 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 numbers is the tel URL[4]. 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. */ Johnston, et al. Informational [Page 6] Internet Draft SIP Call Flow Examples April 2001 1.3 SIP Protocol Assumptions Except for the following, this call flows document uses the April 1999 version 2.0 of SIP defined by RFC 2543[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 indicates to the User Agent that a Gateway has been contacted and is trying to complete the call to the PSTN and that one-way early media may be present which gives an indication of the progress of the call. The User Agent will immediately play to the user any RTP media packets received to hear in-band call progress information such as ringtone or busy tone. Note that SDP is not required in the 183 response since the media is uni-directional. 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 both 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. . 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. . Other simplifications have been made for editing purposes. For example, the order of SIP headers is fairly consistent throughout the document. With a few exceptions, the ordering of SIP headers is not significant. In any discrepency between this document and RFC 2543, follow RFC 2543. This document is informational only. 1.4 Changes to 00 draft Johnston, et al. Informational [Page 7] Internet Draft SIP Call Flow Examples April 2001 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. - Corrected tag handling and Record-Routes in Section 4. 1.6 Changes to 02 draft The major changes between this draft and previous are listed below: - The word "Telephony" has been removed from the document title. - Selected messages have been successfully validated against a SIP parser for accuracy. Johnston, et al. Informational [Page 8] Internet Draft SIP Call Flow Examples April 2001 - Added word "informational" to Abstract, and added additional wording about this document being informational and not normative. - Added re-INVITE call flow (T.38 Fax)in 3.1.7. - Removed SDP from all 183 Session Progress messages since it is not needed. Corrected figures to show early media path as one way. - Removed PRACK from example 4.1.2 since there is no longer any need for the 183 to be transported reliably since it no longer contains SDP. - Corrected Call-ID in 3.1.1. - Corrected domain in WWW-Authenticate and Proxy-Authenticate headers to be a SIP URL. - Section 7.4 SIP Date corrected to Sat, 01 Dec 2040 16:00:00 GMT - Section 7.7 Retransmission strategy for unknown method message should be based on BYE not INVITE - Section 7.10 multiple message element of this test removed as this behaviour is no longer allowed, higher SIP version number part moved into 7.42 - Section 7.18 recommended response changed - Added Test Messages 7.21 through 7.41 1.7 Changes to the 03 draft - Replaced Authorization headers with Proxy-Authorization headers - Fixed Record-Route in example 3.1.3 - Various CSeq and Content-Length corrections 1.8 Changes to the 04 draft - Removed domain names from Contact headers - Removed "phone-context" URI parameter. - Added expires parameter to 200 OK responses to REGISTERs. - Changed Proxy-Authorization headers in Section 2 to Authorization headers. Johnston, et al. Informational [Page 9] Internet Draft SIP Call Flow Examples April 2001 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 RFC 2543[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 10] Internet Draft SIP Call Flow Examples April 2001 Via: SIP/2.0/UDP there.com:5060 From: LittleGuy To: LittleGuy Call-ID: 123456789@there.com CSeq: 1 REGISTER Contact: 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="sip:ss2.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: 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 Johnston, et al. Informational [Page 11] Internet Draft SIP Call Flow Examples April 2001 Contact: ;expires=3600 Contact: ;expires=3600 Contact: ;expires=4294967295 Content-Length: 0 Johnston, et al. Informational [Page 12] Internet Draft SIP Call Flow Examples April 2001 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 Johnston, et al. Informational [Page 13] Internet Draft SIP Call Flow Examples April 2001 CSeq: 1 REGISTER Contact: ;expires=3600 Contact: ;expires=3600 Contact: ;expires=4294967295 Contact: ;expires=4294967295 Content-Length: 0 Johnston, et al. Informational [Page 14] Internet Draft SIP Call Flow Examples April 2001 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: ;expires=3600 Contact: ;expires=3600 Contact: ;expires=4294967295 Contact: ;expires=4294967295 Johnston, et al. Informational [Page 15] Internet Draft SIP Call Flow Examples April 2001 Content-Length: 0 Johnston, et al. Informational [Page 16] Internet Draft SIP Call Flow Examples April 2001 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 17] Internet Draft SIP Call Flow Examples April 2001 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: Contact: Contact: tel:+1-972-555-2222 Content-Length: 0 F2 Unauthorized SIP Server -> User B Johnston, et al. Informational [Page 18] Internet Draft SIP Call Flow Examples April 2001 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="sip:ss2.wcom.com", once="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: 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="sip:ss2.wcom.com", nonce="84f1c1ae6cbe5ua9c8e88dfa3ecm3459", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 Johnston, et al. Informational [Page 19] Internet Draft SIP Call Flow Examples April 2001 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 Proxy Servers 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 via the Proxy. Johnston, et al. Informational [Page 20] Internet Draft SIP Call Flow Examples April 2001 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: 12345601@here.com CSeq: 1 INVITE Contact: 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 21] Internet Draft SIP Call Flow Examples April 2001 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 ;tag=8321234356 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 ;tag=8321234356 Call-ID: 12345601@here.com CSeq: 1 INVITE Contact: 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 ;tag=8321234356 Call-ID: 12345601@here.com CSeq: 1 ACK Johnston, et al. Informational [Page 22] Internet Draft SIP Call Flow Examples April 2001 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 ;tag=8321234356 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 ;tag=8321234356 To: BigGuy Call-ID: 12345601@here.com CSeq: 1 BYE Content-Length: 0 Johnston, et al. Informational [Page 23] Internet Draft SIP Call Flow Examples April 2001 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 24] Internet Draft SIP Call Flow Examples April 2001 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: 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="sip:ss1.wcom.com", nonce="f84f1cec41e6cbe5aea9c8e88d359", 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 25] Internet Draft SIP Call Flow Examples April 2001 CSeq: 1 ACK 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: 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: Content-Type: application/sdp Content-Length: 147 Johnston, et al. Informational [Page 26] Internet Draft SIP Call Flow Examples April 2001 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@110.111.112.113 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: 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 Johnston, et al. Informational [Page 27] Internet Draft SIP Call Flow Examples April 2001 From: BigGuy 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: , Johnston, et al. Informational [Page 28] Internet Draft SIP Call Flow Examples April 2001 From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345601@here.com CSeq: 1 INVITE Contact: 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: 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 Johnston, et al. Informational [Page 29] Internet Draft SIP Call Flow Examples April 2001 Contact: 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@110.111.112.113 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 30] Internet Draft SIP Call Flow Examples April 2001 /* 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@100.101.102.103 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 Johnston, et al. Informational [Page 31] Internet Draft SIP Call Flow Examples April 2001 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 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 32] Internet Draft SIP Call Flow Examples April 2001 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 33] Internet Draft SIP Call Flow Examples April 2001 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: 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="sip:ss1.wcom.com", nonce="wf84f1cczx41ae6cbeaea9ce88d359", 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 34] Internet Draft SIP Call Flow Examples April 2001 Call-ID: 12345600@here.com CSeq: 1 ACK 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: Proxy-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 35] Internet Draft SIP Call Flow Examples April 2001 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: 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="sip:ss2.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 36] Internet Draft SIP Call Flow Examples April 2001 /* 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="sip:ss2.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: Proxy-Authorization:Digest username="UserA", realm="WorldCom SIP", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", uri="sip:ss1.wcom.com", response="42ce3cef44b22f50c6a6071bc8" Proxy-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 37] Internet Draft SIP Call Flow Examples April 2001 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: Proxy-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 38] Internet Draft SIP Call Flow Examples April 2001 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 2 -> User B INVITE sip:UserB@110.111.112.113 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: 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 39] Internet Draft SIP Call Flow Examples April 2001 CSeq: 3 INVITE Contact: 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: 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: Content-Type: application/sdp Content-Length: 149 Johnston, et al. Informational [Page 40] Internet Draft SIP Call Flow Examples April 2001 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 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: Content-Length: 0 F21 ACK Proxy 2 -> User A ACK sip:UserB@110.111.112.113 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: Content-Length: 0 Johnston, et al. Informational [Page 41] Internet Draft SIP Call Flow Examples April 2001 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 42] Internet Draft SIP Call Flow Examples April 2001 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: 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 43] Internet Draft SIP Call Flow Examples April 2001 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: 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 44] Internet Draft SIP Call Flow Examples April 2001 From: BigGuy To: LittleGuy Call-ID: 12345601@here.com CSeq: 1 INVITE Proxy-Authenticate: Digest realm="MCI SIP", domain="sip:ss2.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 ACK 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: Proxy-Authorization:Digest username="UserA", realm="MCI 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 45] Internet Draft SIP Call Flow Examples April 2001 F13 INVITE Proxy 2 -> B INVITE sip:UserB@110.111.112.113 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: 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 46] Internet Draft SIP Call Flow Examples April 2001 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: 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: 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 47] Internet Draft SIP Call Flow Examples April 2001 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@110.111.112.113 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@100.101.102.103 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 48] Internet Draft SIP Call Flow Examples April 2001 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 49] Internet Draft SIP Call Flow Examples April 2001 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 |--------------->| | |<---------------| 180 F6 | | | 180 F7 |<---------------| | 180 F8 |<---------------| | |<---------------| | 200 F9 | | | 200 F10 |<---------------| | 200 F11 |<---------------| | |<---------------| | | | ACK F12 | | | |--------------->| ACK F13 | | | |--------------->| ACK F14 | | | |--------------->| | RTP Media | Both Way RTP Media | |<==============>|<===============================>| | BYE F15 | | | |--------------->| BYE F16 | | | |--------------->| BYE F17 | | | |--------------->| | | | 200 F18 | | | 200 F19 |<---------------| | 200 F20 |<---------------| | |<---------------| | | | | | | 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 (F10) messages, and possibly any 18x or ACK messages containing SDP. In addition to firewall traversal, this Back-to-Back User Agent (B2BUA) 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@there.com;maddr=fwp1.wcom.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 Johnston, et al. Informational [Page 50] Internet Draft SIP Call Flow Examples April 2001 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: Proxy-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: Proxy-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 Johnston, et al. Informational [Page 51] Internet Draft SIP Call Flow Examples April 2001 F3 (100 Trying) SIP FW -> 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 /* 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@110.111.112.113 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: 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 52] Internet Draft SIP Call Flow Examples April 2001 F6 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 F7 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 F8 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 F9 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 Record-Route: , From: BigGuy To: LittleGuy ;tag=314159 Call-ID: 12345600@here.com CSeq: 1 INVITE Contact: Johnston, et al. Informational [Page 53] Internet Draft SIP Call Flow Examples April 2001 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 F10 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: 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 SIP FW -> 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: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 Johnston, et al. Informational [Page 54] Internet Draft SIP Call Flow Examples April 2001 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 */ F12 ACK A -> SIP FW ACK sip:UserB@there.com;maddr=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 F13 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 F14 ACK Proxy 1 -> B ACK sip:UserB@110.111.112.113 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 Johnston, et al. Informational [Page 55] Internet Draft SIP Call Flow Examples April 2001 between the Firewall Proxy and B*/ /* User A Hangs Up with User B. */ F15 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 F16 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 F17 BYE F18 Proxy 1 -> B BYE sip:UserB@110.111.112.113 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 Content-Length: 0 F18 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 Johnston, et al. Informational [Page 56] Internet Draft SIP Call Flow Examples April 2001 Call-ID: 12345600@here.com CSeq: 2 BYE Content-Length: 0 F19 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 F20 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 57] Internet Draft SIP Call Flow Examples April 2001 3.1.6 Successful SIP to SIP via Redirect and Proxy with 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 58] Internet Draft SIP Call Flow Examples April 2001 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: 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 ACK 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: Content-Length: 0 F5 INVITE Proxy 2 -> B INVITE sip:UserB@111.112.113.114 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 59] Internet Draft SIP Call Flow Examples April 2001 From: BigGuy To: LittleGuy Call-ID: 12345600@here.com CSeq: 2 INVITE Contact: 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 60] Internet Draft SIP Call Flow Examples April 2001 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: Content-Type: application/sdp Content-Length: 152 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: Content-Type: application/sdp Content-Length: 152 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 61] Internet Draft SIP Call Flow Examples April 2001 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@111.112.112.114 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 Johnston, et al. Informational [Page 62] Internet Draft SIP Call Flow Examples April 2001 CSeq: 1 BYE Content-Length: 0 F15 BYE Proxy 2 -> A BYE sip:UserA@100.101.102.103 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 63] Internet Draft SIP Call Flow Examples April 2001 3.1.7 Successful SIP to SIP with re-INVITE (T.38 Fax) IFT UA Proxy IFTGW UA | F1 INVITE | | |------------------->| F2 INVITE | | |------------------->| | F3 100 Trying | | |<-------------------| F4 100 Trying | | |<-------------------| | | F5 180 Ringing | | F6 180 Ringing |<-------------------| |<-------------------| | | | F7 200 OK | | F8 200 OK |<-------------------| |<-------------------| | | F9 ACK | | |------------------->| F10 ACK | | ------------------->| | Both Way RTP Media Established | |<=======================================>| | | F11 INVITE | | F12 INVITE |<-------------------| |<-------------------| | | F13 200 OK | | |------------------->| F14 200 OK | | |------------------->| | | F15 ACK | | F16 ACK |<-------------------| |<-------------------| | | T.38/UDPT Fax Flow Established | |<=======================================>| | | F17 INVITE | | F18 INVITE |<-------------------| |<-------------------| | | F19 200 OK | | |------------------->| F20 200 OK | | |------------------->| | | F21 ACK | | F22 ACK |<-------------------| |<-------------------| | | RTP Media Re-Established | |<=======================================>| | F23 BYE | | |------------------->| F24 BYE | | |------------------->| | | F25 200 OK | | F26 200 OK |<-------------------| |<-------------------| | Johnston, et al. Informational [Page 64] Internet Draft SIP Call Flow Examples April 2001 This example shows a session whose media session changes twice during the session. The initial PCM media session is established between the two User Agents in messages F1 through F10. The called party then wishes to change the type of media session between them. (In this example, the called party detects a fax transmission and wishes to change the media session to a T.38 Fax over IP session). The called party then sends a re-INVITE in message F11 which is accepted in the 200 OK of message F13. After message F16, the original PCM media session is terminated and the new T.38 session established. After the fax transmission is over, the called party again wishes to switch the media session back to a PCM media session and initiates a re-INVITE sequence with message F17. Message Details F1 INVITE IFT UA -> PROXY INVITE sip:+1-650-555-2222@ss1.wcom.com;user=phone SIP/2.0 Via: SIP/2.0/UDP ift.here.com:5060 From: sip:+1-303-555-1111@ift.here.com;user=phone To: Call-ID: 1717@ift.here.com CSeq: 17 INVITE Contact: Content-Type: application/sdp Content-Length: 146 v=0 o=IFAXTERMINAL01 2890844527 2890844527 IN IP4 ift.here.com s=Session SDP c=IN IP4 iftmg.here.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 INVITE PROXY -> IFTGW UA INVITE sip:+1-650-555-2222@iftgw.there.com;user=phone SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d007.1 Via: SIP/2.0/UDP ift.here.com:5060 Record-Route: From: sip:+1-303-555-1111@ift.here.com;user=phone To: Call-ID: 1717@ift.here.com CSeq: 17 INVITE Contact: Content-Type: application/sdp Content-Length: 146 Johnston, et al. Informational [Page 65] Internet Draft SIP Call Flow Examples April 2001 v=0 o=IFAXTERMINAL01 2890844527 2890844527 IN IP4 ift.here.com s=Session SDP c=IN IP4 iftmg.here.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 (100 Trying) PROXY -> IFT UA SIP/2.0 100 Trying Via: SIP/2.0/UDP ift.here.com:5060 From: sip:+1-303-555-1111@ift.here.com;user=phone To: Call-ID: 1717@ift.here.com CSeq: 17 INVITE Content-Length: 0 F4 100 Trying IFTGW UA -> PROXY SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d007.1 Via: SIP/2.0/UDP ift.here.com:5060 From: sip:+1-303-555-1111@ift.here.com;user=phone To: sip:+1-650-555-2222@ss1.wcom.com;user=phone Call-ID: 1717@ift.here.com CSeq: 17 INVITE Content-Length: 0 F5 180 Ringing IFTGW UA -> PROXY SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d007.1 Via: SIP/2.0/UDP ift.here.com:5060 From: sip:+1-303-555-1111@ift.here.com;user=phone To: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 17 INVITE Content-Length: 0 F6 180 Ringing PROXY -> IFT UA SIP/2.0 180 Ringing Via: SIP/2.0/UDP ift.here.com:5060 From: sip:+1-303-555-1111@ift.here.com;user=phone To: ;tag=5617 Johnston, et al. Informational [Page 66] Internet Draft SIP Call Flow Examples April 2001 Call-ID: 1717@ift.here.com CSeq: 17 INVITE Content-Length: 0 F7 200 OK IFTGW UA -> PROXY SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d007.1 Via: SIP/2.0/UDP ift.here.com:5060 From: sip:+1-303-555-1111@ift.here.com;user=phone To: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 17 INVITE Contact: Content-Type: application/sdp Content-Length: 150 v=0 o=IFAXTERMINAL01 2890844527 2890844527 IN IP4 iftgw.there.com s=Session SDP c=IN IP4 iftmg.there.com t=0 0 m=audio 12323 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F8 200 OK PROXY -> IFT UA SIP/2.0 200 OK Via: SIP/2.0/UDP ift.here.com:5060 Record-Route: From: sip:+1-303-555-1111@ift.here.com;user=phone To: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 17 INVITE Contact: Content-Type: application/sdp Content-Length: 150 v=0 o=IFAXTERMINAL01 2890844527 2890844527 IN IP4 iftgw.there.com s=Session SDP c=IN IP4 iftmg.there.com t=0 0 m=audio 12323 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F9 ACK IFT UA -> PROXY Johnston, et al. Informational [Page 67] Internet Draft SIP Call Flow Examples April 2001 ACK sip:+1-650-555-2222@ss1.wcom.com;user=phone SIP/2.0 Via: SIP/2.0/UDP ift.here.com:5060 Route: From: sip:+1-303-555-1111@ift.here.com;user=phone To: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 17 ACK Content-Length: 0 F10 ACK PROXY -> IFTGW UA ACK sip:+1-650-555-2222@ss1.wcom.com;user=phone SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d007.1 Via: SIP/2.0/UDP ift.here.com:5060 Record-Route: From: sip:+1-303-555-1111@ift.here.com;user=phone To: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 17 ACK Content-Length: 0 /* RTP streams are established. The CNG fax tone is sent in-band if it is present. The receiving side IFT gateway DSP detects the Preamble. A new UDP port is open on IFTGW for T.38 IFP packets and the IFTGW signals the switch over to fax mode by send a re-INVITE with the same Call-ID and with the new UDP port in the SDP */ F11 INVITE IFTGW UA -> PROXY INVITE sip:+1-303-555-1111@ift.here.com;user=phone SIP/2.0 Via: SIP/2.0/UDP iftgw.there.com:5060 Route: To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 320 v=0 o=faxgw1 2890844527 2890844527 IN IP4 iftgw.there.com s=Session SDP c=IN IP4 iftmg.there.com t=0 0 m=image 49172 udptl t38 a=T38FaxVersion:0 Johnston, et al. Informational [Page 68] Internet Draft SIP Call Flow Examples April 2001 a=T38maxBitRate:14400 a=T38FaxFillBitRemoval:0 a=T38FaxTranscodingMMR:0 a=T38FaxTranscodingJBIG:0 a=T38FaxRateManagement:transferredTCF a=T38FaxMaxBuffer:72 a=T38FaxMaxDatagram:316 a=T38FaxUdpEC:t38UDPRedundancy F12 INVITE PROXY -> IFT UA INVITE sip:+1-303-555-1111@ift.here.com;user=phone SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d008.1 Via: SIP/2.0/UDP iftgw.there.com:5060 Record-Route: To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 320 v=0 o=faxgw1 2890844527 2890844527 IN IP4 iftgw.there.com s=Session SDP c=IN IP4 iftmg.there.com t=0 0 m=image 49172 udptl t38 a=T38FaxVersion:0 a=T38maxBitRate:14400 a=T38FaxFillBitRemoval:0 a=T38FaxTranscodingMMR:0 a=T38FaxTranscodingJBIG:0 a=T38FaxRateManagement:transferredTCF a=T38FaxMaxBuffer:72 a=T38FaxMaxDatagram:316 a=T38FaxUdpEC:t38UDPRedundancy F13 200 OK IFT UA -> PROXY SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d008.1 Via: SIP/2.0/UDP iftgw.there.com:5060 To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com Johnston, et al. Informational [Page 69] Internet Draft SIP Call Flow Examples April 2001 CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 320 v=0 o=faxgw1 2890846527 2890846527 IN IP4 ift.here.com s=Session SDP c=IN IP4 iftmg.here.com t=0 0 m=image 15002 udptl t38 a=T38FaxVersion:0 a=T38maxBitRate:14400 a=T38FaxFillBitRemoval:0 a=T38FaxTranscodingMMR:0 a=T38FaxTranscodingJBIG:0 a=T38FaxRateManagement:transferredTCF a=T38FaxMaxBuffer:72 a=T38FaxMaxDatagram:316 a=T38FaxUdpEC:t38UDPRedundancy F14 200 OK PROXY -> IFT UA SIP/2.0 200 OK Via: SIP/2.0/UDP iftgw.there.com:5060 Record-Route: To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 320 v=0 o=faxgw1 2890846527 2890846527 IN IP4 ift.here.com s=Session SDP c=IN IP4 iftmg.here.com t=0 0 m=image 15002 udptl t38 a=T38FaxVersion:0 a=T38maxBitRate:14400 a=T38FaxFillBitRemoval:0 a=T38FaxTranscodingMMR:0 a=T38FaxTranscodingJBIG:0 a=T38FaxRateManagement:transferredTCF a=T38FaxMaxBuffer:72 a=T38FaxMaxDatagram:316 a=T38FaxUdpEC:t38UDPRedundancy Johnston, et al. Informational [Page 70] Internet Draft SIP Call Flow Examples April 2001 F15 ACK IFTGW UA -> PROXY ACK sip:+1-303-555-1111@ift.here.com;user=phone SIP/2.0 Via: SIP/2.0/UDP iftgw.there.com:5060 Route: To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 1 ACK Content-Length: 0 F16 ACK PROXY -> IFT UA ACK sip:+1-303-555-1111@ift.here.com;user=phone SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d008.1 Via: SIP/2.0/UDP iftgw.there.com:5060 To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 1 ACK Content-Length: 0 /* T.38 fax transmission established both ways which replaces the PCM audio session. */ /* Then, the end of the fax transmission is detected on ingress side and sent to the egress side (IFTGW). IFTGW initiates the switch back to voice communication */ F17 INVITE IFTGW UA -> PROXY INVITE sip:+1-303-555-1111@ift.here.com;user=phone SIP/2.0 Via: SIP/2.0/UDP iftgw.there.com:5060 Route: To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 181 v=0 o=faxgw1 2890844527 2890844527 IN IP4 iftgw.there.com s=Session SDP c=IN IP4 iftmg.there.com t=0 0 Johnston, et al. Informational [Page 71] Internet Draft SIP Call Flow Examples April 2001 m=audio 12323 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F18 INVITE PROXY -> IFT UA INVITE sip:+1-303-555-1111@ift.here.com;user=phone SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d009.1 Via: SIP/2.0/UDP iftgw.there.com:5060 Record-Route: To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 181 v=0 o=faxgw1 2890844527 2890844527 IN IP4 iftgw.there.com s=Session SDP c=IN IP4 iftmg.there.com t=0 0 m=audio 12323 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F19 200 OK IFT UA -> PROXY SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d008.1 Via: SIP/2.0/UDP iftgw.there.com:5060 Record-Route: To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 150 v=0 o=faxgw1 2890844527 2890844527 IN IP4 ift.here.com s=Session SDP c=IN IP4 iftmg.here.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Johnston, et al. Informational [Page 72] Internet Draft SIP Call Flow Examples April 2001 F20 200 OK PROXY -> IFTGW UA SIP/2.0 200 OK Via: SIP/2.0/UDP iftgw.there.com:5060 Record-Route: To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 150 v=0 o=faxgw1 2890844527 2890844527 IN IP4 ift.here.com s=Session SDP c=IN IP4 iftmg.here.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F21 ACK IFTGW UA -> PROXY ACK sip:+1-303-555-1111@ift.here.com;user=phone SIP/2.0 Via: SIP/2.0/UDP iftgw.there.com:5060 Route: To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 2 ACK Content-Length: 0 F22 ACK PROXY -> IFT UA ACK sip:+1-303-555-1111@ift.here.com;user=phone SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d009.1 Via: SIP/2.0/UDP iftgw.there.com:5060 To: sip:+1-303-555-1111@ift.here.com;user=phone From: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 2 ACK Content-Length: 0 F23 BYE IFT UA -> PROXY BYE sip:+1-650-555-2222@ss1.wcom.com SIP/2.0 Johnston, et al. Informational [Page 73] Internet Draft SIP Call Flow Examples April 2001 Via: SIP/2.0/UDP ift.here.com:5060 Route: From: sip:+1-303-555-1111@ift.here.com;user=phone To: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 18 BYE Content-Length: 0 F24 BYE PROXY -> IFTGW UA BYE sip:+1-650-555-2222@ss1.wcom.com SIP/2.0 Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d009.1 Via: SIP/2.0/UDP ift.here.com:5060 From: sip:+1-303-555-1111@ift.here.com;user=phone To: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 18 BYE Content-Length: 0 F25 200 OK IFTGW UA -> PROXY SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.wcom.com:5060; branch=2d007.1 Via: SIP/2.0/UDP ift.here.com:5060 From: sip:+1-303-555-1111@ift.here.com;user=phone To: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 18 BYE Content-Type: application/sdp Content-Length: 0 F26 200 OK PROXY -> IFT UA SIP/2.0 200 OK Via: SIP/2.0/UDP ift.here.com:5060 From: sip:+1-303-555-1111@ift.here.com;user=phone To: ;tag=5617 Call-ID: 1717@ift.here.com CSeq: 18 BYE Content-Type: application/sdp Content-Length: 0 Johnston, et al. Informational [Page 74] Internet Draft SIP Call Flow Examples April 2001 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 75] Internet Draft SIP Call Flow Examples April 2001 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: Proxy-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: 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 Johnston, et al. Informational [Page 76] Internet Draft SIP Call Flow Examples April 2001 m=audio 49172 RTP/AVP 0 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@110.111.112.113 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: 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 (1