Re: [sipcore] draft-ietf-sipcore-keep-04 - Paul's comments

Christer Holmberg <christer.holmberg@ericsson.com> Sun, 01 August 2010 19:50 UTC

Return-Path: <christer.holmberg@ericsson.com>
X-Original-To: sipcore@core3.amsl.com
Delivered-To: sipcore@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 41C103A689F for <sipcore@core3.amsl.com>; Sun, 1 Aug 2010 12:50:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.903
X-Spam-Level:
X-Spam-Status: No, score=-5.903 tagged_above=-999 required=5 tests=[AWL=0.696, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id E+meiGSvQM0j for <sipcore@core3.amsl.com>; Sun, 1 Aug 2010 12:50:37 -0700 (PDT)
Received: from mailgw10.se.ericsson.net (mailgw10.se.ericsson.net [193.180.251.61]) by core3.amsl.com (Postfix) with ESMTP id 8C86D3A67DA for <sipcore@ietf.org>; Sun, 1 Aug 2010 12:50:36 -0700 (PDT)
X-AuditID: c1b4fb3d-b7b90ae00000278d-99-4c55d0266f7a
Received: from esessmw0197.eemea.ericsson.se (Unknown_Domain [153.88.253.125]) by mailgw10.se.ericsson.net (Symantec Mail Security) with SMTP id BA.53.10125.620D55C4; Sun, 1 Aug 2010 21:51:03 +0200 (CEST)
Received: from esessmw0191.eemea.ericsson.se (153.88.115.86) by esessmw0197.eemea.ericsson.se (153.88.115.87) with Microsoft SMTP Server (TLS) id 8.2.234.1; Sun, 1 Aug 2010 21:51:02 +0200
Received: from ESESSCMS0356.eemea.ericsson.se ([169.254.1.104]) by esessmw0191.eemea.ericsson.se ([153.88.115.84]) with mapi; Sun, 1 Aug 2010 21:51:02 +0200
From: Christer Holmberg <christer.holmberg@ericsson.com>
To: Paul Kyzivat <pkyzivat@cisco.com>
Date: Sun, 01 Aug 2010 21:51:01 +0200
Thread-Topic: [sipcore] draft-ietf-sipcore-keep-04 - Paul's comments
Thread-Index: AQHLMbLeVQvy4yi+DE2Aa6uwggDdag==
Message-ID: <7F2072F1E0DE894DA4B517B93C6A05850B5C22@ESESSCMS0356.eemea.ericsson.se>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: AAAAAA==
Cc: SIPCORE <sipcore@ietf.org>
Subject: Re: [sipcore] draft-ietf-sipcore-keep-04 - Paul's comments
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: SIP Core Working Group <sipcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/sipcore>
List-Post: <mailto:sipcore@ietf.org>
List-Help: <mailto:sipcore-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 01 Aug 2010 19:50:38 -0000

Hi Paul,

>I finally got around to reading the keep draftfor the first time in
>quite awhile. I have a few comments and questions:
>
>IMO the usage of "upstream" and "downstream" (which is ubiquitous) is
>confusing, because its not evident which is the high ground and which is
>the low ground. Normally for SIP I would assume that the sender of a
>request is on the high ground, with the request flowing *downstream*
>toward the recipient, and the response flowing *upstream* toward the
>sender of the request. But most of the text in this draft assumes the
>opposite. Perhaps this stems from a view that the "device" is on the low
>ground and the registrar is on the high ground. But then 4.1 further
>complicates this:

After a first thought I probably agree with your comment that the request flows *downstream*.

I guess I could add some clarification text, to make it clear that "adjacent downstream" refers to the adjacent SIP node in which a request is sent.

>   NOTE: Usage of keep-alives is negotiated per direction.  If a SIP
>   entity has indicated willingness to receive keep-alives from its
>   adjacent downstream SIP entity, sending of keep-alives towards the
>   same SIP entity needs to be separately negotiated.
>
>If that negotiation were performed following the procedures in this
>draft then the upstream and dowstream roles would be reversed.

I guess the note could be re-written without the "downstream" wording:

"NOTE: Usage of keep-alives is negotiated per direction.  If a SIP
entity has indicated willingness to receive keep-alives from an
adjacent SIP entity, sending of keep-alives towards the
same SIP entity needs to be separately negotiated."

-----------------

>Section 4.2.2:
>
>IIUC, the keepalive is associated with a flow as defined in 5626. Hence
>it isn't appropriate to use this negotiation mechanism on a registration
>that doesn't specify a flow. I don't see that stated anywhere.
>
>(If there was no flow, what would the keepalive state be associated *with*?)

The second paragraph describes the case when outbound is used, and when you do have flows. 

The generic procedure is described in the first paragraph of the section, and it does not talk about flows - it talks about registrations.

-----------------

>Section 4.2.3:
>
>Is there a reason *why* you can't renegotiate the dialog to eliminate
>the use of keepalives? (session timers are a similar concept, and they
>are renegotiated on/off with every reINVITE/UPDATE.)
>
>(Maybe there is a good reason - I just don't see it.)

People thought that we shouldn't make things too complicated and heavy by allowing mid-dialog renegotiations - and especially not *mandating* a renegotiation with every reINVITE/UPDATE.

-----------------

>Section 4.3:
>
>The following:
>
>    When a SIP entity is about to send a keep-alive, if the SIP entity at
>    the same time is also about to send or forward a SIP request
>    associated with the same registration or dialog, for which the keep-
>    alive is to be sent, the SIP entity MAY choose not to send the keep-
>    alive, as the SIP request will perform the same keep-alive action.
>
>seems pretty imprecise. Wouldn't it be more precise to state that every
>request sent resets the clock for when a keep-alive needs to be sent?

I can use such wording instead, if people think it's better.

>Also, while this skipping of the explicit keep-alive makes sense to me,
>AFAICT it isn't consistent with -outbound-.

So, do you suggest that a SIP request should NOT reset the clock?

OR, would you like some note saying that, when keep-alives are implicilty negotiated as part of outbound, requests do not reset the timer?

-----------------

>Section 5:
>
>The following has me totally confused:
>
>   SIP Outbound uses the Flow-Timer header field to indicate the server-
>    recommended keep-alive frequency.  However, it will only be sent
>    between a UA and an edge proxy.  Using the "keep" parameter, however,
>    the sending and receiving of keep-alives might be negotiated between
>    multiple entities on the signalling path.  Since the server-
>    recommended keep-alive frequency might vary between different SIP
>    entities, those would have to re-write the Flow-Timer header field
>    value.  In addition, if a SIP entity does not indicate willingness to
>    receive keep-alives from its adjacent downstream SIP entity, and
>    receives a Flow-Timer header field in a response, it would have to
>    remove the Flow-Timer header field from the response.  This issue
>    does not exist for the "keep" parameter, as each SIP entity has its
>    own individual Via header field.
>
> (There are too many hypotheticals in it.)
>
>After reading this, I don't know:
>
>- can I use keep in conjunction with an outbound registration?

I think the draft currently does not explicitly say anything about that, but I think it would be good to add text saying that it is possible.

>- if so, does this alter the procedures of outbound - requiring some manipulation of the Flow-Timer value?

No. The usage of Flow-Timer with outbound is optional, so saying that it MUST NOT be used if the draft mechanism is not used does not break anything, in my opinion.

Thanks for your comments!

Regards,

Christer