rfc-8296

Encapsulation for Bit Index Explicit Replication (BIER) in MPLS and Non-MPLS Networks

IJ. Wijnands (Editor), E. Rosen (Editor), A. Dolganow, J. Tantsura, S. Aldrin, I. Meilik
date2018-01 streamIETF areartg wgbier statusPROPOSED STANDARD pages24 canonicalhttps://www.rfc-editor.org/rfc/rfc8296 doi10.17487/RFC8296 errataview
Bit Index Explicit Replication (BIER) is an architecture that provides optimal multicast forwarding through a "multicast domain", without requiring intermediate routers to maintain any per-flow state or to engage in an explicit tree-building protocol. When a multicast data packet enters the domain, the ingress router determines the set of egress routers to which the packet needs to be sent. The ingress router then encapsulates the packet in a BIER header. The BIER header contains a bit string in which each bit represents exactly one egress router in the domain; to forward the packet to a given set of egress routers, the bits corresponding to those routers are set in the BIER header. The details of the encapsulation depend on the type of network used to realize the multicast domain. This document specifies a BIER encapsulation that can be used in an MPLS network or, with slight differences, in a non-MPLS network.

Extracted elements (27)

design-rationale §2.2.1.1

In MPLS networks the BIER-MPLS label performs the role of the BIFT-id; it is locally significant and may be swapped at each hop (as with normal MPLS). In non-MPLS networks the BIFT-id is domain-wide unique and does not change as the packet traverses the domain.

mpls, multicast

design-rationale §2.1.2

The BSL field in the BIER header is present solely for offline tools (e.g., LAN analyzers); BFRs MUST infer the BitString length from the BIFT-id, not from this field. This prevents misforwarding due to a mismatch between the header field and the label binding.

mpls, multicast

design-rationale §2.2.3

The non-MPLS BIER encapsulation uses a distinct Ethertype (0xAB37) rather than the MPLS Ethertype (0x8847) to allow non-MPLS BIER to coexist with non-BIER MPLS in the same deployment without BIFT-id values conflicting with MPLS label values.

mpls, multicast

interoperability-note §3

If the BIER payload is an MPLS packet with an upstream-assigned label at the top, that label is interpreted in the context of <BFIR-id, sub-domain-id>; the sub-domain-id must be inferred from the BIFT-id since it is not carried explicitly in the BIER header.

mpls, multicast

normative-requirement §2.1.2 MUST

A BFR MUST infer the BitString length from the BIFT-id and MUST NOT infer it from the BSL field value. The BSL field is present only to enable offline tools such as LAN analyzers to parse the header.

mpls, multicast

normative-requirement §2.1.1.2 MUST

Any MPLS label stack entries immediately preceding the BIER encapsulation MUST have the S bit set to 0; the BIER encapsulation's initial four octets MUST have the S bit set to 1, indicating the bottom of the MPLS label stack.

mpls, multicast

normative-requirement §2.1.2 MUST

If a BFIR encapsulates MPLS packets that have entropy labels, it MUST ensure that two packets with the same MPLS entropy label also have the same value in the BIER entropy field.

mpls, multicast

normative-requirement §2.2.1.1 MUST

In non-MPLS networks, the BIFT-id MUST be assigned for every <SD, SI, BSL> combination and is domain-wide unique (unlike MPLS where it is locally significant and may change hop-by-hop).

multicast

normative-requirement §2.1.1.1 MUST NOT

Penultimate hop popping MUST NOT be applied to a BIER-MPLS label, since that label also serves as the first four octets of the BIER encapsulation header.

mpls, multicast

normative-requirement §2.1.2 MUST NOT

The BSL field MUST NOT be set to any value other than the seven defined values (1–7). A received packet with an unexpected BSL value SHOULD be discarded and an error logged.

mpls, multicast

normative-requirement §2.1.2 MUST

The Ver field MUST be 0 (this document specifies version 0). If a BFR receives a BIER packet with an unsupported version, it MUST discard the packet and log an error. The value 0xF is reserved for experimental use and MUST NOT be assigned by IETF or IANA.

mpls, multicast

normative-requirement §2.1.1.2 MUST

When a BIER packet is forwarded, the outgoing BIER-MPLS label MUST have a TTL value one less than the packet's incoming TTL. If the incoming TTL is 0, or if TTL is 1 and the BitString has bits set for BFRs other than the current one, the packet is expired and SHOULD be passed to an error-handling procedure.

mpls, multicast

normative-requirement §2.1.3 MUST

When further encapsulating a BIER packet in MPLS networks, the outer encapsulation's next-protocol codepoint for MPLS MUST be used, specifically the codepoint for 'MPLS with downstream-assigned label' (e.g., Ethertype 0x8847 for Ethernet).

mpls, multicast

normative-requirement §2.2.3 MUST

When further encapsulating a non-MPLS BIER packet, the outer encapsulation's next-protocol codepoint MUST be set to a value meaning 'non-MPLS BIER' and MUST NOT use an MPLS codepoint. For Ethernet, the Ethertype MUST NOT be 0x8847 or 0x8848; IEEE-assigned Ethertype 0xAB37 MUST be used.

mpls, multicast

protocol-element §3

At an intermediate BFR processing an MPLS BIER packet, when a BIER-MPLS label rises to the top of the stack, the BFR infers BSL, SI, and SD from the label, then follows RFC 8279 forwarding procedures, swapping the label to the neighbor's advertised BIER-MPLS label for the same <SD, SI, BSL> with TTL decremented by one.

mpls, multicast

protocol-element §2.1.1.1

BIER-MPLS labels are locally significant downstream-assigned MPLS labels, each binding to a specific <SD, SI, BSL> triple. A BFR advertises one label per SI per BSL per SD, potentially as a contiguous label range, via IGP or BGP extensions.

mpls, multicast

protocol-element §3

The BIER encapsulation procedure at a BFIR involves: determining the Proto field and destination BFERs from the multicast flow overlay, converting BFR-ids to SI:BitString format, making one copy per distinct SI, and prepending a BIER header with the appropriate BIFT-id or BIER-MPLS label.

mpls, multicast

protocol-element §2.1.2

The Nibble field (4 bits) in MPLS networks MUST be set to binary 0101 to prevent MPLS ECMP logic from confusing the remainder of the BIER header with an IP or pseudowire header. In non-MPLS networks it SHOULD be set to 0000 but MUST be ignored on reception.

mpls, multicast

registry §4

IANA created the 'BIER Next Protocol Identifiers' registry with registration policy 'IETF Review'. Initial values: 0=Reserved, 1=MPLS downstream-assigned, 2=MPLS upstream-assigned, 3=Ethernet, 4=IPv4, 5=OAM, 6=IPv6, 63=Reserved.

registry, multicast, mpls

security-consideration §6

BIER-encapsulated packets should not be accepted from untrusted interfaces or tunnels. When packets must be accepted from systems not controlled by the operator (e.g., VMs in a data center), the encapsulation provides no mechanism to verify that the source is legitimate, that the BFIR-id is authentic, or that the BitString is authorized.

security, multicast

security-consideration §6

The BIER encapsulation provides no cryptographic integrity protection; unauthorized modifications to the BIER header are likely to go undetected and may cause packets to be lost, stolen, or misdelivered. Layer 2 encryption can protect packets in transit between adjacent BFRs, but a compromised BFR cannot be prevented from making illegitimate modifications.

security, multicast, mpls

wire-format §2.1.2

The BFIR-id field is 16 bits and encodes the BFR-id of the ingress router (BFIR) in the sub-domain to which the packet has been assigned, as an unsigned integer in the range [1, 65535].

mpls, multicast

wire-format §2

The BIER header consists of four 32-bit rows: (1) BIFT-id (20 bits), TC (3 bits), S bit (1 bit), TTL (8 bits); (2) Nibble (4 bits), Ver (4 bits), BSL (4 bits), Entropy (20 bits); (3) OAM (2 bits), Rsv (2 bits), DSCP (6 bits), Proto (6 bits), BFIR-id (16 bits); followed by the BitString of variable length.

mpls, multicast

wire-format §2

The BIFT-id field is 20 bits wide and identifies a particular Bit Index Forwarding Table (BIFT). In MPLS networks it carries a locally significant downstream-assigned MPLS label; in non-MPLS networks it is a domain-wide unique identifier for a specific <SD, SI, BSL> triple.

mpls, multicast

wire-format §2.1.2

The BSL field is 4 bits and encodes the BitString length as log2(k)-5, where k is the length in bits. Valid values are 1 (64 bits) through 7 (4096 bits); the default BitStringLength is 256 bits.

mpls, multicast

wire-format §2.1.2

The Entropy field is 20 bits and carries a value used for equal-cost load balancing. The BIER forwarding process MUST choose the same path for any two packets with the same entropy value and the same BitString.

mpls, multicast

wire-format §2.1.2

The Proto (Next Protocol) field is 6 bits and identifies the type of payload immediately following the BIER header. Values are drawn from the IANA 'BIER Next Protocol Identifiers' registry.

mpls, multicast, registry