# US 12,603,848 B2 · Efficient mechanism for the transmission of multipath duplicate packets

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

- Number: US 12,603,848 B2
- Document ID: US12603848B2
- Status: Granted
- Kind: B2
- Application number: 18/088,555
- Filed: 2022-12-24
- Published: 2023-07-06
- Granted: 2026-04-14
- Earliest claimed: 2022-01-04
- Assignees: VMware, Inc.
- Applicants: VMware LLC
- Inventors: Eyal Zohar; Alex Markuze; Igor Golikov; Israel Cidon
- Web page: https://patentgrep.com/patent/US12603848B2

## CPC

- H04L 47/34: ensuring sequence integrity, e.g. using sequence numbers
- H04L 45/121: by minimising delays
- H04L 45/24: Multipath
- H04L 45/42: Centralised routing
- H04L 45/566: {Routing instructions carried by the data packet, e.g. active networks}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

The method, in some embodiments, aggregates duplicate transmission control protocol (TCP) packets of a data stream duplicated and sent over disjoint routing paths. Each duplicate pair of packets includes a packet sequence number unique to that duplicate pair. The method iteratively (1) generates a window of packet sequence numbers for the data stream starting with a lowest packet sequence number, of the data stream, that has not been received, (2) receives a TCP packet sent over one of a first routing path and a second, disjoint routing path. If the packet sequence number of the received TCP packet is outside the window or is a duplicate of a previously received TCP packet, the method drops the received TCP packet. If the packet sequence number of the received TCP packet is within the window and is not a duplicate of a previously received TCP packet, the method stores the received packet.

## Claims

### Claim 1

A method of aggregating duplicate transmission control protocol (TCP) packets of a data stream that has been duplicated and sent over disjoint routing paths, wherein each duplicate pair of packets comprises a packet sequence number, within the data stream, unique to that duplicate pair, the method comprising iteratively:
generating a window of packet sequence numbers for the data stream starting with a lowest packet sequence number, of the data stream, that has not been received, by creating a list of TCP packet fragments, each fragment being defined by a packet sequence number and a memory location storing a payload fragment;
receiving a TCP packet sent over one of a first routing path and a second, disjoint routing path;
if the packet sequence number of the received TCP packet is outside the window or is a duplicate of a previously received TCP packet, dropping the received TCP packet;
if the packet sequence number of the received TCP packet is within the window and is not a duplicate of a previously received TCP packet, storing the received TCP packet.

### Claim 2 (depends on 1)

The method of claim 1, wherein a size of the window corresponds to an advertised TCP receive window size for the data stream.

### Claim 3 (depends on 1)

The method of claim 1 further comprising measuring a latency difference between the first and second routing paths.

### Claim 4 (depends on 3)

The method of claim 3, wherein measuring the latency difference between the first and second routing paths comprises determining a difference between an arrival time of a TCP packet and a corresponding duplicate of the TCP packet.

### Claim 5 (depends on 3)

The method of claim 3, wherein measuring the latency difference between the first and second routing paths comprises determining a difference between an arrival time of each of a plurality of TCP packets and corresponding duplicates of the TCP packets.

### Claim 6 (depends on 1)

The method of claim 1 further comprising determining whether the TCP packet sequence number of the received TCP packet corresponds to the lowest packet sequence number, of the data stream, that has not been received.

### Claim 7 (depends on 6)

The method of claim 6 further comprising, if the TCP packet sequence number of the received TCP packet corresponds to the lowest packet sequence number, of the data stream, that has not been received, identifying an updated value of the lowest packet sequence number, of the data stream, that has not been received, based at least on the packet sequence number of the received TCP.

### Claim 8 (depends on 7)

The method of claim 7, wherein the updated value of the lowest packet sequence number, of the data stream, that has not been received, is further based on one or more packet sequence numbers of previously received TCP packets.

### Claim 9 (depends on 1)

The method of claim 1, wherein storing the received TCP packet comprises storing the packet within a data storage of received TCP packets.

### Claim 10 (depends on 9)

The method of claim 9, wherein the stored TCP packets are stored in an order defined by the packet sequence numbers of the TCP packets.

### Claim 11

A non-transitory machine readable medium storing a program for aggregating duplicate transmission control protocol (TCP) packets of a data stream that has been duplicated and sent over disjoint routing paths, wherein each duplicate pair of packets comprises a packet sequence number, within the data stream, unique to that duplicate pair, the program comprising sets of instructions for iteratively:
generating a window of packet sequence numbers for the data stream starting with a lowest packet sequence number, of the data stream, that has not been received, by creating a list of TCP packet fragments, each fragment being defined by a packet sequence number and a memory location storing a payload fragment;
receiving a TCP packet sent over one of a first routing path and a second, disjoint routing path;
when the packet sequence number of the received TCP packet is outside the window or is a duplicate of a previously received TCP packet, dropping the received TCP packet;
when the packet sequence number of the received TCP packet is within the window and is not a duplicate of a previously received TCP packet, storing the received TCP packet.

### Claim 12 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein a size of the window corresponds to an advertised TCP receive window size for the data stream.

### Claim 13 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein the program further comprises a set of instructions for measuring a latency difference between the first and second routing paths.

### Claim 14 (depends on 13)

The non-transitory machine readable medium of claim 13, wherein the set of instructions for measuring the latency difference between the first and second routing paths comprises a set of instructions for determining a difference between an arrival time of a TCP packet and a corresponding duplicate of the TCP packet.

### Claim 15 (depends on 13)

The non-transitory machine readable medium of claim 13, wherein the set of instructions for measuring the latency difference between the first and second routing paths comprises a set of instructions for determining a difference between an arrival time of each of a plurality of TCP packets and corresponding duplicates of the TCP packets.

### Claim 16 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein the program further comprises a set of instructions for determining whether the TCP packet sequence number of the received TCP packet corresponds to the lowest packet sequence number, of the data stream, that has not been received.

### Claim 17 (depends on 16)

The non-transitory machine readable medium of claim 16, wherein the program further comprises a set of instructions for identifying, when the TCP packet sequence number of the received TCP packet corresponds to the lowest packet sequence number, of the data stream, that has not been received, an updated value of the lowest packet sequence number, of the data stream, that has not been received, based at least on the packet sequence number of the received TCP.

### Claim 18 (depends on 17)

The non-transitory machine readable medium of claim 17, wherein the updated value of the lowest packet sequence number, of the data stream, that has not been received, is further based on one or more packet sequence numbers of previously received TCP packets.

### Claim 19 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein the set of instructions for storing the received TCP packet comprises a set of instructions for storing the packet within a data storage of received TCP packets.

### Claim 20 (depends on 19)

The non-transitory machine readable medium of claim 19, wherein the stored TCP packets are stored in an order defined by the packet sequence numbers of the TCP packets.
