Subject: [Sip] Query on draft-levy-sip-diversion behaviour

From: [email-masked]
Date: Wed, 17 Mar 2004 17:39:52 +1100

Dear All,
        Trying to understand / clarify the correct behaviour of a B2BUA 
which I am approximating to a recursive proxy (this is probably my 
undoing) which receives a request with multiple Diversion headers and call 
processes the call with a new diversion and creates a subsequent  new 
upstream Invite. 

Section 4 of the draft-levy-sip-diversion states "The Diversion header 
SHOULD be added when a SIP proxy server, SIP redirect server, or SIP user 
agent changes the ultimate endpoint which will receive the call." and 
"Existing Diversion headers received in an incoming request MUST NOT be 
removed or changed in forwarded requests."

So if the incoming INVITE looked like this (SDP removed for sake of 
brevity):
 
SIP,24/02/2004,16:32:11,570843,1471,203.044.175.116,203.044.175.196,05060,05060,
INVITE sip:[email-masked];user=phone SIP/2.0 
Via: SIP/2.0/UDP gateway1.net:5060 ;branch=term-46-409518564-0386023011 
From: 409518564 <sip:[email-masked];user=phone> ;tag=2134165760 
To: 0386023011 <sip:[email-masked];user=phone> 
Call-ID: [email-masked] 
CSeq: 2 INVITE 
Supported: timer 
Contact:  <sip:[email-masked]:5060> 
Diversion: 
"396343363"<sip:[email-masked]>;counter=2;reason=unconditional 
Diversion: 
"0396343519"<sip:[email-masked]>;counter=1;reason=unconditional 
Allow: INVITE,ACK,PRACK,SUBSCRIBE,BYE,CANCEL,NOTIFY,INFO,REFER,UPDATE 
Content-Type: application/sdp 
Content-Length: 617 

If this is call processed to be diverted back to the PSTN if the proxy 
SHOULD add a Diversion header and MUST not change the exitsing Diversion 
headers then how should the subsequent Invite look ? (SDP removed for sake 
of brevity):

SIP,24/02/2004,16:32:11,625011,1500,203.044.175.196,203.044.175.116,32985,05060,
INVITE sip:[email-masked]:5060;user=phone SIP/2.0 
Via:SIP/2.0/UDP 
203.44.175.196;branch=z9hG4bK-BroadWorks.203.44.175.196-203.44.175.116V5060-0-855705178-1053817325-1077600718003 

From:<sip:[email-masked];user=phone>;tag=1053817325-1077600718003 

To:<sip:[email-masked]:5060;user=phone> 
Call-ID:[email-masked] 
CSeq:855705178 INVITE 
Contact:<sip:203.44.175.196:5060> 
Diversion:"customer2user3011"<sip:[email-masked]>;reason=unconditional
Diversion:"396343363"<sip:[email-masked]>;counter=2;reason=unconditional
Diversion:"0396343519"<sip:[email-masked]>;counter=1;reason=unconditional 

Allow:ACK,BYE,CANCEL,INFO,INVITE,OPTIONS,PRACK,REFER 
Supported:100rel,timer 
Content-Type:application/sdp 
Max-Forwards:10 
Content-Length:617 

With no counter field in the top most Diversion header is treated as 1 for 
purposes of summing the total of deflections is 4, which is correct. 

Is the above logic and example of the subsequent INVITE correct ?.

How in the example for SIP to ISUP in the draft is there two Diversion 
headers in the Invite with a top most Header containing a counter of 4. If 
you MUST preserve the previous Diversion Headers do you have only two with 
a top most Diversion header with a counter = 4 ?.

<--INVITE +19195551004------
                                       |  Diversion: <tel:+19195551002>
                                       |    ;reason="user-busy"
                                       |    ;counter=4
                                       |  Diversion: <tel:+19195551001>
                                       |    ;reason="unconditional"
                                       |    ;counter=1

Regards,

Wayne Davies
System Support Engineer - Broadsoft

Office: +61 3 96260468
Mobile: 0417282909
email:   [email-masked]