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. |