Subject: Re: [Sip] Questions on draft-ietf-sip-session-timer-13 and refresh timers

From: Jonathan Rosenberg <[email-masked]>
Date: Tue, 10 Feb 2004 16:25:46 -0500

inline.

Dean Willis wrote:

> I'me reviewing some IESG comments on this draft, and I've found
> something I don't understand.
> 
> The original comment from Ted was something like "Why do we recommend
> refresh at 1/2 the session timer in sections 7 and 8, but require a BYE
> at a recommended 1/3St-10s in section 10?"
> 
> I understand why we require refresh, and why we suggested refreshing at
> 1/2 of the session timer value. What I don't understand is the BYE logic
> in Section 10.
> 
> 
>>From Section 10:
> 
>    If no 2xx response to a session refresh request is received before
>    the session expiration, the UA SHOULD send a BYE request to terminate
>    the session. It SHOULD send this BYE slightly before session
>    expiration. The minimum of ten seconds and one third the session
>    interval is RECOMMENDED.
> 
>    For example, if the session interval is 120 seconds, one third of
>    this is 40 seconds. Since the minimum of 10 seconds and 40 seconds
>    is 10 seconds, the BYE would be sent 10 seconds before the session
>    expires.
> 
> 
> I read this as:
> 
> A UA has issues a session refresh request, and is waiting around for
> that transaction to complete. Unfortunately, it either 1) didn't issue
> the request sufficiently early for the transaction to complete before
> the session is going to expire, so it needs to abandon the refreshing
> transaction and terminate the session before the session expires, 
> or 2) the session refresh request failed, but we're going to continue to
> use this session for a while before tearing it down before it expires.
> 
> It seems more reasonable that the UA should issue the session refresh
> request far enough in advance of session expiration that the session
> refresh request will complete (or fail with timeout) before the session
> expires, and that if the session refresh request fails, the UA should
> immediately terminate the session with a BYE.

I am inclined to agree with this. I honestly cannot remember why we 
chose {1/3,10s}. Indeed, this rule actually contradicts RFC3261! From 
section 12.2.1.2:

12.2.1.2 Processing the Responses

    The UAC will receive responses to the request from the transaction
    layer.  If the client transaction returns a timeout, this is treated
    as a 408 (Request Timeout) response.

    The behavior of a UAC that receives a 3xx response for a request sent
    within a dialog is the same as if the request had been sent outside a
    dialog.  This behavior is described in Section 8.1.3.4.

       Note, however, that when the UAC tries alternative locations, it
       still uses the route set for the dialog to build the Route header
       of the request.

    When a UAC receives a 2xx response to a target refresh request, it
    MUST replace the dialog's remote target URI with the URI from the
    Contact header field in that response, if present.

Rosenberg, et. al.          Standards Track                    [Page 75]

RFC 3261            SIP: Session Initiation Protocol           June 2002

    If the response for a request within a dialog is a 481
    (Call/Transaction Does Not Exist) or a 408 (Request Timeout), the UAC
    SHOULD terminate the dialog.  A UAC SHOULD also terminate a dialog if
    no response at all is received for the request (the client
    transaction would inform the TU about the timeout.)

In other words, it recommends exactly the behavior you are describing - 
on transaction timeout, terminate the dialog.

> 
> This implies that the lowest allowable threshold for the negotiated
> session timer should be larger than the largest timeout value for a
> session refresh request (which could be an INVITE transaction). It also
> may place requirements on UAs that have implemented non-standard timer
> values to calculate this lowest allowable threshold for the negotiated
> session timer value and include this calculated value in their
> negotiation by initializing the Min-SE value.

I think the spec should state that no entity can request a session timer 
below 1 minute.

Thanks,
Jonathan R.

-- 
Jonathan D. Rosenberg, Ph.D.                600 Lanidex Plaza
Chief Technology Officer                    Parsippany, NJ 07054-2711
dynamicsoft
[email-masked]                     FAX:   (973) 952-5050
http://www.jdrosen.net                      PHONE: (973) 952-5000
http://www.dynamicsoft.com

_______________________________________________
Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [email-masked] for questions on current sip
Use [email-masked] for new developments on the application of sip