I have a network capture of a real-live BGP-LS session:
...
Path attributes
Path Attribute - ORIGIN: IGP
Path Attribute - AS_PATH: empty
Path Attribute - LOCAL_PREF: 100
Path Attribute - BGP-LS Attribute
Flags: 0x80, Optional, Non-transitive, Complete
Type Code: BGP-LS Attribute (29)
Length: 97
Link State
Administrative group (color) TLV
Maximum link bandwidth TLV
Maximum reservable link bandwidth TLV
Unreserved bandwidth TLV
TE Default Metric TLV
Metric TLV
Adjacency SID TLV
Adjacency SID TLV
Path Attribute - MP_REACH_NLRI
Flags: 0x90, Optional, Extended-Length, Non-transitive, Complete
Type Code: MP_REACH_NLRI (14)
Length: 228
Address family identifier (AFI): BGP-LS (16388)
Subsequent address family identifier (SAFI): BGP-LS (71)
Next hop: <redacted>
Number of Subnetwork points of attachment (SNPA): 0
Network Layer Reachability Information (NLRI)
BGP-LS NLRI
BGP-LS NLRI
BGP-LS NLRI
...
... where within a BGP update message in the MP_REACH_NLRI path attribute one can observe multiple BGP-LS NLRIs (Link-NLRIs). Also within the BGP-LS path attribute there are multiple "Adjacency SID TLV (Type 1099)".
I was of the opinion that this is not correct.
As stated in RFC 9552 "[BGP-LS attribute] is used to carry link, node, and prefix parameters and attributes" - in my understanding - for a single specific BGP-LS NLRI only. If we would have multiple BGP-LS NLRIs within a MP_REACH_NLRI attribute then it is unclear for which of those the specific BGP-LS attribute TLVs are meant.
Are multiple BGP-LS NLRIs in a single MP_REACH_NLRI path attribute possible?
---
Relevant RFCs
------------------------------
Andreas
------------------------------