Hi Luuk,

First and foremost, thanks for your comments. Inline:

On 16/1/23 13:35, Luuk Hendriks wrote:
[ .. ]

General:
- For stateless parsing, I think all the necessary information (Four
   Octet Capable, AddPath, Multiple Labels) should come before the BGP
   PDU starts. I am strongly in favour of using the peer flags in the
   Per-Peer Header for that, and not TLVs.  And as such, I think we
   should introduce a bit for AddPath, and one for Multiple Labels.

Ack, i have also matured similar feelings. Let's see if this will be part of the -bis document we intend to write with Tim (makes sense to me) or we should seek a different placement.

- Regarding bumping the version: I think this draft describes changes
   that do not require a version bump (i.e. the new flags as described
   above), while others perhaps do (i.e. changing the RouteMonitoring
   wireformat). A version bump should have maximum visibility and as such
   either a -bis or a new document might be the better place.  That would
   unfortunately mean the ebit and path marking drafts will be stalled as
   they depend on the TLVs, if I recall things correctly. But it might
   prevent a lot of confusion later on, especially for new implementers.

I think we have two main ways to proceed. Add support for TLVs to existing Route Monitoring message and bump the version for backward compatibility or create a new Route Monitoring message with support for TLVs and not execute the bump - i'd definitely not conflate this with a -bis that can take quite some time to pass through.

Among the two solutions I am myself OK with both. I prefer what we do already have in place but i am also here to serve the community and if there is a strong preference elsewhere, i'd have zero issue in changing the direction. Chair(s) did express a favor in the current direction in the past and neither of these two solutions would stall ebit and path marking drafts.

Looking forward to further feedback on this aspect.

Per section:

Sec 3:
- For indexed TLVs, the text is not explicit about whether the length
   field includes the 2 bytes for the index field, or describes the
   length of only the value.
   I don't see a benefit of one over the other, as long as the text is
   clear about it.

Section 3 does refer to Section 4.4 of RFC7854 where the length field is defined as "The length of the following Information field, in bytes.". Do you feel this is under defined?

- If an indexed TLV for a specific NLRI (index > 0) exists alongside a
   TLV with index 0, does the specific TLV trump the generic one for that
   NLRI, or does it compliment the generic one?
   I'd assume the latter.

I'd tend to say that this should not be specified by the tlv draft and rather be left as application specific. For example, a path marking or a REL draft would specify that.

Sec 4.2
- Do we really want the BGP PDU TLV to be possibly preceded by other
   TLVs?  Are there any examples of when this would be useful, other than
   TLVs containing info needed to correctly parse the BGP PDU (which we
   should not want anyway in my opinion)?
   For use cases where one just wants the BGP PDU, being able to bail out
   as early as possible sounds useful.
   Or another way to think about this: the BGP PDU TLV is a mandatory TLV
   for the RouteMonitoring message. To me it makes sense to first list the
   mandatory TLVs, then the optional ones.

This was the original thinking behind Route Mirroring in RFC7854. Hence i wanted to get this new proposal to be consistent to something that had already been (successfully) proposed. What are the arguments against it?

4.2.1
- I had hard time figuring out how the Group TLV was supposed to work,
   until I looked back at some older mails on the list. If my
   understanding below is correct, I'm happy to propose some text.

   The first two bytes in the value of the Group TLV are a new, made up
   index, representing a group of NLRIs. The remainder of the value are
   the indices of the actual NLRI in the BGP PDU that belong to the
   group. Then, other, 'normal' TLVs can point to the newly made up
   index, and carry a value that applies to all the NLRI listed in the
   Group TLV.

To confirm that we are in sync.

   If that is the correct interpretation, some points/questions I think
   should be answered in the text:

   - the text might need an additional MUST, stating the newly made up
     index MUST be unique for that RouteMonitoring message.

Added text.

   - can one NLRI appear in more than one Group TLV? (I assume yes)

Yes. Added text.

   - do the Group TLVs appear before or after the normal TLVs? If we do
     enforce sorting by code points, we could steer this behavior by
     picking a certain code point.

I was not thinking to make Group TLVs somehow special compared to any other TLVs that we may define later such that ordering would matter.

   - do the indices in the Group TLV have to be sorted? This might be
     convenient for parsing/processing at the BMP station.

Added text, i felt to go with a SHOULD but we can review this.

   - can multiple TLVs point to a Group TLV index? (I assume yes)

Yes. Do you believe text would be needed for this?

   - can Group TLV indices appear in the pointed-to indices in another
     Group TLV, i.e. nested grouping? (I'm not sure this makes things
     easier for anyone in the end, so if there is no convincing use-case
     for it, perhaps it should be explicitly forbidden?)

Good one, i agree we could start with explicitely forbidding this and then re-visiting if anybody comes with a use-case around it. Added text.

For my own understanding I created this example RouteMonitoring message
(in sort of pseudo-wireformat if you will) comprising:
     - the usual CommonHeader and PerPeerHeader
     - the BGP PDU in the first TLV, containing 10 NLRI
     - two Group TLVs, pointing to four and three actual TLVs, respectively
     - one TLV pointing to a single NLRI (NLRI number 7)
     - one TLV pointing to the first Group TLV
     - one TLV pointing to the second Group TLV

RouteMonitoring
   CommonHeader
   PerPeerHeader
   TLVs
      [type=TBD1, length=x, index=0, value=$BGP_PDU{ NLRI1, .. NLRI10 } ]
      [type=TBD2, length=x, index=0, value={0x0001, 0x0002, 0x0003, 0x000a}]
      [type=TBD2, length=x, index=0, value={0x0004, 0x0005, 0x0006}]
      [type=TBDw, length=x, index=7, value=something_that_applies_to_NLRI7]
      [type=TBDx, length=x, index=0, value=something_that_applies_to_all]
      [type=TBDy, length=x, index=0x000b, value=applies_to_four_nlri]
      [type=TBDz, length=x, index=0x000c, value=applies_to_three_nlri]


If this is correctly interpreted and somehow useful for the draft, I'm
happy to make this into a proper diagram.

Please, that contribution would be very much appreciated!

4.2.2
As mentioned, I think these TLVs should go in favour of flags in the
Per-Peer header.

Ack!

4.3
Wouldn't it make sense to wrap the BGP PDU in a TLV (for reason codes 1
and 3), for the same reasons we want to wrap the PDU in RouteMonitoring
messages?

Good point and, again as i may have already stated, my purpose was to try to be consistent to what already exists.

Text was added in commit https://github.com/paololucente/draft-ietf-grow-bmp-tlv/commit/0278888e2c615d63b72ac7a851b6efabfb03c932 . Just let me know any additions / deletions / changes. Otherwise these are good to go for upcomign -11 revision!

Paolo

_______________________________________________
GROW mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/grow

Reply via email to