BGP for BIER-TE Path
Huaimo Chen
Futurewei
Boston, MA
USA
hchen.ietf@gmail.com
Mike McBride
Futurewei
michael.mcbride@futurewei.com
Ran Chen
ZTE Corporation
chen.ran@zte.com.cn
Gyan S. Mishra
Verizon Inc.
13101 Columbia Pike
Silver Spring
MD 20904
USA
301 502-1347
gyan.s.mishra@verizon.com
Aijun Wang
China Telecom
Beiqijia Town, Changping District
Beijing
102209
China
wangaj3@chinatelecom.cn
Yisong Liu
China Mobile
liuyisong@chinamobile.com
Yanhe Fan
Casa Systems
USA
yfan@casa-systems.com
Boris Khasanov
Yandex LLC
Moscow
bhassanov@yahoo.com
Lei Liu
Fujitsu
USA
liulei.kddi@gmail.com
Xufeng Liu
Alef Edge
USA
xufeng.liu.ietf@gmail.com
2024
This document describes extensions to Border Gateway Protocol (BGP) for distributing a Bit Index Explicit Replication Traffic/Tree Engineering (BIER-TE) path. A new Tunnel Type for BIER-TE path is defined to encode the information about a BIER-TE path.

Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

Introduction
[I-D.ietf-bier-te-arch] introduces Bit Index Explicit Replication (BIER) Tree Engineering (BIER-TE). It is an architecture for per-packet stateless explicit point to multipoint (P2MP) multicast path/tree, which is called BIER-TE path, and based on the BIER architecture defined in [RFC8279].
A Bit-Forwarding Router (BFR) in a BIER-TE domain has a BIER-TE Bit Index Forwarding Table (BIFT). A BIER-TE BIFT on a BFR comprises a forwarding entry for a BitPosition (BP) assigned to each of the adjacencies of the BFR. If the BP represents a forward connected adjacency, the forwarding entry for the BP forwards the multicast packet with the BP to the directly connected BFR neighbor of the adjacency. If the BP represents a BFER (i.e., egress node) or say a local decap adjacency, the forwarding entry for the BP decapsulates the multicast packet with the BP and passes a copy of the payload of the packet to the packet's NextProto within the BFR.
A Bit-Forwarding Ingress Router (BFIR) in a BIER-TE domain receives the information or instructions about which multicast flows/packets are mapped to which BIER-TE paths that are represented by BitPositions or say BitStrings. After receiving the information or instructions, the ingress node/router encapsulates the multicast packets with the BitStrings for the corresponding BIER-TE paths, replicates and forwards the packets with the BitStrings along the BIER-TE paths.
When the BitStrings is for a regular BIER path, the multicast packet is forwarded along the BIER path.
This document proposes some procedures and extensions to BGP for distributing a BIER-TE path to the Bit-Forwarding Ingress Router (BFIR) of the path. It specifies a way of encoding the information about a BIER-TE path in a BGP UPDATE message, which can be distributed to the BFIR of the path.

Terminologies
The following terminologies are used in this document.
BIER: Bit Index Explicit Replication.
BIER-TE: BIER Tree Engineering.
BFR: Bit-Forwarding Router.
BFIR: Bit-Forwarding Ingress Router.
BFER: Bit-Forwarding Egress Router.
BFR-id: BFR Identifier. It is a number in the range [1,65535].
BFR-NBR: BFR Neighbor.
BFR-prefix: An IP address (either IPv4 or IPv6) of a BFR.
BIRT: Bit Index Routing Table. It is a table that maps from the BFR-id (in a particular sub-domain) of a BFER to the BFR-prefix of that BFER, and to the BFR-NBR on the path to that BFER.
BIFT: Bit Index Forwarding Table.
P-tunnel: A multicast tunnel through the network of one or more SPs.
PMSI: Provider Multicast Service Interface. PMSI is an abstraction that represents a multicast service for carrying packets. A PMSI is instantiated via one or more P-tunnels.
I-PMSI A-D Route: Inclusive PMSI Auto-Discovery route.
S-PMSI A-D route: Selective PMSI Auto-Discovery route.
x-PMSI A-D route: A route that is either an I-PMSI A-D route or an S-PMSI A-D route.

Overview of BGP for BIER-TE Path
This section briefs the BGP for BIER-TE path and illustrates some details through a simple example BIER-TE topology.

Example BIER-TE Topology with BGP
An example BIER-TE domain topology using SDN controller with a BGP to distribute BIER-TE path is shown in Figure 1. There are 8 nodes/BFRs A, B, C, D, E, F, G and H in the domain. Nodes/BFRs A, H, E, F and D are BFIRs (i.e., ingress nodes) or BFERs (i.e., egress nodes). The controller has a BGP session with each of the edge nodes in the domain, including BFIRs (i.e., ingress nodes A, H, E, F and D), and each of the non edge nodes in the domain (i.e., nodes B, C and G).
Note that some of connections and the BGP on each edge node are not shown in the figure.

Example BIER-TE Topology with Controller

                    +------------------------------------+
                    |      SND controller with BGP       |
                    +------------------------------------+
                    /        ...         \               \
                   /                      \               \
                  /                    4'  \   17'    18'  \
                 /            /-----------( G )----------( H )
                /            /           19'\_______   12'/4
               /            /                _______)____/
              /            /                /      (_____
             /            /3'              /             \
            /   1'   2'  /    5'     6'   /11'  13'    20'\
 (CE) --- ( A )--------( B )------------( C )------------( D )
            5            \7'              \15'       14'   1
                          \                \
                           \8'   9'    10'  \16'
                          ( E )------------( F )
                            3                2
Nodes/BFRs D, F, E, H and A are BFERs (or BFIRs) and have local decap adjacency BitPositions 1, 2, 3, 4, and 5 respectively.
The BitPositions for the forward connected adjacencies are represented by i', where i is from 1 to 20.

Distributing Path to Ingress
This section describes how the SDN controller distributes a BIER-TE path to its ingress node.
Suppose that node A in Figure 1 wants to have a BIER-TE path from ingress node A to egress nodes H and F. The path satisfies a set of constraints.
The controller obtains the request from an application or user configuration. It finds a BIER-TE path satisfying the constraints and distributes the path to ingress node A.
The controller advertises a BGP Update message to all its BGP peers, where the message contains the information about the path, a route target (RT) matching the BGP identifier (ID) of ingress node A. Each of the BGP peers advertises the received Update to its BGP neighbors according to normal BGP propagation rules. Eventually, ingress node A accepts this message after determining the RT in the message matches its BGP ID and installs a forwarding entry for the BIER-TE path, which imports the packets to be transported by the path into the path.

Extensions to BGP
This section defines a new Tunnel Type (or say TLV) for BIER-TE path/tunnel under Tunnel Encapsulation Attribute and a new SAFI. This new SAFI and the existing AFI for IPv4/IPv6 pair uses a new NLRI for indicating a BIER-TE Path.

New SAFI and NLRI
A new SAFI, called BIER-TE path SAFI, is defined. Its codepoint (TBD1) is to be assigned by IANA.
This new SAFI and the existing AFI for IPv4/IPv6 pair uses a new NLRI, which is defined as follows:

NLRI 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
+-+-+-+-+-+-+-+-+
|  NLRI Length  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Distinguisher (4 octets)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Tunnel Identifier (11/23 octets)              ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where:
NLRI Length: 1 octet represents the length of NLRI. If the Length is anything other than 15 or 27, the NLRI is corrupt and the enclosing UPDATE message MUST be ignored.
Distinguisher: 4 octet value uniquely identifies the content/BIER-TE path.
Tunnel Identifier: 11/23 octet value contains:
  * sub-domain-id (1 octet): It is id of the sub domain through which the BIER-TE tunnel crosses.
  * BFR-id (2 octets): It is the BFR-id of the BFIR of the BIER-TE tunnel.
  * Tunnel-ID (4 octets): It is a number uniquely identifying a BIER-TE tunnel within the BFIR and sub domain.
  * BFR-prefix (4/16 octets): It is a BFR-prefix of the BFIR of the BIER-TE tunnel. It occupies 4 octets for IPv4 and 16 octets for IPv6.

New Tunnel Type for BIER-TE
A new Tunnel Type (or say TLV), called BIER-TE Path or Tunnel, is defined under Tunnel Encapsulation Attribute in [RFC9012]. Its codepoint is to be assigned by IANA. This new TLV with a number of new sub-TLVs encodes the information about a BIER-TE path.
The structure encoding the information about a BIER-TE path is shown below.

    Attributes:
        Tunnel Encaps Attribute (23)
            Tunnel Type (TBD2): BIER-TE Path
                Path BitStrings sub-TLV
                Path Name sub-TLV
                Traffic Description sub-TLV

Where:
- Tunnel Type (TBD2) is to be assigned by IANA.
- Path BitStrings sub-TLV encodes the bit positions of the BIER-TE path.
- Path Name sub-TLV encodes the name of a BIER-TE path.
- Traffic Description sub-TLV encodes the multicast traffic that is transported by the BIER-TE path.

Path BitStrings Sub-TLV
The bit positions of a BIER-TE path are encoded in a Path BitStrings sub-TLV. The format of the sub-TLV is illustrated below.

Path BitStrings Sub-TLV 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 (TBD3) |        Length (variable)      |  BitStringLen |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                BIFT-id-1              |  RSV  |     SI-1      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            BitString-1                        ~
|                                                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:                                                               :
:                                                               :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                BIFT-id-n              |  RSV  |     SI-n      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            BitString-n                        ~
|                                                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type: Its value (TBD3) is to be assigned by IANA.
Length: It is variable.
BitStringLen (Bit String Length) - 8 bits: The length in bits of the BitString field according to [RFC8296]. If k is the length of the BitString, the value of BitStringLen is log2(k)-5. For example, BitStringLen = 1 indicates k = 64, BitStringLen = 7 indicates k = 4096.
<BIFT-id, SI, BitString> tuple: Each tuple <BIFT-id-i, SI-i, BitString-i> (i = 1, 2, ..., n) represents/encodes a set of bit positions on the BIER-TE path with a BIFT ID. All the tuples in the sub-TLV represent/encode the BIER-TE path (i.e., all the bit positions of the BIER-TE path).

Path Name Sub-TLV
The name of a BIER-TE path is encoded in a Path Name sub-TLV. The format of the sub-TLV is illustrated below.

Path Name Sub-TLV 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 (TBD4) |        Length (variable)      |   Reserved    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                        Path Name String                     //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type: Its value (TBD4) is to be assigned by IANA.
Length: It is variable.
Reserved: MUST be set to zero by the sender and MUST be ignored by the receiver.
Path Name String: It represents/encodes the name of the BIER-TE path in a string of chars.

Traffic Description Sub-TLVs
A Traffic Description Sub-TLV describes the traffic to be imported into a BIER-TE path. Two Traffic Description Sub-TLVs are defined. They are multicast traffic sub-TLVs for IPv4 and IPv6.
The multicast traffic sub-TLVs for IPv4 and IPv6 are shown in Figure 5 and Figure 6 respectively.

Multicast Traffic for IPv4 Sub-TLV

  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 (TBD5) |             Length            |   Reserved    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |        Reserved           |S|G|  Src Mask Len | Grp Mask Len  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                Source Address (up to 4 bytes)                 ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |            Group Multicast Address (up to 4 bytes)            ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Multicast Traffic for IPv6 Sub-TLV

  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 (TBD6) |             Length            |   RESERVED    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |        Reserved           |S|G|  Src Mask Len | Grp Mask Len  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                        Source Address                         ~
 ~                       (up to 16 bytes)                        ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   Group multicast Address                     ~
 ~                       (up to 16 bytes)                        ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The address fields and address mask lengths of the two Multicast Traffic sub-TLVs contain source and group prefixes for matching against packets noting that the two address fields are up to 32 bits for an IPv4 Multicast Traffic and up to 128 bits for an IPv6 Multicast Traffic.
The Reserved field MUST be set to zero and ignored on receipt.
Two bit flags (S and G) are defined to describe the multicast wildcarding in use. If the S bit is set, then source wildcarding is in use and the values in the Source Mask Length and Source Address fields MUST be ignored. If the G bit is set, then group wildcarding is in use and the values in the Group Mask Length and Group multicast Address fields MUST be ignored. The G bit MUST NOT be set unless the S bit is also set: if a Multicast Traffic sub-TLV is received with S bit = 0 and G bit = 1 the receiver MUST respond with an error (Malformed Multicast Traffic).
The three multicast mappings may be achieved as follows:
(S, G): S bit = 0, G bit = 0, the Source Address and Group multicast Address prefixes are both used to define the multicast traffic.
(*, G): S bit = 1, G bit = 0, the Group multicast Address prefix is used to define the multicast traffic, but the Source Address prefix is ignored.
(*, *): S bit = 1, G bit = 1, the Source Address and Group multicast Address prefixes are both ignored.

Security Considerations
Protocol extensions defined in this document do not affect the BGP security other than those as discussed in the Security Considerations section of [RFC9012].

Acknowledgements
The authors of this document would like to thank Tony Przygienda, Susan Hares, and Jeffrey Zhang for their comments.

IANA Considerations

Existing Registry: SAFI Parameters
This document requests assigning a new SAFI in the registry "Subsequent Address Family Identifiers (SAFI) Parameters" as follows:

   +=======================+=========================+=============+
   | Code Point            | Description             | Reference   |
   +=======================+=========================+=============+
   | TBD1(179 suggested)   |  BIER-TE Policy SAFI    |This document|
   +=======================+=========================+=============+

Existing Registry: BGP TEA Tunnel Types
This document requests assigning a new Tunnel-Type in the registry "BGP Tunnel Encapsulation Attribute Tunnel Types" as follows:

   +=======================+=========================+=============+
   | Code Point            | Description             | Reference   |
   +=======================+=========================+=============+
   |  TBD2(16 suggested)   |  BIER-TE Tunnel/Path    |This document|
   +=======================+=========================+=============+

Existing Registry: BGP TEA sub-TLVs
This document requests assigning a few of new sub-TLVs in the registry "BGP Tunnel Encapsulation Attribute sub-TLVs" as follows:

   +=======================+=========================+=============+
   | Code Point            | Description             | Reference   |
   +=======================+=========================+=============+
   |  TBD3(16 suggested)   |  Path BitStrings        |This document|
   +=======================+=========================+=============+
   |  TBD4(17 suggested)   |  Path Name              |This document|
   +=======================+=========================+=============+
   |  TBD5(18 suggested)   |  IPv4 Multicast Traffic |This document|
   +=======================+=========================+=============+
   |  TBD6(19 suggested)   |  IPv6 Multicast Traffic |This document|
   +=======================+=========================+=============+

Normative References

Informative References
[RFC2119]
[RFC8174]
[I-D.ietf-bier-te-arch]
[RFC8279]
[RFC9012]
[RFC8296]
[RFC6514]

Extensions to PMSI_TUNNEL Attribute
This section defines a new Tunnel Type (or TLV) for BIER-TE path/tunnel under the PMSI_TUNNEL Attribute (PTA) defined in [RFC6514]. It describes a couple of new sub-TLVs encoding the information about a BIER-TE path.

New Tunnel Type for BIER-TE
The PMSI Tunnel attribute carried by an x-PMSI A-D route identifies P-tunnel for PMSI. For the PTA with Tunnel Type BIER-TE, the PTA is constructed by the SDN controller and distributed to the ingress node of the BIER-TE tunnel.
The format of the PMSI_TUNNEL Attribute with the new Tunnel Type (TBD) for BIER-TE is shown in Figure 7.

PTA with Tunnel Type for BIER-TE

  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  Attr Flags   | Attr Type(22) | Length(1/2 byte)   ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |      Flag     |TunnelType(TBD)|          MPLS Label           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  MPLS Label   |       Tunnel Identifier (11/23 bytes)         |
 +-+-+-+-+-+-+-+-+                                               +
 |                                                               ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                             sub-TLVs                          ~
 ~                                                               ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
For BIER-TE tunnel/path, the fields in the PTA are set as follows:
o Tunnel Type: It is set to be TBD, indicating BIER-TE tunnel.
o Tunnel Identifier: It contains: sub-domain-id of 1 byte, BIER-TE tunnel BFIR's BFR-id of 2 bytes, Tunnel-ID of 4 bytes, and BIER-TE tunnel BFIR's BFR-prefix of 4/16 bytes for IPv4/IPv6.
o sub-TLVs: It contains a Path BitPositions sub-TLV encoding an explicit BIER-TE path. It may include a Path Name sub-TLV for the name of the BIER-TE path.
o Others: The other fields are set according to [RFC6514].