SIPPING Working Group A. Johnston Internet Draft WorldCom Document: S. Donovan draft-ietf-sipping-basic-call-flows-00.txt R. Sparks Expires: February 2003 C. Cunningham dynamicsoft K. Summers Sonus August 2002 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]. Johnston et al Expires - February 2003 [Page 1] SIP Basic Call Flow Examples August 2002 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 3.4 Successful Session with Proxy Failure.....................38 3.5 Session Through a SIP ALG.................................47 3.6 Session via Redirect and Proxy Servers with SDP in ACK....55 3.7 Session with re-INVITE (IP Address Change)................62 3.8 Unsuccessful No Answer....................................68 3.9 Unsuccessful Busy.........................................76 3.10 Unsuccessful No Response from User Agent.................81 3.11 Unsuccessful Temporarily Unavailable.....................86 Security Considerations..........................................91 References.......................................................91 Acknowledgments..................................................92 Author's Addresses...............................................92 1. Overview The call flows shown in this document were developed in the design of a carrier-class SIP IP Telephony network. They represent an example minimum set of functionality for SIP to be used in IP Telephony applications. It is the hope of the authors that this document will be useful for SIP implementors, designers, and protocol researchers alike and will help further the goal of a standard SIP implementation for IP Telephony. It is envisioned that as changes to the standard and additional RFCs are added that this document will reflect those changes and represent the current state of a standard interoperable SIP IP Telephony implementation. These call flows are based on the current version 2.0 of SIP in RFC 3261[2] with SDP usage described in RFC 3264[3]. Call flow examples of SIP interworking with the PSTN through gateways are contained in a companion document, RFC xxxx[4]. Johnston et al Expires - February 2002 [Page 2] SIP Basic Call Flow Examples August 2002 1.1 General Assumptions A number of architecture, network, and protocol assumptions underly 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 SIP Digest as defined in [3] and [5]. 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 UDP for transport. Other transport schemes could also be used. 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. For simplicity in reading and editing the document, there are a number of differences between some of the examples and actual SIP messages. For example, the SIP 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 Johnston et al Expires - February 2002 [Page 3] SIP Basic Call Flow Examples August 2002 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.168.100.101 User Agent LittleGuy UserB@biloxi.com 192.168.200.201 User Agent UserB@chicago.com 192.168.200.100 Proxy Server ss1.atlanta.com 192.168.255.111 Proxy/Registrar ss2.biloxi.com 192.168.156.222 Proxy Server ss3.chicago.com 192.168.182.333 ALG alg1.atlanta.com 192.168.255.128 Johnston et al Expires - February 2002 [Page 4] SIP Basic Call Flow Examples August 2002 2. SIP Registration Registration binds a particular device Contact URI with a SIP user AOR (Address of Record). 2.1 Successful New Registration User B SIP Server | | | REGISTER F1 | |------------------------------>| | 401 Unauthorized F2 | |<------------------------------| | REGISTER F3 | |------------------------------>| | 200 OK F4 | |<------------------------------| | | User B sends a SIP REGISTER request to the SIP server. The request includes the user's contact list. The SIP server provides a challenge to User B. User B enters her/his valid user ID and password. User B's SIP client encrypts the user information according to the challenge issued by the SIP server and sends the response to the SIP server. The SIP server validates the user's credentials. It registers the user in its contact database and returns a response (200 OK) to User B's SIP client. The response includes the user's current contact list in Contact headers. The format of the authentication shown is SIP digest. It is assumed that User B has not previously registered with this Server. Message Details F1 REGISTER B -> SIP Server REGISTER sip:ss2.biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 From: LittleGuy ;tag=a73kszlfl To: LittleGuy Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 1 REGISTER Contact: Content-Length: 0 Johnston et al Expires - February 2002 [Page 5] SIP Basic Call Flow Examples August 2002 F2 401 Unauthorized SIP Server -> User B SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 From: LittleGuy ;tag=a73kszlfl To: LittleGuy ;tag=1410948204 Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 1 REGISTER WWW-Authenticate: Digest realm="atlanta.com", qop="auth", nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F3 REGISTER B -> SIP Server REGISTER sip:ss2.biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 From: LittleGuy ;tag=ja743ks76zlflH To: LittleGuy Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 2 REGISTER Contact: Authorization: Digest username="UserB", realm="atlanta.com" nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="", uri="sip:ss2.biloxi.com", response="dfe56131d1958046689d83306477ecc" Content-Length: 0 F4 200 OK SIP Server -> B SIP/2.0 200 OK Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 From: LittleGuy ;tag=ja743ks76zlflH To: LittleGuy ;tag=37GkEhwl6 Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 2 REGISTER Contact: ;expires=3600 Content-Length: 0 Johnston et al Expires - February 2002 [Page 6] SIP Basic Call Flow Examples August 2002 2.2 Update of Contact List User B SIP Server | | | REGISTER F1 | |------------------------------>| | 200 OK F2 | |<------------------------------| | | User B wishes to update the list of addresses where the SIP server will redirect or forward INVITE requests. User B sends a SIP REGISTER request to the SIP server. User B's request includes an updated contact list. Since the user already has authenticated with the server, the user supplies authentication credentials with the request and is not challenged by the server. The SIP server validates the user's credentials. It registers the user in its contact database, updates the user's contact list, and returns a response (200 OK) to User B's SIP client. The response includes the user's current contact list in Contact headers. Message Details F1 REGISTER B -> SIP Server REGISTER sip:ss2.biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 From: LittleGuy ;tag=a73kszlfl To: LittleGuy Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 1 REGISTER Contact: mailto:UserB@biloxi.com Authorization: Digest username="UserB", realm="atlanta.com", qop="auth", nonce="1cec4341ae6cbe5a359ea9c8e88df84f", opaque="", uri="sip:ss2.biloxi.com", response="71ba27c64bd01de719686aa4590d5824" Content-Length: 0 F2 200 OK SIP Server -> B SIP/2.0 200 OK Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Johnston et al Expires - February 2002 [Page 7] SIP Basic Call Flow Examples August 2002 ;received=192.168.200.201 From: LittleGuy ;tag=a73kszlfl To: LittleGuy ;tag=34095828jh Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 1 REGISTER Contact: ;expires=3600 Contact: ;expires=4294967295 Content-Length: 0 Johnston et al Expires - February 2002 [Page 8] SIP Basic Call Flow Examples August 2002 2.3 Request for Current Contact List User B SIP Server | | | REGISTER F1 | |------------------------------>| | 200 OK F2 | |<------------------------------| | | User B sends a register request to the Proxy Server containing no Contact headers, indicating the user wishes to query the server for the user's current contact list. Since the user already has authenticated with the server, the user supplies authentication credentials with the request and is not challenged by the server. The SIP server validates the user's credentials. The server returns a response (200 OK) which includes the user's current registration list in Contact headers. Message Details F1 REGISTER B -> SIP Server REGISTER sip:ss2.biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 From: LittleGuy ;tag=a73kszlfl To: LittleGuy Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 1 REGISTER Authorization: Digest username="UserB", realm="atlanta.com", nonce="df84f1cec4341ae6cbe5ap359a9c8e88", opaque="", uri="sip:ss2.biloxi.com", response="aa7ab4678258377c6f7d4be6087e2f60" Content-Length: 0 F2 200 OK SIP Server -> B SIP/2.0 200 OK Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 From: LittleGuy ;tag=a73kszlfl To: LittleGuy ;tag=jqoiweu75 Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 1 REGISTER Johnston et al Expires - February 2002 [Page 9] SIP Basic Call Flow Examples August 2002 Contact: ;expires=3600 Contact: ;expires=4294967295 Content-Length: 0 Johnston et al Expires - February 2002 [Page 10] SIP Basic Call Flow Examples August 2002 2.4 Cancellation of Registration User B SIP Server | | | REGISTER F1 | |------------------------------>| | 200 OK F2 | |<------------------------------| | | User B wishes to cancel their registration with the SIP server. User B sends a SIP REGISTER request to the SIP server. The request has an expiration period of 0 and applies to all existing contact locations. Since the user already has authenticated with the server, the user supplies authentication credentials with the request and is not challenged by the server. The SIP server validates the user's credentials. It clears the user's contact list, and returns a response (200 OK) to User B's SIP client. Message Details F1 REGISTER B -> SIP Server REGISTER sip:ss2.biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 From: LittleGuy ;tag=a73kszlfl To: LittleGuy Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 1 REGISTER Expires: 0 Contact: * Authorization: Digest username="UserB", realm="atlanta.com", nonce="88df84f1cac4341aea9c8ee6cbe5a359", opaque="", uri="sip:ss2.biloxi.com", response="ff0437c51696f9a76244f0cf1dbabbea" Content-Length: 0 F2 200 OK SIP Server -> B SIP/2.0 200 OK Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 From: LittleGuy ;tag=a73kszlfl To: LittleGuy ;tag=1418nmdsrf Johnston et al Expires - February 2002 [Page 11] SIP Basic Call Flow Examples August 2002 Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 1 REGISTER Content-Length: 0 Johnston et al Expires - February 2002 [Page 12] SIP Basic Call Flow Examples August 2002 2.5 Unsuccessful Registration User B SIP Server | | | REGISTER F1 | |------------------------------>| | 401 Unauthorized F2 | |<------------------------------| | REGISTER F3 | |------------------------------>| | 401 Unauthorized F4 | |<------------------------------| | | User B sends a SIP REGISTER request to the SIP Server. The SIP server provides a challenge to User B. User B enters her/his user ID and password. User B's SIP client encrypts the user information according to the challenge issued by the SIP server and sends the response to the SIP server. The SIP server attempts to validate the user's credentials, but they are not valid (the user's password does not match the password established for the user's account). The server returns a response (401 Unauthorized) to User B's SIP client. Message Details F1 REGISTER B -> SIP Server REGISTER sip:ss2.biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 From: LittleGuy ;tag=a73kszlfl To: LittleGuy Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 1 REGISTER Contact: Content-Length: 0 F2 Unauthorized SIP Server -> User B SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 Johnston et al Expires - February 2002 [Page 13] SIP Basic Call Flow Examples August 2002 From: LittleGuy ;tag=a73kszlfl To: LittleGuy ;tag=1410948204 Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 1 REGISTER WWW-Authenticate: Digest realm="atlanta.com", qop="auth", nonce="f1cec4341ae6ca9c8e88df84be55a359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F3 REGISTER B -> SIP Server REGISTER sip:ss2.biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 From: LittleGuy ;tag=JueHGuidj28dfga To: LittleGuy Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 2 REGISTER Contact: Authorization: Digest username="UserB", realm="atlanta.com", nonce="f1cec4341ae6ca9c8e88df84be55a359", opaque="", uri="sip:ss2.biloxi.com", response="61f8470ceb87d7ebf508220214ed438b" Content-Length: 0 /* The response above encodes the incorrect password */ F4 401 Unauthorized SIP Server -> User B SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 From: LittleGuy ;tag=JueHGuidj28dfga To: LittleGuy ;tag=1410948204 Call-ID: 1j9FpLxk3uxtm8tn@biloxi.com CSeq: 2 REGISTER WWW-Authenticate: Digest realm="atlanta.com", qop="auth", nonce="84f1c1ae6cbe5ua9c8e88dfa3ecm3459", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 Johnston et al Expires - February 2002 [Page 14] SIP Basic Call Flow Examples August 2002 3. SIP Session Establishment This section details session establishment between two SIP User Agents (UAs): User A and User B. User A (LittleGuy sip:UserA@atlanta.com) and User B (BigGuy sip:UserB@biloxi.com) are assumed to be SIP phones or SIP-enabled devices. The successful calls show the initial signaling, the exchange of media information in the form of SDP payloads, the establishment of the media session, then finally the termination of the call. SIP digest authentication is used by Proxy Servers to authenticate the caller User A. It is assumed that User B has registered with Proxy Server Proxy 2 as per Section 2 to be able to receive the calls via the Proxy. 3.1 Successful Session Establishment User A User B | | | INVITE F1 | |----------------------->| | 180 Ringing F2 | |<-----------------------| | | | 200 OK F3 | |<-----------------------| | ACK F4 | |----------------------->| | Both Way RTP Media | |<======================>| | | | BYE F5 | |<-----------------------| | 200 OK F6 | |----------------------->| | | In this scenario, User A completes a call to User B directly. Message Details F1 INVITE User A -> User B INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Johnston et al Expires - February 2002 [Page 15] SIP Basic Call Flow Examples August 2002 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 3848276298220188511@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 180 Ringing User B -> User A SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=8321234356 Call-ID: 3848276298220188511@atlanta.com CSeq: 1 INVITE Content-Length: 0 F3 200 OK User B -> User A SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=8321234356 Call-ID: 3848276298220188511@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Johnston et al Expires - February 2002 [Page 16] SIP Basic Call Flow Examples August 2002 F4 ACK User A -> User B ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=8321234356 Call-ID: 3848276298220188511@atlanta.com CSeq: 1 ACK Content-Length: 0 /* RTP streams are established between A and B */ /* User B Hangs Up with User A. Note that the CSeq is NOT 2, since User A and User B maintain their own independent CSeq counts. (The INVITE was request 1 generated by User A, and the BYE is request 1 generated by User B) */ F5 BYE User B -> User A BYE sip:UserA@192.168.100.101 SIP/2.0 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 From: LittleGuy ;tag=8321234356 To: BigGuy ;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.com CSeq: 1 BYE Content-Length: 0 F6 200 OK User A -> User B SIP/2.0 200 OK Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 From: LittleGuy ;tag=8321234356 To: BigGuy ;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.com CSeq: 1 BYE Content-Length: 0 Johnston et al Expires - February 2002 [Page 17] SIP Basic Call Flow Examples August 2002 3.2 Session Establishment Through Two Proxies User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| | | | 407 F2 | | | |<---------------| | | | ACK F3 | | | |--------------->| | | | INVITE F4 | | | |--------------->| INVITE F5 | | | 100 F6 |--------------->| INVITE F7 | |<---------------| 100 F8 |--------------->| | |<---------------| | | | | 180 F9 | | | 180 F10 |<---------------| | 180 F11 |<---------------| | |<---------------| | 200 F12 | | | 200 F13 |<---------------| | 200 F14 |<---------------| | |<---------------| | | | ACK F15 | | | |--------------->| ACK F16 | | | |--------------->| ACK F17 | | | |--------------->| | Both Way RTP Media | |<================================================>| | | | BYE F18 | | | BYE F19 |<---------------| | BYE F20 |<---------------| | |<---------------| | | | 200 F21 | | | |--------------->| 200 F22 | | | |--------------->| 200 F23 | | | |--------------->| | | | | In this scenario, User A completes a call to User B using two proxies Proxy 1 and Proxy 2. The initial INVITE (F1) contains a pre-loaded Route header with the address of Proxy 1 (Proxy 1 is configured as a default outbound proxy for User A). 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 disconnects by initiating a BYE message. Johnston et al Expires - February 2002 [Page 18] SIP Basic Call Flow Examples August 2002 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 -> Proxy 1 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 3848276298220188511@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 challenges User A for authentication */ F2 407 Proxy Authorization Required Proxy 1 -> User A SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=3flal12sf Call-ID: 3848276298220188511@atlanta.com CSeq: 1 INVITE Proxy-Authenticate: Digest realm="atlanta.com", qop="auth", nonce="f84f1cec41e6cbe5aea9c8e88d359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 Johnston et al Expires - February 2002 [Page 19] SIP Basic Call Flow Examples August 2002 F3 ACK A -> Proxy 1 ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=3flal12sf Call-ID: 3848276298220188511@atlanta.com CSeq: 1 ACK Content-Length: 0 /* User A responds be re-sending the INVITE with authentication credentials in it. */ F4 INVITE A -> Proxy 1 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 3848276298220188511@atlanta.com CSeq: 2 INVITE Contact: Proxy-Authorization: Digest username="UserA", realm="atlanta.com", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", uri="sip:UserB@biloxi.com", response="42ce3cef44b22f50c6a6071bc8" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.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 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 - February 2002 [Page 20] SIP Basic Call Flow Examples August 2002 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 3848276298220188511@atlanta.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F6 100 Trying Proxy 1 -> User A SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 3848276298220188511@atlanta.com CSeq: 2 INVITE Content-Length: 0 F7 INVITE Proxy 2 -> B INVITE sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 68 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 3848276298220188511@atlanta.com CSeq: 2 INVITE Contact: Johnston et al Expires - February 2002 [Page 21] SIP Basic Call Flow Examples August 2002 Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.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/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 3848276298220188511@atlanta.com CSeq: 2 INVITE Content-Length: 0 F9 180 Ringing B -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 3848276298220188511@atlanta.com Contact: CSeq: 2 INVITE Content-Length: 0 F10 180 Ringing Proxy 2 -> Proxy 1 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Johnston et al Expires - February 2002 [Page 22] SIP Basic Call Flow Examples August 2002 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 3848276298220188511@atlanta.com Contact: CSeq: 2 INVITE Content-Length: 0 F11 180 Ringing Proxy 1 -> A SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 3848276298220188511@atlanta.com Contact: CSeq: 2 INVITE Content-Length: 0 F12 200 OK B -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 3848276298220188511@atlanta.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 Johnston et al Expires - February 2002 [Page 23] SIP Basic Call Flow Examples August 2002 a=rtpmap:0 PCMU/8000 F13 200 OK Proxy 2 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 3848276298220188511@atlanta.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F14 200 OK Proxy 1 -> A SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 3848276298220188511@atlanta.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Johnston et al Expires - February 2002 [Page 24] SIP Basic Call Flow Examples August 2002 F15 ACK A -> Proxy 1 ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 3848276298220188511@atlanta.com CSeq: 2 ACK Content-Length: 0 F16 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 3848276298220188511@atlanta.com CSeq: 2 ACK Content-Length: 0 F17 ACK Proxy 2 -> B ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 68 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 3848276298220188511@atlanta.com CSeq: 2 ACK Content-Length: 0 /* RTP streams are established between A and B */ /* User B Hangs Up with User A. */ Johnston et al Expires - February 2002 [Page 25] SIP Basic Call Flow Examples August 2002 /* Again, note that the CSeq is NOT 3. User A and User B maintain their own separate CSeq counts */ F18 BYE User B -> Proxy 2 BYE sip:UserA@192.168.100.101 SIP/2.0 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 Route: , From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.com CSeq: 1 BYE Content-Length: 0 F19 BYE Proxy 2 -> Proxy 1 BYE sip:UserA@192.168.100.101 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 Max-Forwards: 69 Route: From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.com CSeq: 1 BYE Content-Length: 0 F20 BYE Proxy 1 -> User A BYE sip:UserA@192.168.100.101 SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 Max-Forwards: 68 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.com CSeq: 1 BYE Content-Length: 0 F21 200 OK User A -> Proxy 1 Johnston et al Expires - February 2002 [Page 26] SIP Basic Call Flow Examples August 2002 SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.com CSeq: 1 BYE Content-Length: 0 F22 200 OK Proxy 1 -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.100.101 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.com CSeq: 1 BYE Content-Length: 0 F23 200 OK Proxy 2 -> User B SIP/2.0 200 OK Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.com CSeq: 1 BYE Content-Length: 0 Johnston et al Expires - February 2002 [Page 27] SIP Basic Call Flow Examples August 2002 3.3 Session with Multiple Proxy Authentication User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |----------->| | | | 407 Proxy Authorization Required F2 | |<-----------| | | | ACK F3 | | | |----------->| | | | INVITE F4 | | | |----------->| | | | 100 F5 | | | |<-----------| INVITE F6 | | | |---------->| | | | 407 Proxy Authorization Required F7 | |<----------| | | | ACK F8 | | | |---------->| | | 407 Proxy Authorization Required F9 | |<-----------| | | | ACK F10 | | | |----------->| | | | INVITE F11| | | |----------->| | | | 100 F12 | | | |<-----------| INVITE F13| | | |---------->| | | | 100 F14 | | | |<----------| INVITE F15 | | | |------------>| | | | 200 OK F16 | | | 200 OK F17|<------------| | 200 OK F18 |<----------| | |<-----------| | | | ACK F19 | | | |----------->| ACK F20 | | | |---------->| ACK F21 | | | |------------>| | RTP Media Path | |<====================================>| In this scenario, User A completes a call to User B using two proxies Proxy 1 and Proxy 2. User A 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 - February 2002 [Page 28] SIP Basic Call Flow Examples August 2002 the call proceeds after Proxy 2 challenges and receives valid credentials. The call terminates when User B disconnects by initiating a BYE message. Proxy 1 inserts a Record-Route header into the INVITE message to ensure that it is present in all subsequent message exchanges. Proxy 2 also inserts itself into the Record-Route header. Message Details F1 INVITE A -> Proxy 1 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 challenges User A for authentication */ F2 407 Proxy Authorization Required Proxy 1 -> User A SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=876321 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Proxy-Authenticate: Digest realm="atlanta.com", qop="auth", nonce="wf84f1cczx41ae6cbeaea9ce88d359", Johnston et al Expires - February 2002 [Page 29] SIP Basic Call Flow Examples August 2002 opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F3 ACK A -> Proxy 1 ACK sip:UserB@biloxi.com SIP/2.0 Max-Forwards: 70 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=876321 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 /* User A responds be re-sending the INVITE with authentication credentials in it. The same Call-ID is used, so the CSeq is increased. */ F4 INVITE A -> Proxy 1 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Contact: Proxy-Authorization: Digest username="UserA", realm="atlanta.com", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", uri="sip:UserB@biloxi.com", response="42ce3cef44b22f50c6a6071bc8" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.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 prepares to receive data on port 49172 from the Johnston et al Expires - February 2002 [Page 30] SIP Basic Call Flow Examples August 2002 network. */ F5 100 Trying Proxy 1 -> User A SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Content-Length: 0 F6 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK230f2.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 2 challenges User A for authentication */ F7 407 Proxy Authorization Required Proxy 2 -> Proxy 1 SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK230f2.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl Johnston et al Expires - February 2002 [Page 31] SIP Basic Call Flow Examples August 2002 To: LittleGuy ;tag=838209 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Proxy-Authenticate: Digest realm="biloxi.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/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=838209 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 ACK Content-Length: 0 /* Proxy 1 forwards the challenge to User A for authentication from Proxy 2 */ F9 407 Proxy Authorization Required Proxy 1 -> User A SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=838209 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Proxy-Authenticate: Digest realm="biloxi.com", qop="auth", nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F10 ACK User A -> Proxy 1 ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=838209 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 ACK Content-Length: 0 Johnston et al Expires - February 2002 [Page 32] SIP Basic Call Flow Examples August 2002 /* User A responds be re-sending the INVITE with authentication credentials for Proxy 1 AND Proxy 2. */ F11 INVITE A -> Proxy 1 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 3 INVITE Contact: Proxy-Authorization: Digest username="UserA", realm="atlanta.com", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", uri="sip:UserB@biloxi.com", response="42ce3cef44b22f50c6a6071bc8" Proxy-Authorization: Digest username="UserA", realm="biloxi.com", nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", uri="sip:UserB@biloxi.com", response="f44ab22f150c6a56071bce8" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 finds its credentials and authorizes User A, forwarding the INVITE to Proxy. */ F12 100 Trying Proxy 1 -> User A SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 3 INVITE Content-Length: 0 Johnston et al Expires - February 2002 [Page 33] SIP Basic Call Flow Examples August 2002 F13 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK230f2.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 3 INVITE Contact: Proxy-Authorization: Digest username="UserA", realm="biloxi.com", nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="", uri="sip:UserB@biloxi.com", response="f44ab22f150c6a56071bce8" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 2 finds its credentials and authorizes User A, forwarding the INVITE to User B. */ F14 100 Trying Proxy 2 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK230f2.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 3 INVITE Content-Length: 0 F15 INVITE Proxy 2 -> User B INVITE sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK31972.1 Johnston et al Expires - February 2002 [Page 34] SIP Basic Call Flow Examples August 2002 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK230f2.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 68 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 3 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* User B answers the call immediately */ F16 200 OK User B -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK31972.1 ;received=192.168.156.222 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK230f2.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=9103874 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 3 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 Johnston et al Expires - February 2002 [Page 35] SIP Basic Call Flow Examples August 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 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=9103874 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 3 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F18 200 OK Proxy 1 -> User A SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=9103874 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 3 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Johnston et al Expires - February 2002 [Page 36] SIP Basic Call Flow Examples August 2002 F19 ACK User A -> Proxy 1 ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=9103874 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 3 ACK Content-Length: 0 F20 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK230f2.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=9103874 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 3 ACK Contact: Content-Length: 0 F21 ACK Proxy 2 -> User A ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK31972.1 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK230f2.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 68 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=9103874 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 3 ACK Contact: Content-Length: 0 Johnston et al Expires - February 2002 [Page 37] SIP Basic Call Flow Examples August 2002 3.4 Successful Session with Proxy Failure User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| | | | INVITE F2 | | | |--------------->| | | | INVITE F3 | | | |--------------->| | | | INVITE F4 | | | |--------------->| | | | INVITE F5 | | | |--------------->| | | | INVITE F6 | | | |--------------->| | | | INVITE F7 | | | |--------------->| | | | 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 - February 2002 [Page 38] SIP Basic Call Flow Examples August 2002 In this scenario, User A completes a call to User B via a Proxy Server. User A is configured for a primary SIP Proxy Server Proxy 1 and a secondary SIP Proxy Server Proxy 2 (Or is able to use DNS SRV records to locate Proxy 1 and Proxy 2). User A 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 then completes the call to User B using Proxy 2. Message Details F1 INVITE A -> Proxy 1 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK465bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 INVITE A -> Proxy 1 Same as Message F1 F3 INVITE A -> Proxy 1 Same as Message F1 F4 INVITE A -> Proxy 1 Same as Message F1 Johnston et al Expires - February 2002 [Page 39] SIP Basic Call Flow Examples August 2002 F5 INVITE A -> Proxy 1 Same as Message F1 F6 INVITE A -> Proxy 1 Same as Message F1 F7 INVITE A -> Proxy 1 Same as Message F1 /* User A gives up on the unresponsive proxy */ F8 INVITE A -> Proxy 2 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 2 challenges User A for authentication */ F9 407 Proxy Authorization Required Proxy 2 -> User A SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl Johnston et al Expires - February 2002 [Page 40] SIP Basic Call Flow Examples August 2002 To: LittleGuy ;tag=2421452 Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 1 INVITE Proxy-Authenticate: Digest realm="biloxi.com", qop="auth", nonce="1ae6cbe5ea9c8e8df84fqnlec434a359", opaque="", stale=FALSE, algorithm=MD5 Content-Length: 0 F10 ACK A -> Proxy 2 ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=2421452 Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 1 ACK Content-Length: 0 /* User A responds be re-sending the INVITE with authentication credentials in it. */ F11 INVITE A -> Proxy 2 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 2 INVITE Contact: Proxy-Authorization: Digest username="UserA", realm="biloxi.com", nonce="1ae6cbe5ea9c8e8df84fqnlec434a359", opaque="", uri="sip:UserB@biloxi.com", response="8a880c919d1a52f20a1593e228adf599" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Johnston et al Expires - February 2002 [Page 41] SIP Basic Call Flow Examples August 2002 /* Proxy 2 accepts the credentials and forwards the INVITE to User B. Client for A prepares to receive data on port 49172 from the network. */ F12 INVITE Proxy 2 -> B INVITE sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F13 100 Trying Proxy 2 -> User A SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 2 INVITE Content-Length: 0 F14 180 Ringing B -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Johnston et al Expires - February 2002 [Page 42] SIP Basic Call Flow Examples August 2002 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 2 INVITE Contact: Content-Length: 0 F15 180 Ringing Proxy 2 -> A SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 2 INVITE Contact: Content-Length: 0 F16 200 OK B -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F17 200 OK Proxy 2 -> A Johnston et al Expires - February 2002 [Page 43] SIP Basic Call Flow Examples August 2002 SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F18 ACK A -> Proxy 2 ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 2 ACK Content-Length: 0 F19 ACK Proxy 2 -> B ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.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 - February 2002 [Page 44] SIP Basic Call Flow Examples August 2002 /* RTP streams are established between A and B */ /* User B Hangs Up with User A. */ F20 BYE User B -> Proxy 2 BYE sip:UserA@192.168.100.101 SIP/2.0 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 Route: From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 1 BYE Content-Length: 0 F21 BYE Proxy 2 -> User A BYE sip:UserA@192.168.100.101 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 Max-Forwards: 69 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 1 BYE Content-Length: 0 F22 200 OK User A -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 ;received=192.168.200.201 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 1 BYE Content-Length: 0 F23 200 OK Proxy 2 -> User B SIP/2.0 200 OK Via: SIP/2.0/UDP client.biloxi.com:5060;branch=z9hG4bKnashds7 Johnston et al Expires - February 2002 [Page 45] SIP Basic Call Flow Examples August 2002 ;received=192.168.200.201 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 4Fde34wkd11wsGFDs3@atlanta.com CSeq: 1 BYE Content-Length: 0 Johnston et al Expires - February 2002 [Page 46] SIP Basic Call Flow Examples August 2002 3.5 Session Through a SIP ALG User A ALG Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | 100 F3 |--------------->| INVITE F4 | |<---------------| 100 F5 |--------------->| | |<---------------| 180 F6 | | | 180 F7 |<---------------| | 180 F8 |<---------------| | |<---------------| | 200 F9 | | | 200 F10 |<---------------| | 200 F11 |<---------------| | |<---------------| | | ACK F12 | | |--------------->| ACK F13 | | |-------------------------------->| | RTP Media | Both Way RTP Media | |<==============>|<===============================>| | BYE F14 | | |--------------->| BYE F15 | | |-------------------------------->| | | 200 F16 | | 200 F17 |<--------------------------------| |<---------------| | | | | User A completes a call to User B 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 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 - February 2002 [Page 47] SIP Basic Call Flow Examples August 2002 F1 INVITE A -> SIP ALG INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Route: Proxy-Authorization: Digest username="UserA", realm="biloxi.com", nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="", uri="sip:UserB@biloxi.com", response="b3f392f9218a328b9294076d708e6815" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Client for A prepares to receive data on port 49172 from the network. */ F2 INVITE SIP ALG -> Proxy 2 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP alg1.atlanta.com:5060;branch=z9hG4bK739578.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Proxy-Authorization: Digest username="UserA", realm="biloxi.com", nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="", uri="sip:UserB@biloxi.com", response="b3f392f9218a328b9294076d708e6815" Content-Type: application/sdp Content-Length: 146 Johnston et al Expires - February 2002 [Page 48] SIP Basic Call Flow Examples August 2002 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.255.128 t=0 0 m=audio 2000 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 100 Trying SIP ALG -> A SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 /* SIP ALG prepares to proxy data from port 192.168.255.128/2000 to 192.168.100.101/49172. Proxy 2 uses a Location Service function to determine where B is located. Based upon location analysis the call is forwarded to User B */ F4 INVITE Proxy 2 -> B INVITE sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP alg1.atlanta.com:5060;branch=z9hG4bK739578.1 ;received=192.168.255.128 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 68 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 146 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.255.128 Johnston et al Expires - February 2002 [Page 49] SIP Basic Call Flow Examples August 2002 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 ;received=192.168.255.128 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F6 180 Ringing B -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.156.222 Via: SIP/2.0/UDP alg1.atlanta.com:5060;branch=z9hG4bK739578.1 ;received=192.168.255.128 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.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 ;received=192.168.255.128 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Johnston et al Expires - February 2002 [Page 50] SIP Basic Call Flow Examples August 2002 Contact: Content-Length: 0 F8 180 Ringing SIP ALG -> A SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Length: 0 F9 200 OK B -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.156.222 Via: SIP/2.0/UDP alg1.atlanta.com:5060;branch=z9hG4bK739578.1 ;received=192.168.255.128 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F10 200 OK Proxy 2 -> SIP ALG SIP/2.0 200 OK Via: SIP/2.0/UDP alg1.atlanta.com:5060;branch=z9hG4bK739578.1 Johnston et al Expires - February 2002 [Page 51] SIP Basic Call Flow Examples August 2002 ;received=192.168.255.128 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F11 200 OK SIP ALG -> A SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.255.128 t=0 0 m=audio 1734 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* The ALG prepares to proxy packets from 192.168.255.128/ 1734 to 192.168.200.201/3456 */ F12 ACK A -> SIP ALG Johnston et al Expires - February 2002 [Page 52] SIP Basic Call Flow Examples August 2002 ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 F13 ACK SIP ALG -> B ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP alg1.atlanta.com:5060;branch=z9hG4bK739578.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 /* RTP streams are established between A and the ALG and between the ALG and B*/ /* User A Hangs Up with User B. */ F14 BYE A -> SIP ALG BYE sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 BYE Content-Length: 0 F15 BYE SIP ALG -> B BYE sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP alg1.atlanta.com:5060;branch=z9hG4bK739578.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Johnston et al Expires - February 2002 [Page 53] SIP Basic Call Flow Examples August 2002 Max-Forwards: 69 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 BYE Content-Length: 0 F16 200 OK B -> SIP ALG SIP/2.0 200 OK Via: SIP/2.0/UDP alg1.atlanta.com:5060;branch=z9hG4bK739578.1 ;received=192.168.255.128 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 BYE Content-Length: 0 F17 200 OK SIP ALG -> A SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 BYE Content-Length: 0 Johnston et al Expires - February 2002 [Page 54] SIP Basic Call Flow Examples August 2002 3.6 Session via Redirect and Proxy Servers with SDP in ACK User A Redirect Server Proxy 3 User B | | | | | INVITE F1 | | | |--------------->| | | | 302 F2 | | | |<---------------| | | | ACK F3 | | | |--------------->| | | | INVITE F4 | | |-------------------------------->| INVITE F5 | | 100 F6 |--------------->| |<--------------------------------| 180 F7 | | 180 F8 |<---------------| |<--------------------------------| | | | 200 F9 | | 200 F10 |<---------------| |<--------------------------------| | | ACK F11 | | |-------------------------------->| ACK F12 | | |--------------->| | Both Way RTP Media | |<================================================>| | | BYE F13 | | BYE F14 |<---------------| |<--------------------------------| | | 200 F15 | | |-------------------------------->| 200 F16 | | |--------------->| | | | In this scenario, User A places a call to User B using first a Redirect server then a Proxy Server. The INVITE message is first sent to the Redirect Server. The Server returns a 302 Moved Temporarily response (F2) containing a Contact header with User B's current SIP address. User A then generates a new INVITE and sends to User B via the Proxy Server and the call proceeds normally. In this example, no SDP is present in the INVITE, so the SDP is carried in the ACK message. The call is terminated when User B sends a BYE message. Message Details F1 INVITE A -> Redirect Server Johnston et al Expires - February 2002 [Page 55] SIP Basic Call Flow Examples August 2002 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bKbf9f44 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Length: 0 F2 302 Moved Temporarily Redirect Proxy -> A SIP/2.0 302 Moved Temporarily Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bKbf9f44 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=53fHlqlQ2 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: sip:UserB@chicago.com Content-Length: 0 F3 ACK A -> Redirect Server ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bKbf9f44 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=53fHlqlQ2 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 F4 INVITE A -> Proxy 3 INVITE sip:UserB@chicago.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Contact: Content-Length: 0 Johnston et al Expires - February 2002 [Page 56] SIP Basic Call Flow Examples August 2002 F5 INVITE Proxy 3 -> B INVITE sip:UserB@192.168.200.100 SIP/2.0 Via: SIP/2.0/UDP ss3.chicago.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Contact: Content-Length: 0 F6 100 Trying Proxy 3 -> A SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Content-Length: 0 F7 180 Ringing B -> Proxy 3 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss3.chicago.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.182.333 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Contact: Content-Length: 0 F8 180 Ringing Proxy 3 -> A SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Johnston et al Expires - February 2002 [Page 57] SIP Basic Call Flow Examples August 2002 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Contact: Content-Length: 0 F9 200 OK B -> Proxy 3 SIP/2.0 200 OK Via: SIP/2.0/UDP ss3.chicago.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.182.333 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 146 v=0 o=UserB 2890844527 2890844527 IN IP4 client.chicago.com s=- c=IN IP4 192.168.200.100 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F10 200 OK Proxy -> A SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 146 Johnston et al Expires - February 2002 [Page 58] SIP Basic Call Flow Examples August 2002 v=0 o=UserB 2890844527 2890844527 IN IP4 client.chicago.com s=- c=IN IP4 192.168.200.100 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* ACK contains SDP of A since none present in INVITE */ F11 ACK A -> Proxy 3 ACK sip:UserB@192.168.200.100 SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 ACK Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F12 ACK Proxy 3 -> B ACK sip:UserB@111.112.112.114 SIP/2.0 Via: SIP/2.0/UDP ss3.chicago.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 ACK Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com Johnston et al Expires - February 2002 [Page 59] SIP Basic Call Flow Examples August 2002 s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* RTP streams are established between A and B*/ /* User B Hangs Up with User A. */ F13 BYE B -> Proxy 3 BYE sip:UserA@192.168.100.101 SIP/2.0 Via: SIP/2.0/UDP client.chicago.com:5060;branch=z9hG4bKfgaw2 Max-Forwards: 70 Route: From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 BYE Content-Length: 0 F14 BYE Proxy 3 -> A BYE sip:UserA@192.168.100.101 SIP/2.0 Via: SIP/2.0/UDP ss3.chicago.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.200.100 Via: SIP/2.0/UDP client.chicago.com:5060;branch=z9hG4bKfgaw2 Max-Forwards: 69 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 BYE Content-Length: 0 F15 200 OK A -> Proxy 3 SIP/2.0 200 OK Via: SIP/2.0/UDP ss3.chicago.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.182.333 Via: SIP/2.0/UDP client.chicago.com:5060;branch=z9hG4bKfgaw2 ;received=192.168.200.100 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 BYE Content-Length: 0 Johnston et al Expires - February 2002 [Page 60] SIP Basic Call Flow Examples August 2002 F16 200 OK Proxy 3 -> B SIP/2.0 200 OK Via: SIP/2.0/UDP client.chicago.com:5060;branch=z9hG4bKfgaw2 ;received=192.168.200.100 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 BYE Content-Length: 0 Johnston et al Expires - February 2002 [Page 61] SIP Basic Call Flow Examples August 2002 3.7 Session with re-INVITE (IP Address Change) User A Proxy 2 User B | F1 INVITE | | |------------------->| F2 INVITE | | F3 100 Trying |------------------->| |<-------------------| F4 180 Ringing | | F5 180 Ringing |<-------------------| |<-------------------| | | | F6 200 OK | | F7 200 OK |<-------------------| |<-------------------| | | F8 ACK | |---------------------------------------->| | Both Way RTP Media Established | |<=======================================>| | | | B changes IP address | | | | F9 INVITE | |<----------------------------------------| | F10 200 OK | |---------------------------------------->| | F11 ACK | |<----------------------------------------| | New RTP Media Stream | |<=======================================>| | F12 BYE | |---------------------------------------->| | F25 200 OK | |<----------------------------------------| | | This example shows a session in which the media is changes midway through the session. When User BĖs IP address changes during the session, User B sends a re-INVITE containing a new Contact and SDP (version number incremented) information to A. In this flow, the proxy does not Record-Route so is not in the SIP messaging path after the initial exchange. Message Details F1 INVITE A -> Proxy 2 INVITE sip:UserB@biloxi.com SIP/2.0 Johnston et al Expires - February 2002 [Page 62] SIP Basic Call Flow Examples August 2002 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 INVITE Proxy 2 -> B INVITE sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 100 Trying Proxy 2 -> A SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl Johnston et al Expires - February 2002 [Page 63] SIP Basic Call Flow Examples August 2002 To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F4 180 Ringing B -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.156.222 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Length: 0 F5 180 Ringing Proxy 2 -> A SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Length: 0 F6 200 OK B -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.156.222 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 145 Johnston et al Expires - February 2002 [Page 64] SIP Basic Call Flow Examples August 2002 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F7 200 OK Proxy 2 -> A SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 145 v=0 o=UserB 2890844527 2890844527 IN IP4 client.biloxi.com s=- c=IN IP4 192.168.200.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F8 ACK A -> B ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 /* RTP streams are established between A and B */ /* B changes IP address and re-INVITEs A with new Contact and SDP */ F9 INVITE B -> A Johnston et al Expires - February 2002 [Page 65] SIP Basic Call Flow Examples August 2002 INVITE sip:UserA@192.168.100.101 SIP/2.0 Via: SIP/2.0/UDP client.chicago.com:5060;branch=z9hG4bKlkld5l Max-Forwards: 70 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 14 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserB 2890844527 2890844528 IN IP4 client.chicago.com s=- c=IN IP4 192.168.200.100 t=0 0 m=audio 47172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F10 200 OK A ->B SIP/2.0 200 OK Via: SIP/2.0/UDP client.chicago.com:5060;branch=z9hG4bKlkld5l ;received=192.168.200.100 Max-Forwards: 70 From: LittleGuy ;tag=314159 To: BigGuy ;tag=9fxced76sl Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 14 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 1000 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F11 ACK B -> A ACK sip:UserA@192.168.100.101 SIP/2.0 Via: SIP/2.0/UDP client.chicago.com:5060;branch=z9hG4bKlkld5l Max-Forwards: 70 From: LittleGuy ;tag=314159 Johnston et al Expires - February 2002 [Page 66] SIP Basic Call Flow Examples August 2002 To: BigGuy ;tag=9fxced76sl Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 14 ACK Content-Length: 0 /* New RTP stream established between A and B */ /* A hangs up with B */ F12 BYE A -> B BYE sip:UserB@192.168.200.100 SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 BYE Content-Length: 0 F13 200 OK B -> A SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 2 BYE Content-Length: 0 Johnston et al Expires - February 2002 [Page 67] SIP Basic Call Flow Examples August 2002 3.8 Unsuccessful No Answer User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | 100 F3 |--------------->| INVITE F4 | |<---------------| 100 F5 |--------------->| | |<---------------| | | | | 180 F6 | | | 180 F7 |<---------------| | 180 F8 |<---------------| | |<---------------| | | | | | | | CANCEL F9 | | | |--------------->| | | | 200 F10 | | | |<---------------| CANCEL F11 | | | |--------------->| | | | 200 F12 | | | |<---------------| | | | | CANCEL F13 | | | |--------------->| | | | 200 F14 | | | |<---------------| | | | 487 F15 | | | |<---------------| | | | ACK F16 | | | 487 F17 |--------------->| | |<---------------| | | | ACK F18 | | | 487 F19 |--------------->| | |<---------------| | | | ACK F20 | | | |--------------->| | | | | | | In this scenario, User A gives up on the call before User B answers (sends a 200 OK response). User A sends a CANCEL (F9) since no final response had been received from User B. If a 200 OK to the INVITE had crossed with the CANCEL, User A would have sent an ACK then a BYE to User B in order to properly terminate the call. Note that the CANCEL message is acknowledged with a 200 OK on a hop by hop basis, rather than end to end. Johnston et al Expires - February 2002 [Page 68] SIP Basic Call Flow Examples August 2002 Message Details F1 INVITE A -> Proxy 1 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Proxy-Authorization: Digest username="UserA", realm="atlanta.com", nonce="ze7k1ee88df84f1cec431ae6cbe5a359", opaque="", uri="sip:UserB@biloxi.com", response="b00b416324679d7e243f55708d44be7b" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /*Client for A prepares to receive data on port 49172 from the network.*/ F2 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 Johnston et al Expires - February 2002 [Page 69] SIP Basic Call Flow Examples August 2002 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 100 Trying Proxy 1 -> A SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F4 INVITE Proxy 2 -> B INVITE sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.client.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , Max-Forwards: 68 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Johnston et al Expires - February 2002 [Page 70] SIP Basic Call Flow Examples August 2002 F5 100 Trying Proxy 2 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F6 180 Ringing B -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.client.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Length: 0 F7 180 Ringing Proxy 2 -> Proxy 1 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Length: 0 F8 180 Ringing Proxy 1 -> A Johnston et al Expires - February 2002 [Page 71] SIP Basic Call Flow Examples August 2002 SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Length: 0 F9 CANCEL A -> Proxy 1 CANCEL sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 CANCEL Content-Length: 0 F10 200 OK Proxy 1 -> A SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 CANCEL Content-Length: 0 F11 CANCEL Proxy 1 -> Proxy 2 CANCEL sip:UserA@atlanta.com SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 CANCEL Content-Length: 0 Johnston et al Expires - February 2002 [Page 72] SIP Basic Call Flow Examples August 2002 F12 200 OK Proxy 2 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 CANCEL Content-Length: 0 F13 CANCEL Proxy 2 -> B CANCEL sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 CANCEL Content-Length: 0 F14 200 OK B -> Proxy 2 SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 CANCEL Content-Length: 0 F15 487 Request Terminated B -> Proxy 2 SIP/2.0 487 Request Terminated Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Johnston et al Expires - February 2002 [Page 73] SIP Basic Call Flow Examples August 2002 Content-Length: 0 F16 ACK Proxy 2 -> B ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 F17 487 Request Terminated Proxy 2 -> Proxy 1 SIP/2.0 487 Request Terminated Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F18 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 F19 487 Request Terminated Proxy 1 -> A SIP/2.0 487 Request Terminated Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com Johnston et al Expires - February 2002 [Page 74] SIP Basic Call Flow Examples August 2002 CSeq: 1 INVITE F20 ACK A -> Proxy 1 ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 Johnston et al Expires - February 2002 [Page 75] SIP Basic Call Flow Examples August 2002 3.9 Unsuccessful Busy User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | 100 F3 |--------------->| INVITE F4 | |<---------------| 100 F5 |--------------->| | |<---------------| | | | | 486 F6 | | | |<---------------| | | | ACK F7 | | | 486 F8 |--------------->| | |<---------------| | | | ACK F9 | | | 486 F10 |--------------->| | |<---------------| | | | ACK F11 | | | |--------------->| | | | | | | In this scenario, User B is busy and sends a 486 Busy Here response to User A's INVITE. Note that the non-2xx response is acknowledged on a hop-by-hop basis instead of end-to-end. Also note that many SIP UAs will not return a 486 response, as they have multiple line and other features. Message Details F1 INVITE User A -> Proxy 1 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Proxy-Authorization: Digest username="UserA", realm="atlanta.com", nonce="dc3a5ab2530aa93112cf5904ba7d88fa", opaque="", uri="sip:UserB@biloxi.com", response="702138b27d869ac8741e10ec643d55be" Content-Type: application/sdp Content-Length: 147 Johnston et al Expires - February 2002 [Page 76] SIP Basic Call Flow Examples August 2002 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /*Client for A prepares to receive data on port 49172 from the network.*/ F2 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 100 Trying Proxy 1 -> User A SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 Johnston et al Expires - February 2002 [Page 77] SIP Basic Call Flow Examples August 2002 F4 INVITE Proxy 2 -> User B INVITE sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 68 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F5 100 Trying Proxy 2 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F6 486 Busy Here User B -> Proxy 2 SIP/2.0 486 Busy Here Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Johnston et al Expires - February 2002 [Page 78] SIP Basic Call Flow Examples August 2002 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F7 ACK Proxy 2 -> User B ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 F8 486 Busy Here Proxy 2 -> Proxy 1 SIP/2.0 486 Busy Here Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F9 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 F10 486 Busy Here Proxy 1 -> User A Johnston et al Expires - February 2002 [Page 79] SIP Basic Call Flow Examples August 2002 SIP/2.0 486 Busy Here Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F11 ACK User A -> Proxy 1 ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 Johnston et al Expires - February 2002 [Page 80] SIP Basic Call Flow Examples August 2002 3.10 Unsuccessful No Response from User Agent User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | 100 F3 |--------------->| INVITE F4 | |<---------------| 100 F5 |--------------->| | |<---------------| INVITE F6 | | | |--------------->| | | | INVITE F7 | | | |--------------->| | | | INVITE F8 | | | |--------------->| | | | INVITE F9 | | | |--------------->| | | | INVITE F10 | | | |--------------->| | | | INVITE F11 | | | 480 F12 |--------------->| | |<---------------| | | | ACK F13 | | | 480 F14 |--------------->| | |<---------------| | | | ACK F15 | | | |--------------->| | | | | | | In this example, there is no response from User B to User A's INVITE messages being re-transmitted by Proxy 2. After the sixth re- transmission, Proxy 2 gives up and sends a 480 No Response to User A. Message Details F1 INVITE User A -> Proxy 1 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Proxy-Authorization: Digest username="UserA", realm="atlanta.com", nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="", Johnston et al Expires - February 2002 [Page 81] SIP Basic Call Flow Examples August 2002 uri="sip:UserB@biloxi.com", response="7afc04be7961f053c24f80e7dbaf888f" Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /*Client for A prepares to receive data on port 49172 from the network.*/ F2 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 100 Trying Proxy 1 -> User A SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Johnston et al Expires - February 2002 [Page 82] SIP Basic Call Flow Examples August 2002 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F4 INVITE Proxy 2 -> User B INVITE sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 68 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F5 100 Trying Proxy 2 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F6 INVITE Proxy 2 -> User B Resend of Message F4 Johnston et al Expires - February 2002 [Page 83] SIP Basic Call Flow Examples August 2002 F7 INVITE Proxy 2 -> User B Resend of Message F4 F8 INVITE Proxy 2 -> User B Resend of Message F4 F9 INVITE Proxy 2 -> User B Resend of Message F4 F10 INVITE Proxy 2 -> User B Resend of Message F4 F11 INVITE Proxy 2 -> User B Resend of Message F4 /* Proxy 2 gives up */ F12 480 No Response Proxy 2 -> Proxy 1 SIP/2.0 480 No Response Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F13 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl Johnston et al Expires - February 2002 [Page 84] SIP Basic Call Flow Examples August 2002 To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 F14 480 No Response Proxy 1 -> User A SIP/2.0 480 No Response Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F15 ACK User A -> Proxy 1 ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 Johnston et al Expires - February 2002 [Page 85] SIP Basic Call Flow Examples August 2002 3.11 Unsuccessful Temporarily Unavailable User A Proxy 1 Proxy 2 User B | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | 100 F3 |--------------->| INVITE F4 | |<---------------| 100 F5 |--------------->| | |<---------------| 180 F6 | | | 180 F7 |<---------------| | 180 F8 |<---------------| | |<---------------| | 480 F9 | | | |<---------------| | | | ACK F10 | | | 480 F11 |--------------->| | |<---------------| | | | ACK F12 | | | 480 F13 |--------------->| | |<---------------| | | | ACK F14 | | | |--------------->| | | | | | | In this scenario, User B initially sends a 180 Ringing response to User A, indicating that alerting is taking place. However, then a 480 Unavailable is then sent to User A. This response is acknowledged then proxied back to User A. Message Details F1 INVITE A -> Proxy 1 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Proxy-Authorization: Digest username="UserA", realm="atlanta.com", nonce="aa9311cf5904ba7d8dc3a5ab253028fa", opaque="", uri="sip:UserB@biloxi.com", response="59a46a91bf1646562a4d486c84b399db" Content-Type: application/sdp Johnston et al Expires - February 2002 [Page 86] SIP Basic Call Flow Examples August 2002 Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /*Client for A prepares to receive data on port 49172 from the network.*/ F2 INVITE Proxy 1 -> Proxy 2 INVITE sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 69 Record-Route: From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 100 Trying Proxy 1 -> A SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 Johnston et al Expires - February 2002 [Page 87] SIP Basic Call Flow Examples August 2002 F4 INVITE Proxy 2 -> B INVITE sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Max-Forwards: 68 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 client.atlanta.com s=- c=IN IP4 192.168.100.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F5 100 Trying Proxy 2 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F6 180 Ringing B -> Proxy 2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Johnston et al Expires - February 2002 [Page 88] SIP Basic Call Flow Examples August 2002 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Length: 0 F7 180 Ringing Proxy 2 -> Proxy 1 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Length: 0 F8 180 Ringing Proxy 1 -> A SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 Record-Route: , From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Contact: Content-Length: 0 F9 480 Temporarily Unavailable B -> Proxy 2 SIP/2.0 480 Temporarily Unavailable Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.168.156.222 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Johnston et al Expires - February 2002 [Page 89] SIP Basic Call Flow Examples August 2002 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F10 ACK Proxy 2 -> B ACK sip:UserB@192.168.200.201 SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.com:5060;branch=z9hG4bK721e418c4.1 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 F11 480 Temporarily Unavailable Proxy 2 -> Proxy 1 SIP/2.0 480 Temporarily Unavailable Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 ;received=192.168.255.111 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F12 ACK Proxy 1 -> Proxy 2 ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.com:5060;branch=z9hG4bK2d4790.1 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 F13 480 Temporarily Unavailable Proxy 1 -> A Johnston et al Expires - February 2002 [Page 90] SIP Basic Call Flow Examples August 2002 SIP/2.0 480 Temporarily Unavailable Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 ;received=192.168.100.101 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 INVITE Content-Length: 0 F14 ACK A -> Proxy 1 ACK sip:UserB@biloxi.com SIP/2.0 Via: SIP/2.0/UDP client.atlanta.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: BigGuy ;tag=9fxced76sl To: LittleGuy ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@atlanta.com CSeq: 1 ACK Content-Length: 0 Security Considerations Since this document represents NON NORMATIVE examples of SIP session establishment, the security considerations in RFC 3261 [3] apply. References 1 Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997 2 Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and Schooler, E., "SIP: Session Initiation Protocol", RFC 3261, June 2002. 3 Rosenberg, J. and Schulzrinne, H., "An Offer/Answer Model with SDP", Internet Engineering Task Force, RFC 3264, April 2002. 4 Johnston, A., Donovan, S., Sparks, R., Cunningham, C., Summers, K., "Session Initiation Protocol PSTN Call Flows", RFC xxxx, August 2002. 5 Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A. and Stewart, L., "HTTP authentication: Basic and Digest Access Authentication", RFC 2617, June 1999. Johnston et al Expires - February 2002 [Page 91] SIP Basic Call Flow Examples August 2002 Acknowledgments Thanks to Rohan Mahy, Adam Roach, Gonzalo Camarillo, Cullen Jennings, and Tom Taylor for their detailed comments during the final final review. Thanks to Dean Willis for his early contributions to the development of this document. The authors wish to thank Neil Deason for his additions to the Torture Test messages and Kundan Singh for performing parser validation of messages. The authors wish to thank the following individuals for their participation in the final review of this call flows document: Aseem Agarwal, Rafi Assadi, Ben Campbell, Sunitha Kumar, Jon Peterson, Marc Petit-Huguenin, Vidhi Rastogi, and Bodgey Yin Shaohua. The authors also wish to thank the following individuals for their assistance: Jean-Francois Mule, Hemant Agrawal, Henry Sinnreich, David Devanatham, Joe Pizzimenti, Matt Cannon, John Hearty, the whole MCI WorldCom IPOP Design team, Scott Orton, Greg Osterhout, Pat Sollee, Doug Weisenberg, Danny Mistry, Steve McKinnon, and Denise Ingram, Denise Caballero, Tom Redman, Ilya Slain, Pat Sollee, John Truetken, and others from MCI WorldCom, 3Com, Cisco, Lucent and Nortel. Author's Addresses All listed authors actively contributed large amounts of text to this document. Alan Johnston WorldCom 100 South 4th Street St. Louis, MO 63102 USA EMail: alan.johnston@wcom.com Steve Donovan dynamicsoft, Inc. 5100 Tennyson Parkway Suite 1200 Plano, Texas 75024 USA Johnston et al Expires - February 2002 [Page 92] SIP Basic Call Flow Examples August 2002 EMail: sdonovan@dynamicsoft.com Robert Sparks dynamicsoft, Inc. 5100 Tennyson Parkway Suite 1200 Plano, Texas 75024 USA EMail: rsparks@dynamicsoft.com Chris Cunningham dynamicsoft, Inc. 5100 Tennyson Parkway Suite 1200 Plano, Texas 75024 USA EMail: ccunningham@dynamicsoft.com Kevin Summers Sonus 1701 North Collins Blvd, Suite 3000 Richardson, TX 75080 USA Email: kevin.summers@sonusnet.com Copyright Notice "Copyright (C) The Internet Society 2002. All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. Johnston et al Expires - February 2002 [Page 93] SIP Basic Call Flow Examples August 2002 The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Acknowledgement Funding for the RFC Editor function is currently provided by the Internet Society. Johnston et al Expires - February 2002 [Page 94]