Re: Comments regarding draft-nishida-tsvwg-sctp-failover-03.txt

Michael Tüxen <Michael.Tuexen@lurchi.franken.de> Wed, 24 August 2011 12:23 UTC

Return-Path: <Michael.Tuexen@lurchi.franken.de>
X-Original-To: tsvwg@ietfa.amsl.com
Delivered-To: tsvwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6E27421F8B2D for <tsvwg@ietfa.amsl.com>; Wed, 24 Aug 2011 05:23:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.649
X-Spam-Level:
X-Spam-Status: No, score=-1.649 tagged_above=-999 required=5 tests=[AWL=-0.550, BAYES_00=-2.599, J_CHICKENPOX_28=0.6, J_CHICKENPOX_48=0.6, MIME_8BIT_HEADER=0.3]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XgIRZ4NaFGsk for <tsvwg@ietfa.amsl.com>; Wed, 24 Aug 2011 05:23:58 -0700 (PDT)
Received: from mail-n.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) by ietfa.amsl.com (Postfix) with ESMTP id 0D0D621F87FC for <tsvwg@ietf.org>; Wed, 24 Aug 2011 05:23:57 -0700 (PDT)
Received: from [192.168.1.103] (p5481D9CE.dip.t-dialin.net [84.129.217.206]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTP id 0D7811C0C0BD9; Wed, 24 Aug 2011 14:25:05 +0200 (CEST)
Subject: Re: Comments regarding draft-nishida-tsvwg-sctp-failover-03.txt
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: text/plain; charset="iso-8859-1"
From: Michael Tüxen <Michael.Tuexen@lurchi.franken.de>
In-Reply-To: <CA7989F9.1496D%preethi.cis@gmail.com>
Date: Wed, 24 Aug 2011 14:25:05 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <0F04C1A8-E091-4F87-BF84-768AC2A620E7@lurchi.franken.de>
References: <CA7989F9.1496D%preethi.cis@gmail.com>
To: Preethi Natarajan <preethi.cis@gmail.com>
X-Mailer: Apple Mail (2.1084)
Cc: tsvwg list <tsvwg@ietf.org>
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Transport Area Working Group <tsvwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tsvwg>
List-Post: <mailto:tsvwg@ietf.org>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 24 Aug 2011 12:23:59 -0000

On Aug 24, 2011, at 1:46 AM, Preethi Natarajan wrote:

> Hi Michael,
> 
> Thanks a lot for the comments/suggestions. Please find our response below.
> 
> 
> On 8/22/11 12:04 PM, "Michael Tüxen" <Michael.Tuexen@lurchi.franken.de>
> wrote:
> 
>> Dear all,
>> 
>> as promised at the last TSVWG session I would like to bring up
>> some comments regarding draft-nishida-tsvwg-sctp-failover-03.txt.
>> 
>> Randy and myself implemented the ID during the last IETF, so
>> these comments are based on some implementation experience.
>> 
>> Editorial comments:
>> 
>> * I would suggest to have a section 4 which describes existing
>>  stuff. Basically it should contain only what is now in section 4.1
>>  and 4.2.
>> * In another section I would describe the the suggested method.
>>  This would cover section 4.3, 5.1 and 5.2.
>> 
>> This would result in having the suggested method and its discussion
>> in one section.
> 
> Agree.
> 
>> 
>> The rules given in 4.3 should be enumerated. Then one can easily refer
>> to them.
> 
> OK.
> 
>> 
>> For the following comments, I will paste them for simpler reading
>> of this e-mail:
>> 
>>   o  The sender maintains a new tunable parameter called Potentially-
>>      failed.Max.Retrans (PFMR).  An association's PFMR value MUST be
>>      lower than the association's PMR value.  The recommended value of
>>      PFMR = 0.
>> 
>> I think "MUST be lower" is not the appropriate formulation. What you
>> want to say is that if PFMR >= PMR, than quick failover is basically
>> switched off. This is a valid choice of parameters.
>> In FreeBSD, we have used this as the default (PFMR = 0xffff).
>> 
> 
> OK.
> 
>>   o  The sender never transmits data to a PF destination.  However,
>>      when all destinations are in either PF or Inactive state, the
>>      sender SHOULD transition a destination marked PF to the active
>>      state and transmit data to this destination.  The destination's
>>      error counter MUST NOT be cleared during this state transition.
>>      It is recommended that the sender transitions the PF destination
>>      with least error count (fewest consecutive timeouts) to the active
>>      state.  In case of a tie (multiple PF destinations with same error
>>      count), the sender MAY choose the last active destination.
>> 
>> I would prefer to make a weaker formulation than "never transmits data
>> to a PF destination" and not take destinations out of PF. This is because
>> I would prefer doing it similar to the handling of the unreachable state
>> and there taking it out would result in sending up notifications.
>> So choose a formulation that you want to avoid sending to PF destinations,
>> but do it if no non PF and reachable destinations are available.
> 
> Yes, agree that transition from PF to Active shouldn't result in
> notifications to the ULP. We are fine with a weaker formulation for the
> first sentence. However, it may be a good idea to decouple ULP notification
> and destination state transition. What do you think? How about the following
> to replace the first few sentences above -- "The sender SHOULD avoid data
> transmission to PF destinations. When all destinations are in either PF or
> Inactive state, the sender MAY move the destination from PF to active state
> (and transmit data to the active destination) or the sender MAY transmit
> data to a PF destination.
The new text is OK, but my reasoning was:
1. You have text describing what to do if all destinations are in PF.
   This is necessary.
2. You have text describing what to do if all destinations are unreachable.
   This is necessary.
3. Both texts are similar.
   This is good.
4. There should not be a state change required in 2., since this would
   require notifications which would give the wrong impression to
   the application.
Therefore I would also prefer no state change in 1.
> 
>> 
>>   o  Only heartbeats MUST be sent to PF destination(s) once per RTO.
>>      This means the sender SHOULD ignore HB.interval for PF
>>      destinations.  If an heartbeat is unanswered, the sender
>>      increments the error counter and exponentially backs off the RTO
>>      value.  If error counter is less than PMR, the sender SHOULD
>>      transmit another heartbeat immediately after T3-timer expiration.
>>      An implementation MAY use protocol parameter 'PFHB.interval' for
>>      the interval of heartbeat transmissions.  If PFHB.interval is non-
>>      zero, a heartbeat packet is sent once per RTO of each destination
>>      address plus PFHB.interval with jittering of +/- 50% of the RTO
>>      value.  Use of PFHB.interval can reduce the frequency of failover,
>>      which might be useful where the characteristic of the paths are
>>      mostly equal.
>> 
>> I'm not sure if it is worth to have a PFHB.interval. At least in FreeBSD
>> we just use 0... So maybe just get rid of it.
> 
> We'll discuss and get back on this one.
> 
>> 
>>   o  When the sender receives an heartbeat ACK from a PF destination,
>>      the sender clears the destination's error counter and transitions
>>      the PF destination back to active state.  This state transition
>>      MUST NOT be notified to the ULP unless it is explicitly requested.
>>      This destination's cwnd is set to 1 MTU (TODO: or 2?  Needs more
>>      text discussing rationale; can revisit later?)
>> 
>> We don't have defined a notification. I don't see the value
>> of it. So maybe you want to get rid of it?
> 
> OK. 
> 
>> 
>>   o  When all destinations are in the Inactive state, the sender
>>      transitions one of the destinations back to the Active state and
>>      continues data transmission to this destination.  This proposal
>>      recommends that the sender transitions the Inactive destination
>>      with least error count (fewest consecutive timeouts) to the active
>>      state.  In case of a tie (multiple Inactive destinations with same
>>      error count), the sender MAY choose the last active destination.
>> 
>> As said above: Moving one to the active state would require sending
>> up notifications. At least the FreeBSD stack does not move the
>> state to active, it just uses an unreachable (but confirmed) destination
>> address.
> 
> OK. 
> 
>> 
>> 
>> I think it would also be good for the application to control the thresholds
>> involved. So I suggest to add a socket API section.
> 
> Agree. We'll add text describing such a socket API as you suggested.
> 
> Preethi
> 
> 
>