rfc-5640

Load-Balancing for Mesh Softwires

C. Filsfils, P. Mohapatra, C. Pignataro
date2009-08 streamIETF areaint wgsoftwire statusPROPOSED STANDARD pages6 canonicalhttps://www.rfc-editor.org/rfc/rfc5640 doi10.17487/RFC5640
Payloads transported over a Softwire mesh service (as defined by BGP Encapsulation Subsequent Address Family Identifier (SAFI) information exchange) often carry a number of identifiable, distinct flows. It can, in some circumstances, be desirable to distribute these flows over the equal cost multiple paths (ECMPs) that exist in the packet switched network. Currently, the payload of a packet entering the Softwire can only be interpreted by the ingress and egress routers. Thus, the load-balancing decision of a core router is only based on the encapsulating header, presenting much less entropy than available in the payload or the encapsulated header since the Softwire encapsulation acts in a tunneling fashion. This document describes a method for achieving comparable load-balancing efficiency in a network carrying Softwire mesh service over Layer Two Tunneling Protocol - Version 3 (L2TPv3) over IP or Generic Routing Encapsulation (GRE) encapsulation to what would be achieved without such encapsulation. [STANDARDS-TRACK]

updated by

Extracted elements (16)

design-rationale §2

A smaller Load-Balancing Block value leaves more bits for per-flow identification, yielding better entropy and lower ECMP polarization, but consumes more L2TPv3 Session IDs or GRE Keys. Deployments must arbitrate this trade-off based on the number of supported services.

vpn, bgp

design-rationale §1

The mechanism places a signature (derived from the inner header) into the encapsulation header's load-balancing field to enhance per-flow entropy seen by core routers. Core routers thus make better ECMP decisions without needing to inspect the tunneled payload.

vpn, bgp, ip

interoperability-note §2

An ingress router that does not understand the Load-Balancing Block sub-TLV continues to use the single Session ID or GRE Key value advertised in the encapsulation sub-TLV, ensuring backward compatibility.

vpn, bgp

interoperability-note §2.1

For L2TPv3-over-IP, the Session ID serves as the load-balancing field; for GRE, the GRE Key (RFC 2890) serves this role. The load-balancing block mechanism is not defined for IP-in-IP (tunnel type 7).

vpn, bgp, ip

interoperability-note §2

If the egress router does not support the Load-Balancing Block sub-TLV, the Softwire continues to operate with a single load-balancing field, and all ingress routers encapsulate using that one value.

vpn, bgp

normative-requirement §2.1 MUST

Future tunnel types that wish to use the Load-Balancing Block sub-TLV MUST define a load-balancing field that is part of the encapsulating header. IP-in-IP (tunnel type 7) is explicitly excluded from the current definition.

vpn, bgp, ip

normative-requirement §2 MUST NOT

If a load-balancing field is not signaled (e.g., GRE without a Key), the Load-Balancing Block sub-TLV MUST NOT be included in the advertisement.

vpn, bgp

normative-requirement §2 MAY

The Load-Balancing Block sub-TLV MAY be included in any Encapsulation SAFI UPDATE message where load-balancing is desired.

vpn, bgp

normative-requirement §2 MUST NOT

The value field of the Load-Balancing Block sub-TLV MUST NOT exceed the size of the load-balancing field defined for the tunnel type.

vpn, bgp

normative-requirement §2.1 MUST

When an egress router includes a Load-Balancing Block sub-TLV for L2TPv3-over-IP, it MUST encode the Session ID field of the encapsulation sub-TLV so that the most significant bits of the Session ID, after extracting the block, are non-zero.

vpn, bgp

protocol-element §2.2

Fields in the encapsulation header other than the load-balancing field (e.g., the optional L2TPv3 cookie) are shared across all per-flow load-balancing field values and are not modified by the Load-Balancing Block mechanism.

vpn, bgp

protocol-element §2

For L2TPv3-over-IP encapsulation, the ingress PE selects per-flow values by taking the block prefix (first N bits) from the Session ID advertised by the egress and filling the remaining lower-order bits with a per-flow identifier derived from, e.g., inner source/destination addresses and TCP/UDP ports.

vpn, bgp

protocol-element §2

The Load-Balancing Block sub-TLV (type 5) is a new sub-TLV for the BGP Tunnel Encapsulation Attribute (RFC 5512). Its length is 2 octets, and its value represents the size of the load-balancing block in bits, following a VLSM-like model where the block is extracted from the leading bits of the load-balancing field.

vpn, bgp, ip

registry §3

IANA assigned sub-TLV type value 5 to 'Load-Balancing Block' in the BGP Tunnel Encapsulation Attribute Sub-TLVs registry, originally created by RFC 5512.

registry, bgp, vpn

security-consideration §4

This document introduces no additional security risks beyond those already covered in RFC 5512 for the BGP Encapsulation SAFI and the BGP Tunnel Encapsulation Attribute. Implementors are referred to RFC 5512 for applicable security considerations.

security, bgp, vpn

wire-format §2

The Load-Balancing Block sub-TLV has sub-TLV type 5, a fixed 2-octet length field, and a 2-octet value field encoding the block size in bits. The block is determined by extracting the initial 'block size' bits from the encapsulation header's load-balancing field (e.g., L2TPv3 Session ID or GRE Key).

vpn, bgp