< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index Next in Thread >

[SFtrack] Updated: (XECS-1589) SipXecs does not gracefully handle broken TCP streams


     [ 
http://track.sipfoundry.org/browse/XECS-1589?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dale R. Worley updated XECS-1589:
---------------------------------

    Attachment: reboot2.pcap

Attachment reboot2.pcap is a similar trace.  The SUBSCRIBE is frame 845 and the 
NOTIFY is frame 850.


> SipXecs does not gracefully handle broken TCP streams
> -----------------------------------------------------
>
>                 Key: XECS-1589
>                 URL: http://track.sipfoundry.org/browse/XECS-1589
>             Project: sipXecs
>          Issue Type: Improvement
>         Environment: sipXecs 3.10
>            Reporter: Brad Marusiak
>            Assignee: Dale R. Worley
>         Attachments: polycomRepro.pcap, reboot1.pcap, reboot2.pcap, 
> sipx-snapshot.zip
>
>
> Restating Brad's analysis to clarify where sipX needs improvement:
> First, the Polycom phone on rebooting is not properly tearing down its TCP 
> connection. On a restart we attempt to unSUBSCRIBE from the BLF dialog 
> (packet 93) but the TCP stream is never concluded with a FIN tagged packet.  
> Ideally the phone should terminate the TCP stream to ensure that the other 
> SIP element does not attempt to use the stream afterward, but that cannot be 
> enforced, as the phone may restart due to a power failure.
> Second, on restart after the phone re-registers and resubscribes, the sipX 
> server (RLS) is sending the CSEQ 0 NOTIFY (packet 718) in answer to the new 
> SUBSCRIBE (#716). sipX does not initiate a new TCP stream because it believes 
> that the old TCP stream is still working.
> The TCP packet's contents will not be successfully received, since the phone 
> does not know of the TCP stream.  The phone returns an RST packet to sipX.  
> The sipX SIP stack returns a transmission failure to the RLS "Subscribe 
> Server" which terminates the subscription but the SIP stack does not attempt 
> to re-send the NOTIFY in any way.
> After 30 minutes have elapsed, the phone will initiate its resubscribe.  As 
> the RLS has destroyed the subscription, the phone will receive a 481 
> response, in which case it should attempt a new subscription.  Alternatively, 
> the phone may attempt a new subscription outright.  In either case, the phone 
> establishes a new subscription.
> Note that in SIP the NOTIFYs of a SUBSCRIBE are NOT required to be returned 
> by any particular transport or stream, other than as specified by the Contact 
> URL of the SUBSCRIBE.
> Technically, that sipX does not gracefully handle broken TCP connections is 
> probably not out-of-specification, but as seen above, it can cause 
> operational problems.  We should have a better strategy to handle broken TCP 
> connections.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://track.sipfoundry.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira