rfc9793v1.txt   rfc9793.txt 
skipping to change at line 87 skipping to change at line 87
Contributors Contributors
Authors' Addresses Authors' Addresses
1. Introduction 1. Introduction
Bit Index Explicit Replication (BIER) [RFC8279] is a multicast Bit Index Explicit Replication (BIER) [RFC8279] is a multicast
forwarding architecture that doesn't require an explicit tree- forwarding architecture that doesn't require an explicit tree-
building protocol and doesn't require intermediate routers to building protocol and doesn't require intermediate routers to
maintain per-tree multicast states. It supports both direct and maintain per-tree multicast states. It supports both direct and
tunneled BIER forwarding. This document describes BGP extensions for tunneled BIER forwarding. This document describes BGP extensions for
advertising the BIER-specific information and the methods for advertising the BIER information and methods for calculating BIER
calculating BIER forwarding states with this information. More states based on the advertisements. More specifically, in this
specifically, in this document, we define a new optional transitive document, we define a new optional transitive BGP attribute, referred
BGP attribute, referred to as the "BIER attribute", to convey the to as the "BIER attribute", to convey the BIER-specific information
BIER-specific information such as BIER Forwarding Router identifier such as Bit-Forwarding Router Identifier (BFR-ID), BitStringLength
(BFR-id), BitStringLength (BSL), and so on. The signaling is to be (BSL), and so on. The signaling is to be used in a single
used in a single Administrative Domain (AD), and Section 7 specifies Administrative Domain (AD), and Section 7 specifies procedures to
procedures to prevent the BIER attribute from "leaking out" of the prevent the BIER attribute from "leaking out" of the domain.
domain.
2. Terminology 2. Terminology
This document makes use of the terminology defined in [RFC4271] and This document makes use of the terminology defined in [RFC4271] and
[RFC8279]. Some terms are listed below for convenience. [RFC8279]. Some terms are listed below for convenience.
BIER: Bit Indexed Explicit Replication BIER: Bit Indexed Explicit Replication
BFR: BIER Forwarding Router BFR: Bit-Forwarding Router
BFR-ID: BIER Forwarding Router Identifier BFR-ID: BFR Identifier
BSL: BitStringLength BSL: BitStringLength
BIFT: BIER Forwarding Table BIFT: Bit Index Forwarding Table
BIFT-id: BIER Forwarding Table Identifier BIFT-id: Bit Index Forwarding Table Identifier
BFER: BIER Forwarding Egress Router BFER: Bit-Forwarding Egress Router
BFR-prefix: Each BFR is assigned a single "BFR-prefix" for each sub- BFR-prefix: Each BFR is assigned a single "BFR-prefix" for each sub-
domain to which it belongs. It is recommended that the BFR-prefix domain to which it belongs. It is recommended that the BFR-prefix
be a loopback address of the BFR. be a loopback address of the BFR.
NLRI: Network Layer Reachability Information [RFC4271] NLRI: Network Layer Reachability Information [RFC4271]
AFI: Address Family Identifier [RFC4760] AFI: Address Family Identifier [RFC4760]
SAFI: Subsequent Address Family Identifier [RFC4760] SAFI: Subsequent Address Family Identifier [RFC4760]
skipping to change at line 165 skipping to change at line 164
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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | | Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Value (variable) ~ ~ Value (variable) ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The Length field defines the length of the value portion in octets The Length field defines the length of the value portion in octets
(thus, a TLV with no value portion would have a length of zero). The (thus, a TLV with no value portion would have a length of zero). The
TLV is not padded to 4-octet alignment. Unknown and unsupported TLV is not padded to 4-octet alignment. Unknown and unsupported
types MUST be preserved and propagated within the BIER Attribute. types MUST be preserved and propagated within the BIER attribute.
The presence of unknown or unexpected TLVs MUST NOT result in the The presence of unknown or unexpected TLVs MUST NOT result in the
NLRI or the BIER Attribute being considered malformed. NLRI or the BIER attribute being considered malformed.
When creating a BIER attribute, a BFR MUST include one BIER TLV for When creating a BIER attribute, a BFR MUST include one BIER TLV for
every Sub-domain that the prefix belongs to. The attribute type code every sub-domain that the prefix belongs to. The attribute type code
for the BIER Attribute is 41. The value field of the BIER Attribute for the BIER attribute is 41. The value field of the BIER attribute
contains one or more BIER TLVs as shown below: contains one or more BIER TLVs as shown below:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 1 | Length | | Type = 1 | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sub-domain | BFR-ID | Reserved | | Sub-domain | BFR-ID | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ~ ~ ~
skipping to change at line 199 skipping to change at line 198
Sub-domain: A 1-octet field encoding the sub-domain ID corresponding Sub-domain: A 1-octet field encoding the sub-domain ID corresponding
to the BFR-ID (see [RFC8279]). to the BFR-ID (see [RFC8279]).
BFR-ID: A 2-octet field encoding the BFR-ID (see [RFC8279]). BFR-ID: A 2-octet field encoding the BFR-ID (see [RFC8279]).
Reserved: SHOULD be set to 0 on transmission and MUST be ignored on Reserved: SHOULD be set to 0 on transmission and MUST be ignored on
reception. reception.
Sub-TLVs: Contains one or more sub-TLVs. Sub-TLVs: Contains one or more sub-TLVs.
The BIER TLV MAY appear multiple times in the BIER Path Attribute, The BIER TLV MAY appear multiple times in the BIER path attribute,
one for each sub-domain. There MUST be no more than one BIER TLV one for each sub-domain. There MUST be no more than one BIER TLV
with the same Sub-domain value; if there is, the entire BIER Path with the same Sub-domain value; if there is, the entire BIER path
Attribute MUST be ignored. attribute MUST be ignored.
A BIER TLV may have sub-TLVs, which may have their own sub-TLVs. All A BIER TLV may have sub-TLVs, which may have their own sub-TLVs. All
those are referred to as sub-TLVs and share the same Type space, those are referred to as sub-TLVs and share the same Type space,
regardless of the level. regardless of the level.
3.1. BIER MPLS Encapsulation Sub-TLV 3.1. BIER MPLS Encapsulation Sub-TLV
The BIER MPLS Encapsulation sub-TLV has the following format. It MAY The BIER MPLS Encapsulation sub-TLV has the following format. It MAY
appear multiple times in the BIER TLV. appear multiple times in the BIER TLV.
The BIER MPLS Encapsulation Sub-TLV has the following format: The BIER MPLS Encapsulation sub-TLV has the following format:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 2 | Length | | Type = 2 | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Max SI |BS Len | Label | | Max SI |BS Len | Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ sub-TLVs | ~ sub-TLVs |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 2 Type: 2
Length: 2 octets encoding the length in octets of the Value part. Length: 2 octets encoding the length in octets of the Value part.
The value is 4 or other (depending on sub-TLVs). The value is 4 or other (depending on sub-TLVs).
Max SI: A 1-octet field encoding the maximum Set Identifier (SI) Max SI: A 1-octet field encoding the Maximum Set Identifier (see
(see Section 1 of [RFC8279]) used in the encapsulation for this Section 1 of [RFC8279]) used in the encapsulation for this BIER
BIER sub-domain for this BitString length. sub-domain for this BitString length.
BS Len: BitString Length. A 4-bit field encoding the supported BS Len: BitString Length. A 4-bit field encoding the supported
BitString length associated with this BFR-prefix. The values BitString length associated with this BFR-prefix. The values
allowed in this field are specified in Section 2 of [RFC8296]. allowed in this field are specified in Section 2 of [RFC8296].
Label: A 20-bit value representing the first label in the label Label: A 20-bit value representing the first label in the label
range. range.
The "label range" is the set of labels beginning with the Label and The "label range" is the set of labels beginning with the Label and
ending with (Label + (Max SI)). A unique label range is allocated ending with (Label + (Max SI)). A unique label range is allocated
for each BitString length and sub-domain-id. These labels are used for each BitString length and sub-domain-id. These labels are used
for BIER forwarding, as described in [RFC8279] and [RFC8296]. for BIER forwarding, as described in [RFC8279] and [RFC8296].
The size of the label range is determined by the number of SIs The size of the label range is determined by the number of SIs
(Section 1 of [RFC8279]) that are used in the network. Each SI maps (Section 1 of [RFC8279]) that are used in the network. Each SI maps
to a single label in the label range: the first label is for SI=0, to a single label in the label range: the first label is for SI=0,
the second label is for SI=1, etc. the second label is for SI=1, etc.
If the label associated with the Maximum Set Identifier exceeds the If the label associated with the Maximum SI exceeds the 20-bit range,
20-bit range, the BIER MPLS Encapsulation Sub-TLV containing the the BIER MPLS Encapsulation sub-TLV containing the error MUST be
error MUST be ignored. ignored.
If the same BitString length is repeated in multiple BIER MPLS If the same BitString length is repeated in multiple BIER MPLS
Encapsulation Sub-TLVs inside the same BIER TLV, all BIER MPLS Encapsulation sub-TLVs inside the same BIER TLV, all BIER MPLS
Encapsulation Sub-TLVs in the BIER TLV MUST be ignored. Encapsulation sub-TLVs in the BIER TLV MUST be ignored.
Label ranges within all BIER MPLS Encapsulation Sub-TLVs advertised Label ranges within all BIER MPLS Encapsulation sub-TLVs advertised
by the same BFR MUST NOT overlap. If an overlap is detected, all by the same BFR MUST NOT overlap. If an overlap is detected, all
BIER MPLS Encapsulation Sub-TLVs advertised by the BFR MUST be BIER MPLS Encapsulation sub-TLVs advertised by the BFR MUST be
ignored. ignored.
3.2. BIER Non-MPLS Encapsulation Sub-TLV 3.2. BIER Non-MPLS Encapsulation Sub-TLV
The BIER non-MPLS Encapsulation sub-TLV is used for non-MPLS The BIER non-MPLS Encapsulation sub-TLV is used for non-MPLS
encapsulation and has the following format. It MAY appear multiple encapsulation and has the following format. It MAY appear multiple
times within a single BIER TLV. If the same BitString length is times within a single BIER TLV. If the same BitString length is
repeated in multiple BIER non-MPLS encapsulation Sub-TLVs inside the repeated in multiple BIER non-MPLS Encapsulation sub-TLVs inside the
same BIER TLV, the BIER TLV MUST be ignored. same BIER TLV, the BIER TLV MUST be ignored.
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 3 | Length | | Type = 3 | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Max SI |BS Len | BIFT-id | | Max SI |BS Len | BIFT-id |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ sub-TLVs | ~ sub-TLVs |
skipping to change at line 291 skipping to change at line 290
Type: 3 Type: 3
Length: 2 octets encoding the length in octets of the Value part. Length: 2 octets encoding the length in octets of the Value part.
The value is 4 or other (depending on sub-TLVs). The value is 4 or other (depending on sub-TLVs).
Max SI: A 1-octet field encoding the Maximum Set Identifier Max SI: A 1-octet field encoding the Maximum Set Identifier
(Section 1 of [RFC8279]) used in the encapsulation for this BIER (Section 1 of [RFC8279]) used in the encapsulation for this BIER
sub-domain for this BitString length. The first BIFT-id is for sub-domain for this BitString length. The first BIFT-id is for
SI=0, the second BIFT-id is for SI=1, etc. If the BIFT-id SI=0, the second BIFT-id is for SI=1, etc. If the BIFT-id
associated with the Maximum Set Identifier exceeds the 20-bit associated with the Maximum SI exceeds the 20-bit range, the sub-
range, the sub-TLV MUST be ignored. TLV MUST be ignored.
BS Len: BitString Length. A 4-bit field encoding the BitString BS Len: BitString Length. A 4-bit field encoding the BitString
length (as per [RFC8296]) supported for the encapsulation. length (as per [RFC8296]) supported for the encapsulation.
BIFT-id: A 20-bit field representing the first BIFT-id in the BIFT- BIFT-id: A 20-bit field representing the first BIFT-id in the BIFT-
id range. id range.
The "BIFT-id range" is the set of 20-bit values beginning with the The "BIFT-id range" is the set of 20-bit values beginning with the
BIFT-id and ending with (BIFT-id + (Max SI)). These BIFT-ids are BIFT-id and ending with (BIFT-id + (Max SI)). These BIFT-ids are
used for BIER forwarding, as described in [RFC8279] and [RFC8296]. used for BIER forwarding, as described in [RFC8279] and [RFC8296].
The size of the BIFT-id range is determined by the number of SIs The size of the BIFT-id range is determined by the number of SIs
(Section 1 of [RFC8279]) that are used in the network. Each SI maps (Section 1 of [RFC8279]) that are used in the network. Each SI maps
to a single BIFT-id in the BIFT-id range: the first BIFT-id is for to a single BIFT-id in the BIFT-id range: the first BIFT-id is for
SI=0, the second BIFT-id is for SI=1, etc. SI=0, the second BIFT-id is for SI=1, etc.
If the BIFT-id associated with the Maximum Set Identifier exceeds the If the BIFT-id associated with the Maximum SI exceeds the 20-bit
20-bit range, the BIER non-MPLS Encapsulation sub-TLV containing the range, the BIER non-MPLS Encapsulation sub-TLV containing the error
error MUST be ignored. MUST be ignored.
BIFT-id ranges within all the BIER non-MPLS Encapsulation sub-TLVs BIFT-id ranges within all the BIER non-MPLS Encapsulation sub-TLVs
advertised by the same BFR MUST NOT overlap. If an overlap is advertised by the same BFR MUST NOT overlap. If an overlap is
detected, all the BIER non-MPLS Encapsulation sub-TLVs advertised by detected, all the BIER non-MPLS Encapsulation sub-TLVs advertised by
the BFR MUST be ignored. However, the BIFT-id ranges may overlap the BFR MUST be ignored. However, the BIFT-id ranges may overlap
across different encapsulation types and that is allowed. As an across different encapsulation types and that is allowed. As an
example, the BIFT-id value in the non-MPLS encapsulation sub-TLV may example, the BIFT-id value in the non-MPLS Encapsulation sub-TLV may
overlap with the Label value in the Label range in the BIER MPLS overlap with the Label value in the Label range in the BIER MPLS
encapsulation sub-TLV. Encapsulation sub-TLV.
3.3. BIER Nexthop Sub-TLV 3.3. BIER Nexthop Sub-TLV
The BIER Nexthop sub-TLV MAY be included, and it MUST NOT be included The BIER Nexthop sub-TLV MAY be included, and it MUST NOT be included
more than once in each of the MPLS or non-MPLS Encapsulation sub-TLVs more than once in each of the MPLS or non-MPLS Encapsulation sub-TLVs
or in the top-level BIER TLV. It is used when calculating BIFT or in the top-level BIER TLV. It is used when calculating BIFT
entries, as described in Section 5 and illustrated in Section 6. entries, as described in Section 5 and illustrated in Section 6.
0 1 2 3 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 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
skipping to change at line 346 skipping to change at line 345
Type: 4 Type: 4
Length: 2 octets. The value is 4 if the Nexthop is an IPv4 address Length: 2 octets. The value is 4 if the Nexthop is an IPv4 address
and 16 if the Nexthop is an IPv6 address. and 16 if the Nexthop is an IPv6 address.
Nexthop: 4 or 16 octets of an IPv4/IPv6 address. Nexthop: 4 or 16 octets of an IPv4/IPv6 address.
4. Originating/Propagating/Updating the BIER Attribute 4. Originating/Propagating/Updating the BIER Attribute
A BIER Forwarding Egress Router (BFER) MUST attach a BIER attribute A Bit-Forwarding Egress Router (BFER) MUST attach a BIER attribute to
to its own /32 (for IPv4) or /128 (for IPv6) host BFR-prefix NLRI. its own /32 (for IPv4) or /128 (for IPv6) host BFR-prefix NLRI. The
The BIER attribute MUST include one BIER TLV for each BIER sub-domain BIER attribute MUST include one BIER TLV for each BIER sub-domain
that it supports. Each BIER TLV MUST include an MPLS and/or non-MPLS that it supports. Each BIER TLV MUST include an MPLS and/or non-MPLS
Encapsulation sub-TLV and MAY include a BIER Nexthop sub-TLV with the Encapsulation sub-TLV and MAY include a BIER Nexthop sub-TLV with the
Nexthop set to the BIER prefix. If the BIER Nexthop sub-TLV is not Nexthop set to the BIER prefix. If the BIER Nexthop sub-TLV is not
included, the BIER prefix will be used by receiving BFRs as the BIER included, the BIER prefix will be used by receiving BFRs as the BIER
nexthop when calculating BIFT. next hop when calculating BIFT.
When a BFR receives an update with the BIER path attribute, the When a BFR receives an update with the BIER path attribute, the
attribute is parsed with the following validations: attribute is parsed with the following validations:
* Syntactic checking based on the Length field of TLVs and sub-TLVs: * Syntactic checking based on the Length field of TLVs and sub-TLVs:
- The total length of BIER TLVs (including the Type and Length - The total length of BIER TLVs (including the Type and Length
fields) MUST be equal to the BIER path attribute length. fields) MUST be equal to the BIER path attribute length.
- The total length of sub-TLVs (including the Type and Length - The total length of sub-TLVs (including the Type and Length
skipping to change at line 390 skipping to change at line 389
Encapsulation sub-TLV with its own, i.e., as if the BFR is attaching Encapsulation sub-TLV with its own, i.e., as if the BFR is attaching
the encapsulation sub-TLV for its own BIER prefix. If it does not the encapsulation sub-TLV for its own BIER prefix. If it does not
update the BIER Nexthop sub-TLVs, it MUST NOT update the MPLS or non- update the BIER Nexthop sub-TLVs, it MUST NOT update the MPLS or non-
MPLS Encapsulation sub-TLV. If it does not support a sub-domain, it MPLS Encapsulation sub-TLV. If it does not support a sub-domain, it
MUST NOT update the corresponding BIER TLV. MUST NOT update the corresponding BIER TLV.
It's possible that the BFR supports some but not all BitStringLengths It's possible that the BFR supports some but not all BitStringLengths
(BSLs) in the received MPLS or non-MPLS Encapsulation sub-TLVs. (BSLs) in the received MPLS or non-MPLS Encapsulation sub-TLVs.
After setting/updating the BIER Nexthop sub-TLV in the top BIER TLV After setting/updating the BIER Nexthop sub-TLV in the top BIER TLV
to itself, for the BSLs that it does support, the BFR MUST remove the to itself, for the BSLs that it does support, the BFR MUST remove the
BIER Nexthop sub-TLV (if present) in the corresponding Encapsulation BIER Nexthop sub-TLV (if present) in the corresponding MPLS
sub-TLVs. For the BSLs that it does not support: Encapsulation sub-TLVs. For the BSLs that it does not support:
* If a BIER Nexthop sub-TLV is included in the Encapsulation sub- * If a BIER Nexthop sub-TLV is included in the MPLS Encapsulation
TLV, it MUST NOT be updated. sub-TLV, it MUST NOT be updated.
* Otherwise, if a BIER Nexthop sub-TLV is included in the received * Otherwise, if a BIER Nexthop sub-TLV is included in the received
BIER TLV, its original value (before changed for supported BSLs by BIER TLV, its original value (before changed for supported BSLs by
this BFR) MUST be copied into the Encapsulation sub-TLV. this BFR) MUST be copied into the MPLS Encapsulation sub-TLV.
* Otherwise, a BIER Nexthop sub-TLV MUST be added to the * Otherwise, a BIER Nexthop sub-TLV MUST be added to the MPLS
Encapsulation sub-TLV with its value set to the BFR-prefix. Encapsulation sub-TLV with its value set to the BFR-prefix.
All impacted Length fields (e.g., the Encapsulation sub-TLV Length All impacted Length fields (e.g., the MPLS Encapsulation sub-TLV
and the top-level BIER TLV Length) MUST be updated accordingly. Length and the top-level BIER TLV Length) MUST be updated
accordingly.
Since the BIER attribute is an optional, transitive BGP path Since the BIER attribute is an optional, transitive BGP path
attribute, a non-BFR BGP speaker could still re-advertise the attribute, a non-BFR BGP speaker could still re-advertise the
received route with a BIER attribute. received route with a BIER attribute.
Two different BFR-prefixes MUST NOT have the same non-zero BFR-ID in Two different BFR-prefixes MUST NOT have the same non-zero BFR-ID in
the same sub-domain. If a duplication is detected, the receiving BFR the same sub-domain. If a duplication is detected, the receiving BFR
MUST NOT use the BFR-prefixes with the same BFR-ID for BIFT MUST NOT use the BFR-prefixes with the same BFR-ID for BIFT
calculation for the sub-domain and an error SHOULD be logged. calculation for the sub-domain and an error SHOULD be logged.
5. BIFT Calculation with BGP Signaling 5. BIFT Calculation with BGP Signaling
As pointed out in [RFC8279], BIFTs are derived from the unicast FIB As pointed out in [RFC8279], BIFTs are derived from the unicast FIB
by adding BIER-specific information. by adding BIER-specific information.
For each sub-domain, a BFR calculates the corresponding BIFTs by For each sub-domain, a BFR calculates the corresponding BIFTs by
going through the BIER prefixes whose BIER attribute includes a BIER going through the BIER prefixes whose BIER attribute includes a BIER
TLV for the sub-domain. For a non-zero BFR-id in the BIER TLV, a TLV for the sub-domain. For a non-zero BFR-id in the BIER TLV, a
BIFT entry is created or updated. The entry's BFR Neighbor (BFR-NBR) BIFT entry is created or updated. The entry's BFR Neighbor (BFR-NBR)
[RFC8279] is the Nexthop in the BIER Nexthop sub-TLV in the [RFC8279] is the Nexthop in the BIER Nexthop sub-TLV in the
corresponding Encapsulation sub-TLV or in the top-level BIER TLV if corresponding MPLS Encapsulation sub-TLV or in the top-level BIER TLV
the Encapsulation sub-TLV does not have a Nexthop sub-TLV. If there if the MPLS Encapsulation sub-TLV does not have a BIER Nexthop sub-
is no Nexthop sub-TLV at all, the entry's BFR Neighbor is the BIER TLV. If there is no BIER Nexthop sub-TLV at all, the entry's BFR-NBR
prefix itself. The BIER label or BIFT-id for the entry is derived is the BIER prefix itself. The BIER label or BIFT-id for the entry
from the label range in the MPLS Encapsulation sub-TLV or from the is derived from the label range in the MPLS Encapsulation sub-TLV or
BIFT-id range in the non-MPLS Encapsulation sub-TLV. from the BIFT-id range in the non-MPLS Encapsulation sub-TLV.
BIER traffic is sent to the BFR-NBR either directly (BIER header BIER traffic is sent to the BFR-NBR either directly (BIER header
directly follows a Layer 2 header) if the BFR-NBR is directly directly follows a Layer 2 header) if the BFR-NBR is directly
connected or via a tunnel. Notice that, if a non-BFR BGP speaker re- connected or via a tunnel. Notice that, if a non-BFR BGP speaker re-
advertises a BIER prefix (in this case, it cannot update the BIER advertises a BIER prefix (in this case, it cannot update the BIER
attribute since it is not capable), or if a BFR BGP speaker re- attribute since it is not capable), or if a BFR BGP speaker re-
advertises a BIER prefix without updating the BIER Nexthop sub-TLV, advertises a BIER prefix without updating the BIER Nexthop sub-TLV,
the BFR receiving the prefix will tunnel BIER traffic -- the BGP the BFR receiving the prefix will tunnel BIER traffic -- the BGP
speaker re-advertising the BIER prefix will not see the BIER traffic speaker re-advertising the BIER prefix will not see the BIER traffic
for the BIER prefix. for the BIER prefix.
skipping to change at line 466 skipping to change at line 466
The BFER1/2/3 each advertises a route for its loopback address with a The BFER1/2/3 each advertises a route for its loopback address with a
BIER path attribute, listing one BIER TLV for each sub-domain that it BIER path attribute, listing one BIER TLV for each sub-domain that it
is in, with a non-zero BFR-ID and an MPLS Encapsulation sub-TLV. A is in, with a non-zero BFR-ID and an MPLS Encapsulation sub-TLV. A
BIER Nexthop sub-TLV is not included in the one from BFER1 but is BIER Nexthop sub-TLV is not included in the one from BFER1 but is
included in the ones from BFER2/3. The BIER Nexthop sub-TLV encodes included in the ones from BFER2/3. The BIER Nexthop sub-TLV encodes
the BFR-prefix of BFER2 and BFER3, respectively. the BFR-prefix of BFER2 and BFER3, respectively.
When BFR2 receives the route, it calculates its BIFT entries. When BFR2 receives the route, it calculates its BIFT entries.
Because the route from BFER1 does not include a BIER Nexthop, BFR2 Because the route from BFER1 does not include a BIER Nexthop, BFR2
uses BFR1's BFR-prefix as the nexthop. uses BFR1's BFR-prefix as the next hop.
When BFR2 re-advertises the routes to the non-BFR, it adds a BIER When BFR2 re-advertises the routes to the non-BFR, it adds a BIER
Nexthop sub-TLV to the BFER1 route and updates the BIER Nexthop sub- Nexthop sub-TLV to the BFER1 route and updates the BIER Nexthop sub-
TLV in the BFER2/3 routes, all encoding BFR2's own address. It also TLV in the BFER2/3 routes, all encoding BFR2's own address. It also
updates the MPLS Encapsulation sub-TLV to encode its own labels. updates the MPLS Encapsulation sub-TLV to encode its own labels.
When the non-BFR receives the routes, since it does not support BIER, When the non-BFR receives the routes, since it does not support BIER,
no BIER-specific action is taken and the routes are re-advertised to no BIER-specific action is taken and the routes are re-advertised to
BFR1 with the BIER path attribute unchanged. BFR1 with the BIER path attribute unchanged.
When BFR1 receives the routes, it calculates the BIFT entries, using When BFR1 receives the routes, it calculates the BIFT entries, using
BFR2's address encoded in the BIER Nexthop sub-TLV as the nexthop. BFR2's address encoded in the BIER Nexthop sub-TLV as the next hop.
Because BFR2 is not directly connected, a tunnel must be used. Because BFR2 is not directly connected, a tunnel must be used.
7. Operational Considerations 7. Operational Considerations
In this document, it is assumed that the BIER domain [RFC8279] is In this document, it is assumed that the BIER domain [RFC8279] is
aligned with an Administrative Domain (AD), which may be composed of aligned with an Administrative Domain (AD), which may be composed of
multiple Autonomous Systems. Use of the BIER attribute in other multiple Autonomous Systems. Use of the BIER attribute in other
scenarios is outside the scope of this document. scenarios is outside the scope of this document.
BFR-prefixes are typically loopback addresses on the BFRs. They are BFR-prefixes are typically loopback addresses on the BFRs. They are
skipping to change at line 506 skipping to change at line 506
BIER domains, which should be independent of each other, may be BIER domains, which should be independent of each other, may be
incorrectly joined together and most likely have conflicting incorrectly joined together and most likely have conflicting
configurations, causing security risks and operational troubles. configurations, causing security risks and operational troubles.
To prevent that, a boundary router of the AD that supports the BIER To prevent that, a boundary router of the AD that supports the BIER
attribute MUST support a policy based on an External BGP (EBGP) attribute MUST support a policy based on an External BGP (EBGP)
session/group that indicates whether the attribute is allowed; by session/group that indicates whether the attribute is allowed; by
default, it is NOT allowed. If it is not allowed, the BIER attribute default, it is NOT allowed. If it is not allowed, the BIER attribute
MUST NOT be sent to any EBGP peer of the session/group. If a BIER MUST NOT be sent to any EBGP peer of the session/group. If a BIER
attribute is received from the peer, it MUST be treated exactly as if attribute is received from the peer, it MUST be treated exactly as if
it were an unrecognized non-transitive attribute. That is, "it MUST it were an unrecognized non-transitive attribute. That is, it MUST
be quietly ignored and not passed along to other BGP peers". be quietly ignored and not passed along to other BGP peers.
8. IANA Considerations 8. IANA Considerations
IANA has assigned codepoint 41 to the BIER attribute in the "BGP Path IANA has assigned codepoint 41 to the BIER attribute in the "BGP Path
Attributes" registry <https://www.iana.org/assignments/bgp- Attributes" registry <https://www.iana.org/assignments/bgp-
parameters> as follows: parameters> as follows:
+=======+======+===========+ +=======+======+===========+
| Value | Code | Reference | | Value | Code | Reference |
+=======+======+===========+ +=======+======+===========+
 End of changes. 33 change blocks. 
62 lines changed or deleted 62 lines changed or added

This html diff was produced by rfcdiff 1.48.