IP Library Granted Patent US 9,503,384
Granted Patent B1
US 9,503,384 · App. 14/525,036 · Granted Nov 22, 2016

Estimating network capacity and network bandwidth without server instrumentation

Inventors: Ricardo V. Oliveira (San Francisco, CA); Joao Antunes (San Francisco, CA)
Assignee: ThousandEyes, Inc.
H04L47/36H04L43/0876
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,503,384
App. No.
14/525,036
Granted
Nov 22, 2016
Kind
B1
Abstract

Accordingly, techniques for estimating network capacity of a path between two endpoints in a network without server instrumentation are disclosed. Techniques for estimating network bandwidth of a path between two endpoints in a network without server instrumentation are also disclosed. For example, techniques disclosed herein can be used for network capacity planning. As another example, techniques disclosed herein can be used for network availability troubleshooting (e.g., network degradation performance issues).

Claims (71)

1. A system for estimating network capacity without server instrumentation, comprising:

a processor configured to:

send a burst of packets from a client to a server on a path in a network, wherein the burst of packets comprises a plurality of probe packets;

receive a plurality of acknowledgement packets from the server in response to the plurality of probe packets; and

determine a capacity estimate for the path in the network, wherein determine the capacity estimate for the path in the network comprises:

match up the plurality of acknowledgement packets that the client received from the server with the plurality of probe packets that the client sent to the server;

measure Δt′, wherein Δt′ measures a difference in a time (t1′) that a first acknowledge packet is received at the client from the server and a time (tN′) that a last acknowledge packet is received at the client from the server, wherein the t1′ time and the tN′ time are measured using a local clock of the client; and

estimate the capacity for the path in the network by calculating a total number of the probe packets that received a matching acknowledgement packet times a size of each of the probe packets divided by Δt′, wherein the size of each of the plurality of probe packets is equal to a Maximum Transmission Unit (MTU) size for the path in the network; and

a memory coupled to the processor and configured to provide the processor with instructions.

2. The system recited in claim 1 , wherein determine the capacity estimate for the path in the network further comprises:

determine whether Δt′ exceeds a jitter for the path in the network by a threshold value; and

if Δt′ fails to exceed the jitter for the path in the network by the threshold value, then send another burst of packets that includes a greater number of packets than the initially sent burst of packets.

3. The system recited in claim 1 , wherein the processor is further configured to:

generate a display output that includes the capacity estimate for the path in the network.

4. The system recited in claim 1 , wherein the server supports a TCP Selective Acknowledgements (SACK) option, wherein the plurality of probe packets comprise a plurality of TCP data packets, wherein the plurality of acknowledgement packets comprise TCP ACK packets that are sent from the server in response to the plurality of TCP data packets, and wherein the TCP SACK option is used to facilitate the matching up the TCP data packets with SYN-ACK packets.

5. The system recited in claim 1 , wherein the plurality of probe packets comprise TCP SYN packets, wherein the plurality of acknowledgement packets comprise TCP SYN-ACK packets that are sent from the server in response to TCP SYN packets, and wherein the TCP SYN packets are matched up with the TCP SYN-ACK packets using a 4-tuple comprising a source IP address, a destination IP address, a source port, and destination port associated with each of the TCP SYN packets and each of the TCP SYN-ACK packets.

6. The system recited in claim 1 , wherein the plurality of probe packets comprise TCP SYN packets, wherein the plurality of acknowledgement packets comprise TCP RST packets that are sent from the server in response to TCP SYN packets, and wherein the TCP SYN packets are matched up with the TCP RST packets using a 4-tuple comprising a source IP address, a destination IP address, a source port, and destination port associated with each of the TCP SYN packets and each of the TCP RST packets.

7. A method of estimating network capacity without server instrumentation, comprising:

sending a burst of packets from a client to a server on a path in a network, wherein the burst of packets comprises a plurality of probe packets;

receiving a plurality of acknowledgement packets from the server in response to the plurality of probe packets; and

determining a capacity estimate for the path in the network, wherein determining the capacity estimate for the path in the network comprises:

matching up the plurality of acknowledgement packets that the client received from the server with the plurality of probe packets that the client sent to the server;

measuring Δt′, wherein Δt′ measures a difference in a time (t1′) that a first acknowledge packet is received at the client from the server and a time (tN′) that a last acknowledge packet is received at the client from the server, wherein the t1′ time and the tN′ time are measured using a local clock of the client; and

estimating the capacity for the path in the network by calculating a total number of the probe packets that received a matching acknowledgement packet times a size of each of the probe packets divided by Δt′, wherein the size of each of the plurality of probe packets is equal to a Maximum Transmission Unit (MTU) size for the path in the network.

8. The method of claim 7 , wherein determining the capacity estimate for the path in the network further comprises:

determining whether Δt′ exceeds a jitter for the path in the network by a threshold value; and

if Δt′ fails to exceed the jitter for the path in the network by the threshold value, then sending another burst of packets that includes a greater number of packets than the initially sent burst of packets.

9. The method of claim 7 , wherein the server supports a TCP Selective Acknowledgements (SACK) option, wherein the plurality of probe packets comprise a plurality of TCP data packets, wherein the plurality of acknowledgement packets comprise TCP ACK packets that are sent from the server in response to the plurality of TCP data packets, and wherein the TCP SACK option is used to facilitate the matching up the TCP data packets with SYN-ACK packets.

10. The method of claim 7 , wherein the plurality of probe packets comprise TCP SYN packets, wherein the plurality of acknowledgement packets comprise TCP SYN-ACK packets that are sent from the server in response to TCP SYN packets, and wherein the TCP SYN packets are matched up with the TCP SYN-ACK packets using a 4-tuple comprising a source IP address, a destination IP address, a source port, and destination port associated with each of the TCP SYN packets and each of the TCP SYN-ACK packets.

11. The method of claim 7 , wherein the plurality of probe packets comprise TCP SYN packets, wherein the plurality of acknowledgement packets comprise TCP RST packets that are sent from the server in response to TCP SYN packets, and wherein the TCP SYN packets are matched up with the TCP RST packets using a 4-tuple comprising a source IP address, a destination IP address, a source port, and destination port associated with each of the TCP SYN packets and each of the TCP RST packets.

12. A computer program product for estimating network capacity without server instrumentation, the computer program product being embodied in a non-transitory tangible computer readable storage medium and comprising computer instructions for:

sending a burst of packets from a client to a server on a path in a network, wherein the burst of packets comprises a plurality of probe packets;

receiving a plurality of acknowledgement packets from the server in response to the plurality of probe packets; and

determining a capacity estimate for the path in the network, wherein determining the capacity estimate for the path in the network comprises:

matching up the plurality of acknowledgement packets that the client received from the server with the plurality of probe packets that the client sent to the server;

measuring Δt′, wherein Δt′ measures a difference in a time (t1′) that a first acknowledge packet is received at the client from the server and a time (tN′) that a last acknowledge packet is received at the client from the server, wherein the t1′ time and the tN′ time are measured using a local clock of the client; and

estimating the capacity for the path in the network by calculating a total number of the probe packets that received a matching acknowledgement packet times a size of each of the probe packets divided by Δt′, wherein the size of each of the plurality of probe packets is equal to a Maximum Transmission Unit (MTU) size for the path in the network.

13. The computer program product recited in claim 12 , wherein the server supports a TCP Selective Acknowledgements (SACK) option, wherein the plurality of probe packets comprise a plurality of TCP data packets, wherein the plurality of acknowledgement packets comprise TCP ACK packets that are sent from the server in response to the plurality of TCP data packets, and wherein the TCP SACK option is used to facilitate the matching up the TCP data packets with SYN-ACK packets.

14. The computer program product recited in claim 12 , wherein the plurality of probe packets comprise TCP SYN packets, wherein the plurality of acknowledgement packets comprise TCP SYN-ACK packets that are sent from the server in response to TCP SYN packets, and wherein the TCP SYN packets are matched up with the TCP SYN-ACK packets using a 4-tuple comprising a source IP address, a destination IP address, a source port, and destination port associated with each of the TCP SYN packets and each of the TCP SYN-ACK packets.

15. The computer program product recited in claim 12 , wherein the plurality of probe packets comprise TCP SYN packets, wherein the plurality of acknowledgement packets comprise TCP RST packets that are sent from the server in response to TCP SYN packets, and wherein the TCP SYN packets are matched up with the TCP RST packets using a 4-tuple comprising a source IP address, a destination IP address, a source port, and destination port associated with each of the TCP SYN packets and each of the TCP RST packets.

16. A system for estimating network bandwidth without server instrumentation, comprising:

a processor configured to:

send a train of packets from a client to a server on a path in a network, wherein the train of packets comprises a plurality of probe packets of a Maximum Transmission Unit (MTU) size, wherein the train of packets is sent from the client to the server at a rate of Sx, and wherein Smin is initially set to equal zero;

receive a plurality of acknowledgement packets from the server in response to the plurality of probe packets; and

determine an available bandwidth estimate for the path in the network from the server to the client, wherein determine the available bandwidth estimate for the path in the network from the server to the client comprises:

calculate a dispersion rate (Rx) measured at the client;

determine whether Rx equals Sx, and if so, update Smin to be set to equal Rx, and if not, then update Smax to be set to equal Rx;

update an estimation window to be set to equal (Smax−Smin)/capacity, wherein the capacity is a capacity estimate for the path in the network;

if an estimation window is less than a threshold value, then return the available bandwidth estimate for the path in the network, wherein the available bandwidth is calculated to equal (Smax−Smin)/2; and

if the estimation window is not less than the threshold value, update Sx to be set to equal (Smax−Smin)/2 and send another train of packets from the client to the server on the path in the network at the updated Sx rate; and

a memory coupled to the processor and configured to provide the processor with instructions.

17. The system recited in claim 16 , wherein the processor is further configured to:

generate a display output that includes the available bandwidth estimate for the path in the network.

18. A method of estimating network bandwidth without server instrumentation, comprising:

sending a train of packets from a client to a server on a path in a network, wherein the train of packets comprises a plurality of probe packets of a Maximum Transmission Unit (MTU) size, wherein the train of packets is sent from the client to the server at a rate of Sx, and wherein Smin is initially set to equal zero;

receiving a plurality of acknowledgement packets from the server in response to the plurality of probe packets; and

determining an available bandwidth estimate for the path in the network from the server to the client, wherein determining the available bandwidth estimate for the path in the network from the server to the client comprises:

calculating a dispersion rate (Rx) measured at the client;

determining whether Rx equals Sx, and if so, update Smin to be set to equal Rx, and if not, then updating Smax to be set to equal Rx;

updating an estimation window to be set to equal (Smax−Smin)/capacity, wherein the capacity is a capacity estimate for the path in the network;

if an estimation window is less than a threshold value, then returning the available bandwidth estimate for the path in the network, wherein the available bandwidth is calculated to equal (Smax−Smin)/2; and

if the estimation window is not less than the threshold value, updating Sx to be set to equal (Smax−Smin)/2 and sending another train of packets from the client to the server on the path in the network at the updated Sx rate.

19. A computer program product for estimating network bandwidth without server instrumentation, the computer program product being embodied in a non-transitory tangible computer readable storage medium and comprising computer instructions for:

sending a train of packets from a client to a server on a path in a network, wherein the train of packets comprises a plurality of probe packets of a Maximum Transmission Unit (MTU) size, wherein the train of packets is sent from the client to the server at a rate of Sx, and wherein Smin is initially set to equal zero;

receiving a plurality of acknowledgement packets from the server in response to the plurality of probe packets; and

determining an available bandwidth estimate for the path in the network from the server to the client, wherein determining the available bandwidth estimate for the path in the network from the server to the client comprises:

calculating a dispersion rate (Rx) measured at the client;

determining whether Rx equals Sx, and if so, update Smin to be set to equal Rx, and if not, then updating Smax to be set to equal Rx;

updating an estimation window to be set to equal (Smax−Smin)/capacity, wherein the capacity is a capacity estimate for the path in the network;

if an estimation window is less than a threshold value, then returning the available bandwidth estimate for the path in the network, wherein the available bandwidth is calculated to equal (Smax−Smin)/2; and

if the estimation window is not less than the threshold value, updating Sx to be set to equal (Smax−Smin)/2 and sending another train of packets from the client to the server on the path in the network at the updated Sx rate.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2021
From: THOUSANDEYES LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 056348/0993 →
CHANGE OF NAME Recorded Nov 18, 2020
From: THOUSANDEYES, INC.
To: THOUSANDEYES LLC
Reel/Frame 054476/0337 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 8, 2015
From: OLIVEIRA, RICARDO V.; ANTUNES, JOAO
To: THOUSANDEYES, INC.
Reel/Frame 034663/0580 →
Continuity (1)
Provisional Application 61896465 · Oct 28, 2013