Re: BFD State Machine

Dave Katz <dkatz@juniper.net> Thu, 03 March 2005 20:02 UTC

Received: from ietf-mx.ietf.org (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id PAA07623; Thu, 3 Mar 2005 15:02:15 -0500 (EST)
Received: from megatron.ietf.org ([132.151.6.71]) by ietf-mx.ietf.org with esmtp (Exim 4.33) id 1D6wXx-00020I-DV; Thu, 03 Mar 2005 15:03:45 -0500
Received: from localhost.localdomain ([127.0.0.1] helo=megatron.ietf.org) by megatron.ietf.org with esmtp (Exim 4.32) id 1D6wVm-0000Q1-Gn; Thu, 03 Mar 2005 15:01:30 -0500
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by megatron.ietf.org with esmtp (Exim 4.32) id 1D6wVl-0000Pw-1w for rtg-bfd@megatron.ietf.org; Thu, 03 Mar 2005 15:01:29 -0500
Received: from ietf-mx.ietf.org (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id PAA07465 for <rtg-bfd@ietf.org>; Thu, 3 Mar 2005 15:01:27 -0500 (EST)
Received: from colo-dns-ext2.juniper.net ([207.17.137.64]) by ietf-mx.ietf.org with esmtp (Exim 4.33) id 1D6wXB-0001y8-6C for rtg-bfd@ietf.org; Thu, 03 Mar 2005 15:02:57 -0500
Received: from merlot.juniper.net (merlot.juniper.net [172.17.27.10]) by colo-dns-ext2.juniper.net (8.12.3/8.12.3) with ESMTP id j23K1JBm097359; Thu, 3 Mar 2005 12:01:19 -0800 (PST) (envelope-from dkatz@juniper.net)
Received: from [172.16.12.139] (nimbus-sf.juniper.net [172.16.12.139]) by merlot.juniper.net (8.11.3/8.11.3) with ESMTP id j23K1He58547; Thu, 3 Mar 2005 12:01:17 -0800 (PST) (envelope-from dkatz@juniper.net)
In-Reply-To: <200503031407.24669.cnogradi@laurelnetworks.com>
References: <0036571b21c6f5db0c588591b0426735@juniper.net> <200503031407.24669.cnogradi@laurelnetworks.com>
Mime-Version: 1.0 (Apple Message framework v619.2)
Content-Type: text/plain; charset="US-ASCII"; format="flowed"
Message-Id: <ac401033c994c0f1b3e28a73ba666cbd@juniper.net>
Content-Transfer-Encoding: 7bit
From: Dave Katz <dkatz@juniper.net>
Date: Thu, 03 Mar 2005 13:01:16 -0700
To: Chris Nogradi <cnogradi@laurelnetworks.com>
X-Mailer: Apple Mail (2.619.2)
X-Spam-Score: 0.0 (/)
X-Scan-Signature: cd26b070c2577ac175cd3a6d878c6248
Content-Transfer-Encoding: 7bit
Cc: "'rtg-bfd@ietf.org'" <rtg-bfd@ietf.org>
Subject: Re: BFD State Machine
X-BeenThere: rtg-bfd@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "RTG Area: Bidirectional Forwarding Detection DT" <rtg-bfd.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/rtg-bfd>, <mailto:rtg-bfd-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:rtg-bfd@ietf.org>
List-Help: <mailto:rtg-bfd-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/rtg-bfd>, <mailto:rtg-bfd-request@ietf.org?subject=subscribe>
Sender: rtg-bfd-bounces@ietf.org
Errors-To: rtg-bfd-bounces@ietf.org
X-Spam-Score: 0.0 (/)
X-Scan-Signature: bdc523f9a54890b8a30dd6fd53d5d024
Content-Transfer-Encoding: 7bit

On Mar 3, 2005, at 12:07 PM, Chris Nogradi wrote:

> Dave,
>
> Since all implementations of BFD that I have observed use a one packet 
> per
> second sedate rate, I never noticed the fact that the draft specified 
> this as
> the MINIMUM interval.   If fact when you described a possible solution 
> for
> the deadlock, requiring the Desired TX and Required RX to match during
> negotiations, the thought occurred to me that you were suggesting that 
> the
> Required RX value should be used during negotiations. For instance, 
> suppose
> that an implementation uses a one second sedate rate but the peer
> implementation is advertising a three second Required RX value. Should 
> this
> Required RX value be used instead of the one second interval during
> negotiations?

Yes, the parameters always apply, even during session bringup.  In the 
case you specify, the local transmitter would be required to send at 3 
second intervals.

My workaround hack ensures that, during session bringup, both sides are 
transmitting at the same rate (since each side advertises the same 
value for TX and RX, then they will converge on the larger value and 
both will transmit at that rate.)  But that's overtaken by events now;  
the new state machine is much cleaner, I think (though the silence has 
been deafening thus far.)

>  I suppose that since the peer's Desired Tx/Multiplier pair is
> used to determine the detection time used during the negotiation while 
> in the
> init state, the Required RX time should also be honored during this 
> time.

Yes, all the timing parameters and procedures apply at all times.

>   I
> guess the confusion arises from the fact that when the session is being
> negotiated, the time values are used without requiring a poll sequence
> (poll/final).  However, when the session is up, timer value changes 
> must be
> communicated using a poll sequence (poll/final).

Hmm, this is not the case;  if the spec is confusing on that aspect, 
please let me know what led you to that conclusion.  It is true that a 
true Demand Mode Poll Sequence requires you to be in Up state, but the 
verbiage in 6.7.3 talks about what to do when Demand Mode is not active 
(which it would not be during session establishment.)  I should 
probably point out in the text that this applies at all times, though 
it is less of an issue in session establishment, since the session is 
already down (the mechanism is designed to avoid dropping the session 
if the parameters change on the fly.)  It's also the case that the 
advertised values are unlikely to change during session bringup, except 
during the transition to Up state.

>
> BTW, assuming that an original draft implementation uses a fixed 
> sedate rate,
> it would seem that it would not run into the deadlock problem unless 
> it has
> to interoperate with an implementation using a different rate.  Is 
> this true?

There should be no permanent deadlock condition, yes.  You may run into 
probabilistic difficulties (recoverable from the timer firing in Init 
state) but it should eventually come up.  However, I am pushing hard 
for completely deprecating the original version.  I've already worked 
up the spec changes, and they're really quite minor.  It would be a 
Really Good Idea to not ship version 0, to avoid having to deal with 
compatibility issues (at least I'm the one suffering the most by this, 
so there is justice after all.)

--Dave