MPLS Multicast Encapsulations
updates
Extracted elements (19)
RFC 3032 established two data link layer codepoints (0x8847 unicast, 0x8848 multicast) to distinguish MPLS unicast from multicast packets, but this usage was never deployed. Further development showed the codepoint need not indicate whether the top label is a multicast label, since the NHLFE already specifies that. The codepoints are therefore redefined: 0x8848 now means the top label is upstream-assigned, not that the packet is multicast.
Setting the MAC DA vwxyz field to the second label (rather than the top context label) exposes more LSP-specific information in the MAC DA, enabling ethernet-layer filtering of multicast packets with 'unexpected' non-zero vwxyz values. The topmost label is expected to be a constant context label per RFC 5331, while the second label differs per LSP.
An implementation performing MPLS multicast per RFC 3032 or RFC 4023 (using the old codepoint semantics) will be unable to interoperate with implementations following this document. However, the absence of a matching control plane on legacy platforms makes practical interoperability conflicts unlikely.
For a point-to-point data link or tunnel, either every MPLS packet MUST carry an upstream-assigned label, or every MPLS packet MUST carry a downstream-assigned label. In the absence of any other information, the use of downstream-assigned labels MUST be presumed by default.
For MPLS-in-GRE with a unicast IP destination address, ethertype 0x8847 MUST be used in all cases. For GRE with a multicast IP destination, 0x8847 MUST be used when the top label is downstream-assigned, and 0x8848 MUST be used when it is upstream-assigned.
If an LSR sets vwxyz to a label value and the label stack has two or more labels, vwxyz MUST by default be set to the value of the second label (the label immediately following the topmost entry). The LSR MAY be configured to use a different label.
If it is known that the top label of a GRE packet with a multicast destination IP address is upstream-assigned, the occurrence of ethertype 0x8847 in such a packet MUST be considered an error and the packet MUST be discarded.
LSRs using vwxyz=0 and vwxyz=label-value procedures MUST interoperate: an LSR MUST NOT filter packets for which vwxyz has been set to zero, and MUST NOT indiscriminately filter all packets for which vwxyz is non-zero.
On a multipoint-to-multipoint link where both upstream-assigned and downstream-assigned top labels may appear (scenario 3), the data link or tunnel encapsulation MUST provide a codepoint distinguishing the two types. If no such codepoint exists, scenario 3 MUST NOT be used.
On a point-to-multipoint data link or tunnel, the top labels of all MPLS packets MUST be of the same type — either all upstream-assigned or all downstream-assigned. All receivers must know a priori which type is in use.
RFC 4023 is updated: the IPv4 Protocol Number field or IPv6 Next Header field for MPLS-in-IP encapsulation is always set to 137, regardless of whether the encapsulated MPLS packet is multicast.
Upstream-assigned labels MUST NOT be used unless it is known that the downstream LSR supports them. The ability to use upstream-assigned labels is an OPTIONAL feature.
When transmitting a multicast MPLS packet in a multicast ethernet frame, an LSR MUST set the MAC Destination Address to 01-00-5e-8v-wx-yz, where vwxyz is a 20-bit value set to either 0 or the value of one of the MPLS labels on the packet's label stack.
A 'multicast label' is an MPLS label whose NHLFE specifies a set of next hops with semantics that the packet is to be replicated and sent to each next hop. The intent to replicate distinguishes it from a unicast label, even when the set has only one member.
Ethertype 0x8847 is used for MPLS unicast ethernet frames and also for multicast ethernet frames carrying MPLS packets whose top label is downstream-assigned. Ethertype 0x8848 is used exclusively when a multicast ethernet frame carries an MPLS packet whose top label is upstream-assigned.
Upstream-assigned labels are those where the binding between label L and FEC F was made by the transmitting LSR (or a third party) and advertised to the receiving LSR, as opposed to downstream-assigned labels where the receiver makes and advertises the binding. Upstream-assigned labels are not required to come from the same label space as downstream-assigned labels.
IANA has reserved ethernet multicast addresses 01-00-5e-80-00-00 through 01-00-5e-8f-ff-ff for use when an ethernet multicast frame carries an MPLS multicast packet. These addresses are valid with ethertype 0x8847 or 0x8848. Ethertypes 0x8847 and 0x8848 are redescribed as 'MPLS' and 'MPLS with upstream-assigned label' respectively.
Malicious changing of the ethernet codepoint (0x8847 vs. 0x8848) may result in loss or misrouting of packets, but altering the codepoint without also altering the label does not produce a predictable effect. Malicious alteration of the MAC DA on ethernet can cause packets to be received by a third party rather than the intended recipient.
For PPP (a point-to-point data link), the PPP Protocol field is always set to 0x0281 when carrying an MPLS packet, regardless of whether the label is upstream- or downstream-assigned.