Stateless ECMP Link Failure Recovery with Entropy Re-Hashing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing network failure recovery mechanisms in packet-spraying fat tree networks are inefficient, leading to significant data loss and re-routing delays, and require substantial changes to switch packet processing pipelines.
Innovation Solution
Implement a mechanism where switches increment entropy by a constant when forwarding packets to failed links, re-hash to select new output ports, and apply hash functions to ensure packets reach their destination even if initial paths fail, without requiring additional state or creating cycles.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If traditional re-routing methodologies (BGP) are used to handle link failures, then routing paths are eventually restored, but hundreds of megabytes of data are lost during the several milliseconds timeout period
Solution Approach 1:
The patent applies preliminary action by pre-computing and caching alternative routing paths before failures occur. When a link failure is detected, the system immediately switches to pre-computed alternative paths without waiting for timeout periods or running complex re-routing algorithms, thus preventing data loss while maintaining routing restoration capability
Solution Approach 2:
The patent introduces an intermediary mechanism in the form of a routing cache that stores pre-computed alternative paths. This cache acts as a mediator between the failure detection mechanism and the packet forwarding system, enabling immediate route switching without directly invoking complex re-routing protocols like BGP
2Reliability
If denylisting timed-out entropies at the injection point is implemented, then subsequent packets avoid faulty paths, but the system must wait for timeout to determine path failure and requires significant changes to switch packet processing pipeline
Solution Approach 1:
The patent applies preliminary action by pre-computing alternative routing paths and caching them before failures occur. This eliminates the need for timeout-based detection and complex switch pipeline changes, as the system is already prepared with valid paths ready for immediate use
Solution Approach 2:
The patent extracts the complex re-routing logic from the switch packet processing pipeline and places it in a separate routing cache system. This separation allows switches to perform simple cache lookups without modifying their core packet processing architecture, thereby reducing device complexity while maintaining reliable path selection
3Reliability
If rapid re-routing is implemented to reduce data loss, then data delivery reliability improves, but packet order may be compromised and additional state is required in switches
Solution Approach 1:
The patent uses copying by creating a cached copy of routing information from the main routing table. This cached copy contains pre-computed alternative paths that can be quickly accessed without modifying switch state, enabling rapid re-routing while maintaining packet order through deterministic path selection
Solution Approach 2:
The patent applies parameter changes by modifying the routing cache structure to include pre-computed alternative paths with associated metadata. This allows the system to rapidly switch between paths by changing which cached entry is active, without requiring additional state in switches or compromising packet order
Data Source
AI summary
In a computing network implementing an adaptive load balancing scheme, an indication of a link failure in the computing network is received. When forwarding a packet to the failed link, the entropy of the packet is incremented by a constant. A new output port is selected for the associated Equal-Cost Multi-Path (ECMP) group. The entropy in the packet is incremented by the constant if the re-hash leads to another failed link. In response to determining that the ECMP group leading to a destination has no working ports, a hash function is applied to select another working port.


