# US 11,444,875 B2 · Per-packet load-balancing over multiple network paths

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,444,875 B2
- Document ID: US11444875B2
- Status: Granted
- Kind: B2
- Application number: 17/032,874
- Filed: 2020-09-25
- Published: 2022-03-31
- Granted: 2022-09-13
- Earliest claimed: 2020-09-25
- Assignees: Cisco Technology, Inc.
- Applicants: Cisco Technology, Inc.
- Inventors: Luca Della Chiesa; Christian Schmutzer; Patrice Brissette
- Web page: https://patentgrep.com/patent/US11444875B2

## CPC

- H04L 47/125: by balancing the load, e.g. traffic engineering
- H04L 12/4633: {Interconnection of networks using encapsulation techniques, e.g. tunneling}
- H04L 12/4641: {Virtual LANs, VLANs, e.g. virtual private networks [VPN] (LAN interconnection over a bridge based backbone H04L12/462; encapsulation techniques H04L12/4633; routing of packets H04L45/00; packet switches H04L49/00; virtual private networks for security H04L63/0272)}
- H04L 45/24: Multipath
- H04L 47/41: by acting on aggregated flows or links
- H04L 47/726: Reserving resources in multiple paths to be used simultaneously (by balancing the load H04L47/125)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Techniques are presented herein for load-balancing a sequence of packets over multiple network paths on a per-packet basis. In one example, a first network node assigns sequence numbers to a sequence of packets and load-balances the sequence of packets on a per-packet basis over multiple network paths of a network to a second network node. The second network node buffers received packets that are received over the multiple network paths of the network from the first network node and re-orders the received packets according to sequence numbers of the received packets.

## Claims

### Claim 1

A method comprising:
at a first network node:
assigning sequence numbers to a sequence of packets; and
load-balancing the sequence of packets on a per-packet basis over multiple network paths of a network to a second network node, including transmitting the sequence of packets in a single pseudowire over the network from the first network node to the second network node; and
at the second network node:
buffering received packets that are received over the multiple network paths of the network from the first network node; and
re-ordering the received packets according to sequence numbers of the received packets.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
at the first network node:
obtaining a sequence of bits; and
converting the sequence of bits to the sequence of packets.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
at the second network node:
converting the received packets to the sequence of bits.

### Claim 4 (depends on 1)

The method of claim 1, wherein load-balancing the sequence of packets includes:
load-balancing the sequence of packets based on respective available bandwidths of the multiple network paths.

### Claim 5 (depends on 1)

The method of claim 1, wherein load-balancing the sequence of packets includes:
load-balancing the sequence of packets based on respective packet delays of the multiple network paths.

### Claim 6 (depends on 1)

The method of claim 1, wherein the multiple network paths include respective parallel links.

### Claim 7 (depends on 1)

The method of claim 1, wherein the multiple network paths include respective network nodes.

### Claim 8 (depends on 1)

The method of claim 1, wherein load-balancing the sequence of packets includes:
communicating with the second network node over the network using private line emulation techniques or Ethernet virtual private wire service techniques.

### Claim 9 (depends on 1)

The method of claim 1, wherein the sequence of packets includes a sequence of packets that each share common flow information.

### Claim 10

A system comprising:
a first network node and a second network node;
wherein the first network node is configured to:
assign sequence numbers to a sequence of packets; and
load-balance the sequence of packets on a per-packet basis over multiple network paths of a network to a second network node, including transmitting the sequence of packets in a single pseudowire over the network from the first network node to the second network node; and
wherein the second network node is configured to:
buffer received packets that are received over the multiple network paths of the network from the first network node; and
re-order the received packets according to sequence numbers of the received packets.

### Claim 11 (depends on 10)

The system of claim 10, wherein the first network node is further configured to:
obtain a sequence of bits; and
convert the sequence of bits to the sequence of packets.

### Claim 12 (depends on 11)

The system of claim 11, wherein the second network node is further configured to:
convert the received packets to the sequence of bits.

### Claim 13 (depends on 10)

The system of claim 10, wherein the first network node is further configured to:
load-balance the sequence of packets based on respective available bandwidths of the multiple network paths.

### Claim 14 (depends on 10)

The system of claim 10, wherein the first network node is further configured to:
load-balance the sequence of packets based on respective packet delays of the multiple network paths.

### Claim 15

One or more non-transitory computer readable storage media encoded with instructions that, when executed by one or more processors, cause the one or more processors to:
at a first network node:
assign sequence numbers to a sequence of packets; and
load-balance the sequence of packets on a per-packet basis over multiple network paths of a network to a second network node, including transmitting the sequence of packets in a single pseudowire over the network from the first network node to the second network node; and
at the second network node:
buffer received packets that are received over the multiple network paths of the network from the first network node; and
re-order the received packets according to sequence numbers of the received packets.

### Claim 16 (depends on 15)

The one or more non-transitory computer readable storage media of claim 15, wherein the instructions further cause the one or more processors to:
at the first network node:
obtain a sequence of bits; and
convert the sequence of bits to the sequence of packets.

### Claim 17 (depends on 16)

The one or more non-transitory computer readable storage media of claim 16, wherein the instructions further cause the one or more processors to:
at the second network node:
convert the received packets to the sequence of bits.

### Claim 18 (depends on 15)

The one or more non-transitory computer readable storage media of claim 15, wherein the instructions further cause the one or more processors to:
load-balance the sequence of packets based on respective available bandwidths of the multiple network paths.

### Claim 19 (depends on 15)

The one or more non-transitory computer readable storage media of claim 15, wherein the instructions further cause the one or more processors to:
load-balance the sequence of packets based on respective packet delays of the multiple network paths.

### Claim 20 (depends on 1)

The method of claim 1, wherein the single pseudowire is configured on the first network node and the second network node.
