Internet backbone bandwidth enhancement by initiating an additional data stream when individual bandwidth are approximately equal to the backbone limit
First Claim
1. A method of transmitting data, comprising:
- initiating transfer of a large data file over a network utilizing an initial number of concurrent data streams;
during transmission of the data file utilizing the initial number of concurrent data streams, determining individual transmission bandwidths for each of the initial number of concurrent data streams and an aggregate bandwidth for all of the concurrent data streams;
comparing the individual transmission bandwidths to a backbone limit; and
responsive to determining that the individual transmission bandwidths are approximately equal to the backbone limit, initiating an additional concurrent data stream to transfer a portion of the data file.
3 Assignments
0 Petitions
Accused Products
Abstract
Available bandwidth utilization during transfer of large files over a TCP/IP network, is improved by segmenting the file and concurrently transmitting portions in an optimal number of logical distinct data streams which may all utilize a single physical medium and communications path. An initial number of data streams, is used to begin transmission of segments, each on a different data stream. During the first seconds of the transfer, individual and aggregate transmission bandwidths are determined, together with a backbone limit computed from the sliding window and round trip times. If the individual transmission bandwidths are approximately equal to the backbone limit, additional data stream(s) and segment(s) are started. Individual and aggregate transmission bandwidths are again determined, and the process is repeated until no substantial increase in aggregate bandwidth is achieved by adding an additional data stream. Aggregate transmission bandwidths are checked upon completion of each segment to determine if a data stream should be terminated.
134 Citations
31 Claims
-
1. A method of transmitting data, comprising:
-
initiating transfer of a large data file over a network utilizing an initial number of concurrent data streams;
during transmission of the data file utilizing the initial number of concurrent data streams, determining individual transmission bandwidths for each of the initial number of concurrent data streams and an aggregate bandwidth for all of the concurrent data streams;
comparing the individual transmission bandwidths to a backbone limit; and
responsive to determining that the individual transmission bandwidths are approximately equal to the backbone limit, initiating an additional concurrent data stream to transfer a portion of the data file. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
initiating transfer of the data file utilizing a single data stream.
-
-
3. The method of claim 1, wherein the step of initiating transfer of a large data file over a network utilizing an initial number of concurrent data streams further comprises:
initiating transfer of the data file utilizing more than one data stream.
-
4. The method of claim 1, wherein the step of comparing the individual transmission bandwidths to a backbone limit further comprises:
-
determining a ping time; and
computing the backbone limit utilizing a sliding window setting and the ping time.
-
-
5. The method of claim 1, wherein the step of determining individual transmission bandwidths for each of the initial number of concurrent data streams and an aggregate bandwidth for all of the concurrent data streams further comprises:
-
computing the individual transmission bandwidths from byte counts and clock times; and
computing the aggregate transmission bandwidth by summing the individual transmission bandwidths.
-
-
6. The method of claim 1, further comprising:
-
(a) transmitting the data file by concurrently utilizing a number of active data streams equal to the initial number plus one;
(b) during transmission of the data file utilizing the active data streams, determining individual transmission bandwidths for each active data stream and an aggregate bandwidth for all of the active data streams;
(c) determining whether the individual transmission bandwidths are approximately equal to the backbone limit;
(d) determining whether the aggregate bandwidth for all active data streams is substantially greater than the aggregate bandwidth for all of a prior number of active data streams; and
(e) responsive to determining that the aggregate bandwidth for all active data streams is substantially greater than the aggregate bandwidth for all of the prior number of active data streams and that the individual transmission bandwidths are approximately equal to the backbone limit, initiating another data stream and transmitting an additional segment of the file over the other data stream.
-
-
7. The method of claim 6, further comprising:
repeating steps (a) through (e) until the aggregate bandwidth for all active data streams is not substantially greater than the aggregate bandwidth for all of the prior number of active data streams.
-
8. The method of claim 6, further comprising:
-
determining a specified maximum data stream count from a system originating the large data file; and
repeating steps (a) through (e) until either the aggregate bandwidth for all active data streams is not substantially greater than the aggregate bandwidth for all of the prior number of active data streams or the maximum data steam count is reached.
-
-
9. The method of claim 1, further comprising:
-
upon completion of transmission of a file segment over a data stream, pausing the data stream;
during transmission of file segments over only the remaining data streams, determining whether an aggregate bandwidth for all remaining data streams rose to approximately equal the aggregate bandwidth for all active data streams prior to completion of transmission of the file segment;
responsive to determining that the aggregate bandwidth for all remaining data streams did not rise to approximately equal the aggregate bandwidth for all active data streams prior to completion of transmission of the file segment, beginning transmission of another file segment over the data stream; and
responsive to determining that the aggregate bandwidth for all remaining data streams rose to approximately equal the aggregate bandwidth for all active data streams prior to completion of transmission of the file segment, terminating the data stream.
-
-
10. The method of claim 1, further comprising:
-
prior to or while initiating transfer of the data file, logically dividing the data file into segments for concurrent transmission over the data streams; and
concurrently transmitting a segment of the data file over each data stream.
-
-
11. The method of claim 10, wherein the step of logically dividing the data file into segments for concurrent transmission over the data streams further comprises:
segmenting the data file based on a factorial of a maximum number of data streams.
-
12. The method of claim 10, further comprising:
after receiving all segments of the data file, assembling the segments of the data file to reproduce the data file.
-
13. The method of claim 1, further comprising:
-
reading historic bandwidth records for transfers between a receiving system and an originating system between which the large data file is being transferred; and
setting the initial number of concurrent data streams based upon the historic bandwidth records.
-
-
14. The method of claim 1, further comprising:
utilizing at least one of ping time, current bandwidth utilization measurements, recent transmission histories, current server loading, and current client loading to determine an optimal number of data streams for transfer of the large data file.
-
15. The method of claim 14, further comprising:
determining the optimal number of data streams for transfer of the large data file utilizing fuzzy logic, artificial intelligence, or an expert system.
-
16. The method of claim 1, further comprising:
integrating identification authentication, message integrity verification, or encryption into transfer of the large data file.
-
17. The method of claim 1, further comprising:
integrating a purchase, registration, configuration, or a key request into transfer of the large data file.
-
18. A system for transmitting data, comprising:
-
an originating system;
a receiving system;
a TCP/IP network coupling the originating system and the receiving system;
an initial number of concurrent data streams between the originating system and the receiving system on the network each transmitting a segment of a large data file;
logic within either the originating system or the receiving system for determining individual transmission bandwidths for each of the initial number of concurrent data streams and an aggregate bandwidth for all of the concurrent data streams during transmission of the data file utilizing the initial number of concurrent data streams;
logic within either the originating system or the receiving system for comparing the individual transmission bandwidths to a backbone limit; and
logic within either the originating system or the receiving system for initiating an additional concurrent data stream to transfer a portion of the data file responsive to determining that the individual transmission bandwidths are approximately equal to the backbone limit. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
logic initiating transfer of the data file utilizing a single data stream.
-
-
20. The system of claim 18, wherein the logic for initiating transfer of a large data file over a TCP/IP network utilizing an initial number of concurrent data streams further comprises:
initiating transfer of the data file utilizing more than one data stream.
-
21. The system of claim 18, wherein the logic for comparing the individual transmission bandwidths to a backbone limit further comprises:
-
logic determining a ping time; and
logic computing the backbone limit utilizing a sliding window setting.
-
-
22. The system of claim 18, wherein the logic for determining individual transmission bandwidths for each of the initial number of concurrent data streams and an aggregate bandwidth for all of the concurrent data streams further comprises:
-
logic computing the individual transmission bandwidths from byte counts and clock times; and
logic computing the aggregate transmission bandwidth by summing the individual transmission bandwidths.
-
-
23. The system of claim 18, further comprising logic for performing the steps of:
-
(a) transmitting the data file by concurrently utilizing a number of active data streams equal to the initial number plus one;
(b) during transmission of the data file utilizing the active data streams, determining individual transmission bandwidths for each active data stream and an aggregate bandwidth for all of the active data streams;
(c) determining whether the individual transmission bandwidths are approximately equal to the backbone limit;
(d) determining whether the aggregate bandwidth for all active data streams is substantially greater than the aggregate bandwidth for all of a prior number of active data streams; and
(e) responsive to determining that the aggregate bandwidth for all active data streams is substantially greater than the aggregate bandwidth for all of the prior number of active data streams and that the individual transmission bandwidths are approximately equal to the backbone limit, initiating another data stream and transmitting an additional segment of the file over the other data stream.
-
-
24. The system of claim 23, further comprising:
logic repeating steps (a) through (e) until the aggregate bandwidth for all active data streams is not substantially greater than the aggregate bandwidth for all of the prior number of active data streams.
-
25. The system of claim 23, further comprising:
-
logic determining a specified maximum data stream count from a system originating the large data file; and
logic repeating steps (a) through (e) until either the aggregate bandwidth for all active data streams is not substantially greater than the aggregate bandwidth for all of the prior number of active data streams or the maximum data steam count is reached.
-
-
26. The system of claim 18, further comprising:
-
logic pausing a data stream upon completion of transmission of a file segment over that data stream;
logic determining, during transmission of file segments over only the remaining data streams, whether an aggregate bandwidth for all remaining data streams rose to approximately equal the aggregate bandwidth for all active data streams prior to completion of transmission of the file segment;
logic beginning transmission of another file segment over the data stream in response to determining that the aggregate bandwidth for all remaining data streams did not rise to approximately equal the aggregate bandwidth for all active data streams prior to completion of transmission of the file segment; and
logic terminating the data stream in response to determining that the aggregate bandwidth for all remaining data streams rose to approximately equal the aggregate bandwidth for all active data streams prior to completion of transmission of the file segment.
-
-
27. The system of claim 18, further comprising:
-
logic dividing the data file into logical segments for concurrent transmission over the data streams prior to or while initiating transfer of the data file; and
logic concurrently transmitting a segment of the data file over each data stream.
-
-
28. The system of claim 27, wherein the logic dividing the data file into logical segments for concurrent transmission over the data streams further comprises:
logic segmenting the data file based on a factorial of a maximum number of data streams.
-
29. The system of claim 27, further comprising:
logic assembling the segments of the data file at the receiving system to reproduce the data file after receiving all segments of the data file.
-
30. The system of claim 18, further comprising:
-
logic reading historic bandwidth records for transfers between a receiving system and an originating system between which the large data file is being transferred; and
logic setting the initial number of concurrent data streams based upon the historic bandwidth records.
-
-
31. An article of manufacture for use in transmitting data, the article of manufacture comprising computer readable storage media including program logic embedded therein that causes control circuitry to perform the steps of:
-
initiating transfer of a large data file over a TCP/IP network utilizing an initial number of concurrent data streams;
during transmission of the data file utilizing the initial number of concurrent data streams, determining individual transmission bandwidths for each of the initial number of concurrent data streams and an aggregate bandwidth for all of the concurrent data streams;
comparing the individual transmission bandwidths to a backbone limit; and
responsive to determining that the individual transmission bandwidths are approximately equal to the backbone limit, initiating an additional concurrent data stream to transfer a portion of the data file.
-
Specification