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]