2.2. Consultation Hold
Alice Proxy Bob Carol | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | |------------->| | |(100 Trying) F3 | | | |<---------------|180 Ringing F4| | | |<-------------| | | 180 Ringing F5 | | | |<---------------| 200 OK F6 | | | |<-------------| | | 200 OK F7 | | | |<---------------| | | | ACK F8 | | | |--------------->| ACK F9 | | | |------------->| | | Both way RTP Established | | |<=============================>| | | |INVITE(hold) F10 | |INVITE(hold) F11|<-------------| | |<---------------| | | | 200 OK F12 | | | |--------------->| 200 OK F13 | | | |------------->| | | | ACK F14 | | | |<-------------| | | ACK F15 | | | |<---------------| | | | No RTP Sent! | | | | INVITE F16 | | | |<-------------| | | | | INVITE F17 | | |--------------------------------->| | |(100 Trying) F18 | | |------------->| | | | | 180 Ringing F19 | | |<---------------------------------| | | 180 Ringing F20 | | |------------->| | | | | 200 OK F21 | | |<---------------------------------| | | 200 OK F22 | | | |------------->| | | | ACK F23 | | | |<-------------| | | | | ACK F24 |
| |--------------------------------->| | | Both way RTP Established | | | |<=================>| | | BYE F25 | | | |<-------------| | | | | BYE F26 | | |--------------------------------->| | | | 200 OK F27 | | |<---------------------------------| | | 200 OK F28 | | | |------------->| | | | INVITE F29 | | | INVITE F30 |<-------------| | |<---------------| | | | 200 OK F31 | | | |--------------->| 200 OK F32 | | | |------------->| | | | ACK F33 | | | |<-------------| | | ACK F34 | | | |<---------------| | | | Both way RTP Established | | |<=============================>| | | BYE F35 | | | |--------------->| BYE F36 | | | |------------->| | | | 200 OK F37 | | | |<-------------| | | 200 OK F38 | | | |<---------------| | | | | | | In this scenario, Alice calls Bob. Bob places call on hold. Bob calls Carol. Bob then disconnects with Carol, then takes the call with Alice off hold. The call ends when Alice hangs up. Also note the use of the rendering feature tag defined in RFC 4235 [RFC4235] used in F10 to indicate that Bob's UA is no longer rendering media to Bob, i.e., that Bob has placed the call on hold. Message Details F1 INVITE Alice -> Proxy 1 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 INVITE Proxy 1 -> Bob INVITE sips:bob@client.biloxi.example.com 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 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
F3 (100 Trying) Proxy 1 -> 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 F4 180 Ringing Bob -> Proxy 1 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:bob@client.biloxi.example.com> Content Length:0 F5 180 Ringing Proxy 1 -> 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:bob@client.biloxi.example.com> Content Length: 0
F6 200 OK Bob -> Proxy 1 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: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 F7 200 OK Proxy 1 -> 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: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 F8 ACK Alice -> Proxy 1 ACK sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf45 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 Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Length: 0 F9 ACK Proxy 1 -> Bob ACK sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK837494.1 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf45 ;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 Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Length: 0
/* Bob places Alice on hold. */ F10 INVITE Bob -> Proxy 1 INVITE sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7 Route: <sips:ss1.example.com;lr> Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 1 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 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 F11 INVITE Proxy 1 -> Alice INVITE sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK837497.1 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7 ;received=192.0.2.105 Record-Route: <sips:ss1.example.com;lr> Max-Forwards: 69 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 1 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 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 F12 200 OK Alice -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK837497.1 ;received=192.0.2.54 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7 ;received=192.0.2.105 Record-Route: <sips:ss1.example.com;lr> From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 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 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 F13 200 OK Proxy 1 -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7 ;received=192.0.2.105 Record-Route: <sips:ss1.example.com;lr> From: Bob <sips:bob@biloxi.example.com>;tag=314159
To: Alice <sips:alice@atlanta.example.com>;tag=1234567 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 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 F14 ACK Bob -> Proxy 1 ACK sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashdsg Route: <sips:ss1.example.com;lr> Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 1 ACK Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Length: 0 F15 ACK Proxy 1 -> Alice ACK sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK8374.1 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashdsg ;received=192.0.2.105 Max-Forwards: 69 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567
Call-ID: 12345600@atlanta.example.com CSeq: 1 ACK Content-Length: 0 F16 INVITE Bob -> Proxy 1 INVITE sips:carol@chicago.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds22 Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com> Call-ID: 9876543210@biloxi.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 2890844834 2890844834 IN IP4 client.biloxi.example.com s= c=IN IP4 client.biloxi.example.com t=0 0 m=audio 50170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F17 INVITE Proxy 1 -> Carol INVITE sips:carol@client.chicago.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749a.1 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds22 ;received=192.0.2.105 Record-Route: <sips:ss1.example.com;lr> Max-Forwards: 69 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com> Call-ID: 9876543210@biloxi.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 2890844834 2890844834 IN IP4 client.biloxi.example.com s= c=IN IP4 client.biloxi.example.com t=0 0 m=audio 50170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 F18 (100 Trying) Proxy 1 -> Bob SIP/2.0 100 Trying Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds22 ;received=192.0.2.105 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com> Call-ID: 9876543210@biloxi.example.com CSeq: 1 INVITE Content-Length: 0 F19 180 Ringing Carol -> Proxy 1 SIP/2.0 180 Ringing Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749a.1 ;received=192.0.2.54 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds22 ;received=192.0.2.105 Record-Route: <sips:ss1.example.com;lr> From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=456654 Call-ID: 9876543210@atlanta.example.com CSeq: 1 INVITE Contact: <sips:carol@client.chicago.example.com> Content Length:0 F20 180 Ringing Proxy 1 -> Bob SIP/2.0 180 Ringing Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds22
;received=client.chicago.example.com Record-Route: <sips:ss1.example.com;lr> From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=456654 Call-ID: 9876543210@biloxi.example.com CSeq: 1 INVITE Contact: <sips:carol@client.chicago.example.com> Content Length: 0 F21 200 OK Carol -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749a.1 ;received=192.0.2.54 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds22 ;received=192.0.2.105 Record-Route: <sips:ss1.example.com;lr> From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=456654 Call-ID: 9876543210@biloxi.example.com CSeq: 1 INVITE Contact: <sips:carol@client.chicago.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces 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 F22 200 OK Proxy 1 -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds22 ;received=192.0.2.105 Record-Route: <sips:ss1.example.com;lr> From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=456654
Call-ID: 9876543210@biloxi.example.com CSeq: 1 INVITE Contact: <sips:carol@client.chicago.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces 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 F23 ACK Bob -> Proxy 1 ACK sips:carol@client.chicago.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds24 Route: <sips:ss1.example.com;lr> Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=456654 Call-ID: 9876543210@biloxi.example.com CSeq: 1 ACK Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Length: 0 F24 ACK Proxy 1 -> Carol ACK sips:carol@client.chicago.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749b.1 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds24 ;received=192.0.2.105 Max-Forwards: 69 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=456654 Call-ID: 9876543210@biloxi.example.com CSeq: 1 ACK
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Length: 0 F25 BYE Bob -> Proxy 1 BYE sips:carol@client.chicago.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7j Route: <sips:ss1.example.com;lr> Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=456654 Call-ID: 9876543210@biloxi.example.com CSeq: 2 BYE Content-Length: 0 F26 BYE Proxy 1 -> Carol BYE sips:carol@client.chicago.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749k.1 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7j ;received=192.0.2.105 Max-Forwards: 69 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=456654 Call-ID: 9876543210@biloxi.example.com CSeq: 2 BYE Content-Length: 0 F27 200 OK Carol -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749k.1 ;received=192.0.2.54 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7j ;received=192.0.2.105 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=456654
Call-ID: 9876543210@biloxi.example.com CSeq: 2 BYE Content-Length: 0 F28 200 OK Proxy 1 -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7j ;received=192.0.2.105 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=456654 Call-ID: 9876543210@biloxi.example.com CSeq: 2 BYE Content-Length: 0 /* Bob takes the call off hold. */ F29 INVITE Bob -> Proxy 1 INVITE sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7b Route: <sips:ss1.example.com;lr> Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 2 INVITE Contact: <sips:bob@client.biloxi.example.com> Content-Type: application/sdp Content-Length: ... v=0 o=bob 2890844527 2890844529 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
F30 INVITE Proxy 1 -> Alice INVITE sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749q.1 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7b ;received=192.0.2.105 Record-Route: <sips:ss1.example.com;lr> Max-Forwards: 69 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 2 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 2890844529 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 F31 200 OK Alice -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK83749q.1 ;received=192.0.2.54 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7b ;received=192.0.2.105 Record-Route: <sips:ss1.example.com;lr> From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 2 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 2890844528 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 F32 200 OK Proxy 1 -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7b ;received=192.0.2.105 Record-Route: <sips:ss1.example.com;lr> From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 2 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 2890844528 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 F33 ACK Bob -> Proxy 1 ACK sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7d7 Route: <sips:ss1.example.com;lr> Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 2 ACK Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces
Content-Length: 0 F34 ACK Proxy 1 -> Alice ACK sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK8374.1 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds7d7 ;received=192.0.2.105 Max-Forwards: 69 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345600@atlanta.example.com CSeq: 2 ACK Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Length: 0 F35 BYE Alice -> Proxy 1 BYE sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf10 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 F36 BYE Proxy 1 -> Bob BYE sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK8379.1 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf10 ;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
F37 200 OK Bob -> Proxy 1 SIP/2.0 200 OK Via: SIP/2.0/TLS ss1.example.com:5061 ;branch=z9hG4bK8379.1 ;received=192.0.2.54 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf10 ;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 F38 200 OK Proxy 1 -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74bf10 ;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
2.3. Music on Hold
Alice Bob Music Server | | | | INVITE F1 | | |--------------->| | | 180 Ringing F2 | | |<---------------| | | 200 OK F3 | | |<---------------| | | ACK F4 | | |--------------->| | | RTP | | |<==============>| | | | | | Bob places Alice on hold | | | | | INVITE (hold) F5 | |<---------------| | | 200 OK F6 | | |--------------->| | | ACK F7 | | |<---------------| | | no RTP | | | | | | Bob initiates music on hold | | | | | | REFER Refer-To: A F8 | |------------->| | | 202 F9 | | |<-------------| | | NOTIFY F10 | | |<-------------| | | 200 F11 | | |------------->| | INVITE F12 Replaces: B | |<------------------------------| | 200 OK F13 | |------------------------------>| | ACK F14 | |<------------------------------| | RTP Music | |<==============================| | BYE F15 | | |--------------->| NOTIFY F17 | | 200 OK F16 |<-------------| |<---------------| 200 OK F18 | | |------------->|
| | | | The music on hold is complete | | | | | Bob takes Alice off hold | | | | | INVITE Replaces: M F19 | |<---------------| | | 200 OK F20 | | |--------------->| | | ACK F21 | | |<---------------| | | RTP | | |<==============>| | | BYE F22 | |------------------------------>| | 200 OK F23 | |<------------------------------| In this flow, Bob places Alice on hold with music. This is performed by Bob sending a REFER to a Music Server that sends an INVITE with Replaces to Alice. The Music Server then sends RTP music to Alice. Bob picks the call up from hold by sending an INVITE with Replaces to Alice. Note the use of the rendering feature tag defined in RFC 4235 [RFC4235] used in F5 to indicate that Bob's UA is no longer rendering media to Bob, i.e., that Bob has placed the call on hold. Feature tags are also used in F12 with the automaton (defined in RFC 3840 [RFC3840]) and byeless feature tags (defined in RFC 4235 [RFC4235]) to describe the capabilities of the Music Server. Should Alice not wish to receive music on hold, her UA could refuse F12 and she will remain on hold with Bob, but in silence. 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=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=z9hG4bK74bfd 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 /* Bob places Alice on hold. */ F5 INVITE Bob -> Alice INVITE sips:a8342043f@atlanta.example.com;gr SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bK874bk To: Alice <sips:alice@atlanta.example.com>;tag=1234567 From: Bob <sips:bob@biloxi.example.com>;tag=23431 Call-ID: 12345600@atlanta.example.com CSeq: 712 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 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=z9hG4bK874bk ;received=192.0.2.105 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 From: Bob <sips:bob@biloxi.example.com>;tag=23431 Call-ID: 12345600@atlanta.example.com CSeq: 712 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 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:a8342043f@atlanta.example.com;gr SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKq874b To: Alice <sips:alice@atlanta.example.com>;tag=1234567 From: Bob <sips:bob@biloxi.example.com>;tag=23431 Call-ID: 12345600@atlanta.example.com CSeq: 712 ACK Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Length: 0 /* Bob REFERs Music Server to establish session with Alice which replaces the established session between Alice and Bob. */ F8 REFER Bob -> Music Server REFER sips:music@server.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds9
Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=02134 To: Music Server <sips:music@server.example.com> Call-ID: 4802029847@biloxi.example.com CSeq: 1 REFER <allOneLine> Refer-To: <sips:a8342043f@atlanta.example.com;gr?Replaces= 12345600%40atlanta.example.com%3Bfrom-tag%3D23431 %3Bto-tag%3D1234567&Require=replaces> </allOneLine> Referred-By: <sips:bob@biloxi.example.com> Contact: <sips:bob@client.biloxi.example.com> Content-Length: 0 F9 202 Accepted Music Server -> Bob SIP/2.0 202 Accepted Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds9 ;received=192.0.2.105 From: Bob <sips:bob@biloxi.example.com>;tag=02134 To: Music Server <sips:music@server.example.com>;tag=56323 Call-ID: 4802029847@biloxi.example.com Contact: <sips:music@server.example.com> CSeq: 1 REFER Content-Length: 0 F10 NOTIFY Music Server -> Bob NOTIFY sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS server.example.com:5061 ;branch=z9hG4bK74bT6 To: Bob <sips:bob@biloxi.example.com>;tag=02134 Max-Forwards: 70 From: Music Server <sips:music@server.example.com>;tag=56323 Call-ID: 4802029847@biloxi.example.com CSeq: 1 NOTIFY Event: refer Subscription-State: active;expires=60 Contact: <sips:music@server.example.com> Content-Type: message/sipfrag Content-Length: ... SIP/2.0 100 Trying
F11 200 OK Bob -> Music Server SIP/2.0 200 OK Via: SIP/2.0/TLS server.example.com:5061 ;branch=z9hG4bK74bT6 ;received=192.0.2.103 To: Bob <sips:bob@biloxi.example.com>;tag=02134 From: Music Server <sips:music@server.example.com>;tag=56323 Call-ID: 4802029847@biloxi.example.com CSeq: 1 NOTIFY Content-Length: 0 /* Music Server places call to Alice to replace session between Alice and Bob. */ F12 INVITE Music Server -> Alice INVITE sips:a8342043f@atlanta.example.com;gr SIP/2.0 Via: SIP/2.0/TLS server.example.com:5061 ;branch=z9hG4bK74rf Max-Forwards: 70 From: <sips:music@server.example.com>;tag=0111 To: <sips:a8342043f@atlanta.example.com;gr> Call-ID: a5-75-34-12-76@server.example.com CSeq: 1 INVITE Referred-By: <sips:bob@biloxi.example.com> Contact: <sips:music@server.example.com>;automaton ;+sip.byeless;+sip.rendering="no" Require: replaces Replaces: 12345600@atlanta.example.com ;from-tag=23431;to-tag=1234567 Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: ... v=0 o=MusicServer 2890844576 2890844576 IN IP4 server.example.com s= c=IN IP4 server.example.com t=0 0 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=sendonly
F13 200 OK Alice -> Music Server SIP/2.0 200 OK Via: SIP/2.0/TLS server.example.com:5061 ;branch=z9hG4bK74rf ;received=192.0.2.103 From: <sips:music@server.example.com>;tag=0111 To: <sips:a8342043f@atlanta.example.com;gr>;tag=098594 Call-ID: a5-75-34-12-76@server.example.com CSeq: 1 INVITE Contact: <sips:a8342043f@atlanta.example.com;gr> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, 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 a=recvonly F14 ACK Music Server -> Alice ACK sips:a8342043f@atlanta.example.com;gr SIP/2.0 Via: SIP/2.0/TLS server.example.com:5061 ;branch=z9hG4bK7rfF Max-Forwards: 70 From: <sips:music@server.example.com>;tag=0111 To: <sips:a8342043f@atlanta.example.com;gr>;tag=098594 Call-ID: a5-75-34-12-76@server.example.com CSeq: 1 ACK Content-Length: 0 F15 BYE Alice -> Bob BYE sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bKnashds7 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 BYE Content-Length: 0 F16 200 OK Bob -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bKnashds7 ;received=192.0.2.105 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 BYE Content-Length: 0 /* Music Server reports success back to Bob by returning a 200 OK response. Bob obtains the dialog identifiers from the headers included in the response. */ F17 NOTIFY Music Server -> Bob NOTIFY sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS server.example.com:5061 ;branch=z9hG4bK74bf9 To: Bob <sips:bob@biloxi.example.com>;tag=02134 Max-Forwards: 70 From: Music Server <sips:music@server.example.com>;tag=56323 Call-ID: 4802029847@biloxi.example.com CSeq: 2 NOTIFY Event: refer Subscription-State: terminated;reason=noresource Contact: <sips:music@server.example.com> Content-Type: message/sipfrag Content-Length: ... SIP/2.0 200 OK Via: SIP/2.0/TLS server.example.com:5061 ;branch=z9hG4bK74rf ;received=192.0.2.103 From: <sips:music@server.example.com>;tag=0111 To: <sips:a8342043f@atlanta.example.com;gr>;tag=098594 Call-ID: a5-75-34-12-76@server.example.com CSeq: 1 INVITE Contact: <sips:a8342043f@atlanta.example.com;gr>
F18 200 OK Bob -> Music Server SIP/2.0 200 OK Via: SIP/2.0/TLS server.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.103 To: Bob <sips:bob@biloxi.example.com>;tag=02134 From: Music Server <sips:music@server.example.com>;tag=56323 Call-ID: 4802029847@biloxi.example.com CSeq: 2 NOTIFY Content-Length: 0 /* Alice is now parked at the Music Server. */ /* Bob picks up the call by sending an INVITE to Alice, who replaces the existing session with the Music Server. */ F19 INVITE Bob -> Alice INVITE sips:a8342043f@atlanta.example.com;gr SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bK74bf9 From: Bob <sips:bob@biloxi.example.com>;tag=4i323pr To: Alice <sips:a8342043f@atlanta.example.com;gr> Call-ID: uioewrjk2k2were CSeq: 42121 INVITE Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Replaces: a5-75-34-12-76@server.example.com ;to-tag=098594;from-tag=0111 Contact: <sips:bob@client.biloxi.example.com> Supported: replaces Content-Type: application/sdp Content-Length: ... v=0 o=bob 2890844631 2890844631 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=sendrecv
F20 200 OK Alice -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bK74bf9 ;received=192.0.2.105 From: Bob <sips:bob@biloxi.example.com>;tag=4i323pr To: Alice <sips:a8342043f@atlanta.example.com;gr>;tag=6654323 Call-ID: uioewrjk2k2were CSeq: 42121 INVITE Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Contact: <sips:alice@client.atlanta.example.com> Supported: replaces Content-Type: application/sdp Content-Length: ... v=0 o=alice 2890844576 2890844576 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=sendrecv F21 200 ACK Bob -> Alice ACK sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKj974bf9 From: Bob <sips:bob@biloxi.example.com>;tag=4i323pr To: Alice <sips:a8342043f@atlanta.example.com;gr>;tag=6654323 Call-ID: uioewrjk2k2were CSeq: 42121 ACK Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces Content-Length: 0 F22 BYE Alice -> Music Server BYE sips:music@server.example.com SIP/2.0 Max-Forwards: 70 Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74rf
To: <sips:music@server.example.com>;tag=0111 From: <sips:a8342043f@atlanta.example.com;gr>;tag=098594 Call-ID: a5-75-34-12-76@server.example.com CSeq: 15 BYE Content-Length: 0 F23 200 OK Music Server -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.atlanta.example.com:5061 ;branch=z9hG4bK74rf ;received=192.0.2.103 To: <sips:music@server.example.com>;tag=0111 From: <sips:a8342043f@atlanta.example.com;gr>;tag=098594 Call-ID: a5-75-34-12-76@server.example.com CSeq: 15 BYE Content-Length: 0 /* Normal media session between Alice and Bob is resumed. */
2.4. Transfer - Unattended
Alice Bob Carol | INVITE F1 | | |<-------------------| | | 180 Ringing F2 | | |------------------->| | | 200 OK F3 | | |------------------->| | | ACK F4 | | |<-------------------| | | RTP | | |<==================>| | | | | | Alice performs unattended transfer | | | | | REFER Refer-To:C F5| | |------------------->| | | 202 Accepted F6 | | |<-------------------| | | NOTIFY F7 | | |<-------------------| | | 200 OK F8 | | |------------------->| | | BYE F9 | | |------------------->| | | 200 OK F10 | | |<-------------------| | | No RTP Session | INVITE Referred-By: A F11 | |------------------->| | | 180 Ringing F12 | | |<-------------------| | | 200 OK F13 | | |<-------------------| | | ACK F14 | | |------------------->| | | RTP | | |<==================>| | NOTIFY F15 | | |<-------------------| | | 200 OK F16 | | |------------------->| | | | |
In this scenario, Bob calls Alice. Alice then transfers Bob to Carol, then Alice disconnects with Bob. Bob establishes the session to Carol then reports the success back to Alice in the NOTIFY in F15. If the transfer fails, Bob can send a new INVITE back to Alice to re- establish the session. Despite the BYE sent by Alice in F9, the dialog between Alice and Bob still exists until the subscription created by the REFER has terminated (either due to a NOTIFY containing a Subscription-State: terminated;reason=noresource header field, as in F15, or a 481 response to a NOTIFY). For more about call transfer, see the transfer document [TRANSFER]. Message Details F1 INVITE Bob -> Alice INVITE sips:alice@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=314159 To: Alice <sips:alice@atlanta.example.com> Call-ID: 12345601@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 F2 180 Ringing Alice -> Bob SIP/2.0 180 Ringing 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=314159
To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345601@atlanta.example.com CSeq: 1 INVITE Contact: <sips:alice@client.atlanta.example.com> Content-Length: 0 F3 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=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345601@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 F4 ACK Bob -> Alice ACK sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds2 Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345601@atlanta.example.com CSeq: 1 ACK Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Length: 0 /* Session is established between Alice and Bob. */
/* Alice performs unattended transfer of Bob to Carol. */ F5 REFER Alice -> Bob REFER sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds8 Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345601@atlanta.example.com CSeq: 101 REFER Refer-To: <sips:carol@chicago.example.com> Referred-By: <alice@atlanta.example.com> Contact: <sips:alice@client.atlanta.example.com> Content-Length: 0 F6 202 Accepted Bob -> Alice SIP/2.0 202 Accepted Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds8 ;received=192.0.2.105 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345601@atlanta.example.com Contact: <sips:bob@client.biloxi.example.com> CSeq: 101 REFER Content-Length: 0 F7 NOTIFY Bob -> Alice NOTIFY sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds32 Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345601@atlanta.example.com CSeq: 2 NOTIFY Event: refer Subscription-State: active;expires=60 Contact: <sips:bob@client.biloxi.example.com> Content-Type: message/sipfrag Content-Length: ...
SIP/2.0 100 Trying F8 200 OK Alice -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds32 ;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345601@atlanta.example.com CSeq: 2 NOTIFY Content-Length: 0 /* Alice now disconnects with Bob. */ F9 BYE Alice -> Bob BYE sips:bob@client.biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds43 Max-Forwards: 70 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345601@atlanta.example.com CSeq: 102 BYE Content-Length: 0 F10 200 OK Bob -> Alice SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds43 ;received=192.0.2.105 From: Alice <sips:alice@atlanta.example.com>;tag=1234567 To: Bob <sips:bob@biloxi.example.com>;tag=314159 Call-ID: 12345601@atlanta.example.com CSeq: 102 BYE Content-Length: 0 /* Bob attempts the transfer to Carol. */
F11 INVITE Bob -> Carol INVITE sips:carol@chicago.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds1 Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com> Call-ID: 7436222@atlanta.example.com CSeq: 1 INVITE Contact: <sips:bob@client.biloxi.example.com> Referred-By: <alice@atlanta.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: ... v=0 o=bob 2890844539 2890844539 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 F12 180 Ringing Carol -> Bob SIP/2.0 180 Ringing Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds1 ;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=928287 Call-ID: 7436222@atlanta.example.com CSeq: 1 INVITE Contact: <sips:carol@client.chicago.example.com> Content-Length: 0 F13 200 OK Carol -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds1 ;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=928287
Call-ID: 7436222@atlanta.example.com CSeq: 1 INVITE Contact: <sips:carol@client.chicago.example.com> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: ... v=0 o=carol 2890944542 2890844542 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 F14 ACK Bob -> Carol ACK sips:carol@client.chicago.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds9 Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=928287 Call-ID: 7436222@atlanta.example.com CSeq: 1 ACK Content-Length: 0 /* Bob and Carol now have established a session. Bob reports success to Alice, which Alice probably ignores. */ F15 NOTIFY Bob -> Alice NOTIFY sips:alice@client.atlanta.example.com SIP/2.0 Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds67 Max-Forwards: 70 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345601@atlanta.example.com CSeq: 3 NOTIFY Event: refer Subscription-State: terminated;reason=noresource Contact: <sips:bob@client.biloxi.example.com> Content-Type: message/sipfrag
Content-Length: ... SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds1 ;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=8675309 To: Carol <sips:carol@chicago.example.com>;tag=928287 Call-ID: 7436222@atlanta.example.com CSeq: 1 INVITE Contact: <sips:carol@client.chicago.example.com> Content-Type: application/sdp Content-Length: ... F16 200 OK Alice -> Bob SIP/2.0 200 OK Via: SIP/2.0/TLS client.biloxi.example.com:5061 ;branch=z9hG4bKnashds6 ;received=192.0.2.113 From: Bob <sips:bob@biloxi.example.com>;tag=314159 To: Alice <sips:alice@atlanta.example.com>;tag=1234567 Call-ID: 12345601@atlanta.example.com CSeq: 3 NOTIFY Content-Length: 0