Hi Dhananjay,

Many thanks for your comments. Will fix figures and editorial ones in the next iteration of the document. Some comments here:

4 + 7 + previous email. You are right that an all-zero index equals to no-index. I thought to the all-zero index to keep the format static for the specific message type; i think the trade-off is between slightly more verbosity (all-zero index) vs a variable structure that needs to be flagged, which is an extra complication. I'd be for the current choice but i am open to feedback if there is solid opinion against it;

5. That is right.

8. I agree with your comment. And, little spoiler, next revision of the document will include something that got a bit left out: TLV for Stats message. Stats are already TLVs, they should be put in a container, like we did for the BGP PDU with the BGP PDU TLV in Route Monitoring; this way optional trailing TLVs can apply to that message too. This came out of a conversation with Maxence during the hackathon last weekend.

Paolo


On 3/11/25 04:32, Dhananjay Patki (dhpatki) wrote:
A few more comments on this draft.

 1. Section 4.2: Instead of ‘set to one’ it should say  ‘set to 1’.

 2. Section 4.3: E bit set to value 0 must be shown in figure 4. E bit
    is mandatory in every TLV.

 3. Section 4.4: G bit must be shown in figure 5.

 4. Since we may have grouped and non-grouped TLVs, specifying index = 0
    to imply that the TLV applies to all NLRIs of the PDU is kind of
    redundant. An indexed TLV with index = 0 is as good as a non-indexed
    TLV. In that case, we may as well omit the index if its value is
    going to be 0.

 5. The draft says ‘A Group TLV MUST NOT include its own or /another
    Group Index/.’ Does it mean that nested groups are not allowed?

 6. In Appendix A, in Figure 6, all TLVs must show E bit set to 0.

 7. Section 4.3 states ‘/The reported length in indexed TLVs refers to
    the total encoded TLV value (ie. with the length of the index field
    excluded)./’. Should we include the ‘I flag’ (as mentioned in my
    previous mail below) that specifies if it is an index TLV vs
    non-Indexed TLV, then the TLV length  should include the length of
    the index field.

 8. Figure 6 shows NLRI indexes from 1 to 10 and then group indexed
    0x000b and 0x000c. That is the group indexes start at one more than
    the last NLRI index. Is that necessary? Can the group indexes also
    not start from 1? Since we anyway have the G bit, we know that it’s
    a group index and not an NLRI index.

 9. I think the title of this draft should be ‘BMP Version 4: TLV
    Support for all BGP Monitoring Protocol (BMP) Messages’. Though in
    this draft the TLV support is being added only for Route Monitoring
    and Peer Down (which the abstract mentions anyway), the highlight of
    this version is TLV support for all BMP message types.

--

Regards,

Dhananjay

*From: *Dhananjay Patki (dhpatki) <[email protected]>
*Date: *Friday, 31 October 2025 at 11:42 PM
*To: *[email protected] <[email protected]>
*Cc: *[email protected] <[email protected]>
*Subject: *[GROW] Comment on draft-ietf-grow-bmp-tlv

Hi Paolo, Yunan,

It looks like we can have a combination indexed TLVs and non-indexed TLVs in the BMP messages. While this draft defined indexed TLVs, we may still have TLVs that need not be indexed as they won’t be per NLRI or NLRI group.

*Non-indexed*(Figure 1):

   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

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   |E|             Type            |     Length (2 octets)         |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   ~                      Value (variable)                         ~

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

*Indexed*(Figure 4): *NOTE*: This figure in the draft does not show the E bit. But it should show as I have shown below. Also, the length of Type should be 15 bits and not 2 octets.

   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

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

*|**E|*       Type (2 octets)        |     Length (2 octets)         |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   |G|      Index (15 bits)        |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   ~                      Value (variable)                         ~

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

In order to be able to parse them separately, we need something like ‘I bit’ shown below that indicates whether this is an indexed TLV or non-indexed TLV?

   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

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   |E|*I*|     Type (*14 bits*)        |     Length (2 octets)         |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  |G|      Index (15 bits)        | /<-- Included based on the value of I bit/

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   ~                      Value (variable)                         ~

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

If I = 0, the TLV won’t have 2 octets of G bit+Index

If I = 1, the TLV will have 2 octets of G bit+index

--

Regards,

Dhananjay


_______________________________________________
GROW mailing list -- [email protected]
To unsubscribe send an email to [email protected]

_______________________________________________
GROW mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to