Entropy Label for Source Packet Routing in Networking (SPRING) Tunnels
Extracted elements (26)
A single EL placed at the bottom of the SPRING stack (Option 1) was rejected because as the label stack grows with more SIDs, the EL sinks deeper. Hardware implementations with a low maximum readable label depth (low ERLD) cannot reach it, causing loss of load-balancing on a significant portion of the network.
Keeping the EL at the top of stack (Option 4) was rejected for the same reason as the reusable EL approach: it requires significant changes to label-swap operations in existing hardware, making it impractical for deployment.
One EL per segment in the stack (Option 2) was rejected because it causes the stack depth to grow by almost 3x (two additional labels per tunnel label). Existing hardware with limited label push capacity would be unable to create sufficiently deep LSPs, constraining the types of LSPs that can be created.
The chosen approach — inserting ELIs/ELs at positions within the readable label stack depths of LSRs along the path (Section 7) — was selected because it balances the number of pushed labels against load-balancing entropy, accommodates varying ERLD values, and avoids requiring hardware changes. Multiple ELI/EL pairs may be needed when ERLD values differ across the path.
The reusable EL option (Option 3), where an LSR terminating a tunnel stores and reinserts the EL below the next inner tunnel label, was rejected because it requires a significant change to label-swap operations in existing hardware.
The use of entropy labels in SR-MPLS is motivated by the difficulty of deep packet inspection at transit LSRs: it is unreasonable to expect an LSR to inspect UDP ports within a GRE tunnel carried over a 15-label SPRING stack. The EL computed at ingress provides entropy without requiring per-LSR deep inspection.
Because ELI/EL insertion is performed solely by the ingress node, different ingress nodes using different placement criteria do not cause an interoperability issue. However, from a network design and operations perspective, it is preferable for all ingress routers to use the same criteria.
ELC propagation across signaling domain boundaries (e.g., from LDP to SPRING via a Mapping Server) is required for ingress nodes to safely insert ELI/EL over stitched LSPs. The proposed solution only works if the SPRING router advertising the Binding SID is also performing the data-plane LSP stitching.
A node SHOULD advertise its MSD to an external controller so the controller knows the maximum supported label stack depth. Additionally, the node SHOULD advertise the type of the MSD (e.g., transport-only vs. full limit including service and entropy labels) to allow the controller to leave room for locally added labels.
A router capable of reading N labels but not using an EL located within those N labels MUST consider its ERLD to be 0.
A router running SPRING SHOULD advertise its ERLD so all other SPRING routers in the network are aware of its capability, enabling efficient entropy-label-based load-balancing.
An implementation MAY use the minimum ERLD across all line cards (or across fast and slow switching paths) as the system-wide ERLD value, accepting that this may increase the number of ELI/EL pairs inserted.
An implementation SHOULD try to maximize the possibility of load-balancing by inserting ELI/EL where multiple equal-cost paths are available while minimizing the number of ELI/EL pairs inserted. In case of trade-off, implementations SHOULD provide operator flexibility to select placement criteria or specify a sub-objective for optimization.
An ingress node MUST NOT push an ELI/EL associated with a Binding SID unless that Binding SID has the entropy label capability set, preventing misforwarding when the tail-end LSP is not EL-capable.
For a label bound to a Binding Segment, if the implementation cannot find or does not support evaluation of the minimum ERLD along the path, it SHOULD instead use the ERLD of the node advertising the Binding SID.
For a label bound to a node segment, if an implementation cannot find the minimum ERLD along the segment path or does not support that computation, it SHOULD instead use the ERLD of the tail-end node, mimicking RFC 6790 behavior where the ingress considers only the egress of the LSP.
Multiple <ELI, EL> pairs MAY be inserted in a SPRING label stack so that the EL falls within the ERLD of LSRs along the path. The EL values among multiple pairs MAY be the same or different.
The entropy label capability SHOULD be propagated between signaling domains. Each Binding SID SHOULD have its own ELC that MUST be inherited from the ELC of the associated LSP. If the advertising router does not know the ELC state of the target FEC, it MUST NOT set the ELC for the Binding SID.
The insertion of an ELI/EL MUST occur only with a SPRING label advertised by an LSR that advertised an ERLD (i.e., is entropy label capable) or with a SPRING label associated with a Binding SID that has the ELC set.
To advertise an ERLD value, a SPRING router MUST be entropy label capable and apply RFC 6790 data-plane procedures, MUST be able to read an ELI/EL within its ERLD depth, and MUST take into account an EL within the first ERLD labels in its load-balancing function.
A simple example insertion algorithm initializes the insertion point at the bottom-most EL-capable label, inserts <ELI, EL> pairs working upward, moving each new insertion point up until the last inserted EL is below the ERLD and the new point is EL-capable, repeating while the node can push more pairs. Applied to the Section 3 example, this yields stack <L_N-P3, ELI, EL, L_A-L1, L_N-D, ELI, EL>.
An adjacency-set SID refers to a set of adjacencies and signals that load-balancing is expected at the advertising node; an implementation MAY favor inserting an ELI/EL after the label representing an adjacency-set. Conversely, a regular single-link Adj-SID typically does not require load-balancing and an implementation MAY NOT place an ELI/EL after it.
Entropy Readable Label Depth (ERLD) is defined as the number of labels a router can both read in an MPLS packet (starting from the top of the stack) and use in its load-balancing function. A router will perform load-balancing using the EL only if the EL is placed within the first ERLD labels.
Maximum SID Depth (MSD) defines the maximum number of labels a node can impose on a packet, including service, entropy, and transport labels. It is a per-link and/or per-node property that can vary based on hardware or software limitations and the number of MPLS operations to be performed before label push.
When L2 bundle SR extensions (RFC 8668) are used, an adjacency segment representing the entire bundle signals expected load-balancing (MAY insert ELI/EL), while adjacency segments for individual bundle members signal no load-balancing expected (MAY NOT insert ELI/EL).
The introduction of ERLD and MSD, and the potential need for an ingress node to push multiple ELI/EL pairs, do not introduce any new security considerations beyond those already defined in RFC 6790.