IP Library Granted Patent US 7,616,585
Granted Patent B1
US 7,616,585 · App. 11/364,050 · Granted Nov 10, 2009

Preventing network micro-congestion using send pacing based on end-to-end bandwidth

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 7,616,585
App. No.
11/364,050
Granted
Nov 10, 2009
Kind
B1
Abstract

A system for preventing network micro-congestion using send pacing based on end-to-end bandwidth. The system includes one or more processors and memory coupled to the processors, wherein the memory contains program instructions executable by the processors to obtain an estimate of end-to-end network bandwidth available to a particular application-level data transfer operation in progress over a network between a first endpoint and a second endpoint. Based at least in part on the estimate of end-to-end bandwidth, the instructions are further executable to introduce a delay between transmissions of two or more successive messages or packets of the particular application-level data transfer operation from the first endpoint.

Claims (43)

1. A system, comprising:

one or more processors; and

memory coupled to the one or more processors, wherein the memory comprises program instructions executable by the one or more processors to:

obtain an estimate of end-to-end network bandwidth available to a particular application-level data transfer operation in progress over a network between a first endpoint and a second endpoint; and

introduce, based at least in part on the estimate of end-to-end network bandwidth available, a delay between transmissions of two or more successive messages of the particular application-level data transfer operation from the first endpoint to the second endpoint.

2. The system as recited in claim 1 , wherein the instructions are further executable to:

compute, based at least in part on the estimate of end-to-end network bandwidth available, a duration of the delay.

3. The system as recited in claim 1 , wherein the delay is introduced between a transmission of two or more successive messages from a user-mode software layer to a kernel-mode software layer.

4. The system as recited in claim 1 , wherein the delay is introduced between a transmission of two or more successive messages from a network adapter driver software layer to a hardware network adapter.

5. The system as recited in claim 1 , wherein the estimate of end-to-end network bandwidth is obtained using user-mode software instrumentation without modifying a standard networking software stack, wherein the user-mode software instrumentation comprises an inclusion of a timestamp in a network packet of the application-level data transfer, wherein the network packet comprises a header portion and a data portion, wherein the header portion is formatted in accordance with a standard networking protocol, and wherein the timestamp is included in the data portion.

6. The system as recited in claim 5 , wherein the user-mode software instrumentation comprises an inclusion of an identification of the particular application-level data transfer operation in the data portion of the network packet.

7. The system as recited in claim 1 , wherein the instructions are further executable to:

obtain a plurality of estimates of end-to-end network bandwidth available to the particular application-level data transfer operation in progress, wherein each of the plurality of estimates corresponds to a different point in time;

identify a trend in the estimates of end-to-end network bandwidth available for the particular application-level data transfer operation over a time period using the plurality of estimates; and

adjust, based at least in part on the trend, delays between transmissions of two or more successive messages of the particular application-level data transfer operation from the first endpoint.

8. The system as recited in claim 1 , wherein the application-level data transfer operation is performed on behalf of a storage management application.

9. The system as recited in claim 1 , wherein the application-level data transfer operation is performed on behalf of a telecommunication application.

10. The system as recited in claim 1 , wherein the first endpoint is linked via the network to a plurality of receiver endpoints including a first receiver endpoint and a second receiver endpoint, wherein the first endpoint is linked to the first receiver endpoint via a first network connection to perform a first application-level data transfer operation, wherein the first endpoint is linked to the second receiver endpoint via a second network connection to perform a second application-level data transfer operation, wherein the instructions are further executable to:

obtain a first estimate of end-to-end network bandwidth available to the first application-level data transfer operation over the first connection;

obtain a second estimate of end-to-end network bandwidth available to the second application-level data transfer operation over the second connection;

introduce, based at least in part on the first estimate, a first delay between transmissions of two or more successive messages of the first application-level data transfer operation from the first endpoint; and

introduce, based at least in part on the second estimate, a second delay between transmissions of two or more successive messages of the second application-level data transfer operation from the first endpoint, wherein the first delay differs from the second delay.

11. A computer-implemented method, comprising:

a computer system performing:

obtaining an estimate of end-to-end network bandwidth available to a particular application-level data transfer operation in progress over a network between a first endpoint and a second endpoint; and

introducing, based at least in part on the estimate of end-to-end network bandwidth available, a delay between transmissions of two or more successive messages of the particular application-level data transfer operation from the first endpoint to the second endpoint.

12. The method as recited in claim 11 , wherein the delay is introduced between a transmission of two or more successive messages from a user-mode software layer to a kernel-mode software layer.

13. The method as recited in claim 11 , wherein the delay is introduced between a transmission of two or more successive messages from a network adapter driver software layer to a hardware network adapter.

14. The method as recited in claim 11 , wherein said obtaining the estimate of the end-to-end network bandwidth comprises using user-mode software instrumentation without modifying a standard networking software stack, wherein the user-mode software instrumentation comprises an inclusion of a timestamp in a network packet of the application-level data transfer, wherein the network packet comprises a header portion and a data portion, wherein the header portion is formatted in accordance with a standard networking protocol, and wherein the timestamp is included in the data portion.

15. The method as recited in claim 11 , further comprising:

obtaining a plurality of estimates of end-to-end network bandwidth available to the particular application-level data transfer operation in progress, wherein each of the plurality of estimates corresponds to a different point in time;

identifying a trend in the estimates of end-to-end network bandwidth available for the particular application-level data transfer operation over a time period using the plurality of estimates; and

adjusting, based at least in part on the trend, delays between transmissions of two or more successive messages of the particular application-level data transfer operation from the first endpoint.

16. A tangible, computer-readable medium comprising program instructions, wherein the instructions are computer-executable to:

obtain an estimate of end-to-end network bandwidth available to a particular application-level data transfer operation in progress over a network between a first endpoint and a second endpoint; and

introduce, based at least in part on the estimate of end-to-end network bandwidth available, a delay between transmissions of two or more successive messages of the particular application-level data transfer operation from the first endpoint to the second endpoint.

17. The computer readable medium as recited in claim 16 , wherein the delay is introduced between a transmission of two or more successive messages from a user-mode software layer to a kernel-mode software layer.

18. The computer readable medium as recited in claim 16 , wherein the delay is introduced between a transmission of two or more successive messages from a network adapter driver software layer to a hardware network adapter.

19. The computer readable medium as recited in claim 16 , wherein the estimate of the end-to-end network bandwidth is obtained using user-mode software instrumentation without modifying a standard networking software stack, wherein the user-mode software instrumentation comprises an inclusion of a timestamp in a network packet of the application-level data transfer, wherein the network packet comprises a header portion and a data portion, wherein the header portion is formatted in accordance with a standard networking protocol, and wherein the timestamp is included in the data portion.

20. The computer readable medium as recited in claim 16 , wherein the instructions are further executable to:

obtain a plurality of estimates of end-to-end network bandwidth available to the particular application-level data transfer operation in progress, wherein each of the plurality of estimates corresponds to a different point in time;

identify a trend in the estimates of end-to-end network bandwidth available for the particular application-level data transfer operation over a time period using the plurality of estimates; and

adjust, based at least in part on the trend, delays between transmissions of two or more successive messages of the particular application-level data transfer operation from the first endpoint.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: SYMANTEC CORPORATION
To: CA, INC.
Reel/Frame 051144/0918 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2015
From: SYMANTEC OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 036199/0642 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 019872 FRAME 979. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNEE IS SYMANTEC OPERATING CORPORATION. Recorded Mar 5, 2012
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 027819/0462 →
CHANGE OF NAME Recorded Sep 26, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 019872/0979 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2006
From: KRITOV, SLAVA; VAN RIETSCHOTE, HANS F.
To: VERITAS OPERATING CORPORATION
Reel/Frame 017642/0264 →