Re: [Idr] AD Review of draft-ietf-idr-rfc7752bis-10
Ketan Talaulikar <ketant.ietf@gmail.com> Wed, 21 September 2022 13:40 UTC
Return-Path: <ketant.ietf@gmail.com>
X-Original-To: idr@ietfa.amsl.com
Delivered-To: idr@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A2223C14F74C; Wed, 21 Sep 2022 06:40:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.105
X-Spam-Level:
X-Spam-Status: No, score=-7.105 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_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id VtvNmBxANNNE; Wed, 21 Sep 2022 06:40:21 -0700 (PDT)
Received: from mail-vs1-xe2e.google.com (mail-vs1-xe2e.google.com [IPv6:2607:f8b0:4864:20::e2e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EB5A6C14F738; Wed, 21 Sep 2022 06:40:20 -0700 (PDT)
Received: by mail-vs1-xe2e.google.com with SMTP id o123so6758882vsc.3; Wed, 21 Sep 2022 06:40:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=zzp6NqHlKCdcqlYPvqhJcQXZoq8UlHffvhkQEkCYjZ8=; b=MQC1c9bN5+c0NyyVCAuVJjfLiAkfHz+b9/O54DTzFCSX5j6S0F/Wj4ESSdUKl+2+hS vzuTmBLXsNhlCrBGCXrBH5z9A3/yxYawYNI/Qy0L21mrcI8JLZhS0LPRQFF4x+e48q24 Z/dSDBQzHZasoQtHTJyz69OxhpaWrKQP/IkZaWmDWu3uqQR/KiuqiqxBvSRvV3jBBsOd u1vU29KnfZ3RSqzsyMNrJ6MsEazYOgVu5MuJ5N+nWniU2X/vy1Cukns9yv+h3KGZg/TX nVIh594g+vV/XZpJS0n34BrHqenTyaVTp7G5hrf6D6RDXbNClyA+klddk86akA1tbxdT 3//A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=zzp6NqHlKCdcqlYPvqhJcQXZoq8UlHffvhkQEkCYjZ8=; b=JocL2Bnj72yebWVCREDLRu91db6H3gXLV2RN3SvytDedqvwNT8aQXKhKSIEHOjC6O2 dU0VzKpTKAu4Ld7inFKRPiVZrSVVfAThyocZQP12C38FzE2VpoNgSjRpoCSpvcwc7mRC Dy3pS1GTyk42lGNpq/cTwkX1GVzIidJyZ9e61N80eSsrMF5kuv4J4xhHHpP+T5nP4oHG WDgNuENcPRZ9DxUqMnep5G62pLnpFRixvi/JheR/1yCMq++AWrCzibgaogE+CrbVt9MX tP7y08/JBYFUUJLmPI+ANltQxd8vb6OM946EU2xBEw+tyJwxiYFo7IvD3V6P+ABniEnt CCVw==
X-Gm-Message-State: ACrzQf1yg7lqk4YhJS96KGsSyj6HeXE8PZrX46gw+g7UW5mJe6id6/bt qV3K09c7yT7y6S0UztydoV3GjxLvew2nHrzrxzs=
X-Google-Smtp-Source: AMsMyM560Xzrv51RwYNpLZL3CejlTnrhTAMWG5x95x61OOKV8NLejBghpxzWb6OtpBr+naJxuVmYbf9TsqFhhXAzwW4=
X-Received: by 2002:a05:6102:304e:b0:398:c21f:cbaa with SMTP id w14-20020a056102304e00b00398c21fcbaamr11107970vsa.33.1663767619465; Wed, 21 Sep 2022 06:40:19 -0700 (PDT)
MIME-Version: 1.0
References: <CAMMESszHeVAuQ2qW+M7rrwMoWFBR5kqdGqE8841rKhNX_ruOPA@mail.gmail.com>
In-Reply-To: <CAMMESszHeVAuQ2qW+M7rrwMoWFBR5kqdGqE8841rKhNX_ruOPA@mail.gmail.com>
From: Ketan Talaulikar <ketant.ietf@gmail.com>
Date: Wed, 21 Sep 2022 19:10:06 +0530
Message-ID: <CAH6gdPxmzxb9eADf37MFLjby50+pFRBVOqrodgbYy37Rz2Akrw@mail.gmail.com>
To: Alvaro Retana <aretana.ietf@gmail.com>
Cc: draft-ietf-idr-rfc7752bis@ietf.org, Jeff Haas <jhaas@juniper.net>, idr-chairs@ietf.org, idr@ietf.org
Content-Type: multipart/alternative; boundary="000000000000f2776405e930159f"
Archived-At: <https://mailarchive.ietf.org/arch/msg/idr/Dg8iu86r1TcT6VZM4ZM9nb7xZw0>
Subject: Re: [Idr] AD Review of draft-ietf-idr-rfc7752bis-10
X-BeenThere: idr@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Inter-Domain Routing <idr.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/idr>, <mailto:idr-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/idr/>
List-Post: <mailto:idr@ietf.org>
List-Help: <mailto:idr-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/idr>, <mailto:idr-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 21 Sep 2022 13:40:25 -0000
Hi Alvaro, Thanks for your detailed review and comments/feedback. I will work on them and get back with updates next week. Thanks, Ketan On Wed, Sep 21, 2022 at 1:00 AM Alvaro Retana <aretana.ietf@gmail.com> wrote: > Ketan: > > Hi! Thanks for the work and time you have put into this document! > > I focused my review on the diffs and the effect they may have on the > original text. Please see detailed comments below. > > > Thanks! > > Alvaro. > > > > [Line numbers from idnits.] > > ... > 65 Table of Contents > > [nit] This is a long TOC -- consider reducing the detail from a depth > of 3 (4.2.*) to a depth of 2 (4.*). That may reduce the size by about > 30%. > > > ... > 133 1. Introduction > > 135 The contents of a Link-State Database (LSDB) or of an IGP's > Traffic > 136 Engineering Database (TED) describe only the links and nodes > within > 137 an IGP area. Some applications, such as end-to-end Traffic > 138 Engineering (TE), would benefit from visibility outside one > area or > 139 Autonomous System (AS) in order to make better decisions. > > [] The general description and motivation (including §2) are centered > around IGP-derived information. But that is not the only use case as > information from other sources can also be transported. It would be > very nice if some text was included to that effect, maybe at the end > of this section, or the start of section 2. > > This document focuses its descriptions around the propagation > of IGP-derived information...in general, the procedures apply > to other sources... > > > ... > 159 A router maintains one or more databases for storing link-state > 160 information about nodes and links in any given area. Link > attributes > 161 stored in these databases include: local/remote IP addresses, > local/ > 162 remote interface identifiers, link metric, and TE metric, link > 163 bandwidth, reservable bandwidth, per Class-of-Service (CoS) > class > 164 reservation state, preemption, and Shared Risk Link Groups > (SRLGs). > 165 The router's BGP process can retrieve topology from these LSDBs > and > 166 distribute it to a consumer, either directly or via a peer BGP > 167 speaker (typically a dedicated Route Reflector), using the > encoding > 168 specified in this document. > > [minor] s/BGP process/BGP-LS process > > This may be a good place to introduce the BGP-LS acronym, which is not > defined anywhere in the document. > > > ... > 173 +-----------+ > 174 | Consumer | > 175 +-----------+ > 176 ^ > 177 | > 178 +-----------+ +-----------+ > 179 | BGP | | BGP | > 180 | Speaker |<----------->| Speaker | > +-----------+ > 181 | RR1 | | RRm | | Consumer > | > 182 +-----------+ +-----------+ > +-----------+ > 183 ^ ^ ^ ^ > 184 | | | | > 185 +-----+ +---------+ +---------+ | > 186 | | | | > 187 +-----------+ +-----------+ +-----------+ > 188 | BGP | | BGP | | BGP | > 189 | Speaker | | Speaker | . . . | Speaker | > 190 | R1 | | R2 | | Rn | > 191 +-----------+ +-----------+ +-----------+ > 192 ^ ^ ^ > 193 | | | > 194 IGP IGP IGP > > 196 Figure 1: Collection of Link-State and TE Information > > [minor] This figure now includes router names, which is good for later > identification and explanations. I understand the general BGP > distribution through route reflectors and figured that to be the > reason for naming the nodes in the middle RRx. However, there is no > specific tie-in made between the speakers in the middle row and a > route reflector function. OTOH, §4.9 mentions a route reflector > (abbreviated as RR), but then figure 31 names that BGP-LS speaker "R0" > (not RR0 to follow the naming here). > > All this is to say that the first inclination anyone familiar with BGP > has is to associate "RR" with a route reflector. But that doesn't > seem to be the use in Figure 1 -- IOW, I don't see the need to label > BGP Speakers differently. > > In the end, I'm just looking for consistency. > > > ... > 339 3. BGP Speaker Roles for BGP-LS > > 341 In the illustration shown in Figure 1, the BGP Speakers can be > seen > 342 playing different roles in the distribution of information > using BGP- > 343 LS. This section introduces terms that explain the different > roles > 344 of the BGP Speakers which are then used through the rest of this > 345 document. > > 347 o BGP-LS Producer: The BGP Speakers R1, R2, ... Rn, originate > link- > 348 state information from their underlying link-state IGP > protocols > 349 into BGP-LS. If R1 and R2 are in the same IGP area, then > likely > 350 they are originating the same link-state information into > BGP-LS. > 351 R1 may also source information from sources other than IGP, > e.g. > 352 its local node information. The term BGP-LS Producer refers > to > 353 the BGP Speaker that is originating link-state information > into > 354 BGP. > > [major] Please first define the term and then illustrate the function. > For example: > > BGP-LS Producer: The term BGP-LS Producer refers to... [Then include > examples..] > > > [minor] "If R1 and R2 are in the same IGP area, then likely they are > originating the same link-state information into BGP-LS. R1 may also > source information from sources other than IGP, e.g. its local node > information." > > These two sentences, while true, are not needed as they include > concepts that don't seem relevant -- both at this point and in > general. > > - "IGP area" is only mentioned *before* this point, so the duplication > of information hinted here doesn't seem important > > - this is the only place (except for when the Protocol-ID is defined) > that other sources are mentioned > > A way to make these points relevant would be to provide more details > about them (elsewhere). > > > [nit] s/the BGP Speaker/a BGP Speaker > > > [major] "originating link-state information" > > It sounds obvious and implicit that the BGP-LS information comes from > the IGP LSDB. However, this fact is mentioned only in passing (and in > a non-normative way) in the the Introduction: > > The router's BGP process can retrieve topology from these LSDBs and > distribute it to a consumer, either directly or via a peer BGP > speaker (typically a dedicated Route Reflector), using the encoding > specified in this document. > > [There's also some related text in the new "Handling of Unreachable > IGP Nodes" section.] > > Please be specific here as to where the information comes from -- and > how it has to be present in the LSDB for the BGP-LS Producer to > originate it. > > > 356 o BGP-LS Consumer: The BGP Speakers RR1 and Rn are handing off > the > 357 BGP-LS information that they have collected to a consumer > 358 application. The BGP protocol implementation and the > consumer > 359 application may be on the same or different nodes. The term > BGP- > 360 LS Consumer refers to the consumer application/process and > not the > 361 BGP Speaker. This document only covers the BGP > implementation. > 362 The consumer application and the design of the interface > between > 363 BGP and consumer application may be implementation specific > and > 364 outside the scope of this document. > > [] As above, please define and then illustrate... > > > [minor] Figure 2 and 3 show the interaction with the PCE and ALTO > servers (aka consumers) to be done using "BGP with Link-State NLRI" -- > but that is not what is specified here. > > > 366 o BGP-LS Propagator: The BGP Speaker RRm propagates the BGP-LS > 367 information between the BGP Speaker Rn and the BGP Speaker > RR1. > 368 The BGP implementation on RRm is doing the propagation of > BGP-LS > 369 updates and performing BGP best path calculations. > Similarly, the > 370 BGP Speaker RR1 is receiving BGP-LS information from R1, R2 > and > 371 RRm and propagating the information to the BGP-LS Consumer > after > 372 performing BGP best path calculations. The term BGP-LS > Propagator > 373 refers to the BGP Speaker that is performing BGP protocol > 374 processing on the link-state information. > > [] As above, please define and then illustrate... > > > [minor] Following on my comment about naming nodes in Figure 1 as RRx, > the definition of a BGP-LS Propagator sounds to me as what a route > reflector does. There's one exception: even through you don't mention > it, I'm assuming that Rn can also be a BGP-LS Propagator. IOW, not > only does the BGP-LS Propagator have a route reflector-like function > between BGP speakers, but it also propagates to the BGP-LS Consumer. > > I wonder if explaining the functionality in terms of a route reflector > might make it easier for the reader to understand the processing done, > at least between BGP speakers. [Just a suggestion, no action > required.] > > > [major] s/performing BGP best path calculations/running the BGP > Decision Process/g > > That is the rfc4271 terminology. There are a couple of "best-path" > later on too. > > > [major] What exactly do you mean by "BGP protocol processing on the > link-state information"? I assume you mean (as mentioned) finding the > best route and propagating. Is there anything else? The part about > "processing on the link-state information" gives the impression that > there might be something else (see the comment below about "performing > some of the validation and processing on behalf of the BGP-LS > Consumer"). > > > 376 The above roles are not mutually exclusive. The same BGP > Speaker may > 377 be the producer for some link-state information and propagator > for > 378 some other link-state information while also providing this > 379 information to a consumer application. Nothing precludes a BGP > 380 implementation performing some of the validation and processing > on > 381 behalf of the BGP-LS Consumer as long as it does not impact the > 382 semantics of its role as BGP-LS Propagator as described in this > 383 document. > > [minor] s/be the producer for/be the BGP-LS Producer of > > > [minor] s/propagator/BGP-LS Propagator > > > [minor] s/consumer application/BGP-LS Consumer > > > [major] "Nothing precludes a BGP implementation performing some of the > validation and processing on behalf of the BGP-LS Consumer as long as > it does not impact the semantics of its role as BGP-LS Propagator as > described in this document." > > s/BGP implementation/BGP speaker > > The definition of BGP-LS Consumer clearly says that the BGP > implementation and the consumer application are independent of each > other. How can a BGP speaker perform "validation and processing on > behalf of the BGP-LS Consumer" if the operation of, and the interface > to, the BGP-LS Consumer are out of scope? > > What type of "validation and processing" beyond basic BGP processing > are you referring to? By "basic" BGP processing I mean: UPDATE error > handling (§6.3/rfc4271) and UPDATE message handling (§9/rfc4271) -- > IOW, nothing explicitly related to the content of what is specified > in this document. > > I don't understand what you mean by "the semantics of its role as > BGP-LS Propagator" and what the impact of that may be. > > Also, not all BGP-LS Propagators have a related BGP-LS Consumer > associated to them. Are you expecting all BGP-LS Propagators to > perform checks "on behalf of the BGP-LS Consumer" even if no BGP-LS > Consumer is attached? > > > ... > 389 4. Carrying Link-State Information in BGP > ... > 404 This section mainly describes the procedures at a BGP-LS > Producer > 405 that originate link-state information into BGP-LS. > > [nit] s/at a BGP-LS Producer that originate/for a BGP-LS Producer to > originate > > > 407 4.1. TLV Format > ... > 424 The Length field defines the length of the value portion in > octets > 425 (thus, a TLV with no value portion would have a length of > zero). The > 426 TLV is not padded to 4-octet alignment. Unknown and unsupported > 427 types MUST be preserved and propagated within both the NLRI and > the > 428 BGP-LS Attribute. The presence of unrecognized or unexpected > TLVs > 429 MUST NOT result in the NLRI or the BGP-LS Attribute being > considered > 430 as malformed. > > [major] What is the difference between "unknown", "unsupported", > "unrecognized", and "unexpected"? All these words are used above (and > in other places) to (apparently) mean similar things. If these terms > have different meanings, please be clear about the distinction. If > they mean the same thing, please use one set or clarify that they are > all the same. > > In the text above... If "unknown and unsupported" is the same as > "unrecognized or unexpected", then there's some redundancy. > > > ... > 443 All TLVs within the NLRI that are not specified as mandatory are > 444 considered optional. All TLVs within the BGP-LS Attribute are > 445 considered optional unless specified otherwise. > > [minor] "TLVs...not specified as mandatory are considered optional" > > Ok. > > From a BGP-LS point of view, and keeping in mind that this document > specifies the BGP behavior, what is the significance of classifying > the TLVs this way? I ask because this is one of the changes with > respect to rfc7752, but the BGP-LS Propagators don't check for > mandatory TLVs to be present (§7.2.2). > > The classification seems inconsequential to me given that it is not > used. I assume the unwritten expectation is that the BGP-LS Consumer > will check. Is there anything else? > > > ... > 451 When there are multiple BGP-LS Producers originating the same > link- > 452 state information, implementation variations of BGP-LS > Producers may > 453 result in the generation of different and inconsistent BGP-LS > updates > 454 for the same link-state object based on the inclusion or > exclusion of > 455 optional TLVs. An inconsistency between BGP-LS Producers with > 456 regards to the inclusion of optional TLVs in the NLRI results in > 457 multiple NLRIs being generated for the same link-state object. > A > 458 BGP-LS Consumer would need the ability to merge such duplicate > 459 updates to handle such situations. An inconsistency between > BGP-LS > 460 Producers with regards to the inclusion of optional TLVs in the > BGP- > 461 LS Attribute results in one of them being delivered to a BGP-LS > 462 Consumer as part the BGP propagation and best-path selection > 463 procedures in most typical deployments. This can result in a > BGP-LS > 464 Consumer missing out on some of the information in a potentially > 465 unpredictable manner. The use of BGP-LS Producers that have a > 466 consistent support for the origination of optional TLVs between > them > 467 can help mitigate such situations for the BGP-LS Consumers. > > [major] "implementation variations" > > Isn't the job of the specifications (including this one!) to be clear > enough guarantee interoperability? If the specifications are clear > then we don't need to worry about implementation variations. If the > specifications are not clear then we should fix them! > > I know this text resulted from the discussion about BGP-LS Producers > inconsistently advertising information, specifically optional TLVs. > However, to support a specific feature the origination of the > corresponding TLVs becomes necessary. It seems to me that beyond > "implementation variations" we're talking about inconsistent > configuration (and maybe both). > > > 469 4.2. The Link-State NLRI > ... > 486 New Link-State NLRI Types may be introduced in the future. > Since > 487 supported NLRI type values within the address family are not > 488 expressed in the Multiprotocol BGP (MP-BGP) capability > [RFC4760], it > 489 is possible that a BGP speaker has advertised support for > Link-State > 490 but does not support a particular Link-State NLRI type. To > allow the > 491 introduction of new Link-State NLRI types seamlessly in the > future, > 492 without the need for upgrading all BGP speakers in the > propagation > 493 path (e.g. a route reflector), this document deviates from the > 494 default handling behavior specified by [RFC7606] for Link-State > 495 address-family. An implementation MUST handle unrecognized > Link- > 496 State NLRI types as opaque objects and MUST preserve and > propagate > 497 them. > > [minor] s/advertised support for Link-State/advertised support for BGP-LS > > > ... > 625 A router MAY run multiple protocol instances of OSPF or ISIS > whereby > 626 it becomes a border router between multiple IGP domains. Both > OSPF > 627 and IS-IS MAY also run multiple routing protocol instances over > the > 628 same link. See [RFC8202] and [RFC6549]. These instances define > 629 independent IGP routing domains. The Identifier field carries a > 630 64-bit BGP-LS Instance Identifier (Instance-ID) number that is > used > 631 to identify the IGP routing domain where the NLRI belongs. The > NLRIs > 632 representing link-state objects (nodes, links, or prefixes) > from the > 633 same IGP routing instance MUST have the same Identifier field > value. > > [major] "A router MAY run multiple protocol instances...MAY also run > multiple routing protocol instances over the same link" > > These are statements of fact, not Normative options resulting from BGP-LS. > > s/MAY/may > > > [nit] "See [RFC8202] and [RFC6549]." > > I don't think these references are needed. > > > [minor] The figures were updated to octets: s/64-bit/8-octet > > > [major] "BGP-LS Instance Identifier (Instance-ID)" > > The figures above don't use either of these names, they all use > "Instance". Please be consistent. Looks like most of the text uses > "Instance-ID", but there are also some mentions of "Identifier field". > > > 635 NLRIs with different Identifier field values MUST be considered > to be > 636 from different IGP routing instances. The Identifier field > value 0 > 637 is RECOMMENDED to be used when there is only a single protocol > 638 instance in the network where BGP-LS is operational. > > [major] "NLRIs with different Identifier field values MUST be > considered to be from different IGP routing instances." > > This sentence seems to be a restatement of the "Unique BGP-LS > Instance-ID values MUST be assigned" phrase below -- or maybe the > phrase below is a restatement of this one. Please consolidate the > guidance. > > > 640 An implementation that supports multiple IGP instances MUST > support > 641 the configuration of unique BGP-LS Instance-IDs at the routing > 642 protocol instance level. The network operator MUST assign > consistent > 643 BGP-LS Instance-ID values on all BGP-LS Producers within a > given IGP > 644 domain. Unique BGP-LS Instance-ID values MUST be assigned to > routing > 645 protocol instances operating in different IGP domains. This > allows > 646 the BGP-LS Consumer to build an accurate segregated multi-domain > 647 topology based on the Identifier field even when the topology is > 648 advertised via BGP-LS by multiple BGP-LS Producers in the > network. > > [major] "MUST assign consistent BGP-LS Instance-ID values" > > If you mean "the same", please say so. Otherwise, what does > "consistent" mean in this case? > > > [minor] "The network operator MUST assign consistent BGP-LS > Instance-ID values on all BGP-LS Producers within a given IGP domain." > > It seems to me that this requirement can have a significant impact on > the operation of the network -- both when configured correctly > (configuration maintenance, etc.) as well as if not. Please include > some text about this (operational cost) in §7.1. > > > [nit] s/allows the BGP-LS Consumer/can allow the BGP-LS Consumer > > Given that the operation of the BGP-LS Consumer is out of scope. > > > [nit] It seems to me that the last sentence is a run-on. Perhaps cut > the last part ("...even when the topology..."). > > > 650 When the above-described semantics and recommendations are not > 651 followed, a BGP-LS Consumer may see duplicate link-state > objects for > 652 the same node, link, or prefix when there are multiple BGP-LS > 653 Producers deployed. This may also result in the BGP-LS > Consumers > 654 getting an inaccurate network-wide topology. > > [major] "duplicate link-state objects" are not an issue, unless they > have different Instance-IDs. IOW, the description above focusses on > the effect of having "multiple BGP-LS Producers deployed" and not on > the root cause: misconfiguration. > > > 656 When adding, removing, or modifying a TLV/sub-TLV from a > Link-State > 657 NLRI, the BGP-LS Producer MUST withdraw the old NLRI by > including it > 658 in the MP_UNREACH_NLRI. Not doing so can result in duplicate > and in- > 659 consistent link-state objects hanging around in the BGP-LS > table. > > [nit] Move this paragraph to the end of this section, after the > descriptors have been introduced as TLVs. > > > ... > 668 4.2.1. Node Descriptors > > 670 Each link is anchored by a pair of Router-IDs that are used by > the > 671 underlying IGP, namely, a 48-bit ISO System-ID for IS-IS and a > 32-bit > 672 Router-ID for OSPFv2 and OSPFv3. An IGP may use one or more > 673 additional auxiliary Router-IDs, mainly for Traffic Engineering > 674 purposes. For example, IS-IS may have one or more IPv4 and > IPv6 TE > 675 Router-IDs [RFC5305] [RFC6119]. These auxiliary Router-IDs > MUST be > 676 included in the node attribute described in Section 4.3.1 and > MAY be > 677 included in the link attribute described in Section 4.3.2. The > 678 advertisement of the TE Router-IDs helps a BGP-LS Consumer to > 679 correlate multiple link-state objects (e.g. in different IGP > 680 instances or areas/levels) to the same node in the network. > > [major] "Router-IDs MUST be included in the node attribute described > in Section 4.3.1 and MAY be included in the link attribute described > in Section 4.3.2." > > To avoid any potential confusion, please be specific about which TLVs > are to be used. It seems that in both cases the same TLVs (1028/1029) > are to be used, right? > > > [nit] s/helps a BGP-LS Consumer to correlate/can help a BGP-LS > Consumer to correlate > > Given that the operation of the BGP-LS Consumer is out of scope. > > > ... > 757 4.2.1.4. Node Descriptor Sub-TLVs > ... > 775 Autonomous System: Opaque value (32-bit AS Number). This is an > 776 optional TLV. The value SHOULD be set to the AS Number > associated > 777 with the BGP process originating the link-state > information. An > 778 implementation MAY provide a configuration option on the > BGP-LS > 779 Producer to use a different value; e.g., to avoid collisions > when > 780 using private AS numbers. > > 782 BGP-LS Identifier: Opaque value (32-bit ID). This is an > optional > 783 TLV. In conjunction with Autonomous System Number (ASN), > uniquely > 784 identifies the BGP-LS domain. The combination of ASN and > BGP-LS > 785 ID MUST be globally unique. All BGP-LS speakers within an > IGP > 786 flooding-set (set of IGP nodes within which an LSP/LSA is > flooded) > 787 MUST use the same ASN, BGP-LS ID tuple. If an IGP domain > consists > 788 of multiple flooding-sets, then all BGP-LS speakers within > the IGP > 789 domain SHOULD use the same ASN, BGP-LS ID tuple. > > [major] This description and the text at the end of this section > conflicts. For example, the requirement that the "combination of ASN > and BGP-LS ID MUST be globally unique" conflicts with the > recommendation (below) to use 0 as the default value. > > Please include the current description here. More comments below. > > > ... > 799 IGP Router-ID: Opaque value. This is a mandatory TLV when > 800 originating information from IS-IS, OSPF, direct or static. > For > 801 an IS-IS non-pseudonode, this contains a 6-octet ISO Node-ID > (ISO > 802 system-ID). For an IS-IS pseudonode corresponding to a LAN, > this > 803 contains the 6-octet ISO Node-ID of the Designated > Intermediate > 804 System (DIS) followed by a 1-octet, nonzero PSN identifier (7 > 805 octets in total). For an OSPFv2 or OSPFv3 non-pseudonode, > this > 806 contains the 4-octet Router-ID. For an OSPFv2 pseudonode > 807 representing a LAN, this contains the 4-octet Router-ID of > the > 808 Designated Router (DR) followed by the 4-octet IPv4 address > of the > 809 DR's interface to the LAN (8 octets in total). Similarly, > for an > 810 OSPFv3 pseudonode, this contains the 4-octet Router-ID of > the DR > 811 followed by the 4-octet interface identifier of the DR's > interface > 812 to the LAN (8 octets in total). The TLV size in combination > with > 813 the protocol identifier enables the decoder to determine the > type > 814 of the node. For Direct or Static configuration, the value > SHOULD > 815 be taken from an IPv4 or IPv6 address (e.g. loopback > interface) > 816 configured on the node. > > [major] "the value SHOULD be taken from an IPv4 or IPv6 address" > > When is it ok not to? Why is this recommended and not required? It > seems to me that using a configured address is convenient, but just > that. > > > 818 There can be at most one instance of each sub-TLV type present > in any > 819 Node Descriptor. The sub-TLVs within a Node Descriptor MUST be > 820 arranged in ascending order by sub-TLV type. This needs to be > done > 821 to compare NLRIs, even when an implementation encounters an > unknown > 822 sub-TLV. Using stable sorting, an implementation can do a > binary > 823 comparison of NLRIs and hence allow incremental deployment of > new key > 824 sub-TLVs. > > [major] "There can be at most one instance of each sub-TLV type > present in any Node Descriptor." > > What should the receiver do if the there is more than one instance of a > sub-TLV? > > > 826 The BGP-LS Identifier was introduced by [RFC7752] and its use is > 827 being deprecated by this document. Implementations MUST > continue to > 828 support this sub-TLV for backward compatibility. The default > value > 829 of 0 is RECOMMENDED to be used when a BGP-LS Producer includes > this > 830 sub-TLV when originating information into BGP-LS. > Implementations > 831 MAY provide an option to configure this value for backward > 832 compatibility reasons. The use of the Instance-ID in the > Identifier > 833 field is the RECOMMENDED way of segregation of different IGP > domains > 834 in BGP-LS. > > [major] "MUST continue to support this sub-TLV for backward compatibility" > > I'm assuming that the expectation is that eventually no one will use > this TLV, right? What does "MUST continue to support" mean? Do you > mean that support shouldn't stop immediately so that there's a > graceful transition, or that it has to be supported forever? The text > implies forever. > > What about new implementations? The text includes "continue to > support", which presumably means that an implementation did support > the TLV at some point. > > All this is to say that because "unknown and unsupported types MUST be > preserved and propagated" (from $4.1) then it would be ok if some > implementations stopped supporting it -- or if there was a mix of > support in the network. Am I missing something? > > > [major] "is the RECOMMENDED way" > > This phrase sounds like a statement of fact, not a Normative > recommendation. > > Even if s/RECOMMENDED/recommended, the use of the Instance-ID is not > just recommended, it is *the* way to do it, right? > > > 836 4.2.2. Link Descriptors > > 838 The Link Descriptor field is a set of Type/Length/Value (TLV) > 839 triplets. The format of each TLV is shown in Section 4.1. The > Link > 840 Descriptor TLVs uniquely identify a link among multiple parallel > 841 links between a pair of anchor routers. A link described by > the Link > 842 Descriptor TLVs actually is a "half-link", a unidirectional > 843 representation of a logical link. To fully describe a single > logical > 844 link, two originating routers advertise a half-link each, i.e., > two > 845 Link NLRIs are advertised for a given point-to-point link. > > 847 A BGP-LS Consumer should not consider a link between two nodes > as > 848 being available unless it has received the two Link NLRIs > 849 corresponding to the half-link representation of that link from > both > 850 the nodes. This check is similar to the 'two-way connectivity > check' > 851 that is performed by link-state IGPs and is also required to be > done > 852 by BGP-LS Consumers of link-state topology. > > [major] The operation of the consumer application is out of scope. > This document can't require or recommend anything. > > OTOH, it can describe what the intent is with respect to the > "half-link" discussion in the previous paragraph, for example: > > The Link Descriptor field is a set of Type/Length/Value (TLV) > triplets. The format of each TLV is shown in Section 4.1. The Link > Descriptor TLVs uniquely identify a link among multiple parallel > links between a pair of anchor routers. A link described by the Link > Descriptor TLVs actually is a "half-link", a unidirectional > representation of a logical link. > > A link between two nodes is not considered complete (or available) > unless it is described by the two Link NLRIs corresponding each to > the half-link representation from the pair of anchor routers. This > check is similar to the 'two-way connectivity check' that is > performed by link-state IGPs. > > > 854 A BGP-LS Producer MAY suppress the advertisement of a Link NLRI, > 855 corresponding to a half link, from a link-state IGP unless it > has > 856 verified that the link is being reported in the IS-IS LSP or > OSPF > 857 Router LSA by both the nodes connected by that link. This > 'two-way > 858 connectivity check' is performed by link-state IGPs during their > 859 computation and may be leveraged before passing information for > any > 860 half-link that is reported from these IGPs into BGP-LS. This > ensures > 861 that only those Link State IGP adjacencies which are > established get > 862 reported via Link NLRIs. Such a 'two-way connectivity check' > may be > 863 also required in certain cases (e.g. with OSPF) to obtain the > proper > 864 link identifiers of the remote node. > > [nit] s/half link/half-link > All the other mentions use the "-". > > > [major] "A BGP-LS Producer MAY suppress the advertisement of a...half > link...unless it has verified that the link is being reported [in the > IGP] by both the nodes connected by that link." > > Another way of looking at this option is to require the converse > behavior: "the BGP-LS Producer MUST NOT suppress...if the two-way > connectivity has been advertised on the IGP". > > I both cases we would be requiring the BGP-LS Producer to perform the > two-way connectivity check using the IGP information. That seems to > me to be way outside the scope of BGP (or BGP-LS). > > As far as I can tell, the two-way connectivity check is done by the > IGPs when running SPF, so that result wouldn't be available in the > LSBD. > > > ... > 875 > +-----------+---------------------+--------------+------------------+ > 876 | TLV Code | Description | IS-IS | Reference > | > 877 | Point | | TLV/Sub-TLV | > (RFC/Section) | > 878 > +-----------+---------------------+--------------+------------------+ > 879 | 258 | Link Local/Remote | 22/4 | [RFC5307] / > 1.1 | > 880 | | Identifiers | | > | > 881 | 259 | IPv4 interface | 22/6 | [RFC5305] / > 3.2 | > 882 | | address | | > | > 883 | 260 | IPv4 neighbor | 22/8 | [RFC5305] / > 3.3 | > 884 | | address | | > | > 885 | 261 | IPv6 interface | 22/12 | [RFC6119] / > 4.2 | > 886 | | address | | > | > 887 | 262 | IPv6 neighbor | 22/13 | [RFC6119] / > 4.3 | > 888 | | address | | > | > 889 | 263 | Multi-Topology | --- | Section > 4.2.2.1 | > 890 | | Identifier | | > | > 891 > +-----------+---------------------+--------------+------------------+ > > 893 Table 4: Link Descriptor TLVs > > 895 The information about a link present in the LSA/LSP originated > by the > 896 local node of the link determines the set of TLVs in the Link > 897 Descriptor of the link. > > 899 If interface and neighbor addresses, either IPv4 or IPv6, are > 900 present, then the IP address TLVs MUST be included, and the > Link > 901 Local/Remote Identifiers TLV MUST NOT be included in the Link > 902 Descriptor. The Link Local/Remote Identifiers TLV MAY be > included > 903 in the link attribute when available. IPv6 link-local > addresses > 904 MUST NOT be carried in the IPv6 address TLVs as descriptors > of a > 905 link as they are not considered unique. > > [major] "If interface and neighbor addresses, either IPv4 or IPv6, are > present, then the IP address TLVs MUST be included..." > > Given the TLV names in Table 4, this sentence is confusing because the > name of the TLVs ("interface address" and "neighbor address") are not > used, but the description is used as the condition. > > > [major] "MUST NOT be carried in the IPv6 address TLVs" > > Please be explicit by using the names of the TLVs. > > > ... > 924 4.2.2.1. Multi-Topology ID > ... > 953 The MT-ID TLV MAY be present in a Link Descriptor, a Prefix > 954 Descriptor, or the BGP-LS attribute of a Node NLRI. In a Link > or > 955 Prefix Descriptor, only a single MT-ID TLV containing the MT-ID > of > 956 the topology where the link or the prefix is reachable is > allowed. > 957 In case one wants to advertise multiple topologies for a given > Link > 958 Descriptor or Prefix Descriptor, multiple NLRIs MUST be > generated > 959 where each NLRI contains a single unique MT-ID. When used in > the > 960 Link or Prefix Descriptor TLV for IS-IS, the Bits R are > reserved and > 961 MUST be set to 0 (as per Section 7.2 of RFC 5120 [RFC5120]) when > 962 originated and ignored on receipt. > > [nit] s/BGP-LS attribute/BGP-LS Attribute/g > > That seems to be the most used form in this document. > > > ... > 969 4.2.3. Prefix Descriptors > ... > 989 The Multi-Topology Identifier TLV MUST be included in Prefix > 990 Descriptor if the underlying IGP prefix object is associated > with a > 991 non-default topology. > > [nit] s/included in Prefix Descriptor/included in the Prefix Descriptor > > > 993 4.2.3.1. OSPF Route Type > > 995 The OSPF Route Type TLV is an optional TLV corresponding to > Prefix > 996 NLRIs originated from OSPF. It is used to identify the OSPF > route > 997 type of the prefix. An OSPF prefix MAY be advertised in the > OSPF > 998 domain with multiple route types. The Route Type TLV allows the > 999 discrimination of these advertisements. The OSPF Route Type > TLV MUST > 1000 be included advertisement when the type is either being signaled > 1001 explicitly or can be determined via another advertisement for > the > 1002 same prefix (refer section 2.1 of [RFC7684]). The format of > the OSPF > 1003 Route Type TLV is shown in the following figure. > > [major] "The OSPF Route Type TLV MUST be included advertisement when > the type is either being signaled explicitly or can be determined via > another advertisement for the same prefix (refer section 2.1 of > [RFC7684])." > > nit: s/included advertisement/included in the advertisement > > What do you mean by "signaled explicitly"? Does it mean that the > route type is signaled in the OSPFv2 Extended Prefix TLV, and is not > 0? If so, please be explicit. > > What does it mean that the type "can be determined via another > advertisement for the same prefix"? I didn't find anything related to > that in §2.1/rfc7684. Did I miss it? > > > ... > 1061 4.3. The BGP-LS Attribute > ... > 1074 The size of the BGP-LS Attribute may potentially grow large > depending > 1075 on the amount of link-state information associated with a single > 1076 Link-State NLRI. The BGP specification [RFC4271] mandates a > maximum > 1077 BGP message size of 4096 octets. It is RECOMMENDED that an > 1078 implementation support [RFC8654] to accommodate a larger size of > 1079 information within the BGP-LS Attribute. BGP-LS Producers MUST > 1080 ensure that they limit the TLVs included in the BGP-LS > Attribute to > 1081 ensure that a BGP update message for a single Link-State NLRI > does > 1082 not cross the maximum limit for a BGP message. The > determination of > 1083 the types of TLVs to be included MAY be made by the BGP-LS > Producer > 1084 based on the BGP-LS Consumer applications requirement and is > outside > 1085 the scope of this document. When a BGP-LS Propagator finds > that it > 1086 is exceeding the maximum BGP message size due to addition or > update > 1087 of some other BGP Attribute (e.g. AS_PATH), it MUST consider > the > 1088 BGP-LS Attribute to be malformed and handle the propagation as > 1089 described in Section 7.2.2. This brings the deployment > consideration > 1090 where the consistent propagation of BGP-LS information with an > update > 1091 size larger than 4096 octets can only happen along a set of BGP > 1092 Speakers that all support [RFC8654]. > > [minor] RFC8654 formally Updated rfc4271, so there's no need to > mention the base spec here. > > OLD> > The BGP specification [RFC4271] mandates a maximum BGP message size > of 4096 octets. It is RECOMMENDED that an implementation support > [RFC8654] to accommodate a larger size of information within the > BGP-LS Attribute. > > NEW> > It is RECOMMENDED that an implementation support [RFC8654] to > accommodate a larger size of information within the BGP-LS Attribute. > > > [major] "The determination of the types of TLVs to be included MAY be > made by the BGP-LS Producer based on the BGP-LS Consumer applications > requirement and is outside the scope of this document." > > If the determination and the consumer applications are out of scope, > we can't use Normative language. In this case, the "MAY" is > indicating a fact anyway. s/MAY/may > > > [major] "When a BGP-LS Propagator finds that it is exceeding the > maximum BGP message size due to addition or update of some other BGP > Attribute (e.g. AS_PATH), it MUST consider the BGP-LS Attribute to be > malformed and handle the propagation as described in Section 7.2.2." > > This sentence refers to actions to be taken when forwarding the BGP > UPDATE, but the text in §7.2.2 refers to checks done when the UPDATE > is received... In any case, if I guess correctly, this is the text > that applies: > > When the error determined allows for the router to skip the malformed > BGP-LS Attribute and continue the processing of the rest of the > update message (e.g. when the BGP-LS Attribute length and the total > Path Attribute Length are correct but some TLV/sub-TLV length within > the BGP-LS Attribute is invalid), then it MUST handle such malformed > BGP-LS Attribute as 'Attribute Discard'. > > Is that it? Can we be explicit here about the action? > > Suggestion> > When a BGP-LS Propagator finds that it is exceeding the maximum > BGP message size due to addition or update of some other BGP > Attribute (e.g. AS_PATH), it MUST consider the BGP-LS Attribute > to be malformed, apply the "Attribute discard" error-handling > approach [rfc7606], and handle the propagation as described in > Section 7.2.2. > > > [minor] s/with an update/with a BGP UPDATE > > > ... > 1168 4.3.1.3. Node Name TLV > ... > 1185 [RFC5301] describes an IS-IS-specific extension and [RFC5642] > 1186 describes an OSPF extension for the advertisement of Node Name > which > 1187 MAY encoded in the Node Name TLV. > > [major] The "MAY" is not normative, it just states a fact: s/MAY/may > > > [nit] s/may encoded/may be encoded > > > ... > 1207 4.3.1.5. Opaque Node Attribute TLV > ... > 1224 In the case of OSPF, this TLV MAY be used to advertise > information > 1225 carried using the TLVs in the "OSPF Router Information (RI) > TLVs" > 1226 registry [RFC7770] under the IANA OSPF Parameters registry. > > [major] "this TLV MAY be used" > > If not used this way, what's the other option? I'm trying to figure > out the normative value of this "MAY" -- it seems to me that it is > just providing an example of things that can be included, or do you > intend it to be Normative? > > Other RFCs define BGP-LS extensions for some RI TLVs (rfc8814, for > example). Even if (normatively) optional, is it ok to also send the > MSD information in this Opaque Node Attribute TLV when rfc8814 is also > supported? > > s/MAY/may > > ** §4.3.2.6 and §4.3.3.6 have similar statements. The same comment > applies there. > > > [minor] s/in the "OSPF Router Information (RI) TLVs" registry > [RFC7770] under the IANA OSPF Parameters registry./in the OSPF Router > Information (RI) LSA [RFC7770]. > > > ... > 1398 4.3.2.6. Opaque Link Attribute TLV > ... > 1415 In the case of OSPFv2, this TLV MAY be used to advertise > information > 1416 carried using the TLVs in the "OSPFv2 Extended Link Opaque LSA > TLVs" > 1417 registry [RFC7684] under the IANA OSPFv2 Parameters registry. > In the > 1418 case of OSPFv3, this TLV MAY be used to advertise information > carried > 1419 using the TLVs in the "OSPFv3 Extended-LSA Sub-TLVs" registry > 1420 [RFC8362] under the IANA OSPFv3 Parameters registry. > > [minor] s/in the "OSPFv2 Extended Link Opaque LSA TLVs" registry > [RFC7684] under the IANA OSPFv2 Parameters registry./in the OSPFv2 > Extended Link Opaque LSA [RFC7684]. > > > [minor] s/in the "OSPFv3 Extended-LSA Sub-TLVs" registry [RFC8362] > under the IANA OSPFv3 Parameters registry./in an OSPFv3 Extended LSA > [RFC8362]. > > > ... > 1598 4.3.3.6. Opaque Prefix Attribute TLV > ... > 1615 In the case of OSPFv2, this TLV MAY be used to advertise > information > 1616 carried using the TLVs in the "OSPFv2 Extended Prefix Opaque LSA > 1617 TLVs" registry [RFC7684] under the IANA OSPFv2 Parameters > registry. > 1618 In the case of OSPFv3, this TLV MAY be used to advertise > information > 1619 carried using the TLVs in the "OSPFv3 Extended-LSA Sub-TLVs" > registry > 1620 [RFC8362] under the IANA OSPFv3 Parameters registry. > > [minor] s/in the "OSPFv2 Extended Prefix Opaque LSA TLVs" registry > [RFC7684] under the IANA OSPFv2 Parameters registry./in the OSPFv2 > Extended Prefix LSA [RFC7684]. > > > [minor] s/in the "OSPFv3 Extended-LSA Sub-TLVs" registry [RFC8362] > under the IANA OSPFv3 Parameters registry./in an OSPFv3 Extended LSA > [RFC8362]. > > > ... > 1636 4.4. Private Use > > 1638 TLVs for Vendor Private use are supported using the code point > range > 1639 reserved as indicated in Section 6. For such TLV use in the > NLRI or > 1640 BGP-LS Attribute, the format as described in Section 4.1 is to > be > 1641 used and a 4 octet field MUST be included as the first field in > the > 1642 value to carry the Enterprise Code. For a private use NLRI > Type, a 4 > 1643 octet field MUST be included as the first field in the NLRI > 1644 immediately following the Total NLRI Length field of the > Link-State > 1645 NLRI format as described in Section 4.2 to carry the Enterprise > Code. > 1646 The Enterprise Codes are listed at < > http://www.iana.org/assignments/ > 1647 enterprise-numbers>. This enables the use of vendor-specific > 1648 extensions without conflicts. > > 1650 Multiple instances of private-use TLVs MAY appear in the BGP-LS > 1651 Attribute. > > [major] This whole section is not needed. The IANA Considerations > section should indicate the ranges that are for Private Use. > > Also, because the use is *private*, this document cannot specify what > the contents are. It is a given that a TLV has to comply with the > format specified in this document, but there's no need to point at > that again. > > Note the definition of "Private Use" from rfc8126: > > Private Use is for private or local use only, with the type and > purpose defined by the local site. No attempt is made to prevent > multiple sites from using the same value in different (and > incompatible) ways. IANA does not record assignments from registries > or ranges with this policy (and therefore there is no need for IANA > to review them) and assignments are not generally useful for broad > interoperability. It is the responsibility of the sites making use > of the Private Use range to ensure that no conflicts occur (within > the intended scope of use). > > > ... > 1688 4.7. OSPF Virtual Links and Sham Links > > [] There are other mentions of "virtual links" (from the original > text) that don't refer to OSPF virtual links (for example, §4,2 says > this: "For modeling virtual links, such as described in Section 5, the > Protocol-ID 'Static configuration' SHOULD be used."). Please make it > is clear what you're referring to (by qualifying the other instances). > > > ... > 1720 4.9. Handling of Unreachable IGP Nodes > > 1722 The origination and propagation of IGP link-state information > via BGP > 1723 needs to provide a consistent and true view of the topology of > the > 1724 IGP domain. BGP-LS provides an abstraction of the IGP > specifics and > 1725 BGP-LS Consumers may be varied types of applications. While the > 1726 information propagated via BGP-LS from a link-state routing > protocol > 1727 is sourced from that protocol's LSDB, it does not serve as a > true > 1728 reflection of the originating router's LSDB since it does not > include > 1729 the LSA/LSP sequence number information. The sequence numbers > are > 1730 not included since a single NLRI update may be put together with > 1731 information that is coming from multiple LSAs/LSPs. > > [] This is a nice introductory paragraph to BGP-LS in general. Too > bad it is hidden here and not in the Introduction (for example). > > > [minor] "...it does not serve as a true reflection of the originating > router's LSDB since it does not include the LSA/LSP sequence number > information." > > There's also other information (virtual links, Type 4 LSAs, etc.) that > is not included. > > > ... > 1738 A BGP-LS Consumer talks to a BGP route-reflector (RR) R0 which > is > 1739 aggregating the BGP-LS feed from the BGP-LS Producers R2 and R3. > 1740 Here R2 and R3 provide a redundant topology feed via BGP-LS to > R0. > 1741 Normally, R0 would receive two identical copies of all the > Link-State > 1742 NLRIs from both R2 and R3 and it would pick one of them (say R2) > 1743 based on the standard BGP best-path decision process. > > [minor] s/route-reflector/route reflector/g > > > 1745 Consumer > 1746 ^ > 1747 | > 1748 R0 > 1749 (BGP Route Reflector) > 1750 / \ > 1751 / \ > 1752 a1 / a0 \ a1 > 1753 R1 ------ R2 -------- R3 ------ R4 > 1754 a1 | | a1 > 1755 | | > 1756 R5 ---------------------------- R6 > 1757 a1 > > 1759 Figure 31: Incorrect Reporting due to BGP Path Selection > > [nit] s/Consumer/BGP-LS Consumer > > > [minor] Please explain what a0 and a1 mean. > > > [minor] Please indicate that R0 is a BGP-LS Propagator. > > > ... > 1765 Now, R5 will remove the link 5-6 from its Router LSA, and this > 1766 updated LSA is available at R2. R2 also has a stale copy of > R6's > 1767 Router LSA which still has the link 6-5 in it. Based on this > view in > 1768 its LSDB, R2 will advertise only the half-link 6-5 that it > derives > 1769 from R6's stale Router LSA. > > [nit] s/5-6/R5-R6/g > > > [nit] s/6-5/R6-R5/g > > > ... > 1777 Now, the BGP-LS Consumer receives both the Link NLRIs > corresponding > 1778 to the half-links from R2 and R3 via R0. When viewed together, > it > 1779 would not detect or realize that the area 1 is partitioned. > Also if > 1780 R2 continues to report Link-State NLRIs corresponding to the > stale > 1781 copy of Router LSA of R4 and R6 nodes then R0 would prefer them > over > 1782 the valid Link-State NLRIs for R4 and R6 that it is receiving > from R3 > 1783 based on its BGP decision process. This would result in the > BGP-LS > 1784 Consumer getting stale and inaccurate topology information. > This > 1785 problem scenario is avoided if R2 were to not advertise the > link- > 1786 state information corresponding to R4 and R6 and if R3 were to > not > 1787 advertise similarly for R1 and R5. > > [nit] s/Router LSA of R4 and R6 nodes/R4 and R6's Router LSAs > > > [?] "...if R2 continues to report Link-State NLRIs corresponding to > the stale copy of Router LSA of R4 and R6 nodes then R0 would prefer > them over the valid Link-State NLRIs for R4 and R6 that it is > receiving from R3 based on its BGP decision process." > > Can you please explain why this is the case? Wouldn't the NLRIs be > different and both be propagated? I'm probably missing something. > > > 1789 A BGP-LS Producer SHOULD withdraw all link-state objects > advertised > 1790 by it in BGP when the node that originated its corresponding > LSP/LSAs > 1791 is determined to have become unreachable in the IGP. An > 1792 implementation MAY continue to advertise link-state objects > 1793 corresponding to unreachable nodes in a deployment use-case > where the > 1794 BGP-LS Consumer is interested in receiving a topology feed > 1795 corresponding to a complete IGP LSDB view. In such > deployments, it > 1796 is expected that the problem described above is mitigated by > the BGP- > 1797 LS Consumer via appropriate handling of such a topology feed in > 1798 addition to the use of either a direct BGP peering with the > producer > 1799 nodes or mechanisms such as [RFC7911] when using RR. Details of > 1800 these mechanisms are outside the scope of this draft. > > [minor] s/with the producer/with the BGP-LS Producer > > > [nit] s/using RR/using RRs > > > [nit] s/this draft/this document > > > ... > 1841 4.11. Router-ID Anchoring Example: OSPF Pseudonode > > [] Please use addresses reserved for documentation in the examples > (RFC6890). > > > ... > 2002 6. IANA Considerations > > [major] Please include this text: > > Because this document obsoletes [RFC7752] and [RFC9029], IANA is > asked to change all registration information that references those > documents to instead reference [[this document]]. > > Then we can get rid of redundant text below. > > > ... > 2032 6.1.1. BGP-LS NLRI Types Registry > ... > 2038 Type NLRI Type Reference > 2039 ----------------------------------------------------------- > 2040 0 Reserved [This document] > 2041 1 Node NLRI [This document] > 2042 2 Link NLRI [This document] > 2043 3 IPv4 Topology Prefix NLRI [This document] > 2044 4 IPv6 Topology Prefix NLRI [This document] > 2045 65000-65535 Private Use [This document] > > 2047 Allocations within the registry under the "Expert Review" policy > 2048 require documentation of the proposed use of the allocated > value and > 2049 approval by the Designated Expert assigned by the IESG (see > 2050 [RFC8126]). > > [minor] Please also point at the definition of the "Private Use" policy. > > Suggestion> > A range is reserved for Private Use [rfc8126]. All other allocations > are to be made using the "Expert Review" policy... > > > [nit] s/(see [RFC8126])/[RFC8126]/g > > > 2052 6.1.2. BGP-LS Protocol-IDs Registry > ... > 2058 Protocol-ID NLRI information source protocol Reference > 2059 > --------------------------------------------------------------------- > 2060 0 Reserved [This > document] > 2061 1 IS-IS Level 1 [This > document] > 2062 2 IS-IS Level 2 [This > document] > 2063 3 OSPFv2 [This > document] > 2064 4 Direct [This > document] > 2065 5 Static configuration [This > document] > 2066 6 OSPFv3 [This > document] > 2067 200-255 Private Use [This > document] > > 2069 Allocations within the registry under the "Expert Review" policy > 2070 require documentation of the proposed use of the allocated > value and > 2071 approval by the Designated Expert assigned by the IESG (see > 2072 [RFC8126]). > > [minor] Please also point at the definition of the "Private Use" policy. > > Suggestion> > A range is reserved for Private Use [rfc8126]. All other allocations > are to be made using the "Expert Review" policy... > > > 2074 6.1.3. BGP-LS Well-Known Instance-IDs Registry > > 2076 The "BGP-LS Well-Known Instance-IDs" registry that was set up > via > 2077 [RFC7752] is no longer required. It may be retained as > deprecated > 2078 and no further assignments be made from it. > > [major] If not needed, why retain it? That can only cause confusion. > > > 2080 6.1.4. BGP-LS Node Flags Registry > ... > 2086 Bit Description Reference > 2087 ----------------------------------------------- > 2088 0 Overload Bit (O-bit) [This document] > 2089 1 Attached Bit (A-bit) [This document] > 2090 2 External Bit (E-bit) [This document] > 2091 3 ABR Bit (B-bit) [This document] > 2092 4 Router Bit (R-bit) [This document] > 2093 5 V6 Bit (V-bit) [This document] > 2094 6-7 Unassigned > > 2096 Allocations within the registry under the "RFC Required" policy > (see > 2097 [RFC8126]). > > [major] The RFC Required policy allows any RFC to allocate a value; > from rfc8126: > > With the RFC Required policy, the registration request, along with > associated documentation, must be published in an RFC. The RFC need > not be in the IETF stream, but may be in any RFC stream (currently an > RFC may be in the IETF, IRTF, IAB, or Independent Submission streams > [RFC5742]). > > Unless otherwise specified, any type of RFC is sufficient (currently > Standards Track, BCP, Informational, Experimental, or Historic). > > IOW, no one is required to review the request. Given the size of this > range, it seems like a risky strategy. Why are you deviating from the > existing "Expert Review" criteria? > > > 2099 6.1.5. BGP-LS MPLS Protocol Mask Registry > ... > 2111 Allocations within the registry under the "RFC Required" policy > (see > 2112 [RFC8126]). > > [major] Same comment as above about the RFC Required registration policy. > > > 2114 6.1.6. BGP-LS IGP Prefix Flags Registry > ... > 2128 Allocations within the registry under the "RFC Required" policy > (see > 2129 [RFC8126]). > > [major] Same comment as above about the RFC Required registration policy. > > > 2131 6.1.7. BGP-LS TLVs Registry > > 2133 The "BGP-LS Node Descriptor, Link Descriptor, Prefix > Descriptor, and > 2134 Attribute TLVs" registry was setup via [RFC7752]. This document > 2135 requests IANA to rename that registry to "BGP-LS NLRI and > Attribute > 2136 TLVs" and to remove the column for "IS-IS TLV/Sub-TLV" from the > 2137 registry since that column is not relevant for the allocation > and > 2138 maintenance of BGP-LS code points. The values 0-255 are > reserved. > 2139 The values 256-65535 will be used for code points allocation. > The > 2140 range 65000-65535 is for Private Use. The registry has been > populated > 2141 with the values shown in Table 12 and the reference for all > those > 2142 allocations should be updated to this document instead of > [RFC7752]. > 2143 Allocations within the registry under the "Expert Review" policy > 2144 require documentation of the proposed use of the allocated > value and > 2145 approval by the Designated Expert assigned by the IESG (see > 2146 [RFC8126]). > > [major] "...Table 12 and the reference for all those allocations > should be updated to this document instead of [RFC7752]." > > I'm assuming that this statement applies to all entries in Table 12 > and not just the ones referencing rfc7752. Is that correct? > > > [minor] There's some redundancy above. > > Suggestion> > > The "BGP-LS Node Descriptor, Link Descriptor, Prefix Descriptor, > and Attribute TLVs" registry was setup via [RFC7752]. This document > requests IANA to rename that registry to "BGP-LS NLRI and Attribute > TLVs" and to remove the "IS-IS TLV/Sub-TLV" column. Table xx > summarizes shows the registration procedures. The registry was pre- > populated with the values shown in Table 12 and the reference for > all those allocations should be updated to [this document]. > > > [minor] Please include a table that shows the allocation policies -- > in this case two lines: one showing the "Expert Review" range and the > other for "Private Use". > > > ... > 2213 7.1.1. Operations > > 2215 Existing BGP operational procedures apply. No new operation > 2216 procedures are defined in this document. It is noted that the > NLRI > 2217 information present in this document carries purely > application-level > 2218 data that has no immediate impact on the corresponding > forwarding > 2219 state computed by BGP. As such, any churn in reachability > 2220 information has a different impact than regular BGP updates, > which > 2221 need to change the forwarding state for an entire router. It is > 2222 expected that the distribution of this NLRI SHOULD be handled by > 2223 dedicated route reflectors in most deployments providing a > level of > 2224 isolation and fault containment between different NLRI types. > In the > 2225 event of dedicated route reflectors not being available, other > 2226 alternate mechanisms like separation of BGP instances or > separate BGP > 2227 sessions (e.g. using different addresses for peering) for > Link-State > 2228 information distribution SHOULD be used. > > [minor] s/It is expected that the distribution of this NLRI SHOULD be > handled by dedicated route reflectors in most deployments > providing/Distribution of the BGP-LS NLRI SHOULD be handled by > dedicated route reflectors to provide > > > > ... > 2252 7.1.5. Impact on Network Operation > > 2254 The frequency of Link-State NLRI updates could interfere with > regular > 2255 BGP prefix distribution. A network operator MAY use a dedicated > 2256 Route-Reflector infrastructure to distribute Link-State NLRIs. > > [major] "MAY use a dedicated Route-Reflector infrastructure" > > This statement is in contradiction with the recommendation in §7.1.1. > To solve that, you can either restate ("As mentioned in §7.1.1....") > or s/MAY/may > > > > ... > 2281 7.2.2. Fault Management > ... > 2292 A BGP-LS Speaker MUST perform the following syntactic > validation of > 2293 the Link-State NLRI to determine if it is malformed. > > 2295 o Does the sum of all TLVs found in the BGP MP_REACH_NLRI > attribute > 2296 correspond to the BGP MP_REACH_NLRI length? > > [major] "sum of all TLVs...correspond to the BGP MP_REACH_NLRI length" > > The sum of all TLVs results in the number of TLVs, which is not the > same as the length. s/sum of all TLVs/sum of all TLV lengths > > Note that the next two bullets have the same issue. > > > 2298 o Does the sum of all TLVs found in the BGP MP_UNREACH_NLRI > 2299 attribute correspond to the BGP MP_UNREACH_NLRI length? > > 2301 o Does the sum of all TLVs found in a Link-State NLRI > correspond to > 2302 the Total NLRI Length field of all its Descriptors? > > 2304 o Is the length of the TLVs and, when the TLV is recognized > then, > 2305 its sub-TLVs in the NLRI valid? > > [minor] s/.../Is the length of the TLVs and sub-TLVs in the NLRI valid? > > > > ... > 2313 When the error determined allows for the router to skip the > malformed > 2314 NLRI(s) and continue the processing of the rest of the update > message > 2315 (e.g. when the TLV ordering rule is violated), then it MUST > handle > 2316 such malformed NLRIs as 'Treat-as-withdraw'. In other cases, > where > 2317 the error in the NLRI encoding results in the inability to > process > 2318 the BGP update message (e.g. length related encoding errors), > then > 2319 the router SHOULD handle such malformed NLRIs as 'AFI/SAFI > disable' > 2320 when other AFI/SAFI besides BGP-LS are being advertised over > the same > 2321 session. Alternately, the router MUST perform 'session reset' > when > 2322 the session is only being used for BGP-LS or when it 'AFI/SAFI > 2323 disable' action is not possible. > > [minor] s/when it/if (?) > > When would that not be possible? Are you thinking of a bug (or maybe > a configuration), or something else? > > > > ... > 2330 A BGP-LS Speaker MUST perform the following syntactic > validation of > 2331 the BGP-LS Attribute to determine if it is malformed. > > 2333 o Does the sum of all TLVs found in the BGP-LS Attribute > correspond > 2334 to the BGP-LS Attribute length? > > [major] s/sum of all TLVs/sum of all TLV lengths > > > > ... > 2339 o Is the length of each TLV and, when the TLV is recognized > then, > 2340 its sub-TLVs in the BGP-LS Attribute valid? > > [minor] s/.../Is the length of each TLV and sub-TLV in the BGP-LS > Attribute valid? > > > > ... > 2352 Note that the 'Attribute Discard' action results in the loss of > all > 2353 TLVs in the BGP-LS Attribute and not the removal of a specific > 2354 malformed TLV. The removal of specific malformed TLVs may give > a > 2355 wrong indication to a BGP-LS Consumer of that specific > information > 2356 being deleted or not available. > > [] The same is true for the 'Treat-as-withdraw' case with the NLRI -- > by, for example, not ordering the TLVs, the information is lost. > > > [major] This point is here for the record... > > rfc7606 says that 'attribute discard' "MUST NOT be used except in the > case of an attribute that has no effect on route selection or > installation." > > Even if the operation of the BGP-LS Consumer is out of scope, it is > expected to (in many cases) calculate routes and program the network > with them. As explained above (and considering also the NLRI > 'Treat-as-withdraw' case), the BGP-LS Consumer will not have a > complete picture which can affect routing in the network. > > A simple attack vector is to not order the TLVs in an otherwise valid > route, or change the length of a TLV... The impact goes beyond BGP-LS > and what this document covers. :-( > > > > 2358 When a BGP Speaker receives an update message with Link-State > NLRI(s) > 2359 in the MP_REACH_NLRI but without the BGP-LS Attribute, it is > most > 2360 likely an indication that a BGP Speaker preceding it has > performed > 2361 the 'Attribute Discard' fault handling. An implementation > SHOULD > 2362 preserve and propagate the Link-State NLRIs in such an update > message > 2363 so that the BGP-LS Consumers can detect the loss of link-state > 2364 information for that object and not assume its > deletion/withdraw. > 2365 This also makes it possible for a network operator to trace > back to > 2366 the BGP-LS Propagator that detected the fault with the BGP-LS > 2367 Attribute. > > [major] "SHOULD preserve and propagate" > > This is a very useful signal that something went wrong. Why is it > recommended and not required? When is it ok to not preserve and > propagate. > > > > 2369 An implementation SHOULD log an error for any errors found > during > 2370 syntax validation for further analysis. > > [minor] "log an error for any errors" > > Perhaps "log a message"? > > > > 2372 A BGP-LS Propagator, even when also operating as a BGP-LS > Consumer, > 2373 SHOULD NOT perform semantic validation of the Link-State NLRI > or the > 2374 BGP-LS Attribute to determine if it is malformed or invalid. > Some > 2375 types of semantic validation that are not to be performed by a > BGP-LS > 2376 Propagator are as follows (and this is not to be considered as > an > 2377 exhaustive list): > > [major] "BGP-LS Propagator, even when also operating as a BGP-LS Consumer" > > Going back to the definitions back in §3, from the BGP point of view, > the BGP-LS Propagator cannot operate as a BGP-LS Consumer because the > consumer is not a BGP Speaker. Maybe you meant something along the > lines of: "even when the BGP-LS Consumer application coexists in the > same node". ?? > > > [major] "BGP-LS Propagator...SHOULD NOT perform semantic validation" > > When it is ok for the BGP-LS Propagator to perform the validation? > Why is this action recommended and not required? > > Semantic validation is not defined in this document (or any other > BGP-LS document), so my question is really, why would the BGP-LS > Propagator even consider the validation? IOW, the "SHOULD NOT" seems > to be stating a fact, and not be a Normative statement: s/SHOULD > NOT/should not > > > > ... > 2389 Each TLV MAY indicate the valid and permissible values and their > 2390 semantics that can to be used only by a BGP-LS Consumer for its > 2391 semantic validation. However, the handling of any errors may be > 2392 specific to the particular application and outside the scope of > this > 2393 document. A BGP-LS Consumer should ignore unrecognized and > 2394 unexpected TLV types in both the NLRI and BGP-LS Attribute > portions > 2395 and not consider their presence as an error. > > [major] "TLV MAY indicate the valid and permissible values" > > This sounds like a statement of fact: s/MAY/may > > > [major] The last sentence is a specific instruction to the BGP-LS > Consumer -- it should be removed. > > > > 2397 7.2.3. Configuration Management > ... > 2421 An implementation SHOULD allow the operator to configure the > maximum > 2422 size of the BGP-LS Attribute that may be used on a BGP-LS > Producer. > > [?] How does limiting the size of the BGP-LS Attribute help anything? > Is this related to the maximum message size or something else? > > > > ... > 2444 7.2.6. Security Management > > 2446 An operator SHOULD define an import policy to limit inbound > updates > 2447 as follows: > > 2449 o Drop all updates from peers that are only serving BGP-LS > 2450 Consumers. > > [major] The "SHOULD" above conflicts with "MUST NOT accept updates" in > §9. I realize that the action here is about the operator defining > policy vs a BGP speaker not accepting updates...but the result of the > specification would be inconsistent if the requirement in §9 depends > on the recommendation here. > > See also related comments in §9 related to "peers that are only > serving BGP-LS Consumers". > > > > ... > 2515 9. Security Considerations > ... > 2522 In the context of the BGP peerings associated with this > document, a > 2523 BGP speaker MUST NOT accept updates from a peer that is only > 2524 providing information to a BGP-LS Consumer. That is, a > participating > 2525 BGP speaker should be aware of the nature of its relationships > for > 2526 link-state relationships and should protect itself from peers > sending > 2527 updates that either represent erroneous information feedback > loops or > 2528 are false input. Such protection can be achieved by manual > 2529 configuration of consumer peers at the BGP speaker. > > [major] "MUST NOT accept updates from a peer that is only providing > information to a BGP-LS Consumer" > > This piece of text changed from "MUST NOT accept updates from a > consumer peer". In that context, the requirement is a local decision > (the node knows the nature of the connection to the consumer peer) and > can (if the connection was in fact a BGP session) enforce the > requirement. > > The new text implies that other BGP speakers are aware of where the > BGP-LS Consumers are and what the role of each BGP speaker connected > to them is. How is that communicated so that the requirement can be > enforced? > > I could see the requirement being that "updates from BGP-LS Consumers > MUST be ignored", but the nature of "the interface between BGP and > consumer application ...[is] outside the scope of this document" (from > §3), so I don't see how the behavior can be mandated. > > Tying in the text from §7.2.6 -- is the expectation that this > requirement be fulfilled by the operator by configuration? If so, > then the actions in §7.2.6 have to be required, and I would like to > see a discussion (a couple of sentences would be ok) about what the > risk is. The text above talks about "updates that either represent > erroneous information feedback loops or are false input" -- erroneous > or false information is a risk anyway (it may have even been erroneous > at the IGP level). I don't see how a feedback loop could cause issues > (beyond more traffic in the control plane). > > > > 2531 An operator SHOULD employ a mechanism to protect a BGP speaker > 2532 against DDoS attacks from BGP-LS Consumers. The principal > attack a > 2533 consumer may apply is to attempt to start multiple sessions > either > 2534 sequentially or simultaneously. Protection can be applied by > 2535 imposing rate limits. > > [major] "The consumer application and the design of the interface > between BGP and consumer application may be implementation specific > and outside the scope of this document." > > ...it is not possible to even recommend what that interface should do. > > Note that even if the details are out of scope, you may be able to > provide (in §3) some expectations. For example, from the point of > view of BGP-LS, the communication of information to the BGP-LS > Consumer is expected to be one-way: only from the BGP speaker to the > consumer application. Something like this would address the points in > the last two paragraphs. The Security Considerations would then be > around that expectation not being met (but any mitigation would also > be outside the scope of this document). > > > > 2537 Additionally, it may be considered that the export of > link-state and > 2538 TE information as described in this document constitutes a risk > to > 2539 confidentiality of mission-critical or commercially sensitive > 2540 information about the network. BGP peerings are not automatic > and > 2541 require configuration; thus, it is the responsibility of the > network > 2542 operator to ensure that only trusted consumers are configured to > 2543 receive such information. > > [major] "BGP peerings are not automatic...it is the responsibility of > the network operator to ensure that only trusted consumers..." > > Again, the interface is outside the scope of this document and the > text above assumes a BGP session. Rephrase in terms of a risk with a > mitigation out of scope. > > > [major] There are other risks that result from the use of BGP-LS, for > example: > > - originating information that is not in the LSDB (i.e. false > information), or leaving information out > > - removing the BGP-LS Attribute (for not reason) > > - reordering the TLVs in an otherwise good NLRI > > > Yes, all these make assumptions about what the BGP-LS Consumer will do > with the information (which is stated at the front of the document). > And these are not new things in BGP. However, they are new > BGP-LS-specific risks. Mentioning them and acknowledging that these > are existing risks in BGP too would go a long way to show that all > angles have been considered. > > > > ... > 2604 12.1. Normative References > ... > 2709 [RFC6549] Lindem, A., Roy, A., and S. Mirtorabi, "OSPFv2 Multi- > 2710 Instance Extensions", RFC 6549, DOI 10.17487/RFC6549, > 2711 March 2012, <https://www.rfc-editor.org/info/rfc6549 > >. > > [minor] This reference can be Informative. > > > ... > 2728 [RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, > A., and > 2729 S. Ray, "North-Bound Distribution of Link-State and > 2730 Traffic Engineering (TE) Information Using BGP", RFC > 7752, > 2731 DOI 10.17487/RFC7752, March 2016, > 2732 <https://www.rfc-editor.org/info/rfc7752>. > > [major] This document obsoletes rfc7752, so this reference should be > Informative. > > > ... > 2743 [RFC8202] Ginsberg, L., Previdi, S., and W. Henderickx, "IS-IS > 2744 Multi-Instance", RFC 8202, DOI 10.17487/RFC8202, June > 2745 2017, <https://www.rfc-editor.org/info/rfc8202>. > > [minor] This reference can be Informative. > > > ... > 2756 [RFC9029] Farrel, A., "Updates to the Allocation Policy for the > 2757 Border Gateway Protocol - Link State (BGP-LS) > Parameters > 2758 Registries", RFC 9029, DOI 10.17487/RFC9029, June > 2021, > 2759 <https://www.rfc-editor.org/info/rfc9029>. > > [major] This document obsoletes rfc9029, so this reference should be > Informative. > > > 2761 12.2. Informative References > ... > 2819 [RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, > R., and > 2820 S. Shaffer, "Extensions to OSPF for Advertising > Optional > 2821 Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, > 2822 February 2016, < > https://www.rfc-editor.org/info/rfc7770>. > > [major] This reference should be Normative. > > [EoR -10] >
- [Idr] AD Review of draft-ietf-idr-rfc7752bis-10 Alvaro Retana
- Re: [Idr] AD Review of draft-ietf-idr-rfc7752bis-… Ketan Talaulikar
- Re: [Idr] AD Review of draft-ietf-idr-rfc7752bis-… Ketan Talaulikar
- Re: [Idr] AD Review of draft-ietf-idr-rfc7752bis-… Alvaro Retana
- Re: [Idr] AD Review of draft-ietf-idr-rfc7752bis-… Ketan Talaulikar
- Re: [Idr] AD Review of draft-ietf-idr-rfc7752bis-… Alvaro Retana
- Re: [Idr] AD Review of draft-ietf-idr-rfc7752bis-… Ketan Talaulikar
- Re: [Idr] AD Review of draft-ietf-idr-rfc7752bis-… Alvaro Retana