Re: [Idr] AD Review of draft-ietf-idr-rfc7752bis-10

Ketan Talaulikar <ketant.ietf@gmail.com> Thu, 29 September 2022 16:38 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 00EC0C14CF1C; Thu, 29 Sep 2022 09:38:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.104
X-Spam-Level:
X-Spam-Status: No, score=-2.104 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_ZEN_BLOCKED_OPENDNS=0.001, 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 Oz20cvvwkZrG; Thu, 29 Sep 2022 09:38:34 -0700 (PDT)
Received: from mail-ua1-x935.google.com (mail-ua1-x935.google.com [IPv6:2607:f8b0:4864:20::935]) (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 5C6FFC14CE36; Thu, 29 Sep 2022 09:38:34 -0700 (PDT)
Received: by mail-ua1-x935.google.com with SMTP id t7so122913uae.1; Thu, 29 Sep 2022 09:38:34 -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=g0Wdtu8cPWoMiFgW12WnKXgBGAuacJj7w/WCVFB23sw=; b=Fv53/gzZk2di/A6W/lEISN8L6WuNo0u6dVy4iCkjsFACZWqOSYplQukik/A8zo2cvB DQUlpI/UyHtUTnhddTvjS1Yevh12W1wwRo8ki3DreU/vO88wmbs+fWDkpAtfe+VIdjlU H70YslKPip1jVIJJwAbjCjdoQxsQOwge/rbRLcF6EVcnFO5hA/9da6BceyPlEt8Z7XaG +j0u0KljjWrNyK1SIus+1HTN2bnn0P3d5ezV/ISVEfrWA3QJCtjDxHpAyOIs46P1N72i ousWaLDUD9bqVbGyHPN/MLR9tb73nEviI/wCgmzFaZkPAxuUe1dPJYekrST7cO8bHF5p bP+g==
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=g0Wdtu8cPWoMiFgW12WnKXgBGAuacJj7w/WCVFB23sw=; b=RKakaqQpd9ufQQnaohPHJnHCdwo6mC1xBsaXn9MFQJXYx2pE9B5BKy88hILSi2FV/7 Wa6QRAiPMupq8vuP09hfUxkMx92Mbl1kzvY32nHmnZZ84hepUJRI4svbk3s63aIFytt2 dHgnrwAbxI4Bm0MDEZgvVPd62YbPc9/mDcOp0q1m+ISSaTkMmczrrBk/o+CLUwCqStI0 riwva545uAoaHPnl9p+rNlo3OJXZFThR65hNrOIoUrTIxKZCiw4U3sVqD+723n9HCikG aSJ/+fRqFZeaF5mz8ATofOLw2uLrg5Aq1fwci6x6oQl2qIAnEZInYNJqvNFXiBYHGBZv ofHQ==
X-Gm-Message-State: ACrzQf08u0VNop42lxsW8+mn4uuwrAFrcDyPliWs8EC4aPHvTJUsgnnI 8I3lAbYvAip8As52o5IG8f3uU4WTAxcOm73khH4=
X-Google-Smtp-Source: AMsMyM5sE61ucBqVkHsiwuLVkXlLUpQXG024Yo0VVuEpC0s4Buk/WdK9o53oUaVjzmgXVr8SCerm5/RnB7i1XXAlsYY=
X-Received: by 2002:ab0:725a:0:b0:3cf:b399:773f with SMTP id d26-20020ab0725a000000b003cfb399773fmr2268341uap.110.1664469511693; Thu, 29 Sep 2022 09:38:31 -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: Thu, 29 Sep 2022 22:08:19 +0530
Message-ID: <CAH6gdPyg7fuoPzkP=HDgdqiC00Sk9N0hNn6dbfQxuYcyiY4-Pw@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" <idr@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000fbea1605e9d38178"
Archived-At: <https://mailarchive.ietf.org/arch/msg/idr/gkV6cyFPFNIIL6q2_Y4-1L9KGio>
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: Thu, 29 Sep 2022 16:38:39 -0000

Hi Alvaro,

Thanks for your detailed review and feedback/suggestions. Please check
inline below for responses.

I have also posted an updated version with the changes discussed below:
https://datatracker.ietf.org/doc/html/draft-ietf-idr-rfc7752bis-11


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%.
>

KT> This depth is coming from RFC7752 and I've found it very useful.
Reducing it further will make it more difficult to jump to the specifics.
IMHO the current level strikes a good balance.


>
>
> ...
> 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...
>

KT> Ack


>
>
> ...
> 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.
>

KT> Ack


>
>
> ...
> 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.
>

KT> Fixed the figure and description in Section 4.9 to use the RR
terminology as in Figure 1.


>
>
> ...
> 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..]
>

KT> Ack


>
>
> [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
>

KT> I believe this is an important concept to describe. Do you see an issue
with doing so? Further in Sec 4.9, we get into some of the challenges this
poses and so it seemed good to first introduce that two BGP producers
sourcing info from the same IGP area are going to be originating the same
information.


>
> - 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).
>

KT> Added a sentence about "other sources" in the introduction section.


>
>
> [nit] s/the BGP Speaker/a BGP Speaker
>

KT> Ack


>
>
> [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.
>

KT> Ack. However, I've added this text in Sec 4 instead as that seemed more
appropriate.


>
>
> 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...
>

KT> Ack


>
>
> [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.
>

KT> Fixed the description in Figure 2 & 3 - removed the "BGP LS NRLI" from
those interfaces.


>
>
> 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...
>

KT> Ack


>
>
> [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.


KT> Correct.


> 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.
>

KT> Correct.


>
> 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.]
>

KT> Yes, that was the idea. Further in the section, we cover how these
roles may be mixed up for a given BGP Speaker.


>
>
> [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.
>

KT> Ack


>
>
> [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?


KT> There is also the parsing/validation of the link-state information.


> 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
>

KT> Ack to all 3 above.


>
>
> [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
>

KT> Ack


>
> 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?
>

KT> Agree that the text is unclear and somewhat conflicting. Can you please
check if the updated text addresses your points above?


>
>
> ...
> 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
>

KT> Ack


>
>
> 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.
>

KT> "Unknown" and "unrecognized" are the same - text is now updated with
"unknown" everywhere. "Unexpected" would be when a TLV that is associated
with say a Node NLRI gets included with a Link NLRI - this is clarified.
The difference between "unknown" and "unsupported" is that while the TLV
type code point is known in the later case, the support (e.g., for
origination) may not be complete.


>
>
> ...
> 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?
>

KT> The goal is to specify which TLVs are really required so as to
adequately describe and advertise a given link-state object. So this is
guidance for the BGP-LS Producer implementations and as an extension is
helpful for consumers too.


>
>
> ...
> 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).
>

KT> The objective here is to describe the consequences of implementation
variations that we have seen in the production and interop tests. Some of
them may be from implementations that followed RFC7752 that was not as
clear about which TLVs are optional and which are mandatory in the NLRI.
Even with this document (and other BGP-LS specs), we can still have
inconsistencies in the BGP-LS attribute simply because two implementations
don't support the same attributes for an object.


>
>
> 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
>

KT> Ack


>
>
> ...
> 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
>

KT> Ack


>
>
> [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
>

KT> ack


>
>
> [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".
>

KT> The name of the field in the BGP-LS NLRI is "Identifier" and what it
carries is called the "BGP-LS Instance-ID". The text is updated to refer to
the "Identifier" field only in the figures and then once more where we
indicate that this field carries the BGP-LS Instance-ID. The rest of the
text is updated to refer to the BGP-LS Instance-ID alone. I hope this will
clarify. Ideally, I would have liked to rename the Identifier field to
BGP-LS Instance-ID, but there is also another BGP-LS Identifier TLV (now
deprecated) which can get even more confusing.


>
>
> 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.
>

KT> Indeed, it is a restatement. Have removed the use of normative language
from the earlier paragraph and retained the normative language meant as
operator guidance. Also, moved text to consolidate.


>
>
> 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?
>

KT> Ack. Changed "consistent" to "same".


>
>
> [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.
>

KT> Ack. Added a reference in Secs 7.1 and 7.2.3 to point to this section.
Please suggest if something further needs to be added.


>
>
> [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.
>

KT> Ack


>
>
> [nit] It seems to me that the last sentence is a run-on.  Perhaps cut
> the last part ("...even when the topology...").
>

KT> Ack


>
>
> 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.
>

KT> Fixed. Changed "duplicate" to "more than one" and clarified the
Instance-ID part.


>
>
> 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.
>

KT> Ack


>
>
> ...
> 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?
>

KT> Ack. Clarified.


>
>
> [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.
>

KT> Ack


>
>
> ...
> 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.
>

KT> Updated the text.


>
>
> ...
> 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.
>

KT> The SHOULD was to cover for those implementations following RFC7752
that may be doing something different. E.g., if the node also has OSPF
configured and is originating local (non-OSPF) info as well, then it could
use the OSPF Router-ID that does not necessarily need to be an IP address
on the node. Added this clarification.


>
>
> 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?
>

KT> Seems like I missed making this normative and also not covered it in
the error handling. The NLRI should be considered malformed in that case.
Fixed the text and the error handling section too.


>
>
> 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?
>

KT> Changed the MUST to SHOULD and added clarification in the text. Note
that this is a TLV in the NLRI. So when there are multiple BGP-LS Producers
that are a mix of RFC7752 and this BIS, we can end up in multiple
link-state objects due to differences in NLRI encoding. Hopefully, at some
point, we can stop advertising this.


>
>
> [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?
>

KT> We have covered it normatively previously. This was just a
restatement/reminder. Updated the text.


>
>
> 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.
>

KT> Ack. Updated text.


>
>
> 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 "-".
>

KT> Ack


>
>
> [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.
>

KT> Whether the result of 2-way connectivity check is stored/available in
the LSDB is implementation specific. It is not so that information from
LSAs/LSPs can be simply plucked from a LSDB built from raw IGP PDUs and
advertised into BGP-LS. Information from multiple LSAs/LSPs can contribute
to a single link-state object. This requires additional processing in the
form of collating information into some form of a topology database (nodes,
links, prefixes). Ultimately, it is up to the implementation how it
realizes the LSDB.


>
>
> ...
> 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.
>

KT> Fixed


>
>
> [major] "MUST NOT be carried in the IPv6 address TLVs"
>
> Please be explicit by using the names of the TLVs.
>

KT> Fixed.


>
>
> ...
> 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.
>

KT> Ack


>
>
> ...
> 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
>

KT> Ack


>
>
> 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
>

KT> Ack


>
> 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?
>

KT> Agree. Things were not very clear. Can you please check the updated
text?


>
>
> ...
> 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.
>

KT> You are correct. However, out there in production, the
deployment/support for RFC8654 is not really widespread. Hence, I believe,
the mention of the 4K limit and reference to RFC4271 is important for
implementations. Also for operators as mentioned later in the same section.


>
>
> [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
>

KT> Ack.


>
>
> [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.
>

KT> Ack and thanks for the suggestion. Also, added the handling for when a
neighbor does not support extended messages that I realized was missed out.


>
>
> [minor] s/with an update/with a BGP UPDATE
>

KT> Ack


>
>
> ...
> 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
>

KT> Ack


>
>
> [nit] s/may encoded/may be encoded
>

KT> Ack


>
>
> ...
> 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?
>

KT> The point was that only the OSPF RI LSA TLVs can be encoded in this
node opaque attribute. Given that the TLV/sub-TLV space is determined on a
per LSA basis, it is not possible to mix "native" OSPF encodings from
different LSAs. We needed to be specific on how a receiver may be able to
parse and interpret these opaque OSPF encodings. I've updated the text to
clarify this and please let me know if that works.


>
> 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?
>

KT> That would be duplication and so not make sense - even if it is not a
problem. It can so happen that a Producer does not (yet) support RFC8814
and so continues to advertise the OSPF MSD TLV into the opaque TLV.


>
> s/MAY/may
>
> ** §4.3.2.6 and §4.3.3.6 have similar statements.  The same comment
> applies there.
>

KT> Ack


>
>
> [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].
>

KT> Ack


>
>
> ...
> 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].
>

KT> Ack


>
>
> [minor] s/in the "OSPFv3 Extended-LSA Sub-TLVs" registry [RFC8362]
> under the IANA OSPFv3 Parameters registry./in an OSPFv3 Extended LSA
> [RFC8362].
>

KT> Ack but the text is tweaked a bit.


>
>
> ...
> 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].
>

KT> Ack


>
>
> [minor] s/in the "OSPFv3 Extended-LSA Sub-TLVs" registry [RFC8362]
> under the IANA OSPFv3 Parameters registry./in an OSPFv3 Extended LSA
> [RFC8362].
>
>
KT> Ack but the text is tweaked a bit.


>
> ...
> 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.
>

KT> The section and encoding rule for private use is required - please see
response to next comment. IANA considerations does indicate ranges 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.
>

KT> There is the need to ensure some encoding rules for private so that the
TLVs of private use from one implementation are not misread by another
implementation. Without such rules, there is no way to even figure out
which vendor/implementation's private use is being referred to. E.g.,
https://www.rfc-editor.org/rfc/rfc5613.html#section-2.6


>
> 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).
>

KT> Nothing in the draft is contradicting or against the above. Note that a
"local site" can have multiple vendor implementations.


>
>
> ...
> 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).
>

KT> The reference is clearly made to OSPF virtual links in this section -
clarified in a couple of instances with text updates. In the rest of the
document (RFC7752 base), "virtual links" are used in various contexts -
e.g. physical vs virtual (as in a tunnel), or a virtual representation of a
link (e.g. "aggregate link" in Sec 5). In most places, the reference seems
to be evident to me but I am open to suggestions for changes/qualification.


>
>
> ...
> 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).
>

KT> Would it make sense to insert a new section 4 "Advertising IGP
information into BGP-LS" to hold this text and some other that has been
added in section 4 in this update v11? The introduction is focussed on
other aspects and this might get lost in there.


>
>
> [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.
>

KT> Ack.


>
>
> ...
> 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
>

KT> Ack


>
>
> 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
>

KT> Ack


>
>
> [minor] Please explain what a0 and a1 mean.
>

KT> Ack


>
>
> [minor] Please indicate that R0 is a BGP-LS Propagator.
>

KT> Ack


>
>
> ...
> 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
>

KT> Ack to both above.


>
>
> ...
> 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
>

KT> Ack


>
>
> [?] "...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.
>

KT> It should be "could" instead of "would" above - it depends on the BGP
decision process. The Node and Prefix NLRIs belonging to R5 remain the same
regardless of the state of the R5-R6 link. So it is possible that the stale
Router LSA carrying an older value of a stub prefix metric gets preferred
over a newer value for that stub prefix in the "current" Router LSA. Hope
some of the text updates clarify this.


>
>
> 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
>

KT> ack


>
>
> [nit] s/using RR/using RRs
>

KT> Ack


>
>
> [nit] s/this draft/this document
>

KT> Ack


>
>
> ...
> 1841    4.11.  Router-ID Anchoring Example: OSPF Pseudonode
>
> [] Please use addresses reserved for documentation in the examples
> (RFC6890).
>

KT> Fixed


>
>
> ...
> 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.
>

KT> Ack


>
>
> ...
> 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...
>

KT> Ack


>
>
> [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...
>

KT> Ack


>
>
> 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.
>

KT> Will ask for IANA to remove that registry.


>
>
> 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?
>

KT> It should have been the IETF Review policy. Given the limited size,
that would seem to be prudent IMHO.


>
>
> 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.
>

KT> Same as above - IETF Review.


>
>
> 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.


>

KT> Same as above - IETF Review.


>
> 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?
>

KT> That is correct. Fixed.


>
>
> [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].
>

KT> Ack. Updated with some minor changes.


>
>
> [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".
>

KT> Ack


>
>
> ...
> 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
>

KT> Ack


>
>
>
> ...
> 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
>

KT> Updated text and also reference to 7.1.1.


>
>
>
> ...
> 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.
>

KT> Ack


>
>
> 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?
>

KT> We cannot parse/check the sub-TLVs for unrecognized TLVs. Updated the
text.


>
>
>
> ...
> 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  (?)
>

KT> Ack


>
> When would that not be possible?  Are you thinking of a bug (or maybe
> a configuration), or something else?
>

KT> That would be an implementation or local policy choice. Note that with
AFI/SAFI disable, subsequent updates would just be ignored and sometimes it
may be preferred to perform session reset.


>
>
>
> ...
> 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
>

KT> Ack


>
>
>
> ...
> 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?
>

KT> Updated


>
>
>
> ...
> 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.
>

KT> This is correct - we cannot do anything better for malformed NLRI.


>
>
> [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."
>

KT> This is true in the case of BGP-LS.


>
> 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.
>

KT> This is a debatable point and depends on the consumer application. If a
node or link is malformed, what would be better - to simply remove it from
the topology view for the consumer or keep it with an error flagged on it.
In either case, that node/link would be unusable, but in the latter case,
at least the consumer application can detect that this is not a link/node
down but some BGP-LS error and flag it appropriately. In conclusion, we
have gone with the latter approach.


>
> 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. :-(
>

KT> Sure. But does this not apply to BGP in general?


>
>
>
> 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.
>

KT> Good point. There is a flip side here. Assume that there were two
BGP-LS Producers for the same link-state object. For some reason, one of
them generated a malformed TLV in the BGP-LS attribute  while the other did
not. If we do "treat as withdraw" then that malformed update is gone and
the other will go through. However, if we were to retain with "attribute
discard" then there is no guarantee which of the two updates would go
through. I was tempted to introduce a tweak/change in the BGP Decision
process for BGP-LS to consider updates w/o the BGP-LS Attribute as less
preferred. However, it would have been a significant change. Perhaps we can
still check/socialize with the WG?


>
>
>
> 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"?
>

KT> Ack


>
>
>
> 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".   ??
>

KT> Yes. Fixed the text.


>
>
> [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
>

KT> Ack. Semantic validation is not defined. Will change to non-normative.


>
>
>
> ...
> 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
>

KT> Ack


>
>
> [major] The last sentence is a specific instruction to the BGP-LS
> Consumer -- it should be removed.
>

KT> Ack


>
>
>
> 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?
>

KT> Yes, it is related to the maximum message size that an operator knows
can be used safely across their network.


>
>
>
> ...
> 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".
>

KT> Changing to SHOULD NOT in Sec 9 to be consistent.


>
>
>
> ...
> 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"
>

KT> Text is changed for consistency.


>
> 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?
>

KT> The BGP Speakers are not aware and it is for the operator to enable
such policies.


>
> 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?


KT> Yes


> 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).
>

KT> Updated the text. The feedback loop is when a consumer can originate
information that it receives such that it replaces the valid link-state
objects that are being originated by the legitimate BGP-LS Producers.


>
>
>
> 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).
>

KT> Removed that paragraph and added text instead in Sec 3 about the
one-way channel.


>
>
>
> 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.
>

KT> Changed "consumers" to BGP Speakers. Added text about the interface to
BGP-LS consumers having similar implications but that that is out of scope
of this document.


>
>
> [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.
>

KT> Ack. Added text to cover this.


>
>
>
> ...
> 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.
>

KT> Ack


>
>
> ...
> 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.
>

KT> Ack


>
>
> ...
> 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.
>

KT> ack


>
>
> ...
> 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.
>

KT> Ack


>
>
> 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.
>


KT> Ack

Thanks,
Ketan



>
> [EoR -10]
>