Per-Packet Multi-Path Routing for Autonomous Network Packet Order

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In autonomous networks, traditional equal-cost multi-path routing (ECMP) mechanisms can cause packets in long-lived, high-bandwidth network flows to arrive out-of-order, leading to under-utilization of bandwidth and issues with transport protocols that depend on packet order, such as TCP.

Innovation Solution

Implementing a per-packet multi-path routing mechanism with sequence numbers for each data packet, where routers use a round-robin or randomization function to balance load across multiple best paths, and network shim modules at endpoints buffer out-of-order packets until the next sequential packet arrives, ensuring delivery in sequence order.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If flow-based deterministic algorithms are used in ECMP to maintain packet order, then packet order is preserved, but bandwidth utilization decreases

Engineering Contradiction:
Improvepacket orderVSAvoidbandwidth utilization
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent introduces sequence numbers as an intermediary mechanism that allows packets to be transmitted independently across multiple paths while maintaining order at the destination. The sequence numbers act as a mediator between the routing system and the transport protocol, enabling per-packet ECMP without disrupting TCP operation.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent changes the parameter of packet identification from flow-based (source/destination IP and port) to per-packet (sequence numbers). This parameter change enables the routing system to treat each packet independently while the transport layer reconstructs the original order using the sequence numbers.

Inventive Principle:
Principle #35Parameter changes

2Productivity

If per-packet multi-path routing is implemented, then bandwidth utilization increases, but packet order cannot be maintained

Engineering Contradiction:
Improvebandwidth utilizationVSAvoidpacket order
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent segments the packet ordering function from the routing function. The routing layer segments packets across multiple paths using per-packet ECMP, while the transport layer segments the reordering task by buffering packets and using sequence numbers to reconstruct the original order at the destination.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent adds a temporal dimension to packet handling by introducing buffering at the destination. Packets are not delivered immediately upon arrival but are held in buffers until their sequence position can be determined, adding a time dimension to the packet delivery process that enables multi-path routing without order loss.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Reliability

If TCP is used to ensure reliable ordered delivery, then packet order is maintained, but performance degrades due to retransmissions and flow control

Engineering Contradiction:
Improveordered deliveryVSAvoidperformance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts the ordering function from TCP by implementing it at the application layer using sequence numbers. This removes the need for TCP's complex flow control and retransmission mechanisms when using per-packet ECMP, as the ordering is handled independently by the application layer buffers and sequence number tracking.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS9729350B1Maintaining packet order in network flows over an autonomous network
Publication Date: 2017.08.08 AMAZON TECH INC
  • US9729350B1 patent drawing
  • US9729350B1 patent drawing
  • US9729350B1 patent drawing

AI summary

Technologies are described herein for maintaining packet order in network flows over an autonomous network. A sequence number is generated for each data packet in the network flow. The data packets are transmitted from a source endpoint to a destination endpoint accompanied by the sequence number. When a data packet is received at the destination endpoint, the sequence number is utilized to determine whether the packet has arrived out-of-order. If the received data packet is out-of-order, the packet is buffered for a specific period of time, or until the next sequential packet in the network flow is received. If the next sequential packet is received within the time period, the received packet and any buffered packets are delivered in sequence number order to a program executing on the destination endpoint. If the time period expires before receiving the next sequential data packet, the buffered packet(s) are delivered to the program.