RE: The "version" topic (was: Reserved discriminators?)

"Bhatia, Manav (Manav)" <manav.bhatia@alcatel-lucent.com> Mon, 27 May 2013 04:51 UTC

Return-Path: <manav.bhatia@alcatel-lucent.com>
X-Original-To: rtg-bfd@ietfa.amsl.com
Delivered-To: rtg-bfd@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7D63521F92F5 for <rtg-bfd@ietfa.amsl.com>; Sun, 26 May 2013 21:51:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8
X-Spam-Level:
X-Spam-Status: No, score=-8 tagged_above=-999 required=5 tests=[RCVD_IN_DNSWL_HI=-8]
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 39PaBOz4mkq1 for <rtg-bfd@ietfa.amsl.com>; Sun, 26 May 2013 21:51:42 -0700 (PDT)
Received: from ihemail2.lucent.com (ihemail2.lucent.com [135.245.0.35]) by ietfa.amsl.com (Postfix) with ESMTP id BCE8621F92EB for <rtg-bfd@ietf.org>; Sun, 26 May 2013 21:51:42 -0700 (PDT)
Received: from us70tusmtp2.zam.alcatel-lucent.com (h135-5-2-64.lucent.com [135.5.2.64]) by ihemail2.lucent.com (8.13.8/IER-o) with ESMTP id r4R4pfYl011109 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Sun, 26 May 2013 23:51:41 -0500 (CDT)
Received: from US70UWXCHHUB02.zam.alcatel-lucent.com (us70uwxchhub02.zam.alcatel-lucent.com [135.5.2.49]) by us70tusmtp2.zam.alcatel-lucent.com (GMO) with ESMTP id r4R4pe06009707 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Mon, 27 May 2013 00:51:40 -0400
Received: from SG70YWXCHHUB03.zap.alcatel-lucent.com (135.253.2.37) by US70UWXCHHUB02.zam.alcatel-lucent.com (135.5.2.49) with Microsoft SMTP Server (TLS) id 14.2.247.3; Mon, 27 May 2013 00:51:40 -0400
Received: from SG70YWXCHMBA05.zap.alcatel-lucent.com ([169.254.5.102]) by SG70YWXCHHUB03.zap.alcatel-lucent.com ([135.253.2.37]) with mapi id 14.02.0328.009; Mon, 27 May 2013 12:50:46 +0800
From: "Bhatia, Manav (Manav)" <manav.bhatia@alcatel-lucent.com>
To: Marc Binderberger <marc@sniff.de>, Jeffrey Haas <jhaas@pfrc.org>, "Nobo Akiya (nobo)" <nobo@cisco.com>
Subject: RE: The "version" topic (was: Reserved discriminators?)
Thread-Topic: The "version" topic (was: Reserved discriminators?)
Thread-Index: AQHOWhOVWNAQjdgdjUGntjfJd/sEA5kYbcQAgAAIaoA=
Date: Mon, 27 May 2013 04:50:46 +0000
Message-ID: <20211F91F544D247976D84C5D778A4C303454E@SG70YWXCHMBA05.zap.alcatel-lucent.com>
References: <CECE764681BE964CBE1DFF78F3CDD3941B630241@xmb-aln-x01.cisco.com> <20130515150757.GN5406@pfrc> <CECE764681BE964CBE1DFF78F3CDD3941B632F39@xmb-aln-x01.cisco.com> <8F97999B-CD9E-40E0-A1F8-37530F063FF6@sniff.de> <20211F91F544D247976D84C5D778A4C30344C3@SG70YWXCHMBA05.zap.alcatel-lucent.com>
In-Reply-To: <20211F91F544D247976D84C5D778A4C30344C3@SG70YWXCHMBA05.zap.alcatel-lucent.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [135.253.19.16]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 2.57 on 135.245.2.35
Cc: "Jeff Haas (jhaas@juniper.net)" <jhaas@juniper.net>, "rtg-bfd@ietf.org" <rtg-bfd@ietf.org>
X-BeenThere: rtg-bfd@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "RTG Area: Bidirectional Forwarding Detection DT" <rtg-bfd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtg-bfd>, <mailto:rtg-bfd-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtg-bfd>
List-Post: <mailto:rtg-bfd@ietf.org>
List-Help: <mailto:rtg-bfd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtg-bfd>, <mailto:rtg-bfd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 27 May 2013 04:51:49 -0000

Alternatively, we can use the "Authentication Present" bit in the header to carry this additional block.

Once draft-ietf-bfd-generic-crypto-auth-04 becomes a standard we will never consume any more bits in the Auth Type as this draft introduces a Key ID mechanism. This means that Auth Type values beyond 8 are available to be used for other mechanisms.

We could for instance define value 8 meaning a BFD data block. This can then be TLV encoded.

This is again an example of how BFD can be extended while remaining completely backward compatible -- without bumping the version of BFD.

Cheers, Manav

> -----Original Message-----
> From: rtg-bfd-bounces@ietf.org 
> [mailto:rtg-bfd-bounces@ietf.org] On Behalf Of Bhatia, Manav (Manav)
> Sent: Monday, May 27, 2013 10:07 AM
> To: Marc Binderberger; Jeffrey Haas; Nobo Akiya (nobo)
> Cc: Jeff Haas (jhaas@juniper.net); rtg-bfd@ietf.org
> Subject: RE: The "version" topic (was: Reserved discriminators?)
> 
> Hi Marc,
> 
> We usually do a version change when there is a very very 
> substantial upgrade to the protocol - a kind that's usually 
> non backward compatible.
> 
> If we really want to introduce newer fields to the packet 
> while being backward compatible then the best approach imo is this:
> 
> You stuff whatever additional information you want in a 
> special BFD data block immediately at the end of the BFD 
> packet. Don't include the length of this additional BFD block 
> in the BFD header. Instead, account for this in the IPv4/IPv6 
> header length.
> 
>    +---------------------+ --        
>    | IP Header           | ^      
>    | Length = HL+X+Y     | | Header Length 
>    |                     | v               
>    +---------------------+ --             
>    | BFD  Header         | ^      
>    | Length = X          | |      
>    |.....................| | X    
>    |                     | |      
>    | BFD  Data           |      
>    |                     | v      
>    +---------------------+ --     
>    |                     | ^
>    | BFD Data Block      | Y
>    |                     | v
>    +---------------------+ --
> 
> How this additional BFD data block will be used is beyond the 
> scope of the discussion right now. You could define that to 
> be TLV encoded for ensuring easy extensibility.
> 
> Implementations can either implicitly figure out the presence 
> of the BFD data block by looking at the packet lengths in the 
> headers or can explicitly be indicated in the BFD header.
> 
> If people think it's a worthwhile idea to pursue then this 
> can be quickly drafted.
> 
> Cheers, Manav
> 
> > -----Original Message-----
> > From: rtg-bfd-bounces@ietf.org
> > [mailto:rtg-bfd-bounces@ietf.org] On Behalf Of Marc Binderberger
> > Sent: Sunday, May 26, 2013 6:49 PM
> > To: Jeffrey Haas; Nobo Akiya (nobo)
> > Cc: Jeff Haas (jhaas@juniper.net); rtg-bfd@ietf.org
> > Subject: The "version" topic (was: Reserved discriminators?)
> > 
> > Hello everyone,
> > 
> > sorry for me delayed response.
> > 
> > Taking a step back. If we would write RFC5880 today then we 
> probably 
> > would have reserved a small number of discriminators, e.g. 
> the first 8 
> > or 16 values.  But RFC5880 is since 3 years out, the 
> underlying draft 
> > is even much older. The statement in the Spec is effectively: dear 
> > implementor, beside the zero value do what you like with 
> this value.  
> > We cannot claim back parts of the number space without risking 
> > problems.
> > 
> > This is why I tend more and more to have clean separation, 
> be it a new 
> > IP/UDP port like BFD-on-lags or be it a new version number. 
> The latter 
> > faces, I think, largely a psychological problem :-)
> > 
> > Independent if Nobo and me can convince this audience about the 
> > redundancy concept we propose - working on it - I do see more 
> > (private) ideas that cover BFD sessions in a general sense, 
> i.e. cover 
> > the various RFCs, single-, multi-hop, with/withou label and 
> so on.  In 
> > all cases I see people spending time to "fiddle about the 
> bits" of the 
> > BFD v1 and the IP header. Smart stuff but somehow crazy how 
> wicked the 
> > new definitions become, not to mention the difficulties for 
> > implementations and for interop.
> > 
> > 
> > Yes, we have a limited number of versions available. Let me 
> > throw this idea at the BFD audience: the base v2 header would 
> > look like this:
> > 
> >     0                   1                   2                   3
> >     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
> >    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> >    |0 1 0| Subtype |   TBD, depending on Subtype   |    Length     |
> >    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> >    |                       My Discriminator                        |
> >    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> >    |                      Your Discriminator                       |
> >    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> >    | ...                                                           |
> > 
> > 
> > The subtype (the former Diag field) would allow for 32 new 
> > definitions. Actually I do not hope myself we define so many 
> > variations ;-) but it opens up room that we do not have with 
> > the version field alone.
> > 
> > To emphasize: defining a v2 header does not mean v1 is 
> > obsolete. BFD v1 works great, I'm not trying to replace it 
> > and whenever it can be used it must be used.
> > 
> > For the other fields above, just quickly my thoughts (if we 
> > want to dive deeper into this I better write a draft to discuss):
> > 
> > - length field remains in it's position, for ease of implementation
> > 
> > - of course I keep the discriminator concept - or it wouldn't 
> > be BFD anymore ;-) and I keep them again at the same position 
> > (the coders of NP, FPGA etc never have enough cycles or 
> > gates. And these fields are used "in hardware")
> > 
> > - not obvious here but I would define a relatively strict 
> > upper size limit. I'm not proposing a generic TLV format, 
> > based on the difficulties I know about implementing really 
> > fast I/O it is better to have fixed formats, IMHO.
> > 
> > 
> > Feedback is very welcome. And yes, I have mixed emotions 
> > myself to let the genie out of the bottle :-)
> > 
> > 
> > Thanks & Regards,
> > Marc
> > 
> > 
> > 
> > On 2013-05-17, at 17:35 , Nobo Akiya (nobo) wrote:
> > 
> > > Hello Jeff, et al,
> > > 
> > >> But, if the reserved value was used *only* for the context 
> > of telling 
> > >> the remote side "this is your redundant connection", and some 
> > >> reserved value was used in Down state for Your 
> > Discriminator to help 
> > >> with de-multiplexing (e.g.
> > >> 1 or 0xffffffff), that would be sufficient.
> > > 
> > > Correct, that was my thoughts. Let's say reserved value 
> > one(1) was used for shadow session bootstrapping purpose. 
> > Value one(1) of shadow is equivalent of value zero(0) of 
> > primary. If "your discriminator == 1" is received on a node 
> > which understands this, then it is to map to shadow session. 
> > De-multiplex success.
> > > 
> > > - Benefit of the redundancy concept is seen more on 
> > distributed systems or a system having at least two cards 
> > (ex: 2 route processor cards) which BFD can run actively.
> > > - Benefit of the redundancy concept is also seen more on 
> > those BFD sessions which aren't tied to specific physical 
> > interfaces (ex: multihop, logical/virtual interfaces). 
> > > - Redundancy concept is applicable to both SW and HW based BFD.
> > > 
> > > Scope of use case has limitations, in terms of system 
> > architecture as well as BFD type, but for those that this 
> > applies to, I still do see great benefits.
> > > 
> > >> We still have a possibility of colliding with existing 
> sessions if 
> > >> the remote side makes use of the reserved value.  Bumping 
> > the version 
> > >> number is an obvious fix but if we're going to that extent 
> > we need to 
> > >> think more carefully about the full work we'd want under 
> > such a rev.
> > > 
> > > I still do not see any implementations which cannot support 
> > few more reserved discriminators. But a node speaking to 
> > another which doesn't support added reserved discriminator 
> > range can certainly cause undesired collision. And I agree 
> > that bumping the version number would solve this easily.
> > > 
> > > Regards,
> > > Nobo
> > > 
> > 
> >