# US 10,320,642 B2 · Dynamic TCP proxy selection for acceleration of short network flows

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

- Number: US 10,320,642 B2
- Document ID: US10320642B2
- Status: Granted
- Kind: B2
- Application number: 15/468,416
- Filed: 2017-03-24
- Published: 2018-09-27
- Granted: 2019-06-11
- Earliest claimed: 2017-03-24
- Assignees: NEC Corporation
- Applicants: NEC Europe Ltd.
- Inventors: Roberto Bifulco; Tobias Jacobs
- Web page: https://patentgrep.com/patent/US10320642B2

## CPC

- H04L 43/0864: Round trip delays
- H04L 45/122: by minimising distances, e.g. by selecting a route with minimum of number of hops
- H04L 45/24: Multipath
- H04L 47/00: Traffic control in data switching networks (arrangements for detecting or preventing errors in the information received H04L1/00)
- H04L 69/14: Multichannel or multilink protocols
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method for transmitting, over a transport network, data belonging to a data flow includes creating a proxy network including a plurality of transport network proxies; defining a plurality of proxy pairs; defining a plurality of proxy pair links; determining, for each proxy pair link, a round trip time (RTT) of the respective proxy pair link; determining, using the determined RTTs of the plurality of proxy pair links, a list of one or more preferred paths for each proxy pair, each preferred path connecting, via one or more of the plurality of proxy pair links, one proxy of the respective proxy pair to the other proxy of the respective proxy pair; and transmitting, from an ingress proxy to an egress proxy, the data belonging to the data flow over a proxy pair path selected from the list of preferred proxy pair paths.

## Claims

### Claim 1

A method for transmitting, over a transport network, data belonging to a data flow, the method comprising:
creating a proxy network including a plurality of transport network proxies;
defining a plurality of proxy pairs, each proxy pair including two of the plurality of transport network proxies;
defining a plurality of proxy pair links, each of the plurality of proxy pair links connecting one proxy of a proxy pair to the other proxy of the proxy pair;
determining, for each proxy pair link, a round trip time (RTT) of the respective proxy pair link;
determining, using the determined RTTs of the plurality of proxy pair links, a list of one or more preferred paths for each proxy pair, each preferred path connecting, via one or more of the plurality of proxy pair links, one proxy of the respective proxy pair to the other proxy of the respective proxy pair; and
transmitting, from an ingress proxy selected from the plurality of transport network proxies to an egress proxy selected from the plurality of the transport network proxies, the data belonging to the data flow over a proxy pair path selected from a list of preferred proxy pair paths for the proxy pair including the ingress proxy and the egress proxy,
wherein each preferred path in the list of one or more preferred paths for a particular proxy pair includes a maximum link RTT and a total path RTT,
wherein for each pair of preferred paths for a particular proxy pair, one preferred path of the respective pair of preferred paths has a greater maximum link RTT and a lesser total path RTT as compared to the other preferred path of the respective pair of preferred paths, and
wherein the proxy pair path is selected from the list of preferred proxy paths for the proxy pair including the ingress proxy and the egress proxy based on a flow size of the data flow, the flow size being determined based on one or more of a content length field in an application layer header, statistics generated from past connections to a destination, and information regarding content sizes served by a destination.

### Claim 2 (depends on 1)

The method of claim 1, wherein the plurality of transport network proxies includes a number n of transport network proxies denoted p1, . . . , pn,
wherein the plurality of proxy pairs includes a number m=n(n−1) of proxy pairs denoted (pi, pj) for 1≤i, j≤n;
wherein the plurality of proxy pair links includes the number m of proxy pair links denoted l1, . . . , lm, and
wherein the determining, using the determined RTTs of the plurality of proxy pair links, a list of one or more preferred paths for each proxy pair comprises determining, for each of the proxy pairs denoted (pi, pj), a list of one or more preferred paths.

### Claim 3 (depends on 2)

The method of claim 2, wherein the determining, for each of the proxy pairs denoted (pi, pj), a list of one or more preferred paths, comprises:
ordering the proxy pair links denoted l1, . . . , lm in nondecreasing order of RTT such that d(l1)≤d(lm), wherein d(lh) is the RTT of the proxy pair link lh for h=1, . . . , m; and
determining, for each of the proxy pairs denoted (pi, pj), a list of one or more preferred paths.

### Claim 4 (depends on 3)

The method of claim 3, wherein the determining, for each of the proxy pairs denoted (pi, pj), a list of one or more preferred paths comprises, for each iteration of h=1, . . . , m, determining, if any, a shortest path Li,j,h between proxies pi and pj excluding all links lh+1, . . . , lm.

### Claim 5 (depends on 4)

The method of claim 4, wherein the determining, for each of the proxy pairs denoted (pi, pj), a list of one or more preferred paths further comprises adding, at the end of each iteration h=1, . . . , m, the shortest path Li,j,h to the list of one or more preferred paths if such a shortest path Li,j,h exists and if a path length D(i,j,h) of such a shortest path Li,j,h is shorter than a path length D(i,j,h−1) of a shortest path Li,j,h−1 between proxies pi and pj excluding all links lh, . . . , lm.

### Claim 6 (depends on 5)

The method of claim 5, wherein the determining, if any, a shortest path Li,j,h between proxies pi and pj excluding all links lh+1, . . . , lm comprises:
comparing a shortest path Li,b,h−1 between proxies pi and pb excluding all links lh, . . . , lm with a shortest path Li,a,h−1 between proxies pi and pa excluding all links lh, . . . , lm concatenated with the link lh, wherein the link lh connects proxies pa and pb; and
comparing a shortest path Li,a,h−1 between proxies pi and pa excluding all links lh, . . . , lm with a shortest path Li,b,h−1 between proxies pi and pa excluding all links lh, . . . , lm concatenated with the link lh, wherein the link lh connects proxies pa and pb.

### Claim 7 (depends on 6)

The method of claim 6 further comprising:
if a path length D(i,a,h−1) of the shortest path Li,a,h−1 plus a path length d(lh) of the link lh is shorter than a path length D(i,b,h−1) of the shortest path Li,b,h−1, determining that the shortest path Li,b,h includes the link lh and creating a pointer to i in a list a→b; and
if a path length D(i,b,h−1) of the shortest path Li,b,h−1 plus a path length d(lh) of the link lh is shorter than a path length D(i,a,h−1) of the shortest path Li,a,h−1, determining that the shortest path Li,b,h includes the link lh and creating a pointer to i in a list b→a.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
for each proxy pair (pi,pj) with i in the list a→b and j in the list b→a, comparing a path length D(i,j,h−1) of the shortest path Li,j,h−1 between proxies pi and pj excluding all links lh, . . . , lm with a path length path length D(i,a,h−1)+d(lh)+D(b,j,h−1) of the shortest path Li,a,h−1 between proxies pi and pa excluding all links lh, . . . , lm concatenated with the link lh connecting proxies pa and pb concatenated with the shortest path Lb,j,h−1 between proxies pb and pj excluding all links lh, . . . , lm; and
if the path length path length D(i,a,h−1)+d(lh)+D(b,j,h−1) is less than the path length D(i,j,h−1), adding Li,a,h−1 concatenated with lh concatenated with Lb,j,h−1 to the list of one or more preferred paths as Li,j,h.

### Claim 9 (depends on 1)

The method of claim 1, wherein transport control protocol (TCP) is used for transmitting the data belonging to the data flow over the transport network.

### Claim 10

Non-transitory computer readable media having stored thereon instructions for transmitting, over a transport network, data belonging to a data flow, the instructions comprising instructions for:
creating a proxy network including a plurality of transport network proxies;
defining a plurality of proxy pairs, each proxy pair including two of the plurality of transport network proxies;
defining a plurality of proxy pair links, each of the plurality of proxy pair links connecting one proxy of a proxy pair to the other proxy of the proxy pair;
determining, for each proxy pair link, a round trip time (RTT) of the respective proxy pair link;
determining, using the determined RTTs of the plurality of proxy pair links, a list of one or more preferred paths for each proxy pair, each preferred path connecting, via one or more of the plurality of proxy pair links, one proxy of the respective proxy pair to the other proxy of the respective proxy pair; and
transmitting, from an ingress proxy selected from the plurality of transport network proxies to an egress proxy selected from the plurality of the transport network proxies, the data belonging to the data flow over a proxy pair path selected from a list of preferred proxy pair paths for the proxy pair including the ingress proxy and the egress proxy,
wherein each preferred path in the list of one or more preferred paths for a particular proxy pair includes a maximum link RTT and a total path RTT,
wherein for each pair of preferred paths for a particular proxy pair, one preferred path of the respective pair of preferred paths has a greater maximum link RTT and a lesser total path RTT as compared to the other preferred path of the respective pair of preferred paths, and
wherein the proxy pair path is selected from the list of preferred proxy paths for the proxy pair including the ingress proxy and the egress proxy based on a flow size of the data flow, the flow size being determined based on one or more of a content length field in an application layer header, statistics generated from past connections to a destination, and information regarding content sizes served by a destination.

### Claim 11

A system for transmitting, over a transport network, data belonging to a data flow, the system comprising:
one or more processors configured to:
create a proxy network including a plurality of transport network proxies;
define a plurality of proxy pairs, each proxy pair including two of the plurality of transport network proxies;
define a plurality of proxy pair links, each of the plurality of proxy pair links connecting one proxy of a proxy pair to the other proxy of the proxy pair;
determine, for each proxy pair link, a round trip time (RTT) of the respective proxy pair link;
determine, using the determined RTTs of the plurality of proxy pair links, a list of one or more preferred paths for each proxy pair, each preferred path connecting, via one or more of the plurality of proxy pair links, one proxy of the respective proxy pair to the other proxy of the respective proxy pair; and
transmit, from an ingress proxy selected from the plurality of transport network proxies to an egress proxy selected from the plurality of the transport network proxies, the data belonging to the data flow over a proxy pair path selected from a list of preferred proxy pair paths for the proxy pair including the ingress proxy and the egress proxy,
wherein each preferred path in the list of one or more preferred paths for a particular proxy pair includes a maximum link RTT and a total path RTT,
wherein for each pair of preferred paths for a particular proxy pair, one preferred path of the respective pair of preferred paths has a greater maximum link RTT and a lesser total path RTT as compared to the other preferred path of the respective pair of preferred paths, and
wherein the proxy pair path is selected from the list of preferred proxy paths for the proxy pair including the ingress proxy and the egress proxy based on a flow size of the data flow, the flow size being determined based on one or more of a content length field in an application layer header, statistics generated from past connections to a destination, and information regarding content sizes served by a destination.
