Ballot for draft-ietf-idr-nhc
Yes
No Objection
Note: This ballot was opened for revision 04 and is now closed.
# Gunter Van de Velde, RTG AD, comments for draft-ietf-idr-nhc-06 # The line numbers used are rendered from IETF idnits tool: https://author-tools.ietf.org/api/idnits?url=https://www.ietf.org/archive/id/draft-ietf-idr-nhc-06.txt # Many thanks Shepherd writeup from Sue Hares and the RTGDIR reviews from Mach Chen and Andrew Alston # The document is well written, many thanks for your efforts on making this such a pleasure to read. # COMMENTS # ======== 309 Due to the nature of BGP optional transitive path attributes, any BGP 310 speaker that does not implement this specification will propagate the 311 NHC, the requirements of this section notwithstanding. Such a 312 speaker will not update the NHC, however. GV> If NHC is implemented, does this imply that the functionality is automatically enabled by default? Operators often prefer to explicitly enable new control-plane processing behavior rather than have it activated automatically. It may therefore be useful to clarify that an NHC speaker that does not support NHC, or has NHC support administratively disabled, will still propagate the NHC unchanged. 397 When a BGP speaker receives a BGP route that includes the NHC, it 398 MUST compare the address given in the header portion of the NHC and 399 illustrated in Figure 1 to the next hop of the BGP route. If the two GV> In section 2.2.1 is mentioned that in some cases the NH is not globally unique. In such situation the BGPID TLV should be used i suspect? Should this type of processing added? and what if there is a non-matching NH but a matching BGPID TLV? (similar line of thought as with my next review comment) 492 3. BGP Identifier Characteristic GV> The text seems to keep the door slightly open to attach a BGPID characteristic even with a globally unique NH. It does not forbid doing this. However doing so, the NHC has two potential datapoints to verify if NHC is valid or not for the route entry. In such situation, must the receiving router only look at the matching NH, or only at matching BGPID, or both? or is that considered as incorrect NHC? Many thanks for this document, Kind Regards, Gunter Van de Velde Routing AD
Hi Bruno, Kireeti, Serge, Satya, John, Kevin, and Bin,
Thank you for the effort put in this specification. It was an interesting read to go through all the one decade I-Ds branches that lead to this effort.
The document is well-written and well-articulated, although there is a mix of protocol specifications and operational considerations (incremental deployment, configuration knobs, when special care is needed from those who deploy, log abnormal behavior, etc.) but that’s fine as far as these are there.
Please find some comments, fwiw:
# Initial values
I suggest we clarify the following:
## Add a mention that entries can be modified (deleted or content altered). This is to have a provision for some of these I-Ds to change the description if they want so or update the reference if any of these I-Ds make it to an RFC.
## The table does not track the document/event that led to a registration. For example, there is no visible information in the registry that indicates 1-2-4-5 are registered by this doc. Maybe add a note column to disclose that?
### Do we envisage in future having attributes that can be deprecated? If so, should that indication be supported by the registry (that is, add a status column)?
# Mismatch
CURRENT:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address Family Identifier | SAFI | Next Hop Len |
+-------------------------------+---------------+---------------+
| |
~ Network Address of Next Hop (variable) ~
| |
+---------------------------------------------------------------+
| |
~ Characteristic TLVs (variable) ~
| |
+---------------------------------------------------------------+
Figure 1: NHC Format
The meanings of the header fields (Address Family Identifier, SAFI or
Subsequent Address Family Identifier, Length of Next Hop, and Network
Address of Next Hop) are as given in Section 3 of [RFC4760].
## Mismatch between the figure and description for “Next Hop Len”.
## Please note that RFC4760 uses “Length of Next Hop Network Address”, not “Length of Next Hop” or “Next Hop Len”.
# Applicable only for NHC-aware routers
CURRENT:
When a BGP speaker receives a BGP route that includes the NHC, it
MUST compare the address given in the header portion of the NHC and
illustrated in Figure 1 to the next hop of the BGP route.
This seems to be assumed, but it is better to make it explicit this (and all Section 2.3) is discussing the behavior of NHC-aware routers.
# NHC Information
CURRENT:
Since the NHC is intended chiefly for conveying information about
forwarding plane features, it needs to be regenerated whenever the
BGP route's next hop is changed.
## There is nothing in the document that actually constrains the nature of information that can be conveyed in an NHC. The allocation FCFS policy won’t help rationalize that space.
## Having a more constrained range would be my favorite here (minimum Expert Review range).
# “potentially useful”
CURRENT:
The NHC signals
potentially useful information related to the forwarding plane
features, so it is desirable to make it transitive to ensure
## I’m sure there is a reasoning behind that subtle mention, but this raises the questions as why one would announce something that isn’t useful?
## Shouldn’t we simply say:
NEW:
The NHC signals
information related to the forwarding plane
features, so it is desirable to make it transitive to ensure
# Characteristic Code
CURRENT:
Characteristic Code: a two-octet unsigned integer that indicates the
type of characteristic advertised and unambiguously identifies an
individual characteristic.
## Shouldn’t the description include a mention about “forwarding” as that is the intended use?
## I suggest to add a pointer to the registry
NEW:
Values are taken from the registry (Section 4).
## As I’m there, the document is silent about sending reserved values
Consider adding text such as the following here or in Section 2.2:
NEW:
By default, characteristics with Code set to a reserved value (Section 4)
MUST NOT be used when sending an NHC.
“by default” is on purpose as this allows to relax the rule for experimentation or testing.
Alternatively, we may only cover 0 and 65535 cases:
NEW:
Characteristics with Code set to 0 and 65535 MUST NOT be used when sending an NHC.
# Characteristic Value
CURRENT:
Characteristic Length: a two-octet unsigned integer that indicates
the length, in octets, of the Characteristic Value field. A length
of 0 indicates that the Characteristic Value field is zero-length,
i.e., it has a null value.
Characteristic Value: a variable-length field. It is interpreted
according to the value of the Characteristic Code.
Should Characteristic Value description say that it includes a non-null value to avoid having two ways to encode null values?
# Redundant behavior
2.2.1
To mitigate this problem, if a BGP speaker constructs a route whose
next hop has no global part, it MUST include a BGPID TLV (Section 3).
Vs.
3.2
when a route
includes only a link-local address and no global address, the BGPID
MUST be included.
I would keep the normative language in one single place.
# Picky
## Peer vs Peers
A BGP speaker may have several peers.
OLD:
RFC 5492 allows a BGP speaker to advertise its capabilities to its
peer. When a route is propagated beyond the immediate peer, it is
NEW:
RFC 5492 allows a BGP speaker to advertise its capabilities to its
peers. When a route is propagated beyond an immediate peer, it is
or
NEW2:
RFC 5492 allows a BGP speaker to advertise its capabilities to a
peer. When a route is propagated beyond an immediate peer, it is
A similar construct is also present in the introduction.
## Multiple ASNs
A speaker may have multiple ASNs.
OLD:
AS Number: The Autonomous System Number [RFC6793]
NEW:
AS Number: An Autonomous System Number [RFC6793]
## It is the ASN that is carried in the attribute
OLD: Autonomous System carried in the BGPID.
NEW: Autonomous System Number carried in the BGPID.
Cheers,
Med
Thanks to Wes Hardaker for their multiple secdir reviews.
Thanks for the work done in this document. Alas, the shepherd's write-up provides neither justification for the intended status not a good sensible explanation for the 6 authors. I have also noticed several `SHOULD` (e.g., sections 2.2 & 2.3) without the required guidance per: https://datatracker.ietf.org/doc/statement-iesg-statement-on-clarifying-the-use-of-bcp-14-key-words/ (and this could be very important for interoperation !). I was about to ballot a DISCUSS on this point. In section 4, add an informative reference to https://www.iana.org/assignments/bgp-parameters/bgp-parameters.xhtml#bgp-parameters-2 I am afraid that draft-ietf-idr-elc is a *NORMATIVE* reference, so, let's remove all entries in section 4 that refer to draft documents.
Thank you for the work that has been put into this document. I do not see any transport-protocol related concerns.
Section 2.2, paragraph 5 > An implementation SHOULD propagate the NHC and its contained > characteristics by default. An implementation SHOULD provide > configuration control of whether any given characteristic is > propagated. An implementation MAY provide finer-grained control on > propagation based on attributes of the peering session, as discussed > in Section 6. Éric Vyncke identified this on his ballot against -05; it does not appear to have been addressed in -06. Several SHOULD statements do not identify the conditions under which deviation is acceptable, as required by BCP 14. Section 2.4, paragraph 1 > A BGP UPDATE message with a malformed NHC SHALL be handled using the > approach of "attribute discard" defined in [RFC7606]. RFC 7606 Section 2 states that attribute discard "MUST NOT be used except in the case of an attribute that has no effect on route selection or installation," and Section 8 further states that where an attribute has or may have a route selection effect, "the presumption is that discarding it is unsafe unless careful analysis proves otherwise." Section 2.3 of this document explicitly allows NHC characteristics to influence the route selection (in the tunneling, EBGP, and configuration-enabled cases). The document therefore, needs to carry out and record the "careful analysis." that RFC 7606 requires as a precondition for using attribute discard. The analysis is straightforward — discarding a malformed NHC is equivalent to receiving the route without an NHC, which is a normal condition for any router, so no forwarding or selection inconsistency results — but it needs to be stated. Without it, the document's choice of attribute discard is technically non-compliant with RFC 7606. Section 2.4, paragraph 1 > An NHC that contains no characteristic TLVs MAY be considered > malformed, although it is observed that the prescribed behavior of > "attribute discard" is semantically no different from that of having > no TLVs to process. There is no reason to propagate an NHC that > contains no characteristic TLVs, and so such NHCs MUST NOT be further > propagated. A receiver that does not exercise the MAY (i.e., treats the empty NHC as not malformed) is still bound by the MUST NOT propagate. This is a separate, independent prohibition that does not flow from the malformed/discard handling of RFC 7606. The text would be clearer if it distinguished these two paths explicitly: (a) if treated as malformed, apply attribute discard; (b) if not treated as malformed, the NHC MUST still be silently dropped and not propagated. Currently a reader could incorrectly infer that the MUST NOT propagate is a consequence of the MAY malformed treatment. Section 5, paragraph 3 > Implementations are reported at the IDR implementation status Wiki > (https://wiki.ietf.org/group/idr/implementations/draft-ietf-idr- > entropy-label). The URL in Section 5 — https://wiki.ietf.org/group/idr/implementations/draft-ietf-idr-entropy-label — links to the implementation wiki for the entropy label draft, not for NHC. This needs to be corrected to the NHC implementation page. No reference entries found for these items, which were mentioned in the text: [draft-ietf-idr-next-next], [draft-ietf-idr-entropy-label], [draft-ietf-idr-bgp-generic], [draft-ietf-idr-elc-00], and [draft-ietf-idr-bgp-ifit].
I believe this document is well designed and appropriate for PS (I would have been concerned if this has tried to be Informational). I support and will not spam the feedback from others. I will expand on Éric's point on SHOULDs in one particular paragraph. Some SHOULDs not having explanations are less of a big deal than others, but these truly need it to avoid edge case interoperability issues: > An implementation receiving routes with an NHC SHOULD NOT discard the > attribute or its contained characteristics by default. An > implementation SHOULD provide configuration control of whether any > given characteristic is processed. An implementation MAY provide > finer-grained control on propagation based on attributes of the > peering session, as discussed in Section 6.