SIPPING Working Group A. Johnston Internet Draft WorldCom Document: S. Donovan [-draft-ietf-sipping-basic-call-flows-01.txt-] {+draft-ietf-sipping-basic-call-flows-02.txt+} R. Sparks Expires: [-April-] {+October+} 2003 C. Cunningham dynamicsoft K. Summers Sonus [-October 2002-] {+April 2003+} Session Initiation Protocol Basic 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. 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 Session Initiation Protocol (SIP) call flows. Elements in these call flows include SIP User Agents and Clients, SIP Proxy and Redirect Servers. Scenarios include SIP Registration and SIP session establishment. Call flow diagrams and message details are shown. Conventions used in this document The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [-RFC-2119 [1].-] {+RFC-2119.+} Johnston et al Expires - [-April-] {+October+} 2003 [Page 1] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} Table of Contents 1. Overview.......................................................2 1.1 General Assumptions........................................3 1.2 Legend for Message Flows...................................3 1.3 SIP Protocol Assumptions...................................3 2. SIP Registration...............................................5 2.1 Successful New Registration................................5 2.2 Update of Contact List.....................................7 2.3 Request for Current Contact List...........................9 2.4 Cancellation of Registration..............................11 2.5 Unsuccessful Registration.................................13 3. SIP Session Establishment.....................................15 3.1 Successful Session Establishment..........................15 3.2 Session Establishment Through Two Proxies.................18 3.3 Session with Multiple Proxy [-Authentication................28-] {+Authentication................29+} 3.4 Successful Session with Proxy [-Failure.....................38-] {+Failure.....................40+} 3.5 Session Through a SIP [-ALG.................................47-] {+ALG.................................49+} 3.6 Session via Redirect and Proxy Servers with SDP in [-ACK....55-] {+ACK....57+} 3.7 Session with re-INVITE (IP Address [-Change)................62-] {+Change)................64+} 3.8 Unsuccessful No [-Answer....................................68-] {+Answer....................................70+} 3.9 Unsuccessful [-Busy.........................................76-] {+Busy.........................................78+} 3.10 Unsuccessful No Response from User [-Agent.................81-] {+Agent.................83+} 3.11 Unsuccessful Temporarily [-Unavailable.....................86-] {+Unavailable.....................88+} Security [-Considerations..........................................91 References.......................................................91 Acknowledgments..................................................92-] {+Considerations..........................................93 Normative References.............................................94 Informative References...........................................94 Acknowledgments..................................................94+} Author's [-Addresses...............................................92-] {+Addresses...............................................95+} 1. Overview The call flows shown in this document were developed in the design of a SIP IP communications network. They represent an example minimum set of functionality. It is the hope of the authors that this document will be useful for SIP [-implementors,-] {+implementers,+} designers, and protocol researchers alike and will help further the goal of a standard implementation of RFC [-3261[2].-] {+3261[1].+} These flows represent carefully checked and working group reviewed scenarios of the most basic examples as a companion to the specifications. These call flows are based on the current version 2.0 of SIP in RFC [-3261[2]-] {+3261[i]+} with SDP usage described in RFC [-3264[3].-] {+3264[ii].+} Other RFCs also comprise the SIP standard but are not used in this set of basic call flows. {+Johnston et al Expires û October 2003 [Page 2] SIP Basic Call Flow Examples April 2003+} Call flow examples of SIP interworking with the PSTN through gateways are contained in a companion document, RFC xxxx[4]. [-Johnston et al Expires - April 2002 [Page 2] SIP Basic Call Flow Examples October 2002-] 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 aid in the understanding of the call flow examples. The authentication of SIP User Agents in these example call flows is performed using HTTP Digest as defined in [-[2]-] {+[1]+} and [-[5].-] {+[iii].+} Some 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. These flows show TCP, TLS, and UDP for transport. [-Other-] {+See the discussion in RFC 3261 for details on the+} transport [-schemes could also be used. If UDP is used, care must be taken to avoid packet fragmentation and congestion.-] {+issues for SIP.+} 1.2 Legend for Message Flows Dashed lines (---) represent signaling messages that are mandatory to the call scenario. These messages can be SIP or PSTN signaling. The arrow indicates the direction of message flow. Double dashed lines (===) represent media paths between network elements. Messages with parentheses around their name represent optional messages. Messages are identified in the Figures as F1, F2, etc. This references the message details in the list that follows the Figure. Comments in the message details are shown in the following form: /* Comments. */ 1.3 SIP Protocol Assumptions This document [-is informational only and is NOT NORMATIVE in any sense, in that it-] does not prescribe the flows [-that-] {+precisely as they+} are shown, [-indeed they MUST NOT-] {+but rather the flows illustrate the principles for best practice. They are best practices usages (orderings, syntax, selection of features for the purpose, handling of error) of SIP methods, headers and parameters. IMPORTANT: The exact flows here must not+} be copied {+as is by an implementer+} due to {+specific incorrect characteristics that were introduced into+} the [-reasons described in the next paragraph. On the other hand,-] {+document for convenience and are listed below. To sum up,+} the basic [-call-] flows {+Johnston et al Expires û October 2003 [Page 3] SIP Basic Call Flow Examples April 2003+} represent [-well- reviewed-] {+well-reviewed+} examples of SIP [-usage that-] {+usage, which+} are best common practice according to [-community-] {+IETF+} consensus. For simplicity in reading and editing the document, there are a number of differences between some of the examples and actual SIP [-Johnston et al Expires - April 2002 [Page 3] SIP Basic Call Flow Examples October 2002-] messages. For example, the HTTP Digest responses are not actual MD5 encodings. Call-IDs are often repeated, and CSeq counts often begin at 1. Header fields are usually shown in the same order. Usually only the minimum required header field set is shown, others that would normally be present such as Accept, Supported, Allow, etc are not shown. Actors: Element Display Name URI IP Address ------- ------------ --- ---------- User Agent [-BigGuy UserA@atlanta.com 192.0.2.101-] {+Alice alice@atlanta.example.com 192.0.2.10+} User Agent [-LittleGuy UserB@biloxi.com-] {+Bob bob@biloxi.example.com+} 192.0.2.201 User Agent [-UserB@chicago.com-] {+bob@chicago.example.com+} 192.0.2.100 Proxy Server [-ss1.atlanta.com-] {+ss1.atlanta.example.com+} 192.0.2.111 Proxy/Registrar [-ss2.biloxi.com-] {+ss2.biloxi.example.com+} 192.0.2.222 Proxy Server [-ss3.chicago.com-] {+ss3.chicago.example.com+} 192.0.2.233 ALG [-alg1.atlanta.com-] {+alg1.atlanta.example.com+} 192.0.2.128 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 4] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} 2. SIP Registration Registration binds a particular device Contact URI with a SIP user Address of Record (AOR). 2.1 Successful New Registration [-User B-] {+Bob+} SIP Server | | | REGISTER F1 | |------------------------------>| | 401 Unauthorized F2 | |<------------------------------| | REGISTER F3 | |------------------------------>| | 200 OK F4 | |<------------------------------| | | [-User B-] {+Bob+} sends a SIP REGISTER request to the SIP server. The request includes the user's contact list. This flow shows the use of HTTP Digest for authentication using TLS transport. TLS transport is used due to the lack of integrity protection in HTTP Digest and the danger of registration hijacking without it, as described in RFC 3261 [-[2].-] {+[1].+} The SIP server provides a challenge to [-User B. User B-] {+Bob. Bob+} enters her/his valid user ID and password. [-User B's-] {+Bob'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-] {+Bob's+} SIP client. The response includes the user's current contact list in Contact headers. The format of the authentication shown is HTTP digest. It is assumed that [-User B-] {+Bob+} has not previously registered with this Server. Message Details F1 REGISTER [-B-] {+Bob+} -> SIP Server REGISTER [-sip:ss2.biloxi.com-] {+sips:ss2.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} Max-Forwards: 70 From: [-LittleGuy ;tag=a73kszlfl-] {+Bob ;tag=a73kszlfl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 1 REGISTER Contact: [--] {++} Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 5] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} Content-Length: 0 F2 401 Unauthorized SIP Server -> [-User B-] {+Bob+} SIP/2.0 401 Unauthorized Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} ;received=192.0.2.201 From: [-LittleGuy ;tag=a73kszlfl-] {+Bob ;tag=a73kszlfl+} To: [-LittleGuy ;tag=1410948204-] {+Bob ;tag=1410948204+} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 1 REGISTER WWW-Authenticate: Digest [-realm="atlanta.com",-] {+realm="atlanta.example.com",+} qop="auth", nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F3 REGISTER [-B-] {+Bob+} -> SIP Server REGISTER [-sip:ss2.biloxi.com-] {+sips:ss2.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} Max-Forwards: 70 From: [-LittleGuy ;tag=ja743ks76zlflH-] {+Bob ;tag=ja743ks76zlflH+} To: [-LittleGuy -] {+Bob +} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 2 REGISTER Contact: [--] {++} Authorization: Digest [-username="UserB", realm="atlanta.com"-] {+username="bob", realm="atlanta.example.com"+} nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="", [-uri="sip:ss2.biloxi.com",-] {+uri="sips:ss2.biloxi.example.com",+} response="dfe56131d1958046689d83306477ecc" Content-Length: 0 F4 200 OK SIP Server -> [-B-] {+Bob+} SIP/2.0 200 OK Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} ;received=192.0.2.201 From: [-LittleGuy ;tag=ja743ks76zlflH-] {+Bob ;tag=ja743ks76zlflH+} To: [-LittleGuy ;tag=37GkEhwl6-] {+Bob ;tag=37GkEhwl6+} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 2 REGISTER Contact: [-;expires=3600-] {+;expires=3600+} Content-Length: 0 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 6] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} 2.2 Update of Contact List [-User B-] {+Bob+} SIP Server | | | REGISTER F1 | |------------------------------>| | 200 OK F2 | |<------------------------------| | | [-User B-] {+Bob+} wishes to update the list of addresses where the SIP server will redirect or forward INVITE requests. [-User B-] {+Bob+} sends a SIP REGISTER request to the SIP server. [-User B's-] {+Bob'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-] {+Bob's+} SIP client. The response includes the user's current contact list in Contact headers. Message Details F1 REGISTER [-B-] {+Bob+} -> SIP Server REGISTER [-sip:ss2.biloxi.com-] {+sips:ss2.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} Max-Forwards: 70 From: [-LittleGuy ;tag=a73kszlfl-] {+Bob ;tag=a73kszlfl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 1 REGISTER Contact: [-mailto:UserB@biloxi.com-] {+mailto:bob@biloxi.example.com+} Authorization: Digest [-username="UserB", realm="atlanta.com",-] {+username="bob", realm="atlanta.example.com",+} qop="auth", nonce="1cec4341ae6cbe5a359ea9c8e88df84f", opaque="", [-uri="sip:ss2.biloxi.com",-] {+uri="sips:ss2.biloxi.example.com",+} response="71ba27c64bd01de719686aa4590d5824" Content-Length: 0 F2 200 OK SIP Server -> [-B-] {+Bob+} SIP/2.0 200 OK Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 7] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} ;received=192.0.2.201 From: [-LittleGuy ;tag=a73kszlfl-] {+Bob ;tag=a73kszlfl+} To: [-LittleGuy ;tag=34095828jh-] {+Bob ;tag=34095828jh+} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 1 REGISTER Contact: [-;expires=3600-] {+;expires=3600+} Contact: [-;expires=4294967295-] {+;expires=4294967295+} Content-Length: 0 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 8] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} 2.3 Request for Current Contact List [-User B-] {+Bob+} SIP Server | | | REGISTER F1 | |------------------------------>| | 200 OK F2 | |<------------------------------| | | [-User B-] {+Bob+} 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-] {+Bob+} -> SIP Server REGISTER [-sip:ss2.biloxi.com-] {+sips:ss2.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} Max-Forwards: 70 From: [-LittleGuy ;tag=a73kszlfl-] {+Bob ;tag=a73kszlfl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 1 REGISTER Authorization: Digest [-username="UserB", realm="atlanta.com",-] {+username="bob", realm="atlanta.example.com",+} nonce="df84f1cec4341ae6cbe5ap359a9c8e88", opaque="", [-uri="sip:ss2.biloxi.com",-] {+uri="sips:ss2.biloxi.example.com",+} response="aa7ab4678258377c6f7d4be6087e2f60" Content-Length: 0 F2 200 OK SIP Server -> [-B-] {+Bob+} SIP/2.0 200 OK Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} ;received=192.0.2.201 From: [-LittleGuy ;tag=a73kszlfl-] {+Bob ;tag=a73kszlfl+} To: [-LittleGuy ;tag=jqoiweu75-] {+Bob ;tag=jqoiweu75+} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 1 REGISTER Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 9] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} Contact: [-;expires=3600-] {+;expires=3600+} Contact: [-;expires=4294967295-] {+;expires=4294967295+} Content-Length: 0 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 10] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} 2.4 Cancellation of Registration [-User B-] {+Bob+} SIP Server | | | REGISTER F1 | |------------------------------>| | 200 OK F2 | |<------------------------------| | | [-User B-] {+Bob+} wishes to cancel their registration with the SIP server. [-User B-] {+Bob+} 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-] {+Bob's+} SIP client. Message Details F1 REGISTER [-B-] {+Bob+} -> SIP Server REGISTER [-sip:ss2.biloxi.com-] {+sips:ss2.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} Max-Forwards: 70 From: [-LittleGuy ;tag=a73kszlfl-] {+Bob ;tag=a73kszlfl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 1 REGISTER Expires: 0 Contact: * Authorization: Digest [-username="UserB", realm="atlanta.com",-] {+username="bob", realm="atlanta.example.com",+} nonce="88df84f1cac4341aea9c8ee6cbe5a359", opaque="", [-uri="sip:ss2.biloxi.com",-] {+uri="sips:ss2.biloxi.example.com",+} response="ff0437c51696f9a76244f0cf1dbabbea" Content-Length: 0 F2 200 OK SIP Server -> [-B-] {+Bob+} SIP/2.0 200 OK Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} ;received=192.0.2.201 From: [-LittleGuy ;tag=a73kszlfl-] {+Bob ;tag=a73kszlfl+} To: [-LittleGuy ;tag=1418nmdsrf-] {+Bob ;tag=1418nmdsrf+} Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 11] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 1 REGISTER Content-Length: 0 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 12] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} 2.5 Unsuccessful Registration [-User B-] {+Bob+} SIP Server | | | REGISTER F1 | |------------------------------>| | 401 Unauthorized F2 | |<------------------------------| | REGISTER F3 | |------------------------------>| | 401 Unauthorized F4 | |<------------------------------| | | [-User B-] {+Bob+} sends a SIP REGISTER request to the SIP Server. The SIP server provides a challenge to [-User B. User B-] {+Bob. Bob+} enters her/his user ID and password. [-User B's-] {+Bob'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-] {+Bob's+} SIP client. Message Details F1 REGISTER [-B-] {+Bob+} -> SIP Server REGISTER [-sip:ss2.biloxi.com-] {+sips:ss2.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} Max-Forwards: 70 From: [-LittleGuy ;tag=a73kszlfl-] {+Bob ;tag=a73kszlfl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 1 REGISTER Contact: [--] {++} Content-Length: 0 F2 Unauthorized SIP Server -> [-User B-] {+Bob+} SIP/2.0 401 Unauthorized Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} ;received=192.0.2.201 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 13] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} From: [-LittleGuy ;tag=a73kszlfl-] {+Bob ;tag=a73kszlfl+} To: [-LittleGuy ;tag=1410948204-] {+Bob ;tag=1410948204+} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 1 REGISTER WWW-Authenticate: Digest [-realm="atlanta.com",-] {+realm="atlanta.example.com",+} qop="auth", nonce="f1cec4341ae6ca9c8e88df84be55a359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F3 REGISTER [-B-] {+Bob+} -> SIP Server REGISTER [-sip:ss2.biloxi.com-] {+sips:ss2.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} Max-Forwards: 70 From: [-LittleGuy ;tag=JueHGuidj28dfga-] {+Bob ;tag=JueHGuidj28dfga+} To: [-LittleGuy -] {+Bob +} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 2 REGISTER Contact: [--] {++} Authorization: Digest [-username="UserB", realm="atlanta.com",-] {+username="bob", realm="atlanta.example.com",+} nonce="f1cec4341ae6ca9c8e88df84be55a359", opaque="", [-uri="sip:ss2.biloxi.com",-] {+uri="sips:ss2.biloxi.example.com",+} response="61f8470ceb87d7ebf508220214ed438b" Content-Length: 0 /* The response above encodes the incorrect password */ F4 401 Unauthorized SIP Server -> [-User B-] {+Bob+} SIP/2.0 401 Unauthorized Via: SIP/2.0/TLS [-client.biloxi.com:5061;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5061;branch=z9hG4bKnashds7+} ;received=192.0.2.201 From: [-LittleGuy ;tag=JueHGuidj28dfga-] {+Bob ;tag=JueHGuidj28dfga+} To: [-LittleGuy ;tag=1410948204-] {+Bob ;tag=1410948204+} Call-ID: [-1j9FpLxk3uxtm8tn@biloxi.com-] {+1j9FpLxk3uxtm8tn@biloxi.example.com+} CSeq: 2 REGISTER WWW-Authenticate: Digest [-realm="atlanta.com",-] {+realm="atlanta.example.com",+} qop="auth", nonce="84f1c1ae6cbe5ua9c8e88dfa3ecm3459", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 14] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} 3. SIP Session Establishment This section details session establishment between two SIP User Agents (UAs): [-User A-] {+Alice+} and [-User B. User A (LittleGuy sip:UserA@atlanta.com)-] {+Bob. Alice (sip:alice@atlanta.example.com)+} and [-User B (BigGuy sip:UserB@biloxi.com)-] {+Bob (sip:bob@biloxi.example.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. HTTP Digest authentication is used by Proxy Servers to authenticate the caller [-User A.-] {+Alice.+} It is assumed that [-User B-] {+Bob+} has registered with Proxy Server Proxy 2 as per Section 2 to be able to receive the calls via the Proxy. 3.1 Successful Session Establishment [-User A User B-] {+Alice Bob+} | | | INVITE F1 | |----------------------->| | 180 Ringing F2 | |<-----------------------| | | | 200 OK F3 | |<-----------------------| | ACK F4 | |----------------------->| | Both Way RTP Media | |<======================>| | | | BYE F5 | |<-----------------------| | 200 OK F6 | |----------------------->| | | In this scenario, [-User A-] {+Alice+} completes a call to [-User B-] {+Bob+} directly. Message Details F1 INVITE [-User A-] {+Alice+} -> [-User B-] {+Bob+} INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} Max-Forwards: 70 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 15] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 180 Ringing [-User B-] {+Bob+} -> [-User A-] {+Alice+} SIP/2.0 180 Ringing Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=8321234356-] {+Bob ;tag=8321234356+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Content-Length: 0 F3 200 OK [-User B-] {+Bob+} -> [-User A-] {+Alice+} SIP/2.0 200 OK Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=8321234356-] {+Bob ;tag=8321234356+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-141-] {+147+} v=0 [-o=UserB-] {+o=bob+} 2890844527 2890844527 IN IP4 [-client.biloxi.com-] {+client.biloxi.example.com+} s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 16] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} a=rtpmap:0 PCMU/8000 F4 ACK [-User A-] {+Alice+} -> [-User B-] {+Bob+} ACK [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bd5-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bd5+} Max-Forwards: 70 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=8321234356-] {+Bob ;tag=8321234356+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 ACK Content-Length: 0 /* RTP streams are established between [-A-] {+Alice+} and [-B-] {+Bob+} */ /* [-User B-] {+Bob+} Hangs Up with [-User A.-] {+Alice.+} Note that the CSeq is NOT 2, since [-User A-] {+Alice+} and [-User B-] {+Bob+} maintain their own independent CSeq counts. (The INVITE was request 1 generated by [-User A,-] {+Alice,+} and the BYE is request 1 generated by [-User B)-] {+Bob)+} */ F5 BYE [-User B-] {+Bob+} -> [-User A-] {+Alice+} BYE [-sip:UserA@client.atlanta.com-] {+sip:alice@client.atlanta.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-client.biloxi.com:5060;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} Max-Forwards: 70 From: [-LittleGuy ;tag=8321234356-] {+Bob ;tag=8321234356+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 F6 200 OK [-User A-] {+Alice+} -> [-User B-] {+Bob+} SIP/2.0 200 OK Via: SIP/2.0/TCP [-client.biloxi.com:5060;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} ;received=192.0.2.201 From: [-LittleGuy ;tag=8321234356-] {+Bob ;tag=8321234356+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 17] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} 3.2 Session Establishment Through Two Proxies [-User A-] {+Alice+} Proxy 1 Proxy 2 [-User B-] {+Bob+} | | | | | 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-] {+Alice+} completes a call to [-User B-] {+Bob+} using two proxies Proxy 1 and Proxy 2. The initial INVITE (F1) contains a pre-loaded Route header with the address of Proxy 1 (Proxy 1 is configured as a default outbound proxy for [-User A).-] {+Alice).+} The request 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-] {+Bob+} disconnects by initiating a BYE message. Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 18] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} 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. Message Details F1 INVITE [-A-] {+Alice+} -> Proxy 1 INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74b43-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b43+} Max-Forwards: 70 Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 challenges [-User A-] {+Alice+} for authentication */ F2 407 Proxy Authorization Required Proxy 1 -> [-User A-] {+Alice+} SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74b43-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b43+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=3flal12sf-] {+Bob ;tag=3flal12sf+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 INVITE Proxy-Authenticate: Digest [-realm="atlanta.com",-] {+realm="atlanta.example.com",+} qop="auth", nonce="f84f1cec41e6cbe5aea9c8e88d359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 19] SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} F3 ACK [-A-] {+Alice+} -> Proxy 1 ACK [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74b43-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b43+} Max-Forwards: 70 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=3flal12sf-] {+Bob ;tag=3flal12sf+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 ACK Content-Length: 0 /* [-User A-] {+Alice+} responds be re-sending the INVITE with authentication credentials in it. */ F4 INVITE [-A-] {+Alice+} -> Proxy 1 INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} Max-Forwards: 70 Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {++} Proxy-Authorization: Digest [-username="UserA", realm="atlanta.com",-] {+username="alice", realm="atlanta.example.com",+} nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", [-uri="sip:UserB@biloxi.com",-] {+uri="sip:bob@biloxi.example.com",+} response="42ce3cef44b22f50c6a6071bc8" Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 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-] {+Alice+} prepares to receive data on port 49172 from the network. */ F5 INVITE Proxy 1 -> Proxy 2 [-INVITE sip:UserB@biloxi.com SIP/2.0-] Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 20] SIP Basic Call Flow Examples [-October 2002-] {+April 2003 INVITE sip:bob@biloxi.example.com SIP/2.0+} Via: SIP/2.0/TCP [-ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1+} Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Max-Forwards: 69 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F6 100 Trying Proxy 1 -> [-User A-] {+Alice+} SIP/2.0 100 Trying Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 2 INVITE Content-Length: 0 F7 INVITE Proxy 2 -> [-B-] {+Bob+} INVITE [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} Via: SIP/2.0/TCP [-ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1+} ;received=192.0.2.111 Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Max-Forwards: 68 Record-Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy Call-ID: 3848276298220188511@atlanta.com CSeq: 2 INVITE Contact: -] {+Bob +} Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page 21] SIP Basic Call Flow Examples [-October 2002-] {+April 2003 Call-ID: 3848276298220188511@atlanta.example.com CSeq: 2 INVITE Contact: +} Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 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/TCP [-ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1+} ;received=192.0.2.111 Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 2 INVITE Content-Length: 0 F9 180 Ringing [-B-] {+Bob+} -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/TCP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} ;received=192.0.2.222 Via: SIP/2.0/TCP [-ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1+} ;received=192.0.2.111 Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} Contact: [--] {++} CSeq: 2 INVITE Content-Length: 0 {+Johnston et al Expires û October 2003 [Page 22] SIP Basic Call Flow Examples April 2003+} F10 180 Ringing Proxy 2 -> Proxy 1 SIP/2.0 180 Ringing Via: SIP/2.0/TCP [-ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1+} ;received=192.0.2.111 [-Johnston et al Expires - April 2002 [Page 22] SIP Basic Call Flow Examples October 2002-] Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} Contact: [--] {++} CSeq: 2 INVITE Content-Length: 0 F11 180 Ringing Proxy 1 -> [-A-] {+Alice+} SIP/2.0 180 Ringing Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} Contact: [--] {++} CSeq: 2 INVITE Content-Length: 0 F12 200 OK [-B-] {+Bob+} -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/TCP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} ;received=192.0.2.222 Via: SIP/2.0/TCP [-ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1+} ;received=192.0.2.111 Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {+ Johnston et al Expires û October 2003 [Page 23] SIP Basic Call Flow Examples April 2003+} Content-Type: application/sdp Content-Length: [-141-] {+147+} v=0 [-o=UserB-] {+o=bob+} 2890844527 2890844527 IN IP4 [-client.biloxi.com-] {+client.biloxi.example.com+} s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 [-Johnston et al Expires - April 2002 [Page 23] SIP Basic Call Flow Examples October 2002-] a=rtpmap:0 PCMU/8000 F13 200 OK Proxy 2 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/TCP [-ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1+} ;received=192.0.2.111 Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-141-] {+147+} v=0 [-o=UserB-] {+o=bob+} 2890844527 2890844527 IN IP4 [-client.biloxi.com-] {+client.biloxi.example.com+} s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F14 200 OK Proxy 1 -> [-A-] {+Alice+} SIP/2.0 200 OK Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 2 INVITE {+Johnston et al Expires û October 2003 [Page 24] SIP Basic Call Flow Examples April 2003+} Contact: [--] {++} Content-Type: application/sdp Content-Length: [-141-] {+147+} v=0 [-o=UserB-] {+o=bob+} 2890844527 2890844527 IN IP4 [-client.biloxi.com-] {+client.biloxi.example.com+} s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 [-Johnston et al Expires - April 2002 [Page 24] SIP Basic Call Flow Examples October 2002-] F15 ACK [-A-] {+Alice+} -> Proxy 1 ACK [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74b76-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b76+} Max-Forwards: 70 Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 2 ACK Content-Length: 0 F16 ACK Proxy 1 -> Proxy 2 ACK [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1+} Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74b76-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b76+} ;received=192.0.2.101 Max-Forwards: 69 Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 2 ACK Content-Length: 0 F17 ACK Proxy 2 -> [-B-] {+Bob+} ACK [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} Via: SIP/2.0/TCP [-ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1+} ;received=192.0.2.111 {+Johnston et al Expires û October 2003 [Page 25] SIP Basic Call Flow Examples April 2003+} Via: SIP/2.0/TCP [-client.atlanta.com:5060;branch=z9hG4bK74b76-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b76+} ;received=192.0.2.101 Max-Forwards: 68 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 2 ACK Content-Length: 0 /* RTP streams are established between [-A-] {+Alice+} and [-B-] {+Bob+} */ /* [-User B-] {+Bob+} Hangs Up with [-User A.-] {+Alice.+} */ [-Johnston et al Expires - April 2002 [Page 25] SIP Basic Call Flow Examples October 2002-] /* Again, note that the CSeq is NOT 3. [-User A-] {+Alice+} and [-User B-] {+Bob+} maintain their own separate CSeq counts */ F18 BYE [-User B-] {+Bob+} -> Proxy 2 BYE [-sip:UserA@client.atlanta.com-] {+sip:alice@client.atlanta.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-client.biloxi.com:5060;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} Max-Forwards: 70 Route: [-, -] {+, +} From: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 F19 BYE Proxy 2 -> Proxy 1 BYE [-sip:UserA@client.atlanta.com-] {+sip:alice@client.atlanta.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} Via: SIP/2.0/TCP [-client.biloxi.com:5060;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} ;received=192.0.2.201 Max-Forwards: 69 Route: [--] {++} From: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 F20 BYE Proxy 1 -> [-User A-] {+Alice Johnston et al Expires û October 2003 [Page 26] SIP Basic Call Flow Examples April 2003+} BYE [-sip:UserA@client.atlanta.com-] {+sip:alice@client.atlanta.example.com+} SIP/2.0 Via: SIP/2.0/TCP [-ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1+} Via: SIP/2.0/TCP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} ;received=192.0.2.222 Via: SIP/2.0/TCP [-client.biloxi.com:5060;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} ;received=192.0.2.201 Max-Forwards: 68 From: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 F21 200 OK [-User A-] {+Alice+} -> Proxy 1 [-Johnston et al Expires - April 2002 [Page 26] SIP Basic Call Flow Examples October 2002-] SIP/2.0 200 OK Via: SIP/2.0/TCP [-ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1+} ;received=192.0.2.111 Via: SIP/2.0/TCP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} ;received=192.0.2.222 Via: SIP/2.0/TCP [-client.biloxi.com:5060;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} ;received=192.0.2.201 From: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 F22 200 OK Proxy 1 -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/TCP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} ;received=192.0.2.222 Via: SIP/2.0/TCP [-client.biloxi.com:5060;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} ;received=192.0.2.101 From: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 F23 200 OK Proxy 2 -> [-User B-] {+Bob Johnston et al Expires û October 2003 [Page 27] SIP Basic Call Flow Examples April 2003+} SIP/2.0 200 OK Via: SIP/2.0/TCP [-client.biloxi.com:5060;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} ;received=192.0.2.201 From: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Call-ID: [-3848276298220188511@atlanta.com-] {+3848276298220188511@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-27]-] {+28]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} 3.3 Session with Multiple Proxy Authentication [-User A-] {+Alice+} Proxy 1 Proxy 2 [-User B-] {+Bob+} | | | | | 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-] {+Alice+} completes a call to [-User B-] {+Bob+} using two proxies Proxy 1 and Proxy 2. [-User A-] {+Alice+} has valid credentials in both domains. Since 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 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-28]-] {+29]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} the call proceeds after Proxy 2 challenges and receives valid credentials. The call terminates when [-User B-] {+Bob+} 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. Message Details F1 INVITE [-A-] {+Alice+} -> Proxy 1 INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b03-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b03+} Max-Forwards: 70 Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 challenges [-User A-] {+Alice+} for authentication */ F2 407 Proxy Authorization Required Proxy 1 -> [-User A-] {+Alice+} SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b03-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b03+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=876321-] {+Bob ;tag=876321+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 INVITE Proxy-Authenticate: Digest [-realm="atlanta.com",-] {+realm="atlanta.example.com",+} qop="auth", nonce="wf84f1cczx41ae6cbeaea9ce88d359", Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-29]-] {+30]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F3 ACK [-A-] {+Alice+} -> Proxy 1 ACK [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Max-Forwards: 70 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b03-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b03+} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=876321-] {+Bob ;tag=876321+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 ACK Content-Length: 0 /* [-User A-] {+Alice+} 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-] {+Alice+} -> Proxy 1 INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b21-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b21+} Max-Forwards: 70 Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {++} Proxy-Authorization: Digest [-username="UserA", realm="atlanta.com",-] {+username="alice", realm="atlanta.example.com",+} nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", [-uri="sip:UserB@biloxi.com",-] {+uri="sip:bob@biloxi.example.com",+} response="42ce3cef44b22f50c6a6071bc8" Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 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 {+Johnston et al Expires û October 2003 [Page 31] SIP Basic Call Flow Examples April 2003+} 2. [-Proxy 1 is assumed to have been authenticated by Proxy 2 using IPSec.-] Client for [-A-] {+Alice+} prepares to receive data on port 49172 from the [-Johnston et al Expires - April 2002 [Page 30] SIP Basic Call Flow Examples October 2002-] network. */ F5 100 Trying Proxy 1 -> [-User A-] {+Alice+} SIP/2.0 100 Trying Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b21-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b21+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 2 INVITE Content-Length: 0 F6 INVITE Proxy 1 -> Proxy 2 INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-ss1.atlanta.com:5060;branch=z9hG4bK230f2.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1+} Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b21-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b21+} ;received=192.0.2.101 Max-Forwards: 69 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 2 challenges [-User A-] {+Alice+} for authentication */ F7 407 Proxy Authorization Required Proxy 2 -> Proxy 1 SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP [-ss1.atlanta.com:5060;branch=z9hG4bK230f2.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1+} ;received=192.0.2.111 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b21-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b21+} ;received=192.0.2.101 [-From: BigGuy ;tag=9fxced76sl-] Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-31]-] {+32]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003 From: Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=838209-] {+Bob ;tag=838209+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 2 INVITE Proxy-Authenticate: Digest [-realm="biloxi.com",-] {+realm="biloxi.example.com",+} qop="auth", nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F8 ACK Proxy 1 -> Proxy 2 ACK [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b21-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b21+} Max-Forwards: 70 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=838209-] {+Bob ;tag=838209+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 2 ACK Content-Length: 0 /* Proxy 1 forwards the challenge to [-User A-] {+Alice+} for authentication from Proxy 2 */ F9 407 Proxy Authorization Required Proxy 1 -> [-User A-] {+Alice+} SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b21-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b21+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=838209-] {+Bob ;tag=838209+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 2 INVITE Proxy-Authenticate: Digest [-realm="biloxi.com",-] {+realm="biloxi.example.com",+} qop="auth", nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F10 ACK [-User A-] {+Alice+} -> Proxy 1 ACK [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b21-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b21+} Max-Forwards: 70 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=838209-] {+Bob ;tag=838209+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 2 ACK [-Content-Length: 0-] Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-32]-] {+33]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003 Proxy-Authorization: Digest username="alice", realm="atlanta.example.com", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", uri="sip:bob@biloxi.example.com", response="42ce3cef44b22f50c6a6071bc8" Content-Length: 0+} /* [-User A-] {+Alice+} responds be re-sending the INVITE with authentication credentials for Proxy 1 AND Proxy 2. */ F11 INVITE [-A-] {+Alice+} -> Proxy 1 INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} Max-Forwards: 70 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 3 INVITE Contact: [--] {++} Proxy-Authorization: Digest [-username="UserA", realm="atlanta.com",-] {+username="alice", realm="atlanta.example.com",+} nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", [-uri="sip:UserB@biloxi.com",-] {+uri="sip:bob@biloxi.example.com",+} response="42ce3cef44b22f50c6a6071bc8" Proxy-Authorization: Digest [-username="UserA", realm="biloxi.com",-] {+username="alice", realm="biloxi.example.com",+} nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", [-uri="sip:UserB@biloxi.com",-] {+uri="sip:bob@biloxi.example.com",+} response="f44ab22f150c6a56071bce8" Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 finds its credentials and authorizes [-User A,-] {+Alice,+} forwarding the INVITE to Proxy. */ F12 100 Trying Proxy 1 -> [-User A-] {+Alice+} SIP/2.0 100 Trying {+Johnston et al Expires û October 2003 [Page 34] SIP Basic Call Flow Examples April 2003+} Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 3 INVITE Content-Length: 0 [-Johnston et al Expires - April 2002 [Page 33] SIP Basic Call Flow Examples October 2002-] F13 INVITE Proxy 1 -> Proxy 2 INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-ss1.atlanta.com:5060;branch=z9hG4bK230f2.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1+} Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Max-Forwards: 69 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 3 INVITE Contact: [--] {++} Proxy-Authorization: Digest [-username="UserA", realm="biloxi.com",-] {+username="alice", realm="biloxi.example.com",+} nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", [-uri="sip:UserB@biloxi.com",-] {+uri="sip:bob@biloxi.example.com",+} response="f44ab22f150c6a56071bce8" Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 2 finds its credentials and authorizes [-User A,-] {+Alice,+} forwarding the INVITE to [-User B.-] {+Bob.+} */ F14 100 Trying Proxy 2 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP [-ss1.atlanta.com:5060;branch=z9hG4bK230f2.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1+} ;received=192.0.2.111 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl Johnston et al Expires û October 2003 [Page 35] SIP Basic Call Flow Examples April 2003+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 3 INVITE Content-Length: 0 F15 INVITE Proxy 2 -> [-User B-] {+Bob+} INVITE [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-ss2.biloxi.com:5060;branch=z9hG4bK31972.1 Johnston et al Expires - April 2002 [Page 34] SIP Basic Call Flow Examples October 2002-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1+} Via: SIP/2.0/UDP [-ss1.atlanta.com:5060;branch=z9hG4bK230f2.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1+} ;received=192.0.2.111 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Max-Forwards: 68 Record-Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 3 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* [-User B-] {+Bob+} answers the call immediately */ F16 200 OK [-User B-] {+Bob+} -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP [-ss2.biloxi.com:5060;branch=z9hG4bK31972.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1+} ;received=192.0.2.222 Via: SIP/2.0/UDP [-ss1.atlanta.com:5060;branch=z9hG4bK230f2.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1+} ;received=192.0.2.111 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=9103874 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com-] {+Bob ;tag=9103874 Johnston et al Expires û October 2003 [Page 36] SIP Basic Call Flow Examples April 2003 Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 3 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-141-] {+147+} v=0 [-o=UserB-] {+o=bob+} 2890844527 2890844527 IN IP4 [-client.biloxi.com-] {+client.biloxi.example.com+} s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 [-Johnston et al Expires - April 2002 [Page 35] SIP Basic Call Flow Examples October 2002-] a=rtpmap:0 PCMU/8000 F17 200 OK Proxy 2 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/UDP [-ss1.atlanta.com:5060;branch=z9hG4bK230f2.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1+} ;received=192.0.2.111 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=9103874-] {+Bob ;tag=9103874+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 3 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-141-] {+147+} v=0 [-o=UserB-] {+o=bob+} 2890844527 2890844527 IN IP4 [-client.biloxi.com-] {+client.biloxi.example.com+} s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F18 200 OK Proxy 1 -> [-User A-] {+Alice+} SIP/2.0 200 OK Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl Johnston et al Expires û October 2003 [Page 37] SIP Basic Call Flow Examples April 2003+} To: [-LittleGuy ;tag=9103874-] {+Bob ;tag=9103874+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 3 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-141-] {+147+} v=0 [-o=UserB-] {+o=bob+} 2890844527 2890844527 IN IP4 [-client.biloxi.com-] {+client.biloxi.example.com+} s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 [-Johnston et al Expires - April 2002 [Page 36] SIP Basic Call Flow Examples October 2002-] F19 ACK [-User A-] {+Alice+} -> Proxy 1 ACK [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b44-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b44+} Max-Forwards: 70 Route: [-, -] {+, +} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=9103874-] {+Bob ;tag=9103874+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 3 ACK {+Proxy-Authorization: Digest username="alice", realm="atlanta.example.com", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", uri="sip:bob@biloxi.example.com", response="42ce3cef44b22f50c6a6071bc8" Proxy-Authorization: Digest username="alice", realm="biloxi.example.com", nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", uri="sip:bob@biloxi.example.com", response="f44ab22f150c6a56071bce8"+} Content-Length: 0 F20 ACK Proxy 1 -> Proxy 2 ACK [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-ss1.atlanta.com:5060;branch=z9hG4bK230f2.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1+} Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b44-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b44+} ;received=192.0.2.101 Max-Forwards: 69 Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=9103874-] {+Bob ;tag=9103874 Johnston et al Expires û October 2003 [Page 38] SIP Basic Call Flow Examples April 2003+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 3 ACK Contact: [--] {+ Proxy-Authorization: Digest username="alice", realm="biloxi.example.com", nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", uri="sip:bob@biloxi.example.com", response="f44ab22f150c6a56071bce8"+} Content-Length: 0 F21 ACK Proxy 2 -> [-User A-] {+Bob+} ACK [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-ss2.biloxi.com:5060;branch=z9hG4bK31972.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1+} Via: SIP/2.0/UDP [-ss1.atlanta.com:5060;branch=z9hG4bK230f2.1-] {+ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1+} ;received=192.0.2.111 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b44-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b44+} ;received=192.0.2.101 Max-Forwards: 68 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=9103874-] {+Bob ;tag=9103874+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 3 ACK Contact: [--] {++} Content-Length: 0 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-37]-] {+39]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} 3.4 Successful Session with Proxy Failure [-User A-] {+Alice+} Proxy 1 Proxy 2 [-User B-] {+Bob+} | | | | | INVITE F1 | | | |--------------->| | | | INVITE F2 | | | |--------------->| | | | INVITE F3 | | | |--------------->| | | | INVITE F4 | | | |--------------->| | | | INVITE F5 | | | |--------------->| | | | INVITE F6 | | | |--------------->| | | | INVITE F7 | | | |--------------->| | | | INVITE F8 | | |-------------------------------->| | | 407 F9 | | |<--------------------------------| | | ACK F10 | | |-------------------------------->| | | INVITE F11 | | |-------------------------------->| INVITE F12 | | 100 F13 |--------------->| |<--------------------------------| | | | 180 F14 | | 180 F15 |<---------------| |<--------------------------------| | | | 200 F16 | | 200 F17 |<---------------| |<--------------------------------| | | ACK F18 | | |-------------------------------->| ACK F19 | | |--------------->| | Both Way RTP Media | |<================================================>| | | BYE F20 | | BYE F21 |<---------------| |<--------------------------------| | | 200 F22 | | |-------------------------------->| 200 F23 | | |--------------->| | | | Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-38]-] {+40]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} In this scenario, [-User A-] {+Alice+} completes a call to [-User B-] {+Bob+} via a Proxy Server. [-User A-] {+Alice+} 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). [-User A-] {+Alice+} has valid credentials for both domains. Proxy 1 is out of service and does not respond to INVITEs (it is reachable, but unresponsive). [-User A-] {+Alice+} then completes the call to [-User B-] {+Bob+} using Proxy 2. Message Details F1 INVITE [-A-] {+Alice+} -> Proxy 1 INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK465b6d-] {+client.atlanta.example.com:5060;branch=z9hG4bK465b6d+} Max-Forwards: 70 Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 INVITE [-A-] {+Alice+} -> Proxy 1 Same as Message F1 F3 INVITE [-A-] {+Alice+} -> Proxy 1 Same as Message F1 F4 INVITE [-A-] {+Alice+} -> Proxy 1 Same as Message F1 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-39]-] {+41]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} F5 INVITE [-A-] {+Alice+} -> Proxy 1 Same as Message F1 F6 INVITE [-A-] {+Alice+} -> Proxy 1 Same as Message F1 F7 INVITE [-A-] {+Alice+} -> Proxy 1 Same as Message F1 /* [-User A-] {+Alice+} gives up on the unresponsive proxy */ F8 INVITE [-A-] {+Alice+} -> Proxy 2 INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b8a-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b8a+} Max-Forwards: 70 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 2 challenges [-User A-] {+Alice+} for authentication */ F9 407 Proxy Authorization Required Proxy 2 -> [-User A-] {+Alice+} SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b8a-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b8a+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-40]-] {+42]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} To: [-LittleGuy ;tag=2421452-] {+Bob ;tag=2421452+} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 1 INVITE Proxy-Authenticate: Digest [-realm="biloxi.com",-] {+realm="biloxi.example.com",+} qop="auth", nonce="1ae6cbe5ea9c8e8df84fqnlec434a359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F10 ACK [-A-] {+Alice+} -> Proxy 2 ACK [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b8a-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b8a+} Max-Forwards: 70 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=2421452-] {+Bob ;tag=2421452+} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 1 ACK Content-Length: 0 /* [-User A-] {+Alice+} responds be re-sending the INVITE with authentication credentials in it. */ F11 INVITE [-A-] {+Alice+} -> Proxy 2 INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} Max-Forwards: 70 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {++} Proxy-Authorization: Digest [-username="UserA", realm="biloxi.com",-] {+username="alice", realm="biloxi.example.com",+} nonce="1ae6cbe5ea9c8e8df84fqnlec434a359", opaque="", [-uri="sip:UserB@biloxi.com",-] {+uri="sip:bob@biloxi.example.com",+} response="8a880c919d1a52f20a1593e228adf599" Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-41]-] {+43]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} /* Proxy 2 accepts the credentials and forwards the INVITE to [-User B.-] {+Bob.+} Client for [-A-] {+Alice+} prepares to receive data on port 49172 from the network. */ F12 INVITE Proxy 2 -> [-B-] {+Bob+} INVITE [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Max-Forwards: 69 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F13 100 Trying Proxy 2 -> [-User A-] {+Alice+} SIP/2.0 100 Trying Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 2 INVITE Content-Length: 0 F14 180 Ringing [-B-] {+Bob+} -> Proxy 2 SIP/2.0 180 Ringing [-Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.0.2.222 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101-] Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-42]-] {+44]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.0.2.222 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101+} Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {++} Content-Length: 0 F15 180 Ringing Proxy 2 -> [-A-] {+Alice+} SIP/2.0 180 Ringing Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {++} Content-Length: 0 F16 200 OK [-B-] {+Bob+} -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} ;received=192.0.2.222 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-141-] {+147+} v=0 [-o=UserB-] {+o=bob+} 2890844527 2890844527 IN IP4 [-client.biloxi.com-] {+client.biloxi.example.com+} s=- c=IN IP4 192.0.2.201 {+Johnston et al Expires û October 2003 [Page 45] SIP Basic Call Flow Examples April 2003+} t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F17 200 OK Proxy 2 -> [-A Johnston et al Expires - April 2002 [Page 43] SIP Basic Call Flow Examples October 2002-] {+Alice+} SIP/2.0 200 OK Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 2 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-141-] {+147+} v=0 [-o=UserB-] {+o=bob+} 2890844527 2890844527 IN IP4 [-client.biloxi.com-] {+client.biloxi.example.com+} s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F18 ACK [-A-] {+Alice+} -> Proxy 2 ACK [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b8g-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b8g+} Max-Forwards: 70 Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 2 ACK Content-Length: 0 F19 ACK Proxy 2 -> [-B-] {+Bob+} ACK [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74b8g-] {+client.atlanta.example.com:5060;branch=z9hG4bK74b8g+} ;received=192.0.2.101 Max-Forwards: 69 [-From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 2 ACK Content-Length: 0-] Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-44]-] {+46]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003 From: Alice ;tag=9fxced76sl To: Bob ;tag=314159 Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com CSeq: 2 ACK Content-Length: 0+} /* RTP streams are established between [-A-] {+Alice+} and [-B-] {+Bob+} */ /* [-User B-] {+Bob+} Hangs Up with [-User A.-] {+Alice.+} */ F20 BYE [-User B-] {+Bob+} -> Proxy 2 BYE [-sip:UserA@client.atlanta.com-] {+sip:alice@client.atlanta.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.biloxi.com:5060;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} Max-Forwards: 70 Route: [--] {++} From: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 F21 BYE Proxy 2 -> [-User A-] {+Alice+} BYE [-sip:UserA@client.atlanta.com-] {+sip:alice@client.atlanta.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} Via: SIP/2.0/UDP [-client.biloxi.com:5060;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} ;received=192.0.2.201 Max-Forwards: 69 From: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 F22 200 OK [-User A-] {+Alice+} -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP [-ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK721e418c4.1+} ;received=192.0.2.222 Via: SIP/2.0/UDP [-client.biloxi.com:5060;branch=z9hG4bKnashds7-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} ;received=192.0.2.201 From: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl Johnston et al Expires û October 2003 [Page 47] SIP Basic Call Flow Examples April 2003+} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 F23 200 OK Proxy 2 -> [-User B-] {+Bob+} SIP/2.0 200 OK Via: SIP/2.0/UDP [-client.biloxi.com:5060;branch=z9hG4bKnashds7 Johnston et al Expires - April 2002 [Page 45] SIP Basic Call Flow Examples October 2002-] {+client.biloxi.example.com:5060;branch=z9hG4bKnashds7+} ;received=192.0.2.201 From: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} To: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} Call-ID: [-4Fde34wkd11wsGFDs3@atlanta.com-] {+4Fde34wkd11wsGFDs3@atlanta.example.com+} CSeq: 1 BYE Content-Length: 0 Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-46]-] {+48]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} 3.5 Session Through a SIP ALG [-User A-] {+Alice+} ALG Proxy 2 [-User B-] {+Bob+} | | | | | 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 | | |-------------------------------->| | RTP Media | Both Way RTP Media | |<==============>|<===============================>| | BYE F14 | | |--------------->| BYE F15 | | |-------------------------------->| | | 200 F16 | | 200 F17 |<--------------------------------| |<---------------| | | | | [-User A-] {+Alice+} completes a call to [-User B-] {+Bob+} through a ALG (Application Layer Gateway) and a SIP Proxy. The routing through the ALG is accomplished using a pre-loaded Route header in the INVITE F1. Note that the media stream setup is not end-to-end - the ALG terminates both media streams and bridges them. This is done by the ALG 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-] {+Alice+} would be removed), or to perform codec media conversion, such as mu-law to A- law conversion of PCM on an international call. Also note that Proxy 2 does not Record-Route in this call flow. Message Details Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-47]-] {+49]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003+} F1 INVITE [-A-] {+Alice+} -> SIP ALG INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} Max-Forwards: 70 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Route: [--] {++} Proxy-Authorization: Digest [-username="UserA", realm="biloxi.com",-] {+username="alice", realm="biloxi.example.com",+} nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="", [-uri="sip:UserB@biloxi.com",-] {+uri="sip:bob@biloxi.example.com",+} response="b3f392f9218a328b9294076d708e6815" Content-Type: application/sdp Content-Length: [-143-] {+151+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Client for [-A-] {+Alice+} prepares to receive data on port 49172 from the network. */ F2 INVITE SIP ALG -> Proxy 2 INVITE [-sip:UserB@biloxi.com-] {+sip:bob@biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-alg1.atlanta.com:5060;branch=z9hG4bK739578.1-] {+alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1+} Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Max-Forwards: 69 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Proxy-Authorization: Digest [-username="UserA", realm="biloxi.com",-] {+username="alice", realm="biloxi.example.com",+} nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="", [-uri="sip:UserB@biloxi.com",-] {+uri="sip:bob@biloxi.example.com",+} response="b3f392f9218a328b9294076d708e6815" [-Content-Type: application/sdp Content-Length: 142-] Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-48]-] {+50]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003 Content-Type: application/sdp Content-Length: 150+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com-] {+client.atlanta.example.com+} s=- c=IN IP4 192.0.2.128 t=0 0 m=audio 2000 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 100 Trying SIP ALG -> [-A-] {+Alice+} SIP/2.0 100 Trying Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 INVITE Content-Length: 0 /* SIP ALG prepares to proxy data from port 192.0.2.128/2000 to 192.0.2.101/49172. Proxy 2 uses a Location Service function to determine where [-B-] {+Bob+} is located. Based upon location analysis the call is forwarded to [-User B-] {+Bob+} */ F4 INVITE Proxy 2 -> [-B-] {+Bob+} INVITE [-sip:UserB@client.biloxi.com-] {+sip:bob@client.biloxi.example.com+} SIP/2.0 Via: SIP/2.0/UDP [-ss2.biloxi.com:5060;branch=z9hG4bK2d4790.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1+} Via: SIP/2.0/UDP [-alg1.atlanta.com:5060;branch=z9hG4bK739578.1-] {+alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1+} ;received=192.0.2.128 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Max-Forwards: 68 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-142-] {+150+} v=0 [-o=UserA-] {+o=alice+} 2890844526 2890844526 IN IP4 [-client.atlanta.com s=- c=IN IP4 192.0.2.128-] {+client.atlanta.example.com+} Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-49]-] {+51]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003 s=- c=IN IP4 192.0.2.128+} t=0 0 m=audio 2000 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F5 100 Trying Proxy 2 -> SIP ALG SIP/2.0 100 Trying Via: SIP/2.0/UDP [-alg1.atlanta.com:5060;branch=z9hG4bK739578.1-] {+alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1+} ;received=192.0.2.128 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy -] {+Bob +} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 INVITE Content-Length: 0 F6 180 Ringing [-B-] {+Bob+} -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP [-ss2.biloxi.com:5060;branch=z9hG4bK2d4790.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1+} ;received=192.0.2.222 Via: SIP/2.0/UDP [-alg1.atlanta.com:5060;branch=z9hG4bK739578.1-] {+alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1+} ;received=192.0.2.128 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Content-Length: 0 F7 180 Ringing Proxy 2 -> SIP ALG SIP/2.0 180 Ringing Via: SIP/2.0/UDP [-alg1.atlanta.com:5060;branch=z9hG4bK739578.1-] {+alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1+} ;received=192.0.2.128 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE-] {+Bob ;tag=314159+} Johnston et al Expires [-- April 2002-] {+û October 2003+} [Page [-50]-] {+52]+} SIP Basic Call Flow Examples [-October 2002-] {+April 2003 Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com CSeq: 1 INVITE+} Contact: [--] {++} Content-Length: 0 F8 180 Ringing SIP ALG -> [-A-] {+Alice+} SIP/2.0 180 Ringing Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Content-Length: 0 F9 200 OK [-B-] {+Bob+} -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP [-ss2.biloxi.com:5060;branch=z9hG4bK2d4790.1-] {+ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1+} ;received=192.0.2.222 Via: SIP/2.0/UDP [-alg1.atlanta.com:5060;branch=z9hG4bK739578.1-] {+alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1+} ;received=192.0.2.128 Via: SIP/2.0/UDP [-client.atlanta.com:5060;branch=z9hG4bK74bf9-] {+client.atlanta.example.com:5060;branch=z9hG4bK74bf9+} ;received=192.0.2.101 Record-Route: [--] {++} From: [-BigGuy ;tag=9fxced76sl-] {+Alice ;tag=9fxced76sl+} To: [-LittleGuy ;tag=314159-] {+Bob ;tag=314159+} Call-ID: [-2xTb9vxSit55XU7p8@atlanta.com-] {+2xTb9vxSit55XU7p8@atlanta.example.com+} CSeq: 1 INVITE Contact: [--] {++} Content-Type: application/sdp Content-Length: [-141