[Idr] Re: Revision for adding Ketan's comments (RE: AD evaluation review of draft-ietf-idr-sdwan-edge-discovery-29
Ketan Talaulikar <ketant.ietf@gmail.com> Thu, 03 September 2026 04:13 UTC
Return-Path: <ketant.ietf@gmail.com>
X-Original-To: idr@mail2.ietf.org
Delivered-To: idr@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 5C90013476E01 for <idr@mail2.ietf.org>; Wed, 2 Sep 2026 21:13:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1788408781; bh=E/aibjR8d+dypfrXEgzGhBiyHIaJ9mQTU7ZYOvnQ0sM=; h=References:In-Reply-To:From:Date:Subject:To:Cc; b=EBeD5IV9pwxkr0vh4TD4iaBzTjPU9L8tUogjeb4gewuLndATNB5b3WOPrSCO+4qng eShcgQjqmBZyWr2p6HMwvmxiwl/xQ1jt9klBWjS/6q1capQUQw4Z8PP43gCavOI6nU vxDDvZhT4IEzxqXa41+8lqjaEHeSWGpAyHBpWz+E=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OQ8DwkHbpdU8 for <idr@mail2.ietf.org>; Wed, 2 Sep 2026 21:12:56 -0700 (PDT)
Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 7606E13476DF8 for <idr@ietf.org>; Wed, 2 Sep 2026 21:12:56 -0700 (PDT)
Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2caced6038eso6809555ad.0 for <idr@ietf.org>; Wed, 02 Sep 2026 21:12:56 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1788408775; cv=none; d=google.com; s=arc-20260327; b=NKSTx7CyPQwzaZ3E8LMFE86vM0t04sLOtYf7qFwlwM7eUMh2nxa0GcpFxLH7qfARqX tgWB6dt5/51o8hslKnovCS+NcLgWaEXEIQ/LCqMbR5sanZognM/K8B0q4IWneMllrHD2 sMZK3tISSlPySwjAVDf5GTv46cNrXKqeykIjXRGgm0LWnYIa/mEWnitrLHvZigHmsWYP 6Z397/9oPVFqJU0y+QWC0QlOo2Hciu1dXUwnf5107zpagsTFNdGYb1kZu+HKdEIUaj6z CouM+AmV/EVwlKQSzSwbft38uGoxCSiXfXzfN0/QMtU7z50PgiJRkAY047YDq3z//cFq E+bw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=h4CF25K0ND+mFgTRzECWFhKwNQ7YvF+j3UX5dD8cFaY=; fh=gv4x6cbIGTstTRfQwnv4JJCia/MwwyM3GXXdhT1PhYA=; b=g71jcCY32qV2nAlybwUBWnwm/s9TEyWIg5KWPemS0fOe411gJizhRJdCMcwJ9LhGC6 PAqXv7S/aYVZ2IsV7uK2WP0Icsm6E49TEUWRPomBAPWTNSYpt+ZKkfoxgak6vZYsQMAW D6nQPKIonkflm1n8D9Tw9lKA8IP/PxQzqGlftyAE2y/pWtVJWDTypefyD/WFKsgNCFbm EJCSO8VyZcRp0QtCGom+D3maUlEA2a2QuGPXSNQhv5f6meP2RGFAEgBghRpE5+nAMS1W 9/SRr1pWRdCBEO+Z550x+Vn4rNvOz3c6mp1OmNUE/62Btqu4a+DAl58M8BCnXM/nWQII ft6Q==; darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788408775; x=1789013575; darn=ietf.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=h4CF25K0ND+mFgTRzECWFhKwNQ7YvF+j3UX5dD8cFaY=; b=oajQT4QDaUixd7ri+RZzSh1THijtu2kSTtBY2eVJ8g+DQ3BjJBxk2pBnPn5NH+PqaE tIsgOCWiigixkat7fQCDqKIdzKW80v0MKUEVjPEEGxpLOfBidufxgcgKgEqIJcLvaORT pTRcIYnso2uNvw0MDJ2UdhzpDcusqSwc4iJkjGEr9VTCdXPSccVFrfIceDkkYlphn4qa 7Yv7tb9YeRDwK7287CXbva1nnlnvjyp4zq7Nd6W34/CrcxCwxgIgJQTY918u1mHGJOzV pvEyAWi/73rmTu8M7RpavcRc+PL/Ah1INlSYsIZtXiAwE6k1kixCDaBP1UcGtX0udw9u lmVg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788408775; x=1789013575; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=h4CF25K0ND+mFgTRzECWFhKwNQ7YvF+j3UX5dD8cFaY=; b=EIPQFn/My9RRYcPjFKlirpOtM97qhtH0InF7Rnxuz9XOCjhzoLky8ZfvhX4lrCrGuh 0MmEucmRk+gL/pU3xSDL6Yevylg3tb8ujsbxFe7ruwl4ZX3/pr14v6lpNDvYgzx7gulS RKuGywjPg10joxmCNXUvMIAHJc89xYjWfdDd7EXOHsQQWsNvyjOtNSXARh5VCo2Qu7LN cEEbLRgZZwShM0EYr4fpXbliMHzCjTdCHd/z5sRnZK6OLXV74J5aW3aXsFV3sZSZ3AUg pqwWpURT/PBymBgPNo5C+hqAcC5ThXAXlTIU/fI4Qc+GQjh9LdfTSGt5ks0W3WUelegx UWAQ==
X-Forwarded-Encrypted: i=1; AKwUvBzJrNp5lVsF/J6u/WKnwSzeaRrekHc84umqi1TYqy2zuJdEskZnV4HLJPYzakxP8BXJKAc=@ietf.org
X-Gm-Message-State: AFuF++kjKxz1wvRiIhdgSZZg5hi6mf62P+2KlKWFzIYdw8u2ztPe1FXF DARP6RG9QCMwTa5WItE+JHezcQIiCO+/BmZbqEURb4vmfePF1IUp+SiqQDUULVtIsigSA+6mXMF Q2YK7ToczkDIFRPaSu5Mrp67UXZu7olQ=
X-Gm-Gg: AYBFou19Zuls8QZ6wpRffaShLQ1FUNlwscfgcexWDRLCMjcra/qrrsTx95AwEtcF/TA 8s8f8FBON4SYEOd5CbWe4gfVQCpb3arjkTXs/CX1C7yu5KuplJ8qd4L+MZJGG8EHBF7Axv+bNyv GQkEEyYHrV4zvEphWKN7tKa00VC0rPaJt+8ldhhwwAz1x5B/zZ1dOM35uIEdXTebweBMnE4BmoP RJl0ql+LVKEC0zfQuEH+W0T8RwxcTxgdquWibfoIaVUvdlhralq6rqUmazgj0QxeK5S/1Lya+hE GxMYDIOEQTpk9gt6JiN55FanfGygqHffDw2nrhqiXbWQ/p5RZGhJcYRupdmn/iF6PHflvh5e7Ua p
X-Received: by 2002:a17:903:8d0:b0:2d6:fddf:a890 with SMTP id d9443c01a7336-2dafaf31cedmr36088575ad.6.1788408774218; Wed, 02 Sep 2026 21:12:54 -0700 (PDT)
MIME-Version: 1.0
References: <CAH6gdPz5yFHM3iwcXJGhbUO-r2Fo=9SRQCndZdjb9pHQZ95WjQ@mail.gmail.com> <CO6PR13MB535554CBECBF8E50FEBEC62B85AB2@CO6PR13MB5355.namprd13.prod.outlook.com> <PH0PR13MB5364F3ED25B3A531523F2B9085AA2@PH0PR13MB5364.namprd13.prod.outlook.com> <CO6PR13MB5355DF6FD99A32DE30E8688A85A82@CO6PR13MB5355.namprd13.prod.outlook.com>
In-Reply-To: <CO6PR13MB5355DF6FD99A32DE30E8688A85A82@CO6PR13MB5355.namprd13.prod.outlook.com>
From: Ketan Talaulikar <ketant.ietf@gmail.com>
Date: Thu, 03 Sep 2026 09:42:40 +0530
X-Gm-Features: AcwNN1V5uAynfKrvKdgaLAYIMTiOM5SGs3qLT9Wp1bQeCVeJO6m1khp1OrBftnY
Message-ID: <CAH6gdPwxDbF2m1eqh_QcrEe92009kG_oGRFH7C6Ro89=CSZ4tA@mail.gmail.com>
To: Linda Dunbar <linda.dunbar@futurewei.com>
Content-Type: multipart/alternative; boundary="000000000000b3583b065a8c5d30"
Message-ID-Hash: YGOGBPMDK7UKNRQMTUW6Q34XFEW4DNEE
X-Message-ID-Hash: YGOGBPMDK7UKNRQMTUW6Q34XFEW4DNEE
X-MailFrom: ketant.ietf@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-idr.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Susan Hares <shares@ndzh.com>, Kausik Majumdar <kmajumdar@upscaleai.com>, Robert Raszuk <robert@raszuk.net>, Venkit Kasiviswanathan <venkit@nexthop.ai>, "idr@ietf. org" <idr@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Idr] Re: Revision for adding Ketan's comments (RE: AD evaluation review of draft-ietf-idr-sdwan-edge-discovery-29
List-Id: Inter-Domain Routing <idr.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/idr/YJcUAWFLMsEvlGrYC6BC9M4azqY>
List-Archive: <https://mailarchive.ietf.org/arch/browse/idr>
List-Help: <mailto:idr-request@ietf.org?subject=help>
List-Owner: <mailto:idr-owner@ietf.org>
List-Post: <mailto:idr@ietf.org>
List-Subscribe: <mailto:idr-join@ietf.org>
List-Unsubscribe: <mailto:idr-leave@ietf.org>
Hi Linda, At a quick glance, I note that not all of my suggestions have been considered even if several issues have been addressed. At this point, the document is not with me; it is back with the WG. Therefore, the author team and the WG should evaluate the document. Thanks, Ketan On Tue, Sep 1, 2026 at 10:29 PM Linda Dunbar <linda.dunbar@futurewei.com> wrote: > Hi Ketan, > > I have now uploaded a revised version of > draft-ietf-idr-sdwan-edge-discovery that I believe addresses all of your > comments and suggestions: > https://datatracker.ietf.org/doc/draft-ietf-idr-sdwan-edge-discovery/ > > I would appreciate it if you could take a look at the updated version. > > The major changes include: > > - Clarified the boundary between BGP signaling and IPsec processing. > BGP carries IPsec-related parameters but does not negotiate, derive, > validate compatibility, or establish IPsec SAs. > - Clarified the centrally controlled SD-WAN model and the role of the > RR/Controller, including authorization and policy enforcement. > - Updated the BGP transport security requirements so that > authentication, integrity protection, and confidentiality are required for > carrying the SD-WAN information defined in the document. > - Clarified SD-WAN Node ID, SD-WAN Color, BGP Next Hop, and their > respective roles in identifying nodes, grouping eligible tunnels, and > correlating Client Routes with SD-WAN Underlay Routes. > - Clarified that the SAFI-74 SD-WAN Underlay Route carries > control-plane tunnel information and is not installed as a forwarding route > for user traffic. > - Reworked the IPsec SA Rekey Counter, Public Key, SA Proposal, and > Simplified IPsec SA Sub-TLV descriptions, including length constraints, > validation, and the boundary between BGP and the IPsec implementation. > - Clarified that only one IPsec SA Proposal Sub-TLV is processed for a > given SD-WAN Hybrid Tunnel TLV, while multiple IPsec SA ID Sub-TLVs may be > used for distinct SAs. > - Corrected and clarified the Extended Port Attribute encoding, > including IPv4/IPv6 address lengths, NAT-related Local/Public IP and port > fields, and Sub-TLV length calculation. > - Clarified the handling of multiple WAN ports and Extended Port > Attribute Sub-TLVs. > - Improved validation and error-handling procedures for SD-WAN NLRIs > and Tunnel Encapsulation Sub-TLVs, including alignment with RFC 7606 and > RFC 9012. > - Reworked the IANA Considerations, including the existing Sub-TLV > assignments, the SAFI-74 Route Type range, the Extended Port registries, > and the overlapping/unassigned ranges. > - Updated the Security and Manageability Considerations and cleaned up > the normative/informative references. > > I also fixed the IDnits issues found during the revision. > > Please let me know if you see anything from your review that is still not > adequately addressed. > > Thanks, > Linda > > > > > > *From:* Linda Dunbar > *Sent:* Saturday, August 29, 2026 8:02 PM > *To:* Ketan Talaulikar <ketant.ietf@gmail.com>; Susan Hares < > shares@ndzh.com>; Kausik Majumdar <kmajumdar@upscaleai.com>; Robert > Raszuk <robert@raszuk.net>; Venkit Kasiviswanathan <venkit@nexthop.ai> > *Cc:* idr@ietf. org <idr@ietf.org> > *Subject:* RE: AD evaluation review of > draft-ietf-idr-sdwan-edge-discovery-29 > > > > Ketan, > > > > Thank you very much for the extremely detailed and thoughtful review. I am > truly impressed by how thoroughly you went through the document and > identified so many subtle technical, encoding, consistency, and > interoperability issues. > > > > It took me many days to carefully work through all of your comments, > understand the concerns, and make the corresponding changes. I really > appreciate not only the issues you identified, but also the detailed > explanations and concrete suggestions you provided for how they could be > addressed. They were extremely helpful in working through some of the more > complicated parts of the document. > > > > I have now gone through all of your comments and revised the document > accordingly. I will prepare a summary of the major changes and post the > revised version to the IDR WG for further review. > > > > I am very grateful for the significant time and effort you put into this > review. Your comments and suggestions have substantially improved the > document. > > > > Please see the resolutions below marked as [Linda] for your comments. > > > > Linda > > > > *From:* Ketan Talaulikar <ketant.ietf@gmail.com> > *Sent:* Wednesday, August 19, 2026 11:25 AM > *To:* Linda Dunbar <linda.dunbar@futurewei.com>; Susan Hares < > shares@ndzh.com>; kmajumdar@upscaleai.com; Robert Raszuk < > robert@raszuk.net>; venkit@nexthop.ai > *Cc:* idr@ietf. org <idr@ietf.org> > *Subject:* AD evaluation review of draft-ietf-idr-sdwan-edge-discovery-29 > > > > Hello Linda, Sue, Kausik, Robert, Venkit, and IDR WG, > > I've done the review as part of AD evaluation of > draft-ietf-idr-sdwan-edge-discovery-29 and would like to share the same > with > you. > > This has been thus far the most difficult and complex review that I've had > to do as an AD (and even generally). The challenging part was not just the > issues themselves but my attempt to find a way to progress this work. I > hope > this helps the authors and the WG. > > > Summary: Not ready to progress to IESG evaluation. Given the nature of > findings, I shall be returning this document back to the WG. > > Before getting into the substance of the review, I must clarify that the > intent > is to make the document correct and correctly bounded, not to block the > approach it takes. Whether BGP is the right vehicle for SD-WAN secure > tunnel > establishment is a question for the WG to settle, not one an AD evaluation > should relitigate, and none of the comments below asks the authors to > defend > that choice or to argue it against alternatives. What they do ask is that > the specification be implementable, that it say which rules it follows and > which it defines, and that it be candid about what it has not examined - so > that a reader can make an informed decision that the document currently > does > not equip them to make. > > [Linda] For the detailed review and for clarifying the intent. We > appreciate the comments and will address them individually below. > > > Then, a declaration of prior involvement. I performed the RTGDIR early > review of -18 (in 2024, "Not ready"). Some of those findings still remain > and are covered in this review. The RTGDIR reviewer role was taken up by > Alvaro after I stepped into the AD role. I will let Alvaro add/clarify on > his review, but I believe some of his findings are also covered here. > > technical tldr: > > 1) Several of the new sub-TLVs cannot carry the values they are defined to > carry, because the one-octet length that RFC 9012 assigns to sub-TLV > type > codes 64-70. E.g., it cannot hold a 2048-bit Diffie-Hellman public > value — > the only group RFC 8247 makes mandatory to implement. > > > > [Linda] To stay within the RFC 9012 sub-TLV length limit, we can recommend > using elliptic-curve DH groups, whose public values are much smaller, e.g. > , 64 octets for P-256 (Group 19), 96 octets for P-384 (Group 20), and 132 > octets for P-521 (Group 21). For deployments using larger public values, > such as 2048-bit MODP, the SD-WAN controller or management system can > distribute the public keys for the nodes in the SD-WAN domain instead of > carrying them in BGP. Here are the actual wording changes: > > > > Old: > > Key Exchange data: This refers to a copy of the sender's Diffie-Hellman > public value. The length of the Diffie-Hellman public value is defined for > MODP groups in [RFC7296] and for ECP groups in [RFC5903]. > > > > New: > > Key Exchange data: This field contains a copy of the sender's > Diffie-Hellman public value. Because the RFC 9012 sub-TLV Length field is > one octet, the total value carried in this IPsec Public Key Sub-TLV is > limited to 255 octets. Therefore, the encoded public value, together with > the other fields in this Sub-TLV, MUST fit within this limit. > Elliptic-curve Diffie-Hellman groups are RECOMMENDED because their public > values are smaller; for example, Groups 19, 20, and 21 use public values of > 64, 96, and 132 octets, respectively, as defined in [RFC5903]. If the > selected Diffie-Hellman public value cannot fit within this Sub-TLV, the > public key MUST be distributed by another mechanism, such as the SD-WAN > controller or management system. > > > > > 2) The document covers two different route types with one set of procedures > and never says which of them RFC 9012 governs, so the client routes > deviate from it where they may not, and the new SD-WAN SAFI is left > without a next-hop encoding, propagation rules or validation procedures > of its own. > > > > [Linda] We believe the document already separates the two cases: Section > 2.2 defines SD-WAN underlay UPDATEs using SAFI 74, while Section 2.4 > defines client-route UPDATE procedures. Both use the Tunnel Encapsulation > Attribute defined in RFC 9012. However, we agree that the applicability > boundary should be stated more explicitly. RFC 9012 directly specifies use > of the Tunnel Encapsulation Attribute for the client-route AFI/SAFIs, while > this document extends its use to SAFI 74 and therefore needs to state the > SAFI-74-specific next-hop, propagation, and validation procedures > explicitly. We can make the following changes: > > > > Old: > > A new NLRI SAFI (SD-WAN SAFI=74) is introduced within the MP_REACH_NLRI > Path Attribute of [RFC4760] for advertising the detailed properties of the > SD-WAN tunnels terminated at the edge node. > > > > New: > > A new NLRI SAFI (SD-WAN SAFI=74) is introduced within the MP_REACH_NLRI > Path Attribute of [RFC4760] for advertising the detailed properties of > SD-WAN tunnels terminated at the WAN ports of the edge nodes. The SD-WAN > SAFI uses the Tunnel Encapsulation Attribute and Tunnel TLV/sub-TLV > encodings defined in [RFC9012]. Because SAFI 74 is outside the AFI/SAFIs > for which [RFC9012] defines applicability procedures, this document defines > the use of the Tunnel Encapsulation Attribute with SAFI 74, including the > associated next-hop, propagation, and validation procedures. > > > 3) There is no boundary between what BGP does and what IPsec and other > SD-WAN functional blocks do, so the document has absorbed IPsec and > other > semantics that it then specifies incorrectly or incompletely. > > > > [Linda] BGP is used only to distribute the parameters needed by SD-WAN > peers to establish or select secure tunnels. The actual IPsec SA creation, > algorithm compatibility checks, key derivation, packet protection, rekeying > behavior, and data-plane processing remain functions of the IPsec > implementation. Section 3.2 already states that the compatibility check is > performed at the IPsec layer, not by BGP. > > > > We can make the following wording changes to make the boundary clearer: > > At the beginning of Section 2.3: > > Old: > > The IPsec SA Property Sub-TLVs defined in this section are used to signal > IPsec SA parameters for SD-WAN Hybrid Tunnels as defined in this document. > > > > New: > > The IPsec SA Property Sub-TLVs defined in this section are used by BGP > only to advertise IPsec-related parameters associated with SD-WAN Hybrid > Tunnels. BGP does not establish, negotiate, derive, or maintain IPsec SAs. > The creation and operation of an IPsec SA, including algorithm validation, > key derivation, SA state management, rekeying, and packet protection, are > performed by the IPsec implementation according to [RFC4301] and, when > IKEv2 is used, [RFC7296], together with local policy. > > > > Section 3.2: > > Old: > > When a new IPsec SA is to be established using parameters carried in > Sub-TLVs ... the receiving SD-WAN node MUST validate that the proposed > IPsec transforms and algorithms are compatible with its local configuration. > > > > New: > > When parameters carried in these Sub-TLVs are used to establish a new > IPsec SA, the receiving SD-WAN node passes the advertised parameters to its > IPsec function. The IPsec implementation determines whether the advertised > transforms and algorithms are compatible with local configuration and > performs SA establishment according to [RFC4301] and, when IKEv2 is used, > [RFC7296]. These attributes, received via the Tunnel Encapsulation > Attribute, provide the parameters associated with establishing the IPsec > tunnel between local and remote WAN ports. BGP itself does not perform > IPsec negotiation, compatibility checking, or SA establishment. > > > > > 4) Section 2 interleaves the two route types so that neither can be read on > its own, and the document uses several different names for them making > it hard to follow. > > > > [Linda] The document distinguishes the two route types as: (1) Client > Routes, using IPv4/IPv6 unicast or L3VPN AFI/SAFIs, and (2) SD-WAN Underlay > Routes, using the new SD-WAN SAFI 74. We will use these two terms > consistently throughout the document. And make the following wording > changes: > > > > Section 2 > > Old: > > The BGP mechanisms defined in this document serve two functions: > > > > New: > > The BGP mechanisms defined in this document support two types of > advertisements: > > - Advertise Client Routes with SD-WAN Hybrid Tunnel: > - Advertise SD-WAN Underlay Routes: A BGP speaker advertises SD-WAN > Underlay Routes using AFI/SAFI 1/74 or 2/74. The NEXT_HOP is set to a local > address of the advertising SD-WAN edge node, and the UPDATE includes a > Tunnel Encapsulation Attribute containing an SD-WAN Hybrid Tunnel TLV. The > SD-WAN NLRI identifies the WAN port or ports, SD-WAN Color, and SD-WAN Node > ID to which the advertised tunnel properties apply. The associated SD-WAN > Hybrid Tunnel TLV carries the corresponding tunnel-related information, > including IPsec SA properties and, optionally, NAT-related information. > > > > In this document, "Client Route" refers to the first type of > advertisement, and "SD-WAN Underlay Route" refers to the second. The term > "SD-WAN NLRI" refers specifically to the NLRI encoding used for an SD-WAN > Underlay Route. > > > > Section 2.5 Title: > > Old: Procedure for Underlay Routes with SD-WAN Hybrid Tunnel TLV > > > > New: Procedure for SD-WAN Underlay Routes with SD-WAN Hybrid Tunnel TLV > > > > Old: > > The Edge BGP Peer using BGP SD-WAN discovery sends the SD-WAN NLRI... > > New: > > The Edge BGP Peer using BGP SD-WAN discovery advertises an SD-WAN Underlay > Route whose NLRI is encoded as specified in Section 2.2.1... > > > > Old: > > SD-WAN Underlay UPDATE > > New: > > SD-WAN Underlay Route Advertisement > > > > Old: > > Procedure for Client Routes with SD-WAN Hybrid Tunnel > > New: > > Procedure for Client Route Advertisements with SD-WAN Hybrid Tunnel > > > > Section 2.6.1 > > Old: > > For SD-WAN client routes with a Tunnel Encapsulation Attribute with a > SD-WAN Hybrid Tunnel type TLV, the IPsec Sub-TLVs (IPsec SA ID, IPsec > nonce, IPsec Public Key, IPsec Proposal, and Simplified IPsec SA) are > meaningful, but MAY be rarely sent. Incorrect fields within any of these 5 > TLVs. Per [RFC9012], a malformed sub-TLV is treated as an unrecognized > sub-TLV. > > > > New: > > > > For Client Routes carrying a Tunnel Encapsulation Attribute with an SD-WAN > Hybrid Tunnel TLV, the IPsec Sub-TLVs (IPsec SA ID, IPsec SA Rekey Counter, > IPsec Public Key, IPsec SA Proposal, and Simplified IPsec SA) MAY be > included. Malformed Sub-TLVs are handled according to [RFC9012]. > > > > > > > 5) The AH and ESP algorithm fields cite documents that define no code > points, and the two keys in the Simplified IPsec SA sub-TLV have no > stated algorithm, format or role, so neither field can be implemented > interoperably. > > [Linda] The Simplified IPsec SA Sub-TLV is intended specifically for > centrally controlled SD-WAN deployments where the SD-WAN Controller or > management system pre-configures all participating nodes with the > applicable IPsec algorithms, keying methods, and security parameters. > Therefore, the Sub-TLV intentionally does not carry the full set of > parameters needed for general IPsec negotiation. We can make the following > wording changes to make the intention more clear. > > > > Section 2.3.5: > > Old: > > The Simplified IPsec SA Sub-TLV provides a compact way to signal > pre-configured IPsec SA parameters for deployments where full transform > negotiation (e.g., via IKEv2) is not supported or not necessary. In such > deployments, SD-WAN edge nodes are provisioned (e.g., via SD-WAN controller > or management system) with a common set of agreed security profiles, > including allowed transforms and algorithms. This Sub-TLV signals which > profile entry is to be used for a given SA instance. > > > > New: > > The Simplified IPsec SA Sub-TLV provides a compact way to signal IPsec SA > parameters in a centrally controlled SD-WAN environment where the SD-WAN > Controller or management system pre-configures the participating SD-WAN > nodes with the required IPsec algorithms, keying methods, and other > security parameters. Because these parameters are configured consistently > across the SD-WAN domain, this Sub-TLV does not carry all of the > information required for full IPsec negotiation. It carries only the > parameters needed to identify and operate the applicable SA instance. > > > 6) Error handling is contradictory — the same condition is given different > outcomes in different sections — and the RFC 7606 disposition that > applies to each failure mode is never stated. > > > > [Linda] We will consolidate the error handling in Section 2.6 and make the > individual sections refer to it. The revised text will explicitly > distinguish malformed Tunnel Encapsulation Sub-TLVs, unsupported SD-WAN > NLRI Route Types, malformed SD-WAN NLRIs, missing required Tunnel > Encapsulation Attributes, and malformed MP_REACH_NLRI next-hop encoding, > and will state the applicable RFC 9012/RFC 7606 disposition for each case. > Here are the detailed changes: > > > > Section 2.6.1: > > > > Old: > > The error handling for the tunnel encapsulation signaling (Encapsulation > Extended Community and Tunnel Encapsulation Attribute) in this document > follows the procedures specified in Section 13 of [RFC9012]. Unless > otherwise stated, malformed or unrecognized Sub-TLVs MUST be handled as > specified in [RFC9012]. This document defines new Sub-TLVs for Tunnel Type > 25 (SD-WAN-Hybrid), but does not alter the validation behavior established > in RFC 9012. > > > > New: > > The error handling for the tunnel encapsulation signaling (Encapsulation > Extended Community and Tunnel Encapsulation Attribute) in this document > follows the procedures specified in Section 13 of [RFC9012]. Unless > otherwise stated, malformed or unrecognized Sub-TLVs MUST be handled as > specified in [RFC9012]. This document defines new Sub-TLVs for Tunnel Type > 25 (SD-WAN-Hybrid), but does not alter the validation behavior established > in RFC 9012. > > > > A malformed Sub-TLV within an SD-WAN Hybrid Tunnel TLV MUST be handled > according to Section 13 of [RFC9012]. Unless explicitly specified otherwise > in this document, the malformed Sub-TLV is treated as an unrecognized > Sub-TLV and ignored; it does not cause the entire SD-WAN Hybrid Tunnel TLV > or the associated route to be withdrawn. > > > > Section 2.6.2: > > Old: > > The SD-WAN NLRI [AFI 1/SAFI = 74] utilizes a route type field to describe > the format of the NLRI. This specification only allows an NLRI with a type > value of 1. An NLRI with a type of field of another value is ignored, but > distributed to other peers. The implementation MAY log an error upon the > reception of a type value outside of Route Type 1. Error handling for the > SD-WAN NLRI also adheres to the BGP UPDATE error handling specified in > [RFC7606]. > > > > New: > > The SD-WAN NLRI [AFI/SAFI = 1/74 or 2/74] utilizes a Route Type field to > describe the format of the NLRI. This specification defines Route Type 1. > An NLRI with an unsupported Route Type MUST be discarded and MUST NOT be > propagated to other peers. The implementation MAY log an error upon > reception of an unsupported Route Type. > > If a recognized SD-WAN NLRI Route Type is malformed but its NLRI boundary > can still be determined, the affected NLRI MUST be handled as > Treat-as-withdraw according to [RFC7606]. > > Error handling for other malformed SD-WAN NLRIs follows the BGP UPDATE > error-handling procedures specified in [RFC7606]. > > If the MP_REACH_NLRI Next Hop field for an SD-WAN Underlay Route has an > invalid encoding or length such that the NLRI field cannot be reliably > located, the error MUST be handled according to the applicable > session-reset or AFI/SAFI-disable procedures specified in [RFC7606]. > > > > Section 2.6.3 : > > Old: > > The SD-WAN NLRI SHOULD NOT be paired with an Encapsulation Extended > Community. If an SD-WAN NLRI is paired with an Encapsulation Extended > Community rather than a Tunnel Encapsulation Attribute, the SD-WAN NLRI is > considered malformed and the Treat-as-withdraw approach specified in > [RFC7606] SHOULD be used. > > > > New: > > The SD-WAN NLRI MUST NOT be paired with an Encapsulation Extended > Community. If an SD-WAN NLRI is paired with an Encapsulation Extended > Community rather than a Tunnel Encapsulation Attribute, the SD-WAN NLRI is > considered malformed and the Treat-as-withdraw approach specified in > [RFC7606] MUST be used. > > > > Fix Section 2.5.2 step 3 to align with Section 2.6.1. > > Old: > > If any Extended Port Attribute Sub-TLV is determined to be invalid, the > entire SD-WAN Hybrid Tunnel TLV MUST be considered invalid. > > > > New: > > If an Extended Port Attribute Sub-TLV is malformed, it MUST be handled > according to Section 13 of [RFC9012] and Section 2.6.1 of this document. > > > > Section 2.2.2: > > Old: > > Any other value is not supported and the NLRI MUST be ignored, but > distributed to other BGP peers. > > > > New: > > An SD-WAN NLRI with an unrecognized Route Type MUST be discarded and MUST > NOT be propagated, as specified for typed NLRIs in Section 5.4 of [RFC7606]. > > > > Length Field Validation: > > Old: > > Any other value renders the NLRI malformed, and the NLRI MUST be discarded. > > > > New: > > Any other value renders the SD-WAN NLRI malformed. Error handling is > specified in Section 2.6.2. > > > > > > > 7) Applying the mechanism to L3VPN routes is unimplementable as written > because label handling over the tunnel is never specified, and using the > Route Target as a VPN identifier on plain unicast cannot separate > overlapping address space. > > > > [Linda] We can make the following changes to clarify both points. For > VPN-IPv4/VPN-IPv6 Client Routes, the VPN route label carried in the SAFI > 128 NLRI is retained and used for forwarding at the egress SD-WAN edge. > When the SD-WAN Hybrid Tunnel traverses an IPsec/GRE or IPsec/VXLAN > segment, the labeled packet is carried through the secure tunnel and the > egress node processes the VPN route label according to the applicable > L3VPN/MPLS procedures. For plain IPv4/IPv6 unicast Client Routes, the Route > Target is not part of the NLRI and therefore cannot by itself distinguish > overlapping prefixes. We will clarify that plain unicast advertisements are > only applicable where overlapping address space is not required, or where > separate routing contexts are established by configuration. Overlapping VPN > address spaces use the VPN-IPv4/VPN-IPv6 SAFI with an RD. > > > > Section 2.4.4 (SD-WAN VPN ID in Control Plane)change: > > > > Old: > > For IPv4/IPv6 Unicast (AFI/SAFI = 1/1 or 2/1), the Route Target Extended > Community [RFC4360] SHOULD be included. The Route Target value is > interpreted as the VPN ID. The Route Target is especially necessary when > the SD-WAN edge node serves multiple VPNs on its client-facing interfaces. > If all client routes belong to a single VPN and the association is > unambiguous, the Route Target MAY be omitted. > > > > For VPN-IPv4/VPN-IPv6 (AFI/SAFI = 1/128 or 2/128), the RD in the NLRI > serves as the VPN ID. > > > > New: > > For IPv4/IPv6 Unicast (AFI/SAFI = 1/1 or 2/1), client routes received from > different client-facing ports may be configured to belong to different VPNs > when traversing the SD-WAN network. The Route Target Extended Community > [RFC4360] SHOULD be included in the BGP advertisement to identify the VPN > associated with each client route. Remote SD-WAN edge nodes use the Route > Target to associate the received client route with the corresponding VPN > forwarding context. If all client routes belong to a single VPN, the Route > Target MAY be omitted. > > > > For VPN-IPv4/VPN-IPv6 routes (AFI/SAFI = 1/128 or 2/128), the Route > Distinguisher is part of the BGP NLRI and distinguishes otherwise identical > prefixes belonging to different VPNs. The Route Target controls VPN > membership and route import/export policy. Overlapping prefixes belonging > to different VPNs therefore use VPN-IPv4/VPN-IPv6 routes with distinct > Route Distinguishers. > > > > Section 2.4.5 (SD-WAN VPN ID in Data Plane) change: > > Old: > > In the data plane, SD-WAN traffic can traverse either an MPLS or > > IPsec segment within a SD-WAN Hybrid Tunnel. The method for conveying > > the VPN ID depends on the encapsulation: > > - MPLS Segments: When the SD-WAN Hybrid Tunnel uses MPLS transport, > the MPLS label stack is used to identify the VPN per [RFC8277]. Security is > assumed to be provided by the MPLS transport. > - IPsec Segments: When traversing a public network with IPsec > encryption: For GRE encapsulation within IPsec, the GRE Key field can carry > the SD-WAN VPN ID; For VXLAN network virtualization overlays within IPsec, > the VNI (Virtual Network Identifier) field is used to carry the VPN ID > > New: > > In the data plane, client traffic belonging to different VPNs MUST remain > distinguishable while traversing the SD-WAN network. The method used to > carry the VPN identifier depends on the encapsulation: > > > > - For MPLS segments, an MPLS label is used to distinguish traffic > belonging to different VPNs according to the applicable MPLS VPN procedures. > > > > - For IPsec segments, the VPN identifier is carried within the > encapsulation protected by IPsec. For GRE encapsulation, the GRE Key field > is used to identify the VPN. For VXLAN encapsulation, the VNI (Virtual > Network Identifier) is used to identify the VPN. > > > 8) Every new value space is closed by normative text that makes any > unrecognised value a malformed sub-TLV, while IANA registries are > simultaneously requested for three of them, so nothing allocated in > future could ever be used. > > > > [Linda] Agree. These value spaces are intended to be extensible through > the corresponding IANA registries. We can make the following changes of the > validation text so that an unrecognized value does not by itself make the > Sub-TLV malformed; malformed processing will be limited to invalid encoding > or length. > > > > Section 2.3.6: > > Old: > > Those are the only two valid values for this field. > > > > New: > > This document defines Encap-Type values 1 (GRE) and 2 (VXLAN). Additional > values may be assigned in the future through the IANA registry. An > unrecognized Encap-Type value does not by itself make the Sub-TLV > malformed; however, an implementation MUST NOT use an encapsulation type > that it does not support. > > > > Section 2.3.6.1 (Extended Port Sub-Sub-TLV, Connection Type) > > Old: > > Values outside the range 1-4 are invalid and render the Sub-TLV malformed. > > > > New: > > This document defines Connection Type values 1 through 4. Additional > values may be defined by future specifications and assigned through the > IANA registry. Until then, values other than those defined by this document > are unsupported. An implementation receiving an unsupported Connection Type > value MUST NOT use that value for tunnel selection or establishment. > > > > > > Old: > > Underlay Network Type Sub-Sub-TLV is a MALFORMED Sub-Sub-TLV if the fields > do not fit the limits specified above. > > > > New: > > The Underlay Network Type Sub-Sub-TLV is MALFORMED if its encoding or > length is invalid. This document defines the valid Connection Type and Port > Type values listed above. Additional values may be defined by future > specifications and assigned through the corresponding IANA registries. > Until such values are defined, other values are invalid. > > > 9) The Security Considerations analyse neither the BGP layer nor the IPsec > layer, and nowhere state that the Route Reflector, being the SD-WAN > controller, is the trust anchor on which the whole solution rests. > > > > [Linda] The document already defines the RR as part of the SD-WAN > Controller and states its authorization role. Section 1 says that the RR > receives BGP UPDATEs from SD-WAN edges and propagates them only to peers > authorized to communicate over the SD-WAN overlay. Section 3 further states > that the RR maintains authorization policy and MUST verify that an > advertising BGP speaker is permitted to originate SD-WAN Hybrid Tunnel > information before reflecting it. Section 5 also requires strict filtering > and policy controls for SD-WAN identifiers. > > > > If you think it is necessary, we can make the following changes to > reiterate those points in Section 5 (Security Consideration): > Old: > > This document defines BGP extensions for SD-WAN edge nodes to advertise > their attributes for establishing IPsec SAs and underlay tunnel attributes, > typically via a RR, which then propagates them to authorized SD-WAN peers. > These BGP UPDATEs may contain sensitive information such as public keys, > IPsec proposals, and nonces. > > > > New: > > This document defines BGP extensions for SD-WAN edge nodes to advertise > their attributes for establishing IPsec SAs and underlay tunnel attributes, > typically via a RR that is part of the SD-WAN Controller, which then > propagates them to authorized SD-WAN peers. As described in Sections 1 and > 3, the RR/Controller maintains the authorization policy for the SD-WAN > domain and verifies that an advertising SD-WAN edge is authorized to > originate the corresponding SD-WAN tunnel information before reflecting it > to other peers. These BGP UPDATEs may contain sensitive information such as > public keys, IPsec proposals, and nonces. In deployments where SD-WAN edge > nodes communicate with the RR over public or untrusted networks, BGP SHOULD > be run over TCP-AO secure transport that provides authentication and > integrity for this data. > > > > Add the following paragraph after the 3rd one: > > As specified in Section 2.3, BGP only distributes IPsec-related > parameters; IPsec SA establishment and operation are performed by the IPsec > implementation according to [RFC4301] and, when IKEv2 is used, [RFC7296]. > > > 10) The IANA sections request assignments that were made years ago, six > of them under names that differ from the ones the document now uses. > > > > [Linda] For Section 6.2, Tunnel Type 25 has already been assigned as > SD-WAN-Hybrid and the name used in the current document is consistent with > the registry. No new assignment is needed; we will ask IANA to update the > reference for the existing allocation to this document. > > > > Section 6.3: > > Old: > > IANA is requested to assign the following sub-Types in the BGP Tunnel > Encapsulation Attribute Sub-TLVs registry... > > > > New: > > IANA has previously assigned the following Sub-TLV Types in the BGP Tunnel > Encapsulation Attribute Sub-TLVs registry in the Border Gateway Protocol > Tunnel Encapsulation Group. IANA is requested to update the descriptions > and references for these existing assignments as follows: > > > 11) The document asserts advantages over alternative mechanisms that it has > not established, and nowhere tells a reader what it has not analysed. > > [Linda] We can make the following wording changes to make it clearer: > > Section 2.3.6 > > Old: > > Unlike pairwise NAT traversal mechanisms such as IKEv2 [RFC7296], which > require peers to dynamically discover NAT properties during tunnel setup, > the BGP-controlled SD-WAN architecture enables each SD-WAN edge node to > proactively advertise its NAT properties to all peers through BGP > signaling. This approach simplifies NAT traversal in large-scale SD-WAN > deployments where each edge node may need to establish tunnels with many > peers. > > > > New: > > Unlike pairwise NAT traversal mechanisms such as IKEv2 [RFC7296], in which > NAT-related information is discovered between peers during tunnel > establishment, the BGP-controlled SD-WAN architecture enables an SD-WAN > edge node to advertise its NAT properties through the RR to authorized > SD-WAN peers before individual tunnels are established. This avoids > requiring the same NAT-related information to be discovered independently > during the establishment of each SD-WAN tunnel and can reduce repeated > parameter exchange in deployments where an SD-WAN edge establishes tunnels > with many peers. > > > > > The review has three parts: the tldr above; then the document-level issues > and what I am asking for on each; then the detailed comments, inline in the > idnits output of v29 of this document. The document-level issues are not > repeated in the detailed part. > > All of this is an effort to convey the review findings appropriately to not > just the authors but also the WG so they can do their part with reviewing > the document as it progresses. > > Please look for the tag <EoRv29> at the very end of the review. If you > don't > see that, then likely the email has been truncated by your email client and > you should look at the IDR WG email archive for the full version. > > Thanks, > Ketan > > PS: This is not an editorial review and it does not list the many > spelling, > grammatical and typographical errors, and a few incomplete or garbled > sentences. A proofreading pass is needed once the technical issues are > sorted > out. > > > DOCUMENT-LEVEL ISSUES > > These are the whole-document matters. They are given in the order I would > suggest that the authors work on them; it is just something that I felt > may be helpful. These aspects are not repeated in the detailed part further > below in the idnits output. > > (1) <major> Which of the document's two contexts does RFC 9012 govern? > > The document operates in two distinct contexts and treats them as one. > > * Client routes - AFI/SAFI 1/1, 2/1, 1/128 and 2/128. Every one of > these > is covered by RFC 9012, and it's procedures bind in full. Here the > TEA > does what RFC 9012 designed it to do: it tells the receiver which > tunnel > to forward this route's traffic through. > > * Underlay routes - the new SD-WAN SAFI, 1/74 and 2/74. Here the TEA is > not selecting a tunnel for the NLRI's traffic; the NLRI is a > (Port-Local-ID, SD-WAN-Color, SD-WAN Node ID) tuple naming a WAN > port, > and the TEA is the container for that port's properties. That is > structurally the same reuse RFC 9830 makes for the SR Policy SAFI. > > The document states neither the split nor its consequences. What it states > instead, at Section 2.6.1, is a blanket claim of adherence to RFC 9012 that > is wrong in different ways - see the comment at line 1555 below. > > The concrete gaps for the SD-WAN SAFI, each of which RFC 9830 answers > explicitly for its own SAFI (73) and would be a good guideline to work > from: > > * No applicability statement. Nothing says the SD-WAN Hybrid Tunnel > Type > and sub-TLVs 64-70 are applicable only to particular AFI/SAFIs. Table > 1 gestures at it, but a table introduced as a "Summary" (line 352) > and > captioned as a figure (line 390) is not where normative applicability > belongs - and it is wrong on the Color entry (see the comment at line > 362). > > * No disposition for the RFC 9012 sub-TLVs on the SD-WAN SAFI. Table 1 > marks fourteen of them "not valid" without saying what that means > operationally - ignored, malformed, or stripped on propagation? > Section 2.1.1 step 2 says "ignore invalid Sub-TLVs (per [RFC9012])", > which for SAFI 74 cites a document that does not cover the case. > > * No statement of what the TEA means on the SD-WAN SAFI. RFC 9012's > whole model is route-resolution-over-tunnel. For an underlay route > there is no traffic to resolve, and the document never says so - > see the comment at line 1495, where that omission produces a defect. > > * No statement of the relationship to RFC 9012 generally, and no > acknowledgement that the SD-WAN SAFI sits outside its scope. > > * No best-path statement. Nothing says what BGP does when two paths for > the same SD-WAN NLRI are received, or whether the SD-WAN sub-TLVs > participate in best-path selection. See Sections 2.4 and 4.2 of RFC > 9830 for the corresponding statements. > > * No statement of what happens when a TEA carrying only some other > tunnel type accompanies an SD-WAN NLRI. Section 2.6.3 covers the > absent case; the wrong-type case is left open. See Section 2.2 of > RFC 9830 for the corresponding rule. > > * No propagation rules. Nothing states how SD-WAN SAFI routes are > propagated: whether a Route Reflector reflects them under the > ordinary > RFC 4456 rules; whether a receiving edge node re-advertises them > further, and to whom; whether propagation across an eBGP boundary is > permitted at all, given the single-administrative-domain assumption; > whether the best path only is propagated or all paths; and - since > the > RR is by definition a component of the SD-WAN controller, and may > plausibly act on the information rather than merely reflect it - > whether it re-originates, modifies or filters the attributes it > propagates, or whether ordinary RR semantics apply unchanged. At > present a reader cannot tell whether the RR is a BGP transit function > or a SD-WAN control-plane participant. What propagation rules the > document > does have are scattered into sections that are about something else: > Section 3's authorisation requirement on the RR before reflecting > (see > the comment at line 1614) and Section 2.2.2's ignore-but-distribute > (see the comment at line 448). There is no propagation section. See > Section 4.2.3 of RFC 9830. > > Remedy. Add a short subsection - Section 2.1, before the encoding, is the > right place - modelled on Sections 1, 2.2 and 2.3 of RFC 9830, stating: (i) > that client routes use the TEA as specified in RFC 9012 and that this > document does not alter those procedures; (ii) that AFI/SAFI 1/74 and 2/74 > are outside the scope of Section 6 of RFC 9012 and that this document > defines the TEA's usage for them; (iii) that the SD-WAN Hybrid Tunnel Type > and sub-TLVs 64-70 are applicable only to the AFI/SAFIs listed, in > normative prose rather than only in Table 1; (iv) a default-deny rule > for the RFC 9012 sub-TLV space on the SD-WAN SAFI, with the required and > permitted ones named and everything else MUST-ignore / MAY-strip; (v) that > the SD-WAN NLRI is not installed for forwarding; (vi) the propagation > rules > per the last gap above. > > I am referencing RFC 9830 (of which I am a co-author) since it is the > closest > existing precedent, it is an IDR product, and leveraging it might help the > authors. > > I should also clarify, to avoid missteps, that this document does not > update > RFC 9012. > > > > [Linda] The current revision already distinguishes Client Routes from > SD-WAN Underlay Routes and states that SAFI 74 is outside the AFI/SAFIs for > which RFC 9012 defines applicability procedures. We can make the following > wording change to further clarify that Client Routes follow RFC 9012 > unchanged, while this document defines the TEA semantics, applicable > Sub-TLV processing, best-path behavior, error handling, and propagation > rules for SAFI 74. We use RFC 9830 as a guideline for these clarifications > where applicable. This document does not update RFC 9012. > > > > Section 2 (BGP SD-WAN Mechanisms) > > Old: > > In this document, "Client Route" refers to the first type of > advertisement, and "SD-WAN Underlay Route" refers to the second. The term > "SD-WAN NLRI" refers specifically to the NLRI encoding used for an SD-WAN > Underlay Route. > > > > New: > > In this document, "Client Route" refers to the first type of > advertisement, and "SD-WAN Underlay Route" refers to the second. The term > "SD-WAN NLRI" refers specifically to the NLRI encoding used for an SD-WAN > Underlay Route. For Client Routes, the Tunnel Encapsulation Attribute > procedures of [RFC9012] apply. For SD-WAN Underlay Routes using SAFI 74, > which is outside the applicability scope defined by [RFC9012], the use and > processing of the Tunnel Encapsulation Attribute are defined by this > document. This document does not update [RFC9012]. > > > > Section 2.2 (SD-WAN Underlay Route Advertisement) > > > > Old: > > An Edge BGP Peer using BGP SD-WAN discovery advertises an SD-WAN Underlay > Route whose NLRI is encoded as specified in Section 2.2.1. The route > carries a Tunnel Encapsulation Attribute containing an SD-WAN Hybrid Tunnel > TLV to advertise the detailed properties associated with the public-facing > WAN port or ports and their associated IPsec tunnels. > > > > New: > > An Edge BGP Peer using BGP SD-WAN discovery advertises an SD-WAN Underlay > Route whose NLRI is encoded as specified in Section 2.2.1. The route > carries a Tunnel Encapsulation Attribute containing an SD-WAN Hybrid Tunnel > TLV to advertise the detailed properties associated with the public-facing > WAN port or ports and their associated IPsec tunnels. The SD-WAN Underlay > Route carries control-plane information describing an SD-WAN WAN port and > its tunnel properties; the SD-WAN NLRI is not itself installed as a route > for forwarding user traffic. > > > > Section 2.6.1 ( Error Handling for Tunnel Encapsulation Signaling) > > > > Old: > > The error handling for the tunnel encapsulation signaling (Encapsulation > Extended Community and Tunnel Encapsulation Attribute) in this document > follows the procedures specified in Section 13 of [RFC9012]. Unless > otherwise stated, malformed or unrecognized Sub-TLVs MUST be handled as > specified in [RFC9012]. This document defines new Sub-TLVs for Tunnel Type > 25 (SD-WAN-Hybrid), but does not alter the validation behavior established > in RFC 9012. > > > > New: > > For Client Routes, error handling for the Tunnel Encapsulation Attribute > follows Section 13 of [RFC9012]. For SD-WAN Underlay Routes using SAFI 74, > error handling for the Tunnel Encapsulation Attribute and its Sub-TLVs is > defined by this document. Sub-TLVs that are not applicable to SAFI 74 MUST > be ignored and MAY be removed when the route is propagated. > > > > Section 2.5: add the following sentence > > > > Normal BGP best-path selection applies when multiple paths for the same > SD-WAN NLRI are received; the SD-WAN Hybrid Tunnel TLV and its Sub-TLVs do > not participate in best-path selection. The RR reflects authorized SD-WAN > Underlay Routes within the SD-WAN administrative domain according to > [RFC4456]. > > > > (2) <major> There is no boundary between BGP and IPsec, so the document > specifies IPsec incorrectly > > An IDR document should specify BGP: the encodings, the validation BGP can > perform on them, the propagation rules. Everything else is domain-specific > and declared out of scope. RFC 9830 did that by the handoff to RFC 9256. > I am not sure if this document has equivalent to defer to - there is no > specified SD-WAN tunnel manager, no SD-WAN-side equivalent of the SRPM, > and no base specification for one. Having nowhere to put the IPsec > semantics, > the document has absorbed them, and it is in that absorbed material that > the defects cluster: algorithm fields with no code point space (line 953), > key fields with no stated algorithm, format or role (line 913), nonce > rules > misattributed to RFC 7296 (lines 685 and 981), and a rekey mechanism with > no lifecycle (line 584). > > The document is already reaching for the boundary and does not know it. > Section 3.2, at line 1674, says "This compatibility check is performed at > the IPsec layer, not by BGP." That is exactly the right statement. It is > made once, in an operational section, about one check, having already been > contradicted by pages of BGP-side IPsec validation. > > I must also point out a charter scope issue here when IDR documents start > to specify aspects beyond BGP for which we have other responsible WGs > (which > do not seem to have been consulted during this document's development). > > Remedy - draw the boundary in the abstract, without waiting for a companion > specification. The document does not need RFC 9256's equivalent to exist; > it > needs to name a local functional component and state the interface to it. > Concretely: > > * Name the component in Section 1.3 - perhaps "SD-WAN tunnel manager", > the > direct analogue of the SR Policy Module that RFC 9830 hands off to - > defined as the local process that consumes the received > underlay-route > information and establishes, rekeys and tears down the IPsec SAs. Its > internals are explicitly out of scope. > > * State that BGP performs syntactic validation only on the > IPsec-bearing > sub-TLVs: field lengths consistent with the stated Length, values > present where required, sub-TLV boundaries aligned. Nothing else. > > * State explicitly that BGP MUST NOT perform semantic verification of > IPsec parameters - algorithm suitability, transform compatibility, > key > validity, group support - and MUST NOT treat an advertisement as > malformed on those grounds. Section 5 of RFC 9830 has the sentence to > adapt. > > * State that the validated information is passed to the SD-WAN tunnel > manager, and that an advertisement whose parameters the component > cannot use is unusable rather than malformed, so it is still > propagated. > > * Then make the sub-TLV fields self-describing enough to survive the > handoff. This is where the boundary gets its support: if BGP is not > interpreting the AH/ESP algorithm values, the fields must carry > values > from a namespace the receiving component can resolve - which is the > IANA IKEv2 transform registries, not RFC 8221 (line 953). If BGP is > not interpreting Key 1 and Key 2, the encoding must still say what > they are so the component knows what it has been handed (line 913). > An > opaque field is fine; an ambiguous one is not. > > That last point is the important qualifier. The boundary reframes the > processing concerns, not the encoding ones: the length and range arithmetic > in the comments further below remains exactly as stated. > > One interaction to note. If the Section 3 policy problem (see the comment > at > line 1614) is resolved by assigning policy responsibility to a named > management-plane component, then that component and this one are perhaps > the same thing, and if so, the name could perhaps be - "SD-WAN Manager", > covering both tunnel lifecycle and policy. > > I don't know if such an abstraction was considered by the authors despite > some comments to that effect from Alvaro's RTGDIR review - that is, was > there > ever an effort to keep this document to BGP and push the IPsec processing > to > a separately specified component? My reading of the text is that it was > not, > and that the IPsec material accumulated into the document rather than > having > been placed there by a scoping decision; please correct me if I am wrong. > > That brings the question: Is the right long-term answer a short companion > document specifying the SD-WAN tunnel manager interface, with this > document > reduced to the BGP encodings and procedures? That is a larger structural > question than this review can settle, and it is the shape RFC 9830 and > RFC 9256 have. Note that the interface can be described in this document > without the companion existing - the five items above are the minimum, and > they are worth doing even if no companion is ever written. > > [Linda] In addressing your earlier comments, we have made changes to > explicitly separates the BGP and IPsec responsibilities. Section 2.3 states > that BGP only advertises IPsec-related parameters and does not establish, > negotiate, derive, or maintain IPsec SAs; those functions, including > algorithm validation, key derivation, SA state management, rekeying, and > packet protection, are performed by the IPsec implementation. Section 3.2 > further states that the received parameters are passed to the IPsec > function and that BGP does not perform IPsec negotiation, compatibility > checking, or SA establishment. > > > > We agree that the BGP validation boundary can be stated more explicitly: > BGP validates the encoding of the advertised Sub-TLVs, while semantic > compatibility and usability of the IPsec parameters are determined by the > IPsec implementation. We can make the following wording changes to clarify > this point. The individual encoding issues identified below are addressed > separately. > > > > Section 2.3 : clarify what BGP validates > > > > Old: > > The IPsec SA Property Sub-TLVs defined in this section are used by BGP > only to advertise IPsec-related parameters associated with SD-WAN Hybrid > Tunnels. BGP does not establish, negotiate, derive, or maintain IPsec SAs. > The creation and operation of an IPsec SA, including algorithm validation, > key derivation, SA state management, rekeying, and packet protection, are > performed by the IPsec implementation according to [RFC4301] and, when > IKEv2 is used, [RFC7296], together with local policy. > > > > New: > > The IPsec SA Property Sub-TLVs defined in this section are used by BGP > only to advertise IPsec-related parameters associated with SD-WAN Hybrid > Tunnels. BGP does not establish, negotiate, derive, or maintain IPsec SAs. > BGP validation of these Sub-TLVs is limited to their encoding and syntactic > validity. The creation and operation of an IPsec SA, including algorithm > validation, key derivation, SA state management, rekeying, and packet > protection, are performed by the IPsec implementation according to > [RFC4301] and, when IKEv2 is used, [RFC7296], together with local policy. > > > > Section 3.2 : > > > > Old: > > BGP itself does not perform IPsec negotiation, compatibility checking, or > SA establishment. > > > > New: > > BGP itself does not perform IPsec negotiation, compatibility checking, or > SA establishment. If the IPsec implementation cannot use the advertised > parameters, this does not by itself make the BGP advertisement malformed. > > > (3) <major-editorial> Section 2 interleaves the two route types; split it > into three > > Section 2 runs into almost 2/3rds of this almost 50 page document and > alternates between the two route types without a structural boundary: > Section 2.1 is the SD-WAN Hybrid Tunnel TLV, covering both, with Table 1 > as the only place the applicability split is recorded; Section 2.2 is the > new SAFI and its NLRI, underlay only; Section 2.3 is the IPsec and port > sub-TLVs, mostly underlay and some valid for both; Section 2.4 is > client-route procedures; Section 2.5 is underlay-route procedures; and > Section 2.6 is error handling for both, restating parts of Sections 2.4 > and 2.5. > > This makes it really very hard for a reader who wants to implement the new > SAFI - they must read Section 2.1, skip Section 2.4, read Sections 2.2, > 2.3 and 2.5, then filter Section 2.6 - and must work out for themselves, > at every step, which half of Sections 2.1 and 2.6 applies. That the two > procedure sections have drifted apart, and that a client-route requirement > has migrated into the underlay procedure, are both symptoms of this layout > rather than independent mistakes. I found this extremely hard to work > through > and I believe so did some other directorate reviewers. > > Remedy - restructure Section 2 into three top-level sections. > > * The SD-WAN SAFI: encoding and procedures. Everything that concerns > underlay routes and nothing else - the applicability statement from > issue (1), the NLRI format and validation, the Next Hop encoding, the > SD-WAN Hybrid Tunnel TLV and sub-TLVs as they appear on this SAFI, > the > underlay-route procedures, and this SAFI's error handling. > Self-contained: an implementer building only the underlay half should > not need to read further. > > * Applicability to the overlay SAFIs. How 1/1, 2/1, 1/128 and 2/128 > signal that a route is to be carried over an SD-WAN Hybrid Tunnel - > the Encapsulation Extended Community option, the Tunnel Encapsulation > attribute option, and the trade-off between them (currently Sections > 2.1.2 and 2.4). This section states explicitly that RFC 9012's > procedures apply unchanged here, which is the other half of issue (1) > and resolves two of the detailed comments below by construction: with > the client-route rules written in their own section, "treat an absent > Tunnel Egress Endpoint as AF 0" and "process only the first instance > of any sub-TLV" become visibly RFC 9012 violations rather than > plausible general statements. > > * Interaction between the two. The correlation procedures that are > currently scattered across Sections 2.1.2, 2.4.1, 2.4.3, 2.5 and 3.1: > how a receiver binds an overlay route to the underlay routes that can > carry it (Node ID / next-hop matching, SD-WAN-Color against the Color > Extended Community), what happens when no underlay route matches, and > the ordering and timing questions - an overlay route arriving before > its underlay routes, or its underlay routes being withdrawn while it > remains. Those last two are not covered anywhere at present, and this > section is where the gap becomes visible. > > Three consequential benefits beyond readability. It gives the colour > correlation mechanism a single home, which is where the three-way muddle > (see > line 362) has to be resolved. It makes the terminology sweep in issue (4) > mechanical rather than judgemental. And it directly answers the structural > criticism running through the RTGDIR, OPSDIR and INTDIR early reviews. > Those reviewers asked for restructuring twice and received edits instead; > this is the restructuring. I am merely re-emphasizing what others have > stated > but also offering concrete suggestions on how to go about this. > > Within the first two of the three sections, please keep RFC 9012's own > ordering discipline - encoding before procedures, so the reader has the > construct before the behaviour. > > Sequencing: this split should be done before the trying to resolve most of > the detailed comments related to section 2 below. Many of those is a > contradiction between two sections that the split either eliminates or > makes them easier to resolve. > > > > [Linda] This concern has been substantially addressed in the changes in > addressing your earlier comments. Section 2 now explicitly identifies the > two advertisement types and their terminology, Section 2.4 contains the > Client Route procedures, Section 2.5 contains the SD-WAN Underlay Route > procedures, and Section 2.6 distinguishes the corresponding error-handling > rules. The revised text also now states explicitly that Client Routes > follow RFC 9012, while SAFI 74 is outside the applicability scope defined > by RFC 9012 and is specified by this document. > > > > With these changes we believe a full restructuring into three new > top-level sections is no longer necessary. > > > > (4) <major> The two route types have no consistent names > > Designations used in the document for the routes on the new SAFI 74 - > many of them: "SD-WAN NLRI", "SD-WAN Underlay NLRI", "SD-WAN Underlay > UPDATE", "SD-WAN Underlay Tunnel Update", "underlay route(s)", "SD-WAN > Hybrid NLRI" ... and I give up now. This continues even in the IANA > considerations. > > For the routes on the existing AFI/SAFIs: "client route(s)" predominantly, > plus "client route reachability" and "customer prefixes". > > The most consequential of these is the Section 6.1 heading, which names the > SAFI carrying underlay routes the Overlay SAFI - see the comments at lines > 1839 and 1842. > > Separately, "underlay" qualifies four different objects with no distinction > drawn between them: "underlay route" (the NLRI), "underlay tunnel" > (the tunnel between two WAN ports), "underlay link", "underlay network". > Section 2.5.4 collides with itself: the heading reads "Multiple Tunnels > attached to One Underlay Route" and the body three lines later reads > "An underlay tunnel passes through only one SD-WAN Hybrid Tunnel". > > Remedy. Define exactly two terms in Section 1.3 and use them without > variation throughout. I suggest: > > * client routes - routes on AFI/SAFI 1/1, 2/1, 1/128 or 2/128 that are > to be forwarded over an SD-WAN Hybrid Tunnel; > > * SD-WAN SAFI routes - the typed NLRI on AFI/SAFI 1/74 or 2/74 > advertising the properties of a WAN port and its associated tunnel > and > IPsec parameters. > > Then sweep the document: replace every one of those designations with > "SD-WAN SAFI routes", retaining "SD-WAN NLRI" only where the encoding > construct itself is meant (the figures and field definitions in Section > 2.2.1); rename Section 6.1 to "SD-WAN SAFI" and ask IANA to correct the > registry name; and reserve "underlay tunnel", "underlay link" and "underlay > network" for the physical and logical objects, defining each in Section > 1.3. > While sweeping, also s/distributed to other BGP peers/propagated and > s/distributed to other peers/propagated (lines 547-548, 1585) - see the > comment at line 448. > > This sweep is best done after the restructuring in issue (3) rather than > before, since the split puts the two route types in separate sections and > makes a term used in the wrong one immediately visible. > > [Linda] This concern has been substantially addressed by the changes in > addressing your earlier comments. Section 2 now defines two consistent > route terms: “Client Route” for AFI/SAFI 1/1, 2/1, 1/128, and 2/128, and > “SD-WAN Underlay Route” for AFI/SAFI 1/74 and 2/74. The term “SD-WAN NLRI” > is reserved for the NLRI encoding itself. > > > > We will make a final terminology sweep to remove remaining older > designations, correct the Section 6.1 heading, and keep “underlay tunnel”, > “underlay link”, and “underlay network” for the corresponding non-route > objects. > > > > Section 1.3 Add the two route terms: > > Client Route: A route advertised using AFI/SAFI 1/1, 2/1, 1/128, or 2/128 > that is associated with an SD-WAN Hybrid Tunnel. > > > > SD-WAN Underlay Route: A route advertised using AFI/SAFI 1/74 or 2/74 > whose SD-WAN NLRI identifies a WAN port or ports and whose associated > Tunnel Encapsulation Attribute advertises tunnel-related properties. > > > > Section 2.2.1 heading > > > > Old: > > 2.2.1. NLRI for SD-WAN Underlay Tunnel Update > > > > New: > > 2.2.1. NLRI for SD-WAN Underlay Route > > > > Section 2.5.1 heading > > > > Old: > > SD-WAN Hybrid NLRI without Encapsulation Extended Community > > > > New: > > SD-WAN Underlay Route without Encapsulation Extended Community > > > Section 6.1 heading > > > > Old: > > 6.1. SD-WAN Overlay SAFI > > > > New: > > 6.1. SD-WAN SAFI > > > > Section 2.5.4 > > Old: > > 2.5.4. Multiple Tunnels attached to One Underlay Route > > > > New: > > 2.5.4. Multiple Tunnels Associated with One SD-WAN Underlay Route > > > (5) <major> No applicability or deployment considerations section: text > suggestions have been provided > > The document positions BGP as a mechanism for SD-WAN secure tunnel > establishment without stating anywhere what that choice assumes, what was > not analysed, or that alternatives exist. A reader encountering this > specification has no way to learn any of it from the document or its > related > BESS document. > > This is not a request to argue against the approach, and it is explicitly > not a request for a comparative analysis - writing one would be substantial > work and is not what this document is for (neither is it in IDR WG > charter). > This is a request that the document be accurate about its own boundaries, > prominently enough that the accuracy reaches a reader. > > Every statement in the suggested text is a statement about what this > document > does and does not contain. None of them is a claim about the technology, so > none is arguable on technical grounds: the document either analysed RR > compromise or it did not, either evaluated alternatives or did not. The > deployment assumptions the mechanism depends on - a single administrative > authority, a trusted RR holding every participant's security parameters, a > policy-constrained walled garden - are currently stated nowhere a deployer > would find them, and a deployment that violates them has a serious security > exposure the document gave no warning of. Section 2.6.2, at line 1590, > already requires local policy to create a "walled garden", in an > error-handling subsection, with the term undefined. > > Let me share some specifics to help construct a 'Deployment Considerations > and Applicability Statement' section in the document: > > * A new top-level section immediately following the Introduction. > > * A sentence in the first or second paragraph of Section 1 pointing to > it. > > * A pointer from Security Considerations (Section 5) to Section > [APPLICABILITY].2, so that security reviewers reach it. > > > Here is something to help get started on the suggested new top-level > section: > > [N]. Applicability and Deployment Considerations > > This document specifies BGP signalling mechanisms for advertising > the properties of SD-WAN edge nodes and their underlay tunnels, > and for conveying the parameters used to establish IPsec security > associations between SD-WAN edge nodes. This section states the > deployment context that those mechanisms assume, and identifies > analysis that, being out of scope, this document does not perform. > > [N].1. Deployment context > > The mechanisms specified in this document assume all of the > following. They are not specified for use in deployments where any > of these does not hold. > > * All participating SD-WAN edge nodes and all participating BGP > Route Reflectors are under a single administrative authority, > and that authority controls the configuration and the policy of > every participant. > > * The BGP Route Reflector is a trusted component of that > authority's SD-WAN controller. Every participating edge node > relies on the Route Reflector to receive, and to correctly > redistribute without modification, the tunnel and security > parameters advertised by every other participating edge node. > > * BGP sessions between edge nodes and the Route Reflector are > constrained by local policy to a closed set of authorised > participants. This constraint is referred to elsewhere in this > document as a "walled garden" (see Section <add a new and short > subsection as N.1.1 to describe this>), and the properties > described in this document depend on it. > > * The cryptographic algorithms, transforms and security profiles > in use are provisioned consistently across participants by the > SD-WAN controller or management system. The mechanisms in this > document perform no negotiation of these parameters; a > participant whose provisioned parameters do not match those of > its peer will not establish a security association with that > peer. > > These mechanisms are not specified for use between mutually > distrusting parties, across administrative boundaries, or in any > deployment in which the Route Reflector is not trusted with the > tunnel and security parameters of all participants. > > [N].2. Analysis out of scope of this document > > The following have not been analysed in this document as they are > outside its scope. Implementers and deployers are advised to > consider them before adopting these mechanisms. > > * Comparison with alternative mechanisms. Other mechanisms exist > for establishing IPsec security associations between SD-WAN > edge nodes, including the Internet Key Exchange Protocol > Version 2 (IKEv2) [RFC7296]. This document does not evaluate > those mechanisms, does not compare them with the mechanisms > specified here, and makes no claim that the mechanisms > specified here are preferable to them in any respect. The > selection of a mechanism for a given deployment is a matter for > the deployer. > > * Consequences of Route Reflector compromise. The tunnel and > security parameters of all participating edge nodes, including > any key material carried in the Sub-TLVs defined in Section > [SUBTLVS], are received and redistributed by the Route > Reflector. The consequences of a compromised, misconfigured or > coerced Route Reflector have not been analysed in this > document. > > * Forward secrecy. The forward secrecy properties of security > associations established using parameters distributed by BGP > have not been characterised in this document. These properties > differ from those of mechanisms in which the two endpoints of a > security association perform ephemeral key agreement directly > with one another. > > * Control plane load and convergence. The volume of BGP UPDATE > messages generated by security association rekeying at scale, > and its effect on BGP convergence and on Route Reflector > dimensioning, have not been analysed in this document. Section > [OPERATIONAL] provides operational guidance but no quantitative > analysis. > > * Behaviour under partial or reordered delivery. BGP does not > guarantee that successive advertisements for the same NLRI are > delivered to every recipient, or that they are delivered in the > order in which they were originated. The behaviour of the > mechanisms in this document when rekey advertisements are lost, > coalesced or reordered has not been analysed. > > * Interaction with other mechanisms operating on the same > security associations. The behaviour of these mechanisms in a > deployment where security associations between the same pair of > edge nodes may also be established or modified by another > mechanism has not been analysed. > > Now, this section can cover more aspects than the ones suggested above - > this > is something that I accumulated through the review. There are a few other > comments/suggestions in the detailed review that probably end up adding > text here: (a) the Section 3 policy problem (line 1614), if resolved > by reframing it as deployment considerations, puts the policy expectations > there in non-normative terms; (b) the transport-security requirement > currently > in the Introduction (line 148) moves there, normatively; and (c) the > statement > that the mechanisms are not RR-specific (line 179) moves there too. I let > authors decide how to organize all these as subsections (similar to the > walled-garden thing) under N.1 or N.2. > > This makes it possible to put cross-references from some challenging and > problematic text in the document to the appropriate section/subsection > without repeating or ignoring those aspects. > > And finally for this point, some text suggestions for referencing this new > section: > > From Section 1, first or second paragraph: > > The deployment context that these mechanisms assume, and the > analysis that this document does not perform, are described in > Section [APPLICABILITY]. Readers considering these mechanisms for > deployment are advised to refer to that section. > > From Section 5, Security Considerations, as a new paragraph: > > Section [APPLICABILITY].2 enumerates security-relevant analysis > that this document does not perform, including the consequences of > compromise of the Route Reflector and the forward secrecy > properties of security associations established using parameters > distributed by BGP. Those items are not addressed in this section. > > I hope this sets up the narrow scope for this document and clarifies > clearing > things that are out of scope which others (especially from SEC area) may > be looking for. > > [Linda] In addressing your earlier comments, the Introduction and Security > Considerations now identify the RR as part of the SD-WAN Controller and > describe its authorization role, Section 2.3 explicitly separates BGP > signaling from IPsec processing, and Section 2.6.2 identifies the > policy-constrained “walled garden” deployment assumption. > > > > We agree that the deployment assumptions and the analysis that is outside > the scope of this document should be made more visible. Rather than adding > a new top-level section, we can add concise applicability text in the > Introduction, define the “walled garden” deployment assumption in Section > 1.3, and add a short statement in the Security Considerations identifying > the major security-related topics that this document does not analyze. > > > > Section 1 — Introduction > > > > Add after the paragraph that defines the RR as part of the SD-WAN > Controller. > > > > Old: > > In the context of this document, BGP Route Reflector (RR) is the component > of the SD-WAN Controller system that receives the BGP UPDATE from SD-WAN > edges and in turn propagates the information to the intended peers that are > authorized to communicate via the SD-WAN overlay network. > > > > New: > > In the context of this document, BGP Route Reflector (RR) is the component > of the SD-WAN Controller system that receives the BGP UPDATE from SD-WAN > edges and in turn propagates the information to the intended peers that are > authorized to communicate via the SD-WAN overlay network. > > > > The mechanisms specified in this document are intended for a controlled > SD-WAN environment in which the participating SD-WAN edge nodes and RRs > operate under a common administrative authority and are constrained by > policy to an authorized set of participants. They are not specified for use > between mutually distrusting administrative domains. > > > > Add the definition of “Walled Garden” to the Section 1.3 (Terminology) > > Walled Garden: A controlled SD-WAN deployment in which participating > SD-WAN edge nodes and RRs are authorized and managed under a common > administrative authority, and BGP sessions and SD-WAN tunnel advertisements > are constrained by local policy to those authorized participants. > > > > Last sentence of Security Considerations: > > Old: > > This specification does not define deployments across fully untrusted > networks, but if such environments are used, strong transport security > becomes a MUST, and additional validation mechanisms may be required to > maintain SD-WAN tunnel and routing integrity. > > > > New: > > This specification does not define deployments across fully untrusted > networks, but if such environments are used, strong transport security > becomes a MUST, and additional validation mechanisms may be required to > maintain SD-WAN tunnel and routing integrity. This document does not > analyze the consequences of compromise or misconfiguration of the > RR/Controller, the forward-secrecy properties of IPsec SAs established > using parameters distributed by BGP, the control-plane impact of > large-scale IPsec rekeying, or provide a general comparison with > alternative mechanisms for SD-WAN discovery or IPsec SA establishment. > > > > > (6) <major> Repetition and drift between the four validation sections > > Sections 2.1.1 (the summary), 2.4.2, 2.5.2 and 2.6 all state overlapping > validation procedures, and they seem to have drifted apart. Several of the > detailed comments below are largely the same procedure being stated in > two or three places with different content. This is not an editorial thing > as it is not just about duplication but also contradictions that make > corrections/updates that much more harder. > > This should get largely resolved by the split suggested in (3) above, which > puts each validation procedure in the section that owns it and removes the > duplication. One statement of each validation procedure, in the section > that > owns the route type it applies to, with cross-references rather than > restatements. > > [Linda] In addressing your earlier comments, Sections 2.4 and 2.5 now > separately define the procedures for Client Routes and SD-WAN Underlay > Routes, and Section 2.6 separately defines the corresponding error handling. > > We agree that Section 2.1.1 should not independently restate > route-specific validation procedures. We will make it a short common > validation overview and refer to Sections 2.4.2 and 2.5.2 for the > route-specific procedures, with Section 2.6 remaining the authoritative > error-handling section. > > > > Section 2.1.1 (Summary of Validation Procedure) > > > > Old: > > The validation procedure for the SD-WAN Hybrid tunnel TLV has the > following steps > > 1. Validate tunnel TLV encoding and Sub-TLV encoding (per [RFC9012] > and sections 2.2 and 2.3 of this draft) > 2. Check that Sub-TLVs are valid for NLRI type in route (see above > summarized in Table 1) and ignore invalid Sub-TLVs (per [RFC9012]) > 3. Validate that the tunnel egress endpoint is a reachable IP address > based on the BGP next-hop resolution rules. > 4. Check if both the Color Sub-TLV and Extended Community for Color > exist, if so prefer the Extended Community for Color. > > After the SD-WAN Hybrid Tunnel TLV has been validated, the SD-WAN Peer > processes based on the NLRI as (underlay route or client route) as > described in sections 2.4 and 2.5. Prior to installing a route with a > SD-WAN tunnel as an active route, the BGP peer installing the route MUST > also validate that the SD-WAN tunnel and underlay links are active. > > > > New: > > The SD-WAN Hybrid Tunnel TLV and its Sub-TLVs MUST first be validated for > correct encoding and applicability as specified in this section and Section > 2.3. Route-specific validation procedures are specified in Section 2.4.2 > for Client Routes and Section 2.5.2 for SD-WAN Underlay Routes. Error > handling is specified in Section 2.6. > > > > After the SD-WAN Hybrid Tunnel TLV has been validated, the receiving BGP > speaker processes it according to the applicable route procedure. > > > > Section 2.6 > > > > Old: > > The Error handling for SD-WAN VPN support has two components: error > handling for Tunnel Encapsulation signaling (Encapsulation Extended > Community and Tunnel Encapsulation Attribute) and error handling for SD-WAN > Underlay Routes. > > > > New: > > This section specifies the error-handling procedures for validation > failures identified by the procedures in Sections 2.4 and 2.5. It covers > Tunnel Encapsulation signaling and SD-WAN Underlay Route errors. > > > (7) <question> Was the discovery/keying split ever considered? > > The document's own stated motivation for the design is discovery scaling > (lines 1028-1034). That argument supports carrying reachability, NAT > properties, port characteristics and crypto capabilities in BGP. It does > not > by itself support carrying key material - those are separable, and a design > that carried the first and left SA establishment to an existing > key-management protocol would be a materially different document. RFC 7018, > which this document already carries as a reference and does not cite, > frames > the auto-discovery-VPN problem that split addresses. > > So, a question for the WG: was that split - BGP for discovery, an existing > protocol for keying - considered? If it was and the WG chose otherwise, a > pointer to that discussion addresses the question and should go in the > shepherd writeup. If it was not, that fact belongs in the applicability > statement of issue (5), as part of what was not analysed. This is just > something that I expect to come up during IESG Evaluation and it is better > if it were addressed in the document (perhaps in the applicability > analysis). > > > [Linda] The intent of this document is not to define a key-management > mechanism. The IPsec SA Property Sub-TLVs defined in this section specify > encodings that allow BGP UPDATE messages to carry IPsec-related information > to authorized peers. > > How the advertised IPsec parameters are generated, negotiated, or > provisioned is outside the scope of this document. They may be provided by > an SD-WAN controller or management system, IKEv2, or another mechanism. > This document only defines how that information is carried in BGP UPDATE > messages; BGP does not establish, negotiate, derive, or maintain IPsec SAs. > > > > Wording change to make it clear: > > Section 2.3: > > > > Old: > > The IPsec SA Property Sub-TLVs defined in this section are used by BGP > only to advertise IPsec-related parameters associated with SD-WAN Hybrid > Tunnels. > > > > New: > > The IPsec SA Property Sub-TLVs defined in this section specify encodings > that allow BGP UPDATE messages to carry IPsec-related parameters associated > with SD-WAN Hybrid Tunnels to authorized peers. > > > > > DETAILED REVIEW > > The rest of the comments are provided inline in the idnits output: > > > 14 BGP UPDATE for SD-WAN Edge Discovery > 15 draft-ietf-idr-sdwan-edge-discovery-29 > > <major> The title does not describe what the document specifies. I suggest > "Advertising SD-WAN Edge Node and Underlay Tunnel Properties in BGP" - > please let me know if you don't agree. My biggest concern is that this is > not about BGP UPDATE messages! > > [Linda] How about “SD-WAN Edge and Underlay Tunnel Discovery Using BGP” as > the title? > > > 19 The document describes the BGP mechanisms for SD-WAN (Software > 20 Defined Wide Area Network) edge node attribute discovery. These > 21 mechanisms include a new tunnel type and sub-TLVs for the BGP Tunnel- > 22 Encapsulation Attribute (RFC9012) and set of NLRI (network layer > 23 reachability information) for SD-WAN underlay information. > > <minor> How about the following suggestion to make the abstract clear? > > CURRENT > The document describes the BGP mechanisms for SD-WAN (Software > Defined Wide Area Network) edge node attribute discovery. These > mechanisms include a new tunnel type and sub-TLVs for the BGP > Tunnel-Encapsulation Attribute (RFC9012) and set of NLRI (network > layer reachability information) for SD-WAN underlay information. > > SUGGEST > This document specifies BGP mechanisms for advertising the > attributes of SD-WAN (Software-Defined Wide Area Network) edge > nodes. These mechanisms comprise a new tunnel type and associated > Sub-TLVs for the BGP Tunnel Encapsulation Attribute, and a new > Subsequent Address Family Identifier (SAFI) carrying a typed NLRI > for SD-WAN underlay tunnel information. > > [Linda] Thanks for the suggestion. We can take your advice and change the > Abstract to the following: > > This document specifies BGP mechanisms for SD-WAN (Software-Defined Wide > Area Network) edge node attribute discovery. These mechanisms comprise a > new tunnel type and associated Sub-TLVs for the BGP Tunnel Encapsulation > Attribute, and a new Subsequent Address Family Identifier (SAFI) carrying a > typed NLRI for advertising SD-WAN underlay tunnel information. > > > > 27 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", > 28 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this > 29 document are to be interpreted as described in [RFC2119] [RFC8174] > 30 when, and only when, they appear in all capitals, as shown here. > > 271 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", > 272 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and > 273 "OPTIONAL" in this document are to be interpreted as described in BCP > 274 14 [RFC8174] when, and only when, they appear in all capitals, as > 275 shown here. > > <major> BCP 14 boilerplate is duplicated and neither of them is correct. > > > > [Linda] We will retain a single copy near the beginning of the document > and replace it with the exact boilerplate specified by RFC 8174. > > Old: > > The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", > > "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this > > document are to be interpreted as described in [RFC2119] [RFC8174] > > when, and only when, they appear in all capitals, as shown here. > > > > New: > > The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", > > "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and > > "OPTIONAL" in this document are to be interpreted as described in > > BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all > > capitals, as shown here. > > > > 148 BGP [RFC4271] serves as the control plane for these SD-WAN > 149 deployments. For SD-WAN implementations using BGP, the BGP Speaker > 150 SHOULD establish a secure transport connection with each SD-WAN edge > 151 operating under the same BGP control plane instance. This secure > 152 transport SHOULD support authentication and integrity, but MAY also > 153 support confidentiality. The BGP speaker can be an IBGP peer or a > 154 RR. > 156 SD-WAN deployments SHOULD use TCP-AO [RFC5925] to provide > 157 authentication and integrity between the RR and each BGP Peer. Other > 158 mechanisms that can provide authentiation, integrity, and > 159 confidentiality are in the process of being defined by the IETF. > 160 Examples of these mechanisms are: BGP over QUIC [draft-retana-idr- > 161 bgp-quic], BGP over TLS/TCP [draft-wirtgen-bgp-tls], or Securing > 162 BGPv4 using IPsec [draft-ward-bgp-ipsec]. SD-WAN deployments MAY use > 163 mechanisms that support authentication, integrity, and > 164 confidentiality. > > <major> So many BCP 14 keywords in the Introduction, stating requirements > that are repeated in different ways elsewhere at two further strengths - > Section 4 at lines 1780-1782 makes secure transport RECOMMENDED, and > Section > 5 at lines 1815-1816 makes it optional. This is contradictions. > > As suggested, please move these out into the applicability and deployment > considerations section. They are a basic requirement of the solution - the > mechanism does not work safely without a secure transport - and a basic > requirement belongs in the body of the document. > > Suggest: state the transport-security requirement once, normatively, in > the > new section; delete the Section 1 statements and replace them with a > non-normative sentence pointing at it; delete Section 4's RECOMMENDED > restatement; and rewrite Section 5 to reference the requirement and > analyse > what happens when it is not met, rather than to restate it at a weaker > strength. > > [Linda] We can make the following changes to consolidate the normative > requirement in one place and remove the inconsistent restatements. The > Introduction will state the requirement, Section 4 will refer to it rather > than restate it, and Section 5 will describe the security consequences if > the requirement is not met. > > > > Section 1 (Introduction) > > Old: > > BGP [RFC4271] serves as the control plane for these SD-WAN deployments. > For SD-WAN implementations using BGP, the BGP Speaker SHOULD establish a > secure transport connection with each SD-WAN edge operating under the same > BGP control plane instance. This secure transport SHOULD support > authentication and integrity, but MAY also support confidentiality. The BGP > speaker can be an IBGP peer or a RR. > > > > SD-WAN deployments SHOULD use TCP-AO [RFC5925] to provide authentication > and integrity between the RR and each BGP Peer. Other mechanisms that can > provide authentiation, integrity, and confidentiality are in the process of > being defined by the IETF. Examples of these mechanisms are: BGP over QUIC > [draft-retana-idr-bgp-quic], BGP over TLS/TCP [draft-wirtgen-bgp-tls], or > Securing BGPv4 using IPsec [draft-ward-bgp-ipsec]. SD-WAN deployments MAY > use mechanisms that support authentication, integrity, and confidentiality. > > > > New: > > BGP [RFC4271] serves as the control plane for these SD-WAN deployments. > BGP sessions used to exchange the SD-WAN information defined in this > document MUST provide peer authentication and integrity protection. TCP-AO > [RFC5925] is one mechanism that provides these properties. Other mechanisms > that provide equivalent or stronger protection, including confidentiality, > MAY also be used. The BGP speaker can be an IBGP peer or an RR. > > > > Section 4 (Manageability Considerations) > > Old: > > The use of secure transport connections (e.g., BGP over IPsec/TLS) is > RECOMMENDED to ensure manageability in untrusted environments. > > > > New: > > The secure-transport requirements for BGP sessions carrying the SD-WAN > information defined in this document are specified in Section 1. > > > > Section 5 (Security Considerations) > > > > Old: > > However, in closed or "walled garden" deployments, where SD-WAN edge nodes > and the RR (SD-WAN controller) are within a trusted, secured environment > (e.g., a private MPLS backbone or physically secured enterprise network), > the risk of interception or tampering is significantly reduced. In such > cases, the use of secure transport is optional, and operators may choose to > run BGP over standard TCP, based on their internal risk assessment. > > > > New: > > In closed or "walled garden" deployments, where SD-WAN edge nodes and the > RR are within a trusted and secured environment, the risk of interception > or tampering may be reduced. However, the peer-authentication and integrity > requirements specified in Section 1 still apply. > > > > > 179 While the BGP RR functionin the SD-WAN controller scenario could be > 180 implemented with targeted BGP sessions control by policy and secured > 181 by security features that supply authentication, integrity, and > 182 confidentiality, the authors chose to limit the descriptions to the > 183 BGP RR. This choice is due to the current status of BGP security > 184 issues and not the BGP peer exchanges described in this text. Due to > 185 this decision, the BGP interactions are not strictly limited to BGP > 186 RR features > > <major> This paragraph comes across as an authorial commentary about a > drafting > decision rather than specification. It is also the only place the document > says the mechanisms are not RR-specific, which is information the reader > needs - and it contradicts the RR-as-trust-anchor point by disclaiming the > centring Section 1 has just established. If there is a deployment model > without > the controller as the RR (i.e.. iBGP full mesh), please specify how the > procedures work, if not, then suggest to remove this. > > > > [Linda] Its intent is to state that the deployment model specified in this > document is RR-based, with the RR acting as part of the SD-WAN Controller > and providing the central point for authorization, policy, and controlled > propagation of SD-WAN information. We can make the following changes to > state this directly and remove the discussion of alternative BGP peering > arrangements. > > Section 1 > > Old: > > While the BGP RR functionin the SD-WAN controller scenario could be > implemented with targeted BGP sessions control by policy and secured by > security features that supply authentication, integrity, and > confidentiality, the authors chose to limit the descriptions to the BGP RR. > This choice is due to the current status of BGP security issues and not the > BGP peer exchanges described in this text. Due to this decision, the BGP > interactions are not strictly limited to BGP RR features > > > > New: > > The deployment model specified in this document is based on a BGP Route > Reflector that is part of the SD-WAN Controller. The RR provides the > central point for applying authorization and policy and for propagating > SD-WAN route and tunnel information to authorized peers. > > > > 156 SD-WAN deployments SHOULD use TCP-AO [RFC5925] to provide > 157 authentication and integrity between the RR and each BGP Peer. Other > 158 mechanisms that can provide authentiation, integrity, and > 159 confidentiality are in the process of being defined by the IETF. > > <major> This makes [RFC5925] a normative reference. > > > > [Linda] Changed [RFC5925] a normative reference > > > > 160 Examples of these mechanisms are: BGP over QUIC [draft-retana-idr- > 161 bgp-quic], BGP over TLS/TCP [draft-wirtgen-bgp-tls], or Securing > 162 BGPv4 using IPsec [draft-ward-bgp-ipsec]. > > 1798 over new IETF technologies (e.g. BGP over QUIC > [draft-retana-idr-bgp- > 1799 quic], BGP over TLS/TCP [draft-wirtgen-bgp-tls], or Securing BGPv4 > 1800 using IPsec [draft-ward-bgp-ipsec]) which provide authentication, > 1801 confidentiality, and Integrity. > > 730 Contextual Note 1: The ID Length is set to 4 octets, but ID in > 731 [draft-ietf-bess-secure-evpn-02] under development in the IETF > > <major> Three individual (non-WG) drafts, cited twice each, with no > references! > Citing them as "in the process of being defined by the IETF" is problematic > since none of them can be relied on by this specification and hence quite > meaningless. For confidentiality, the only available mechanism is to use > IPSec > as a tunnel. This topic was raised, discussed, and addressed during the > review > of the BESS SD-WAN document. Those changes need to propagate into this > document > where they are absolutely a MUST have for this solution. Please correct me > if > I am wrong. > > > > [Linda] This concern has already been addressed in the changes made in > addressing your earlier comments. The Introduction no longer cites the > three individual BGP transport-security drafts. It now states a single > requirement that BGP sessions carrying the SD-WAN information defined in > this document provide peer authentication and integrity protection, with > TCP-AO [RFC5925] given as one mechanism. Other mechanisms providing > equivalent or stronger protection may also be used. > > We will also remove the remaining references to those individual drafts > from the Security Considerations. > > > > Here are the wording changes: > > > > Section 5 (Security Considerations): Remove only the obsolete > individual-draft examples. > > > > Old: > > Some network operators running SD-WAN edge over public or untrusted > networks desire confidentiality as well as authentication and integrity. In > this case, network operators can consider running BGP over new IETF > technologies (e.g. BGP over QUIC [draft-retana-idr-bgp-quic], BGP over > TLS/TCP [draft-wirtgen-bgp-tls], or Securing BGPv4 using IPsec > [draft-ward-bgp-ipsec]) which provide authentication, confidentiality, and > Integrity. > > > > New: > > Some network operators running SD-WAN edge over public or untrusted > networks may require confidentiality in addition to authentication and > integrity. In such deployments, a mechanism providing confidentiality, such > as IPsec [RFC4301], can be used to protect the path between the SD-WAN edge > and the RR. > > > > 291 Advertise Underlay Routes (SD-WAN NLRIs) with SD-WAN Hybrid Tunnel > 292 Encapsulation Attribute: A BGP speaker advertises SD-WAN NLRI for > 293 IPv4/IPv6 (AFI/SAFI 1/74 or 2/74) with the NEXT_HOP attribute set > 294 to the local address of the advertising speaker, and includes a > > 421 describe the processing. The SD-WAN NLRI is originated using the > 422 loopback address of the C-PE. > > 332 (IANA assigned). The NextHop Field in the BGP update indicates > 333 the tunnel egress endpoint and this field SHOULD be set to the > 334 BGP Peer Address for the SD-WAN Peer. > > <major> A few problems with the Next Hop, and the first is the more > serious. > > (a) The encoding is genuinely absent. RFC 4760 requires each AFI/SAFI > specification to define the format of the Next Hop Network Address field in > MP_REACH_NLRI. For 1/74 and 2/74 this document does not, and because the > SD-WAN SAFI is outside RFC 9012's scope (issue (1) above) there is no other > document that could supply it. Unstated: the permitted lengths of the field > for each AFI; whether an IPv6 next hop may be carried for AFI 1/74, in the > manner of RFC 8950; whether a link-local address may accompany a global > IPv6 > next hop for 2/74, and if so in what order; and what a receiver does with a > length it does not recognise. This was pointed out in my RTGDIR early > review, > still open. > > (b) The semantics are stated in at least four places, with three different > answers. "The local address of the advertising speaker", "the loopback > address of the C-PE" and "the BGP Peer Address for the SD-WAN Peer" are > three different specifications. The first is indeterminate - an edge node > with several WAN ports and a loopback has several local addresses. The > third > is at SHOULD strength, which conflicts (c) below. > > > > [Linda] The changes in addressing your earlier comments now defines the > SAFI 74 next-hop procedures, but the MP_REACH_NLRI Next Hop encoding still > needs to be explicit and the existing descriptions should be made > consistent. We can make the following changes to specify the Next Hop > length for AFI/SAFI 1/74 and 2/74 and consistently identify the Next Hop > with the advertising SD-WAN edge, normally its loopback/SD-WAN Node ID. > > > > Section 2.2.1: Add the following paragraph after the first paragraph that > introduces SAFI 74: > > For AFI/SAFI 1/74, the MP_REACH_NLRI Next Hop Network Address field MUST > contain a 4-octet IPv4 address. For AFI/SAFI 2/74, it MUST contain a > 16-octet IPv6 address. The Next Hop identifies the advertising SD-WAN edge > and SHOULD be the same address as the SD-WAN Node ID, normally the loopback > address. > > > Section 2 (Advertise SD-WAN Underlay Routes) > > Old: > > Advertise SD-WAN Underlay Routes: A BGP speaker advertises SD-WAN Underlay > Routes using AFI/SAFI 1/74 or 2/74. The NEXT_HOP is set to a local address > of the advertising SD-WAN edge node, and the UPDATE includes a Tunnel > Encapsulation Attribute containing an SD-WAN Hybrid Tunnel TLV. > > New: > > Advertise SD-WAN Underlay Routes: A BGP speaker advertises SD-WAN Underlay > Routes using AFI/SAFI 1/74 or 2/74. The NEXT_HOP is set to a reachable > address of the advertising SD-WAN edge node, typically its loopback > address, and the UPDATE includes a Tunnel Encapsulation Attribute > containing an SD-WAN Hybrid Tunnel TLV. > > > > Section 2.1.2: > > Old: > > The SD-WAN NLRI is originated using the loopback address of the C-PE. > > > > New: > > The SD-WAN NLRI is originated by the C-PE, and the BGP Next Hop is set to > a reachable address of the C-PE, typically its loopback address. > > > > > 1442 Remote nodes use the SD-WAN Node ID carried in the SD-WAN SAFI to > 1443 correlate client routes whose NextHop address matches the SD-WAN > Node > 1444 ID. This allows the receiving node to associate each client route > 1445 with the appropriate set of tunnel attributes advertised by the > 1446 corresponding SD-WAN edge node. > > 1633 * The NextHop in the client route update matches a known SD-WAN > Node > 1634 ID. > > (c) The correlation rule depends on the Next Hop and is stated only > in procedure and advisory sections. Binding a client route to its tunnel > attributes turns entirely on the client route's Next Hop being equal to the > SD-WAN Node ID. That is the load-bearing rule of the whole mechanism, and > it > appears once inside a procedure section and once as a SHOULD-level bullet > in > Section 3.1, which is advisory (see the comment at line 1614). It is > nowhere > stated as a requirement on the originator to set the Next Hop accordingly, > so an implementer reading Section 2.4 alone will not know to do it - and > Section 2.1's SHOULD at line 333 points at a different value. > > Two consequences the document does not address. First, it constrains > next-hop handling on the client routes: any deployment step that rewrites > the next hop (next-hop-self at an ASBR, an RR configured to change it, a > route server) breaks the correlation silently, and nothing says the > mechanism assumes the next hop is preserved end to end. Second, the > document's only worked example contradicts the rule - Section 3.2.1 > sets NextHop to 198.51.100.10 and the SD-WAN Node ID to 1.1.1.1 (see the > comment at line 1690). > > The fix has three parts, and the split in issue (3) determines where each > lands. First, specify the encoding in the SD-WAN SAFI section: permitted > lengths per AFI, next-hop address family decoupled from the NLRI AFI, > link-local handling, and the malformed condition - Section 2.1 of RFC 9830 > does this in one paragraph and is worth copying almost directly. Second, > state the Next Hop semantics once, per route type, in the section that owns > that route type; reconcile the three current answers into one for the > SD-WAN > SAFI and delete the other two occurrences rather than leaving them as > restatements. Third, promote the correlation rule to a normative > requirement > on both ends - the originator MUST set the client route Next Hop to its > SD-WAN Node ID, and the receiver correlates on that equality - placed in > the > interaction section that issue (3) creates, and state the assumption that > the Next Hop is preserved between originator and receiver, and what happens > when it is not. While in the same text: state that the Tunnel Encapsulation > attribute is carried with SAFI 74 and that this document defines that > usage, > and state the capability requirement for AFI/SAFI 1/74 and 2/74. > > > > [Linda] This issue has been addressed in the changes for resolving your > earlier comments. The document now distinguishes the BGP Next Hop from the > SD-WAN Node ID and states that the Next Hop is a reachable address of the > advertising SD-WAN edge, typically its loopback address. Section 2.2.1 also > explicitly defines the MP_REACH_NLRI Next Hop encoding for AFI/SAFI 1/74 > and 2/74. > > > > 346 Public Key, IPsec SA Proposal, and Simplified IPsec SA. If a > 347 Tunnel Egress End Point is not included in SD-WAN Hybrid Tunnel > 348 TLV, it is treated as if a Tunnel Egress End Point SubTLV is > 349 included with an address family identifer of 0. > > 386 *2 - if a Tunnel Egress End Point (EP) Sub-TLV is not included, > 387 the SD-WAN Hybrid tunnel treats as if Tunnel egress End Point > 388 exists with AFI of 0. > > 1341 1. Check for Well-formed SD-WAN Hybrid Tunnel TLV: If the SD-WAN > 1342 Hybrid Tunnel TLV does not have a Tunnel Egress Endpoint SubTLV, > 1343 the tunnel validation process treats it as if a Tunnel Egress > 1344 SubTLV exists with an AFI of 0(Per [RFC9012], a Tunnel Egress > 1345 SubTLV exists with an AFI of 0 uses the packet Next Hop as the > 1346 tunnel endpoint). > > <major> This construct - treating an absent Tunnel Egress Endpoint sub-TLV > as Address Family 0 - appears multiple times times, and for client routes > it > contradicts Section 13 of RFC 9012. For client routes the document uses > AFI/SAFI 1/1, 2/1, 1/128 and 2/128 (line 355), every one of which is in the > first-paragraph list of Section 6 of RFC 9012. For those, Section 13 of RFC > 9012 says: "a TLV that does not contain exactly one Tunnel Egress Endpoint > sub-TLV MUST be treated as if it contained a malformed Tunnel Egress > Endpoint sub-TLV" - and a malformed Tunnel Egress Endpoint sub-TLV means > "the entire TLV MUST be ignored and MUST be removed from the Tunnel > Encapsulation attribute before the route carrying that attribute is > distributed." The document's rule produces the opposite outcome from the > same input: an RFC 9012 implementation drops the TLV, an implementation of > this document builds a tunnel to the next hop. That is a straightforward > contradiction and affects interoperability failure. Why not follow RFC > 9012? > > > > [Linda] Agree. For Client Routes, the Tunnel Encapsulation Attribute > procedures of RFC 9012 apply unchanged, including the requirement for the > Tunnel Egress Endpoint Sub-TLV. The “assume AFI=0 when the Tunnel Egress > Endpoint Sub-TLV is absent” behavior is intended only for SD-WAN Underlay > Routes using SAFI 74. We can make the following changes to scope that rule > accordingly and remove the conflicting Client Route text. > > > > Section 2.1 (SD-WAN Hybrid Tunnel TLV Encoding) > > Old: > > If a Tunnel Egress End Point is not included in SD-WAN Hybrid Tunnel TLV, > it is treated as if a Tunnel Egress End Point SubTLV is included with an > address family identifier of 0. > > > > New: > > For SD-WAN Underlay Routes using SAFI 74, if a Tunnel Egress Endpoint > Sub-TLV is not included in the SD-WAN Hybrid Tunnel TLV, it is treated as > if a Tunnel Egress Endpoint Sub-TLV with an Address Family value of 0 were > included. For Client Routes, Tunnel Egress Endpoint processing follows > [RFC9012]. > > > > Table 1 footnote *2 > > Old: > > *2 - if a Tunnel Egress End Point (EP) Sub-TLV is not included, the SD-WAN > Hybrid tunnel treats as if Tunnel egress End Point exists with AFI of 0. > > > > New: > > *2 - For SD-WAN Underlay Routes, if a Tunnel Egress Endpoint Sub-TLV is > not included, it is treated as if a Tunnel Egress Endpoint Sub-TLV with AFI > 0 were included. For Client Routes, [RFC9012] applies. > > > > Section 2.4.2 : simplify the Step 1 so the Client Route processing clearly > follows RFC 9012 > > Old: > > Check for Well-formed SD-WAN Hybrid Tunnel TLV: If the SD-WAN Hybrid > Tunnel TLV does not have a Tunnel Egress Endpoint SubTLV, the tunnel > validation process treats it as if a Tunnel Egress SubTLV exists with an > AFI of 0 (Per [RFC9012], a Tunnel Egress SubTLV exists with an AFI of 0 > uses the packet Next Hop as the tunnel endpoint). Also, per [RFC9012], > MALFORMED Sub-TLVs are ignored and a Sub-TLV with an unknown type is > ignored. The SD-WAN Hybrid Tunnel TLV only processes the first instance of > a Sub-TLV except for the IPsec SA ID Sub-TLV. For the IPsec SA ID Sub-TLV, > if the IPsec SA Identifiers are unique are multiple IPsec SA ID sub-TLVs > are processed. If all the IPsec SA Identifies are not unique, the second > IPsec SA ID Sub-TLV is ignored and not propagated. > > > > New: > > Check for Well-formed SD-WAN Hybrid Tunnel TLV: For Client Routes, the > SD-WAN Hybrid Tunnel TLV and its Tunnel Egress Endpoint Sub-TLV are > validated and handled according to [RFC9012]. MALFORMED and unrecognized > Sub-TLVs are handled according to [RFC9012]. The SD-WAN Hybrid Tunnel TLV > processes only the first instance of each Sub-TLV, except for the IPsec SA > ID Sub-TLV. Multiple IPsec SA ID Sub-TLVs MAY be processed if their IPsec > SA Identifiers are unique. If a subsequent IPsec SA ID Sub-TLV contains an > identifier already advertised in an earlier instance, that Sub-TLV is > ignored and not propagated. > > > > 1559 TLVs MUST be handled as specified in [RFC9012]. This document > 1560 defines new Sub-TLVs for Tunnel Type 25 (SD-WAN-Hybrid), but does > not > 1561 alter the validation behavior established in RFC 9012. > > <major> And it is stated in the same document that no such change is being > made. For client routes, please require the Tunnel Egress Endpoint sub-TLV > to be present, with Address Family 0 where the next hop is the endpoint - > which is what RFC 9012 already provides and costs almost nothing. Change > Table > 1's client-route column to "required" and delete footnote *2 as it applies > to that column. If the WG genuinely wants the omission to be legal for > client routes, that is an update to RFC 9012 and must be declared as one in > the header, the Abstract and the Introduction, with the interoperability > consequence spelled out - but I would not recommend that path for the > saving > involved. > > Two residual points on the underlay side, both belonging to issue (1) > rather > than here. First, the document should say it is defining its own rule for a > SAFI outside RFC 9012's scope, rather than presenting it as RFC 9012 > behaviour - lines 1344-1346 read "(Per [RFC9012], a Tunnel Egress SubTLV > exists with an AFI of 0 uses the packet Next Hop as the tunnel endpoint)", > which cites RFC 9012 for a case RFC 9012 excludes. Second, and worth > putting > to the authors: Section 2.3 of RFC 9830 answered the analogous question by > declaring the Tunnel Egress Endpoint sub-TLV simply not applicable to its > SAFI. Is it actually meaningful for an SD-WAN underlay route? Section 2.5.2 > step 2 says it "identifies a specific WAN interface or ... the remote > SD-WAN > edge node at which the outer SD-WAN Hybrid Tunnel terminates" - but the > SD-WAN Node ID in the NLRI already identifies the node and the Extended > Port > Attribute already carries the port addresses, so it is not obvious what the > sub-TLV adds. If it is genuinely redundant, marking it not-utilized for > SAFI > 74 would be cleaner than defaulting it. > > > > [Linda] The changes that were made to address your earlier comments > already clarify that Client Routes follow RFC 9012 unchanged, while SAFI 74 > is outside the RFC 9012 applicability scope and has procedures defined by > this document. Section 2.4.2 has also been revised accordingly. We can make > the following changes to clean up the remaining: > > > > Table 1: remove the footnote *2 from the Client Route column for the > “Tunnel Egress EP” > > > > Footnote *2 > > Old: > > *2 - For SD-WAN Underlay Routes, if a Tunnel Egress Endpoint Sub-TLV is > not included, it is treated as if a Tunnel Egress Endpoint Sub-TLV with AFI > 0 were included. For Client Routes, [RFC9012] applies. > > > > New: > > *2 - For SD-WAN Underlay Routes, if a Tunnel Egress Endpoint Sub-TLV is > not included, it is treated as if a Tunnel Egress Endpoint Sub-TLV with AFI > 0 were included. > > > > Section 2.4 Second bullet: > > > > Old: > > This outer tunnel is identified by the Tunnel Egress Endpoint Sub-TLV. > Recall as stated earlier, if a Tunnel Egress Endpoint Sub-TLV does not > exist, the SD-WAN Hybrid Tunnel processing treats it as a Tunnel Egress > Endpoint Sub-TLV with AFI equal to zero. > > > > New: > > This outer tunnel is identified by the Tunnel Egress Endpoint Sub-TLV. > When the BGP Next Hop is used as the tunnel endpoint, the Tunnel Egress > Endpoint Sub-TLV is encoded with Address Family 0 as specified in [RFC9012]. > > > > 352 Sub-TLV Support per NLRI type: Summary table > 353 Table 1 > > 390 Figure 1: sub-TLV list > > <nit> The block is introduced as "Sub-TLV Support per NLRI type: Summary > table / Table 1" (lines 352-353), referred to as "Table 1" throughout the > document (lines 350, 400), and captioned "Figure 1: sub-TLV list" (line > 390). Please make it a numbered table with a table caption. > > [Linda] changed the Table title to “Sub-TLV Support for Client and > Underlay Routes” > > > > > 362 Color 3 valid *1 not valid > > 384 *1 - validation per [RFC9012]. Color Extended Community > 385 takes precedence over Color Sub-TLV. > > 405 4) Check if both the Color Sub-TLV and Extended Community for > 406 Color exist, if so prefer the Extended Community for Color. > > <major> Two distinct issues here: > > (a) Wrong code point. Section 3.4.2 of RFC 9012 defines the Color sub-TLV > as > Type Code 4. Code 3 is "IPsec Tunnel Authenticator (DEPRECATED)" in the > IANA > BGP TEA Sub-TLVs registry. > > (b) Wrong model. Section 8 of RFC 9012 does not put the Color sub-TLV and > the Color Extended Community in competition on the same route. The Color > sub-TLV appears on the tunnel route and the Color Extended Community on the > client route, and they are matched: a packet must not be sent through the > tunnel unless the client route carries a Color Extended Community matching > one of the tunnel route's Color sub-TLVs. There is no precedence rule in > RFC > 9012, and inventing one in a table footnote and a numbered validation step > is a third, incompatible mechanism alongside the document's own > SD-WAN-Color > field (Section 2.2.1) and the Color Extended Community matching described > in > Sections 2.4.1, 2.4.3 and 3.1. > > Please correct the code to 4. Then decide on one colour mechanism and > describe it > once: my reading of the intent is that the SD-WAN-Color in the underlay > NLRI > is matched against the Color Extended Community on the client route, in > which case the RFC 9012 Color sub-TLV is not used at all and should be > marked "not valid" for both columns, with footnote *1 and Section 2.1.1 > step > 4 deleted. > > > > [Linda] The intended color mechanism in this document is not the RFC 9012 > Color Sub-TLV. Client Routes carry the Color Extended Community, while > SD-WAN Underlay Routes carry the SD-WAN-Color field in the SAFI-74 NLRI, > and the receiving node correlates those values as described in Sections > 2.4.1, 2.4.3, and 3.1. > > Section 2.1.1 has already been revised and no longer contains the > procedure that preferred the Color Extended Community over the Color > Sub-TLV. We will correct the Color Sub-TLV code point to 4, mark it as not > valid for both Client Routes and SD-WAN Underlay Routes, delete the > obsolete Table 1 footnote, and add the following short clarification of the > color mechanism used by this document.: > > > > The Color Sub-TLV defined in [RFC9012] is not used by the SD-WAN > procedures defined in this document. Client Routes carry the Color Extended > Community, while SD-WAN Underlay Routes carry the SD-WAN-Color field in the > SAFI-74 NLRI. The receiving BGP speaker correlates these values as > described in Sections 2.4.1, 2.4.3, and 3.1. > > > > 378 Underlay Type 66 not valid valid > > 1194 2.3.6.1. Extended Port Sub-Sub-TLV > 1196 One Extended Sub-Sub-TLVs is specified in this document: Underlay > 1197 Network Type Sub-Sub-TLV. > 1204 multiple WAN ports are available. The Underlay Network Type > Sub-Sub- > 1205 TLV is only valid for the Tunnel SD-WAN Hybrid Tunnel TLV within the > 1206 Extended Port Attribute Sub-TLV. > 1210 66 (IANA Assigned). > > 1864 66 Underlay Type This document 2.3.6.1 > > <major> Table 1 lists 66 as a TEA sub-TLV valid > for underlay routes. Section 6.3 registers 66 in the BGP TEA Sub-TLVs > registry. > Section 2.3.6.1 defines it as a sub-sub-TLV that "is only valid ... within > the > Extended Port Attribute Sub-TLV". These cannot all be true. As it stands, > an > implementation following Table 1 will accept type 66 at sub-TLV level, > where > the document gives it no meaning. > > Consequently, the document defines a new sub-sub-TLV namespace - the > Extended Sub-Sub-TLV field of sub-TLV 65 - and requests no registry for it, > so no second sub-sub-TLV can ever be defined. Section 2.3.6.1's own heading > ("Extended Port Sub-Sub-TLV") and its "One Extended Sub-Sub-TLVs is > specified in this document" both signal that more are expected. Note this > is > also how the value got its name in IANA: the registry currently reads "66 | > Underlay ISP Properties | draft-ietf-idr-sdwan-edge-discovery-04" in the > sub-TLV registry - see the comment at line 1842. > > Please decide which level it lives at. If sub-sub-TLV, which the encoding > and Section 2.3.6.1 both indicate: remove 66 from Table 1 and from Section > 6.3, ask IANA to return code point 66 in the sub-TLV registry, and create a > new "SD-WAN Extended Port Sub-Sub-TLV Types" registry with a stated policy > and 1 = Underlay Network Type as the initial entry. I think this is the > intent? > > But if not and, if sub-TLV: move Section 2.3.6.1 out to its own Section > 2.3.7, > give it its own encoding independent of the Extended Port Attribute, and > correct Section 2.3.6's length formula (see the comment at line 1065) > since > the sub-sub-TLV would no longer be inside it. > > > > [Linda] The intended encoding is for Underlay Network Type to be a > Sub-Sub-TLV carried within the Extended Port Attribute Sub-TLV, not a > top-level Tunnel Encapsulation Attribute Sub-TLV. > > We will remove value 66 from Table 1 and from the Tunnel Encapsulation > Attribute Sub-TLV registry request in Section 6.3, request that the > existing value 66 assignment in that registry be returned to the unassigned > pool, and create a separate registry for Extended Port Sub-Sub-TLV Types. > The initial assignment in that registry will be value 1 for Underlay > Network Type. > > > > 448 connection. Each BGP UPDATE message with a SD-WAN Underlay NLRI MUST > 449 contains a Tunnel Encapsulation Attribute with a SD-WAN Hybrid Tunnel > 450 TLV. If an SD-WAN Underlay NLRI is received without a Tunnel > 451 Encapsulation Attribute with a SD-WAN Hybrid tunnel TLV, the NLRI is > 452 treated as "Treat-as-withdraw". > > 1596 The SD-WAN NLRI (AFI=1/SAFI=74) MUST be paired with Tunnel > 1597 Encapsulation attribute with a SD-WAN Hybrid tunnel TLV, If the SD- > 1598 WAN NLRI exist in an BGP UPDATE without a Tunnel Encapsulation > 1599 Attribute with a SD-WAN Hybrid tunnel TLV, the NLRI is considered > 1600 malformed and Treat-as-withdraw approach (per RFC7606). > > <major> Issues with error handing treatment > > (a) The granularity of treat-as-withdraw is incorrect. The TEA is a > path attribute, so it applies to every NLRI carried in the MP_REACH_NLRI > of > that UPDATE. Its absence is therefore a property of the whole message, not > of any one NLRI, and every SD-WAN SAFI NLRI in that UPDATE is affected. As > written - "the NLRI is treated as" - the text reads as though one NLRI > could > be withdrawn while others in the same message survive, which cannot arise > from this condition. The same wording problem appears at Section 2.6.3. > Please state the scope explicitly and give the reason: where the required > TEA with an SD-WAN Hybrid Tunnel TLV is absent, all SD-WAN SAFI NLRIs in > that UPDATE are treated-as-withdraw, because the attribute applies to all > of them. One statement, in one place, with Sections 2.2 and 2.6.3 not both > carrying it. > > [Linda] Agree. The Tunnel Encapsulation Attribute is a path attribute and > therefore applies to all SD-WAN SAFI NLRIs carried in the UPDATE. The > current wording incorrectly refers to a single NLRI and repeats the same > rule in Sections 2.2 and 2.6.3. > > We will keep the normative error-handling rule in Section 2.6.3, > explicitly state that all SD-WAN SAFI NLRIs in the affected UPDATE are > treated-as-withdraw when the required Tunnel Encapsulation Attribute > containing an SD-WAN Hybrid Tunnel TLV is absent, and change Section 2.2 to > reference Section 2.6.3. > > > > Here are the wording changes: > > Section 2.2 > > Old: > > Each BGP UPDATE containing an SD-WAN Underlay Route MUST include a Tunnel > Encapsulation Attribute with an SD-WAN Hybrid Tunnel TLV. If an SD-WAN > Underlay Route is received without the required Tunnel Encapsulation > Attribute and SD-WAN Hybrid Tunnel TLV, the route MUST be handled as > Treat-as-withdraw as specified in Section 2.6.3. > > > > New: > > Each BGP UPDATE containing SD-WAN Underlay Routes MUST include a Tunnel > Encapsulation Attribute containing an SD-WAN Hybrid Tunnel TLV. Error > handling when this required attribute is absent is specified in Section > 2.6.3. > > > > Section 2.6.3 > > Old: > > The SD-WAN NLRI (AFI/SAFI=1/74 or 2/74) MUST be paired with a Tunnel > Encapsulation Attribute containing an SD-WAN Hybrid Tunnel TLV. If the > SD-WAN NLRI exists in a BGP UPDATE without a Tunnel Encapsulation Attribute > containing an SD-WAN Hybrid Tunnel TLV, the NLRI is considered malformed > and the Treat-as-withdraw approach specified in [RFC7606] MUST be used. > > > > New: > > A BGP UPDATE carrying SD-WAN SAFI NLRIs (AFI/SAFI 1/74 or 2/74) MUST > include a Tunnel Encapsulation Attribute containing an SD-WAN Hybrid Tunnel > TLV. Because the Tunnel Encapsulation Attribute applies to all NLRIs > carried in the UPDATE, if the required attribute or SD-WAN Hybrid Tunnel > TLV is absent, all SD-WAN SAFI NLRIs in that UPDATE MUST be > treated-as-withdraw according to [RFC7606]. > > > > 546 - Route Type Validation: The Route Type field MUST be equal to 1. > 547 Any other value is not supported and the NLRI MUST be ignored, but > 548 distributed to other BGP peers. > > (b) Ignore-but-propagate for unrecognised route types, and the wrong > term for it. Section 5.4 of RFC 7606 sets the default for typed NLRI: "A > BGP > speaker advertising support for such a typed address family MUST handle > routes with unrecognized NLRI types within that address family by > discarding > them, unless the relevant specification for that address family specifies > otherwise." Overriding it is permitted, but the document must say it is > doing so, and must then answer what the override raises: on what basis a > speaker re-advertises an NLRI it cannot parse; how the Route Reflector > applies the Section 3 authorisation check to it; whether it occupies an > Adj-RIB-In entry; and what withdraws it. Note also that this rule and > Section 2.5.2 step 4's "A MALFORMED NLRI MUST be discarded" sit in > different > sections with no cross-reference and no stated ordering against the Length > check at lines 550-552, which cannot apply to an unknown route type. > > On terminology, the correct BGP term is propagation, not distribution: > s/distributed to other BGP peers/propagated to other BGP peers here, and > the > same at line 1585. This is not merely stylistic - "distribution" invites > the > reading that some component other than ordinary BGP propagation is > involved, > which is precisely the ambiguity the SD-WAN SAFI does not need more of. > > > > [Linda] This issue has already been addressed in the changes addressing > your earlier comments. An SD-WAN NLRI with an unrecognized Route Type is > now discarded and MUST NOT be propagated, following Section 5.4 of RFC > 7606. The earlier “ignore but distribute” behavior has been removed, and > “propagated” is now used consistently. > > We can add the following clarification that the Length and subsequent > field validation procedures apply only after the Route Type has been > recognized. > > Section 2.2.2 > > Old: > > Route Type Validation: The Route Type field MUST be equal to 1. An SD-WAN > NLRI with an unrecognized Route Type MUST be discarded and MUST NOT be > propagated, as specified for typed NLRIs in Section 5.4 of [RFC7606]. > > Length Field Validation: The Length field MUST contain a value of either > 12 or 24 octets, as defined in Section 2.2.1. > > > > New: > > Route Type Validation: The Route Type field MUST be equal to 1. An SD-WAN > NLRI with an unrecognized Route Type MUST be discarded and MUST NOT be > propagated, as specified for typed NLRIs in Section 5.4 of [RFC7606]. The > remaining validation steps in this section apply only to recognized Route > Types. > > Length Field Validation: For Route Type 1, the Length field MUST contain a > value of either 12 or 24 octets, as defined in Section 2.2.1. > > > > 509 Length: The value of the Length field for Route-Type 1 MUST be > 510 either 12 octets (when the SD-WAN Node ID is an IPv4 address) or > 511 24 octets (when the SD-WAN Node ID is an IPv6 address). Any other > 512 value is invalid, and the NLRI MUST be treated as malformed and > 513 discarded. > > (c) Per-NLRI discard is workable here because the Length field lets > a parser skip the malformed NLRI and continue - but the document should say > that is why it is workable, and say what happens when the Length field > itself runs past the end of the MP_REACH_NLRI attribute, at which point > parsing genuinely fails and RFC 7606's AFI/SAFI-disable or session-reset > applies. > > Please consolidate all three of the above into one error-handling section, > state explicitly which RFC 7606 disposition applies to each failure mode > and > at what scope, and state that (b)'s ignore-but-propagate is a deliberate > override of Section 5.4 of RFC 7606, with the reasoning. Section 5 of RFC > 9830 is the model and is short enough to adapt almost directly: it defines > the syntactic validation required, then an escalation ladder from per-NLRI > treat-as-withdraw (where the malformed NLRI can be skipped) to AFI/SAFI > disable to session reset (where the UPDATE cannot be parsed at all). > Section > 5 of RFC 9830 also separates BGP-level validation from validation that is > not BGP's business, which is the distinction this document most needs for > the IPsec parameters - see issue (2). > > > > [Linda] Agree. The changes in resolving your earlier comments already > removed the earlier ignore-but-propagate behavior for unrecognized Route > Types and now follows Section 5.4 of RFC 7606: an NLRI with an unrecognized > Route Type is discarded and MUST NOT be propagated. > > The current revision also consolidates the SD-WAN NLRI error handling in > Section 2.6.2. We will further clarify the error-handling scope for Length > failures. If the NLRI Length value is invalid but still allows the > malformed NLRI boundary to be determined, the affected NLRI is handled as > treat-as-withdraw. If the Length encoding extends beyond the remaining > MP_REACH_NLRI data so that the NLRI boundary cannot be reliably determined, > AFI/SAFI disable or session reset is applied according to RFC 7606. This > follows the error-handling model used in RFC 9830. > > > Section 2.2.1 — Length definition > > Old: > > Length: The value of the Length field for Route-Type 1 MUST be either 12 > octets (when the SD-WAN Node ID is an IPv4 address) or 24 octets (when the > SD-WAN Node ID is an IPv6 address). Any other value is invalid, and the > NLRI MUST be treated as malformed and discarded. > > > > New: > > Length: The value of the Length field for Route-Type 1 MUST be either 12 > octets (when the SD-WAN Node ID is an IPv4 address) or 24 octets (when the > SD-WAN Node ID is an IPv6 address). Any other value is invalid. Error > handling for an invalid Length field is specified in Section 2.6.2. > > > > > 456 Section 2.3.6) or IPsec information (see Section 2.3). The IPsec > 457 information sub-TLVs include: IPsec SA ID, IPsec SA Nonce, IPsec > 458 Public Key, IPsec SA Proposal, and Simplified IPsec SA. > > 1119 identifies the encapsulation protocol used within the IPsec > 1120 payload when IPsec SA Sub-TLVs (IPsec SA ID, IPsec SA Nonce, > IPsec > 1121 Public Key, IPsec SA Proposal, or Simplified IPsec SA) are > present > > 1563 For SD-WAN client routes with a Tunnel Encapsulation Attribute with > a > 1564 SD-WAN Hybrid Tunnel type TLV, the IPsec Sub-TLVs (IPsec SA ID, > IPsec > 1565 nonce, IPsec Public Key, IPsec Proposal, and Simplified IPsec SA) > are > 1566 meaningful, but MAY be rarely sent. > > <major> Also at lines 1134-1135 and 1570. No sub-TLV named "IPsec SA Nonce" > is defined; sub-TLV 67 is the IPsec SA Rekey Counter. This seems a leftover > from an earlier revision, and it is the name still sitting in the IANA > registry for value 67 - so the two need fixing together. Section 2.6.1 > also > drops the "SA" from "IPsec SA Proposal" and Section 6.3 drops it from > "Simplified > IPsec SA". Please use the defined names - IPsec SA ID, IPsec SA Rekey > Counter, > IPsec Public Key, IPsec SA Proposal, Simplified IPsec SA - in all five > places > and in Section 6.3, and ask IANA to rename value 67 accordingly (see the > comment > at line 1842). > > [Linda] The changes made in addressing your earlier comments already > identify Sub-TLV 67 as “IPsec SA Rekey Counter” in Section 6.3, but several > occurrences of the old “IPsec SA Nonce” name and shortened Sub-TLV names > remain. > > > > 584 To support key rotation (e.g., updating IPsec keys or parameters), > 585 the SD-WAN NLRI (identified by Port-Local-ID, SD-WAN-Color, and SD- > 586 WAN Node ID) can be re-advertised via a BGP UPDATE message containing > 587 updated IPsec SA information. This mechanism enables rapid > 588 distribution of new keys without requiring separate key negotiation > 589 protocols. > > <major> The claim of "rapid distribution" is not supported, and the > mechanism has challenges that need stating. > > Implicit withdraw destroys the old SA before the new one is usable. > Re-advertising the same NLRI replaces the previous path attributes. IPsec > rekeying requires an overlap window where both the old and the new SA are > installed, or traffic is dropped for the duration. Nothing in the document > creates that overlap - the IPsec SA ID Sub-TLV can carry multiple SPIs > (lines 601-607), which is the natural place to build make-before-break, but > no procedure uses it that way. > > BGP gives no delivery or ordering guarantee for successive UPDATEs. An RR > applying MRAI, or an implementation coalescing updates, may collapse a > rapid > sequence of rekeys and deliver only the last - or deliver them out of order > to different peers, so different edges hold different generations of the > same SA simultaneously. The Rekey Counter exists to detect this and no > procedure consumes it - see issue (7)(d). > > The churn is proportional to (edges x ports x peers x rekey rate) and lands > on the control plane. A 5000-site SD-WAN with 3 WAN ports rekeying hourly > generates 15000 UPDATEs per hour through the RR at steady state, each > carrying key material, each reflected to every authorised peer. There is no > guidance on a minimum rekey interval, no MRAI or damping recommendation, > and > no statement of the relationship between rekey rate and BGP convergence. I > am not asserting the design is unworkable, but I would want this addressed > before IETF Last Call. > > Framed by the boundary in issue (2), the fix splits at the BGP/IPsec line > rather than being specified end to end. On BGP's side, which this document > must specify: what the Rekey Counter means on the wire and who consumes it. > It is a field in a BGP sub-TLV, so the document must either state a > BGP-visible comparison rule - an advertisement whose Rekey Counter is not > greater than the stored value for that SA is stale and is not passed on to > the SD-WAN tunnel manager - or state that the field is opaque to BGP and > handed over intact, in which case say so and delete the anti-replay claim > at > line 717. It cannot be silent, which is the current state. Also on BGP's > side: the churn. An Operational Considerations subsection should give a > recommended minimum rekey interval as a function of deployment scale and > state the relationship to MRAI and RR update generation. On the SD-WAN > tunnel manager's side, which this document should hand over and not > specify: > the SA lifecycle - the make-before-break overlap, when the old SA is torn > down, what happens if the new parameters do not work. The encoding already > supports overlap, since the IPsec SA ID Sub-TLV can carry multiple SPIs > (lines 601-607); the document should say that carrying both the old and the > new SPI is how an overlap is signalled, and leave the management of the > window to the SD-WAN tunnel manager. > > <major> Separately, and per issue (6): "rapid" is unquantified and is > contradicted by the document's own delivery characteristics, as above. > "Without requiring separate key negotiation protocols" asserts an advantage > over IKEv2 as though it were a bare fact. Are you sure to project BGP as > an alternative to IKE to the SEC folks? > > > > [Linda] The BGP/IPsec responsibility boundary has already been clarified > in the changes addressing your earlier comments: BGP carries the > IPsec-related parameters and validates their encoding and syntax, while > IPsec SA state management, rekeying, and packet protection are performed by > the IPsec implementation. > > > > 603 This enables advertisement of SA updates, key rotations, or > 604 operational state changes without resending full SA parameter sets, > 605 thereby significantly reducing the size of BGP UPDATE messages and > 606 allowing pairwise IPsec rekeying to proceed independently for each > 607 SA. > > <major> Per issue (6): "significantly" is unquantified and measured against > nothing. The mechanical part of the sentence is accurate and should stay. > Perhaps: > > This enables advertisement of SA updates, key rotations, or > operational state changes without resending full SA parameter > sets, and allows pairwise IPsec rekeying to proceed independently > for each SA. > [Linda] We will remove the unquantified “significantly reducing” claim and > keep the mechanical description of the behavior. > > > > > 617 |IPsec SA ID Sub| Length | Reserved | > 667 |SA-RekeyCounter| Length | Reserved | > 746 |IPsec-PublicKey| Length | Reserved | > 815 | SA Proposal | Length | Reserved (16 bits) | > 907 |Sub-TLV type | Length | Reserved | > 1044 |Type (65) | Length |Flags |I|O|R|R|R|R|R|R| > 1216 | UnderlayType | Length | Reserved > | > > 1208 Underlay Network Type. > 1210 66 (IANA Assigned). > > <minor> The way this document presents its TLV and sub-TLV encodings - in > both the figures and the accompanying field descriptions - departs from the > convention used across IDR documents. RFC 9830 is a good reference for the > house style, and following it would make the encodings easier to review and > easier to implement. Please take care of the following to get some > consistency > and to improve clarity and readability. > > (a) Bit rulers are inconsistent and often incomplete. Please use the full > two-line ruler in every figure. > > (b) The Type field is labelled with the sub-TLV's name instead of "Type" - > seven different labels appear in the type-field position across sub-TLVs. > > (c) The field descriptions have no common template. Each sub-TLV describes > its own type field differently > > (d) Field widths are given in bits where octets are conventional, and the > two units are mixed within single descriptions - for instance the Rekey > Counter at line 709 is "64 bits" while the field beside it at line 693 is > described in octets. TLV and sub-TLV field widths are normally given in > octets, with bits reserved for flags and sub-octet fields. > > Please adopt one template for all seven sub-TLVs and the sub-sub-TLV, > suggest > following RFC 9830's presentation: and a "where:" list describing each > field in the order it appears, with widths in octets. > > > > [Linda] We will make the encoding figures consistent by using the same > two-line bit ruler, label the first octet uniformly as “Type”, and > normalize the field descriptions to follow the same “where:” template. > Field widths will be expressed in octets for whole-octet fields and in bits > only for flags or sub-octet fields. > > > > 635 * Length (8 bits): Specifies the total length in octets of the > 636 value field (not including the Type and Length fields). For > 637 the IPsec SA ID Sub-Type, the Length field SHOULD be equal to 2 > 638 + 4 *(number of IPsec SA Identifier fields). > > 648 Sub-TLV Error Handling: If the length value is invalid, (that is 2+ > 649 4*number of IPsec SA IDs), then the IPsec SA ID SubTLV is > 650 Malformed. > > <major> A length field cannot be a SHOULD - a receiver has no way to parse > a > sub-TLV whose length is optionally correct, and there is no defined > behaviour for the case where it is not. The same applies to ID Length at > line 694. The error-handling sentence then says the opposite of what it > means: as written, "if the length value is invalid, (that is 2 + 4*number > of > IPsec SA IDs)" defines the correct value as the invalid one. The > parenthetical needs to be the valid value with the test inverted. How > about: > > The Length field MUST be equal to 2 + 4 x (number of IPsec SA > Identifier fields). A sub-TLV whose Length field has any other > value is malformed and is handled per [RFC9012]. > > Please apply the same treatment to ID Length in Section 2.3.2. > > [Linda] Agree. The Length field and the ID Length field are part of the > encoding and therefore need exact values, not SHOULD-level guidance. We > will make both normative and simplify the malformed-length text so that the > valid value is stated directly and any other value is treated as malformed > according to RFC 9012. > > > > > 640 * Reserved: The Reserved field SHOULD be set to zero and ignored > 641 upon receipt. Received values MUST be propagated without > 642 change. > > <major> Two problems, raised here on the first Reserved field the document > defines and applying to every Reserved field and Reserved bit in the > document. There are several different formulations across them, varying > between SHOULD and MUST on setting to zero, between SHOULD, MUST and > unmarked on ignoring, and between carrying a propagation sentence and not. > > (a) The normative keyword strength varies for no reason. > > (b) "Received values MUST be propagated without change" contradicts "set to > zero on transmission". A speaker re-originating the sub-TLV cannot do both. > The sentence is also redundant: Section 13 of RFC 9012 already requires > unrecognised and disregarded sub-TLVs to be propagated intact, and the > TEA is transitive. Note also that the Reserved field in Section 2.3.1 is > given no explicit width, though Figure 4 and the length formula imply two > octets. > > Please adopt one formulation and use it verbatim everywhere - "Reserved for > future use. MUST be set to zero on transmission and MUST be ignored on > receipt." - drop the propagation sentences, and state the width of every > Reserved field. This applies throughout the document: please check all > Reserved fields and Reserved bits for consistency rather than only the > instance quoted above. > > > > [Linda] Agree. The Reserved fields and bits should use one consistent > formulation throughout the document. We will use: “Reserved for future use. > MUST be set to zero on transmission and MUST be ignored on receipt.” > > We will remove the separate “propagated without change” sentences and > explicitly state the width of each Reserved field or bit field. This is an > editorial consistency change and does not alter the encoding semantics. > > > > 685 * length (8 bits): Specifies the total length in octets of the > 686 value field of the SubTLV. The total length is variable with > 687 the value equal to 18 plus Nonce Length. > > 693 * ID Length (8 bits): indicates the length in octets of IPsec SA > 694 Identifer. This length SHOULD be 4 octets. > 696 * Nonce Length (16 bits): indicates the length, in octets, of the > 697 Nonce Data. The value MUST be a non-zero multiple of 4 (i.e., > 698 the Nonce Data length MUST be a multiple of 32 bits)[RFC7296]. > > 709 * Rekey Counter (64 bits): the number of key updates or rekeys > 710 that have occurred. > > 720 Sub-TLV Error Handling: The IPsec SA Rekey Counter Sub-TLV is > 721 considered malformed under any of the following conditions: > 723 The total Sub-TLV Length is less than the sum of ID Length, > 724 Nonce Length, and 4 octets for the Rekey Counter. > 726 The Nonce Length field is zero or not a multiple of 4. > > <major> Four defects in this sub-TLV. > > The length formula holds only for ID Length = 4. Counting from Figure 5: > Reserved 2 + ID Length 1 + Nonce Length 2 + I/Flags 1 + Rekey Counter 8 + > SA > Identifier (ID Length) + Nonce Data (Nonce Length) = 14 + ID Length + Nonce > Length. That equals "18 plus Nonce Length" only when ID Length is 4 - which > the document explicitly declines to require (line 694, "SHOULD be 4 > octets", > with Contextual Note 1 at lines 730-735 explaining that the SHOULD exists > precisely so Secure EVPN can use a longer identifier). > > The malformed test uses 4 octets for a 64-bit field. The Rekey Counter is 8 > octets, not 4. The test also omits Reserved, ID Length, Nonce Length and > the > flags octet - 6 further octets - so a sub-TLV 10 octets shorter than it > should be passes the test. > > The multiple-of-4 nonce rule is attributed to RFC 7296, which does not > contain it. Section 3.9 of RFC 7296 says: "The size of the Nonce Data MUST > be between 16 and 256 octets, inclusive." There is no multiple-of-4 or > multiple-of-32-bits requirement in Section 3.9 or in Section 2.10 ("Nonces > used in IKEv2 MUST be randomly chosen, MUST be at least 128 bits in size, > and MUST be at least half the key size of the negotiated pseudorandom > function (PRF)"). The document's own rule also fails to enforce the > 16-octet > minimum that RFC 7296 does impose: a 4-octet nonce passes both stated > tests. > > Nonce Length is 16 bits inside a sub-TLV whose Length field is 8 bits, so a > conforming Nonce Length value can exceed what the sub-TLV can hold - see > the > comment at line 929. > > Please state the length as 14 + ID Length + Nonce Length; make ID Length a > MUST-be-4 unless the Secure EVPN case is actually in scope, in which case > allow a range and validate it (a SHOULD on a length field is not a workable > extensibility mechanism - the ID Length field itself already provides the > extensibility); correct the malformed test to Length != 14 + ID Length + > Nonce Length; replace the nonce rule with Section 3.9 of RFC 7296's actual > constraint (16-256 octets inclusive) further capped by the sub-TLV length; > and reduce Nonce Length to 8 bits, or move the sub-TLV to a > two-octet-length > type per the comment at line 929. > > [Linda] Agree. We will correct the length calculation and nonce > validation. As addressed in the preceding comment, ID Length will be > required to be 4 octets. > > The Sub-TLV Length is 14 + ID Length + Nonce Length, which with the > required 4-octet ID is 18 + Nonce Length. The malformed-length check will > use this exact relationship, and the Rekey Counter will be correctly > accounted for as 8 octets. > > We will also replace the incorrect multiple-of-4 nonce requirement with > the RFC 7296 requirement. Because the Sub-TLV itself has an 8-bit Length > field, this encoding further limits Nonce Length to 237 octets. The > existing 16-bit Nonce Length field can therefore remain; values outside the > permitted range are malformed. > > > 913 | key1 length | Key 1 ~ > 915 | key2 length | Key 2 ~ > > 971 key1 length (8 bits): indicates the IPsec public key 1 length. > 974 Public Key 1: IPsec public key 1 > 976 key2 length (8 bits): indicates the IPsec public key 2 length. > 979 Public Key 2: IPsec public key 2 > > <major> The figure calls them "Key 1"/"Key 2"; the field descriptions call > them "Public Key 1"/"Public Key 2"; the field titles call them "key1 > length"/"key2 length" and "IPsec public key 1 length". Nothing states what > algorithm or curve/group the key belongs to, or how a receiver determines > that - the sub-TLV has no Diffie-Hellman Group field, unlike sub-TLV 68, > and > the Transform/AH/ESP fields describe the SA's algorithms, not the key's. > Nothing states what the encoding is (raw point, DER SubjectPublicKeyInfo, > the RFC 7296 Key Exchange Data format). Nothing states why there are two, > or > which is which - inbound/outbound, encryption/integrity, > initiator/responder > are all plausible readings and produce different SAs. > > Nor is it clear that they are public keys at all. Section 2.3.5 introduces > this sub-TLV for "deployments where full transform negotiation (e.g., via > IKEv2) is not supported or not necessary" with nodes "provisioned ... with > a > common set of agreed security profiles". A pre-provisioned profile plus two > keys and a nonce, with no Diffie-Hellman group and no key-agreement step, > reads much more like symmetric keying material than like public keys - and > Section 3.2 confirms there is no negotiation: "The C-PE devices do not > attempt to negotiate IPsec SA parameters or transform sets with remote > peers. Instead, the configurations must match as advertised." > > If they are symmetric keys, this sub-TLV distributes SA keys in a > transitive > BGP path attribute, through an RR, on a session that Section 5 says may run > over plain TCP in a walled garden. That is a serious exposure and it is not > analysed anywhere - see issue (7). If they are public keys, the document > still never states how a receiver binds a key to an identity: anyone who > can > inject a route with the right Node ID substitutes their own key. > > Please state plainly what Key 1 and Key 2 are, with an algorithm identifier > field, an encoding reference, and an explicit statement of each key's role. > If they are symmetric keys, say so and make transport confidentiality a > MUST > wherever this sub-TLV is used, with the reasoning in Section 5. If they are > public keys, add the group/algorithm identifier and specify the identity > binding. > > [Linda] The intent is for these fields to carry the multiple pieces of > keying material needed by the IPsec SA, not to define a separate public-key > exchange mechanism. > > We will clarify the role of each key, align the field names in the figure > and text, and specify that their interpretation is determined by the IPsec > transform(s) selected for the SA. We will also remove the current “Public > Key” terminology where it is misleading. > > The Simplified IPsec SA Sub-TLV is intended for centrally controlled > deployments in which the participating nodes are provisioned with the same > security profile, including the algorithms and keying method. It therefore > carries the keying material needed for the configured SA rather than > negotiating a key-exchange algorithm in BGP. The exact encoding and role of > each key will be stated explicitly so that the receiver can unambiguously > associate the advertised keying material with the configured IPsec > transforms. > > > > > 929 Length (8 bits): the length of Sub-TLV in octets (based on key > 930 length). Length is variable, and calculated by 17 + key1 length + > 931 key2 length + nonce length. > > 971 key1 length (8 bits): indicates the IPsec public key 1 length. The > 972 length has a valid range of 32 octets to 512 octets [RFC8247] > 974 Public Key 1: IPsec public key 1 > 976 key2 length (8 bits): indicates the IPsec public key 2 length. The > 977 length has a valid range of 32 octets to 512 octets [RFC8247] > > <major> All seven sub-TLVs defined in this document use type codes 64-70, > so > per RFC 9012 each has a one-octet Length field and a maximum value field of > 255 octets. Three of them are specified with value ranges that do not fit, > and this one is the clearest case: the key length fields are 8 bits but are > given a range up to 512 octets, which an 8-bit field cannot express; and > the > sub-TLV Length is 8 bits, so 17 + key1 + key2 + nonce <= 255 caps the two > keys plus nonce at 238 octets combined. > > [Linda] The preceding comment is being addressed by clarifying the > semantics and roles of Key 1 and Key 2, but the current key-length ranges > also exceed what the encoding can represent. > > Because the Simplified IPsec SA Sub-TLV uses the one-octet Length field > defined by RFC 9012, its value cannot exceed 255 octets. We will remove the > current 32–512-octet key-length range and explicitly require that the > encoded Key 1, Key 2, and Nonce lengths fit within the Sub-TLV Length. The > actual key lengths are determined by the configured IPsec > algorithms/security profile. > > > > > > > 764 length (8 bits): Specifies the total length in octets of SubTLV > 765 value field. The total length is variable with the length being > 766 10 + the Key Exchange Data length. > > <major> Same class of problem in the IPsec Public Key Sub-TLV, where Length > = 10 + Key Exchange Data. Section 3.4 of RFC 7296: "The length of the > Diffie-Hellman public value for MODP groups MUST be equal to the length of > the prime modulus over which the exponentiation was performed." Group 14 > (2048-bit MODP) therefore has a 256-octet public value; 256 + 10 = 266 > > 255. Group 14 is the only DH group RFC 8247 marks MUST for IKEv2 (Section > 2.4 of RFC 8247). So the sub-TLV cannot carry the mandatory-to-implement > group. Group 5 (192 octets) fits at 202; ECP groups 19, 20 and 21 (64, 96 > and 132 octets) fit. The document does not restrict the usable groups, so > an > implementation cannot know which the peer will send. > > The third case is that the Length field is 8 bits while Nonce Length is 16 > bits in the IPsec SA Rekey Counter Sub-TLV (see the comment at line 685), > so > the nonce length field can express values the containing sub-TLV cannot > hold. This 'plain as daylight' inconsistency is what go me going down into > the IPsec and IKE rabbit hole to find these whole set of issues! > > My preferred fix is to move these sub-TLVs into the 128-255 type range, > which gives a two-octet Length. That requires returning 64-70 and > requesting > new codepoints (128-191 is Standards Action, 192-252 is FCFS) - worth doing > immediately. The alternative, if the codepoints are to be kept: > restrict the permitted DH groups to those whose public value fits in 245 > octets, state that restriction normatively, correct the key-length fields > to > 16 bits, and state the real ceiling on key material - I don't think this > option will survive SEC reviews. Either way, please state explicitly for > each sub-TLV what happens when the material does not fit. > > [Linda] Agree that the one-octet Sub-TLV Length limits the key-exchange > data that can be carried. This has been partially addressed in the current > revision: Section 2.3.3 now states the 255-octet Sub-TLV limit, recommends > smaller ECP groups, and requires public values that do not fit to be > distributed by another mechanism. The Rekey Counter nonce-length issue is > also being addressed separately by bounding the permitted Nonce Length to > the enclosing Sub-TLV size. > > We will make the Public Key Sub-TLV restriction explicit: only > key-exchange groups whose encoded public value fits within the available > 245 octets may be carried in this Sub-TLV. A sender MUST NOT encode a > larger public value in this Sub-TLV; another key-distribution mechanism > must be used instead. > > > > > > > 953 AH algorithms (8 bits): Specifies the AH authentication algorithm to > 954 be used. The values are defined in [RFC4835] and its updates > 955 (e.g., [RFC8221]). > > 963 ESP algorithms (8 bits): Specifies the ESP encryption algorithm, as > 964 defined in [RFC4835], [RFC8221], and their updates. > > <major> RFC 4835, RFC 7321 and RFC 8221 do not define numeric values for > these algorithms. They are implementation-requirements documents: they list > algorithms by name with a requirement level (MUST / SHOULD / SHOULD NOT / > MUST NOT) and nothing else. Section 9 of RFC 8221 states "This document > does > not require any IANA actions."; Section 1.3 of RFC 8221 states "The > algorithms considered here are listed by IANA as part of the IKEv2 > parameters." The numeric code points live in the IANA IKEv2 "Transform Type > 1 - Encryption Algorithm Transform IDs" and "Transform Type 3 - Integrity > Algorithm Transform IDs" registries - which are 16-bit spaces, not 8-bit. > So > as written there is no way for two implementations to agree on what value > 12 > in the ESP algorithms field means. Separately, RFC 4835 is obsolete > (obsoleted by RFC 7321, itself obsoleted by RFC 8221) and should not be > cited at all. > > Please redefine both fields as 16-bit values from the IANA IKEv2 Transform > Type 3 and Transform Type 1 registries respectively, cite those registries, > and make RFC 7296 (already normative) the reference. Drop RFC 4835 entirely > and reduce RFC 8221 to an informative pointer for algorithm selection > guidance. Widening these fields also forces a re-count of the Simplified > IPsec SA length formula at line 929 - please do both in one pass. Note that > this field pair also duplicates what the IPsec SA Proposal Sub-TLV (69) > already carries properly via Transform Type / Transform ID; consider > whether > the Simplified sub-TLV needs them at all (see the comment at line 1117). > [Linda] We will change the AH and ESP algorithm fields to 16-bit values > and define them using the IANA IKEv2 Transform Type 3 (Integrity Algorithm) > and Transform Type 1 (Encryption Algorithm) registries, respectively, with > RFC 7296 as the protocol reference. > > RFC 4835 will be removed. RFC 8221 may remain as an informative reference > for algorithm-selection guidance. > > The widening of these two fields will also be reflected in the Simplified > IPsec SA Sub-TLV encoding and Length calculation. The fields are retained > because this compact Sub-TLV explicitly identifies the configured > algorithms used by the SA, whereas the more general IPsec SA Proposal > Sub-TLV provides the flexible transform representation. > > > > > 981 nonce-length (8 bits): indicates the Nonce key length. Per > 982 [RFC7296], the minimum length for nonce is 16 octets. [RFC7296] > 983 doesn't specify the maximum length for nonce. Therefore, the > 984 maxmimum length for nonce MUST be small enough so that the entire > 985 length of the BGP UPDATE is less than the BGP UPDATE maximum. > > <major> Section 3.9 of RFC 7296 specifies both bounds: "The size of the > Nonce Data MUST be between 16 and 256 octets, inclusive." The minimum > stated > here is right; the maximum claim is wrong; and the substitute rule that > follows from it is not implementable as a validation test - a receiver > parsing one sub-TLV cannot evaluate "the entire length of the BGP UPDATE is > less than the BGP UPDATE maximum" as a property of this field, and a sender > that has already built the UPDATE has a much tighter constraint anyway (the > sub-TLV's own 8-bit length, per the comment at line 929). Note the > inconsistency with the Rekey Counter sub-TLV at line 685: two sub-TLVs in > the same document carry a nonce under two different, mutually incompatible > length rules (multiple of 4, no maximum; versus 16 octets minimum, no > maximum), neither of which matches RFC 7296. In both places, please state: > "The Nonce Data length MUST be between 16 and 256 octets inclusive > [RFC7296], and MUST NOT exceed the space available in the enclosing > sub-TLV." Delete the BGP-UPDATE-maximum sentence. > > [Linda] Agree. The current text incorrectly states that RFC 7296 does not > define a maximum nonce length. Section 3.9 of RFC 7296 defines the Nonce > Data length as 16 through 256 octets inclusive. > > We will use the same rule consistently in both nonce-carrying Sub-TLVs and > also require that the nonce fit within the enclosing Sub-TLV. The current > BGP UPDATE maximum-size sentence will be removed. > > > > 1028 Unlike pairwise NAT traversal mechanisms such as IKEv2 [RFC7296], > 1029 which require peers to dynamically discover NAT properties during > 1030 tunnel setup, the BGP-controlled SD-WAN architecture enables each > SD- > 1031 WAN edge node to proactively advertise its NAT properties to all > 1032 peers through BGP signaling. This approach simplifies NAT traversal > 1033 in large-scale SD-WAN deployments where each edge node may need to > 1034 establish tunnels with many peers. > > <major> Per issue (6): this is the document's only direct comparison with > an > alternative and it carries no analysis - no scaling figures, no statement > of > what "simplifies" means or what it costs, and no acknowledgement of what > IKEv2 provides that this mechanism does not. Please delete both sentences > and substitute: > > Each SD-WAN edge node advertises the NAT properties of its WAN > ports to its peers through BGP signalling, independently of and in > advance of the establishment of any tunnel. Section > [APPLICABILITY].2 describes the relationship between the > mechanisms in this document and alternative mechanisms for > establishing IPsec security associations. > > This passage seems to be the document's stated motivation for the design, > and is > the text issue (10)'s question is about. > > [Linda] The change made in addressing your earlier comments now state that > an SD-WAN edge can advertise its NAT properties through the RR to > authorized peers before individual tunnels are established, avoiding > repeated discovery of the same NAT-related information during establishment > of each SD-WAN tunnel. We will keep the comparison limited to that concrete > behavior and avoid broader claims that the mechanism “simplifies” NAT > traversal. > > > > 1065 * Length: the length of the value field in octets excluding the > Type > 1066 and the Length fields. If IPv4, the length is 32 (8 header, 32 > 1067 address, 8 for 1 Sub-Sub-TLV). If IPv6, the length is 64 (8 > 1068 header, 48 addresses, 8 for 1 subSubTLV). > > <major> The IPv4 sum does not add up on its own terms: 8 + 32 + 8 = 48, not > 32. The units are also inconsistent - "32 address" is bits where the > surrounding numbers are octets. Counting the fields from Figure 8 (lines > 1042-1059), the value field is Flags 2 + NAT Type 1 + Encap-Type 1 + Trans > networkID 1 + RD ID 1 + Local IP 4 + Local Port 4 + Public IP 4 + Public > Port 4 + Sub-Sub-TLV 8 = 30 octets for IPv4, and 2+4+16+4+16+4+8 = 54 > octets > for IPv6. Neither 32 nor 64 is reachable from the figure. > > [Linda] We will recalculate the value-field length directly from the > fields in Figure 8 and express all whole-field sizes consistently in > octets. For the current encoding, the fixed value length is 22 octets for > IPv4 and 46 octets for IPv6, plus the length of any included Sub-Sub-TLVs. > > > > 1159 * Local IP: The local (or private) IP address of the WAN port. If > 1160 the Sub-TLV Length field is 32, the Local IP is a 32 bit IPv4 > 1161 address. If the Sub-TLV Length field is 64, the Local IP is a 64 > 1162 bit IPv6 address. This MUST be a valid IP address. > > 1167 * Public IP: The IP address after the NAT. If NAT is not used, > this > 1168 field is set to all-zeros. If not, this is a valid IP addres. > If > 1169 the Sub-TLV Length field is 32, the Local IP is a 32 bit IPv4 > 1170 address. If the Sub-TLV Length field is 64, the Local IP is a 64 > 1171 bit IPv6 address. > > <major> An IPv6 address is 128 bits, not 64, in both places; and the Public > IP bullet describes the Local IP. > > Two further structural problems in the same field. First, the length is > derived from a fixed assumption of exactly one 8-octet sub-sub-TLV, while > Section 2.3.6.1 says the sub-sub-TLV is optional and the field is named > "Extended Sub-Sub-TLV" (singular in the figure, plural in the prose at line > 1196) - so a sub-TLV with no sub-sub-TLV, or two, has no defined length. > Second, the address family is signalled twice and inconsistently: by the I > and O flag bits (lines 1076-1085) and by the Length field, with no > statement > of what happens when they disagree, and with the flags describing an > inner/outer split while the Length rule assumes both addresses are the same > family. > > [Linda] We will correct the IPv6 address width to 128 bits and fix the > Public IP description. We will also make the Extended Port Attribute length > depend on the actual address families and the actual number/length of > included Sub-Sub-TLVs, rather than fixed 32/64 values. The I and O bits > will be the authoritative indicators of the Local and Public IP address > families; the Length field will only describe the encoded size, and > inconsistent encodings will be treated as malformed. > > > > 1082 - O bit (Outer address scheme): > 1084 o If set to 0, indicate the inner (private) address is IPv4. > 1086 o If set to 1, indicates the inner address is IPv6. > > <major> The O bit description is a copy of the I bit description - see the > next comment, where this and the undefined "inner"/"outer" terminology are > treated in full. > > Please recompute both lengths from the figure and state them as a formula > over the present fields rather than two constants: Length = 14 + (4 or 16 > for Local IP) + (4 or 16 for Public IP) + sum of sub-sub-TLV lengths, > adjusting for the port field width per the comment at line 1164. Make the I > and O flags the sole address-family indicators, delete the > length-implies-family rules, and specify the malformed condition when the > length is inconsistent with the flags. And fix the O bit text to say "outer > (public) address". > > [Linda] We will correct the O-bit text to refer to the outer (public) > address, make the I and O bits the sole indicators of the Local and Public > IP address families, and remove the current Length-based address-family > inference. The Length will be defined from the actual encoded fields and > included Sub-Sub-TLVs, and any inconsistency between the flags and encoded > length will make the Sub-TLV malformed. > > > > 1070 * Flags (16 bits): > 1072 - Flags field starts with 8 bits which are reserved for future > 1073 use. MUST be set to 0, and ignored upon reception. > 1075 - I bit (C-PE port address or Inner address scheme): > 1077 o If set to 0, indicate the inner (private) address is IPv4. > 1079 o If set to 1, indicates the inner address is IPv6. > 1081 - O bit (Outer address scheme): > 1083 o If set to 0, indicate the inner (private) address is IPv4. > 1085 o If set to 1, indicates the inner address is IPv6. > > <major> A few related defects here, and together they make the flags field > unimplementable from its own text. > > (a) Neither term is defined, and there is no reference. "Inner" and "outer" > appear in the document only in these lines. Section 1.3 Conventions > does not define them, no section explains what they denote, and no > reference > is cited that would. > > (b) The intended meaning appears to be pre-NAT versus post-NAT, but that is > inference. The parenthetical "(private)" at lines 1077 and 1083, read > against the Extended Port Attribute's actual fields, suggests inner = the > Local IP (the WAN port's own address) and outer = the Public IP (the > address > after NAT). But the fields are named Local IP and Public IP, never "inner" > and "outer", and the mapping between the two flags and the two address > fields is stated nowhere. A reader has to guess which flag governs which > field. > > (c) "Outer" already means something else in this document. The word is used > in other places, in an unrelated and conventional sense - the outer > tunnel of the SD-WAN Hybrid Tunnel: > > > > [Linda] We will remove the undefined “inner/outer” terminology and use the > field names consistently: the I bit indicates the address family of the > Local IP field, and the O bit indicates the address family of the Public IP > field. This also avoids confusion with the unrelated use of “outer tunnel” > elsewhere in the document. > > > > 1294 Hybrid Tunnel TLV specifies the outer tunnel through which the > 1295 underlay tunnel identified by SD-WAN Node ID passes. This outer > > 1357 Endpoint represents the outer tunnel through which the underlay > > <major> So one word carries two unrelated meanings in one specification, > neither of them defined. > > (d) This is a tunnel encapsulation document. It defines a tunnel type, it > carries IPsec parameters, and it explicitly supports IPsec tunnel mode > (Section 2.3.5, line 947: "Mode = 1 indicates that the Tunnel mode is > used"). > In that context "inner address" and "outer address" have a > well-established > meaning - the addresses of the encapsulated header and of the > encapsulating > delivery header respectively - and an implementer is more likely arrive at > that > reading than for pre-NAT/post-NAT. Under the wrong reading, "the inner > address is IPv6" says something about the traffic carried over the tunnel > rather than about the WAN port's own address, which is a different field, a > different question, and a different bit setting. The two readings conflict. > > (e) If the terms are defined and the mapping is stated, a reader gets the > intent from context. Here there is no context to figure it from - an > undefined term, no mapping to the fields, a competing meaning elsewhere > in the document, and the one place the outer flag is described says > "inner" twice. > > Simplest and best (assuming that I've understand all of this correctly?): > drop "inner" and "outer" entirely and name the flags after the fields they > govern. Rename the I bit to the L bit (Local IP address family) and the > O bit to the P bit (Public IP address family), and describe each as > governing the address family of the correspondingly-named field: > > - L bit (Local IP address family): if 0, the Local IP field > contains a 32-bit IPv4 address; if 1, it contains a 128-bit IPv6 > address. > > - P bit (Public IP address family): if 0, the Public IP field > contains a 32-bit IPv4 address; if 1, it contains a 128-bit IPv6 > address. > > That resolves (a) through (e) at once, removes the collision with the > tunnel > sense of "outer", and makes the flags self-describing. It also fixes the > "128 bits, not 64" error in the previous comment, so both should be done in > the same edit. If you prefer to keep "inner" and "outer", then both > terms must be defined in Section 1.3, the definition must state explicitly > that they denote the pre-NAT and post-NAT addresses and not the > encapsulated > and encapsulating headers, the mapping to the Local IP and Public IP fields > must be stated, and the tunnel-sense uses at lines 1294, 1295, 1357, 1474 > and 1477 need a different word. That is more work. Note also the third > naming > in the same line: the I bit heading offers "C-PE port address or Inner > address scheme", two names for one bit. Whichever fix is taken, one name! > [Linda] Agree. Renaming the flags to match the fields they govern is > clearer and avoids the overloaded “inner/outer” terminology. We will rename > the I bit to L for the Local IP address family and the O bit to P for the > Public IP address family, with 0 indicating IPv4 and 1 indicating IPv6. > This also aligns with the corrected 128-bit IPv6 field size. > > 1090 * NAT Type (8 bits): an unsigned integer indicating the NAT > behavior > 1091 observed for this WAN port. The values are derived from the > 1092 legacy NAT classification model described in RFC 8489 Section 5. > > 1109 The NAT Type value is determined by the sender using NAT > discovery > 1110 procedures (e.g., STUN [RFC8489] with legacy tests [RFC8489]) or > 1111 local administrative configuration. > > <major> Section 5 of RFC 8489 is titled "STUN Message Structure" and > contains no NAT classification. RFC 8489 does not define Full Cone, > Restricted Cone, Port Restricted Cone or Symmetric NAT anywhere; that > taxonomy is from RFC 3489, and RFC 5389 removed it deliberately - it was > found not to predict NAT behaviour reliably, which is why RFC 4787 and RFC > 5382 replaced it with a mapping-behaviour / filtering-behaviour > decomposition. "STUN [RFC8489] with legacy tests [RFC8489]" cites the same > RFC twice, and the "legacy tests" are in RFC 3489. > > Beyond the citation, the substantive question is whether a single 8-bit > legacy NAT class is the right thing to signal at all. The behaviour a peer > needs to know in order to decide whether direct tunnel establishment can > work is the mapping behaviour and the filtering behaviour, which RFC 4787 > defines separately and which do not collapse cleanly onto the cone > taxonomy. > > At minimum, correct the citation: reference RFC 3489 for the legacy > classification and say plainly that it is retained for compatibility with > existing SD-WAN implementations. Better, and worth putting for your > thinking: > replace the single class with the RFC 4787 mapping-behaviour and > filtering-behaviour pair (two 4-bit or two 8-bit fields), referencing RFC > 4787 normatively, and keep the legacy classes only if deployed > implementations require them. Either way, create the IANA registry (see the > next comment and the comment at line 1885) so the value set can evolve. > > [Linda] Agree. The current RFC 8489 citation is incorrect for the legacy > cone-based NAT taxonomy. We will either reference RFC 3489 explicitly if > retaining the legacy classification for compatibility, or revise the > encoding toward the RFC 4787 mapping/filtering behavior model. In either > case, we will remove the incorrect “legacy tests [RFC8489]” text and define > the corresponding IANA registry so the value space can evolve. > > > > > 1112 to verify NAT behavior but MUST validate that the received NAT > 1113 Type field is within the range 1-7. Values outside this range > are > 1114 considered invalid and result in the Sub-TLV being treated as > > 1132 - Those are the only two valid values for this field. > > 1244 * Values outside the range 1-4 are invalid and render the > Sub-TLV > 1245 malformed. > > 1259 * Values outside the range 1-4 are invalid and render the > Sub-TLV > 1260 malformed. > > <major> Four fields define a small set of values and then make every other > value a malformed-sub-TLV condition, while Sections 6.5, 6.6 and 6.7 ask > IANA to create registries for three of those spaces (Encapsulation Types, > Connection Types, Physical Port Types). The two are incompatible: the point > of a registry is that new values get assigned, and the normative text > guarantees that any newly assigned value will be treated as malformed by > every already-deployed implementation. Because the failure is at the > sub-TLV > level, a single unknown Connection Type - say a future "6 = satellite" or > "5 > = Wi-Fi 7" - invalidates the Extended Port Attribute sub-TLV and, per > Section 2.5.2 step 3, the entire tunnel TLV. That is a > forward-compatibility > trap that will bite the first extension. The NAT Type space has the > opposite > problem: it is closed by normative text and has no registry requested at > all, so it cannot be extended even by a future Standards Track document > without an document update. > > The real distinction to introduce is malformed versus unusable, not lenient > versus strict. An unrecognised Connection Type, Port Type, Encap-Type or > NAT > Type is not a syntax error - the sub-TLV parses perfectly - so it should > not > be a malformed condition. Whether the advertisement is then usable is a > separate, local question. RFC 9830 keeps these strictly apart and is worth > following, not least because it shows that the strict answer is legitimate > once it is put in the right box: malformation in its Section 5, > unrecognised-but-well-formed content in its Section 4.2.2 as a usability > question. The consequence of that placement is the point - an unusable > update is still propagated, whereas a malformed one is withdrawn. This > document currently routes both to the same destructive outcome. > > So: redefine unknown values in these four fields as "the receiver does not > know this property", state what a receiver does with a port whose > properties > it cannot fully interpret (my suggestion: use it, but exclude it from > property-based tunnel selection), and reserve malformed for genuine > encoding > errors. Add a NAT Type registry to Section 6. The pattern is worth applying > across the document, not only in these four places. > > > > [Linda] Agree. The current text incorrectly treats > unrecognized-but-well-formed values as malformed, which prevents future > registry extensions from being usable. > > We will distinguish syntax errors from unsupported content. Unknown NAT > Type, Encap-Type, Connection Type, and Port Type values will not by > themselves make the Sub-TLV malformed. The receiver will treat the > corresponding property as unsupported and MUST NOT use that property for > property-based tunnel selection or establishment, while the advertisement > remains otherwise valid and propagatable. > > We will also add an IANA registry for NAT Type and apply the same > malformed-versus-unsupported distinction consistently across these fields. > > > > 1117 * Encap-Type (8 bits): An unsigned integer indicating the > 1118 encapsulation type supported for this WAN port. The Encap-Type > 1119 identifies the encapsulation protocol used within the IPsec > 1120 payload when IPsec SA Sub-TLVs (IPsec SA ID, IPsec SA Nonce, > IPsec > 1121 Public Key, IPsec SA Proposal, or Simplified IPsec SA) are > present > 1122 in the SD-WAN Hybrid Tunnel. This field is distinct from the > 1123 Tunnel Type field in the BGP Tunnel Encapsulation Attribute > 1124 [RFC9012]. > > <question> RFC 9012 already has an Encapsulation sub-TLV (type 1) and a > Protocol Type sub-TLV (type 2) for exactly this - identifying the > encapsulation and the protocol carried within it - and Table 1 marks both > "not valid". The document then defines a new 8-bit field with two values > and > requests a new registry for it (Section 6.5), duplicating registry space > that already exists. The note at line 1122 acknowledges the overlap and > dismisses it without giving a reason. So: why do the RFC 9012 Encapsulation > and Protocol Type sub-TLVs not serve here, and what would break if they > were > used instead of a new field and a new registry? A sentence of rationale in > the document would settle it. I am not asserting the reuse is better, only > that the choice is unexplained. > > > > [Linda] Good question. The intent is that Encap-Type is a property of an > individual WAN port carried inside the Extended Port Attribute, whereas the > RFC 9012 Encapsulation and Protocol Type Sub-TLVs describe the tunnel > associated with the route/Tunnel TLV as a whole. We will add a sentence > making this scope distinction explicit and explaining why the RFC 9012 > Sub-TLVs are not reused here. > > > > 1164 * Local Port: used by Remote SD-WAN edge node for establishing > IPsec > 1165 to this specific port. Valid values: 0x00 - 0xFFFFFFFF. > > 1173 * Public Port: The Port after the NAT. If NAT is not used, this > 1174 field is set to all-zeros. Otherwise, the value can be 0x01 to > 1175 0xFFFFFFFF. > > <major> Figure 8 gives both fields a full 32-bit row. A UDP or TCP port > number is 16 bits. Assuming these are transport ports, in which case the > fields are twice the necessary width and the stated ranges admit values > that > cannot be put on the wire - and it is undefined whether a receiver rejects > a > value above 65535 or truncates it, which is an interop question - or they > are not transport ports, in which case the document needs to say what they > are. The name ("used by Remote SD-WAN edge node for establishing IPsec to > this specific port") reads as a transport port for IKE or ESP-in-UDP. Two > consequential points: the two ranges differ from each other for no stated > reason (0x00 vs 0x01 as the low bound), and the all-zeros convention at > lines 1177-1179 collides with 0 being a legal Local Port value. Please make > both fields 16 bits with valid range 0-65535, reclaim the remaining 32 bits > as Reserved (or drop them and adjust the length formula at line 1065), and > state that Local Port 0 means unspecified if that is intended. If the > intent > was to leave room for a non-port identifier, say what it is. > > [Linda] Agree. These fields are intended to carry transport-layer port > numbers. We will change both Local Port and Public Port to 16 bits, use the > valid range 0–65535, and define value 0 as “unspecified/not applicable.” > The Extended Port Attribute length calculation will be updated accordingly. > > > 1184 Sub-TLV Error Handling: If the Extended Port Attribute Sub-TLV is > 1185 malformed (e.g., incorrect length, invalid address format, or > 1186 unrecognized NAT type), it MUST be ignored per the procedures > 1187 described in [RFC9012]. > > 1268 Underlay Network Type Sub-Sub-TLV is a MALFORMED Sub-Sub-TLV if the > 1269 fields do not fit the limits specified above. If a MALFORMED Sub- > 1270 Sub-TLV is contained in the Extended Port Attribute Sub-TLV, then > the > 1271 Extended Port Attribute Sub-TLV is MALFORMED. Per [RFC9012], a > 1272 MALFORMED Sub-TLV is ignored. > > 1479 3. Validate Extended Port Attribute Sub-TLV(s): As described in > 1480 Section 2.3.6, each Extended Port Attribute sub-TLV describes the > 1481 properties of a single WAN port. Therefore, multiple Extended > 1482 Port sub-TLVs may be present when the SD-WAN edge node has > 1483 multiple WAN ports. Each sub-TLV MUST be validated to ensure > that > 1484 the port information it contains is sufficient to support the > 1485 establishment of a tunnel to the remote peer. If any Extended > 1486 Port Attribute Sub-TLV is determined to be invalid, the entire > SD- > 1487 WAN Hybrid Tunnel TLV MUST be considered invalid. > > <major> Section 2.3.6 says ignore the sub-TLV; Section 2.3.6.1 says ignore > the sub-TLV; Section 2.5.2 step 3 says invalidate the whole TLV. Three > outcomes for one condition, inside one document - that is the core of this > comment. What it does contradict is the claim at line 1560 that the > document > "does not alter the validation behavior established in RFC 9012". It does > alter it, legitimately, for the context where it may - and says it does > not. > See issue (1). > > There is a second, independent problem in the same step. "validated to > ensure that the port information it contains is sufficient to support the > establishment of a tunnel to the remote peer" is not a testable condition - > "sufficient" is not defined anywhere, so two implementations will draw the > line differently, and the consequence (whole TLV invalid) is severe. > > Please pick one outcome and state it once, in Section 2.6.1, with Sections > 2.3.6 and 2.3.6.1 cross-referencing rather than restating. My > recommendation > is to keep the strict outcome for underlay routes and declare it, following > Section 5 of RFC 9830: a malformed Extended Port Attribute sub-TLV renders > the SD-WAN Hybrid Tunnel TLV unusable, with the RFC 7606 disposition named > explicitly. Then separate the two questions the current text conflates: > malformed (a syntactic property - length, NAT Type in range, address-family > consistency, the Public IP/Public Port both-or-neither rule at lines > 1177-1179) versus unusable (a semantic judgment - the port cannot be used > to > build a tunnel). Replace "sufficient to support the establishment of a > tunnel" with the syntactic list, and handle the semantic case as a local > matter that does not affect the validity of the advertisement. RFC 9830 > keeps these apart - malformed in its Section 5, unusable in its Section > 4.2.2 - and that separation is what this document is missing. > > > > [Linda] Agree. We will make the handling consistent and distinguish > malformed encoding from a semantically unusable port. Section 2.6.1 will > define the single normative outcome for a malformed Extended Port > Attribute, and Sections 2.3.6/2.3.6.1 will simply reference it. The > “sufficient to support tunnel establishment” test will be removed; semantic > usability will remain a local decision and will not make the advertisement > malformed. > > > > 1262 Port Speed: An unsigned 16-bit integer representing the port speed > 1263 in megabits per second (Mbps). For example, a value of 1000 > 1264 represents a port speed of 1000 Mbps (1 Gbps). The valid range > is > 1265 1-65535. A Port Speed value of 0 is invalid and renders the Sub- > 1266 TLV malformed. > > <minor> 65535 Mbps is roughly 65 Gbps, which is below current WAN port > speeds - 100G and 400G interfaces are possible at SD-WAN aggregation sites > and in the cloud-DC scenario the document itself cites, and cannot be > represented at all. Please widen the field to 32 bits in Mbps; the > sub-sub-TLV has two octets of Reserved available, so the cost is nil. > Separately, redefine a Port Speed of 0 as "unknown or not advertised" > rather > than malformed, consistent with the comment at line 1112. > > > [Linda] Agree. We will widen Port Speed to 32 bits in Mbps, using the > existing reserved space, so higher-speed WAN interfaces can be represented. > We will also define a value of 0 as “unknown or not advertised” rather than > malformed, consistent with the treatment of other well-formed but > unavailable properties. > > 1276 Client routes with NLRI of AFI/SAFI IPv4 Unicast (1/1), IPv6 (2/1), > 1277 L3VPN v4 Unicast (1/128), and IPv6 L3VPN (2/128) that use the SD-WAN > 1278 Hybrid Tunnel Type can be advertised using one of two mechanisms: > > <major> Label handling for the L3VPN AFI/SAFIs is not specified. Section > 2.4 > (line 1276) applies the mechanism to AFI/SAFI 1/128 and 2/128, which carry > an MPLS label in the NLRI. When such a route is resolved over an SD-WAN > Hybrid Tunnel whose underlay segment is IPsec with GRE or VXLAN inside, the > document never says what happens to that label - whether it is imposed and > carried inside the tunnel, whether it is discarded, or how the receiver > knows which. Section 2.4.5 (lines 1424-1432) answers a different question > with a third mechanism: for a 1/128 route over the IPsec segment of a > hybrid > tunnel there are then two VPN demultiplexers - the VPN label from the NLRI, > and the GRE Key or the VNI - with no statement of which is authoritative, > whether both are present, or how the GRE Key or VNI value is derived from > the control plane (from the RD? the RT? which octets of an 8-octet RT map > into a 24-bit VNI?). RFC 9012 already models this with the Embedded Label > Handling sub-TLV (type 9) and the MPLS Label Stack sub-TLV (type 10), both > of which Table 1 marks "not valid". The hybrid case makes it contradict: > the > same client route may traverse an MPLS underlay segment on one path and an > IPsec segment on another within the same hybrid tunnel, so the > demultiplexer > changes per underlay link for the same route. This was flagged in my RTGDIR > early review and is still open. > > Please specify label handling explicitly for 1/128 and 2/128: state whether > the Embedded Label Handling sub-TLV applies (and if so mark it valid in > Table 1), state the mapping from the control-plane VPN identity to the GRE > Key and to the VNI with field widths and truncation rules, and state which > identifier is authoritative when both are present. If interoperable label > handling over the IPsec segment is not actually specified in this document, > the honest fix is to restrict Section 2.4 to 1/1 and 2/1 and remove 1/128 > and 2/128 from scope until a document specifies it - that is better than > shipping an unimplementable case. > > [Linda] Agree. The current text does not define interoperable MPLS label > handling for L3VPN routes over the IPsec portion of the hybrid tunnel. > Rather than introduce a new label-to-GRE/VNI mapping mechanism here, we > will restrict the Client Route procedures in this document to IPv4 and IPv6 > unicast (AFI/SAFI 1/1 and 2/1) and remove AFI/SAFI 1/128 and 2/128 from > scope. > > > 1347 ignored and a Sub-TLV with an unknown type is ignored. The > SD-WAN > 1348 Hybrid Tunnel TLV only processes the first instance of a Sub-TLV > 1349 except for the IPsec SA ID Sub-TLV. > > <major> This is Section 2.4.2 step 1 - the client-route procedure, where > RFC > 9012 binds. Section 13 of RFC 9012: "The following sub-TLVs defined in this > document may appear zero or more times in a given Tunnel TLV: Protocol Type > and Color. Each occurrence of such sub-TLVs is meaningful. For example, the > Color sub-TLV may appear multiple times to assign multiple colors to a > tunnel." Table 1 marks the Color sub-TLV valid for client routes, so a > blanket first-instance-only rule silently drops colours an RFC 9012 speaker > would have honoured. Note that this compounds the comment at line 362: the > document already gives Color the wrong code point, and now also processes > only its first instance. > > > > [Linda] Agree. For Client Routes, RFC 9012 occurrence rules apply, so the > blanket “first instance only” rule is incorrect. We will remove that rule > from the Client Route procedure and rely on RFC 9012 for handling repeated > Sub-TLVs, including multiple Color and Protocol Type Sub-TLVs. > > > > 1465 If multiple Extended Port Sub-TLVs exist, the TLVs must be > 1466 validated in step 4. For all other valid Sub-TLVs (see section > 1467 2.1), only the first instance of a Sub-TLV is processed; > 1468 subsequent ones are ignored. > > <major> This is Section 2.5.2 step 1, the underlay-route procedure. There > the rule is OK in itself - no RFC 9012 sub-TLV except Tunnel Egress > Endpoint > is valid on SAFI 74, and this document may set its own multiplicity rules. > The problem there is different: Section 2.5.2 step 1, Section 2.4.2 step > 1, > Section 2.6.1 line 1577 ("local policy MUST determine which is to be > used") > and Section 2.3.6 line 1189 (first-one-wins-if-identical) give different > answers for the Extended Port Attribute alone. > > Please split the rule by context. For client routes, scope the > first-instance rule to the sub-TLVs this document defines and leave RFC > 9012's own sub-TLVs to RFC 9012 - which for Color means honouring all > occurrences. For underlay routes, state multiplicity per sub-TLV in one > place; Section 2.4 of RFC 9830 shows the pattern, a general > first-instance-wins rule that explicitly does not treat the duplicates as > malformed, plus a one-line multiplicity statement in each individual > sub-TLV > definition. Adding that one line to each of Sections 2.3.1 to 2.3.6 would > remove this whole class of contradiction. > > [Linda] Agree. We will separate the multiplicity rules by context. Client > Routes will follow RFC 9012 for RFC 9012-defined Sub-TLVs. For SAFI-74 > Underlay Routes, this document will define the multiplicity of each > SD-WAN-specific Sub-TLV consistently in its individual definition, with > duplicate well-formed instances not treated as malformed. > > > > 1361 3. Check for Multiple SD-WAN Hybrid Tunnel TLVs Multiple unique > SD- > 1362 WAN Hybrid Tunnel TLVs MAY be included in the Tunnel > Encapsulation > 1363 Attribute, but duplicate SD-WAN Hybrid Tunnel TLVs should be > 1364 ignored silently. Optionally, duplicate SD-WAN Hybrid Tunnel > TLVs > 1365 MAY be logged. > > 1537 An underlay tunnel passes through only one SD-WAN Hybrid Tunnel. > 1538 Therefore, if there are more than one SD-WAN Hybrid Tunnel TLV > within > 1539 a single Tunnel Encapsulation Attribute, the first is processed and > 1540 the subsequent SD-WAN Hybrid Tunnel TLVs are ignored. > > <major> For client routes, multiple TLVs are allowed if "unique" and > duplicates are ignored; for underlay routes, only the first is ever > processed. "Unique" and "duplicate" are not defined - identical > byte-for-byte, same Tunnel Egress Endpoint, same colour set? Two TLVs > differing only in an IPsec SA ID are presumably not duplicates, but two > differing only in a Reserved field presumably are. > > Two options. If multiple SD-WAN Hybrid Tunnel TLVs are genuinely useful on > a > client route, define "duplicate" concretely - I suggest two are duplicates > if their Tunnel Egress Endpoint sub-TLVs resolve to the same endpoint - and > state the rule once for both contexts with a normative keyword. If they are > not, the cleaner answer is Section 2.2 of RFC 9830's: forbid more than one > tunnel TLV of the type outright and treat a violation as malformed. That > removes the need to define "duplicate" at all, and Section 2.5.4's own > reasoning - "An underlay tunnel passes through only one SD-WAN Hybrid > Tunnel" - points that way for the underlay case at least. Whichever is > chosen, the two sections must agree. > > <major> Separately, on the lowercase "should" at line 1363: this is a > lowercase keyword in a sentence that is normatively load-bearing. Whether a > receiver ignores a duplicate tunnel TLV or acts on it determines which > tunnel gets built, so two implementations reading it differently will not > interwork. It needs an uppercase BCP14 keyword, alongside the definition of > "duplicate" above. > > > > [Linda] Agree. The Client Route and Underlay Route procedures should use > one consistent rule. We will allow only one SD-WAN Hybrid Tunnel TLV per > Tunnel Encapsulation Attribute; if more than one is present, the attribute > is malformed and handled according to the error procedures in Section 2.6. > This removes the undefined “unique/duplicate” distinction and the > non-normative lowercase “should”. > > > > 1407 * For IPv4/IPv6 Unicast (AFI/SAFI = 1/1 or 2/1), the Route Target > 1408 Extended Community [RFC4360] SHOULD be included. The Route > Target > 1409 value is interpreted as the VPN ID. The Route Target is > 1410 especially necessary when the SD-WAN edge node serves multiple > 1411 VPNs on its client-facing interfaces. If all client routes > belong > 1412 to a single VPN and the association is unambiguous, the Route > 1413 Target MAY be omitted. > 1415 * For VPN-IPv4/VPN-IPv6 (AFI/SAFI = 1/128 or 2/128), the RD in the > 1416 NLRI serves as the VPN ID. > > <major> The second bullet is right and the first does not work. Under 1/1 > and 2/1 the NLRI is the bare prefix, so two routes for 10.1.1.0/24 from > two > different VPNs are the same route in the Adj-RIB-In; the Route Target is a > path attribute and cannot separate them. The receiving speaker runs > best-path selection between them and keeps one. This is exactly the problem > RFC 4364's Route Distinguisher exists to solve, and the reason L3VPN uses > 1/128 rather than 1/1 with an RT. > > The mechanism does work in the restricted case where prefixes are globally > unique across all VPNs served by the SD-WAN - which is the case the second > half of the bullet describes ("If all client routes belong to a single > VPN"). But it is stated as a general mechanism for the multi-VPN case > ("especially necessary when the SD-WAN edge node serves multiple VPNs"), > which is precisely where it fails. There is a second, smaller point that > Alvaro also raised and that is still open: "When is it ok to not include > the Route Target Extended Community?" - "the association is unambiguous" > is not a testable condition for a normative SHOULD. > > Please state the applicability limit explicitly: RT-as-VPN-ID over 1/1 and > 2/1 is usable only where the address space is non-overlapping across the > VPNs carried, and multi-VPN deployments with overlapping address space MUST > use 1/128 or 2/128. Then either delete "especially necessary when the > SD-WAN > edge node serves multiple VPNs" or rewrite it to say that the RT identifies > the VPN for policy purposes but does not provide address separation. And > replace the "unambiguous" condition with a concrete one. > > > > [Linda] Agree. Since we are removing AFI/SAFI 1/128 and 2/128 from the > Client Route scope, we will also remove this VPN-ID mechanism. For AFI/SAFI > 1/1 and 2/1, a Route Target may still be used for policy, but it does not > provide address-space separation; overlapping VPN prefixes are therefore > outside the scope of this mechanism. > > > > 1420 In the data plane, SD-WAN traffic can traverse either an MPLS or > 1421 IPsec segment within a SD-WAN Hybrid Tunnel. The method for > 1422 conveying the VPN ID depends on the encapsulation: > 1424 * MPLS Segments: When the SD-WAN Hybrid Tunnel uses MPLS transport, > 1425 the MPLS label stack is used to identify the VPN per [RFC8277]. > 1426 Security is assumed to be provided by the MPLS transport. > 1428 * IPsec Segments: When traversing a public network with IPsec > 1429 encryption: For GRE encapsulation within IPsec, the GRE Key field > 1430 can carry the SD-WAN VPN ID; For VXLAN network virtualization > 1431 overlays within IPsec, the VNI (Virtual Network Identifier) field > 1432 is used to carry the VPN ID. > > <major> Independently of the label question raised earlier in this > review, this text specifies data-plane encapsulation semantics - what the > GRE Key field and the VXLAN VNI carry - in an IDR control-plane document, > with no normative language at all in a section whose content determines > interoperability; no reference to GRE (RFC 2890, which defines the Key > field) or VXLAN (RFC 7348, which defines the VNI), neither of which is > referenced anywhere in the document although Encap-Type values 1 and 2 are > GRE and VXLAN; no derivation rule from the control plane; and "Security is > assumed to be provided by the MPLS transport" stated as a bare assumption > in > a specification section. > > My recommendation is to keep the text here and specify it properly. What > it needs is to be specified rather than described: > > 1) Normative language. This text determines whether two implementations > interwork; it currently contains no BCP 14 keywords at all. > > 2) References. Cite RFC 2890 for the GRE Key field and RFC 7348 for the > VXLAN VNI, both as normative references. > > 3) Derivation. State how the SD-WAN VPN ID value is obtained from the > control plane and how it maps into each field - an 8-octet Route > Target does not fit a 32-bit GRE Key or a 24-bit VNI, so the > truncation or allocation rule has to be stated. > > 4) Precedence. State which identifier is authoritative when a route > carries both an MPLS VPN label and a GRE Key or VNI, and whether both > are present. > > 5) Per-segment behaviour. A hybrid tunnel may carry the same client > route > over an MPLS underlay segment on one path and an IPsec segment on > another, so the demultiplexer changes per underlay link for one > route. > Say what an implementation does at that boundary. > > 6) Delete "Security is assumed to be provided by the MPLS transport", or > replace it with a statement of what is actually assumed and by whom. > A > bare assumption of that kind in a specification section is not > something the Security Considerations can build on. > > [Linda] This is largely addressed by the earlier change removing AFI/SAFI > 1/128 and 2/128 and the associated MPLS-label/VPN-ID handling from scope. > We will also remove this GRE Key/VXLAN VNI VPN-ID mapping text, since the > document no longer defines a VPN demultiplexing mechanism for Client > Routes. That avoids introducing additional data-plane mapping and > precedence rules in this control-plane document. > > > > > 1495 5. Validate Next Hop: The IP address specified in the Next Hop > 1496 field MUST be reachable by the tunnels. Traffic from the > 1497 validated NLRIs must be forwarded to the next hop router over the > 1498 tunnel. > > <major> This is step 5 of the underlay route procedure (Section 2.5.2), and > the second sentence is incoherent for that NLRI. An SD-WAN Route Type 1 > NLRI > is a (Port-Local-ID, SD-WAN-Color, SD-WAN Node ID) tuple identifying a WAN > port. It is not a prefix and it has no traffic; there is nothing that could > be "traffic from the validated NLRIs". Nor is there a reason for the > underlay route's next hop to be "reachable by the tunnels" - the tunnels > are > what this NLRI is describing, so the requirement is circular. > > The document comes close to saying the right thing in Section 2.2.3 (lines > 561-570: the attributes "apply to the WAN-facing tunnel endpoints being > advertised, not to client routes") but never draws the consequence: the > SD-WAN NLRI is not installed in the forwarding table, and its next hop is a > BGP-protocol next hop for propagation purposes, not a forwarding next hop. > This is a direct symptom of issue (1) - the client-route procedure (Section > 2.4.2) and the underlay-route procedure (Section 2.5.2) were written in > parallel with the same five step headings, and step 5 was carried across > from a context where it makes sense to one where it does not. > > Please delete the second sentence of Section 2.5.2 step 5, and replace the > first with the actual requirement - that the Next Hop is validated per the > encoding rules asked for at line 291 and used for propagation, and that the > SD-WAN NLRI is not installed for forwarding. Section 4.2 of RFC 9830 gives > the sentence to model: the best route on that SAFI is not downloaded to > forwarding but passed to a separate local component. State the analogous > thing here, naming the SD-WAN tunnel manager per issue (2). > > > > [Linda] Agree. This is not addressed by the earlier changes. For an SD-WAN > Underlay Route, the NLRI describes WAN/tunnel properties and is not itself > a forwarding prefix. We will remove the traffic-forwarding sentence and > clarify that the Next Hop is validated as a reachable BGP Next Hop for the > advertising SD-WAN edge, while the SAFI-74 route is used for SD-WAN tunnel > information rather than installed as a forwarding route. > > > > 1520 Port-Local-ID (0), SD-WAN-Color (10), SD-WAN Node ID (2.2.2.2), > 1522 Port-Local-ID (0), SD-WAN-Color (20), SD-WAN Node ID (2.2.2.2), > 1525 Port-Local-ID (0), SD-WAN-Color (30), SD-WAN Node ID (2.2.2.2). > > 1695 * SD-WAN Node ID: 1.1.1.1 > > <nit> idnits reports these as instances of IP addresses that are not from > the > documentation prefixes. > > [Linda] Agree. We will replace these example addresses with addresses from > the IPv4 documentation prefixes defined in RFC 5737 so that idnits no > longer flags them. > > > > > 1555 The error handling for the tunnel encapsulation signaling > 1556 (Encapsulation Extended Community and Tunnel Encapsulation > Attribute) > 1557 in this document follows the procedures specified in Section 13 of > 1558 [RFC9012]. Unless otherwise stated, malformed or unrecognized Sub- > 1559 TLVs MUST be handled as specified in [RFC9012]. This document > 1560 defines new Sub-TLVs for Tunnel Type 25 (SD-WAN-Hybrid), but does > not > 1561 alter the validation behavior established in RFC 9012. > > <major> The final sentence is incorrect, and it is the single passage most > responsible for the confusion described in issue (1). For client routes, > where RFC 9012 does govern, the document does alter its validation > behaviour > - in at least two places where it is not free to: treating an absent > Tunnel > Egress Endpoint sub-TLV as Address Family 0 (line 346), and processing only > the first instance of any sub-TLV, which contradicts RFC 9012's rule for > the Color sub-TLV (line 1347). For underlay routes on AFI/SAFI 1/74 and > 2/74, > RFC 9012 established no validation behaviour, because Section 6 of RFC > 9012 > puts other AFI/SAFIs outside its scope. So the claim is not false there so > much as empty - and its effect is to conceal that the document is making > its > own validation choices for that SAFI, some of which are stricter than > RFC 9012's (line 1184). Those choices are defensible; presenting them as > RFC 9012 conformance is not. > > Please replace the final sentence with a statement of which RFC 9012 > procedures are inherited in which context. Something of the form: "For the > AFI/SAFIs listed in Section 6 of [RFC9012], the validation and error > handling procedures of Section 13 of [RFC9012] apply unchanged. For the > SD-WAN SAFI, which is outside the scope of [RFC9012], the procedures in > Section [X] of this document apply." Then correct the two client-route > deviations per the comments at lines 346 and 1347, and declare the > underlay-route choices per the comment at line 1184. The whole passage > should move into whichever of the three new sections it belongs to once the > split in issue (3) is done. > > [Linda] This is addressed by the earlier changes: Client Routes now follow > RFC 9012 validation and multiplicity rules, including requiring the Tunnel > Egress Endpoint Sub-TLV as specified there, while SAFI-74 Underlay Routes > use the validation and error-handling procedures defined by this document. > We will replace the current final sentence with that explicit distinction. > > > > > 1582 The SD-WAN NLRI [AFI 1/SAFI = 74] utilizes a route type field to > 1583 describe the format of the NLRI. This specification only allows an > 1584 NLRI with a type value of 1. > > 1596 The SD-WAN NLRI (AFI=1/SAFI=74) MUST be paired with Tunnel > 1597 Encapsulation attribute with a SD-WAN Hybrid tunnel TLV, If the SD- > 1598 WAN NLRI exist in an BGP UPDATE without a Tunnel Encapsulation > 1599 Attribute with a SD-WAN Hybrid tunnel TLV, the NLRI is considered > 1600 malformed and Treat-as-withdraw approach (per RFC7606). > > <major> Both passages scope themselves to AFI 1 only, while Sections 2.2.1 > and 2.4 define both 1/74 and 2/74. Taken literally, Section 2.6.2's > route-type validation and Section 2.6.3's pairing requirement do not apply > to IPv6 SD-WAN SAFI routes at all - so an implementation could accept an > IPv6 SD-WAN SAFI route with no TEA and remain conformant. That is a > substantive gap in the error handling rather than a citation slip. Please > write both as "SD-WAN SAFI routes (AFI/SAFI 1/74 and 2/74)" per the > terminology in issue (4), repair the second sentence, and check the rest of > Section 2.6 for the same AFI-1-only scoping. > > > > [Linda] Agree. We will scope both sections consistently to SD-WAN SAFI > routes using AFI/SAFI 1/74 and 2/74, and correct the pairing requirement > accordingly. We will also check the rest of Section 2.6 for any remaining > IPv4-only references. > > > > 1602 The SD-WAN NLRI SHOULD not be paired with an Encapsulation Extended > 1603 Community. If an SD-WAN NLRI is paried with an Encapsulation > 1604 Extended Community rather than a Tunnel Encapsulation Attribute, the > 1605 SD-WAN NLRI is considered malformed and the Treat-as-withdraw > 1606 approach (per [RFC7606]) SHOULD be used. > > <major> Against Section 2.5.1 (lines 1450-1452), which says "MUST NOT" > where > this says "SHOULD not", for the same condition. So, we have: a direct > normative contradiction between two sections on the same requirement; > "SHOULD not" is not a BCP 14 construction, which idnits flags and which is > real, so whichever way the requirement resolves the keyword must be "SHOULD > NOT" or "MUST NOT"; and the receiver action is a SHOULD, when whether a > route is withdrawn or accepted cannot be a local choice - one speaker > withdraws and its neighbour does not, and the RIBs diverge. Please delete > Section 2.6.3's second paragraph and keep Section 2.5.1's MUST NOT, adding > the receiver behaviour there as a MUST (treat-as-withdraw per RFC 7606). > Reconcile the first paragraph of Section 2.6.3 with Section 2.2 at the same > time - the two say the same thing in different words, which is how they > drifted apart. > > > > [Linda] This has been addressed by the earlier Section 2.6.3 cleanup. We > will also remove this remaining duplicate/inconsistent paragraph, retain > the MUST NOT requirement in Section 2.5.1, and make the receiver action a > normative MUST treat-as-withdraw per RFC 7606. > > > > 1614 It is essential to ensure that advertisements from an SD-WAN edge > 1615 node are legitimate. The RR, which maintains policy information > 1616 about which SD-WAN nodes are authorized to communicate, MUST verify > 1617 that the advertising BGP speaker is permitted to originate SD-WAN > 1618 Hybrid Tunnel information before reflecting such routes to other > 1619 peers. > > 1628 To maintain correctness and security, both the RR and BGP speakers > 1629 SHOULD validate that the client routes and associated tunnel > 1630 information are consistent with expected configurations. This > 1631 includes verifying that: > 1633 * The NextHop in the client route update matches a known SD-WAN > Node > 1634 ID. > 1636 * The tunnel's egress endpoints are reachable and authorized. > 1638 * The advertised SD-WAN Color in the underlay NLRI matches the > Color > 1639 Extended Community attached to the client route. > 1640 > > <major> Both passages carry BCP 14 keywords placed on BGP - a MUST on the > RR > and a SHOULD on "both the RR and BGP speakers" - and so read as protocol > requirements. They are not implementable as such. BGP has no notion of > which > node is "permitted to originate SD-WAN Hybrid Tunnel information", no > notion > of "expected configurations", and no way to determine that a tunnel egress > endpoint is "authorized". The document supplies no procedures for any of > it: > no source of the policy information, no encoding for it, no distribution > mechanism, no matching algorithm, no behaviour on failure beyond the bare > verb "verify". A normative keyword on an operation with no specified > procedure is not a requirement; it is an aspiration in requirement's > clothing, and an implementer cannot conform to it or fail to conform to it. > > This is the only origin-authorisation statement in the document > (issue (7)(e)), and the third bullet is the only normative statement of > the colour-correlation rule that Sections 2.4 and 2.5 depend on (see the > comments at lines 291 and 362). So the load-bearing security and > correlation > requirements of the whole mechanism rest on text that specifies nothing. > > Please consider one of the two options; either is acceptable and the choice > is yours. > (a) Reframe as applicability or deployment considerations and drop > the BCP 14 keywords: state the same content as what a deployment is > expected > to arrange, in the applicability and deployment considerations section > created by issue (5), in non-normative language - that the SD-WAN > controller > is expected to hold policy governing which edge nodes may originate which > Node IDs and Colors, and that the mechanisms in this document assume such > policy is in place. This is honest about what the document actually > delivers, > and it is consistent with Section [N].1 of the supplied text, which > already > states the closed-set assumption. > (b) Assign the onus to a named component: introduce, or extend, a > management-plane component that owns policy - either something new, or by > broadening the SD-WAN tunnel manager of issue (2) and renaming it > accordingly > ("SD-WAN Manager" would cover both tunnel lifecycle and policy). The > document > would then state that policy definition, distribution and enforcement are > the > responsibility of that component and out of scope here, with BGP's role > limited to carrying the information. If option (b) is taken, the component > name and scope in issue (2) change throughout and both should be resolved > together. > > In either case, this material does not belong in Section 2. Section 2 is > the > BGP protocol specification, and none of this is BGP protocol. One > consequential point: issue (7)(e) asks for the origin-authorisation > constraint - which Node IDs, Colors and Port-Local-IDs an authorised edge > may claim - to be stated as normative text in the specification sections, > and that placement follows whichever of (a) or (b) is chosen here. > Separately, the colour-correlation rule in the third bullet is genuinely a > protocol matter and does belong in the specification, but as part of the > interaction procedures that issue (3) creates, expressed as an > encoding-level comparison the receiver performs - not as a policy check. > > [Linda] Agree. We will treat origin authorization and expected > configuration as deployment/management policy rather than BGP protocol > requirements, and remove the BCP 14 keywords from those statements. The > color-correlation check will remain in the protocol procedures as an > explicit comparison between the Client Route Color Extended Community and > the SD-WAN-Color carried in the underlay NLRI. > > > > > 1683 3.2.1. Example creation of IPsec SA over SD-WAN Hybrid Tunnel > > <minor> No IPv6 examples. The document defines AFI 2/74, a 16-octet SD-WAN > Node ID, and IPv6 handling in the Extended Port Attribute, but every > example > is IPv4. This will likely run into problem from INT ADs during IESG review. > Please add one, using 2001:db8::/32. > > [Linda] Agree. We will add an IPv6 example to Section 3.2.1 using an > address from the 2001:db8::/32 documentation prefix, covering AFI/SAFI 2/74 > and the corresponding IPv6 SD-WAN Node ID/port information. > > > > > 1690 To establish this tunnel, C-PE1 must advertise the following > 1691 attributes required for setting up the IPsec SA: > 1693 * NextHop: 198.51.100.10 > 1695 * SD-WAN Node ID: 1.1.1.1 > 1697 * SD-WAN-Site-ID: 1502 > > <major> Three problems in the document's only end-to-end example. The > reason > this is not merely an example-quality nit is that the example and the > specification contradict, and it is at least as likely that the example > reflects what implementers actually do and the specification is the part > that is wrong! > > (a) It contradicts Section 2.5, and the contradiction points at the > specification rather than at the example. Lines 1442-1444: "Remote nodes > use > the SD-WAN Node ID carried in the SD-WAN SAFI to correlate client routes > whose NextHop address matches the SD-WAN Node ID." And Section 2.1.2, lines > 1421-1422: "The SD-WAN NLRI is originated using the loopback address of the > C-PE." In the example the NextHop is 198.51.100.10 - a WAN port address, > and > the address of the very port the example is building a tunnel to - while > the > Node ID is 1.1.1.1. They do not match, so the correlation the specification > depends on would fail. Setting the next hop to the WAN port address is the > natural thing to do when the advertisement is about that port, and it is > evidently what the example's authors expected. That suggests the > specification's correlation rule is the part that is wrong, or that it is > stated for the client-route case and has been wrongly generalised to the > SD-WAN SAFI case. Please resolve it as a specification question first - the > comment at line 291 is where the rule itself is examined - and correct the > example to match whatever comes out of that, rather than the other way > round. > > (b) SD-WAN-Site-ID is used and never defined. It appears here and at line > 1734 and nowhere else in the document - not in Section 1.3 Conventions, not > in any encoding, not in IANA. A reader cannot tell whether it is the > SD-WAN-Color, a field that was removed, or something from a companion > document. > > (c) The example demonstrates only failure, using undefined placeholders. > Lines 1761-1762: "As there is no matching transform between the WAN ports > P2 > and P2 in C-PE1 and C-PE2, respectively, no IPsec Tunnel will be > established." But both sides advertise Transform Type ENCR with Transform > ID > = 1 - the same algorithm. The only difference is the Transform Attributes, > given as "trans 1" and "trans 2" (lines 1718, 1752), which are not values > defined anywhere. So the example asserts a mismatch that its own data does > not show, and the document contains no example of a successful SA > establishment - which is the case a reader actually needs. > > A minor consistency point in the same example: the tunnel type is written > "Type = SD-WAN Hybrid Tunnel" for C-PE1 (line 1699) and "Type=SD-WAN" for > C-PE2 (line 1736). And line 1705, "IPsec information for detailed > information about the ISP", has no discernible meaning. > > Please rework the example to show a successful establishment with real > values from the IANA IKEv2 registries, correct the NextHop / Node ID > relationship to match Section 2.5 (or fix Section 2.5), define or delete > SD-WAN-Site-ID, and keep the failure case as a second, shorter example if > it > is wanted. Use RFC 5737 documentation addresses throughout, per the comment > at line 1520. > > [Linda] Agree. We will rework the example to be consistent with the > revised specification: the BGP Next Hop will be a reachable address of the > advertising SD-WAN edge and will not be required to equal the SD-WAN Node > ID; the undefined SD-WAN-Site-ID will be removed; and the example will show > a successful IPsec SA establishment using defined IKEv2 transform values > and RFC 5737 documentation addresses. We will also fix the tunnel-type > naming and remove the unclear ISP sentence. > > > > 1780 interfaces. The use of secure transport connections (e.g., BGP over > 1781 IPsec/TLS) is RECOMMENDED to ensure manageability in untrusted > 1782 environments. > > <major> The connection between secure transport and manageability is not > apparent, and this is the third statement of the transport-security > requirement at a third strength. Please delete the sentence; the comment at > line 148 places the single normative statement that replaces all three. > And BGP over TLS is not an RFC - please refer to discussions in the IESG > during the review of the accompanying BESS SD-WAN document. > [Linda] Agree. We will delete this duplicate transport-security sentence. > The single normative transport-security requirement will remain in Section > 1, and we will not cite BGP over TLS as an established RFC mechanism. > > 1784 5. Security Considerations > > 1786 This document defines BGP extensions for SD-WAN edge nodes to > 1787 advertise their attributes for establishing IPsec SAs and underlay > 1788 tunnel attributes, typically via a RR, which then propagates them to > 1789 authorized SD-WAN peers. These BGP UPDATEs may contain sensitive > 1790 information such as public keys, IPsec proposals, and nonces. In > 1791 deployments where SD-WAN edge nodes communicate with the RR over > 1792 public or untrusted networks, BGP SHOULD be run over TCP-AO secure > 1793 transport that provides authentication and integrity for this data. > > 1795 Some network operators running SD-WAN edge over public or untrusted > 1796 networks desire confidentiality as well as authentication and > 1797 integrity. In this case, network operators can consider running BGP > 1798 over new IETF technologies (e.g. BGP over QUIC > [draft-retana-idr-bgp- > 1799 quic], BGP over TLS/TCP [draft-wirtgen-bgp-tls], or Securing BGPv4 > 1800 using IPsec [draft-ward-bgp-ipsec]) which provide authentication, > 1801 confidentiality, and Integrity. > > 1803 These two sets of secure transport technologies for BGP provide > 1804 different levels of protection against tampering or interception. > 1805 These secure transport connections are needed to protect all fields, > 1806 including cryptographic attributes, from tampering or interception. > 1807 Without such protection, the system maybe vulnerable to spoofed > 1808 tunnel attributes, unauthorized route injections, or replayed IPsec > 1809 setup information. > > 1811 However, in closed or "walled garden" deployments, where SD-WAN edge > 1812 nodes and the RR (SD-WAN controller) are within a trusted, secured > 1813 environment (e.g., a private MPLS backbone or physically secured > 1814 enterprise network), the risk of interception or tampering is > 1815 significantly reduced. In such cases, the use of secure transport > is > 1816 optional, and operators may choose to run BGP over standard TCP, > 1817 based on their internal risk assessment. > > 1819 Regardless of the transport used, BGP policy enforcement remains > 1820 critical. The RR SHOULD apply strict filtering and policy controls > 1821 to validate that only authorized SD-WAN edge nodes advertise > specific > 1822 Node IDs, Route Targets, or VPN identifiers. While route origin > 1823 validation via RPKI helps, it does not cover SD-WAN-specific fields > 1824 like Tunnel attributes or SA proposals. Local policies, when > 1825 misconfigured, may introduce vulnerabilities; therefore, policy > 1826 application points SHOULD be carefully audited. > > 1828 Many of the general BGP security risks discussed here are also > 1829 covered in [RFC4271], [RFC4272], and [RFC9012]. This document > 1830 inherits those considerations and introduces no new cryptographic > 1831 requirements beyond what is described for securing BGP transport and > 1832 validating the correctness of SD-WAN tunnel attribute exchanges. > > 1834 This specification does not define deployments across fully > untrusted > 1835 networks, but if such environments are used, strong transport > 1836 security is critical and additional validation mechanisms may be > 1837 required to maintain SD-WAN tunnel and routing integrity. > > > <major> The Security Considerations analyse neither layer, and never state > the > trust model > > (a) The RR is the trust anchor of the entire solution, and the document > never says so. Section 1, at lines 173-177, does establish what the RR is: > "In the context of this document, BGP Route Reflector (RR) is the component > of the SD-WAN Controller system that receives the BGP UPDATE from SD-WAN > edges and in turn propagates the information to the intended peers that are > authorized to communicate via the SD-WAN overlay network." By that > definition the RR is the SD-WAN controller, and it is therefore inherently > the trusted nerve centre of the whole solution: every edge node's tunnel > and > security parameters pass through it, it is the only entity with a complete > view of them, and the mechanism works only insofar as it redistributes them > faithfully and to the correct peers. That is the architecture, and it is > not > a criticism of it. The defect is that this consequence is drawn nowhere - > the reader is left to infer the trust model from a definitional sentence in > the Introduction. > > Two places actively obscure it. First, Section 5 mentions the relationship > only inside the walled-garden paragraph at lines 1811-1815, where it reads > as a property of particular deployments. By Section 1's definition the RR > is > the controller in every deployment, so the trust relationship is not > deployment-dependent; only the environment it sits in is. As written, a > reader could conclude that the RR is trusted only in walled-garden > deployments, which is not the model. Second, Section 1's own framing > disclaims the centring it has just established, at lines 179-186 - see also > the comment at line 179, where that passage is separately flagged as > unfinished. > > State the trust model plainly and early - in Section 1 where the RR is > defined, and again at the top of Section 5. The supplied text for Section > [N].1 in issue (5) already carries the wording; please use it rather than > composing a second version. Then rewrite the walled-garden paragraph so > that > it is about the environment the RR sits in, not about whether the RR is > trusted. > > (b) Confidentiality is made optional exactly where it cannot be. Continuing > the same passage, lines 1815-1817: "In such cases, the use of secure > transport is optional, and operators may choose to run BGP over standard > TCP, based on their internal risk assessment." This is stated > unconditionally, with no carve-out for UPDATEs carrying the Simplified > IPsec > SA (sub-TLV 70) or IPsec Public Key (sub-TLV 68) sub-TLVs. If the two keys > at line 913 turn out to be symmetric keys, running that over plain TCP > defeats the purpose of the IPsec tunnels the document exists to establish. > Note also that TCP-AO, which the document recommends as the primary > mechanism, provides authentication and integrity but not confidentiality, > so > its own primary recommendation does not protect the key material it > carries. > Make transport confidentiality a MUST for any UPDATE carrying sub-TLV 68 or > 70, and restrict the walled-garden paragraph to deployments not using those > sub-TLVs. The single normative statement of the transport requirement > itself > is placed by the comment at line 148. > > (c) <question> Have the forward secrecy properties of security associations > established from BGP-distributed parameters been considered, and is there a > WG discussion to point at? The document says nothing about them either way. > No assertion and no comparison is intended here. Whatever the answer, the > actionable requirement is issue (5)'s: the applicability section must > record > that these properties have not been characterised. If they have been > considered, then the analysis should appear in Section 5 and the > corresponding item in the supplied text can be withdrawn. > > (d) The Rekey Counter has no anti-replay procedure. The field is defined at > lines 709-711 and the nonce is described as "a random or pseudo-random > number for preventing replay attacks" at line 717, but no section says what > a receiver does with either: whether an advertisement carrying a Rekey > Counter not greater than the stored value is rejected, what happens on > counter wrap, or how the counter survives an edge node restart. The > anti-replay machinery is present in the encoding and absent from the > procedures. This is the clearest instance of the root cause in issue (2): > the question "who consumes the Rekey Counter" has no answer in the document > because there is no stated division of labour between BGP and anything > else. > Once that boundary exists the question resolves one way or the other - > BGP-visible with a stated comparison rule, or opaque and handed over - and > either answer is fine. The fix is carried by the comment at line 584. > > (e) The authorised-but-malicious edge node is not considered. Section 3 > requires the RR to check that a speaker is permitted to originate SD-WAN > Hybrid Tunnel information (lines 1614-1619), but nothing constrains which > Node IDs, SD-WAN-Colors or Port-Local-IDs an authorised edge may claim. An > authorised edge can advertise another edge's Node ID, or claim membership > of > a Color it should not be in, and attract that traffic. State the constraint > and the receiver's validation of it: an SD-WAN edge node MUST NOT originate > an SD-WAN SAFI route whose SD-WAN Node ID is not its own, and a receiver > MUST validate the SD-WAN Node ID against the identity of the advertising > speaker before using the advertisement. Section 5 then references this as > the mitigation for the exposure. > > This one is checkable from the advertisement itself - the Node ID is on the > wire and the advertising speaker's identity is known from the session - so > it is a protocol requirement and belongs in Section 2 with the rest of the > SD-WAN SAFI procedures, subject to the destination chosen for the comment > at > line 1614. What is not protocol is the out-of-band policy governing which > edge nodes may communicate with which, and which Colors an edge is entitled > to use; those cannot be validated from the advertisement and have no > procedures, and they go wherever the comment at line 1614 is resolved to. > Keeping the two apart is the point: the wire-checkable constraint should be > normative here, and the policy should stop pretending to be. > > Overall: rewrite Section 5 around the exposures the mechanisms create at > the > BGP layer - which is all of (a), (b), (d) and (e), and none of which > requires straying into IPsec internals or into comparison with other > mechanisms. What cannot be analysed at that layer is declared in the > applicability section of issue (5) rather than attempted in Section 5. RFC > 4301 and RFC 7296 are already referenced and carry the mitigations to point > at. > > [Linda] Those issues have been largely addressed by the earlier changes. > We have already made the RR/controller trust model explicit, required > authenticated and integrity-protected BGP sessions, separated deployment > policy from BGP protocol validation, and clarified that the Rekey Counter > is opaque to BGP and handled by the IPsec implementation. We will revise > Section 5 to reflect those decisions consistently, add the confidentiality > requirement for UPDATEs carrying sensitive keying material, and state the > wire-checkable Node ID origin constraint separately from out-of-band > authorization policy. > > 1839 6. IANA Considerations > 1840 6.1. SD-WAN Overlay SAFI > > 1842 IANA has assigned SAFI = 74 as the SD-WAN SAFI. > > 1846 IANA is requested to assign a type from the BGP Tunnel Encapsulation > 1847 Attribute Tunnel Types registry > > 1856 IANA is requested to assign the following sub-Types in the BGP > Tunnel > 1857 Encapsulation Attribute Sub-TLVs registry > > <major> The IANA sections do not describe the registries as they actually > stand. All the code points this document "requests" were registered years > ago > against previous draft versions, under different names. Many names differ, > and > references are outdated. > > These are FCFS registrations, not RFC 7120 early allocations - the > tunnel-type registry is FCFS throughout and the sub-TLV range 64-125 is > FCFS > - so they carry no TEMPORARY marker and will not expire. There is nothing > to > renew, but there is a great deal to correct. Section 6.1 reports a > completed > action but not the registered name and does not ask for it to be corrected; > Sections 6.2 and 6.3 request assignments that already exist. > > Please rewrite Sections 6.1 to 6.3 as update requests, one sub-section per > registry, each stating explicitly the current registry contents, the new > Description string, and the new Reference (this RFC, with the correct > section). Note that Section 6.1's own heading calls SAFI 74 the "SD-WAN > Overlay SAFI" while the registry calls it "SD-WAN Capabilities" and the > body > calls it "the SD-WAN SAFI" - three names in one sub-section, and the > heading > names the wrong one of the two route types (issue (4)). Settle the term > first, then write the request. For Section 6.3, for example: "IANA has > previously assigned the following values in the 'BGP Tunnel Encapsulation > Attribute Sub-TLVs' registry with a reference to > draft-ietf-idr-sdwan-edge-discovery-04. IANA is requested to update the > Description and Reference for these values as follows: ..." and give the > table. Do the same for SAFI 74 and tunnel type 25. If the sub-sub-TLV > question at line 378 is resolved by making 66 a sub-sub-TLV, this is also > where the request to return code point 66 goes. And if the sub-TLV range > question at line 929 is resolved by moving to 128-255, Section 6.3 changes > shape entirely - so please settle those two before rewriting Section 6. > > > > [Linda] We have already settled two related points: code point 66 will be > returned and redefined as an Extended Port Sub-Sub-TLV, and we are keeping > the existing 64–70 Sub-TLV assignments rather than moving them to the > extended-length range. We will now rewrite Sections 6.1–6.3 as IANA update > requests, using one consistent name for SAFI 74 and updating the existing > Description and Reference fields instead of requesting new assignments. > > > > 1885 IANA is requested to create a new registry titled "SD-WAN Extended > 1886 Port Encapsulation Types" under the BGP Tunnel Encapsulation Group. > 1888 Value Type Description Reference > 1889 ----- ----------------------- ------------- > 1890 0 Reserved This document > 1891 1 GRE This document > 1892 2 VXLAN This document > 1893 3~255 Reserved for future > > 1902 0 Reserved This document > 1903 1 Wired This document > 1904 2 WIFI This document > 1905 3 LTE This document > 1906 4 5G This document > 1907 5~255 Unassigned > 1908 255 Reserved for Experimental Use > > <major> The issues here apply for other similar sections as well: > > 1) No registration policy for Section 6.5, 6.6 or 6.7. RFC 8126 requires > one. Without it IANA cannot operate the registry. > > 2) Sections 6.6 and 6.7 define 5-255 as Unassigned and then 255 as > Reserved for Experimental Use - overlapping and contradictory, and > the > indentation suggests the second line was meant to be a sub-range of > the first. A single value for Experimental Use is also an odd choice; > if experimental values are wanted, a small range is conventional. I > would ask whether they are needed at all here: these are three small, > slow-moving enumerations with no plausible pressure on the space, and > reserving the top of each range for Standards Action would be the > better hedge. > > 3) Section 6.5 says "Reserved for future" where it means Unassigned - a > Reserved range cannot be allocated at all, which is presumably not > the > intent. > > 4) Section 6.4's "Values 2-255 are reserved for future assignments" is > wrong for a 2-octet field. The Route Type field is 2 octets (lines > 469 > and 482), so the range is 2-65535. > > 5) No reference column pointing at the defining section in any of the > four new registries, and no change controller stated. Registry > entries > should point at the section that defines the item. > > 6) Two registries are missing entirely: the NAT Type values (Section > 2.3.6, values 1-7, closed by normative text with no registry - see > the > comments at lines 1090 and 1112), and the Extended Port Sub-Sub-TLV > Types namespace (see the comment at line 378). > > [Linda] Agree. We will clean up all of the new IANA registries > consistently: add an RFC 8126 registration policy and section references, > correct Reserved versus Unassigned ranges and the Route Type range, and > remove the overlapping value 255 definitions. We will also add the missing > NAT Type and Extended Port Sub-Sub-TLV Type registries, consistent with the > earlier changes. > > > > > 1925 7. References > > 1927 7.1. Normative References > > <major> Some updates are required for the normative references. > > Currently normative, but should be perhaps informative? [MEF70.1] and > [MEF70.2], used only to say what an SD-WAN is with nothing in the > encodings, > procedures or anything in the specification depending on them. > > [RFC4456], which is normative and but unused - please add it as a reference > to where RR procedures are specified. > > Currently informative, but should be normative: [RFC8221] and [RFC4835]. > But then we have a chain of obsoletion to deal with RFC 4835 -> RFC 7321 -> > RFC 8221 - this needs to be aligned. And check if the IANA IKEv2 transform > registries and RFC 7296 instead should be normative. > > Also [RFC5903] and [RFC5114], seem normative. However, RFC 5903 and RFC > 5114 > are both Informational, so making them normative creates downrefs. There > may > be better references but you will need to check with security folks. > > RFC 5925 is missing and normative. > > draft-ietf-bess-bgp-sdwan-usage is also normative and since it is in RFC Ed > Q, it is not an issue - it just needs to be called out as a downref. > > [Linda] Agree. We will update the reference classifications accordingly: > move MEF70.1/70.2 to Informative, add RFC 4456 where RR procedures are > referenced, make RFC 5925 normative, and use RFC 7296 plus the IANA IKEv2 > transform registries as the normative basis for algorithm identifiers. RFC > 4835 will be removed, RFC 8221 retained as informative algorithm-selection > guidance, and the RFC 5903/RFC 5114 downref question will be checked with > the Security review. The BESS SD-WAN document will also be identified > appropriately as a normative downref. > > > > > 1998 7.2. Informative References > > <minor> Unused references, RFC 1997, RFC 4659, RFC 4761, RFC 4762, RFC > 5701, > RFC 6793, RFC 7018 and RFC 8092 - check if you really forgot to use them or > delete them. These were all warnings from idnits that seem to have been > ignored. > > And then [Secure-EVPN], is not used but instead > [draft-ietf-bess-secure-evpn-02] > is - please fix this. I don't think this reference is really needed - it > can > use the extension provided by it but please avoid adding "hooks" to > unnecessary > documents. > > [Linda] Agree. We will remove the unused references unless they are > actually cited by the revised text, and correct the Secure-EVPN citation > inconsistency. If the Secure-EVPN reference is not needed by the final > procedures, we will remove it rather than retain an unnecessary dependency. > > > <EoRv29> > > >
- [Idr] AD evaluation review of draft-ietf-idr-sdwa… Ketan Talaulikar
- [Idr] Re: AD evaluation review of draft-ietf-idr-… Susan Hares
- [Idr] Re: AD evaluation review of draft-ietf-idr-… Ketan Talaulikar
- [Idr] Re: AD evaluation review of draft-ietf-idr-… Linda Dunbar
- [Idr] Re: AD evaluation review of draft-ietf-idr-… Ketan Talaulikar
- [Idr] Revision for adding Ketan's comments (RE: A… Linda Dunbar
- [Idr] Re: Revision for adding Ketan's comments (R… Ketan Talaulikar
- [Idr] Re: Revision for adding Ketan's comments (R… Susan Hares
- [Idr] Re: Revision for adding Ketan's comments (R… Linda Dunbar
- [Idr] Re: Revision for adding Ketan's comments (R… Susan Hares
- [Idr] Re: Revision for adding Ketan's comments (R… Keyur Patel
- [Idr] Re: Revision for adding Ketan's comments (R… Susan Hares
- [Idr] Re: Revision for adding Ketan's comments (R… Susan Hares
- [Idr] Re: AD evaluation review of draft-ietf-idr-… Susan Hares
- [Idr] Re: AD evaluation review of draft-ietf-idr-… Ketan Talaulikar