Hi,

Paul Kyzivat <[email protected]>
Wed, 22 Feb 2012 15:35:28 -0500
>On 2/22/12 5:54 AM, OKUMURA Shinji wrote:
>> Hi Paul,
>>
>> I think that the following rule should be applied to Session-Expires.
>>
>> RFC3311/5.1 Sending an UPDATE
>>     If a UA
>>     uses an UPDATE request or response to modify the remote target while
>>     an INVITE transaction is in progress, and it is a UAS for that INVITE
>>     transaction, it MUST place the same value into the Contact header
>>     field of the 2xx to the INVITE that it placed into the UPDATE request
>>     or response.
>>
>>
>> But a particular crossing case is not avoidable as yet.
>>
>>                     A                               B
>>                     |                               |
>>                     |re-INV                         |
>>                     |------------------------------>|
>>                     |                        18x-rel|
>>                   b1|<------------------------------|b1
>>                     |                            2xx|
>>                     |               /---------------|b2/s1
>>                     |UPD           /                |
>>                     |=============/================>|
>>                     |            /          2xx(UPD)|
>>                b3/s2|<==========/===================|b3/s2
>>                     |          /                    |
>>              * b2/s1|<--------/                     |
>>                     |ACK                            |
>>                     |------------------------------>|
>>                     |                               |
>>
>> UA-A may need a new UPDATE or re-INVITE to confirm a common view
>> of Session-Expires.
>
>In this case, only B has enough info to realize there is a problem.
>So if it discovers that there is an ambiguity it would need to initiate 
>another session timer refresh.

There is another crossing case.

                   A                               B
                   |                               |
                   |re-INV                         |
                   |------------------------------>|
                   |                        18x-rel|
                 b1|<------------------------------|b1
                   |                            2xx|
                   |                 /-------------|b2/s1
                   |                /           UPD|
              b3/s2|<==============/===============|b3/s2
                   |2xx(UPD)      /                |
                   |=============/================>|
                   |            /                  |
              b2/s1|<----------/                   |
                   |ACK                            |
                   |------------------------------>|
                   |                               |

The simplest rule I think is,

between sending 2xx to INVITE and receiving ACK,
1. UA does not send an UPDATE.
2. UA does not respond 2xx to an UPDATE.

Regards,
Shinji.

>> Paul Kyzivat<[email protected]>
>> Mon, 20 Feb 2012 12:24:08 -0500
>>> On 2/20/12 8:43 AM, Brett Tate wrote:
>>>>> The RFC 4028 allows 2 simultaneous session timer
>>>>> negotiations i.e with Re-Invite and Update. So the following
>>>>> combinations are possible for session refresh request.
>>>>
>>>> <snip>
>>>>
>>>>> The session timers (session interval and session expires)
>>>>> will be started based on the session expires header values
>>>>> in the 2xx response of refresh request.
>>>>>
>>>>> The cross over of the response messages is also possible
>>>>> (Response for the first refresh request received after the
>>>>> response for the second refresh request).
>>>>
>>>> Correct.  As discussed within the following and related threads,
>>>> this is one of the potential SIP race conditions.
>>>>
>>>> https://lists.cs.columbia.edu/pipermail/sip-implementors/2010-October/025881.html
>>>>
>>>>
>>>>> The session expires in the 2xx response must be validated
>>>>> by the stack as per the rules defied in RFC4028.
>>>>>
>>>>> What would be the most elegant way of handling such scenarios:
>>>>
>>>> Assume that the latest received/sent 2xx is the most accurate.
>>>> If overly concerned that the race condition may cause the session
>>>> to not be refreshed in time, you can do something like pick the
>>>> lowest interval among the choices and act as the refresher.
>>>>
>>>> If you want to see the issue fixed or addressed as a BCP, you
>>>> might raise the issue within the dispatch or sipcore working
>>>> groups to see if anyone else wants this and similar race condition
>>>> ambiguities resolved.  If I recall correctly, this was not one of
>>>> the issues fully addressed by RFC 6141 or RFC 5407.
>>>
>>> I'm generally supportive of working out all the ambiguities in the sip
>>> specs. But some cases are so minor and theoretical that they don't
>>> warrant the work required to work out and publish the clarification. I'd
>>> be interested in hearing descriptions of instances of this problem "in
>>> the wild".
>>>
>>> It would be appropriate to file an errata against the draft. That will
>>> mean that the issue will at least be addressed if/when the draft is
>>> revised in the future.
>>>
>>> (BTW, Its my impression that session timer is vastly over-used. There is
>>> no need for two UAs to use session timer to monitor the session between
>>> them: each may send an in-dialog request at any time to verify it. The
>>> primary value of session timer if for record-routed proxies.)
>>>
>>>     Thanks,
>>>     Paul
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to