1.3. SIP Protocol Assumptions This document does not prescribe the flows precisely as they are shown, but rather the flows illustrate the principles for best practice. They are best practices usages (orderings, syntax, selection of features for the purpose, handling of error) of SIP methods, headers and parameters. IMPORTANT: The exact flows here must not be copied as is by an implementer due to specific incorrect characteristics that were introduced into the document for convenience and are listed below. To sum up, the SIP/PSTN call flows represent well-reviewed examples of SIP usage, which are best common practice according to IETF consensus. 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 would normally be present, such as Accept, Supported, Allow, etc. are not shown. Actors: Element Display Name URI IP Address ------- ------------ --- ---------- User Agent Alice sip:alice@a.example.com 192.0.2.101 User Agent Bob sip:bob@b.example.com 192.0.2.200 Proxy Server sip:ss1.a.example.com 192.0.2.111 User Agent (Gateway) sip:gw1.a.example.com 192.0.2.201 User Agent (Gateway) sip:gw2.a.example.com 192.0.2.202 User Agent (Gateway) sip:gw3.a.example.com 192.0.2.203 User Agent (Gateway) sip:ngw1.a.example.com 192.0.2.103 User Agent (Gateway) sip:ngw2.a.example.com 192.0.2.102 Note that NGW 1 and NGW 2 also have device URIs (Contacts) of sip:ngw1@a.example.com and sip:ngw2@a.example.com which resolve to the Proxy Server sip:ss1.wcom.com using DNS SRV records. Johnston, et al. Best Current Practice [Page 5] RFC 3666 SIP PSTN Call Flows December 2003 2. SIP to PSTN Dialing In the following scenarios, Alice (sip:alice@a.example.com) is a SIP phone or other SIP-enabled device. Bob is reachable via the PSTN at global telephone number +19725552222. Alice places a call to Bob through a Proxy Server, Proxy 1, and a Network Gateway. In other scenarios, Alice places calls to Carol, who is served via a PBX (Private Branch Exchange) and is identified by a private extension 444-3333, or global number +1-918-555-3333. Note that Alice uses his/her global telephone number +1-314-555-1111 in the From header in the INVITE messages. This then gives the Gateway the option of using this header to populate the calling party identification field in subsequent signaling. Left open is the issue of how the Gateway can determine the accuracy of the telephone number which is necessary before passing it as a valid calling party number in the PSTN. In these scenarios, Alice is a SIP phone or other SIP-enabled device. Alice places a call to Bob in the PSTN or Carol on a PBX through a Proxy Server and a Gateway. In the failure scenarios, the call does not complete. In some cases however, a media stream is still setup. This is due to the fact that some failures in dialing to the PSTN result in in-band tones (busy, reorder tones or announcements - "The number you have dialed has changed. The new number is..."). The 183 Session Progress response containing SDP media information is used to setup this early media path so that the caller Alice knows the final disposition of the call. The media stream is either terminated by the caller after the tone or announcement has been heard and understood, or by the Gateway after a timer expires. In other failure scenarios, a SS7 Release with Cause Code is mapped to a SIP response. In these scenarios, the early media path is not used, but the actual failure code is conveyed to the caller by the SIP User Agent Client. Johnston, et al. Best Current Practice [Page 6] RFC 3666 SIP PSTN Call Flows December 2003 2.1. Successful SIP to ISUP PSTN call Alice Proxy 1 NGW 1 Switch B | | | | | INVITE F1 | | | |--------------->| | | | 100 F2 | | | |<---------------| INVITE F3 | | | |--------------->| | | | 100 F4 | | | |<---------------| IAM F5 | | | |--------------->| | | | ACM F6 | | | 183 F7 |<---------------| | 183 F8 |<---------------| | |<---------------| | | | Both Way RTP Media | One Way Voice | |<===============================>|<===============| | | | ANM F9 | | | 200 F10 |<---------------| | 200 F11 |<---------------| | |<---------------| | | | ACK F12 | | | |--------------->| ACK F13 | | | |--------------->| | | Both Way RTP Media | Both Way Voice | |<===============================>|<==============>| | BYE F14 | | | |--------------->| BYE F15 | | | |--------------->| | | | 200 F16 | | | 200 F17 |<---------------| REL F18 | |<---------------| |--------------->| | | | RLC F19 | | | |<---------------| | | | | Alice dials the globalized E.164 number +19725552222 to reach Bob. Note that A might have only dialed the last 7 digits, or some other dialing plan. It is assumed that the SIP User Agent Client converts the digits into a global number and puts them into a SIP URI. Note that tel URIs could be used instead of SIP URIs. Alice could use either their SIP address (sip:alice@a.example.com) or SIP telephone number (sip:+13145551111@ss1.a.example.com;user=phone) in the From header. In this example, the telephone number is included, and it is shown as being passed as calling party identification through the Network Gateway (NGW 1) to Bob (F5). Note that for this number to be passed into the SS7 network, it would have to be somehow verified for accuracy. In this scenario, Bob answers the call, then Alice disconnects the call. Signaling between NGW 1 and Bob's telephone switch is ANSI ISUP. For the details of SIP to ISUP mapping, refer to [4]. In this flow, notice that the Contact returned by NGW 1 in messages F7-11 is sip:ngw1@a.example.com. This is because NGW 1 only accepts SIP messages that come through Proxy 1 - any direct signaling will be ignored. Since this Contact URI may be used outside of this dialog and must be routable (Section 8.1.1.8 in RFC 3261 [2]) the Contact URI for NGW 1 must resolve to Proxy 1. This Contact URI resolves via DNS to Proxy 1 (sip:ss1.a.example.com) which then resolves it to sip:ngw1.a.example.com which is the address of NGW 1. This flow shows TCP transport. Message Details F1 INVITE Alice -> Proxy 1 INVITE sip:+19725552222@ss1.a.example.com;user=phone SIP/2.0 Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:alice@client.a.example.com;transport=tcp> Proxy-Authorization: Digest username="alice", realm="a.example.com", nonce="dc3a5ab25302aa931904ba7d88fa1cf5", opaque="", uri="sip:+19725552222@ss1.a.example.com;user=phone", response="ccdca50cb091d587421457305d097458c" Content-Type: application/sdp Content-Length: 154 v=0 o=alice 2890844526 2890844526 IN IP4 client.a.example.com s=- c=IN IP4 client.a.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 100 Trying Proxy 1 -> Alice SIP/2.0 100 Trying Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Content-Length: 0 /* Proxy 1 uses a Location Service function to determine the gateway for terminating this call. The call is forwarded to NGW 1. Client for A prepares to receive data on port 49172 from the network.*/ F3 INVITE Proxy 1 -> NGW 1 INVITE sip:+19725552222@ngw1.a.example.com;user=phone SIP/2.0 Via: SIP/2.0/TCP ss1.a.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Max-Forwards: 69 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:alice@client.a.example.com;transport=tcp> Content-Type: application/sdp Content-Length: 154 v=0 o=alice 2890844526 2890844526 IN IP4 client.a.example.com s=- c=IN IP4 client.a.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F4 100 Trying NGW 1 -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/TCP ss1.a.example.com:5060;branch=z9hG4bK2d4790.1 Johnston, et al. Best Current Practice [Page 9] RFC 3666 SIP PSTN Call Flows December 2003 ;received=192.0.2.111 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Content-Length: 0 F5 IAM NGW 1 -> Bob IAM CdPN=972-555-2222,NPI=E.164,NOA=National CgPN=314-555-1111,NPI=E.164,NOA=National F6 ACM Bob -> NGW 1 ACM F7 183 Session Progress NGW 1 -> Proxy 1 SIP/2.0 183 Session Progress Via: SIP/2.0/TCP ss1.a.example.com:5060;branch=z9hG4bK2d4790.1 ;received=192.0.2.111 Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:ngw1@a.example.com;transport=tcp> Content-Type: application/sdp Content-Length: 146 v=0 o=GW 2890844527 2890844527 IN IP4 ngw1.a.example.com s=- c=IN IP4 ngw1.a.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* NGW 1 sends PSTN audio (ringing) in the RTP path to A */ F8 183 Session Progress Proxy 1 -> Alice SIP/2.0 183 Session Progress Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:ngw1@a.example.com;transport=tcp> Content-Type: application/sdp Content-Length: 146 v=0 o=GW 2890844527 2890844527 IN IP4 ngw1.a.example.com s=- c=IN IP4 ngw1.a.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F9 ANM Bob -> NGW 1 ANM F10 200 OK NGW 1 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/TCP ss1.a.example.com:5060;branch=z9hG4bK2d4790.1 ;received=192.0.2.111 Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:ngw1@a.example.com;transport=tcp> Content-Type: application/sdp Content-Length: 146 v=0 o=GW 2890844527 2890844527 IN IP4 ngw1.a.example.com s=- c=IN IP4 gw1.a.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F11 200 OK Proxy 1 -> Alice SIP/2.0 200 OK Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:ngw1@a.example.com;transport=tcp> Content-Type: application/sdp Content-Length: 146 v=0 o=GW 2890844527 2890844527 IN IP4 ngw1.a.example.com s=- c=IN IP4 ngw1.a.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F12 ACK Alice -> Proxy 1 ACK sip:ngw1@a.example.com SIP/2.0 Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 ACK Content-Length: 0 F13 ACK Proxy 1 -> NGW 1 ACK sip:ngw1@a.example.com SIP/2.0 Via: SIP/2.0/TCP ss1.a.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Max-Forwards: 69 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 ACK Content-Length: 0 /* Alice Hangs Up with Bob. */ F14 BYE Alice -> Proxy 1 BYE sip:ngw1@a.example.com SIP/2.0 Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 BYE Content-Length: 0 F15 BYE Proxy 1 -> NGW 1 BYE sip:ngw1@a.example.com SIP/2.0 Via: SIP/2.0/TCP ss1.a.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Max-Forwards: 69 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 BYE Content-Length: 0 F16 200 OK NGW 1 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/TCP ss1.a.example.com:5060;branch=z9hG4bK2d4790.1 ;received=192.0.2.111 Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 BYE Content-Length: 0 F17 200 OK Proxy 1 -> A SIP/2.0 200 OK Via: SIP/2.0/TCP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 BYE Content-Length: 0 F18 REL NGW 1 -> B REL CauseCode=16 Normal F19 RLC B -> NGW 1 RLC 2.2. Successful SIP to ISDN PBX call Alice Proxy 1 GW 1 PBX C | | | | | INVITE F1 | | | |--------------->| | | | 100 F2 | | | |<---------------| INVITE F3 | | | |--------------->| | | | 100 F4 | | | |<---------------| SETUP F5 | | | |--------------->| | | | CALL PROC F6 | | | |<---------------| | | | PROGress F7 | | | 180 F8 |<---------------| | 180 F9 |<---------------| | |<---------------| | | | | | One Way Voice | | | |<===============| | | | CONNect F10 | | | |<---------------| | | | CONNect ACK F11| | | 200 F12 |--------------->| | 200 F13 |<---------------| | |<---------------| | | | ACK F14 | | | |--------------->| ACK F15 | | | |--------------->| | | Both Way RTP Media | Both Way Voice | |<===============================>|<==============>| | BYE F16 | | | |--------------->| BYE F17 | | | |--------------->| | | | 200 F18 | | | 200 F19 |<---------------| DISConnect F20 | |<---------------| |--------------->| | | | RELease F21 | | | |<---------------| | | | RELease COM F22| | | |--------------->| | | | | Alice is a SIP device while Carol is connected via a Gateway (GW 1) to a PBX. The PBX connection is via a ISDN trunk group. Alice dials Carol's telephone number (918-555-3333) which is globalized and put into a SIP URI. The host portion of the Request-URI in the INVITE F3 is used to identify the context (customer, trunk group, or line) in which the private number 444-3333 is valid. Otherwise, this INVITE message could get forwarded by GW 1 and the context of the digits could become lost and the call unroutable. Proxy 1 looks up the telephone number and locates the gateway that serves Carol. Carol is identified by its extension (444-3333) in the Request-URI sent to GW 1. Note that the Contact URI for GW 1, as used in messages F8, F9, F12, and F13, is sips:4443333@gw1.a.example.com, which resolves directly to the gateway. This flow shows the use of Secure SIP (sips) URIs. Message Details F1 INVITE Alice -> Proxy 1 INVITE sips:+19185553333@ss1.a.example.com;user=phone SIP/2.0 Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sips:alice@client.a.example.com> Proxy-Authorization: Digest username="alice", realm="a.example.com", nonce="qo0dc3a5ab22aa931904badfa1cf5j9h", opaque="", uri="sips:+19185553333@ss1.a.example.com;user=phone", response="6c792f5c9fa360358b93c7fb826bf550" Content-Type: application/sdp Content-Length: 154 v=0 o=alice 2890844526 2890844526 IN IP4 client.a.example.com s=- c=IN IP4 client.a.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 100 Trying Proxy 1 -> Alice SIP/2.0 100 Trying Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 ;received=192.0.2.101 From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Content-Length: 0 F3 INVITE Proxy 1 -> GW 1 INVITE sips:4443333@gw1.a.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.a.example.com:5061;branch=z9hG4bK2d4790.1 Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 ;received=192.0.2.101 Max-Forwards: 69 Record-Route: <sips:ss1.a.example.com;lr> From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sips:alice@client.a.example.com> Content-Type: application/sdp Content-Length: 154 v=0 o=alice 2890844526 2890844526 IN IP4 client.a.example.com s=- c=IN IP4 client.a.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F4 100 Trying GW -> Proxy 1 SIP/2.0 100 Trying Via: SIP/2.0/TLS ss1.a.example.com:5061;branch=z9hG4bK2d4790.1 ;received=192.0.2.111 From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Content-Length: 0
F5 SETUP GW 1 -> Carol Protocol discriminator=Q.931 Message type=SETUP Bearer capability: Information transfer capability=0 (Speech) or 16 (3.1 kHz audio) Channel identification=Preferred or exclusive B-channel Progress indicator=1 (Call is not end-to-end ISDN;further call progress information may be available inband) Called party number: Type of number unknown Digits=444-3333 F6 CALL PROCeeding Carol-> GW 1 Protocol discriminator=Q.931 Message type=CALL PROC Channel identification=Exclusive B-channel F7 PROGress Carol-> GW 1 Protocol discriminator=Q.931 Message type=PROG Progress indicator=1 (Call is not end-to-end ISDN;further call progress information may be available inband) F8 180 Ringing GW 1 -> Proxy 1 SIP/2.0 180 Ringing Via: SIP/2.0/TLS ss1.a.example.com:5061;branch=z9hG4bK2d4790.1 ;received=192.0.2.111 Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sips:ss1.a.example.com;lr> From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sips:4443333@gw1.a.example.com> Content-Length: 0 Johnston, et al. Best Current Practice [Page 18] RFC 3666 SIP PSTN Call Flows December 2003 F9 180 Ringing Proxy 1 -> Alice SIP/2.0 180 Ringing Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sips:ss1.a.example.com;lr> From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sips:4443333@gw1.a.example.com> Content-Length: 0 F10 CONNect Carol-> GW 1 Protocol discriminator=Q.931 Message type=CONN F11 CONNect ACK GW 1 -> Carol Protocol discriminator=Q.931 Message type=CONN ACK F12 200 OK GW 1 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/TLS ss1.a.example.com:5061;branch=z9hG4bK2d4790.1 ;received=192.0.2.111 Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sips:ss1.a.example.com;lr> From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sips:4443333@gw1.a.example.com> Content-Type: application/sdp Content-Length: 144 v=0 o=GW 2890844527 2890844527 IN IP4 gw1.a.example.com s=- c=IN IP4 gw1.a.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F13 200 OK Proxy 1 -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sips:ss1.a.example.com;lr> From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sips:4443333@gw1.a.example.com> Content-Type: application/sdp Content-Length: 144 v=0 o=GW 2890844527 2890844527 IN IP4 gw1.a.example.com s=- c=IN IP4 gw1.a.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F14 ACK Alice -> Proxy 1 ACK sips:4443333@gw1.a.example.com SIP/2.0 Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: <sips:ss1.a.example.com;lr> From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 ACK Content-Length: 0 F15 ACK Proxy 1 -> GW 1 ACK sips:4443333@gw1.a.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.a.example.com:5061;branch=z9hG4bK2d4790.1 Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 ;received=192.0.2.101 Max-Forwards: 69 From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 ACK Content-Length: 0 /* Alice Hangs Up with Bob. */ F16 BYE Alice -> Proxy 1 BYE sips:4443333@gw1.a.example.com SIP/2.0 Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: <sips:ss1.a.example.com;lr> From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 3 BYE Content-Length: 0 F17 BYE Proxy 1 -> GW 1 BYE sips:4443333@gw1.a.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.a.example.com:5061;branch=z9hG4bK2d4790.1 Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 ;received=192.0.2.101 Max-Forwards: 69 From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 3 BYE Content-Length: 0
F18 200 OK GW 1 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/TLS ss1.a.example.com:5061;branch=z9hG4bK2d4790.1 ;received=192.0.2.111 Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 ;received=192.0.2.101 From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 3 BYE Content-Length: 0 F19 200 OK Proxy 1 -> A SIP/2.0 200 OK Via: SIP/2.0/TLS client.a.example.com:5061;branch=z9hG4bK74bf9 ;received=192.0.2.101 From: Alice <sips:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Carol <sips:+19185553333@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 3 BYE Content-Length: 0 F20 DISConnect GW 1 -> Carol Protocol discriminator=Q.931 Message type=DISC Cause=16 (Normal clearing) F21 RELease Carol-> GW 1 Protocol discriminator=Q.931 Message type=REL F22 RELease COMplete GW 1 -> Carol Protocol discriminator=Q.931 Message type=REL COM Successful SIP to ISUP PSTN call with overflow Alice Proxy 1 NGW 1 NGW 2 Switch B | | | | | | INVITE F1 | | | | |------------->| | | | | | INVITE F2 | | | | 100 F3 |------------->| | | |<-------------| 503 F4 | | | | |<-------------| | | | | ACK F5 | | | | |------------->| | | | | INVITE F6 | | | |---------------------------->| IAM F7 | | | |------------->| | | | ACM F8 | | | 183 F9 |<-------------| | 183 F10 |<----------------------------| | |<-------------| | | | Two Way RTP Media | One Way Voice| |<==========================================>|<=============| | | | ANM F11 | | | 200 F12 |<-------------| | 200 F13 |<----------------------------| | |<-------------| | | | ACK F14 | | | |------------->| ACK F15 | | | |---------------------------->| | | Both Way RTP Media |Both Way Voice| |<==========================================>|<============>| | BYE F16 | | | |------------->| BYE F17 | | | |---------------------------->| | | | 200 F18 | | | 200 F19 |<----------------------------| REL F20 | |<-------------| |------------->| | | | RLC F21 | | | |<-------------| | | | | Alice calls Bob through Proxy 1. Proxy 1 tries to route to a Network Gateway NGW 1. NGW 1 is not available and responds with a 503 Service Unavailable (F4). The call is then routed to Network Gateway NGW 2. Bob answers the call. The call is terminated when Alice disconnects the call. NGW 2 and Bob's telephone switch use ANSI ISUP signaling. NGW 2 also only accepts SIP messages that come through Proxy 1, so the Contact URI sip:ngw2@a.example.com is used in this flow. This flow shows UDP transport. Message Details F1 INVITE Alice -> Proxy 1 INVITE sip:+19725552222@ss1.a.example.com;user=phone SIP/2.0 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:alice@client.a.example.com> Proxy-Authorization: Digest username="alice", realm="a.example.com", nonce="b59311c3ba05b401cf80b2a2c5ac51b0", opaque="", uri="sip:+19725552222@ss1.a.example.com;user=phone", response="ba6ab44923fa2614b28e3e3957789ab0" Content-Type: application/sdp Content-Length: 154 v=0 o=alice 2890844526 2890844526 IN IP4 client.a.example.com s=- c=IN IP4 client.a.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Proxy 1 uses a Location Service function to determine where B is located. Proxy 1 receives a primary route NGW 1 and a secondary route NGW 2. NGW 1 is tried first */ F2 INVITE Proxy 1 -> NGW 1 INVITE sip:+19725552222@ngw1.a.example.com;user=phone SIP/2.0 Via: SIP/2.0/UDP ss1.a.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Max-Forwards: 69 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:alice@client.a.example.com> Content-Type: application/sdp Content-Length: 154 v=0 o=alice 2890844526 2890844526 IN IP4 client.a.example.com s=- c=IN IP4 client.a.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F3 100 Trying Proxy 1 -> Alice SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.a.example.com:5060;branch=z9hG4bK2d4790.1 ;received=192.0.2.111 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Content-Length: 0 F4 503 Service Unavailable NGW 1 -> Proxy 1 SIP/2.0 503 Service Unavailable Via: SIP/2.0/UDP ss1.a.example.com:5060;branch=z9hG4bK2d4790.1 ;received=192.0.2.111 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=123456789 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Content-Length: 0 F5 ACK Proxy 1 -> NGW 1 ACK sip:ngw1@a.example.com SIP/2.0 Via: SIP/2.0/UDP ss1.a.example.com:5060;branch=z9hG4bK2d4790.1 Max-Forwards: 70 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com>;user=phone> ;tag=123456789 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 ACK Content-Length: 0 /* Proxy 1 now tries secondary route to NGW 2 */ F6 INVITE Proxy 1 -> NGW 2 INVITE sip:+19725552222@ngw2.a.example.com;user=phone SIP/2.0 Via: SIP/2.0/UDP ss1.a.example.com:5060;branch=z9hG4bK2d4790.2 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Max-Forwards: 69 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:alice@client.a.example.com> Content-Type: application/sdp Content-Length: 154 v=0 o=alice 2890844526 2890844526 IN IP4 client.a.example.com s=- c=IN IP4 client.a.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F7 IAM NGW 2 -> Bob IAM CdPN=972-555-2222,NPI=E.164,NOA=National CgPN=314-555-1111,NPI=E.164,NOA=National F8 ACM Bob -> NGW 2 ACM F9 183 Session Progress NGW 2 -> Proxy 1 SIP/2.0 183 Session Progress Via: SIP/2.0/UDP ss1.a.example.com:5060;branch=z9hG4bK2d4790.2 ;received=192.0.2.111 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:ngw2@a.example.com> Content-Type: application/sdp Content-Length: 146 v=0 o=GW 2890844527 2890844527 IN IP4 ngw2.a.example.com s=- c=IN IP4 ngw2.a.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* RTP packets are sent by GW to A for audio (e.g. ring tone) */ F10 183 Session Progress Proxy 1 -> Alice SIP/2.0 183 Session Progress Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:ngw2@a.example.com> Content-Type: application/sdp Content-Length: 146 v=0 o=GW 2890844527 2890844527 IN IP4 ngw2.a.example.com s=- c=IN IP4 ngw2.a.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F11 ANM Bob -> NGW 2 ANM F12 200 OK NGW 2 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.a.example.com:5060;branch=z9hG4bK2d4790.2 ;received=192.0.2.111 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:ngw2@a.example.com> Content-Type: application/sdp Content-Length: 146 v=0 o=GW 2890844527 2890844527 IN IP4 ngw2.a.example.com s=- c=IN IP4 ngw2.a.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F13 200 OK Proxy 1 -> Alice SIP/2.0 200 OK Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 INVITE Contact: <sip:ngw2@a.example.com> Content-Type: application/sdp Content-Length: 146 v=0 o=GW 2890844527 2890844527 IN IP4 ngw2.a.example.com s=- c=IN IP4 ngw2.a.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F14 ACK Alice -> Proxy 1 ACK sip:ngw2@a.example.com SIP/2.0 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: <ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 ACK Content-Length: 0 F15 ACK Proxy 1 -> NGW 2 ACK sip:ngw2@a.example.com SIP/2.0 Via: SIP/2.0/UDP ss1.a.example.com:5060;branch=z9hG4bK2d4790.2 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Max-Forwards: 69 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 ACK /* RTP streams are established between A and B(via the GW) */ /* Alice Hangs Up with Bob. */ F16 BYE Alice -> Proxy 1 BYE sip:ngw2@a.example.com SIP/2.0 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: <ss1.a.example.com;lr> From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 BYE Content-Length: 0 F17 BYE Proxy 1 -> NGW 2 BYE sip:ngw2@a.example.com SIP/2.0 Via: SIP/2.0/UDP ss1.a.example.com:5060;branch=z9hG4bK2d4790.2 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Max-Forwards: 69 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 BYE Content-Length: 0 F18 200 OK NGW 2 -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.a.example.com:5060;branch=z9hG4bK2d4790.2 ;received=192.0.2.111 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 BYE Content-Length: 0 F19 200 OK Proxy 1 -> Alice SIP/2.0 200 OK Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 From: Alice <sip:+13145551111@ss1.a.example.com;user=phone> ;tag=9fxced76sl To: Bob <sip:+19725552222@ss1.a.example.com;user=phone> ;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 BYE Content-Length: 0 F20 REL NGW 2 -> B REL CauseCode=16 Normal F21 RLC B -> NGW 2 RLC 2.4. Successful SIP to SIP using ENUM Query Alice DNS Server Proxy 3 Bob | | | | | ENUM Query F1 | | | |--------------->| | | | Response F2 | | | |<---------------| | | | INVITE F3 | | |-------------------------------->| INVITE F4 | | 100 F5 |--------------->| |<--------------------------------| 180 F6 | | 180 F7 |<---------------| |<--------------------------------| | | | 200 F8 | | 200 F9 |<---------------| |<--------------------------------| | | ACK F10 | | |-------------------------------->| ACK F11 | | |--------------->| | Both Way RTP Media | |<================================================>| | | BYE F12 | | BYE F13 |<---------------| |<--------------------------------| | | 200 F14 | | |-------------------------------->| 200 F15 | | |--------------->| | | | In this scenario, Alice places a call to Bob by dialing Bob's telephone number (9725552222). Alice's UA converts the phone number to an E.164 number (+19725552222), and performs an ENUM query [9] on the E.164 number (2.2.2.2.5.5.5.2.7.9.1.e164.arpa), which returns a NAPTR record containing a SIP AOR URI for Bob (sip:+19725552222@b.example.com). As a result, Alice's UA sends an INVITE and the call completes over IP bypassing the PSTN. The call is terminated when Bob sends a BYE message. Message Details F1 ENUM Query Alice -> DNS Server 2.2.2.2.5.5.5.2.7.9.1.e164.arpa F2 ENUM NAPTR Set DNS Server -> Alice $ORIGIN 2.2.2.2.5.5.5.2.7.9.1.e164.arpa. IN NAPTR 100 10 "u" "sip+E2U" "!^.*$!sip:+19725552222@b.example.com!". F3 INVITE Alice -> Proxy 3 INVITE sip:+19725552222@b.example.com SIP/2.0 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: <sip:+13145551111@a.example.com>;tag=9fxced76sl To: <tel:+19725552222> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sip:+13145551111@client.a.example.com> Content-Type: application/sdp Content-Length: 154 v=0 o=alice 2890844526 2890844526 IN IP4 client.a.example.com s=- c=IN IP4 client.a.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F4 INVITE Proxy 3 -> Bob INVITE sip:+19725552222@client.b.example.com SIP/2.0 Via: SIP/2.0/UDP ss3.b.example.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Max-Forwards: 69 Record-Route: <sip:ss3.b.example.com;lr> From: <sip:+13145551111@a.example.com>;tag=9fxced76sl To: <tel:+19725552222> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sip:+13145551111@client.a.example.com> Content-Type: application/sdp Content-Length: 154 v=0 o=UserA 2890844526 2890844526 IN IP4 client.a.example.com s=- c=IN IP4 client.a.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F5 100 Trying Proxy 3 -> Alice SIP/2.0 100 Trying Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 From: <sip:+13145551111@a.example.com>;tag=9fxced76sl To: <tel:+19725552222> Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Content-Length: 0 F6 180 Ringing B -> Proxy 3 SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss3.b.example.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.0.2.233 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss3.b.example.com;lr> From: <sip:+13145551111@a.example.com>;tag=9fxced76sl To: <tel:+19725552222>;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sip:+19725552222@client.b.example.com> Content-Length: 0 F7 180 Ringing Proxy 3 -> Alice SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss3.b.example.com;lr> From: <sip:+13145551111@a.example.com>;tag=9fxced76sl To: <tel:+19725552222>;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sip:+19725552222@client.b.example.com> Content-Length: 0 F8 200 OK Bob -> Proxy 3 SIP/2.0 200 OK Via: SIP/2.0/UDP ss3.b.example.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.0.2.233 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss3.b.example.com;lr> From: <sip:+13145551111@a.example.com>;tag=9fxced76sl To: <tel:+19725552222>;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sip:+19725552222@client.b.example.com;transport=tcp> Content-Type: application/sdp Content-Length: 151 v=0 o=bob 2890844527 2890844527 IN IP4 client.b.example.com s=- c=IN IP4 client.b.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F9 200 OK Proxy -> Alice SIP/2.0 200 OK Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bf9 ;received=192.0.2.101 Record-Route: <sip:ss3.b.example.com;lr> From: <sip:+13145551111@a.example.com>;tag=9fxced76sl To: <tel:+19725552222>;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 INVITE Contact: <sip:+19725552222@client.b.example.com> Content-Type: application/sdp Content-Length: 151 v=0 o=bob 2890844527 2890844527 IN IP4 client.b.example.com s=- c=IN IP4 192.0.2.100 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F10 ACK Alice -> Proxy 3 ACK sip:+19725552222@client.b.example.com SIP/2.0 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bq9 Max-Forwards: 70 Route: <sip:ss3.b.example.com;lr> From: <sip:+13145551111@a.example.com>;tag=9fxced76sl To: <tel:+19725552222>;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 ACK Content-Length: 0 F11 ACK Proxy 3 -> Bob ACK sip:+19725552222@client.b.example.com SIP/2.0 Via: SIP/2.0/UDP ss3.b.example.com:5060;branch=z9hG4bK721e418c4.1 Via: SIP/2.0/UDP client.a.example.com:5060;branch=z9hG4bK74bq9 ;received=192.0.2.101 Max-Forwards: 69 From: <sip:+13145551111@a.example.com>;tag=9fxced76sl To: <tel:+19725552222>;tag=314159 Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 2 ACK Content-Type: application/sdp Content-Length: 0 /* RTP streams are established between A and B*/ /* User B Hangs Up with User A. */ F12 BYE Bob -> Proxy 3 BYE sip:+13145551111@client.a.example.com SIP/2.0 Via: SIP/2.0/UDP client.b.example.com:5060;branch=z9hG4bKfgaw2 Max-Forwards: 70 Route: <sip:ss3.b.example.com;lr> From: <tel:+19725552222>;tag=314159 To: <sip:+13145551111@a.example.com>;tag=9fxced76sl Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 BYE Content-Length: 0 F13 BYE Proxy 3 -> Alice BYE sip:+13145551111@client.a.example.com SIP/2.0 Via: SIP/2.0/UDP ss3.b.example.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.0.2.100 Via: SIP/2.0/UDP client.b.example.com:5060;branch=z9hG4bKfgaw2 Max-Forwards: 69 From: <tel:+19725552222>;tag=314159 To: <sip:+13145551111@a.example.com>;tag=9fxced76sl Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 BYE Content-Length: 0 F14 200 OK Alice -> Proxy 3 SIP/2.0 200 OK Via: SIP/2.0/UDP ss3.b.example.com:5060;branch=z9hG4bK721e418c4.1 ;received=192.0.2.233 Via: SIP/2.0/UDP client.b.example.com:5060;branch=z9hG4bKfgaw2 ;received=192.0.2.100 From: <tel:+19725552222>;tag=314159 To: <sip:+13145551111@a.example.com>;tag=9fxced76sl Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 BYE Content-Length: 0 F15 200 OK Proxy 3 -> Bob SIP/2.0 200 OK Via: SIP/2.0/UDP client.b.example.com:5060;branch=z9hG4bKfgaw2 ;received=192.0.2.100 From: <tel:+19725552222>;tag=314159 To: <sip:+13145551111@a.example.com>;tag=9fxced76sl Call-ID: 2xTb9vxSit55XU7p8@a.example.com CSeq: 1 BYE Content-Length: 0
No comments:
Post a Comment