[Users] CANCEL/ACK processing

Daniel-Constantin Mierla daniel at voice-system.ro
Mon Nov 13 10:21:48 CET 2006


Hello,

On 11/08/06 01:28, Mark Kent wrote:
> Observant readers will recognize from the following that this question
> is related to earlier posts from me...  that is: there is something
> fundamental that I just don't get.
>
> If someone is eager to answer all my questions, then
> please search ahead for the question marks (?).
>
> Also, what is the bigger picture that I am missing?
> Please use as many words as necessary to explain.
>
> Thanks,
> -mark
>
>  The players:
>
>   CUSTOMER-IP: the UserAgent
>    OPENSER-IP: my openser box
>  OPENSER.FQDN: the fully qualified domain name of my openser box
>     PSTNGW-IP: the PSTN gateway
>
>  My openser box gets this CANCEL:
>
>   U 2006/11/06 18:40:10.689785 CUSTOMER-IP:5060 -> OPENSER-IP:5060
>   CANCEL sip:011445551212 at OPENSER.FQDN:5060 SIP/2.0
>   From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
>   To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>
>   Call-ID: CALLID at CUSTOMER-IP
>   CSeq: 2 CANCEL
>   Via: SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
>   Max-Forwards: 70
>   Supported: 100rel,replaces
>   Content-Length: 0
>
>  It ends up in my standard stateful relay handler where I 
>  t_relay() it (should I?) and this gets generated:
>
>   #
>   U 2006/11/06 18:40:10.691301 OPENSER-IP:5060 -> PSTNGW-IP:5060
>   CANCEL sip:445551212 at PSTNGW-IP;user=phone SIP/2.0
>   Record-Route: <sip:011445551212 at OPENSER-IP;lr=on;ftag=TAG>
>   From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
>   To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>
>   Call-ID: CALLID at CUSTOMER-IP
>   CSeq: 2 CANCEL
>   Via: SIP/2.0/UDP OPENSER-IP;branch=BRANCH2.0
>   Via: SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
>   Max-Forwards: 69
>   Supported: 100rel,replaces
>   Content-Length: 0
>
>  and this also happens:
>
>   #
>   U 2006/11/06 18:40:10.691342 OPENSER-IP:5060 -> CUSTOMER-IP:5060
>   SIP/2.0 200 canceling
>   From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
>   To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=TAG2
>   Call-ID: CALLID at CUSTOMER-IP
>   CSeq: 2 CANCEL
>   Via: SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
>   Content-Length: 0
>
>  How was that last packet generated, where was it done?
>   
it was done inside TM module. A stateful proxyshould send immediately 
back a reply to CANCEL.
>  It's not in my openser.cfg, should I have sent back just such
>  a message?  If so, would this automagically sent message still
>  have been sent?
>
>  Next I get these two packets:
>
>   #
>   U 2006/11/06 18:40:10.761582 PSTNGW-IP:5060 -> OPENSER-IP:5060
>   SIP/2.0 200 OK
>   Call-ID: CALLID at CUSTOMER-IP
>   From:  <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
>   To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>
>   Content-Length: 0
>   CSeq: 2 CANCEL
>   Via: SIP/2.0/UDP OPENSER-IP;branch=BRANCH2.0,SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
>   Contact: sip:445551212 at PSTNGW-IP:5060;user=phone
>   Record-Route: <sip:011445551212 at OPENSER-IP;lr=on;ftag=TAG>
>
>   #
>   U 2006/11/06 18:40:10.761616 PSTNGW-IP:5060 -> OPENSER-IP:5060
>   SIP/2.0 487 Request Terminated
>   Call-ID: CALLID at CUSTOMER-IP
>   From:  <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
>   To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=20505
>   Content-Length: 0
>   CSeq: 2 INVITE
>   Via: SIP/2.0/UDP OPENSER-IP;branch=BRANCH2.0,SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
>
>  and my openser box replies with :
>
>   #
>   U 2006/11/06 18:40:10.762238 OPENSER-IP:5060 -> PSTNGW-IP:5060
>   ACK sip:445551212 at PSTNGW-IP;user=phone SIP/2.0
>   Via: SIP/2.0/UDP OPENSER-IP;branch=BRANCH2.0
>   From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
>   Call-ID: CALLID at CUSTOMER-IP
>   To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=20505
>   CSeq: 2 ACK
>   Content-Length: 0
>
>  and sends on this to the UAC:
>
>   #
>   U 2006/11/06 18:40:10.762377 OPENSER-IP:5060 -> CUSTOMER-IP:5060
>   SIP/2.0 487 Request Terminated
>   Call-ID: CALLID at CUSTOMER-IP
>   From:  <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
>   To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=20505
>   Content-Length: 0
>   CSeq: 2 INVITE
>   Via: SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
>
>  Now, how was that generated?   Is this part of the "tm" module?
>   

Yes, this is part of TM module as well. This behavior is required by RFC.
>  And then when I get this ACK:
>
>   #
>   U 2006/11/06 18:40:10.772875 CUSTOMER-IP:5060 -> OPENSER-IP:5060
>   ACK sip:011445551212 at OPENSER.FQDN:5060 SIP/2.0
>   From: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>;tag=TAG
>   To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=20505
>   Call-ID: CALLID at CUSTOMER-IP
>   CSeq: 2 ACK
>   Via: SIP/2.0/UDP CUSTOMER-IP:5060;branch=BRANCH
>   Max-Forwards: 70
>   Contact: <sip:CUST-PHONE-NUMBER at CUSTOMER-IP:5060;transport=UDP>
>   Content-Length: 0
>
>  What should I do with it?  I do nothing... if I should do nothing
>  is there any special way I should do it?  Or is this just handled
>  by the tm module?
>   

ACKs to negative replies are filtered out by SL module, since they are 
intended to end to openser proxy.

Cheers,
Daniel

>  What I don't get is the CANCEL is directed AT my openser box:
>
>   CANCEL sip:011445551212 at OPENSER.FQDN:5060 SIP/2.0
>   To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>
>
>  just like the ACK:
>
>   ACK sip:011445551212 at OPENSER.FQDN:5060 SIP/2.0
>   To: <sip:011445551212 at OPENSER.FQDN:5060;transport=UDP>;tag=20505
>
>  and I t_relay() the CANCEL  but sit on the ACK...
>
>
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
>
>   




More information about the Users mailing list