Difference between revisions of "RFC3665"

From RFC-Wiki
imported>Admin
(Created page with " Network Working Group A. Johnston Request for Comments: 3665 MCI BCP: 75 ...")
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
 
 
 
 
 
 
Network Working Group                                        A. Johnston
 
Network Working Group                                        A. Johnston
 
Request for Comments: 3665                                          MCI
 
Request for Comments: 3665                                          MCI
Line 14: Line 8:
 
                                                                 Sonus
 
                                                                 Sonus
 
                                                         December 2003
 
                                                         December 2003
 
  
 
   Session Initiation Protocol (SIP) Basic Call Flow Examples
 
   Session Initiation Protocol (SIP) Basic Call Flow Examples
  
Status of this Memo
+
'''Status of this Memo'''
  
 
This document specifies an Internet Best Current Practices for the
 
This document specifies an Internet Best Current Practices for the
Line 24: Line 17:
 
improvements.  Distribution of this memo is unlimited.
 
improvements.  Distribution of this memo is unlimited.
  
Copyright Notice
+
'''Copyright Notice'''
  
 
Copyright (C) The Internet Society (2003).  All Rights Reserved.
 
Copyright (C) The Internet Society (2003).  All Rights Reserved.
  
Abstract
+
'''Abstract'''
  
 
This document gives examples of Session Initiation Protocol (SIP)
 
This document gives examples of Session Initiation Protocol (SIP)
Line 36: Line 29:
 
message details are shown.
 
message details are shown.
  
 
+
    3.6.  Session via Redirect and Proxy Servers with SDP in ACK . 54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
== Overview ==
 
== Overview ==
Line 70: Line 43:
 
scenarios of the most basic examples as a companion to the
 
scenarios of the most basic examples as a companion to the
 
specifications.
 
specifications.
 
 
 
 
 
 
 
  
 
These call flows are based on the current version 2.0 of SIP in RFC
 
These call flows are based on the current version 2.0 of SIP in RFC
Line 125: Line 91:
  
 
  /* Comments. */
 
  /* Comments. */
 
 
 
 
 
  
 
=== SIP Protocol Assumptions ===
 
=== SIP Protocol Assumptions ===
Line 171: Line 132:
 
Address of Record (AOR).
 
Address of Record (AOR).
  
 +
=== Successful New Registration ===
  
 
+
  Bob                        SIP Server
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
=== Successful New Registration ===
 
 
 
  Bob                        SIP Server
 
 
   |                              |
 
   |                              |
 
   |          REGISTER F1          |
 
   |          REGISTER F1          |
Line 226: Line 174:
 
Contact: <sips:[email protected]>
 
Contact: <sips:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
 
 
 
  
 
F2 401 Unauthorized SIP Server -> Bob
 
F2 401 Unauthorized SIP Server -> Bob
Line 250: Line 188:
 
  opaque="", stale=FALSE, algorithm=MD5
 
  opaque="", stale=FALSE, algorithm=MD5
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F3 REGISTER Bob -> SIP Server
 
F3 REGISTER Bob -> SIP Server
Line 267: Line 204:
 
  response="dfe56131d1958046689d83306477ecc"
 
  response="dfe56131d1958046689d83306477ecc"
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F4 200 OK SIP Server -> Bob
 
F4 200 OK SIP Server -> Bob
Line 280: Line 216:
 
Contact: <sips:[email protected]>;expires=3600
 
Contact: <sips:[email protected]>;expires=3600
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
 
 
  
 
=== Update of Contact List ===
 
=== Update of Contact List ===
Line 329: Line 256:
 
  response="71ba27c64bd01de719686aa4590d5824"
 
  response="71ba27c64bd01de719686aa4590d5824"
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F2 200 OK SIP Server -> Bob
 
F2 200 OK SIP Server -> Bob
Line 338: Line 264:
 
From: Bob <sips:[email protected]>;tag=a73kszlfl
 
From: Bob <sips:[email protected]>;tag=a73kszlfl
 
To: Bob <sips:[email protected]>;tag=34095828jh
 
To: Bob <sips:[email protected]>;tag=34095828jh
 
 
 
 
  
  
Line 384: Line 306:
 
  response="aa7ab4678258377c6f7d4be6087e2f60"
 
  response="aa7ab4678258377c6f7d4be6087e2f60"
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F2 200 OK SIP Server -> Bob
 
F2 200 OK SIP Server -> Bob
Line 392: Line 313:
 
  ;received=192.0.2.201
 
  ;received=192.0.2.201
  
 
+
From: Bob <sips:[email protected]>;tag=a73kszlfl
 
 
 
 
 
 
From: Bob <sips:[email protected]>;tag=a73kszlfl
 
 
To: Bob <sips:[email protected]>;tag=jqoiweu75
 
To: Bob <sips:[email protected]>;tag=jqoiweu75
  
Line 441: Line 358:
 
  response="ff0437c51696f9a76244f0cf1dbabbea"
 
  response="ff0437c51696f9a76244f0cf1dbabbea"
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F2 200 OK SIP Server -> Bob
 
F2 200 OK SIP Server -> Bob
 
 
 
 
 
  
 
SIP/2.0 200 OK
 
SIP/2.0 200 OK
Line 495: Line 406:
 
Contact: <sips:[email protected]>
 
Contact: <sips:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
  
 
F2 Unauthorized SIP Server -> Bob
 
F2 Unauthorized SIP Server -> Bob
Line 515: Line 420:
 
  opaque="", stale=FALSE, algorithm=MD5
 
  opaque="", stale=FALSE, algorithm=MD5
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F3 REGISTER Bob -> SIP Server
 
F3 REGISTER Bob -> SIP Server
Line 534: Line 438:
  
 
/*  The response above encodes the incorrect password */
 
/*  The response above encodes the incorrect password */
 
  
 
F4 401 Unauthorized SIP Server -> Bob
 
F4 401 Unauthorized SIP Server -> Bob
Line 549: Line 452:
 
  opaque="", stale=FALSE, algorithm=MD5
 
  opaque="", stale=FALSE, algorithm=MD5
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
  
 
== SIP Session Establishment ==
 
== SIP Session Establishment ==
Line 603: Line 501:
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
To: Bob <sip:[email protected]>
 
To: Bob <sip:[email protected]>
 
 
 
 
  
  
Line 621: Line 515:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F2 180 Ringing Bob -> Alice
 
F2 180 Ringing Bob -> Alice
Line 634: Line 527:
 
Contact: <sip:[email protected];transport=tcp>
 
Contact: <sip:[email protected];transport=tcp>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F3 200 OK Bob -> Alice
 
F3 200 OK Bob -> Alice
Line 656: Line 548:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
 
 
 
 
 
  
 
F4 ACK Alice -> Bob
 
F4 ACK Alice -> Bob
Line 680: Line 566:
 
   (The INVITE was request 1 generated by Alice, and the BYE is
 
   (The INVITE was request 1 generated by Alice, and the BYE is
 
   request 1 generated by Bob) */
 
   request 1 generated by Bob) */
 
  
 
F5 BYE Bob -> Alice
 
F5 BYE Bob -> Alice
Line 692: Line 577:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F6 200 OK Alice -> Bob
 
F6 200 OK Alice -> Bob
Line 705: Line 589:
 
Content-Length: 0
 
Content-Length: 0
  
 +
=== Session Establishment Through Two Proxies ===
  
 
+
Alice          Proxy 1          Proxy 2            Bob
 
+
   |                |                |                |
 
+
   |  INVITE F1    |                |                |
 
 
 
 
 
 
 
 
 
 
=== Session Establishment Through Two Proxies ===
 
 
 
Alice          Proxy 1          Proxy 2            Bob
 
   |                |                |                |
 
   |  INVITE F1    |                |                |
 
 
   |--------------->|                |                |
 
   |--------------->|                |                |
 
   |    407 F2    |                |                |
 
   |    407 F2    |                |                |
Line 761: Line 636:
 
the call proceeds.  The call terminates when Bob disconnects by
 
the call proceeds.  The call terminates when Bob disconnects by
 
initiating a BYE message.
 
initiating a BYE message.
 
 
 
 
 
  
 
Proxy 1 inserts a Record-Route header into the INVITE message to
 
Proxy 1 inserts a Record-Route header into the INVITE message to
Line 797: Line 667:
  
 
/* Proxy 1 challenges Alice for authentication */
 
/* Proxy 1 challenges Alice for authentication */
 
  
 
F2 407 Proxy Authorization Required Proxy 1 -> Alice
 
F2 407 Proxy Authorization Required Proxy 1 -> Alice
Line 812: Line 681:
 
  opaque="", stale=FALSE, algorithm=MD5
 
  opaque="", stale=FALSE, algorithm=MD5
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
  
 
F3 ACK Alice -> Proxy 1
 
F3 ACK Alice -> Proxy 1
Line 833: Line 695:
 
/* Alice responds be re-sending the INVITE with authentication
 
/* Alice responds be re-sending the INVITE with authentication
 
   credentials in it. */
 
   credentials in it. */
 
  
 
F4 INVITE Alice -> Proxy 1
 
F4 INVITE Alice -> Proxy 1
Line 865: Line 726:
 
2.  Client for Alice prepares to receive data on port 49172 from the
 
2.  Client for Alice prepares to receive data on port 49172 from the
 
network. */
 
network. */
 
 
 
 
 
 
 
  
 
F5 INVITE Proxy 1 -> Proxy 2
 
F5 INVITE Proxy 1 -> Proxy 2
Line 896: Line 750:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F6 100 Trying Proxy 1 -> Alice
 
F6 100 Trying Proxy 1 -> Alice
Line 908: Line 761:
 
CSeq: 2 INVITE
 
CSeq: 2 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F7 INVITE Proxy 2 -> Bob
 
F7 INVITE Proxy 2 -> Bob
Line 921: Line 773:
 
Record-Route: <sip:ss2.biloxi.example.com;lr>,
 
Record-Route: <sip:ss2.biloxi.example.com;lr>,
 
  <sip:ss1.atlanta.example.com;lr>
 
  <sip:ss1.atlanta.example.com;lr>
 
 
 
 
  
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
Line 941: Line 789:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F8 100 Trying Proxy 2 -> Proxy 1
 
F8 100 Trying Proxy 2 -> Proxy 1
Line 955: Line 802:
 
CSeq: 2 INVITE
 
CSeq: 2 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F9 180 Ringing Bob -> Proxy 2
 
F9 180 Ringing Bob -> Proxy 2
Line 975: Line 821:
 
Content-Length: 0
 
Content-Length: 0
  
 +
F10 180 Ringing Proxy 2 -> Proxy 1
  
 
+
SIP/2.0 180 Ringing
 
 
 
 
 
 
F10 180 Ringing Proxy 2 -> Proxy 1
 
 
 
SIP/2.0 180 Ringing
 
 
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
 
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
 
  ;received=192.0.2.111
 
  ;received=192.0.2.111
Line 995: Line 836:
 
CSeq: 2 INVITE
 
CSeq: 2 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F11 180 Ringing Proxy 1 -> Alice
 
F11 180 Ringing Proxy 1 -> Alice
Line 1,010: Line 850:
 
CSeq: 2 INVITE
 
CSeq: 2 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F12 200 OK Bob -> Proxy 2
 
F12 200 OK Bob -> Proxy 2
Line 1,027: Line 866:
  
 
CSeq: 2 INVITE
 
CSeq: 2 INVITE
 
 
 
 
  
 
Contact: <sip:[email protected];transport=tcp>
 
Contact: <sip:[email protected];transport=tcp>
Line 1,043: Line 878:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F13 200 OK Proxy 2 -> Proxy 1
 
F13 200 OK Proxy 2 -> Proxy 1
Line 1,069: Line 903:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F14 200 OK Proxy 1 -> Alice
 
F14 200 OK Proxy 1 -> Alice
Line 1,080: Line 913:
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
To: Bob <sip:[email protected]>;tag=314159
 
To: Bob <sip:[email protected]>;tag=314159
 
 
 
 
  
  
Line 1,098: Line 927:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F15 ACK Alice -> Proxy 1
 
F15 ACK Alice -> Proxy 1
Line 1,112: Line 940:
 
CSeq: 2 ACK
 
CSeq: 2 ACK
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F16 ACK Proxy 1 -> Proxy 2
 
F16 ACK Proxy 1 -> Proxy 2
Line 1,127: Line 954:
 
CSeq: 2 ACK
 
CSeq: 2 ACK
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F17 ACK Proxy 2 -> Bob
 
F17 ACK Proxy 2 -> Bob
Line 1,133: Line 959:
 
ACK sip:[email protected] SIP/2.0
 
ACK sip:[email protected] SIP/2.0
 
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
 
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
 
 
 
 
  
 
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
 
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Line 1,155: Line 977:
 
/* Again, note that the CSeq is NOT 3.  Alice and Bob maintain
 
/* Again, note that the CSeq is NOT 3.  Alice and Bob maintain
 
   their own separate CSeq counts */
 
   their own separate CSeq counts */
 
  
 
F18 BYE Bob -> Proxy 2
 
F18 BYE Bob -> Proxy 2
Line 1,169: Line 990:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F19 BYE Proxy 2 -> Proxy 1
 
F19 BYE Proxy 2 -> Proxy 1
Line 1,184: Line 1,004:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
  
 
F20 BYE Proxy 1 -> Alice
 
F20 BYE Proxy 1 -> Alice
Line 1,205: Line 1,019:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F21 200 OK Alice -> Proxy 1
 
F21 200 OK Alice -> Proxy 1
Line 1,221: Line 1,034:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F22 200 OK Proxy 1 -> Proxy 2
 
F22 200 OK Proxy 1 -> Proxy 2
Line 1,235: Line 1,047:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
 
  
 
F23 200 OK Proxy 2 -> Bob
 
F23 200 OK Proxy 2 -> Bob
Line 1,254: Line 1,058:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
=== Session with Multiple Proxy Authentication ===
 
=== Session with Multiple Proxy Authentication ===
Line 1,345: Line 1,107:
 
is sent containing the challenge information. A new INVITE (F4) is
 
is sent containing the challenge information. A new INVITE (F4) is
  
 
+
then sent containing the correct credentials and the call proceeds
 
 
 
 
 
 
 
 
then sent containing the correct credentials and the call proceeds
 
 
after Proxy 2 challenges and receives valid credentials.  The call
 
after Proxy 2 challenges and receives valid credentials.  The call
 
terminates when Bob disconnects by initiating a BYE message.
 
terminates when Bob disconnects by initiating a BYE message.
Line 1,383: Line 1,140:
  
 
/* Proxy 1 challenges Alice for authentication */
 
/* Proxy 1 challenges Alice for authentication */
 
  
 
F2 407 Proxy Authorization Required Proxy 1 -> Alice
 
F2 407 Proxy Authorization Required Proxy 1 -> Alice
Line 1,398: Line 1,154:
 
  opaque="", stale=FALSE, algorithm=MD5
 
  opaque="", stale=FALSE, algorithm=MD5
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
  
 
F3 ACK Alice -> Proxy 1
 
F3 ACK Alice -> Proxy 1
Line 1,419: Line 1,169:
 
   credentials in it.  The same Call-ID is used, so the CSeq is
 
   credentials in it.  The same Call-ID is used, so the CSeq is
 
   increased. */
 
   increased. */
 
  
 
F4 INVITE Alice -> Proxy 1
 
F4 INVITE Alice -> Proxy 1
Line 1,451: Line 1,200:
 
2.  Client for Alice prepares to receive data on port 49172 from the
 
2.  Client for Alice prepares to receive data on port 49172 from the
 
network. */
 
network. */
 
 
 
 
 
  
 
F5 100 Trying Proxy 1 -> Alice
 
F5 100 Trying Proxy 1 -> Alice
Line 1,467: Line 1,211:
 
CSeq: 2 INVITE
 
CSeq: 2 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F6 INVITE Proxy 1 -> Proxy 2
 
F6 INVITE Proxy 1 -> Proxy 2
Line 1,494: Line 1,237:
  
 
/* Proxy 2 challenges Alice for authentication */
 
/* Proxy 2 challenges Alice for authentication */
 
  
 
F7 407 Proxy Authorization Required Proxy 2 -> Proxy 1
 
F7 407 Proxy Authorization Required Proxy 2 -> Proxy 1
Line 1,503: Line 1,245:
 
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
 
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
 
  ;received=192.0.2.101
 
  ;received=192.0.2.101
 
 
 
 
 
  
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
Line 1,517: Line 1,254:
 
  opaque="", stale=FALSE, algorithm=MD5
 
  opaque="", stale=FALSE, algorithm=MD5
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F8 ACK Proxy 1 -> Proxy 2
 
F8 ACK Proxy 1 -> Proxy 2
Line 1,532: Line 1,268:
 
/* Proxy 1 forwards the challenge to Alice for authentication from
 
/* Proxy 1 forwards the challenge to Alice for authentication from
 
Proxy 2 */
 
Proxy 2 */
 
  
 
F9 407 Proxy Authorization Required Proxy 1 -> Alice
 
F9 407 Proxy Authorization Required Proxy 1 -> Alice
Line 1,547: Line 1,282:
 
  opaque="", stale=FALSE, algorithm=MD5
 
  opaque="", stale=FALSE, algorithm=MD5
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F10 ACK Alice -> Proxy 1
 
F10 ACK Alice -> Proxy 1
Line 1,557: Line 1,291:
 
To: Bob <sip:[email protected]>;tag=838209
 
To: Bob <sip:[email protected]>;tag=838209
  
 
 
 
 
  
 
CSeq: 2 ACK
 
CSeq: 2 ACK
Line 1,572: Line 1,302:
 
/* Alice responds be re-sending the INVITE with authentication
 
/* Alice responds be re-sending the INVITE with authentication
 
credentials for Proxy 1 AND Proxy 2.  */
 
credentials for Proxy 1 AND Proxy 2.  */
 
  
 
F11 INVITE Alice -> Proxy 1
 
F11 INVITE Alice -> Proxy 1
Line 1,606: Line 1,335:
 
/* Proxy 1 finds its credentials and authorizes Alice, forwarding the
 
/* Proxy 1 finds its credentials and authorizes Alice, forwarding the
 
INVITE to Proxy.  */
 
INVITE to Proxy.  */
 
 
 
 
 
 
 
 
  
 
F12 100 Trying Proxy 1 -> Alice
 
F12 100 Trying Proxy 1 -> Alice
Line 1,625: Line 1,346:
 
CSeq: 3 INVITE
 
CSeq: 3 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F13 INVITE Proxy 1 -> Proxy 2
 
F13 INVITE Proxy 1 -> Proxy 2
Line 1,657: Line 1,377:
 
/* Proxy 2 finds its credentials and authorizes Alice, forwarding the
 
/* Proxy 2 finds its credentials and authorizes Alice, forwarding the
 
INVITE to Bob.  */
 
INVITE to Bob.  */
 
 
 
 
 
 
 
 
 
 
  
 
F14 100 Trying Proxy 2 -> Proxy 1
 
F14 100 Trying Proxy 2 -> Proxy 1
Line 1,680: Line 1,390:
 
CSeq: 3 INVITE
 
CSeq: 3 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F15 INVITE Proxy 2 -> Bob
 
F15 INVITE Proxy 2 -> Bob
Line 1,710: Line 1,419:
  
 
/* Bob answers the call immediately */
 
/* Bob answers the call immediately */
 
 
 
 
 
 
 
 
 
 
  
 
F16 200 OK Bob -> Proxy 2
 
F16 200 OK Bob -> Proxy 2
Line 1,747: Line 1,446:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F17 200 OK Proxy 2 -> Proxy 1
 
F17 200 OK Proxy 2 -> Proxy 1
Line 1,769: Line 1,467:
 
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
 
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
 
s=-
 
s=-
 
 
 
 
  
 
c=IN IP4 192.0.2.201
 
c=IN IP4 192.0.2.201
Line 1,778: Line 1,472:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F18 200 OK Proxy 1 -> Alice
 
F18 200 OK Proxy 1 -> Alice
Line 1,802: Line 1,495:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F19 ACK Alice -> Proxy 1
 
F19 ACK Alice -> Proxy 1
Line 1,822: Line 1,514:
 
Proxy-Authorization: Digest username="alice",
 
Proxy-Authorization: Digest username="alice",
 
  realm="biloxi.example.com",
 
  realm="biloxi.example.com",
 
 
 
 
  
 
  nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
 
  nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
 
  uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"
 
  uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F20 ACK Proxy 1 -> Proxy 2
 
F20 ACK Proxy 1 -> Proxy 2
Line 1,850: Line 1,537:
 
  uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"
 
  uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F21 ACK Proxy 2 -> Bob
 
F21 ACK Proxy 2 -> Bob
Line 1,868: Line 1,554:
 
Content-Length: 0
 
Content-Length: 0
  
 +
=== Successful Session with Proxy Failure ===
  
 
+
  Alice          Proxy 1          Proxy 2            Bob
 
+
   |                |                |                |
 
+
   |  INVITE F1    |                |                |
 
+
   |--------------->|                |                |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
=== Successful Session with Proxy Failure ===
 
 
 
  Alice          Proxy 1          Proxy 2            Bob
 
   |                |                |                |
 
   |  INVITE F1    |                |                |
 
   |--------------->|                |                |
 
 
   |  INVITE F2    |                |                |
 
   |  INVITE F2    |                |                |
 
   |--------------->|                |                |
 
   |--------------->|                |                |
Line 1,926: Line 1,600:
 
   |                                |--------------->|
 
   |                                |--------------->|
 
   |                                |                |
 
   |                                |                |
 
 
 
 
 
 
  
 
In this scenario, Alice completes a call to Bob via a Proxy Server.
 
In this scenario, Alice completes a call to Bob via a Proxy Server.
Line 1,964: Line 1,632:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F2 INVITE Alice -> Proxy 1
 
F2 INVITE Alice -> Proxy 1
  
 
Same as Message F1
 
Same as Message F1
 
  
 
F3 INVITE Alice -> Proxy 1
 
F3 INVITE Alice -> Proxy 1
  
 
Same as Message F1
 
Same as Message F1
 
  
 
F4 INVITE Alice -> Proxy 1
 
F4 INVITE Alice -> Proxy 1
  
 
Same as Message F1
 
Same as Message F1
 
 
 
 
 
 
  
 
F5 INVITE Alice -> Proxy 1
 
F5 INVITE Alice -> Proxy 1
  
 
Same as Message F1
 
Same as Message F1
 
  
 
F6 INVITE Alice -> Proxy 1
 
F6 INVITE Alice -> Proxy 1
  
 
Same as Message F1
 
Same as Message F1
 
  
 
F7 INVITE Alice -> Proxy 1
 
F7 INVITE Alice -> Proxy 1
Line 2,001: Line 1,658:
  
 
/* Alice gives up on the unresponsive proxy */
 
/* Alice gives up on the unresponsive proxy */
 
  
 
F8 INVITE Alice -> Proxy 2
 
F8 INVITE Alice -> Proxy 2
Line 2,025: Line 1,681:
  
 
/* Proxy 2 challenges Alice for authentication */
 
/* Proxy 2 challenges Alice for authentication */
 
  
 
F9 407 Proxy Authorization Required Proxy 2 -> Alice
 
F9 407 Proxy Authorization Required Proxy 2 -> Alice
Line 2,034: Line 1,689:
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
To: Bob <sip:[email protected]>;tag=2421452
 
To: Bob <sip:[email protected]>;tag=2421452
 
 
 
 
  
  
Line 2,045: Line 1,696:
 
  opaque="", stale=FALSE, algorithm=MD5
 
  opaque="", stale=FALSE, algorithm=MD5
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F10 ACK Alice -> Proxy 2
 
F10 ACK Alice -> Proxy 2
Line 2,060: Line 1,710:
 
/* Alice responds by re-sending the INVITE with authentication
 
/* Alice responds by re-sending the INVITE with authentication
 
credentials in it.  */
 
credentials in it.  */
 
  
 
F11 INVITE Alice -> Proxy 2
 
F11 INVITE Alice -> Proxy 2
Line 2,087: Line 1,736:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
 
 
 
  
 
/* Proxy 2 accepts the credentials and forwards the INVITE to Bob.
 
/* Proxy 2 accepts the credentials and forwards the INVITE to Bob.
Line 2,096: Line 1,741:
 
network.
 
network.
 
*/
 
*/
 
  
 
F12 INVITE Proxy 2 -> Bob
 
F12 INVITE Proxy 2 -> Bob
Line 2,121: Line 1,765:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F13 100 Trying Proxy 2 -> Alice
 
F13 100 Trying Proxy 2 -> Alice
Line 2,133: Line 1,776:
 
CSeq: 2 INVITE
 
CSeq: 2 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F14 180 Ringing Bob -> Proxy 2
 
F14 180 Ringing Bob -> Proxy 2
Line 2,140: Line 1,782:
 
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
 
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
 
  ;received=192.0.2.222
 
  ;received=192.0.2.222
 
 
 
 
  
 
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
 
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Line 2,154: Line 1,792:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F15 180 Ringing Proxy 2 -> Alice
 
F15 180 Ringing Proxy 2 -> Alice
Line 2,168: Line 1,805:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F16 200 OK Bob -> Proxy 2
 
F16 200 OK Bob -> Proxy 2
Line 2,193: Line 1,829:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
 
 
 
 
 
  
 
F17 200 OK Proxy 2 -> Alice
 
F17 200 OK Proxy 2 -> Alice
Line 2,221: Line 1,851:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F18 ACK Alice -> Proxy 2
 
F18 ACK Alice -> Proxy 2
Line 2,234: Line 1,863:
 
CSeq: 2 ACK
 
CSeq: 2 ACK
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F19 ACK Proxy 2 -> Bob
 
F19 ACK Proxy 2 -> Bob
Line 2,246: Line 1,874:
 
To: Bob <sip:[email protected]>;tag=314159
 
To: Bob <sip:[email protected]>;tag=314159
  
 
 
 
 
  
 
CSeq: 2 ACK
 
CSeq: 2 ACK
Line 2,257: Line 1,881:
  
 
/* Bob Hangs Up with Alice. */
 
/* Bob Hangs Up with Alice. */
 
  
 
F20 BYE Bob -> Proxy 2
 
F20 BYE Bob -> Proxy 2
Line 2,270: Line 1,893:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F21 BYE Proxy 2 -> Alice
 
F21 BYE Proxy 2 -> Alice
Line 2,284: Line 1,906:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F22 200 OK Alice -> Proxy 2
 
F22 200 OK Alice -> Proxy 2
Line 2,298: Line 1,919:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
  
 
F23 200 OK Proxy 2 -> Bob
 
F23 200 OK Proxy 2 -> Bob
Line 2,316: Line 1,931:
 
Content-Length: 0
 
Content-Length: 0
  
 +
=== Session Through a SIP ALG ===
  
 
+
Alice            ALG          Proxy 2            Bob
 
+
   |                |                |                |
 
+
   |  INVITE F1    |                |                |
 
+
   |--------------->|  INVITE F2    |                |
 
+
   |    100 F3    |--------------->|  INVITE F4    |
 
+
   |<---------------|    100 F5    |--------------->|
 
+
   |                |<---------------|      180 F6    |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
=== Session Through a SIP ALG ===
 
 
 
Alice            ALG          Proxy 2            Bob
 
   |                |                |                |
 
   |  INVITE F1    |                |                |
 
   |--------------->|  INVITE F2    |                |
 
   |    100 F3    |--------------->|  INVITE F4    |
 
   |<---------------|    100 F5    |--------------->|
 
   |                |<---------------|      180 F6    |
 
 
   |                |    180 F7    |<---------------|
 
   |                |    180 F7    |<---------------|
 
   |    180 F8    |<---------------|                |
 
   |    180 F8    |<---------------|                |
Line 2,400: Line 1,974:
  
 
Also note that Proxy 2 does not Record-Route in this call flow.
 
Also note that Proxy 2 does not Record-Route in this call flow.
 
 
 
 
 
 
 
 
 
  
 
Message Details
 
Message Details
Line 2,441: Line 2,006:
 
/* Client for Alice prepares to receive data on port 49172 from the
 
/* Client for Alice prepares to receive data on port 49172 from the
 
network. */
 
network. */
 
  
 
F2 INVITE SIP ALG -> Proxy 2
 
F2 INVITE SIP ALG -> Proxy 2
Line 2,458: Line 2,022:
 
Proxy-Authorization: Digest username="alice",
 
Proxy-Authorization: Digest username="alice",
 
  realm="biloxi.example.com",
 
  realm="biloxi.example.com",
 
 
 
 
  
 
  nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="",
 
  nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="",
Line 2,476: Line 2,036:
 
m=audio 2000 RTP/AVP 0
 
m=audio 2000 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F3 100 Trying SIP ALG -> Alice
 
F3 100 Trying SIP ALG -> Alice
Line 2,493: Line 2,052:
 
determine where Bob is located. Based upon location analysis the call
 
determine where Bob is located. Based upon location analysis the call
 
is forwarded to Bob */
 
is forwarded to Bob */
 
  
 
F4 INVITE Proxy 2 -> Bob
 
F4 INVITE Proxy 2 -> Bob
Line 2,511: Line 2,069:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Type: application/sdp
 
Content-Type: application/sdp
 
 
 
 
  
 
Content-Length: 150
 
Content-Length: 150
Line 2,525: Line 2,079:
 
m=audio 2000 RTP/AVP 0
 
m=audio 2000 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F5 100 Trying Proxy 2 -> SIP ALG
 
F5 100 Trying Proxy 2 -> SIP ALG
Line 2,539: Line 2,092:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F6 180 Ringing Bob -> Proxy 2
 
F6 180 Ringing Bob -> Proxy 2
Line 2,557: Line 2,109:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F7 180 Ringing Proxy 2 -> SIP ALG
 
F7 180 Ringing Proxy 2 -> SIP ALG
Line 2,564: Line 2,115:
 
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
 
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
 
  ;received=192.0.2.128
 
  ;received=192.0.2.128
 
 
 
 
  
 
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
 
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Line 2,578: Line 2,125:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F8 180 Ringing SIP ALG -> Alice
 
F8 180 Ringing SIP ALG -> Alice
Line 2,592: Line 2,138:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F9 200 OK Bob -> Proxy 2
 
F9 200 OK Bob -> Proxy 2
Line 2,617: Line 2,162:
 
c=IN IP4 192.0.2.201
 
c=IN IP4 192.0.2.201
 
t=0 0
 
t=0 0
 
 
 
 
  
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F10 200 OK Proxy 2 -> SIP ALG
 
F10 200 OK Proxy 2 -> SIP ALG
Line 2,649: Line 2,189:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F11 200 OK SIP ALG -> Alice
 
F11 200 OK SIP ALG -> Alice
Line 2,670: Line 2,209:
 
c=IN IP4 192.0.2.128
 
c=IN IP4 192.0.2.128
 
t=0 0
 
t=0 0
 
 
 
 
  
 
m=audio 1734 RTP/AVP 0
 
m=audio 1734 RTP/AVP 0
Line 2,680: Line 2,215:
 
/* The ALG prepares to proxy packets from 192.0.2.128/
 
/* The ALG prepares to proxy packets from 192.0.2.128/
 
   1734 to 192.0.2.201/3456 */
 
   1734 to 192.0.2.201/3456 */
 
  
 
F12 ACK Alice -> SIP ALG
 
F12 ACK Alice -> SIP ALG
Line 2,693: Line 2,227:
 
CSeq: 1 ACK
 
CSeq: 1 ACK
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F13 ACK SIP ALG -> Bob
 
F13 ACK SIP ALG -> Bob
Line 2,712: Line 2,245:
  
 
/* Alice Hangs Up with Bob. */
 
/* Alice Hangs Up with Bob. */
 
  
 
F14 BYE Alice -> SIP ALG
 
F14 BYE Alice -> SIP ALG
Line 2,724: Line 2,256:
  
  
 
+
CSeq: 2 BYE
 
 
 
 
 
 
CSeq: 2 BYE
 
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F15 BYE SIP ALG -> Bob
 
F15 BYE SIP ALG -> Bob
Line 2,744: Line 2,271:
 
CSeq: 2 BYE
 
CSeq: 2 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F16 200 OK Bob -> SIP ALG
 
F16 200 OK Bob -> SIP ALG
Line 2,758: Line 2,284:
 
CSeq: 2 BYE
 
CSeq: 2 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F17 200 OK SIP ALG -> Alice
 
F17 200 OK SIP ALG -> Alice
Line 2,770: Line 2,295:
 
CSeq: 2 BYE
 
CSeq: 2 BYE
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
 
 
 
  
 
=== Session via Redirect and Proxy Servers with SDP in ACK ===
 
=== Session via Redirect and Proxy Servers with SDP in ACK ===
Line 2,822: Line 2,337:
  
 
The call is terminated when Bob sends a BYE message.
 
The call is terminated when Bob sends a BYE message.
 
 
 
 
 
 
 
 
 
 
 
  
 
Message Details
 
Message Details
Line 2,847: Line 2,351:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F2 302 Moved Temporarily Redirect Proxy -> Alice
 
F2 302 Moved Temporarily Redirect Proxy -> Alice
Line 2,860: Line 2,363:
 
Contact: <sip:[email protected];transport=tcp>
 
Contact: <sip:[email protected];transport=tcp>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F3 ACK Alice -> Redirect Server
 
F3 ACK Alice -> Redirect Server
Line 2,872: Line 2,374:
 
CSeq: 1 ACK
 
CSeq: 1 ACK
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F4 INVITE Alice -> Proxy 3
 
F4 INVITE Alice -> Proxy 3
Line 2,882: Line 2,383:
 
To: Bob <sip:[email protected]>
 
To: Bob <sip:[email protected]>
  
 
 
 
 
  
 
CSeq: 2 INVITE
 
CSeq: 2 INVITE
 
Contact: <sip:[email protected];transport=tcp>
 
Contact: <sip:[email protected];transport=tcp>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F5 INVITE Proxy 3 -> Bob
 
F5 INVITE Proxy 3 -> Bob
Line 2,906: Line 2,402:
 
Contact: <sip:[email protected];transport=tcp>
 
Contact: <sip:[email protected];transport=tcp>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F6 100 Trying Proxy 3 -> Alice
 
F6 100 Trying Proxy 3 -> Alice
Line 2,918: Line 2,413:
 
CSeq: 2 INVITE
 
CSeq: 2 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F7 180 Ringing Bob -> Proxy 3
 
F7 180 Ringing Bob -> Proxy 3
Line 2,935: Line 2,429:
 
Content-Length: 0
 
Content-Length: 0
  
 +
F8 180 Ringing Proxy 3 -> Alice
  
 
+
SIP/2.0 180 Ringing
 
+
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
 
 
 
 
 
 
F8 180 Ringing Proxy 3 -> Alice
 
 
 
SIP/2.0 180 Ringing
 
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
 
 
  ;received=192.0.2.101
 
  ;received=192.0.2.101
 
Record-Route: <sip:ss3.chicago.example.com;lr>
 
Record-Route: <sip:ss3.chicago.example.com;lr>
Line 2,953: Line 2,441:
 
Contact: <sip:[email protected];transport=tcp>
 
Contact: <sip:[email protected];transport=tcp>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F9 200 OK Bob -> Proxy 3
 
F9 200 OK Bob -> Proxy 3
Line 2,978: Line 2,465:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F10 200 OK Proxy -> Alice
 
F10 200 OK Proxy -> Alice
Line 2,988: Line 2,474:
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
To: Bob <sip:[email protected]>;tag=314159
 
To: Bob <sip:[email protected]>;tag=314159
 
 
 
 
  
  
Line 3,008: Line 2,490:
  
 
/* ACK contains SDP of Alice since none present in INVITE */
 
/* ACK contains SDP of Alice since none present in INVITE */
 
  
 
F11 ACK Alice -> Proxy 3
 
F11 ACK Alice -> Proxy 3
Line 3,030: Line 2,511:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F12 ACK Proxy 3 -> Bob
 
F12 ACK Proxy 3 -> Bob
Line 3,041: Line 2,521:
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
To: Bob <sip:[email protected]>;tag=314159
 
To: Bob <sip:[email protected]>;tag=314159
 
 
 
 
  
  
Line 3,062: Line 2,538:
  
 
/* Bob Hangs Up with Alice. */
 
/* Bob Hangs Up with Alice. */
 
  
 
F13 BYE Bob -> Proxy 3
 
F13 BYE Bob -> Proxy 3
Line 3,075: Line 2,550:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F14 BYE Proxy 3 -> Alice
 
F14 BYE Proxy 3 -> Alice
Line 3,089: Line 2,563:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F15 200 OK Alice -> Proxy 3
 
F15 200 OK Alice -> Proxy 3
  
 
SIP/2.0 200 OK
 
SIP/2.0 200 OK
 
 
 
 
  
 
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
 
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
Line 3,108: Line 2,577:
 
CSeq: 1 BYE
 
CSeq: 1 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F16 200 OK Proxy 3 -> Bob
 
F16 200 OK Proxy 3 -> Bob
Line 3,121: Line 2,589:
 
Content-Length: 0
 
Content-Length: 0
  
 +
=== Session with re-INVITE (IP Address Change) ===
  
 
+
   Alice                Proxy 2                Bob
 
+
     |  F1 INVITE        |                    |
 
+
     |------------------->|      F2 INVITE    |
 
+
     |  F3 100 Trying    |------------------->|
 
+
     |<-------------------|  F4 180 Ringing  |
 
+
     |  F5 180 Ringing  |<-------------------|
 
+
     |<-------------------|                    |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
=== Session with re-INVITE (IP Address Change) ===
 
 
 
 
 
   Alice                Proxy 2                Bob
 
     |  F1 INVITE        |                    |
 
     |------------------->|      F2 INVITE    |
 
     |  F3 100 Trying    |------------------->|
 
     |<-------------------|  F4 180 Ringing  |
 
     |  F5 180 Ringing  |<-------------------|
 
     |<-------------------|                    |
 
 
     |                    |    F6 200 OK      |
 
     |                    |    F6 200 OK      |
 
     |    F7 200 OK      |<-------------------|
 
     |    F7 200 OK      |<-------------------|
Line 3,193: Line 2,629:
 
the initial exchange.
 
the initial exchange.
  
 +
Message Details
  
 +
F1 INVITE Alice -> Proxy 2
  
 
+
INVITE sip:[email protected] SIP/2.0
 
+
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
 
+
Max-Forwards: 70
 
+
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
 
 
 
 
 
 
 
 
 
 
 
Message Details
 
 
 
F1 INVITE Alice -> Proxy 2
 
 
 
INVITE sip:[email protected] SIP/2.0
 
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
 
Max-Forwards: 70
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
 
To: Bob <sip:[email protected]>
 
To: Bob <sip:[email protected]>
  
Line 3,227: Line 2,651:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F2 INVITE Proxy 2 -> Bob
 
F2 INVITE Proxy 2 -> Bob
Line 3,251: Line 2,674:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
 
 
 
 
 
  
 
F3 100 Trying Proxy 2 -> Alice
 
F3 100 Trying Proxy 2 -> Alice
Line 3,268: Line 2,685:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F4 180 Ringing Bob -> Proxy 2
 
F4 180 Ringing Bob -> Proxy 2
Line 3,283: Line 2,699:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F5 180 Ringing Proxy 2 -> Alice
 
F5 180 Ringing Proxy 2 -> Alice
Line 3,296: Line 2,711:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F6 200 OK Bob -> Proxy 2
 
F6 200 OK Bob -> Proxy 2
Line 3,306: Line 2,720:
 
  ;received=192.0.2.101
 
  ;received=192.0.2.101
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
 
 
 
  
 
To: Bob <sip:[email protected]>;tag=314159
 
To: Bob <sip:[email protected]>;tag=314159
Line 3,325: Line 2,735:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F7 200 OK Proxy 2 -> Alice
 
F7 200 OK Proxy 2 -> Alice
Line 3,347: Line 2,756:
 
m=audio 3456 RTP/AVP 0
 
m=audio 3456 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F8 ACK Alice -> Bob
 
F8 ACK Alice -> Bob
Line 3,359: Line 2,767:
 
CSeq: 1 ACK
 
CSeq: 1 ACK
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
  
 
/* RTP streams are established between Alice and Bob */
 
/* RTP streams are established between Alice and Bob */
Line 3,369: Line 2,772:
 
/* Bob changes IP address and re-INVITEs Alice with new Contact and
 
/* Bob changes IP address and re-INVITEs Alice with new Contact and
 
SDP */
 
SDP */
 
  
 
F9 INVITE Bob -> Alice
 
F9 INVITE Bob -> Alice
Line 3,391: Line 2,793:
 
m=audio 47172 RTP/AVP 0
 
m=audio 47172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F10 200 OK Alice -> Bob
 
F10 200 OK Alice -> Bob
Line 3,412: Line 2,813:
 
c=IN IP4 192.0.2.101
 
c=IN IP4 192.0.2.101
 
t=0 0
 
t=0 0
 
 
 
 
  
 
m=audio 1000 RTP/AVP 0
 
m=audio 1000 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F11 ACK Bob -> Alice
 
F11 ACK Bob -> Alice
Line 3,435: Line 2,831:
  
 
/* Alice hangs up with Bob */
 
/* Alice hangs up with Bob */
 
  
 
F12 BYE Alice -> Bob
 
F12 BYE Alice -> Bob
Line 3,447: Line 2,842:
 
CSeq: 2 BYE
 
CSeq: 2 BYE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F13 200 OK Bob -> Alice
 
F13 200 OK Bob -> Alice
Line 3,460: Line 2,854:
 
CSeq: 2 BYE
 
CSeq: 2 BYE
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
 
 
  
 
=== Unsuccessful No Answer ===
 
=== Unsuccessful No Answer ===
Line 3,514: Line 2,899:
 
Note that the CANCEL message is acknowledged with a 200 OK on a hop
 
Note that the CANCEL message is acknowledged with a 200 OK on a hop
 
by hop basis, rather than end to end.
 
by hop basis, rather than end to end.
 
 
 
 
 
 
 
 
  
 
Message Details
 
Message Details
Line 3,554: Line 2,931:
 
/*Client for Alice prepares to receive data on port 49172 from the
 
/*Client for Alice prepares to receive data on port 49172 from the
 
network.*/
 
network.*/
 
  
 
F2 INVITE Proxy 1 -> Proxy 2
 
F2 INVITE Proxy 1 -> Proxy 2
Line 3,571: Line 2,947:
 
Content-Type: application/sdp
 
Content-Type: application/sdp
 
Content-Length: 151
 
Content-Length: 151
 
 
 
 
 
  
 
v=0
 
v=0
Line 3,584: Line 2,955:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F3 100 Trying Proxy 1 -> Alice
 
F3 100 Trying Proxy 1 -> Alice
Line 3,596: Line 2,966:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F4 INVITE Proxy 2 -> Bob
 
F4 INVITE Proxy 2 -> Bob
Line 3,624: Line 2,993:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
 
 
 
 
 
  
 
F5 100 Trying Proxy 2 -> Proxy 1
 
F5 100 Trying Proxy 2 -> Proxy 1
Line 3,643: Line 3,006:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F6 180 Ringing Bob -> Proxy 2
 
F6 180 Ringing Bob -> Proxy 2
Line 3,662: Line 3,024:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F7 180 Ringing Proxy 2 -> Proxy 1
 
F7 180 Ringing Proxy 2 -> Proxy 1
Line 3,677: Line 3,038:
  
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
 
 
 
  
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F8 180 Ringing Proxy 1 -> Alice
 
F8 180 Ringing Proxy 1 -> Alice
Line 3,699: Line 3,055:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F9 CANCEL Alice -> Proxy 1
 
F9 CANCEL Alice -> Proxy 1
Line 3,712: Line 3,067:
 
CSeq: 1 CANCEL
 
CSeq: 1 CANCEL
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F10 200 OK Proxy 1 -> Alice
 
F10 200 OK Proxy 1 -> Alice
Line 3,725: Line 3,079:
 
Content-Length: 0
 
Content-Length: 0
  
 +
F11 CANCEL Proxy 1 -> Proxy 2
  
 
+
CANCEL sip:[email protected] SIP/2.0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
F11 CANCEL Proxy 1 -> Proxy 2
 
 
 
CANCEL sip:[email protected] SIP/2.0
 
 
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
 
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
 
Max-Forwards: 70
 
Max-Forwards: 70
Line 3,745: Line 3,089:
 
CSeq: 1 CANCEL
 
CSeq: 1 CANCEL
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F12 200 OK Proxy 2 -> Proxy 1
 
F12 200 OK Proxy 2 -> Proxy 1
Line 3,757: Line 3,100:
 
CSeq: 1 CANCEL
 
CSeq: 1 CANCEL
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F13 CANCEL Proxy 2 -> Bob
 
F13 CANCEL Proxy 2 -> Bob
Line 3,769: Line 3,111:
 
CSeq: 1 CANCEL
 
CSeq: 1 CANCEL
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F14 200 OK Bob -> Proxy 2
 
F14 200 OK Bob -> Proxy 2
Line 3,781: Line 3,122:
 
CSeq: 1 CANCEL
 
CSeq: 1 CANCEL
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
  
 
F15 487 Request Terminated Bob -> Proxy 2
 
F15 487 Request Terminated Bob -> Proxy 2
Line 3,802: Line 3,137:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F16 ACK Proxy 2 -> Bob
 
F16 ACK Proxy 2 -> Bob
Line 3,814: Line 3,148:
 
CSeq: 1 ACK
 
CSeq: 1 ACK
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F17 487 Request Terminated Proxy 2 -> Proxy 1
 
F17 487 Request Terminated Proxy 2 -> Proxy 1
Line 3,828: Line 3,161:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
 
 
 
 
 
  
 
F18 ACK Proxy 1 -> Proxy 2
 
F18 ACK Proxy 1 -> Proxy 2
Line 3,851: Line 3,172:
 
CSeq: 1 ACK
 
CSeq: 1 ACK
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F19 487 Request Terminated Proxy 1 -> Alice
 
F19 487 Request Terminated Proxy 1 -> Alice
Line 3,862: Line 3,182:
  
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
  
 
F20 ACK Alice -> Proxy 1
 
F20 ACK Alice -> Proxy 1
Line 3,880: Line 3,199:
 
Content-Length: 0
 
Content-Length: 0
  
 +
=== Unsuccessful Busy ===
  
 
+
Alice          Proxy 1          Proxy 2            Bob
 
+
   |                |                |                |
 
+
   |  INVITE F1    |                |                |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
=== Unsuccessful Busy ===
 
 
 
Alice          Proxy 1          Proxy 2            Bob
 
   |                |                |                |
 
   |  INVITE F1    |                |                |
 
 
   |--------------->|  INVITE F2    |                |
 
   |--------------->|  INVITE F2    |                |
 
   |    100  F3    |--------------->|  INVITE F4    |
 
   |    100  F3    |--------------->|  INVITE F4    |
Line 3,914: Line 3,219:
 
   |--------------->|                |                |
 
   |--------------->|                |                |
 
   |                |                |                |
 
   |                |                |                |
 
  
 
In this scenario, Bob is busy and sends a 486 Busy Here response to
 
In this scenario, Bob is busy and sends a 486 Busy Here response to
Line 3,942: Line 3,246:
 
Content-Type: application/sdp
 
Content-Type: application/sdp
 
Content-Length: 151
 
Content-Length: 151
 
 
 
 
 
  
 
v=0
 
v=0
Line 3,958: Line 3,257:
 
/*Client for Alice prepares to receive data on port 49172 from the
 
/*Client for Alice prepares to receive data on port 49172 from the
 
network.*/
 
network.*/
 
  
 
F2 INVITE Proxy 1 -> Proxy 2
 
F2 INVITE Proxy 1 -> Proxy 2
Line 3,983: Line 3,281:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F3 100 Trying Proxy 1 -> Alice
 
F3 100 Trying Proxy 1 -> Alice
Line 3,995: Line 3,292:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
  
 
F4 INVITE Proxy 2 -> Bob
 
F4 INVITE Proxy 2 -> Bob
Line 4,026: Line 3,319:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F5 100 Trying Proxy 2 -> Proxy 1
 
F5 100 Trying Proxy 2 -> Proxy 1
Line 4,040: Line 3,332:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F6 486 Busy Here Bob -> Proxy 2
 
F6 486 Busy Here Bob -> Proxy 2
Line 4,048: Line 3,339:
 
  ;received=192.0.2.222
 
  ;received=192.0.2.222
 
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
 
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
 
 
 
 
  
 
  ;received=192.0.2.111
 
  ;received=192.0.2.111
Line 4,061: Line 3,348:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F7 ACK Proxy 2 -> Bob
 
F7 ACK Proxy 2 -> Bob
Line 4,073: Line 3,359:
 
CSeq: 1 ACK
 
CSeq: 1 ACK
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F8 486 Busy Here Proxy 2 -> Proxy 1
 
F8 486 Busy Here Proxy 2 -> Proxy 1
Line 4,087: Line 3,372:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F9 ACK Proxy 1 -> Proxy 2
 
F9 ACK Proxy 1 -> Proxy 2
Line 4,099: Line 3,383:
 
CSeq: 1 ACK
 
CSeq: 1 ACK
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
  
 
F10 486 Busy Here Proxy 1 -> Alice
 
F10 486 Busy Here Proxy 1 -> Alice
Line 4,116: Line 3,394:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F11 ACK Alice -> Proxy 1
 
F11 ACK Alice -> Proxy 1
Line 4,134: Line 3,411:
 
Content-Length: 0
 
Content-Length: 0
  
 
+
3.10.  Unsuccessful No Response from User Agent
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
=== Unsuccessful No Response from User Agent ===
 
  
 
Alice          Proxy 1          Proxy 2            Bob
 
Alice          Proxy 1          Proxy 2            Bob
Line 4,207: Line 3,459:
 
Proxy-Authorization: Digest username="alice",
 
Proxy-Authorization: Digest username="alice",
 
  realm="atlanta.example.com",
 
  realm="atlanta.example.com",
 
 
 
 
  
 
  nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="",
 
  nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="",
Line 4,228: Line 3,476:
 
/*Client for Alice prepares to receive data on port 49172 from the
 
/*Client for Alice prepares to receive data on port 49172 from the
 
network.*/
 
network.*/
 
  
 
F2 INVITE Proxy 1 -> Proxy 2
 
F2 INVITE Proxy 1 -> Proxy 2
Line 4,253: Line 3,500:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F3 100 Trying Proxy 1 -> Alice
 
F3 100 Trying Proxy 1 -> Alice
Line 4,260: Line 3,506:
 
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
 
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
 
  ;received=192.0.2.101
 
  ;received=192.0.2.101
 
 
 
 
  
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
 
From: Alice <sip:[email protected]>;tag=9fxced76sl
Line 4,270: Line 3,512:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F4 INVITE Proxy 2 -> Bob
 
F4 INVITE Proxy 2 -> Bob
Line 4,298: Line 3,539:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F5 100 Trying Proxy 2 -> Proxy 1
 
F5 100 Trying Proxy 2 -> Proxy 1
Line 4,313: Line 3,553:
 
Content-Length: 0
 
Content-Length: 0
  
 +
F6 INVITE Proxy 2 -> Bob
  
 +
Resend of Message F4
  
 +
F7 INVITE Proxy 2 -> Bob
  
 +
Resend of Message F4
  
 
+
F8 INVITE Proxy 2 -> Bob
 
 
F6 INVITE Proxy 2 -> Bob
 
 
 
Resend of Message F4
 
 
 
 
 
F7 INVITE Proxy 2 -> Bob
 
 
 
Resend of Message F4
 
 
 
 
 
F8 INVITE Proxy 2 -> Bob
 
  
 
Resend of Message F4
 
Resend of Message F4
 
  
 
F9 INVITE Proxy 2 -> Bob
 
F9 INVITE Proxy 2 -> Bob
  
 
Resend of Message F4
 
Resend of Message F4
 
  
 
F10 INVITE Proxy 2 -> Bob
 
F10 INVITE Proxy 2 -> Bob
  
 
Resend of Message F4
 
Resend of Message F4
 
  
 
F11 INVITE Proxy 2 -> Bob
 
F11 INVITE Proxy 2 -> Bob
Line 4,349: Line 3,578:
  
 
/* Proxy 2 gives up */
 
/* Proxy 2 gives up */
 
  
 
F12 480 No Response Proxy 2 -> Proxy 1
 
F12 480 No Response Proxy 2 -> Proxy 1
Line 4,363: Line 3,591:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
  
 
F13 ACK Proxy 1 -> Proxy 2
 
F13 ACK Proxy 1 -> Proxy 2
Line 4,381: Line 3,602:
 
CSeq: 1 ACK
 
CSeq: 1 ACK
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F14 480 No Response Proxy 1 -> Alice
 
F14 480 No Response Proxy 1 -> Alice
Line 4,393: Line 3,613:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F15 ACK Alice -> Proxy 1
 
F15 ACK Alice -> Proxy 1
Line 4,411: Line 3,630:
 
Content-Length: 0
 
Content-Length: 0
  
 
+
3.11.  Unsuccessful Temporarily Unavailable
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
=== Unsuccessful Temporarily Unavailable ===
 
  
 
Alice          Proxy 1          Proxy 2            Bob
 
Alice          Proxy 1          Proxy 2            Bob
Line 4,446: Line 3,652:
 
   |--------------->|                |                |
 
   |--------------->|                |                |
 
   |                |                |                |
 
   |                |                |                |
 
  
 
In this scenario, Bob initially sends a 180 Ringing response to
 
In this scenario, Bob initially sends a 180 Ringing response to
Line 4,473: Line 3,678:
 
Content-Type: application/sdp
 
Content-Type: application/sdp
  
 +
Content-Length: 151
  
 
+
v=0
 
 
 
 
Content-Length: 151
 
 
 
v=0
 
 
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
 
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
 
s=-
 
s=-
Line 4,489: Line 3,690:
 
/*Client for Alice prepares to receive data on port 49172 from the
 
/*Client for Alice prepares to receive data on port 49172 from the
 
network.*/
 
network.*/
 
  
 
F2 INVITE Proxy 1 -> Proxy 2
 
F2 INVITE Proxy 1 -> Proxy 2
Line 4,514: Line 3,714:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F3 100 Trying Proxy 1 -> Alice
 
F3 100 Trying Proxy 1 -> Alice
Line 4,525: Line 3,724:
  
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
 
 
 
  
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F4 INVITE Proxy 2 -> Bob
 
F4 INVITE Proxy 2 -> Bob
Line 4,559: Line 3,753:
 
m=audio 49172 RTP/AVP 0
 
m=audio 49172 RTP/AVP 0
 
a=rtpmap:0 PCMU/8000
 
a=rtpmap:0 PCMU/8000
 
  
 
F5 100 Trying Proxy 2 -> Proxy 1
 
F5 100 Trying Proxy 2 -> Proxy 1
Line 4,573: Line 3,766:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
 
 
  
 
F6 180 Ringing Bob -> Proxy 2
 
F6 180 Ringing Bob -> Proxy 2
Line 4,600: Line 3,784:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F7 180 Ringing Proxy 2 -> Proxy 1
 
F7 180 Ringing Proxy 2 -> Proxy 1
Line 4,617: Line 3,800:
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F8 180 Ringing Proxy 1 -> Alice
 
F8 180 Ringing Proxy 1 -> Alice
Line 4,631: Line 3,813:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Contact: <sip:[email protected]>
 
Contact: <sip:[email protected]>
 
 
 
 
  
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F9 480 Temporarily Unavailable Bob -> Proxy 2
 
F9 480 Temporarily Unavailable Bob -> Proxy 2
Line 4,653: Line 3,830:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F10 ACK Proxy 2 -> Bob
 
F10 ACK Proxy 2 -> Bob
Line 4,665: Line 3,841:
 
CSeq: 1 ACK
 
CSeq: 1 ACK
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F11 480 Temporarily Unavailable Proxy 2 -> Proxy 1
 
F11 480 Temporarily Unavailable Proxy 2 -> Proxy 1
Line 4,679: Line 3,854:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
 
 
  
 
F12 ACK Proxy 1 -> Proxy 2
 
F12 ACK Proxy 1 -> Proxy 2
Line 4,699: Line 3,865:
 
CSeq: 1 ACK
 
CSeq: 1 ACK
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F13 480 Temporarily Unavailable Proxy 1 -> Alice
 
F13 480 Temporarily Unavailable Proxy 1 -> Alice
Line 4,711: Line 3,876:
 
CSeq: 1 INVITE
 
CSeq: 1 INVITE
 
Content-Length: 0
 
Content-Length: 0
 
  
 
F14 ACK Alice -> Proxy 1
 
F14 ACK Alice -> Proxy 1
Line 4,728: Line 3,892:
 
CSeq: 1 ACK
 
CSeq: 1 ACK
 
Content-Length: 0
 
Content-Length: 0
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
== Security Considerations ==
 
== Security Considerations ==
Line 4,756: Line 3,907:
 
HTTP Digest is provided in [[RFC3261|RFC 3261]] [1].  The use of TLS and the
 
HTTP Digest is provided in [[RFC3261|RFC 3261]] [1].  The use of TLS and the
 
Secure SIP (sips) URI scheme provides a better level of security
 
Secure SIP (sips) URI scheme provides a better level of security
including two-way authentication.  S/MIME can provide end-to-end
+
including two-way authentication.  S/MIME can provide end-to-end
confidentiality and integrity protection of message bodies, as
+
confidentiality and integrity protection of message bodies, as
described in [[RFC3261|RFC 3261]].
+
described in [[RFC3261|RFC 3261]].
 +
 
 +
== References ==
 +
 
 +
=== Normative References ===
 +
 
 +
[1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
 +
    Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP:
 +
    Session Initiation Protocol", [[RFC3261|RFC 3261]], June 2002.
 +
 
 +
[2] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with
 +
    SDP", [[RFC3264|RFC 3264]], April 2002.
 +
 
 +
[3] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach,
 +
    P., Luotonen, A. and L. Stewart, "HTTP authentication: Basic and
 +
    Digest Access Authentication", [[RFC2617|RFC 2617]], June 1999.
 +
 
 +
[4] Bradner, S., "Key words for use in RFCs to Indicate Requirement
 +
    Levels", [[BCP14|BCP 14]], [[RFC2119|RFC 2119]], March 1997.
 +
 
 +
=== Informative References ===
  
== References ==
+
[5] Johnston, A., Donovan, S., Sparks, R., Cunningham, C. and K.
 +
    Summers, "Session Initiation Protocol (SIP) Public Switched
 +
    Telephone Network (PSTN) Call Flows", [[BCP76|BCP 76]], [[RFC3666|RFC 3666]], December
 +
    2003.
  
=== Normative References ===
 
 
[1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,    Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP:    Session Initiation Protocol", [[RFC3261|RFC 3261]], June 2002.
 
[2] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with    SDP", [[RFC3264|RFC 3264]], April 2002.
 
[3] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach,    P., Luotonen, A. and L. Stewart, "HTTP authentication: Basic and    Digest Access Authentication", [[RFC2617|RFC 2617]], June 1999.
 
[4] Bradner, S., "Key words for use in RFCs to Indicate Requirement    Levels", [[BCP14|BCP 14]], [[RFC2119|RFC 2119]], March 1997.
 
=== Informative References ===
 
 
[5] Johnston, A., Donovan, S., Sparks, R., Cunningham, C. and K.    Summers, "Session Initiation Protocol (SIP) Public Switched    Telephone Network (PSTN) Call Flows", [[BCP76|BCP 76]], [[RFC3666|RFC 3666]], December    2003.
 
 
== Intellectual Property Statement ==
 
== Intellectual Property Statement ==
  
Line 4,776: Line 3,941:
 
intellectual property or other rights that might be claimed to
 
intellectual property or other rights that might be claimed to
 
pertain to the implementation or use of the technology described in
 
pertain to the implementation or use of the technology described in
 
 
 
 
  
 
this document or the extent to which any license under such rights
 
this document or the extent to which any license under such rights
Line 4,825: Line 3,986:
 
Truetken, and others from MCI WorldCom, 3Com, Cisco, Lucent and
 
Truetken, and others from MCI WorldCom, 3Com, Cisco, Lucent and
 
Nortel.
 
Nortel.
 
 
 
 
 
 
 
 
  
 
== Authors' Addresses ==
 
== Authors' Addresses ==
Line 4,881: Line 4,034:
  
  
 
 
 
 
 
  
 
== Full Copyright Statement ==
 
== Full Copyright Statement ==
Line 4,919: Line 4,067:
 
Funding for the RFC Editor function is currently provided by the
 
Funding for the RFC Editor function is currently provided by the
 
Internet Society.
 
Internet Society.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
[[Category:Best Current Practice]]
 
[[Category:Best Current Practice]]

Latest revision as of 06:33, 4 October 2020

Network Working Group A. Johnston Request for Comments: 3665 MCI BCP: 75 S. Donovan Category: Best Current Practice R. Sparks

                                                       C. Cunningham
                                                         dynamicsoft
                                                          K. Summers
                                                               Sonus
                                                       December 2003
  Session Initiation Protocol (SIP) Basic Call Flow Examples

Status of this Memo

This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements. Distribution of this memo is unlimited.

Copyright Notice

Copyright (C) The Internet Society (2003). All Rights Reserved.

Abstract

This 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.

   3.6.  Session via Redirect and Proxy Servers with SDP in ACK . 54

Overview

The call flows shown in this document were developed in the design of a SIP IP communications network. They represent an example minimum set of functionality.

It is the hope of the authors that this document will be useful for SIP implementers, designers, and protocol researchers alike and will help further the goal of a standard implementation of RFC 3261 [1]. These flows represent carefully checked and working group reviewed scenarios of the most basic examples as a companion to the specifications.

These call flows are based on the current version 2.0 of SIP in RFC 3261 [1] with SDP usage described in RFC 3264 [2]. Other RFCs also comprise the SIP standard but are not used in this set of basic call flows.

Call flow examples of SIP interworking with the PSTN through gateways are contained in a companion document, RFC 3666 [5].

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 BCP 14, RFC 2119 [4].

General Assumptions

A number of architecture, network, and protocol assumptions underlie the call flows in this document. Note that these assumptions are not requirements. They are outlined in this section so that they may be taken into consideration and to aid in the understanding of the call flow examples.

The authentication of SIP User Agents in these example call flows is performed using HTTP Digest as defined in [1] and [3].

Some Proxy Servers in these call flows insert Record-Route headers into requests to ensure that they are in the signaling path for future message exchanges.

These flows show TCP, TLS, and UDP for transport. See the discussion in RFC 3261 for details on the transport issues for SIP.

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. */

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 basic 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 HTTP Digest responses are not actual MD5 encodings. Call-IDs are often repeated, and CSeq counts often begin at 1. Header fields are usually shown in the same order. Usually only the minimum required header field set is shown, others that would normally be present such as Accept, Supported, Allow, etc are not shown.

Actors:

Element Display Name URI IP Address


------------ --- ----------

User Agent Alice [email protected] 192.0.2.101 User Agent Bob [email protected] 192.0.2.201 User Agent [email protected] 192.0.2.100 Proxy Server ss1.atlanta.example.com 192.0.2.111 Proxy/Registrar ss2.biloxi.example.com 192.0.2.222 Proxy Server ss3.chicago.example.com 192.0.2.233 ALG alg1.atlanta.example.com 192.0.2.128

SIP Registration

Registration binds a particular device Contact URI with a SIP user Address of Record (AOR).

Successful New Registration

Bob                        SIP Server
 |                               |
 |          REGISTER F1          |
 |------------------------------>|
 |      401 Unauthorized F2      |
 |<------------------------------|
 |          REGISTER F3          |
 |------------------------------>|
 |            200 OK F4          |
 |<------------------------------|
 |                               |

Bob sends a SIP REGISTER request to the SIP server. The request includes the user's contact list. This flow shows the use of HTTP Digest for authentication using TLS transport. TLS transport is used due to the lack of integrity protection in HTTP Digest and the danger of registration hijacking without it, as described in RFC 3261 [1]. The SIP server provides a challenge to Bob. Bob enters her/his valid user ID and password. Bob's SIP client encrypts the user information according to the challenge issued by the SIP server and sends the response to the SIP server. The SIP server validates the user's credentials. It registers the user in its contact database and returns a response (200 OK) to Bob's SIP client. The response includes the user's current contact list in Contact headers. The format of the authentication shown is HTTP digest. It is assumed that Bob has not previously registered with this Server.

Message Details

F1 REGISTER Bob -> SIP Server

REGISTER sips:ss2.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7 Max-Forwards: 70 From: Bob <sips:[email protected]>;tag=a73kszlfl To: Bob <sips:[email protected]> Call-ID: [email protected] CSeq: 1 REGISTER Contact: <sips:[email protected]> Content-Length: 0

F2 401 Unauthorized SIP Server -> Bob

SIP/2.0 401 Unauthorized Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7

;received=192.0.2.201

From: Bob <sips:[email protected]>;tag=a73kszlfl To: Bob <sips:[email protected]>;tag=1410948204 Call-ID: [email protected] CSeq: 1 REGISTER WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",

nonce="ea9c8e88df84f1cec4341ae6cbe5a359",
opaque="", stale=FALSE, algorithm=MD5

Content-Length: 0

F3 REGISTER Bob -> SIP Server

REGISTER sips:ss2.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92 Max-Forwards: 70 From: Bob <sips:[email protected]>;tag=ja743ks76zlflH To: Bob <sips:[email protected]> Call-ID: [email protected] CSeq: 2 REGISTER Contact: <sips:[email protected]> Authorization: Digest username="bob", realm="atlanta.example.com"

nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="dfe56131d1958046689d83306477ecc"

Content-Length: 0

F4 200 OK SIP Server -> Bob

SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92

;received=192.0.2.201

From: Bob <sips:[email protected]>;tag=ja743ks76zlflH To: Bob <sips:[email protected]>;tag=37GkEhwl6 Call-ID: [email protected] CSeq: 2 REGISTER Contact: <sips:[email protected]>;expires=3600 Content-Length: 0

Update of Contact List

Bob SIP Server

 |                               |
 |          REGISTER F1          |
 |------------------------------>|
 |            200 OK F2          |
 |<------------------------------|
 |                               |

Bob wishes to update the list of addresses where the SIP server will redirect or forward INVITE requests.

Bob sends a SIP REGISTER request to the SIP server. Bob's request includes an updated contact list. Since the user already has authenticated with the server, the user supplies authentication credentials with the request and is not challenged by the server. The SIP server validates the user's credentials. It registers the user in its contact database, updates the user's contact list, and returns a response (200 OK) to Bob's SIP client. The response includes the user's current contact list in Contact headers.

Message Details

F1 REGISTER Bob -> SIP Server

REGISTER sips:ss2.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7 Max-Forwards: 70 From: Bob <sips:[email protected]>;tag=a73kszlfl To: Bob <sips:[email protected]> Call-ID: [email protected] CSeq: 1 REGISTER Contact: mailto:[email protected] Authorization: Digest username="bob", realm="atlanta.example.com",

qop="auth", nonce="1cec4341ae6cbe5a359ea9c8e88df84f", opaque="",
uri="sips:ss2.biloxi.example.com",
response="71ba27c64bd01de719686aa4590d5824"

Content-Length: 0

F2 200 OK SIP Server -> Bob

SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7

;received=192.0.2.201

From: Bob <sips:[email protected]>;tag=a73kszlfl To: Bob <sips:[email protected]>;tag=34095828jh

Call-ID: [email protected] CSeq: 1 REGISTER Contact: <sips:[email protected]>;expires=3600 Contact: <mailto:[email protected]>;expires=4294967295 Content-Length: 0

Request for Current Contact List

Bob SIP Server

 |                               |
 |          REGISTER F1          |
 |------------------------------>|
 |            200 OK F2          |
 |<------------------------------|
 |                               |

Bob sends a register request to the Proxy Server containing no Contact headers, indicating the user wishes to query the server for the user's current contact list. Since the user already has authenticated with the server, the user supplies authentication credentials with the request and is not challenged by the server. The SIP server validates the user's credentials. The server returns a response (200 OK) which includes the user's current registration list in Contact headers.

Message Details

F1 REGISTER Bob -> SIP Server

REGISTER sips:ss2.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7 Max-Forwards: 70 From: Bob <sips:[email protected]>;tag=a73kszlfl To: Bob <sips:[email protected]> Call-ID: [email protected] CSeq: 1 REGISTER Authorization: Digest username="bob", realm="atlanta.example.com",

nonce="df84f1cec4341ae6cbe5ap359a9c8e88", opaque="",
uri="sips:ss2.biloxi.example.com",
response="aa7ab4678258377c6f7d4be6087e2f60"

Content-Length: 0

F2 200 OK SIP Server -> Bob

SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7

;received=192.0.2.201

From: Bob <sips:[email protected]>;tag=a73kszlfl To: Bob <sips:[email protected]>;tag=jqoiweu75 Call-ID: [email protected] CSeq: 1 REGISTER Contact: <sips:[email protected]>;expires=3600 Contact: <mailto:[email protected]>;expires=4294967295 Content-Length: 0

Cancellation of Registration

Bob SIP Server

 |                               |
 |          REGISTER F1          |
 |------------------------------>|
 |            200 OK F2          |
 |<------------------------------|
 |                               |

Bob wishes to cancel their registration with the SIP server. Bob sends a SIP REGISTER request to the SIP server. The request has an expiration period of 0 and applies to all existing contact locations. Since the user already has authenticated with the server, the user supplies authentication credentials with the request and is not challenged by the server. The SIP server validates the user's credentials. It clears the user's contact list, and returns a response (200 OK) to Bob's SIP client.

Message Details

F1 REGISTER Bob -> SIP Server

REGISTER sips:ss2.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7 Max-Forwards: 70 From: Bob <sips:[email protected]>;tag=a73kszlfl To: Bob <sips:[email protected]> Call-ID: [email protected] CSeq: 1 REGISTER Expires: 0 Contact: * Authorization: Digest username="bob", realm="atlanta.example.com",

nonce="88df84f1cac4341aea9c8ee6cbe5a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="ff0437c51696f9a76244f0cf1dbabbea"

Content-Length: 0

F2 200 OK SIP Server -> Bob

SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7

;received=192.0.2.201

From: Bob <sips:[email protected]>;tag=a73kszlfl To: Bob <sips:[email protected]>;tag=1418nmdsrf Call-ID: [email protected] CSeq: 1 REGISTER Content-Length: 0

Unsuccessful Registration

Bob SIP Server

 |                               |
 |          REGISTER F1          |
 |------------------------------>|
 |      401 Unauthorized F2      |
 |<------------------------------|
 |          REGISTER F3          |
 |------------------------------>|
 |      401 Unauthorized F4      |
 |<------------------------------|
 |                               |

Bob sends a SIP REGISTER request to the SIP Server. The SIP server provides a challenge to Bob. Bob enters her/his user ID and password. Bob's SIP client encrypts the user information according to the challenge issued by the SIP server and sends the response to the SIP server. The SIP server attempts to validate the user's credentials, but they are not valid (the user's password does not match the password established for the user's account). The server returns a response (401 Unauthorized) to Bob's SIP client.

Message Details

F1 REGISTER Bob -> SIP Server

REGISTER sips:ss2.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7

;received=192.0.2.201

From: Bob <sips:[email protected]>;tag=a73kszlfl To: Bob <sips:[email protected]> Call-ID: [email protected] CSeq: 1 REGISTER Contact: <sips:[email protected]> Content-Length: 0

F2 Unauthorized SIP Server -> Bob

SIP/2.0 401 Unauthorized Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7

;received=192.0.2.201

From: Bob <sips:[email protected]>;tag=a73kszlfl To: Bob <sips:[email protected]>;tag=1410948204 Call-ID: [email protected] CSeq: 1 REGISTER WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",

nonce="f1cec4341ae6ca9c8e88df84be55a359",
opaque="", stale=FALSE, algorithm=MD5

Content-Length: 0

F3 REGISTER Bob -> SIP Server

REGISTER sips:ss2.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92 Max-Forwards: 70 From: Bob <sips:[email protected]>;tag=JueHGuidj28dfga To: Bob <sips:[email protected]> Call-ID: [email protected] CSeq: 2 REGISTER Contact: <sips:[email protected]> Authorization: Digest username="bob", realm="atlanta.example.com",

nonce="f1cec4341ae6ca9c8e88df84be55a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="61f8470ceb87d7ebf508220214ed438b"

Content-Length: 0

/* The response above encodes the incorrect password */

F4 401 Unauthorized SIP Server -> Bob

SIP/2.0 401 Unauthorized Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92

;received=192.0.2.201

From: Bob <sips:[email protected]>;tag=JueHGuidj28dfga To: Bob <sips:[email protected]>;tag=1410948204 Call-ID: [email protected] CSeq: 2 REGISTER WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",

nonce="84f1c1ae6cbe5ua9c8e88dfa3ecm3459",
opaque="", stale=FALSE, algorithm=MD5

Content-Length: 0

SIP Session Establishment

This section details session establishment between two SIP User Agents (UAs): Alice and Bob. Alice (sip:[email protected]) and Bob (sip:[email protected]) are assumed to be SIP phones or SIP-enabled devices. The successful calls show the initial signaling, the exchange of media information in the form of SDP payloads, the establishment of the media session, then finally the termination of the call.

HTTP Digest authentication is used by Proxy Servers to authenticate the caller Alice. It is assumed that Bob has registered with Proxy Server Proxy 2 as per Section 2 to be able to receive the calls via the Proxy.

Successful Session Establishment

Alice Bob

 |                        |
 |       INVITE F1        |
 |----------------------->|
 |    180 Ringing F2      |
 |<-----------------------|
 |                        |
 |       200 OK F3        |
 |<-----------------------|
 |         ACK F4         |
 |----------------------->|
 |   Both Way RTP Media   |
 |<======================>|
 |                        |
 |         BYE F5         |
 |<-----------------------|
 |       200 OK F6        |
 |----------------------->|
 |                        |

In this scenario, Alice completes a call to Bob directly.

Message Details

F1 INVITE Alice -> Bob

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>

Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F2 180 Ringing Bob -> Alice

SIP/2.0 180 Ringing Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=8321234356 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected];transport=tcp> Content-Length: 0

F3 200 OK Bob -> Alice

SIP/2.0 200 OK Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=8321234356 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F4 ACK Alice -> Bob

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bd5 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=8321234356 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

/* RTP streams are established between Alice and Bob */

/* Bob Hangs Up with Alice. Note that the CSeq is NOT 2, since

  Alice and Bob maintain their own independent CSeq counts.
  (The INVITE was request 1 generated by Alice, and the BYE is
  request 1 generated by Bob) */

F5 BYE Bob -> Alice

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 From: Bob <sip:[email protected]>;tag=8321234356 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F6 200 OK Alice -> Bob

SIP/2.0 200 OK Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7

;received=192.0.2.201

From: Bob <sip:[email protected]>;tag=8321234356 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

Session Establishment Through Two Proxies

Alice Proxy 1 Proxy 2 Bob

 |                |                |                |
 |   INVITE F1    |                |                |
 |--------------->|                |                |
 |     407 F2     |                |                |
 |<---------------|                |                |
 |     ACK F3     |                |                |
 |--------------->|                |                |
 |   INVITE F4    |                |                |
 |--------------->|   INVITE F5    |                |
 |     100  F6    |--------------->|   INVITE F7    |
 |<---------------|     100  F8    |--------------->|
 |                |<---------------|                |
 |                |                |     180 F9     |
 |                |    180 F10     |<---------------|
 |     180 F11    |<---------------|                |
 |<---------------|                |     200 F12    |
 |                |    200 F13     |<---------------|
 |     200 F14    |<---------------|                |
 |<---------------|                |                |
 |     ACK F15    |                |                |
 |--------------->|    ACK F16     |                |
 |                |--------------->|     ACK F17    |
 |                |                |--------------->|
 |                Both Way RTP Media                |
 |<================================================>|
 |                |                |     BYE F18    |
 |                |    BYE F19     |<---------------|
 |     BYE F20    |<---------------|                |
 |<---------------|                |                |
 |     200 F21    |                |                |
 |--------------->|     200 F22    |                |
 |                |--------------->|     200 F23    |
 |                |                |--------------->|
 |                |                |                |

In this scenario, Alice completes a call to Bob using two proxies Proxy 1 and Proxy 2. The initial INVITE (F1) contains a pre-loaded Route header with the address of Proxy 1 (Proxy 1 is configured as a default outbound proxy for Alice). The request does not contain the Authorization credentials Proxy 1 requires, so a 407 Proxy Authorization response is sent containing the challenge information. A new INVITE (F4) is then sent containing the correct credentials and the call proceeds. The call terminates when Bob disconnects by initiating a BYE message.

Proxy 1 inserts a Record-Route header into the INVITE message to ensure that it is present in all subsequent message exchanges. Proxy 2 also inserts itself into the Record-Route header. The ACK (F15) and BYE (F18) both have a Route header.

Message Details

F1 INVITE Alice -> Proxy 1

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43 Max-Forwards: 70 Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* Proxy 1 challenges Alice for authentication */

F2 407 Proxy Authorization Required Proxy 1 -> Alice

SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=3flal12sf Call-ID: [email protected] CSeq: 1 INVITE Proxy-Authenticate: Digest realm="atlanta.example.com", qop="auth",

nonce="f84f1cec41e6cbe5aea9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5

Content-Length: 0

F3 ACK Alice -> Proxy 1

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=3flal12sf Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

/* Alice responds be re-sending the INVITE with authentication

  credentials in it. */

F4 INVITE Alice -> Proxy 1

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected];transport=tcp> Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:[email protected]",
response="42ce3cef44b22f50c6a6071bc8"

Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* Proxy 1 accepts the credentials and forwards the INVITE to Proxy 2. Client for Alice prepares to receive data on port 49172 from the network. */

F5 INVITE Proxy 1 -> Proxy 2

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 69 Record-Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F6 100 Trying Proxy 1 -> Alice

SIP/2.0 100 Trying Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Content-Length: 0

F7 INVITE Proxy 2 -> Bob

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 68 Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F8 100 Trying Proxy 2 -> Proxy 1

SIP/2.0 100 Trying Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Content-Length: 0

F9 180 Ringing Bob -> Proxy 2

SIP/2.0 180 Ringing Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] Contact: <sip:[email protected];transport=tcp> CSeq: 2 INVITE Content-Length: 0

F10 180 Ringing Proxy 2 -> Proxy 1

SIP/2.0 180 Ringing Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] Contact: <sip:[email protected];transport=tcp> CSeq: 2 INVITE Content-Length: 0

F11 180 Ringing Proxy 1 -> Alice

SIP/2.0 180 Ringing Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] Contact: <sip:[email protected];transport=tcp> CSeq: 2 INVITE Content-Length: 0

F12 200 OK Bob -> Proxy 2

SIP/2.0 200 OK Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 INVITE

Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F13 200 OK Proxy 2 -> Proxy 1

SIP/2.0 200 OK Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F14 200 OK Proxy 1 -> Alice

SIP/2.0 200 OK Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159

Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F15 ACK Alice -> Proxy 1

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76 Max-Forwards: 70 Route: <sip:ss1.atlanta.example.com;lr>,

<sip:ss2.biloxi.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 ACK Content-Length: 0

F16 ACK Proxy 1 -> Proxy 2

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76

;received=192.0.2.101

Max-Forwards: 69 Route: <sip:ss2.biloxi.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 ACK Content-Length: 0

F17 ACK Proxy 2 -> Bob

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76

;received=192.0.2.101

Max-Forwards: 68 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 ACK Content-Length: 0

/* RTP streams are established between Alice and Bob */

/* Bob Hangs Up with Alice. */

/* Again, note that the CSeq is NOT 3. Alice and Bob maintain

  their own separate CSeq counts */

F18 BYE Bob -> Proxy 2

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F19 BYE Proxy 2 -> Proxy 1

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7

;received=192.0.2.201

Max-Forwards: 69 Route: <sip:ss1.atlanta.example.com;lr> From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F20 BYE Proxy 1 -> Alice

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7

;received=192.0.2.201

Max-Forwards: 68 From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F21 200 OK Alice -> Proxy 1

SIP/2.0 200 OK Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7

;received=192.0.2.201

From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F22 200 OK Proxy 1 -> Proxy 2

SIP/2.0 200 OK Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7

;received=192.0.2.101

From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F23 200 OK Proxy 2 -> Bob

SIP/2.0 200 OK Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7

;received=192.0.2.201

From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

Session with Multiple Proxy Authentication

 Alice        Proxy 1     Proxy 2         Bob
   |            |           |             |
   |  INVITE F1 |           |             |
   |----------->|           |             |
   |  407 Proxy Authorization Required F2 |
   |<-----------|           |             |
   |   ACK F3   |           |             |
   |----------->|           |             |
   |  INVITE F4 |           |             |
   |----------->|           |             |
   |   100 F5   |           |             |
   |<-----------| INVITE F6 |             |
   |            |---------->|             |
   |            |  407 Proxy Authorization Required F7
   |            |<----------|             |
   |            |   ACK F8  |             |
   |            |---------->|             |
   |  407 Proxy Authorization Required F9 |
   |<-----------|           |             |
   |   ACK F10  |           |             |
   |----------->|           |             |
   |  INVITE F11|           |             |
   |----------->|           |             |
   |   100 F12  |           |             |
   |<-----------| INVITE F13|             |
   |            |---------->|             |
   |            |  100 F14  |             |
   |            |<----------|  INVITE F15 |
   |            |           |------------>|
   |            |           | 200 OK F16  |
   |            | 200 OK F17|<------------|
   | 200 OK F18 |<----------|             |
   |<-----------|           |             |
   |   ACK F19  |           |             |
   |----------->|  ACK F20  |             |
   |            |---------->|   ACK F21   |
   |            |           |------------>|
   |           RTP Media Path             |
   |<====================================>|

In this scenario, Alice completes a call to Bob using two proxies Proxy 1 and Proxy 2. Alice has valid credentials in both domains. Since the initial INVITE (F1) does not contain the Authorization credentials Proxy 1 requires, so a 407 Proxy Authorization response is sent containing the challenge information. A new INVITE (F4) is

then sent containing the correct credentials and the call proceeds after Proxy 2 challenges and receives valid credentials. The call terminates when Bob disconnects by initiating a BYE message.

Proxy 1 inserts a Record-Route header into the INVITE message to ensure that it is present in all subsequent message exchanges. Proxy 2 also inserts itself into the Record-Route header.

Message Details

F1 INVITE Alice -> Proxy 1

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03 Max-Forwards: 70 Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* Proxy 1 challenges Alice for authentication */

F2 407 Proxy Authorization Required Proxy 1 -> Alice

SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=876321 Call-ID: [email protected] CSeq: 1 INVITE Proxy-Authenticate: Digest realm="atlanta.example.com", qop="auth",

nonce="wf84f1cczx41ae6cbeaea9ce88d359",
opaque="", stale=FALSE, algorithm=MD5

Content-Length: 0

F3 ACK Alice -> Proxy 1

ACK sip:[email protected] SIP/2.0 Max-Forwards: 70 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=876321 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

/* Alice responds be re-sending the INVITE with authentication

  credentials in it.  The same Call-ID is used, so the CSeq is
  increased. */

F4 INVITE Alice -> Proxy 1

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21 Max-Forwards: 70 Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected]> Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:[email protected]",
response="42ce3cef44b22f50c6a6071bc8"

Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* Proxy 1 accepts the credentials and forwards the INVITE to Proxy 2. Client for Alice prepares to receive data on port 49172 from the network. */

F5 100 Trying Proxy 1 -> Alice

SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Content-Length: 0

F6 INVITE Proxy 1 -> Proxy 2

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21

;received=192.0.2.101

Max-Forwards: 69 Record-Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* Proxy 2 challenges Alice for authentication */

F7 407 Proxy Authorization Required Proxy 2 -> Proxy 1

SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=838209 Call-ID: [email protected] CSeq: 2 INVITE Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",

nonce="c1e22c41ae6cbe5ae983a9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5

Content-Length: 0

F8 ACK Proxy 1 -> Proxy 2

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=838209 Call-ID: [email protected] CSeq: 2 ACK Content-Length: 0

/* Proxy 1 forwards the challenge to Alice for authentication from Proxy 2 */

F9 407 Proxy Authorization Required Proxy 1 -> Alice

SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=838209 Call-ID: [email protected] CSeq: 2 INVITE Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",

nonce="c1e22c41ae6cbe5ae983a9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5

Content-Length: 0

F10 ACK Alice -> Proxy 1

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=838209 Call-ID: [email protected]

CSeq: 2 ACK Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:[email protected]",
response="42ce3cef44b22f50c6a6071bc8"

Content-Length: 0

/* Alice responds be re-sending the INVITE with authentication credentials for Proxy 1 AND Proxy 2. */

F11 INVITE Alice -> Proxy 1

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 3 INVITE Contact: <sip:[email protected]> Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:[email protected]",
response="42ce3cef44b22f50c6a6071bc8"

Proxy-Authorization: Digest username="alice",

realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"

Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* Proxy 1 finds its credentials and authorizes Alice, forwarding the INVITE to Proxy. */

F12 100 Trying Proxy 1 -> Alice

SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 3 INVITE Content-Length: 0

F13 INVITE Proxy 1 -> Proxy 2

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 69 Record-Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 3 INVITE Contact: <sip:[email protected]> Proxy-Authorization: Digest username="alice",

realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"

Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* Proxy 2 finds its credentials and authorizes Alice, forwarding the INVITE to Bob. */

F14 100 Trying Proxy 2 -> Proxy 1

SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 3 INVITE Content-Length: 0

F15 INVITE Proxy 2 -> Bob

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 68 Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 3 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* Bob answers the call immediately */

F16 200 OK Bob -> Proxy 2

SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1

;received=192.0.2.222

Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=9103874 Call-ID: [email protected] CSeq: 3 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F17 200 OK Proxy 2 -> Proxy 1

SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=9103874 Call-ID: [email protected] CSeq: 3 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=-

c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F18 200 OK Proxy 1 -> Alice

SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=9103874 Call-ID: [email protected] CSeq: 3 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F19 ACK Alice -> Proxy 1

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44 Max-Forwards: 70 Route: <sip:ss1.atlanta.example.com;lr>,

<sip:ss2.biloxi.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=9103874 Call-ID: [email protected] CSeq: 3 ACK Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:[email protected]",
response="42ce3cef44b22f50c6a6071bc8"

Proxy-Authorization: Digest username="alice",

realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"

Content-Length: 0

F20 ACK Proxy 1 -> Proxy 2

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44

;received=192.0.2.101

Max-Forwards: 69 Route: <sip:ss2.biloxi.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=9103874 Call-ID: [email protected] CSeq: 3 ACK Contact: <sip:[email protected]> Proxy-Authorization: Digest username="alice",

realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:[email protected]", response="f44ab22f150c6a56071bce8"

Content-Length: 0

F21 ACK Proxy 2 -> Bob

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44

;received=192.0.2.101

Max-Forwards: 68 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=9103874 Call-ID: [email protected] CSeq: 3 ACK Contact: <sip:[email protected]> Content-Length: 0

Successful Session with Proxy Failure

Alice           Proxy 1          Proxy 2            Bob
  |                |                |                |
  |   INVITE F1    |                |                |
  |--------------->|                |                |
  |   INVITE F2    |                |                |
  |--------------->|                |                |
  |   INVITE F3    |                |                |
  |--------------->|                |                |
  |   INVITE F4    |                |                |
  |--------------->|                |                |
  |   INVITE F5    |                |                |
  |--------------->|                |                |
  |   INVITE F6    |                |                |
  |--------------->|                |                |
  |   INVITE F7    |                |                |
  |--------------->|                |                |
  |     INVITE F8                   |                |
  |-------------------------------->|                |
  |            407 F9               |                |
  |<--------------------------------|                |
  |             ACK F10             |                |
  |-------------------------------->|                |
  |           INVITE F11            |                |
  |-------------------------------->|   INVITE F12   |
  |             100  F13            |--------------->|
  |<--------------------------------|                |
  |                                 |     180 F14    |
  |             180 F15             |<---------------|
  |<--------------------------------|                |
  |                                 |     200 F16    |
  |             200 F17             |<---------------|
  |<--------------------------------|                |
  |             ACK F18             |                |
  |-------------------------------->|     ACK F19    |
  |                                 |--------------->|
  |                Both Way RTP Media                |
  |<================================================>|
  |                                 |     BYE F20    |
  |             BYE F21             |<---------------|
  |<--------------------------------|                |
  |             200 F22             |                |
  |-------------------------------->|     200 F23    |
  |                                 |--------------->|
  |                                 |                |

In this scenario, Alice completes a call to Bob via a Proxy Server. Alice is configured for a primary SIP Proxy Server Proxy 1 and a secondary SIP Proxy Server Proxy 2 (Or is able to use DNS SRV records to locate Proxy 1 and Proxy 2). Alice has valid credentials for both domains. Proxy 1 is out of service and does not respond to INVITEs (it is reachable, but unresponsive). Alice then completes the call to Bob using Proxy 2.

Message Details

F1 INVITE Alice -> Proxy 1

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK465b6d Max-Forwards: 70 Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F2 INVITE Alice -> Proxy 1

Same as Message F1

F3 INVITE Alice -> Proxy 1

Same as Message F1

F4 INVITE Alice -> Proxy 1

Same as Message F1

F5 INVITE Alice -> Proxy 1

Same as Message F1

F6 INVITE Alice -> Proxy 1

Same as Message F1

F7 INVITE Alice -> Proxy 1

Same as Message F1

/* Alice gives up on the unresponsive proxy */

F8 INVITE Alice -> Proxy 2

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* Proxy 2 challenges Alice for authentication */

F9 407 Proxy Authorization Required Proxy 2 -> Alice

SIP/2.0 407 Proxy Authorization Required Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=2421452

Call-ID: [email protected] CSeq: 1 INVITE Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",

nonce="1ae6cbe5ea9c8e8df84fqnlec434a359",
opaque="", stale=FALSE, algorithm=MD5

Content-Length: 0

F10 ACK Alice -> Proxy 2

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=2421452 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

/* Alice responds by re-sending the INVITE with authentication credentials in it. */

F11 INVITE Alice -> Proxy 2

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected]> Proxy-Authorization: Digest username="alice",

realm="biloxi.example.com",
nonce="1ae6cbe5ea9c8e8df84fqnlec434a359", opaque="",
uri="sip:[email protected]",
response="8a880c919d1a52f20a1593e228adf599"

Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* Proxy 2 accepts the credentials and forwards the INVITE to Bob. Client for Alice prepares to receive data on port 49172 from the network.

  • /

F12 INVITE Proxy 2 -> Bob

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 69 Record-Route: <sip:ss2.biloxi.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F13 100 Trying Proxy 2 -> Alice

SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Content-Length: 0

F14 180 Ringing Bob -> Proxy 2

SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected]> Content-Length: 0

F15 180 Ringing Proxy 2 -> Alice

SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected]> Content-Length: 0

F16 200 OK Bob -> Proxy 2

SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F17 200 OK Proxy 2 -> Alice

SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F18 ACK Alice -> Proxy 2

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8g Max-Forwards: 70 Route: <sip:ss2.biloxi.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 ACK Content-Length: 0

F19 ACK Proxy 2 -> Bob

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8g

;received=192.0.2.101

Max-Forwards: 69 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected]

CSeq: 2 ACK Content-Length: 0

/* RTP streams are established between Alice and Bob */

/* Bob Hangs Up with Alice. */

F20 BYE Bob -> Proxy 2

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 Route: <sip:ss2.biloxi.example.com;lr> From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F21 BYE Proxy 2 -> Alice

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7

;received=192.0.2.201

Max-Forwards: 69 From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F22 200 OK Alice -> Proxy 2

SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7

;received=192.0.2.201

From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F23 200 OK Proxy 2 -> Bob

SIP/2.0 200 OK Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7

;received=192.0.2.201

From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

Session Through a SIP ALG

Alice ALG Proxy 2 Bob

 |                |                |                |
 |   INVITE F1    |                |                |
 |--------------->|   INVITE F2    |                |
 |     100 F3     |--------------->|   INVITE F4    |
 |<---------------|     100 F5     |--------------->|
 |                |<---------------|      180 F6    |
 |                |     180 F7     |<---------------|
 |     180 F8     |<---------------|                |
 |<---------------|                |      200 F9    |
 |                |    200 F10     |<---------------|
 |     200 F11    |<---------------|                |
 |<---------------|                                 |
 |     ACK F12    |                                 |
 |--------------->|             ACK F13             |
 |                |-------------------------------->|
 |    RTP Media   |        Both Way RTP Media       |
 |<==============>|<===============================>|
 |     BYE F14    |                                 |
 |--------------->|             BYE F15             |
 |                |-------------------------------->|
 |                |             200 F16             |
 |     200 F17    |<--------------------------------|
 |<---------------|                                 |
 |                |                                 |

Alice completes a call to Bob through a ALG (Application Layer Gateway) and a SIP Proxy. The routing through the ALG is accomplished using a pre-loaded Route header in the INVITE F1. Note that the media stream setup is not end-to-end - the ALG terminates both media streams and bridges them. This is done by the ALG modifying the SDP in the INVITE (F1) and 200 OK (F10) messages, and possibly any 18x or ACK messages containing SDP.

In addition to firewall traversal, this Back-to-Back User Agent (B2BUA) could be used as part of an anonymizer service (in which all identifying information on Alice would be removed), or to perform codec media conversion, such as mu-law to A-law conversion of PCM on an international call.

Also note that Proxy 2 does not Record-Route in this call flow.

Message Details

F1 INVITE Alice -> SIP ALG

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Route: <sip:alg1.atlanta.example.com;lr> Proxy-Authorization: Digest username="alice",

realm="biloxi.example.com",
nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="",
uri="sip:[email protected]",
response="b3f392f9218a328b9294076d708e6815"

Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* Client for Alice prepares to receive data on port 49172 from the network. */

F2 INVITE SIP ALG -> Proxy 2

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 69 Record-Route: <sip:alg1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Proxy-Authorization: Digest username="alice",

realm="biloxi.example.com",
nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="",
uri="sip:[email protected]",
response="b3f392f9218a328b9294076d708e6815"

Content-Type: application/sdp Content-Length: 150

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.128 t=0 0 m=audio 2000 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F3 100 Trying SIP ALG -> Alice

SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

/* SIP ALG prepares to proxy data from port 192.0.2.128/2000 to 192.0.2.101/49172. Proxy 2 uses a Location Service function to determine where Bob is located. Based upon location analysis the call is forwarded to Bob */

F4 INVITE Proxy 2 -> Bob

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1

;received=192.0.2.128

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 68 Record-Route: <sip:alg1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp

Content-Length: 150

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.128 t=0 0 m=audio 2000 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F5 100 Trying Proxy 2 -> SIP ALG

SIP/2.0 100 Trying Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1

;received=192.0.2.128

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F6 180 Ringing Bob -> Proxy 2

SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.222

Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1

;received=192.0.2.128

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:alg1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0

F7 180 Ringing Proxy 2 -> SIP ALG

SIP/2.0 180 Ringing Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1

;received=192.0.2.128

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:alg1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0

F8 180 Ringing SIP ALG -> Alice

SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:alg1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0

F9 200 OK Bob -> Proxy 2

SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.222

Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1

;received=192.0.2.128

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:alg1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0

m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F10 200 OK Proxy 2 -> SIP ALG

SIP/2.0 200 OK Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1

;received=192.0.2.128

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:alg1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F11 200 OK SIP ALG -> Alice

SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:alg1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.128 t=0 0

m=audio 1734 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* The ALG prepares to proxy packets from 192.0.2.128/

  1734 to 192.0.2.201/3456 */

F12 ACK Alice -> SIP ALG

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bhh Max-Forwards: 70 Route: <sip:alg1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

F13 ACK SIP ALG -> Bob

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bhh

;received=192.0.2.101

Max-Forwards: 69 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

/* RTP streams are established between Alice and the ALG and between the ALG and B*/

/* Alice Hangs Up with Bob. */

F14 BYE Alice -> SIP ALG

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5 Max-Forwards: 70 Route: <sip:alg1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected]

CSeq: 2 BYE Content-Length: 0

F15 BYE SIP ALG -> Bob

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5

;received=192.0.2.101

Max-Forwards: 69 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 BYE Content-Length: 0

F16 200 OK Bob -> SIP ALG

SIP/2.0 200 OK Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1

;received=192.0.2.128

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 BYE Content-Length: 0

F17 200 OK SIP ALG -> Alice

SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 BYE Content-Length: 0

Session via Redirect and Proxy Servers with SDP in ACK

Alice Redirect Server Proxy 3 Bob

 |                |                |                |
 |   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, Alice places a call to Bob 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 Bob's current SIP address. Alice then generates a new INVITE and sends to Bob 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 Bob sends a BYE message.

Message Details

F1 INVITE Alice -> Redirect Server

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0

F2 302 Moved Temporarily Redirect Proxy -> Alice

SIP/2.0 302 Moved Temporarily Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=53fHlqlQ2 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected];transport=tcp> Content-Length: 0

F3 ACK Alice -> Redirect Server

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=53fHlqlQ2 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

F4 INVITE Alice -> Proxy 3

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected]

CSeq: 2 INVITE Contact: <sip:[email protected];transport=tcp> Content-Length: 0

F5 INVITE Proxy 3 -> Bob

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 69 Record-Route: <sip:ss3.chicago.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected];transport=tcp> Content-Length: 0

F6 100 Trying Proxy 3 -> Alice

SIP/2.0 100 Trying Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 2 INVITE Content-Length: 0

F7 180 Ringing Bob -> Proxy 3

SIP/2.0 180 Ringing Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1

;received=192.0.2.233

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss3.chicago.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected];transport=tcp> Content-Length: 0

F8 180 Ringing Proxy 3 -> Alice

SIP/2.0 180 Ringing Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss3.chicago.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected];transport=tcp> Content-Length: 0

F9 200 OK Bob -> Proxy 3

SIP/2.0 200 OK Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1

;received=192.0.2.233

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss3.chicago.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 148

v=0 o=bob 2890844527 2890844527 IN IP4 client.chicago.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 200 OK Proxy -> Alice

SIP/2.0 200 OK Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss3.chicago.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159

Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 148

v=0 o=bob 2890844527 2890844527 IN IP4 client.chicago.example.com s=- c=IN IP4 192.0.2.100 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* ACK contains SDP of Alice since none present in INVITE */

F11 ACK Alice -> Proxy 3

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bq9 Max-Forwards: 70 Route: <sip:ss3.chicago.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 ACK Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F12 ACK Proxy 3 -> Bob

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bq9

;received=192.0.2.101

Max-Forwards: 69 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159

Call-ID: [email protected] CSeq: 2 ACK Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/* RTP streams are established between Alice and Bob */

/* Bob Hangs Up with Alice. */

F13 BYE Bob -> Proxy 3

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2 Max-Forwards: 70 Route: <sip:ss3.chicago.example.com;lr> From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F14 BYE Proxy 3 -> Alice

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1

;received=192.0.2.100

Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2 Max-Forwards: 69 From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F15 200 OK Alice -> Proxy 3

SIP/2.0 200 OK

Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1

;received=192.0.2.233

Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2

;received=192.0.2.100

From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

F16 200 OK Proxy 3 -> Bob

SIP/2.0 200 OK Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2

;received=192.0.2.100

From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 1 BYE Content-Length: 0

Session with re-INVITE (IP Address Change)

 Alice                Proxy 2                Bob
    |   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     |
    |<=======================================>|
    |                                         |
    |           Bob changes IP address        |
    |                                         |
    |                 F9 INVITE               |
    |<----------------------------------------|
    |                F10 200 OK               |
    |---------------------------------------->|
    |                 F11  ACK                |
    |<----------------------------------------|
    |         New RTP Media Stream            |
    |<=======================================>|
    |                 F12 BYE                 |
    |---------------------------------------->|
    |               F13 200 OK                |
    |<----------------------------------------|
    |                                         |

This example shows a session in which the media changes midway through the session. When Bob's IP address changes during the session, Bob 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 Alice -> Proxy 2

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F2 INVITE Proxy 2 -> Bob

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 69 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F3 100 Trying Proxy 2 -> Alice

SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F4 180 Ringing Bob -> Proxy 2

SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.222

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0

F5 180 Ringing Proxy 2 -> Alice

SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0

F6 200 OK Bob -> Proxy 2

SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.222

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl

To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F7 200 OK Proxy 2 -> Alice

SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 147

v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s=- c=IN IP4 192.0.2.201 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F8 ACK Alice -> Bob

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b7b Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

/* RTP streams are established between Alice and Bob */

/* Bob changes IP address and re-INVITEs Alice with new Contact and SDP */

F9 INVITE Bob -> Alice

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkld5l Max-Forwards: 70 From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 14 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 149

v=0 o=bob 2890844527 2890844528 IN IP4 client.chicago.example.com s=- c=IN IP4 192.0.2.100 t=0 0 m=audio 47172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F10 200 OK Alice -> Bob

SIP/2.0 200 OK Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkld5l

;received=192.0.2.100

Max-Forwards: 70 From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 14 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 150

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0

m=audio 1000 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F11 ACK Bob -> Alice

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkldcc Max-Forwards: 70 From: Bob <sip:[email protected]>;tag=314159 To: Alice <sip:[email protected]>;tag=9fxced76sl Call-ID: [email protected] CSeq: 14 ACK Content-Length: 0

/* New RTP stream established between Alice and Bob */

/* Alice hangs up with Bob */

F12 BYE Alice -> Bob

BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bo4 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 BYE Content-Length: 0

F13 200 OK Bob -> Alice

SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bo4

;received=192.0.2.101

Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 2 BYE Content-Length: 0

Unsuccessful No Answer

Alice Proxy 1 Proxy 2 Bob

 |                |                |                |
 |   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, Alice gives up on the call before Bob answers (sends a 200 OK response). Alice sends a CANCEL (F9) since no final response had been received from Bob. If a 200 OK to the INVITE had crossed with the CANCEL, Alice would have sent an ACK then a BYE to Bob 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.

Message Details

F1 INVITE Alice -> Proxy 1

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="ze7k1ee88df84f1cec431ae6cbe5a359", opaque="",
uri="sip:[email protected]",
response="b00b416324679d7e243f55708d44be7b"

Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/*Client for Alice prepares to receive data on port 49172 from the network.*/

F2 INVITE Proxy 1 -> Proxy 2

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 69 Record-Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F3 100 Trying Proxy 1 -> Alice

SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F4 INVITE Proxy 2 -> Bob

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

Max-Forwards: 68 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F5 100 Trying Proxy 2 -> Proxy 1

SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F6 180 Ringing Bob -> Proxy 2

SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0

F7 180 Ringing Proxy 2 -> Proxy 1

SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE

Contact: <sip:[email protected]> Content-Length: 0

F8 180 Ringing Proxy 1 -> Alice

SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0

F9 CANCEL Alice -> Proxy 1

CANCEL sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Route: <sip:ss1.atlanta.example.com;lr> Call-ID: [email protected] CSeq: 1 CANCEL Content-Length: 0

F10 200 OK Proxy 1 -> Alice

SIP/2.0 200 OK Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 CANCEL Content-Length: 0

F11 CANCEL Proxy 1 -> Proxy 2

CANCEL sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 CANCEL Content-Length: 0

F12 200 OK Proxy 2 -> Proxy 1

SIP/2.0 200 OK Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 CANCEL Content-Length: 0

F13 CANCEL Proxy 2 -> Bob

CANCEL sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 CANCEL Content-Length: 0

F14 200 OK Bob -> Proxy 2

SIP/2.0 200 OK Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 CANCEL Content-Length: 0

F15 487 Request Terminated Bob -> Proxy 2

SIP/2.0 487 Request Terminated Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F16 ACK Proxy 2 -> Bob

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] 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.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F18 ACK Proxy 1 -> Proxy 2

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

F19 487 Request Terminated Proxy 1 -> Alice

SIP/2.0 487 Request Terminated Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE

F20 ACK Alice -> Proxy 1

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="ze7k1ee88df84f1cec431ae6cbe5a359", opaque="",
uri="sip:[email protected]",
response="b00b416324679d7e243f55708d44be7b"

CSeq: 1 ACK Content-Length: 0

Unsuccessful Busy

Alice Proxy 1 Proxy 2 Bob

 |                |                |                |
 |   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, Bob is busy and sends a 486 Busy Here response to Alice'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 Alice -> Proxy 1

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected];transport=tcp> Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="dc3a5ab2530aa93112cf5904ba7d88fa", opaque="",
uri="sip:[email protected]",
response="702138b27d869ac8741e10ec643d55be"

Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/*Client for Alice prepares to receive data on port 49172 from the network.*/

F2 INVITE Proxy 1 -> Proxy 2

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 69 Record-Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F3 100 Trying Proxy 1 -> Alice

SIP/2.0 100 Trying Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F4 INVITE Proxy 2 -> Bob

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 68 Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected];transport=tcp> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F5 100 Trying Proxy 2 -> Proxy 1

SIP/2.0 100 Trying Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F6 486 Busy Here Bob -> Proxy 2

SIP/2.0 486 Busy Here Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F7 ACK Proxy 2 -> Bob

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

F8 486 Busy Here Proxy 2 -> Proxy 1

SIP/2.0 486 Busy Here Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F9 ACK Proxy 1 -> Proxy 2

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

F10 486 Busy Here Proxy 1 -> Alice

SIP/2.0 486 Busy Here Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F11 ACK Alice -> Proxy 1

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 ACK Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="dc3a5ab2530aa93112cf5904ba7d88fa", opaque="",
uri="sip:[email protected]",
response="702138b27d869ac8741e10ec643d55be"

Content-Length: 0

3.10. Unsuccessful No Response from User Agent

Alice Proxy 1 Proxy 2 Bob

 |                |                |                |
 |   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 Bob to Alice'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 Alice.

Message Details

F1 INVITE Alice -> Proxy 1

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="",
uri="sip:[email protected]",
response="7afc04be7961f053c24f80e7dbaf888f"

Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/*Client for Alice prepares to receive data on port 49172 from the network.*/

F2 INVITE Proxy 1 -> Proxy 2

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 69 Record-Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F3 100 Trying Proxy 1 -> Alice

SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F4 INVITE Proxy 2 -> Bob

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 68 Record-Route: <sip:ss2.biloxi.example.com;lr>, <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F5 100 Trying Proxy 2 -> Proxy 1

SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F6 INVITE Proxy 2 -> Bob

Resend of Message F4

F7 INVITE Proxy 2 -> Bob

Resend of Message F4

F8 INVITE Proxy 2 -> Bob

Resend of Message F4

F9 INVITE Proxy 2 -> Bob

Resend of Message F4

F10 INVITE Proxy 2 -> Bob

Resend of Message F4

F11 INVITE Proxy 2 -> Bob

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.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F13 ACK Proxy 1 -> Proxy 2

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

F14 480 No Response Proxy 1 -> Alice

SIP/2.0 480 No Response Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F15 ACK Alice -> Proxy 1

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 ACK Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="",
uri="sip:[email protected]",
response="7afc04be7961f053c24f80e7dbaf888f"

Content-Length: 0

3.11. Unsuccessful Temporarily Unavailable

Alice Proxy 1 Proxy 2 Bob

 |                |                |                |
 |   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, Bob initially sends a 180 Ringing response to Alice, indicating that alerting is taking place. However, then a 480 Unavailable is then sent to Alice. This response is acknowledged then proxied back to Alice.

Message Details

F1 INVITE Alice -> Proxy 1

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="aa9311cf5904ba7d8dc3a5ab253028fa", opaque="",
uri="sip:[email protected]",
response="59a46a91bf1646562a4d486c84b399db"

Content-Type: application/sdp

Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

/*Client for Alice prepares to receive data on port 49172 from the network.*/

F2 INVITE Proxy 1 -> Proxy 2

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 69 Record-Route: <sip:ss1.atlanta.example.com;lr> From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F3 100 Trying Proxy 1 -> Alice

SIP/2.0 100 Trying Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE

Content-Length: 0

F4 INVITE Proxy 2 -> Bob

INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Max-Forwards: 68 Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 151

v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000

F5 100 Trying Proxy 2 -> Proxy 1

SIP/2.0 100 Trying Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F6 180 Ringing Bob -> Proxy 2

SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0

F7 180 Ringing Proxy 2 -> Proxy 1

SIP/2.0 180 Ringing Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0

F8 180 Ringing Proxy 1 -> Alice

SIP/2.0 180 Ringing Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

Record-Route: <sip:ss2.biloxi.example.com;lr>,

<sip:ss1.atlanta.example.com;lr>

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]>

Content-Length: 0

F9 480 Temporarily Unavailable Bob -> Proxy 2

SIP/2.0 480 Temporarily Unavailable Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1

;received=192.0.2.222

Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F10 ACK Proxy 2 -> Bob

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] 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.example.com:5060;branch=z9hG4bK2d4790.1

;received=192.0.2.111

Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F12 ACK Proxy 1 -> Proxy 2

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 ACK Content-Length: 0

F13 480 Temporarily Unavailable Proxy 1 -> Alice

SIP/2.0 480 Temporarily Unavailable Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9

;received=192.0.2.101

From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] CSeq: 1 INVITE Content-Length: 0

F14 ACK Alice -> Proxy 1

ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sip:[email protected]>;tag=9fxced76sl To: Bob <sip:[email protected]>;tag=314159 Call-ID: [email protected] Proxy-Authorization: Digest username="alice",

realm="atlanta.example.com",
nonce="aa9311cf5904ba7d8dc3a5ab253028fa", opaque="",
uri="sip:[email protected]",
response="59a46a91bf1646562a4d486c84b399db"

CSeq: 1 ACK Content-Length: 0

Security Considerations

Since this document contains examples of SIP session establishment, the security considerations in RFC 3261 [1] apply. RFC 3261 describes the basic threats including registration hijacking, server impersonation, message body tampering, session modifying or teardown, and denial of service and amplification attacks. The use of HTTP Digest as shown in this document provides one-way authentication and protection against replay attacks. TLS transport is used in registration scenarios due to the lack of integrity protection in HTTP Digest and the danger of registration hijacking without it, as described in RFC 3261 [1]. A full discussion of the weaknesses of HTTP Digest is provided in RFC 3261 [1]. The use of TLS and the Secure SIP (sips) URI scheme provides a better level of security including two-way authentication. S/MIME can provide end-to-end confidentiality and integrity protection of message bodies, as described in RFC 3261.

References

Normative References

[1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,

   Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP:
   Session Initiation Protocol", RFC 3261, June 2002.

[2] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with

   SDP", RFC 3264, April 2002.

[3] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach,

   P., Luotonen, A. and L. Stewart, "HTTP authentication: Basic and
   Digest Access Authentication", RFC 2617, June 1999.

[4] Bradner, S., "Key words for use in RFCs to Indicate Requirement

   Levels", BCP 14, RFC 2119, March 1997.

Informative References

[5] Johnston, A., Donovan, S., Sparks, R., Cunningham, C. and K.

   Summers, "Session Initiation Protocol (SIP) Public Switched
   Telephone Network (PSTN) Call Flows", BCP 76, RFC 3666, December
   2003.

Intellectual Property Statement

The IETF takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in

this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on the IETF's procedures with respect to rights in standards-track and standards-related documentation can be found in BCP-11. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification can be obtained from the IETF Secretariat.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this standard. Please address the information to the IETF Executive Director.

Acknowledgments

This document is has been a group effort by the SIP and SIPPING WGs. The authors wish to thank everyone who has read, reviewed, commented, or made suggestions to improve this document.

Thanks to Rohan Mahy, Adam Roach, Gonzalo Camarillo, Cullen Jennings, and Tom Taylor for their detailed comments during the final review. Thanks to Dean Willis for his early contributions to the development of this document.

The authors wish to thank Kundan Singh for performing parser validation of messages.

The authors wish to thank the following individuals for their participation in the 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.

Authors' Addresses

All listed authors actively contributed large amounts of text to this document.

Alan Johnston MCI 100 South 4th Street St. Louis, MO 63102 USA

EMail: [email protected]

Steve Donovan dynamicsoft, Inc. 5100 Tennyson Parkway Suite 1200 Plano, Texas 75024 USA

EMail: [email protected]

Robert Sparks dynamicsoft, Inc. 5100 Tennyson Parkway Suite 1200 Plano, Texas 75024 USA

EMail: [email protected]

Chris Cunningham dynamicsoft, Inc. 5100 Tennyson Parkway Suite 1200 Plano, Texas 75024 USA

EMail: [email protected]

Kevin Summers Sonus 1701 North Collins Blvd, Suite 3000 Richardson, TX 75080 USA

EMail: [email protected]

Full Copyright Statement

Copyright (C) The Internet Society (2003). 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.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assignees.

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.