# US 10,320,684 B2 · Method and system for transferring data to improve responsiveness when sending large data sets

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

- Number: US 10,320,684 B2
- Document ID: US10320684B2
- Status: Granted
- Kind: B2
- Application number: 15/652,164
- Filed: 2017-07-17
- Published: 2017-11-02
- Granted: 2019-06-11
- Earliest claimed: 2013-03-15
- Assignees: Pme IP Pty Ltd
- Applicants: Pme IP Pty Ltd.
- Inventors: Detlev Stalling; Malte Westerhoff
- Web page: https://patentgrep.com/patent/US10320684B2

## CPC

- H04L 69/163: In-band adaptation of TCP data exchange; In-band control procedures
- H04L 43/0894: Packet rate
- H04L 47/10: Flow control; Congestion control
- H04L 47/12: Avoiding congestion; Recovering from congestion
- H04L 47/127: by using congestion prediction
- H04L 47/27: Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
- H04L 67/01: Protocols
- H04L 69/04: Protocols for data compression, e.g. ROHC
- H04L 45/121: by minimising delays
- H04L 45/125: based on throughput or bandwidth
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Most of the internet traffic today is carried out via the Transmission Control Protocol (TCP). The main advantage of TCP is that it provides reliable data transfer to the application layer and simplifies programming. The protocol maximizes data throughput but may also lead to noticeable transmission delay in wide area networks (WAN). A client-server based medical image viewing system is disclosed that achieves high data throughput over TCP without impacting responsiveness. Special timestamp messages inserted into the data stream allow the system to detect situations where network latency increases noticeably and to obtain a reliable estimate of sustained transfer bandwidth. The system applies a feedback scheme that avoids network delays by limiting send bandwidth. In addition other parameters, in particular image compression settings, are dynamically adjusted depending on current network quality.

## Claims

### Claim 1

A method comprising:
(a) determining a congestion window comprising:
inserting a first timestamp message into an application level request associated with a first image from a client computer;
transferring the application level request and the first timestamp message to a server;
receiving the first timestamp message at the server, where a first client time is calculated based at least on a time the first timestamp message is received, and calculating a send bandwidth at the server (bsend) in bytes/msec, where the first client time is used to compute bsend;
sending one or more second timestamp messages from the server to the client computer;
receiving the one or more second timestamp messages at the client computer, where a second time (ti) is calculated based at least on one or more times the one or more second timestamp messages are received;
calculating a read bandwidth (bread) in bytes/msec, where bread=C/T, where C (total number of bytes that were sent from server to client)=ci−ci−1, is an amount of data that was sent in a time between a last two second timestamp messages (ci, ci−1), and T=ti−ti−1+di−di−1, where T (server time in msec) is equal to the time elapsed on the server between the last two second timestamp messages (ti−ti−1), where di and di−1 are client times and ti−ti−1 are server times in the last two incoming timestamp messages of the one or more second timestamp messages; and
assigning a congestion window equal to bread when bsend is greater than or equal to 1.3×bread; and
(b) using the congestion window to achieve one or both a high data throughput and a low latency.

### Claim 2 (depends on 1)

The method of claim 1, further comprising determining a running average of bread based on a comparison between two or more second times.

### Claim 3 (depends on 1)

The method of claim 1, further comprising using a bandwidth limit applied on the server to reduce bsend.

### Claim 4 (depends on 3)

The method of claim 3, where the bandwidth limit is computed using a feedback scheme.

### Claim 5 (depends on 4)

The method of claim 4, where the feedback scheme uses a pseudo code.

### Claim 6 (depends on 5)

The method of claim 5, where the pseudo code includes an expression
if (e > emax)
then
if (number of bytes in line > threshold)
then
blimit := max(Factor1 * best, Factor2 * blimit)
end
else
if (bread > Factor3 * blimit)
then
d := Factor4 * blimit * (emax − e)/emax
blimit := blimit + d
end.

### Claim 7 (depends on 1)

The method of claim 1, further comprising assigning a congestion window equal to bread when bsend is greater than or equal to 1.4×bread.

### Claim 8 (depends on 1)

The method of claim 1, further comprising discarding one or more contributions of outliers to bread such that bread does not exceed 2×best.

### Claim 9

A method comprising:
(a) determining a bandwidth limit comprising:
inserting a first timestamp message into an application level request associated with a first image from a client computer;
transferring the application level request and the first timestamp message to a server;
receiving the first timestamp message at the server, where a first client time is calculated based at least on a time the first timestamp message is received, and calculating a send bandwidth at the server (bsend) in bytes/msec, where the first client time is used to compute bsend;
sending one or more second timestamp messages from the server to the client computer;
receiving the one or more second timestamp messages at the client computer, where one or more second times (ti) are calculated based at least on the time the one or more second timestamp messages are received;
calculating a read bandwidth (bread) in bytes/msec, where bread=C/T, where C (total number of bytes that were sent from server to client)=ci−ci−1, is an amount of data that was sent in a time between a last two second timestamp messages (ci, ci−1), and T=ti−ti−1+di−di−1, where T (server time in msec) is equal to the time elapsed on the server between the last two second timestamp messages (ti−ti−1), where di and di−1 are client times and ti−ti−1 are server times in the last two incoming timestamp messages of the one or more second timestamp messages; and
assigning a bandwidth limit equal to sixty (60) percent of bread when delay (e) exceeds 40 msec; and
(b) using the bandwidth limit to limit bsend to achieve one or both a high data throughput and a low latency.

### Claim 10 (depends on 9)

The method of claim 9, further comprising determining a running average of bread based on a comparison between two or more second times.

### Claim 11 (depends on 9)

The method of claim 9, where the bandwidth limit is computed using a feedback scheme.

### Claim 12 (depends on 10)

The method of claim 10, where the feedback scheme uses a pseudo code.

### Claim 13 (depends on 12)

The method of claim 12, further comprising where the pseudo code includes an expression
if (e > emax)
then
if (number of bytes in line > threshold)
then
blimit := max(Factor1 * best, Factor2 * blimit)
end
else
if (bread > Factor3 * blimit)
then
d := Factor4 * blimit * (emax − e)/emax
blimit := blimit + d
end.

### Claim 14 (depends on 9)

The method of claim 9, further comprising increasing the bandwidth limit when e is less than 40 msec.

### Claim 15 (depends on 9)

The method of claim 9, further comprising increasing the bandwidth limit when the amount of data (c−ci) is less than 10 KB.

### Claim 16 (depends on 9)

The method of claim 9, further comprising where the bandwidth limit is reduced by less than fifty (50) percent.

### Claim 17

A method comprising:
(a) determining a bandwidth limit comprising:
inserting a first timestamp message into an application level request associated with a first image from a client computer;
transferring the application level request and the first timestamp message to a server;
receiving the first timestamp message at the server, where a first client time is calculated based at least on a time the first timestamp message is received, and calculating a send bandwidth at the server (bsend) in bytes/msec, where the first client time is used to compute bsend;
sending one or more second timestamp messages from the server to the client computer;
receiving the one or more second timestamp messages at the client computer, where one or more second times (ti) are calculated based at least on the time the one or more second timestamp messages are received;
calculating a read bandwidth (bread) in bytes/msec, where bread=C/T, where C (total number of bytes that were sent from server to client)=ci−ci−1, is an amount of data that was sent in a time between a last two second timestamp messages (ci, ci−1), and T (server time in msec)=ti−ti−1+di−di−1, where di and di−1 are client times and ti−ti−1 are server times in the last two incoming timestamp messages of the one or more second timestamp messages; and
assigning a bandwidth limit equal to sixty (60) percent of bread when delay (e) exceeds
emax
then
if (number of bytes in line > threshold)
then
blimit := max(Factor1 * best, Factor2 * blimit)
end
else
if (bread > Factor3 * blimit)
then
d := Factor4 * blimit * (emax − e)/emax
blimit := blimit + d
end;
and
(b) limiting bsend using the bandwidth limit to achieve one or both a high data throughput and a low latency.

### Claim 18 (depends on 17)

The method of claim 17, further comprising increasing the bandwidth limit when e is less than emax.

### Claim 19 (depends on 17)

The method of claim 17, further comprising increasing the bandwidth limit when the amount of data (c−ci) is less than 10 KB.

### Claim 20 (depends on 17)

The method of claim 17, further comprising where the bandwidth limit is reduced by less than fifty (50) percent.
