# US 8,787,378 B2 · Systems and methods to improve performance of TCP over large bandwidth-delay-product networks

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

- Number: US 8,787,378 B2
- Document ID: US8787378B2
- Status: Granted
- Kind: B2
- Application number: 13/337,772
- Filed: 2011-12-27
- Published: 2012-06-28
- Granted: 2014-07-22
- Earliest claimed: 2010-12-28
- Assignees: The Chinese University of Hong Kong
- Applicants: Yiu Bun Lee; Wing San Wan
- Inventors: Yiu Bun Lee; Wing San Wan
- Web page: https://patentgrep.com/patent/US8787378B2

## CPC

- H04L 47/193: at the transport layer, e.g. TCP related
- H04L 47/17: Interaction among intermediate nodes, e.g. hop by hop
- H04L 47/25: with rate being modified by the source upon detecting a change of network conditions
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

The apparatus, systems, and methods described herein may operate to receive at least one data packet from a transmitter connected to a first network. A packet forwarding time may be scheduled for the at least one data packet. The at least one data packet may be forwarded to a receiver connected to a second network based on the packet forwarding time such that transmission of the at least one data packet prevents a buffer overflow at the receiver.

## Claims

### Claim 1

A computer-implemented method, comprising:
receiving at least one data packet from a transmitter connected to a first network;
scheduling a packet forwarding time for the at least one data packet; and
forwarding the at least one data packet to a receiver connected to a second network based on the packet forwarding time such that transmission of the at least one data packet prevents a buffer overflow at the receiver, wherein a number of the at least one data packet to be forwarded to the receiver is determined based on amount of buffers freed-up at the receiver and amount of data packets received at the receiver during a round-trip-delay.

### Claim 2 (depends on 1)

The method of claim 1, wherein the scheduling of the packet forwarding time includes computing a packet forwarding delay for the at least one data packet.

### Claim 3 (depends on 2)

The method of claim 2, wherein the computing of the packet forwarding delay includes computing a packet reception rate by the receiver.

### Claim 4 (depends on 3)

The method of claim 3, wherein the computing of the packet reception rate includes calculating a difference in acknowledged sequence numbers associated with the at least one data packet.

### Claim 5 (depends on 1)

The method of claim 1, wherein the forwarding of the at least one data packet includes:
based on detecting a lost packet, determining out-of-window packets to be discarded by the receiver; and
retransmitting the out-of-window packets to the receiver before the transmitter times out and retransmits one of the out-of-window packets.

### Claim 6 (depends on 5)

The method of claim 5, wherein the retransmitting of the out-of-window packets includes suppressing forwarding a duplicate acknowledgement (ACK) received from the receiver to the transmitter.

### Claim 7 (depends on 5)

The method of claim 5, wherein the retransmitting of the out-of-window packets includes delaying forwarding an acknowledgement (ACK) received from the receiver to the transmitter.

### Claim 8 (depends on 7)

The method of claim 7, wherein the delaying of the forwarding of the ACK includes increasing an amount of delayed time according to a number of retransmission attempts.

### Claim 9 (depends on 1)

The method of claim 1, wherein the scheduling of the packet forwarding time includes assigning a weight to each data flow, the weight indicating a number of packets to be forwarded for each data flow.

### Claim 10

An apparatus, comprising:
a receiving module to receive at least one data packet from a transmitter connected to a first network;
a scheduling module to schedule a packet forwarding time for the at least one data packet; and
a forwarding module to forward the at least one data packet to a receiver connected to a second network based on the packet forwarding time such that transmission of the at least one data packet prevents a buffer overflow at the receiver, wherein a number of the at least one data packet to be forwarded to the receiver is determined based on amount of buffers freed-up at the receiver and amount of data packets received at the receiver during a round-trip-delay.

### Claim 11 (depends on 10)

The apparatus of claim 10, wherein the scheduling module is configured to compute a packet forwarding delay for the at least one data packet to schedule the packet forwarding time.

### Claim 12 (depends on 11)

The apparatus of claim 11, wherein the scheduling module is configured to compute a packet reception rate by the receiver to compute the packet forwarding delay.

### Claim 13 (depends on 12)

The apparatus of claim 12, wherein the scheduling module is configured to calculate a difference in acknowledged sequence numbers associated with the at least one data packet to compute the packet reception rate.

### Claim 14 (depends on 10)

The apparatus of claim 10, wherein the forwarding module is configured to:
determine out-of-window packets to be discarded by the receiver based on detecting at least one lost packet; and
retransmit the out-of-window packets to the receiver before the transmitter times out and retransmits one of the out-of-window packets.

### Claim 15

The apparatus of 10, wherein the forwarding module is configured to enable suppression of lost events without the need for splitting data flow.

### Claim 16 (depends on 10)

The apparatus of claim 10, wherein the receiver comprises a mobile handset.

### Claim 17 (depends on 10)

The apparatus of claim 10, wherein the scheduling module is configured to allocate channel resources in a round robin manner to forward the at least one data packet.

### Claim 18 (depends on 10)

The apparatus of claim 10, wherein the scheduling module is configured to dynamically adjust a size of a buffer advertized by the receiver based on on-going data flows.

### Claim 19 (depends on 10)

The apparatus of claim 10, wherein the at least one data packet comprises a Transmission Control Protocol (TCP) package.

### Claim 20

A computer-readable non-transitory storage medium storing instructions that, when executed by a processor, cause the processor to perform a method comprising:
receiving at least one data packet from a transmitter connected to a first network;
scheduling a packet forwarding time for the at least one data packet; and
forwarding the at least one data packet to a receiver connected to a second network based on the packet forwarding time such that transmission of the at least one data packet prevents a buffer overflow at the receiver, wherein a number of the at least one data packet to be forwarded to the receiver is determined based on amount of buffers freed-up at the receiver and amount of data packets received at the receiver during a round-trip-delay.
