rfc-7510

Encapsulating MPLS in UDP

X. Xu, N. Sheth, L. Yong, R. Callon, D. Black
date2015-04 streamIETF areartg wgmpls statusPROPOSED STANDARD pages19 canonicalhttps://www.rfc-editor.org/rfc/rfc7510 doi10.17487/RFC7510 errataview
This document specifies an IP-based encapsulation for MPLS, called MPLS-in-UDP for situations where UDP (User Datagram Protocol) encapsulation is preferred to direct use of MPLS, e.g., to enable UDP-based ECMP (Equal-Cost Multipath) or link aggregation. The MPLS- in-UDP encapsulation technology must only be deployed within a single network (with a single network operator) or networks of an adjacent set of cooperating network operators where traffic is managed to avoid congestion, rather than over the Internet where congestion control is required. Usage restrictions apply to MPLS-in-UDP usage for traffic that is not congestion controlled and to UDP zero checksum usage with IPv6.

Extracted elements (29)

design-rationale §6

IPsec is a less suitable security option because it hides the UDP header from intermediate routers (in both tunnel and transport mode), negating the load-balancing benefit that motivates MPLS-in-UDP. DTLS is preferred because it preserves network- and transport-layer header visibility for intermediaries.

mpls, udp, security, ipsec, tls

design-rationale §1.2

MPLS-in-UDP is motivated by the fact that most existing routers already perform five-tuple (source IP, destination IP, source port, destination port, protocol) load-balancing for UDP/TCP, so using the UDP source port as an entropy field enables fine-grained ECMP and LAG distribution without requiring router upgrades.

mpls, udp

interoperability-note §4

Each MPLS-in-UDP tunnel is strictly unidirectional: traffic is always directed to destination port 6635 and never sent back to the ephemeral source port. This contradicts the common middlebox assumption of bidirectional UDP traffic on a symmetric port pair, requiring separate per-direction configuration to traverse firewalls and NATs.

mpls, udp, nat

interoperability-note §3.2

IPv6 datagrams with a zero UDP checksum will be discarded by any middlebox (NAT, firewall) that validates checksums per RFC 2460 or rewrites the UDP checksum. MPLS-in-UDP provides no fallback mechanism when a path change routes traffic through such a middlebox, resulting in a black hole.

mpls, udp, ip, nat

normative-requirement §3.1 MUST

Any middlebox support for MPLS-in-UDP with IPv6 UDP zero-checksum mode MUST comply with requirements 1 and 8–10 in Section 5 of RFC 6936.

mpls, udp, ip

normative-requirement §3 RECOMMENDED

For IPv4, the UDP checksum is RECOMMENDED to be set to zero for performance or implementation reasons, since the IPv4 header already includes a checksum and UDP checksum use is optional, unless checksum protection of VPN labels is important.

mpls, udp, ip

normative-requirement §3 MUST

For IPv6, the UDP checksum MUST be implemented and MUST be used as specified in RFC 768 and RFC 2460 for MPLS-in-UDP traffic unless one of the three defined exceptions for UDP zero-checksum mode applies and all additional requirements in Section 3.1 are satisfied.

mpls, udp, ip

normative-requirement §4 SHOULD

For multicast tunnel destinations, all encapsulated MPLS packets within a given tunnel must consistently use either downstream-assigned or upstream-assigned top labels; in the absence of specific knowledge, the label SHOULD be presumed upstream-assigned.

mpls, udp, multicast

normative-requirement §4 MUST

For unicast tunnel destination addresses, the top MPLS label MUST be downstream-assigned, in accordance with RFC 5332.

mpls, udp

normative-requirement §3.1 MUST

IPv6 traffic with zero UDP checksums MUST be actively monitored for errors by the network operator, and measures SHOULD be taken to prevent such traffic from escaping to the general Internet.

mpls, udp, ip, measurement

normative-requirement §5 SHOULD

Measures SHOULD be taken to prevent non-congestion-controlled MPLS-in-UDP traffic from escaping to the general Internet, such as physical/logical isolation of links, packet filters on UDP destination port 6635, software-based tunnel restrictions, or a managed circuit breaker.

mpls, udp, congestion, security

normative-requirement §5 MUST NOT

MPLS-in-UDP MUST NOT be used over the general Internet or across non-cooperating network operators to carry traffic that is not congestion controlled.

mpls, udp, congestion

normative-requirement §1.3 MUST

MPLS-in-UDP MUST only be deployed within a single network (single operator) or networks of a closely cooperating adjacent set of operators where traffic is managed to avoid congestion, rather than over the Internet where congestion control is required.

mpls, udp, congestion

normative-requirement §1.3 SHOULD

Packet filters SHOULD be added to prevent MPLS-in-UDP packets from escaping the network due to misconfiguration or packet errors.

mpls, udp, security

normative-requirement §4 SHOULD

The common processing procedures from RFC 4023 covering MTU/fragmentation prevention, TTL handling, and differentiated services for MPLS-in-IP and MPLS-in-GRE SHOULD be followed for MPLS-in-UDP as well.

mpls, udp

normative-requirement §3.1 SHOULD

The tunnel encapsulator SHOULD use a distinct IPv6 source address for each MPLS-in-UDP tunnel that uses UDP zero-checksum mode, to strengthen the decapsulator's source-address check; the same source address SHOULD NOT be reused across multiple destination addresses.

mpls, udp, ip

normative-requirement §3 MUST

The UDP Destination Port field MUST be set to the IANA-allocated value 6635 (service name MPLS-UDP) to indicate that the UDP tunnel payload is an MPLS packet.

mpls, udp, registry

normative-requirement §3 SHOULD

To keep the source port in the range 49152–65535, the encapsulator SHOULD calculate a 14-bit hash and set the two most significant bits to binary 11, placing the result in the least-significant 14 bits of the source port field.

mpls, udp

normative-requirement §3.1 MUST

Use of the UDP checksum with IPv6 MUST be the default configuration of all MPLS-in-UDP implementations; UDP zero-checksum mode is an explicit opt-in subject to additional requirements.

mpls, udp, ip

normative-requirement §3.1 MUST

When a tunnel uses UDP zero-checksum mode with IPv6, the tunnel decapsulator MUST verify that the source and destination IPv6 addresses are valid for that tunnel and MUST discard any packet failing this check.

mpls, udp, ip, security

normative-requirement §6 MUST

When DTLS is used to secure MPLS-in-UDP, the UDP Destination Port MUST be set to the IANA-assigned value 6636 (MPLS-UDP-DTLS) and MUST NOT be used for other traffic; both source and destination IP addresses MUST be unicast — multicast is not supported with DTLS.

mpls, udp, security, tls

normative-requirement §5 MUST

Where MPLS-in-UDP carries congestion-controlled IP traffic, the tunnels MAY be used within a single network or across cooperating networks. Where MPLS traffic is not congestion controlled, tunnels MUST only be used within a single operator's carefully provisioned network or among closely cooperating operators.

mpls, udp, congestion

protocol-element §3

The UDP Source Port field carries a 16-bit entropy value generated by the encapsulator to uniquely identify a flow for load-balancing purposes. When no entropy is needed, the field SHOULD be set to a randomly selected constant for all packets in a given flow to avoid packet reordering.

mpls, udp

registry §7

IANA allocated UDP destination port 6635 (service name MPLS-UDP) to indicate that the UDP tunnel payload is an MPLS packet, as defined by this document.

mpls, udp, registry

registry §7

IANA allocated UDP destination port 6636 (service name MPLS-UDP-DTLS) to indicate MPLS packets encapsulated in UDP tunnels secured with DTLS, as defined by this document.

mpls, udp, registry, tls

security-consideration §6

Corruption of the VPN label in the MPLS label stack can cause traffic to leak across VPN boundaries. When inter-VPN isolation is used for privacy or security, UDP checksums SHOULD be used for both IPv4 and IPv6 MPLS-in-UDP, and UDP zero-checksum mode SHOULD NOT be used with IPv6.

mpls, udp, security, privacy

security-consideration §6

The MPLS-in-UDP encapsulation by itself cannot ensure the integrity or privacy of transported data, nor can it authenticate the tunnel encapsulator. When any of these security properties is required, MPLS-in-UDP SHOULD be secured with IPsec (RFC 4301) or DTLS (RFC 6347).

mpls, udp, security, ipsec, tls

security-consideration §6

Without IPsec or DTLS, address filtering at domain boundaries is needed to prevent unauthorized decapsulation. If only source-address filtering is deployed at boundaries, the decapsulator must also validate the IP source address; the IPv6 source address MUST be validated when UDP zero-checksum mode is in use.

mpls, udp, security

wire-format §3

The MPLS-in-UDP frame consists of a standard UDP header (Source Port = 16-bit entropy, Destination Port = 6635, UDP Length, UDP Checksum) followed by the MPLS Label Stack (per RFC 3032) and the MPLS Message Body.

mpls, udp