Re: [sfc] NSH context headers: fixed/tlv

"Carlos Pignataro (cpignata)" <cpignata@cisco.com> Wed, 02 December 2015 21:04 UTC

Return-Path: <cpignata@cisco.com>
X-Original-To: sfc@ietfa.amsl.com
Delivered-To: sfc@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 97D7C1A1A54 for <sfc@ietfa.amsl.com>; Wed, 2 Dec 2015 13:04:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -13.31
X-Spam-Level:
X-Spam-Status: No, score=-13.31 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, J_CHICKENPOX_22=0.6, J_CHICKENPOX_24=0.6, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uN1DF_Ovtkn8 for <sfc@ietfa.amsl.com>; Wed, 2 Dec 2015 13:04:30 -0800 (PST)
Received: from alln-iport-5.cisco.com (alln-iport-5.cisco.com [173.37.142.92]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BD2101A1A04 for <sfc@ietf.org>; Wed, 2 Dec 2015 13:04:29 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=68507; q=dns/txt; s=iport; t=1449090269; x=1450299869; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=T2VdhDCwwQ6czl7McCpws5fqsHLJNusLznQLrRKGD2Y=; b=k6+5Gh6to8WSKjixvxbggnyNGl38Mpil3WB5uia9alzGrHFauY7uvBKn QIVlFgcBfClpIXIuzhjns8gzUIT+MRd0xciPFFMuSy3URJvnfKA7/aP/S u+fz1kDSeQEqZpQwHoyMg/Qx808esNmkWEnFpNufKhZy0FXpW5Upnot62 Q=;
X-Files: signature.asc : 841
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AQAwCmW19W/4gNJK1egm6BH24Ggym6bA6BZyGCPYMwAoFQOBQBAQEBAQEBgQqENAEBBAEBAQwMCUIJCwULAgEIEQQBAQEgAQYDAgIhBgsUCQgCBA4FDogMAwoIDa8FjCwNhEUBAQEBAQEBAQEBAQEBAQEBAQEBAQEPBQSGVIIPgWiBBoJTgVcRAUwJgmYvgRUFkneDagGCYIFihwKBd4FbhEOOdodYAR8BQ4QEcoQuOoEHAQEB
X-IronPort-AV: E=Sophos;i="5.20,374,1444694400"; d="asc'?scan'208,217";a="214057354"
Received: from alln-core-3.cisco.com ([173.36.13.136]) by alln-iport-5.cisco.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 02 Dec 2015 21:04:27 +0000
Received: from XCH-RTP-010.cisco.com (xch-rtp-010.cisco.com [64.101.220.150]) by alln-core-3.cisco.com (8.14.5/8.14.5) with ESMTP id tB2L4RMV017937 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Wed, 2 Dec 2015 21:04:27 GMT
Received: from xch-rtp-020.cisco.com (64.101.220.160) by XCH-RTP-010.cisco.com (64.101.220.150) with Microsoft SMTP Server (TLS) id 15.0.1104.5; Wed, 2 Dec 2015 16:04:26 -0500
Received: from xch-rtp-020.cisco.com ([64.101.220.160]) by XCH-RTP-020.cisco.com ([64.101.220.160]) with mapi id 15.00.1104.000; Wed, 2 Dec 2015 16:04:26 -0500
From: "Carlos Pignataro (cpignata)" <cpignata@cisco.com>
To: "Bottorff, Paul" <paul.bottorff@hpe.com>
Thread-Topic: [sfc] NSH context headers: fixed/tlv
Thread-Index: AQHRIy5ejy7hwshPJkSenz9F/5cNK56klIsAgADIkYCAADCGgIAEnguAgAzcDQCAAAjSAIAAAf4AgAAFlQCAAAWKAIAABzoAgAFynwA=
Date: Wed, 02 Dec 2015 21:04:26 +0000
Message-ID: <3AC71CA8-73C3-432F-B887-5E9F1B3EAFEA@cisco.com>
References: <D273AF56.849AA%andrew.dolganow@alcatel-lucent.com> <B8F9A780D330094D99AF023C5877DABA848C056D@nkgeml501-mbs.china.huawei.com> <36EF1E54-A0D8-46CE-AF4F-EEDE873123E3@cisco.com> <94DA9C7F532AD946852C9C5527195239254ABE3A@G1W3656.americas.hpqcorp.net> <CAA=duU0UvERU3-YE2EFT-kOExHWgLesSERRAkox0Ji1V28nNdQ@mail.gmail.com> <EDE43D1E-8068-4466-98E2-EC5BF517EBE8@cisco.com> <94DA9C7F532AD946852C9C5527195239254B4A00@G2W2527.americas.hpqcorp.net> <6748BE0E-A42A-4779-9BB4-F1A50846F5C2@cisco.com> <94DA9C7F532AD946852C9C5527195239254B4A51@G2W2527.americas.hpqcorp.net> <D9384715-0E0B-4EAA-AB4A-296B57974630@cisco.com> <94DA9C7F532AD946852C9C5527195239254B4A78@G2W2527.americas.hpqcorp.net>
In-Reply-To: <94DA9C7F532AD946852C9C5527195239254B4A78@G2W2527.americas.hpqcorp.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.150.48.34]
Content-Type: multipart/signed; boundary="Apple-Mail=_2280F785-B791-4F6D-9D2D-9FF750AB217A"; protocol="application/pgp-signature"; micalg="pgp-sha256"
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/sfc/8vzSmheWOr4t3y5EsJIHRZ6POqU>
Cc: "Andrew G. Malis" <agmalis@gmail.com>, "Paul Quinn (paulq)" <paulq@cisco.com>, "sfc@ietf.org" <sfc@ietf.org>
Subject: Re: [sfc] NSH context headers: fixed/tlv
X-BeenThere: sfc@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Network Service Chaining <sfc.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sfc>, <mailto:sfc-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sfc/>
List-Post: <mailto:sfc@ietf.org>
List-Help: <mailto:sfc-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sfc>, <mailto:sfc-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 02 Dec 2015 21:04:34 -0000

Hi, Paul B.,

Thanks for the conversation, please find one follow-up inline.

> On Dec 1, 2015, at 5:57 PM, Bottorff, Paul <paul.bottorff@hpe.com> wrote:
> 
> Hi Carlos:
> 
> More on this below,
> 
> Cheers,
> 
> Paul
> 
> From: Carlos Pignataro (cpignata) [mailto:cpignata@cisco.com <mailto:cpignata@cisco.com>]
> Sent: Tuesday, December 01, 2015 2:32 PM
> To: Bottorff, Paul
> Cc: Paul Quinn (paulq); Andrew G. Malis; sfc@ietf.org <mailto:sfc@ietf.org>
> Subject: Re: [sfc] NSH context headers: fixed/tlv
> 
> Paul B.,
> 
> Please see inline.
> 
> On Dec 1, 2015, at 5:12 PM, Bottorff, Paul <paul.bottorff@hpe.com <mailto:paul.bottorff@hpe.com>> wrote:
> 
> Hi Paul Q.:
> 
> See inline,
> 
> Cheers,
> 
> Paul
> 
> From: Carlos Pignataro (cpignata) [mailto:cpignata@cisco.com <mailto:cpignata@cisco.com>]
> Sent: Tuesday, December 01, 2015 1:52 PM
> To: Bottorff, Paul
> Cc: Paul Quinn (paulq); Andrew G. Malis; sfc@ietf.org <mailto:sfc@ietf.org>
> Subject: Re: [sfc] NSH context headers: fixed/tlv
> 
> Hi, Paul B.,
> 
> On Dec 1, 2015, at 4:45 PM, Bottorff, Paul <paul.bottorff@hpe.com <mailto:paul.bottorff@hpe.com>> wrote:
> 
> Hi Paul and Andew:
> 
> 
> Paul, I agree that fixed length is easiest to implement and will allow the most rapid adoption. Never the less, a standard is of no value if it does not improve interoperability.
> 
> Of course. I do not see how interoperability is hampered in this case, however.
> PB>If an application needs TLVs then it can’t interoperate with a system that needs fixed sized formats. In effect you have two divergent standards.
> 
> 
> If an SFP needs TLVs, it would be set with TLVs. That is part of the shared SFP context. MD Type 1 and MD Type 2 are protocol options, not divergent standards.
> PB>And if you have an SFP with one SF that needs TLVs and one that needs fixed headers you’re going to translate the formats at the SFF? The result is the worst possible world where the switches need to know both formats and translate between them for various SFs.
> 

I am not sure what it means to have “an SF that needs TLVs and one that needs fixed headers”. Clearly, I am not proposing any translation!

Don’t forget there is a control-plane programming the SFs/SFFs, and that CP would set up the MD Type for a given SFP, so SFs do not ‘need’ specific encodings.

Now, to mitigate the risk of having no intersection in capability (one SF supporting *only* Type 1 and one SF supporting *only* Type 2) is that we need to specify a MUST implement — and that should be the simplest to implement which allows for all common use cases — in other words, Type 1.

> See below.
> 
> 
> What I would suggest is either:
> 1) make TLVs the mandatory format with fixed size optional;
> 2) eliminate the TLV option entirely;
> 3) change the NSH header format options so the fixed size header is always present with optional TLVs following the fixed sized header.
> 
> To me, option 3 would not achieve a useful outcome. Basically, we could not count with a deterministically fixed header, and the flexible TLV-based option would always have “stuff” before. Basically, this would negate the benefits of both MD Type 1 and MD Type 2.
> 
> PB>For option 3 the fixed headers are at a constant offset which is what is important to parse them easily. It is possible for a switch or for software to use the fixed information at a fixed offset ever though TLV data may follow.
> 
> 
> I see the problem space quite differently: If an SFP needs shared context that fits in an MD Type 1, it is set with MD Type 1. If it needs more, then it needs to parse the TLVs anyway (and thus a fixed part followed by TLVs does not help).
> PB>TLVs always cost more than fixed size areas because they must encode individual TLs. An application that needs more than the fixed area can encode can use the fixed area for a portion of the meta-data and then add as many extension TLVs as are needed. The resulting encode will be at least as efficient as TLVs alone.
> 
> Now, bring the conversation a level down from theoretical to practical, draft-guichard-sfc-nsh-dc-allocation-02, draft-meng-sfc-nsh-broadband-allocation, and draft-napper-sfc-nsh-mobility-allocation show what’s needed for the WG use cases. MD Type 2 adds extra flexibility (at a price).
> PB>An talking very practically we are not omniscient. When we find we need a new piece of meta-data for these base use cases an extension TLV provides the options of retaining the existing formatted data while adding an additional piece of meta-data. If done carefully, this can allow backward compatibility with equipment that does not understand the new extensions.
> 
> In other words, the minimum common denominator and the simpler to implement is MD Type 1.
> PB>My option 2 is the simpler option. Fixed length only. What is currently proposed is the most complex since it leads to multiple formats with translations between them.
> 

Please no translations!

— Carlos.

> Thanks!
> 
> — Carlos.
> 
> 
> If option 3 is chosen then applications can always count on the fixed sized header as their default.
> 
> They could count with a fixed size part, not with a fixed sized header, if I understand the proposal correctly.
> 
> PB>This is one better than the current proposal which can’t count on either a fixed sized header or on a fixed size part at a known offset.
> 
> Thanks,
> 
> — Carlos.
> 
> 
> 
> 
> Cheers,
> 
> Paul
> 
> From: sfc [mailto:sfc-bounces@ietf.org <mailto:sfc-bounces@ietf.org>] On Behalf Of Paul Quinn (paulq)
> Sent: Tuesday, December 01, 2015 12:14 PM
> To: Andrew G. Malis
> Cc: sfc@ietf.org <mailto:sfc@ietf.org>
> Subject: Re: [sfc] NSH context headers: fixed/tlv
> 
> Hi Andy,
> 
> 
> Please see below.
> 
> 
> Thanks
> Paul
> 
> 
> On Nov 23, 2015, at 10:50 AM, Andrew G. Malis <agmalis@gmail.com <mailto:agmalis@gmail.com>> wrote:
> 
> I agree with Paul B. that interoperability is best served by using a header that accommodates the greatest number of possible applications and use cases as the common denominator. This argues for type 2 being the MUST to implement, with type 1 being an optional optimization for some particular use cases or applications that require at most a particular number context headers.
> 
> 
> PQ>  I don't follow that logic: the _easiest_ (in terms of complexity, cost, etc.) option makes the most sense to mandate since it allows for a broad implementation and helps ensure adoption of the protocol.  Mandating a more complex option simply slows the adoption.  This is exactly the conversation we had when putting together the draft, and one that seems to resonate with developers and operators alike.
> 
> PQ>  Also, let's not ignore history (you know the old adage ;)): TLV and other variable length data plane protocols have not been a success.  We can debate the reasons for that, but the fact remains: simple data planes get adoption.  As Paul B. points out below, we don't know all the metadata answers, but we do know that a bounded amount of metadata is very important for SFC use cases.  Let's use that fact, and a simple protocol to get implementation out the door.
> 
> In a separate email, Med asked a very reasonable question - for type 1, why are there four mandatory context headers, rather than 2, 3, 5, 10, etc.? The draft contains no particular justification for this choice.
> 
> PQ>  That's a very valid question.  The starting premise was simple: a bounded set of fixed metadata.   Based on some experience in the service space and some initial use case discussion with operators, 4 provided some balance: reasonable in that it provided some meaningful space, yet not so large as to become unwieldy, all the while forcing some discipline.  Overall that has proven to be true as implementations have been tested and mapped to use cases.  Of course you can come up with cases where 4 is too many, or too few, in which case the draft provides a means to accommodate that.
> 
> PQ>  I also think we need to be realistic.  We were urged during WG formation by a large operator: the IETF cannot spend years trying to solve the service chaining issue.  The need for an interoperable protocol is acute and operators need to start working on deployment (see the vibrancy of the open source projects in this space).  The balance of type 1 and type 2 allows for velocity and evolution.
> 
> 
> 
> 
> 
> 
> 
> It’s true that there are two particular use cases, draft-guichard-sfc-nsh-dc-allocation and draft-napper-sfc-nsh-mobility-allocation, that look to make good use of exactly 4 context headers. However, these are just two particular examples, and not yet accepted by the WG.  Further development of these drafts, or even implementation, may show that four are insufficient.
> 
> Cheers,
> Andy
> 
> 
> On Fri, Nov 20, 2015 at 12:20 PM, Bottorff, Paul <paul.bottorff@hpe.com <mailto:paul.bottorff@hpe.com>> wrote:
> I think we all could agree that fixed headers are easier to implement than TLVs, however that does not rationalize mandating a fixed header implementation. It would rationalize supporting only fixed length headers, however we have been unable to do this. Options always weaken standards agreement.
> 
> If the application requires TLVs, then it does not provide any standards advantage to mandate support for fixed headers. It will not be possible for an application that requires TLVs to fall back to fixed length headers. If they could, then we should eliminate the TLV option from NSH.
> 
> IMHO we should be looking at the abstract semantics for meta-data before we consider how to encode it. Once we decide what needs to be encoded then we can consider the best encodings and what should be mandatory or optional.
> 
> Cheers,
> 
> Paul
> From: sfc [mailto:sfc-bounces@ietf.org <mailto:sfc-bounces@ietf.org>] On Behalf Of Paul Quinn (paulq)
> Sent: Friday, November 20, 2015 6:27 AM
> To: Qin Wu
> Cc: uri.elzur@intel.com <mailto:uri.elzur@intel.com>; Dolganow, Andrew (Andrew); sfc@ietf.org <mailto:sfc@ietf.org>; Linda Dunbar
> Subject: Re: [sfc] NSH context headers: fixed/tlv
> 
> 
> On Nov 19, 2015, at 9:28 PM, Qin Wu <bill.wu@huawei.com <mailto:bill.wu@huawei.com>> wrote:
> 
> Hi, Andrew and Paul:
> It looks I missed a lot of discussion regarding NSH context header in the past, thanks Paul to point me the archive.
> Generally speaking, there is tradeoff between performance and flexibility.
> 
> 
> Absolutely, and that's the reason for offering the two options: balance speed/simplicity and flexibility.
> 
> The philosophy is to mandate the simplest form of metadata, enabling a broad implementation base.  If/when more flexibility is needed a more flexible NSH type is available, along with the associated tradeoffs.  That's the balance that we decided to strike and it seems to be reasonable and well accepted.
> 
> Thanks,
> Paul
> 
> 
> _______________________________________________
> sfc mailing list
> sfc@ietf.org <mailto:sfc@ietf.org>
> https://www.ietf.org/mailman/listinfo/sfc <https://www.ietf.org/mailman/listinfo/sfc>
> 
> 
> _______________________________________________
> sfc mailing list
> sfc@ietf.org <mailto:sfc@ietf.org>
> https://www.ietf.org/mailman/listinfo/sfc <https://www.ietf.org/mailman/listinfo/sfc>