2.5. Transfer - Attended
Alice Bob Carol | | | | INVITE F1 | | |--------------->| | | 180 Ringing F2 | | |<---------------| | | 200 OK F3 | | |<---------------| | | ACK F4 | | |--------------->| | | RTP | | |<==============>| | |INVITE (hold) F5| | |<---------------| | | 200 OK F6 | | |--------------->| | | ACK F7 | | |<---------------| | | No RTP | | | | INVITE F8 | | |------------->| | | 180 Ringing F9 | |<-------------| | | 200 OK F10 | | |<-------------| | | ACK F11 | | |------------->| | | RTP | | |<============>| | |INVITE (hold) F12 | |------------->| | | 200 OK F13 | | |<-------------| | | ACK F14 | | |------------->| | | No RTP | | REFER Refer-To: C F15 | |<---------------| | |202 Accepted F16| | |--------------->| | | NOTIFY F17 | | |--------------->| | | 200 OK F18 | | |<---------------| | | INVITE Replaces: B F19 | |------------------------------>|
| 200 OK F20 | |<------------------------------| | ACK F21 | |------------------------------>| | RTP | |<=============================>| | | BYE F22 | | |<-------------| | | 200 OK F23 | | |------------->| | NOTIFY F24 | | |--------------->| | | 200 OK F25 | | |<---------------| | | BYE F26 | | |<---------------| | | 200 OK F27 | | |--------------->| | In this scenario, Alice calls Bob. Bob puts Alice on hold then calls Carol to announce transfer, then places Carol on hold. Bob transfers Alice to Carol, which replaces the session between Bob and Carol. Carol then disconnects session with Bob. Alice reports success of transfer to Bob, who then disconnects with Alice. In this example, the Replaces header field [RFC3891] is inserted into the Refer-To URI by Bob. Note that the Refer-To URI is the Contact URI returned by Carol in the 200 OK response F10. This ensures that only the correct instance of Carol is reached. The presence of the gr URI parameter in the Contact URI in message F10 indicates that the Contact URI is a GRUU [GRUU] and will be globally routable outside of the dialog. Without knowing the Contact URI is a gruu, Bob must be prepared, if the triggered INVITE had failed, to retry the REFER with a Refer-To URI of the URI used to reach Carol but with a Require: replaces header escaped in the Refer-To header field, as discussed in the transfer document [TRANSFER]. Message Details F1 INVITE Alice -> Bob INVITE sips:bob@biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com> Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE Contact: <sips:alice@client.atlanta.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: ... v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s= c=IN IP4 client.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 180 Ringing Bob -> Alice SIP/2.0 180 Ringing Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=23431 Call-ID: 12345600@atlanta.example.com CSeq: 1 INVITE Contact: <sips:bob@client.biloxi.example.com> Content-Length: 0 F3 200 OK Bob -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=23431 Call-ID: 12345600@atlanta.example.com CSeq: 1 INVITE Contact: <sips:bob@client.biloxi.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: ...
v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s= c=IN IP4 client.biloxi.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F4 ACK Alice -> Bob ACK sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=23431 Call-ID: 12345600@atlanta.example.com CSeq: 1 ACK Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Length: 0 /* Alice and Bob have established a session. Bob puts Alice on hold. */ F5 INVITE Bob -> Alice INVITE sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7 Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=23431 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 1024 INVITE Contact: <sips:bob@client.biloxi.example.com>;+sip.rendering="no" Content-Type: application/sdp Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Length: ... v=0 o=bob 2890844527 2890844528 IN IP4 client.biloxi.example.com s= c=IN IP4 client.biloxi.example.com
t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=sendonly F6 200 OK Alice -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7 ;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=23431 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 1024 INVITE Contact: <sips:alice@client.atlanta.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: ... v=0 o=alice 2890844526 2890844527 IN IP4 client.atlanta.example.com s= c=IN IP4 client.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=recvonly F7 ACK Bob -> Alice ACK sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds3 Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=23431 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 1024 ACK Content-Length: 0 /* Bob calls Carol. */
F8 INVITE Bob -> Carol INVITE sips:carol@chicago.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnash Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com> Call-ID: sdjfdjfskdf@biloxi.example.com CSeq: 42 INVITE Contact: <sips:bob@client.biloxi.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: ... v=0 o=bob 28908445834 2890844834 IN IP4 client.biloxi.example.com s= c=IN IP4 client.biloxi.example.com t=0 0 m=audio 3458 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F9 180 Ringing Carol -> Bob SIP/2.0 180 Ringing Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnash ;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=5f35a3 Call-ID: sdjfdjfskdf@biloxi.example.com CSeq: 42 INVITE Contact: <sips:39itp34klkd@chicago.example.com> Content-Length: 0 F10 200 OK Carol -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnash ;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=5f35a3 Call-ID: sdjfdjfskdf@biloxi.example.com
CSeq: 42 INVITE Contact: <sips:39itp34klkd@chicago.example.com;gr> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces, gruu Content-Type: application/sdp Content-Length: ... v=0 o=carol 2890844922 2890844922 IN IP4 client.chicago.example.com s= c=IN IP4 client.chicago.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F11 ACK Bob -> Carol ACK sips:39itp34klkd@chicago.example.com;gr SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashd5 Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=5f35a3 Call-ID: sdjfdjfskdf@biloxi.example.com CSeq: 42 ACK Content-Length: 0 /* Bob puts Carol on hold. */ F12 INVITE Bob -> Carol INVITE sips:39itp34klkd@chicago.example.com;gr SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds0 Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=5f35a3 Call-ID: sdjfdjfskdf@biloxi.example.com CSeq: 43 INVITE Contact: <sips:bob@client.biloxi.example.com>;+sip.rendering="no" Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: ...
v=0 o=bob 289084834 2890844835 IN IP4 client.biloxi.example.com s= c=IN IP4 client.biloxi.example.com t=0 0 m=audio 3458 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=sendonly F13 200 OK Carol -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds0 ;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=5f35a3 Call-ID: sdjfdjfskdf@biloxi.example.com CSeq: 43 INVITE Contact: <sips:39itp34klkd@chicago.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces, gruu Content-Type: application/sdp Content-Length: ... v=0 o=carol 2890844922 2890844923 IN IP4 client.chicago.example.com s= c=IN IP4 client.chicago.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=recvonly F14 ACK Bob -> Carol ACK sips:39itp34klkd@chicago.example.com;gr SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnash334 Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=5f35a3 Call-ID: sdjfdjfskdf@biloxi.example.com
CSeq: 43 ACK Content-Length: 0 /* Bob transfers Alice to Carol. */ F15 REFER Bob -> Alice REFER sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds2g Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=23431 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 1025 REFER <allOneLine> Refer-To: <sips:39itp34klkd@chicago.example.com?Replaces= sdjfdjfskdf%40biloxi.example.com%3Bto-tag%3D5f35a3 %3Bfrom-tag%3D8675309&Require=replaces> </allOneLine> Referred-By: <sips:bob@biloxi.example.com> Contact: <sips:bob@client.biloxi.example.com> Content-Length: 0 F16 202 Accepted Alice -> Bob SIP/2.0 202 Accepted Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds2g ;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=23431 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com Contact: <sips:alice@client.atlanta.example.com> CSeq: 1025 REFER Content-Length: 0 F17 NOTIFY Alice -> Bob NOTIFY sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bfK Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=23431
Call-ID: 12345600@atlanta.example.com CSeq: 2 NOTIFY Contact: <sips:alice@client.atlanta.example.com> Event: refer Subscription-State: active;expires=60 Content-Type: message/sipfrag Content-Length: ... SIP/2.0 100 Trying F18 200 OK Bob -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bfK ;received=192.0.2.103 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=23431 Call-ID: 12345600@atlanta.example.com CSeq: 2 NOTIFY Content-Length: 0 /* Alice establishes session with Carol, which replaces the session between Bob and Carol. */ F19 INVITE Alice -> Carol INVITE sips:39itp34klkd@chicago.example.com;gr SIP/2.0 Via: SIP/2.0/TLS chicago.example.com:5061 ;branch=z9hG4bKadfe4ko To: Carol <sips:39itp34klkd@chicago.example.com> Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=3461 Call-ID: 9435674543@atlanta.example.com CSeq: 1 INVITE Require: replaces Referred-By: <sips:bob@biloxi.example.com> Replaces: sdjfdjfskdf@biloxi.example.com ;to-tag=5f35a3;from-tag=8675309 Contact: <sips:alice@client.atlanta.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: ...
v=0 o=alice 2890844989 2890844989 IN IP4 client.atlanta.example.com s= c=IN IP4 client.atlanta.example.com t=0 0 m=audio 3458 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F20 200 OK Carol -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS chicago.example.com:5061 ;branch=z9hG4bKadfe4ko ;received=192.0.2.103 To: Carol <sips:39itp34klkd@chicago.example.com>;tag=ff3a From: Alice <sips:alice@atlanta.example.com>;tag=3461 Call-ID: 9435674543@atlanta.example.com CSeq: 1 INVITE Contact: <sips:39itp34klkd@chicago.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces, gruu Content-Type: application/sdp Content-Length: ... v=0 o=carol 2890844221 2890844221 IN IP4 client.chicago.example.com s= c=IN IP4 client.chicago.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F21 ACK Alice -> Carol ACK sips:39itp34klkd@chicago.example.com;gr SIP/2.0 Via: SIP/2.0/TLS chicago.example.com:5061 ;branch=z9hG4bKadfe4kU3 To: Carol <sips:39itp34klkd@chicago.example.com>;tag=ff3a Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=3461 Call-ID: 9435674543@atlanta.example.com CSeq: 1 ACK Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces Content-Length: 0 /* Carol then disconnects from Bob. */ F22 BYE Carol -> Bob BYE sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bfE To: Bob <sips:bob@biloxi.example.com>;tag=8675309 Max-Forwards: 70 From: Carol <sips:carol@chicago.example.com>;tag=5f35a3 Call-ID: sdjfdjfskdf@biloxi.example.com CSeq: 1 BYE Content-Length: 0 F23 200 OK Bob -> Carol SIP/2.0 200 OK Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bfE ;received=192.0.2.123 To: Bob <sips:bob@biloxi.example.com>;tag=8675309 From: Carol <sips:carol@chicago.example.com>;tag=5f35a3 Call-ID: sdjfdjfskdf@biloxi.example.com CSeq: 1 BYE Content-Length: 0 /* Alice tells Bob that the call has been successfully transferred. */ F24 NOTIFY Alice -> Bob NOTIFY sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf2N Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=23431 Call-ID: 12345600@atlanta.example.com CSeq: 3 NOTIFY Event: refer Subscription-State: terminated;reason=noresource
Contact: <sips:alice@client.atlanta.example.com> Content-Type: message/sipfrag Content-Length: ... SIP/2.0 200 OK Via: SIP/2.0/TLS chicago.example.com:5061 ;branch=z9hG4bKadfe4ko ;received=192.0.2.103 To: Carol <sips:39itp34klkd@chicago.example.com>;tag=ff3a From: Alice <sips:alice@atlanta.example.com>;tag=3461 Call-ID: 9435674543@atlanta.example.com CSeq: 1 INVITE Contact: <sips:39itp34klkd@chicago.example.com> F25 200 OK Bob -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=23431 Call-ID: 12345600@atlanta.example.com CSeq: 3 NOTIFY Content-Length: 0 /* Bob disconnects with Alice. */ F26 BYE Bob -> Alice BYE sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7P Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=23431 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 1026 BYE Content-Length: 0 F27 200 OK Alice -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7P
;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=23431 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 1026 BYE Content-Length: 02.6. Transfer - Instant Messaging
Alice Bob Carol | | | | INVITE F1 | | |------------->| | | 180 Ringing F2 | |<-------------| | | 200 OK F3 | | |<-------------| | | ACK F4 | | |------------->| | | Both way RTP Established | |<============>| | | | MESSAGE F5 | | |------------------>| | | 200 OK F6 | | |<------------------| | | | | INVITE Replaces:A-B F7 | |<---------------------------------| | 200 OK F8 | |--------------------------------->| | ACK F9 | |<---------------------------------| | Both way RTP Established | |<================================>| | BYE F10 | | |------------->| | | 200 OK F11 | | |<-------------| | | | In this scenario, Alice and Bob establish a session between them. Bob wants Carol to take the call and so sends an Instant Message (IM) to Carol containing Alice's URI and an embedded Replaces header field. If Carol clicks on the URI, Carol's SIP UA sends an INVITE to Alice, which replaces the session with Bob.
This scenario shows the use of the SIP MESSAGE [RFC3428] method to pass the URI. However, another IM protocol or other method could have been used to pass the URI from Bob to Carol. Message Details F1 INVITE Alice -> Bob INVITE sips:bob@biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com> Call-ID: 12345600@atlanta.example.com CSeq: 1 INVITE Contact: <sips:a8342043f@atlanta.example.com;gr> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces, gruu Content-Type: application/sdp Content-Length: ... v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s= c=IN IP4 client.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 180 Ringing Bob -> Alice SIP/2.0 180 Ringing Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=3145678 Call-ID: 12345600@atlanta.example.com CSeq: 1 INVITE Contact: <sips:bob@client.biloxi.example.com> Content-Length: 0
F3 200 OK Bob -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=3145678 Call-ID: 12345600@atlanta.example.com Contact: <sips:bob@client.biloxi.example.com> CSeq: 1 INVITE Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE Supported: replaces Content-Type: application/sdp Content-Length: ... v=0 o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com s= c=IN IP4 client.biloxi.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F4 ACK Alice -> Bob ACK sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74r Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=3145678 Call-ID: 12345600@atlanta.example.com Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces CSeq: 1 ACK Content-Length: 0 /* Bob IMs Carol. */ F5 MESSAGE Bob -> Carol MESSAGE sips:carol@chicago.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnash Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com> Call-ID: sdjfdjfskdf@biloxi.example.com CSeq: 42 MESSAGE Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE Supported: replaces Content-Type: text/html Content-Length: ... <HTML>Do you want to take this call from <allOneLine> <A HREF="sips:a8342043f@atlanta.example.com;gr?Replaces= 12345600@atlanta.example.com%3Bto-tag%3D3145678 %3Bfrom-tag%3D1234567&Require=replaces"> Alice</A>? </allOneLine> </HTML> F6 200 OK Carol -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnash ;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=5f35a3 Call-ID: sdjfdjfskdf@biloxi.example.com CSeq: 42 MESSAGE Contact: <sips:carol@client.chicago.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE Supported: replaces Content-Length: 0 /* Carol takes the call from Bob. */ F7 INVITE Carol -> Alice INVITE sips:a8342043f@atlanta.example.com;gr SIP/2.0 Via: SIP/2.0/TLS pc.biloxi.example.com:5061 ;branch=z9hG4bK74HH Max-Forwards: 70 From: Carol <sips:carol@chicago.example.com>;tag=8675310 To: Alice <sips:a8342043f@atlanta.example.com;gr> Call-ID: 563456212@b2.chicago.example.com CSeq: 1 INVITE Require: replaces
Replaces: 12345600@atlanta.example.com ;to-tag=3145678;from-tag=1234567 Contact: <sips:carol@client.chicago.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE Supported: replaces Content-Type: application/sdp Content-Length: ... v=0 o=carol 2890843122 2890843122 IN IP4 client.chicago.example.com s= c=IN IP4 client.chicago.example.com t=0 0 m=audio 5342 RTP/AVP 0 a=rtpmap:0 PCMU/8000 /* Alice matches the dialog information in the Replaces header and accepts the INVITE. */ F8 200 OK Alice -> Carol SIP/2.0 200 OK Via: SIP/2.0/TLS pc.biloxi.example.com:5061 ;branch=z9hG4bK74HH ;received=192.0.2.114 From: Carol <sips:carol@chicago.example.com>;tag=8675310 To: Alice <sips:a8342043f@atlanta.example.com;gr>;tag=131256 Call-ID: 563456212@b2.chicago.example.com CSeq: 1 INVITE Contact: <sips:a8342043f@atlanta.example.com;gr> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces, gruu Content-Type: application/sdp Content-Length: ... v=0 o=alice 289084543 289084543 IN IP4 client.atlanta.example.com s= c=IN IP4 client.atlanta.example.com t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000
F9 ACK Carol -> Alice ACK sips:a8342043f@atlanta.example.com;gr SIP/2.0 Via: SIP/2.0/TLS b2.biloxi.example.com:5061 ;branch=z9hG4bK7435 Max-Forwards: 70 From: Carol <sips:carol@chicago.example.com>;tag=8675310 To: Alice <sips:a8342043f@atlanta.example.com;gr>;tag=131256 Call-ID: 563456212@b2.chicago.example.com CSeq: 1 ACK Content-Length: 0 /* RTP streams are established between Alice and Carol. Alice hangs up with Bob due to the Replaces header field. */ F10 BYE Alice -> Bob BYE sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=3145678 Call-ID: 12345600@atlanta.example.com CSeq: 2 BYE Content-Length: 0 F11 200 OK Bob -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf ;received=192.0.2.103 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=3145678 Call-ID: 12345600@atlanta.example.com CSeq: 2 BYE Content-Length: 0
2.7. Call Forwarding Unconditional
Alice Proxy Gateway | | | | INVITE F1 | | |--------------->| | |(100 Trying) F2 | | |<---------------| | | (181 Call Is Being Forwarded) F3 |<---------------| INVITE F4 | | |------------->| | |180 Ringing F5| | 180 Ringing F6 |<-------------| |<---------------| 200 OK F7 | | 200 OK F8 |<-------------| |<---------------| | | ACK F9 | | |--------------->| ACK F10 | | |------------->| | Both way RTP Established | |<=============================>| | BYE F11 | | |--------------->| BYE F12 | | |------------->| | | 200 OK F13 | | 200 OK F14 |<-------------| |<---------------| | | | | Bob wants all calls forwarded to the Public Switched Telephone Network (PSTN) (which is just another URI to the proxy server). Alice calls Bob. The proxy server rewrites the Request URI, and forwards the INVITE to a Gateway. Details of messaging behind the Gateway are not shown. Note that the 181 Call is Being Forwarded response is shown as sent by the proxy. Strictly speaking, the proxy is behaving as a user agent in this case as a proxy cannot generate non-100 provisional responses. Note also that forwarding could be accomplished using a redirect (302 Moved Temporarily response).
Message Details F1 INVITE Alice -> Proxy INVITE sips:bob@biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com> Call-ID: 12345600@atlanta.example.com CSeq: 1 INVITE Contact: <sips:alice@client.atlanta.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Content-Type: application/sdp Content-Length: ... v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s= c=IN IP4 client.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F2 (100 Trying) Proxy -> Alice SIP/2.0 100 Trying Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com> Call-ID: 12345600@atlanta.example.com CSeq: 1 INVITE Content-Length: 0 F3 (181 Call is Being Forwarded) Proxy -> Alice SIP/2.0 181 Call is Being Forwarded Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=9214d
Call-ID: 12345600@atlanta.example.com CSeq: 1 INVITE Content-Length: 0 /* Proxy forwards call by rewriting Request-URI. */ F4 INVITE Proxy -> Gateway INVITE sips:+19727293660@gw1.example.com;user=phone SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749.1 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 Record-Route: <sips:ss1.example.com;lr> Max-Forwards: 69 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com> Call-ID: 12345600@atlanta.example.com CSeq: 1 INVITE Contact: <sips:alice@client.atlanta.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Content-Type: application/sdp Content-Length: ... v=0 o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com s= c=IN IP4 client.atlanta.example.com t=0 0 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F5 180 Ringing Gateway -> Proxy SIP/2.0 180 Ringing Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749.1 ;received=192.0.2.54 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 Record-Route: <sips:ss1.example.com;lr> From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345600@atlanta.example.com
CSeq: 1 INVITE Contact: <sips:+19727293660@gw1.example.com;user=phone> Content Length:0 F6 180 Ringing Proxy -> Alice SIP/2.0 180 Ringing Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 Record-Route: <sips:ss1.example.com;lr> From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345600@atlanta.example.com CSeq: 1 INVITE Contact: <sips:+19727293660@gw1.example.com;user=phone> Content Length: 0 F7 200 OK Gateway -> Proxy SIP/2.0 200 OK Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749.1 ;received=192.0.2.54 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 Record-Route: <sips:ss1.example.com;lr> From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345600@atlanta.example.com CSeq: 1 INVITE Contact: <sips:+19727293660@gw1.example.com;user=phone> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Content-Type: application/sdp Content-Length: ... v=0 o=GATEWAY1 2890844527 2890844527 IN IP4 gatewayone.example.com s= c=IN IP4 gatewayone.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000
F8 200 OK Proxy -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 Record-Route: <sips:ss1.example.com;lr> From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345600@atlanta.example.com CSeq: 1 INVITE Contact: <sips:+19727293660@gw1.example.com;user=phone> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Content-Type: application/sdp Content-Length: ... v=0 o=GATEWAY1 2890844527 2890844527 IN IP4 gatewayone.example.com s= c=IN IP4 gatewayone.example.com t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F9 ACK Alice -> Proxy ACK sips:+19727293660@gw1.example.com;user=phone SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf31 Route: <sips:ss1.example.com;lr> Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345600@atlanta.example.com CSeq: 1 ACK Content-Length: 0 F10 ACK Proxy -> Gateway ACK sips:+19727293660@gw1.example.com;user=phone SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749ws.1 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf31 ;received=192.0.2.103 Max-Forwards: 69
From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345600@atlanta.example.com CSeq: 1 ACK Content-Length: 0 F11 BYE Alice -> Proxy BYE sips:+19727293660@gw1.example.com;user=phone SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bfJe Route: <sips:ss1.example.com;lr> Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345600@atlanta.example.com CSeq: 2 BYE Content-Length: 0 F12 BYE Proxy -> Gateway BYE sips:+19727293660@gw1.example.com;user=phone SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749G1 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bfJe ;received=192.0.2.103 Max-Forwards: 69 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345600@atlanta.example.com CSeq: 2 BYE Content-Length: 0 F13 200 OK Gateway -> Proxy SIP/2.0 200 OK Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749G1 ;received=192.0.2.54 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bfJe ;received=192.0.2.103 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159
Call-ID: 12345600@atlanta.example.com CSeq: 2 BYE Content-Length: 0 F14 200 OK Proxy -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bfJe ;received=192.0.2.103 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345600@atlanta.example.com CSeq: 2 BYE Content-Length: 0