BGP for BIER: BGP Extensions for Bit Index Explicit Replication (BIER)
How BGP carries the per-router information that BIER multicast forwarding needs, without per-tree state.
Xu, X., Chen, M., Patel, K., Wijnands, IJ., Przygienda, T., and Z. Zhang, Ed., "BGP Extensions for Bit Index Explicit Replication (BIER)", RFC 9793, DOI 10.17487/RFC9793, June 2025, <https://www.rfc-editor.org/info/rfc9793>.
@misc{rfc9793,
series = {Request for Comments},
number = 9793,
howpublished = {RFC 9793},
publisher = {RFC Editor},
doi = {10.17487/RFC9793},
url = {https://www.rfc-editor.org/info/rfc9793},
author = {X. Xu and M. Chen and K. Patel and IJ. Wijnands and T. Przygienda and Z. Zhang},
title = {{BGP Extensions for Bit Index Explicit Replication (BIER)}},
pagetotal = 12,
year = 2025,
month = jun,
} RFC text
Contents
Internet Engineering Task Force (IETF) X. Xu
Request for Comments: 9793 China Mobile
Category: Standards Track M. Chen
ISSN: 2070-1721 Huawei
K. Patel
Arrcus, Inc.
IJ. Wijnands
Individual
T. Przygienda
Z. Zhang, Ed.
Juniper
June 2025
BGP Extensions for Bit Index Explicit Replication (BIER)
Abstract
Bit Index Explicit Replication (BIER) is a multicast forwarding
architecture that doesn't require an explicit tree-building protocol
and doesn't require intermediate routers to maintain per-tree
multicast states. Some BIER-specific information and states, which
are only in proportion to the number of BIER routers but not per-
tree, do need to be advertised, calculated, and maintained. This
document describes BGP extensions for advertising the BIER
information and methods for calculating BIER states based on the
advertisements.
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9793.
Copyright Notice
Copyright (c) 2025 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Revised BSD License text as described in Section 4.e of the
Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents
1. Introduction
2. Terminology
2.1. Requirements Language
3. BIER Path Attribute
3.1. BIER MPLS Encapsulation Sub-TLV
3.2. BIER Non-MPLS Encapsulation Sub-TLV
3.3. BIER Nexthop Sub-TLV
4. Originating/Propagating/Updating the BIER Attribute
5. BIFT Calculation with BGP Signaling
6. Example of BIER Nexthop Usage and Handling
7. Operational Considerations
8. IANA Considerations
9. Security Considerations
10. References
10.1. Normative References
10.2. Informative References
Acknowledgements
Contributors
Authors' Addresses
1. Introduction
Bit Index Explicit Replication (BIER) [RFC8279] is a multicast
forwarding architecture that doesn't require an explicit tree-
building protocol and doesn't require intermediate routers to
maintain per-tree multicast states. It supports both direct and
tunneled BIER forwarding. This document describes BGP extensions for
advertising the BIER information and methods for calculating BIER
states based on the advertisements. More specifically, in this
document, we define a new optional transitive BGP attribute, referred
to as the "BIER attribute", to convey the BIER-specific information
such as Bit-Forwarding Router Identifier (BFR-ID), BitStringLength
(BSL), and so on. The signaling is to be used in a single
Administrative Domain (AD), and Section 7 specifies procedures to
prevent the BIER attribute from "leaking out" of the domain.
2. Terminology
This document makes use of the terminology defined in [RFC4271] and
[RFC8279]. Some terms are listed below for convenience.
BIER: Bit Indexed Explicit Replication
BFR: Bit-Forwarding Router
BFR-ID: BFR Identifier
BSL: BitStringLength
BIFT: Bit Index Forwarding Table
BIFT-id: Bit Index Forwarding Table Identifier
BFER: Bit-Forwarding Egress Router
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
be a loopback address of the BFR.
NLRI: Network Layer Reachability Information [RFC4271]
AFI: Address Family Identifier [RFC4760]
SAFI: Subsequent Address Family Identifier [RFC4760]
2.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
3. BIER Path Attribute
This specification defines an optional, transitive BGP path
attribute, referred to as the "BIER attribute". This attribute can
be attached to a BGP UPDATE message by the originator for NLRIs of
AFI 1 or 2 and SAFI 1, 2, or 4 to indicate the BIER-specific
information of a particular BFR identified by the /32 (for IPv4) or
/128 (for IPv6) host address prefix contained in the NLRI. The
attachment of the BIER attribute to non-host address prefixes is not
defined by this document. It may be specified in the future, for
example, by [BIER-Prefix-Redistribute].
If the BIER path attribute is present, the NLRI is referred to as a
"BFR-prefix". Use of the attribute with other AFIs/SAFIs is outside
the scope of this document.
The BIER path attribute is an optional, transitive BGP path attribute
with type code 41 and of variable length. The attribute value
portion carries BIER TLVs, which are encoded as follows:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Value (variable) ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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
TLV is not padded to 4-octet alignment. Unknown and unsupported
types MUST be preserved and propagated within the BIER attribute.
The presence of unknown or unexpected TLVs MUST NOT result in the
NLRI or the BIER attribute being considered malformed.
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
for the BIER attribute is 41. The value field of the BIER attribute
contains one or more BIER TLVs as shown below:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 1 | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sub-domain | BFR-ID | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ~
| Sub-TLVs |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+..........................
Type: 1
Length: 2 octets encoding the length in octets of the Value part.
Sub-domain: A 1-octet field encoding the sub-domain ID corresponding
to 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
reception.
Sub-TLVs: Contains one or more sub-TLVs.
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
with the same Sub-domain value; if there is, the entire BIER path
attribute MUST be ignored.
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,
regardless of the level.
3.1. BIER MPLS Encapsulation Sub-TLV
The BIER MPLS Encapsulation sub-TLV has the following format. It MAY
appear multiple times in the BIER TLV.
The BIER MPLS Encapsulation sub-TLV has the following format:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 2 | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Max SI |BS Len | Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ sub-TLVs |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 2
Length: 2 octets encoding the length in octets of the Value part.
The value is 4 or other (depending on sub-TLVs).
Max SI: A 1-octet field encoding the Maximum Set Identifier (see
Section 1 of [RFC8279]) used in the encapsulation for this BIER
sub-domain for this BitString length.
BS Len: BitString Length. A 4-bit field encoding the supported
BitString length associated with this BFR-prefix. The values
allowed in this field are specified in Section 2 of [RFC8296].
Label: A 20-bit value representing the first label in the label
range.
The "label range" is the set of labels beginning with the Label and
ending with (Label + (Max SI)). A unique label range is allocated
for each BitString length and sub-domain-id. These labels are used
for BIER forwarding, as described in [RFC8279] and [RFC8296].
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
to a single label in the label range: the first label is for SI=0,
the second label is for SI=1, etc.
If the label associated with the Maximum SI exceeds the 20-bit range,
the BIER MPLS Encapsulation sub-TLV containing the error MUST be
ignored.
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 in the BIER TLV MUST be ignored.
Label ranges within all BIER MPLS Encapsulation sub-TLVs advertised
by the same BFR MUST NOT overlap. If an overlap is detected, all
BIER MPLS Encapsulation sub-TLVs advertised by the BFR MUST be
ignored.
3.2. BIER Non-MPLS Encapsulation Sub-TLV
The BIER non-MPLS Encapsulation sub-TLV is used for non-MPLS
encapsulation and has the following format. It MAY appear multiple
times within a single BIER TLV. If the same BitString length is
repeated in multiple BIER non-MPLS Encapsulation sub-TLVs inside the
same BIER TLV, the BIER TLV MUST be ignored.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 3 | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Max SI |BS Len | BIFT-id |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ sub-TLVs |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 3
Length: 2 octets encoding the length in octets of the Value part.
The value is 4 or other (depending on sub-TLVs).
Max SI: A 1-octet field encoding the Maximum Set Identifier
(Section 1 of [RFC8279]) used in the encapsulation for this BIER
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
associated with the Maximum SI exceeds the 20-bit range, the sub-
TLV MUST be ignored.
BS Len: BitString Length. A 4-bit field encoding the BitString
length (as per [RFC8296]) supported for the encapsulation.
BIFT-id: A 20-bit field representing the first BIFT-id in the BIFT-
id range.
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
used for BIER forwarding, as described in [RFC8279] and [RFC8296].
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
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.
If the BIFT-id associated with the Maximum SI exceeds the 20-bit
range, the BIER non-MPLS Encapsulation sub-TLV containing the error
MUST be ignored.
BIFT-id ranges within all the BIER non-MPLS Encapsulation sub-TLVs
advertised by the same BFR MUST NOT overlap. If an overlap is
detected, all the BIER non-MPLS Encapsulation sub-TLVs advertised by
the BFR MUST be ignored. However, the BIFT-id ranges may overlap
across different encapsulation types and that is allowed. As an
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
Encapsulation sub-TLV.
3.3. BIER Nexthop Sub-TLV
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
or in the top-level BIER TLV. It is used when calculating BIFT
entries, as described in Section 5 and illustrated in Section 6.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 4 | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Nexthop |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 4
Length: 2 octets. The value is 4 if the Nexthop is an IPv4 address
and 16 if the Nexthop is an IPv6 address.
Nexthop: 4 or 16 octets of an IPv4/IPv6 address.
4. Originating/Propagating/Updating the BIER Attribute
A Bit-Forwarding Egress Router (BFER) MUST attach a BIER attribute to
its own /32 (for IPv4) or /128 (for IPv6) host BFR-prefix NLRI. The
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
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
included, the BIER prefix will be used by receiving BFRs as the BIER
next hop when calculating BIFT.
When a BFR receives an update with the BIER path attribute, the
attribute is parsed with the following validations:
* Syntactic checking based on the Length field of TLVs and sub-TLVs:
- The total length of BIER TLVs (including the Type and Length
fields) MUST be equal to the BIER path attribute length.
- The total length of sub-TLVs (including the Type and Length
fields) of a TLV MUST be equal to the length of the TLV.
* Semantic checking as per Section 3.
If the syntactic checking fails, the attribute is considered
malformed and the "attribute discard" action [RFC7606] for the BIER
attribute MUST be taken. If the semantic checking passes, BIFT
entries are calculated as described in Section 5. Otherwise (i.e.,
if semantic checking fails), some or all BIER TLVs are ignored, per
the rules given in Section 3, and if the remaining data permits, BIFT
entries are calculated per Section 5.
When a BFR re-advertises a BGP NLRI with a BIER attribute, for the
sub-domains that this BFR supports, in the corresponding BIER TLV, it
SHOULD set/update the BIER Nexthop sub-TLV to use its own BIER
prefix; in which case, it MUST replace the MPLS or non-MPLS
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
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
MUST NOT update the corresponding BIER TLV.
It's possible that the BFR supports some but not all BitStringLengths
(BSLs) in the received MPLS or non-MPLS Encapsulation sub-TLVs.
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
BIER Nexthop sub-TLV (if present) in the corresponding Encapsulation
sub-TLVs. For the BSLs that it does not support:
* If a BIER Nexthop sub-TLV is included in the Encapsulation sub-
TLV, it MUST NOT be updated.
* Otherwise, if a BIER Nexthop sub-TLV is included in the received
BIER TLV, its original value (before changed for supported BSLs by
this BFR) MUST be copied into the Encapsulation sub-TLV.
* Otherwise, a BIER Nexthop sub-TLV MUST be added to the
Encapsulation sub-TLV with its value set to the BFR-prefix.
All impacted Length fields (e.g., the Encapsulation sub-TLV Length
and the top-level BIER TLV Length) MUST be updated accordingly.
Since the BIER attribute is an optional, transitive BGP path
attribute, a non-BFR BGP speaker could still re-advertise the
received route with a BIER attribute.
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
MUST NOT use the BFR-prefixes with the same BFR-ID for BIFT
calculation for the sub-domain and an error SHOULD be logged.
5. BIFT Calculation with BGP Signaling
As pointed out in [RFC8279], BIFTs are derived from the unicast FIB
by adding BIER-specific information.
For each sub-domain, a BFR calculates the corresponding BIFTs by
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
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
corresponding Encapsulation sub-TLV or in the top-level BIER TLV if
the Encapsulation sub-TLV does not have a BIER Nexthop sub-TLV. If
there is no BIER Nexthop sub-TLV at all, the entry's BFR-NBR is the
BIER prefix itself. The BIER label or BIFT-id for the entry is
derived from the label range in the MPLS Encapsulation sub-TLV or
from the BIFT-id range in the non-MPLS Encapsulation sub-TLV.
BIER traffic is sent to the BFR-NBR either directly (BIER header
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-
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-
advertises a BIER prefix without updating the BIER Nexthop sub-TLV,
the BFR receiving the prefix will tunnel BIER traffic -- the BGP
speaker re-advertising the BIER prefix will not see the BIER traffic
for the BIER prefix.
How the tunnel is set up and chosen is outside the scope of this
document. It can be any kind of tunnel, e.g., MPLS Label Switched
Path or IP/GRE, as long as the tunnel header can indicate that the
payload is BIER.
6. Example of BIER Nexthop Usage and Handling
Consider a simple topology as follows:
----- BFER1
/
BFR1 --- non-BFR --- BFR2 ------ BFER2
\
----- BFER3
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
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
included in the ones from BFER2/3. The BIER Nexthop sub-TLV encodes
the BFR-prefix of BFER2 and BFER3, respectively.
When BFR2 receives the route, it calculates its BIFT entries.
Because the route from BFER1 does not include a BIER Nexthop, BFR2
uses BFR1's BFR-prefix as the next hop.
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-
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.
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
BFR1 with the BIER path attribute unchanged.
When BFR1 receives the routes, it calculates the BIFT entries, using
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.
7. Operational Considerations
In this document, it is assumed that the BIER domain [RFC8279] is
aligned with an Administrative Domain (AD), which may be composed of
multiple Autonomous Systems. Use of the BIER attribute in other
scenarios is outside the scope of this document.
BFR-prefixes are typically loopback addresses on the BFRs. They are
distributed throughout the AD, but they do not need to be distributed
outside the AD for the BIER's purposes. This is analogous to the
Provider Edge router's loopback addresses that are distributed inside
the AD, but they do not need to be distributed outside the AD.
If prefixes are distributed outside of the AD with the BIER attribute
attached and the neighboring AD also deploying BIER, then the two
BIER domains, which should be independent of each other, may be
incorrectly joined together and most likely have conflicting
configurations, causing security risks and operational troubles.
To prevent that, a boundary router of the AD that supports the BIER
attribute MUST support a policy based on an External BGP (EBGP)
session/group that indicates whether the attribute is allowed; by
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
attribute is received from the peer, it MUST be treated exactly as if
it were an unrecognized non-transitive attribute. That is, it MUST
be quietly ignored and not passed along to other BGP peers.
8. IANA Considerations
IANA has assigned codepoint 41 to the BIER attribute in the "BGP Path
Attributes" registry <https://www.iana.org/assignments/bgp-
parameters> as follows:
+=======+======+===========+
| Value | Code | Reference |
+=======+======+===========+
| 41 | BIER | RFC 9793 |
+-------+------+-----------+
Table 1
IANA has created the "BGP BIER TLV and Sub-TLV Types" registry within
the "Border Gateway Protocol (BGP) Parameters" registry group. The
type field for the registry consists of 2 octets, with possible
values from 0 to 65535 (the value 0 is reserved). The allocation
policy for this field is First Come First Served [RFC8126].
The five initial values have been allocated as follows:
+=========+================================+===========+
| Value | Name | Reference |
+=========+================================+===========+
| 0 | Reserved | RFC 9793 |
+---------+--------------------------------+-----------+
| 1 | BIER TLV | RFC 9793 |
+---------+--------------------------------+-----------+
| 2 | MPLS Encapsulation sub-TLV | RFC 9793 |
+---------+--------------------------------+-----------+
| 3 | non-MPLS Encapsulation sub-TLV | RFC 9793 |
+---------+--------------------------------+-----------+
| 4 | BIER Nexthop sub-TLV | RFC 9793 |
+---------+--------------------------------+-----------+
| 5-65535 | Unassigned |
+---------+--------------------------------------------+
Table 2
9. Security Considerations
This document introduces no new security considerations beyond those
already discussed in [RFC4271], [RFC8279], and the operational
considerations (Section 7) of this document.
10. References
10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A
Border Gateway Protocol 4 (BGP-4)", RFC 4271,
DOI 10.17487/RFC4271, January 2006,
<https://www.rfc-editor.org/info/rfc4271>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8279] Wijnands, IJ., Ed., Rosen, E., Ed., Dolganow, A.,
Przygienda, T., and S. Aldrin, "Multicast Using Bit Index
Explicit Replication (BIER)", RFC 8279,
DOI 10.17487/RFC8279, November 2017,
<https://www.rfc-editor.org/info/rfc8279>.
[RFC8296] Wijnands, IJ., Ed., Rosen, E., Ed., Dolganow, A.,
Tantsura, J., Aldrin, S., and I. Meilik, "Encapsulation
for Bit Index Explicit Replication (BIER) in MPLS and Non-
MPLS Networks", RFC 8296, DOI 10.17487/RFC8296, January
2018, <https://www.rfc-editor.org/info/rfc8296>.
10.2. Informative References
[BIER-Prefix-Redistribute]
Zhang, Z., Wu, B., Zhang, Z. J., Wijnands, I., Liu, Y.,
and H. Bidgoli, "BIER Prefix Redistribute", Work in
Progress, Internet-Draft, draft-ietf-bier-prefix-
redistribute-08, 23 February 2025,
<https://datatracker.ietf.org/doc/html/draft-ietf-bier-
prefix-redistribute-08>.
[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter,
"Multiprotocol Extensions for BGP-4", RFC 4760,
DOI 10.17487/RFC4760, January 2007,
<https://www.rfc-editor.org/info/rfc4760>.
[RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K.
Patel, "Revised Error Handling for BGP UPDATE Messages",
RFC 7606, DOI 10.17487/RFC7606, August 2015,
<https://www.rfc-editor.org/info/rfc7606>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>.
Acknowledgements
Thanks to Eric Rosen and Peter Psenak for their valuable comments on
this document.
Contributors
This document has the following contributor:
Zheng (Sandy) Zhang
ZTE
Email: zhang.zheng@zte.com.cn
Authors' Addresses
Xiaohu Xu
China Mobile
Email: xuxiaohu@cmss.chinamobile.com
Mach(Guoyi) Chen
Huawei
Email: mach.chen@huawei.com
Keyur Patel
Arrcus, Inc.
Email: keyur@arrcus.com
IJsbrand Wijnands
Individual
Email: ice@braindump.be
Tony Przygienda
Juniper
Email: prz@juniper.net
Zhaohui Zhang (editor)
Juniper
Email: zzhang@juniper.net
AI ELI5
On this page
§1BIER Signaling Over BGP
Bit Index Explicit Replication (BIER, RFC 8279) is a multicast forwarding architecture that needs no explicit tree-building protocol and keeps no per-tree multicast state in intermediate routers. Some information still has to be advertised, calculated and maintained, but it grows with the number of BIER routers, not with the number of trees.
RFC 9793 defines a new optional transitive BGP attribute, the BIER attribute, to convey that information, for example the Bit-Forwarding Router Identifier (BFR-ID) and the BitStringLength (BSL). It also defines how routers calculate BIER state from the advertisements. The signaling is meant for a single Administrative Domain.
BIER lets routers send a packet to many receivers without drawing a map for each group. This document teaches routers to share the few facts they need by using BGP, the messenger they already use.
§3The BIER Path Attribute and TLVs
The BIER attribute is an optional, transitive BGP path attribute with type code 41 and variable length. It can be attached by the originator of a BGP UPDATE for NLRIs of AFI 1 or 2 and SAFI 1, 2 or 4, and it describes the BFR identified by the /32 (IPv4) or /128 (IPv6) host address prefix in the NLRI. When the attribute is present, that NLRI is called a BFR-prefix. Other AFIs and SAFIs, and non-host prefixes, are not defined here.
The attribute value is a series of TLVs, each with a 2-octet Type and a 2-octet Length, and no padding to 4-octet alignment. Unknown types MUST be preserved and propagated, and unknown TLVs MUST NOT make the NLRI or attribute malformed.
A BFR MUST include one BIER TLV (Type 1) for every sub-domain its prefix belongs to. Each holds a 1-octet Sub-domain, a 2-octet BFR-ID, a Reserved octet (SHOULD be 0 on transmission, MUST be ignored on reception) and sub-TLVs. If two BIER TLVs carry the same Sub-domain value, the entire BIER attribute MUST be ignored.
The BIER attribute is a label stuck on a route. It says which BIER groups a router is in, what its seat number is, and how to reach it.
§3.1Encapsulation and Nexthop Sub-TLVs
Inside a BIER TLV, two encapsulation sub-TLVs tell receivers what to put on the wire. The MPLS Encapsulation sub-TLV (Type 2) carries a Max SI, a 4-bit BS Len and a 20-bit Label. The labels from Label to Label + Max SI form a label range, one label per Set Identifier (SI), with the first label for SI=0. The non-MPLS Encapsulation sub-TLV (Type 3) is the same shape but carries a 20-bit BIFT-id and defines a BIFT-id range.
Several rules protect against bad data. If the label for the Max SI exceeds the 20-bit range, that sub-TLV MUST be ignored. A repeated BitString length in MPLS sub-TLVs makes all of them in the BIER TLV ignored, and overlapping label ranges from the same BFR make all of that BFR's MPLS sub-TLVs ignored. For non-MPLS, a repeated BitString length makes the whole BIER TLV ignored. BIFT-id ranges may overlap label ranges, because they are different encapsulation types.
The BIER Nexthop sub-TLV (Type 4) holds a 4-octet IPv4 or 16-octet IPv6 address. It MAY be included, but at most once in each encapsulation sub-TLV or in the top-level BIER TLV, and it is used when computing BIFT entries.
Each router also says which numbered tickets it uses for each size of passenger list, and, if it wants, which neighbor should receive the packets for it.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
TYPE | Type | 2 bytes | 2 | Always 2. |
LENGTH | Length | 2 bytes | Length of the value part in octets; 4 or other depending on sub-TLVs. | |
MAX-SI | Max SI | 1 byte | Maximum Set Identifier used for this sub-domain and BitString length. | |
BS-LEN | BS Len | 4 bits | Supported BitString length. | |
LABEL | Label | 20 bits | First label in the label range. |
§4Originating and Re-advertising the Attribute
A Bit-Forwarding Egress Router (BFER) MUST attach a BIER attribute to its own host BFR-prefix, with one BIER TLV per supported sub-domain. Each BIER TLV MUST include an MPLS and/or non-MPLS Encapsulation sub-TLV and MAY include a Nexthop sub-TLV. Without a Nexthop sub-TLV, receivers use the BIER prefix itself as the next hop.
A receiver first checks syntax: the BIER TLV lengths (with Type and Length fields) MUST add up to the attribute length, and sub-TLV lengths MUST add up to the TLV length. A failure makes the attribute malformed and the "attribute discard" action from RFC 7606 MUST be taken. Semantic failures only cause the offending TLVs to be ignored.
When a BFR re-advertises such a route, it SHOULD set the Nexthop sub-TLV to its own BIER prefix and then MUST replace the encapsulation sub-TLV with its own. If it does not update the Nexthop, it MUST NOT update the encapsulation sub-TLV, and it MUST NOT touch a BIER TLV for a sub-domain it does not support. For BitStringLengths it does not support, the original next hop is preserved inside the encapsulation sub-TLV. A non-BFR BGP speaker may still pass the attribute along, unchanged, because it is transitive.
Two different BFR-prefixes MUST NOT have the same non-zero BFR-ID in one sub-domain. If a receiver sees that, it MUST NOT use those prefixes for BIFT calculation in that sub-domain and SHOULD log an error.
When a router passes the message on, it may put its own name on it as the next stop. If it does not, it must leave the old details alone, like a mail sorter who does not rewrite someone else's address.
§5Calculating the BIFT
As RFC 8279 notes, a Bit Index Forwarding Table (BIFT) is derived from the unicast FIB by adding BIER-specific information. For each sub-domain, a BFR goes through the BIER prefixes whose attribute has a BIER TLV for that sub-domain. For each non-zero BFR-ID it creates or updates a BIFT entry.
The entry's BFR neighbor is the Nexthop in the encapsulation sub-TLV if there is one, otherwise the Nexthop in the top-level BIER TLV, otherwise the BIER prefix itself. The BIER label or BIFT-id comes from the label range or BIFT-id range.
BIER traffic goes to that neighbor directly (the BIER header follows a Layer 2 header) when it is directly connected, or via a tunnel otherwise. How the tunnel is set up is out of scope; it can be any kind, such as an MPLS LSP or IP/GRE, as long as the tunnel header can indicate that the payload is BIER.
Each router builds a table that says, for every seat number, who to hand the packet to next. The details it learned from BGP fill in that table.
§6A Worked Nexthop Example
The RFC's example has BFR1 connected through a non-BFR router to BFR2, which connects to BFER1, BFER2 and BFER3. Each BFER advertises its loopback with one BIER TLV per sub-domain, a non-zero BFR-ID and an MPLS Encapsulation sub-TLV. BFER1 omits the Nexthop sub-TLV, while BFER2 and BFER3 include theirs.
When BFR2 re-advertises the routes toward the non-BFR, it adds a Nexthop sub-TLV to BFER1's route, updates the ones from BFER2 and BFER3, all with its own address, and replaces the MPLS Encapsulation sub-TLV with its own labels. The non-BFR does nothing BIER-specific and passes the routes to BFR1 unchanged. BFR1 then uses BFR2's address from the Nexthop sub-TLV as the next hop. Because BFR2 is not directly connected, a tunnel must be used.
A middle router that cannot read BIER just passes the note along. The routers at the ends can still see who to send to, and they use a tunnel to jump over the middle one.
§7Keeping the Attribute Inside the Domain
The RFC assumes the BIER domain lines up with one Administrative Domain, which may contain several Autonomous Systems. BFR-prefixes are typically loopback addresses, spread through the domain but not needed outside it, much like Provider Edge loopbacks.
If prefixes with the BIER attribute leaked to a neighboring AD that also runs BIER, two domains that should be independent could be joined together, most likely with conflicting configurations, causing security risks and operational trouble. To prevent this, a boundary router that supports the attribute MUST support a per-EBGP-session or group policy saying whether the attribute is allowed, and by default it is not allowed. If not allowed, the attribute MUST NOT be sent to EBGP peers, and one received from such a peer MUST be treated as an unrecognized non-transitive attribute: quietly ignored and not passed on.
The notes are for your own club only. The doorkeeper does not pass them to other clubs unless told to.
§9Security and IANA
The Security Considerations say that the document introduces no new security considerations beyond those of RFC 4271, RFC 8279 and its own operational considerations. In practice, the boundary policy above is the main protection.
IANA assigned path attribute code 41 to BIER and created the "BGP BIER TLV and Sub-TLV Types" registry. Its type field is 2 octets, value 0 is reserved, and new values are First Come First Served. Five initial values are allocated: 0 Reserved, 1 BIER TLV, 2 MPLS Encapsulation sub-TLV, 3 non-MPLS Encapsulation sub-TLV and 4 BIER Nexthop sub-TLV.
There are no new dangers, and the main rule is to keep the notes inside your own club. The numbers for each kind of note were written in an official list.
- 0Reserved — Reserved.
- 1BIER TLV — One per sub-domain.
- 2MPLS Encapsulation sub-TLV — Label range per BitString length.
- 3non-MPLS Encapsulation sub-TLV — BIFT-id range per BitString length.
- 4BIER Nexthop sub-TLV — IPv4 or IPv6 next hop.