Re: [nvo3] RFC 7637 on NVGRE: Network Virtualization Using Generic Routing Encapsulation

Jesse Gross <jgross@vmware.com> Sun, 01 November 2015 04:12 UTC

Return-Path: <jgross@vmware.com>
X-Original-To: nvo3@ietfa.amsl.com
Delivered-To: nvo3@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A39CC1B5BCF for <nvo3@ietfa.amsl.com>; Sat, 31 Oct 2015 21:12:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.909
X-Spam-Level:
X-Spam-Status: No, score=-6.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, T_RP_MATCHES_RCVD=-0.01] 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 5eVSjarJ8jUH for <nvo3@ietfa.amsl.com>; Sat, 31 Oct 2015 21:12:22 -0700 (PDT)
Received: from smtp-outbound-1.vmware.com (smtp-outbound-1.vmware.com [208.91.2.12]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E29B11B5BCD for <nvo3@ietf.org>; Sat, 31 Oct 2015 21:12:22 -0700 (PDT)
Received: from sc9-mailhost2.vmware.com (sc9-mailhost2.vmware.com [10.113.161.72]) by smtp-outbound-1.vmware.com (Postfix) with ESMTP id 8ED1A28B8B; Sat, 31 Oct 2015 21:12:21 -0700 (PDT)
Received: from EX13-CAS-002.vmware.com (ex13-cas-002.vmware.com [10.113.191.52]) by sc9-mailhost2.vmware.com (Postfix) with ESMTP id 4A13FB020C; Sat, 31 Oct 2015 21:12:22 -0700 (PDT)
Received: from EX13-MBX-010.vmware.com (10.113.191.30) by EX13-MBX-001.vmware.com (10.113.191.21) with Microsoft SMTP Server (TLS) id 15.0.1076.9; Sat, 31 Oct 2015 21:12:22 -0700
Received: from EX13-MBX-010.vmware.com ([fe80::c937:743c:749c:829b]) by EX13-MBX-010.vmware.com ([fe80::c937:743c:749c:829b%15]) with mapi id 15.00.1076.010; Sat, 31 Oct 2015 21:12:21 -0700
From: Jesse Gross <jgross@vmware.com>
To: Diego Garcia del Rio <diego@nuagenetworks.net>
Thread-Topic: [nvo3] RFC 7637 on NVGRE: Network Virtualization Using Generic Routing Encapsulation
Thread-Index: AdD3CUG2lKD1MdSNRDajRJMwS9P1nAFshbuAADQlp4AAqs5EgAAGUl3AABApNgAEQYm5AAARwgwAADZ3w4AAAH3EgAAAk9KAAAB9xIAAANcsgAATVw+AABnP7AAAAkcVgAADif2AAAJwggAAADeVgAADLg0AAAHTAQAAEmNHAP//g9eAgAC0XQCAAP98gIAAn+2A
Date: Sun, 01 Nov 2015 04:12:21 +0000
Message-ID: <D74F9EF2-DAFB-4177-B026-41F4DA28767D@vmware.com>
References: <BY2PR03MB12817E4FAFBAFA86C85CBE1B9430@BY2PR03MB128.namprd03.prod.outlook.com> <CALx6S36u=4DDmKP9kc+ffgiM6Uo0ZNqB_QupXJG=bpBVqab9bg@mail.gmail.com> <BY2PR03MB1284831BB50DBD237F878FAB94B0@BY2PR03MB128.namprd03.prod.outlook.com> <D2395E90.5005A%manishkr@cisco.com> <2691CE0099834E4A9C5044EEC662BB9D571FAD8D@dfweml701-chm> <CALx6S37B0XD2z3=_YrQHg0xs-oO=f8HJ50MuTm8Gpep-z2H_0w@mail.gmail.com> <D25684F8.51E28%manishkr@cisco.com> <6087EDE5-A667-4ECC-851F-92A2AEF16C9F@gmail.com> <BY2PR03MB1280A549DE0C0B455D28853B9200@BY2PR03MB128.namprd03.prod.outlook.com> <CALx6S36kkh2197sfVQ8TJmtXh_+tLhptdZv-zt2HsQ+4RaqahA@mail.gmail.com> <BY2PR03MB128F42911F080B829E47CFBB9200@BY2PR03MB128.namprd03.prod.outlook.com> <CALx6S36Xtdk50MLWLqMXLYhs7hANiWp3AmA=adE_J+JFy9UWVg@mail.gmail.com> <BY2PR03MB1288A13470DA2879231159EB9200@BY2PR03MB128.namprd03.prod.outlook.com> <CALx6S36-o5q_8MkeA0ZabA4Pmczi5bu3qEuQD7C2utGFkVSAQg@mail.gmail.com> <BY2PR03MB1283DC8781FE1FE91D6C822B92F0@BY2PR03MB128.namprd03.prod.outlook.com> <CALx6S36-SZSM5dm0aNtbHRoLN-FLDU7Hrb9jHdrvVuayL+XSfQ@mail.gmail.com> <BY2PR03MB128C9D66097B6904ACE7BE2B92F0@BY2PR03MB128.namprd03.prod.outlook.com> <CALx6S37UJZ08USMz_1vDmwhWum6o2GHT5EvydMnGVDJ3riPxUA@mail.gmail.com> <BY2PR03MB1282C6BA1FE6C44355B4859B92F0@BY2PR03MB128.namprd03.prod.outlook.com> <CALx6S34qy=B8Uoo+vtiVnqfXBarxgd6bfF17RfCPWp7XWGCdSA@mail.gmail.com> <BY2PR03MB1289C0FFB002C9439D5089BB92E0@BY2PR03MB128.namprd03.prod.outlook.com> <A942AAEA-81E6-4DF3-B676-90F5C886E715@vmware.com> <CALx6S36UdzXbJPoyOVMVBDf5_eJoKacYgBZUu_qJ3acW1Ax8xQ@mail.gmail.com> <15C1AFDA-8D43-48D4-B46B-1898D5130FF5@vmware.com> <-2194609652943825758@unknownmsgid>
In-Reply-To: <-2194609652943825758@unknownmsgid>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.113.160.246]
Content-Type: multipart/alternative; boundary="_000_D74F9EF2DAFB4177B02641F4DA28767Dvmwarecom_"
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/nvo3/HTSXROpKwman1Bd4fAlmmfZF_P8>
Cc: "Manish Kumar (manishkr)" <manishkr@cisco.com>, Tom Herbert <tom@herbertland.com>, "nvo3@ietf.org" <nvo3@ietf.org>, Lucy yong <lucy.yong@huawei.com>, Pankaj Garg <pankajg@microsoft.com>, Dino Farinacci <farinacci@gmail.com>
Subject: Re: [nvo3] RFC 7637 on NVGRE: Network Virtualization Using Generic Routing Encapsulation
X-BeenThere: nvo3@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "Network Virtualization Overlays \(NVO3\) Working Group" <nvo3.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/nvo3>, <mailto:nvo3-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/nvo3/>
List-Post: <mailto:nvo3@ietf.org>
List-Help: <mailto:nvo3-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nvo3>, <mailto:nvo3-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 01 Nov 2015 04:12:25 -0000

Sure, probably all of the hardware implementations have some limits on their ability to handle the full breadth of Geneve options. Geneve was intentionally designed to be very future proof and support limits beyond what I would realistically expect people to implement/use in the near future. The more interesting question is whether it is possible to support a useful set for what we need today. Unfortunately, I can’t really give specifics for different implementations (in the cases that I know) but let me try to make some generalizations and you can follow up with individual vendors if you need more details.

NICs generally don’t have much of an issue and seem to have largely settled on supporting 64 bytes of options with offloads for the current generation. I don’t really see it as an issue if the parser can’t looker deeper than this. Assuming that 64 option bytes is enough for data packets, the control plane would simply configure senders to not use more than that. And in the edge cases where we need to use more than that (perhaps a control packet), the packets would still flow, just without using offloads.

Switching ASICs are more complicated and varied, as you say. There are definitely implementations that can support parsing and generating a set of TLVs at full multi-terabit data rates (16 or 32 bytes are popular here) and undoubtedly some that are just supporting VXLAN-like capabilities with a few additional features. Even the latter is useful since it allows transitioning to a single protocol with incremental use of additional functionality, especially since in some cases this can be enabled with existing chips that are already deployed.

One final point – most of these limitations are around the length of the header, not the variable nature of it. So even if Geneve as a protocol is capable of supporting more than what is used today, the baseline is probably pretty similar to the alternatives and the future flexibility is hugely useful. Without a doubt, implementing variable length headers is more effort than fixed length but based on the above implementations, it seems clearly doable if the benefit is there. Given the number of extensions that we have seem to VXLAN, this type of extensibility seems to be essential.

Jesse

From: Diego Garcia del Rio
Date: Sunday, November 1, 2015 at 11:40 AM
To: Jesse Gross
Cc: Tom Herbert, Pankaj Garg, "nvo3@ietf.org<mailto:nvo3@ietf.org>", "Manish Kumar (manishkr)", Dino Farinacci, Lucy yong
Subject: Re: [nvo3] RFC 7637 on NVGRE: Network Virtualization Using Generic Routing Encapsulation

Thanks for the references. But out of all the switching asics, which are arguably the most constrained in terms parsing flexibility and need for performance, how many support arbitrary tlvs push/pop? Geneve in its most basic form without options looks very similar to vxlan and thus I'm not surprised we can see several of the products claiming support for it. But when we start adding arbitrary protocol types and variable options I'm not so sure that those implementations can claim full support. Even for the nics and all the offloads, it comes a moment where the parsing engines can't look deep enough into the packet and then we have a problem.

I think there is a reason why there is quite some pushback from the hardware side against variable length options.

My two cents,
Diego





On Oct 30, 2015, at 21:29, Jesse Gross <jgross@vmware.com<mailto:jgross@vmware.com>> wrote:


From: Tom Herbert
Date: Saturday, October 31, 2015 at 9:40 AM
To: Jesse Gross
Cc: Pankaj Garg, "nvo3@ietf.org<mailto:nvo3@ietf.org>", "Manish Kumar (manishkr)", Dino Farinacci, Lucy yong
Subject: Re: [nvo3] RFC 7637 on NVGRE: Network Virtualization Using Generic Routing Encapsulation

To follow up on Pankaj’s mention of ecosystem support, one comment about the
viability of TLVs is that whether they are a useful extension mechanism is
mostly based on the implementer’s perception. If they are seen as an add-on
that is not really core functionality (as in IPv4 and IPv6), then sure,
people won’t bother to support them. However, in the case of Geneve, they
are obviously the major goal of the protocol and they are being implemented,
in both software and hardware.

Jesse,

Your point that TLVs are major goal of Geneve would be much stronger
if you could reference defined TLVs that are critical to the protocol
function. Maybe I'm missing something, but I can't find any defined
TLVs for Geneve on the web at all.

Here is an example from OVN:
https://github.com/openvswitch/ovs/blob/master/ovn/ovn-architecture.7.xml#L1014

OVN is actually a pretty useful reference in general because it is an open source network virtualization implementation that is using Geneve as its preferred encapsulation.

And here is a list of implementations of Geneve that I am aware of, from my presentation at the meeting in Prague plus a few additional ones that I became aware of since then. We don’t really need to speculate what people might do, given that there are a number of implementations already from different vendors. (This is all public.):

Controller:
Open Virtual Networking (OVN)

Software Endpoint:
Open vSwitch
Linux

Debugging Tool:
Wireshark
tcpdump
libpcap

NIC:
Intel XL710
Mellanox ConnectX-4
Broadcom NetXtreme C-Series
QLogic 578xx
Netronome NFP-6xxx

Switching ASIC:
Broadcom Trident 2+/DNX
Cavium XPliant
Mellanox Spectrum
Intel Red Rock Canyon
Centec GoldenGate
Marvell Prestera
_______________________________________________
nvo3 mailing list
nvo3@ietf.org<mailto:nvo3@ietf.org>
https://www.ietf.org/mailman/listinfo/nvo3