Load balancing and dynamic control of multiple data streams in a network
First Claim
1. A method of transmitting data, comprising:
- initiating transfer of a large data file containing a plurality of segments over a network by transmitting one or more segments of the plurality of segments utilizing a first set of M concurrent data streams, wherein M is one or more, followed by transmitting one or more segments of the plurality of segments utilizing a second set of N concurrent data streams, wherein N>
M+1;
during transmission utilizing the first set of M concurrent data streams, determining individual transmission bandwidths for each concurrent data stream of the first set of M concurrent data streams and a first aggregate transmission bandwidth for the first set of M concurrent data streams;
during transmission utilizing the second set of N concurrent data streams, determining individual transmission bandwidths for each concurrent data stream of the second set of N concurrent data streams and a second aggregate transmission bandwidth for the second set of N concurrent data streams;
comparing the first aggregate transmission bandwidth to the second aggregate transmission bandwidth; and
responsive to a determination that the second aggregate transmission bandwidth is greater than the first aggregate transmission bandwidth by a first predetermined threshold, initiating a third set of Z concurrent data streams to transfer a portion of the large data file, wherein Z>
N.
5 Assignments
0 Petitions
Accused Products
Abstract
Available bandwidth utilization during transfer of large files over a TCP/IP network is improved by load balancing data streams at the initiation of a large data transfer and dynamically controlling the number of data streams utilized as conditions within the infrastructure environment change. Software code running in both the client and the server optimizes the number of data streams utilized for each data transfer. A determination is quickly made of the optimum number of data streams for a particular data file transfer in the early stage of transmission. During the first few seconds of the transfer, an initial number of data streams, which is one unless otherwise specified or determined, is used to transmit one or more file segments, each on a different data stream, immediately followed by a second initial number of data streams, which is at least two greater than the initial number of data streams, is used to transmit another portion of the large data file. During each transmission, individual and aggregate transmission bandwidths are determined. The transfer proceeds with the second number of data streams if its aggregate transmission bandwidth is substantially greater than that of the initial number of data streams. Thereafter, during continuous transfer of the large data file, a weighted average of aggregate transmission bandwidth is periodically determined and compared for the active set of data streams. Responsive to a determination that the latest aggregate transmission bandwidth is significantly different from the previous aggregate transmission bandwidth, the number of data streams is modified as conditions in the infrastructure dictate.
187 Citations
27 Claims
-
1. A method of transmitting data, comprising:
-
initiating transfer of a large data file containing a plurality of segments over a network by transmitting one or more segments of the plurality of segments utilizing a first set of M concurrent data streams, wherein M is one or more, followed by transmitting one or more segments of the plurality of segments utilizing a second set of N concurrent data streams, wherein N>
M+1;
during transmission utilizing the first set of M concurrent data streams, determining individual transmission bandwidths for each concurrent data stream of the first set of M concurrent data streams and a first aggregate transmission bandwidth for the first set of M concurrent data streams;
during transmission utilizing the second set of N concurrent data streams, determining individual transmission bandwidths for each concurrent data stream of the second set of N concurrent data streams and a second aggregate transmission bandwidth for the second set of N concurrent data streams;
comparing the first aggregate transmission bandwidth to the second aggregate transmission bandwidth; and
responsive to a determination that the second aggregate transmission bandwidth is greater than the first aggregate transmission bandwidth by a first predetermined threshold, initiating a third set of Z concurrent data streams to transfer a portion of the large data file, wherein Z>
N. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system for transmitting data, comprising:
-
an originating system;
a receiving system;
a TCP/IP network coupling the originating system and the receiving system;
a first set of M concurrent data streams between the originating system and the receiving system on the network, each transmitting one or more segments of a plurality of segments of a large data file, wherein M is one or more, followed by transmitting one or more segments of the plurality of segments utilizing a second set of N concurrent data streams, wherein N>
M+1;
logic within either the originating system or the receiving system for, during transmission utilizing the first set of M concurrent data streams, determining individual transmission bandwidths for each concurrent data stream of the first set of M concurrent data streams and a first aggregate transmission bandwidth for the first set of M concurrent data streams;
logic within either the originating system or the receiving system for, during transmission utilizing the second set of N concurrent data streams, determining individual transmission bandwidths for each concurrent data stream of the second set of N concurrent data streams and a second aggregate transmission bandwidth for the second set of N concurrent data streams;
logic within either the originating system or the receiving system for comparing the first aggregate transmission bandwidth to the second aggregate transmission bandwidth; and
logic within either the originating system or the receiving system responsive to a determination that the second aggregate transmission bandwidth is greater than the first aggregate transmission bandwidth by a first predetermined threshold by initiating a third set of Z concurrent data streams to transfer a portion of the large data file, wherein Z>
N. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
19. 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 containing a plurality of segments over a network by transmitting one or more segments of the plurality of segments utilizing a first set of M concurrent data streams, wherein M is one or more, followed by transmitting one or more segments of the plurality of segments utilizing a second set of N concurrent data streams, wherein N>
M+1;
during transmission utilizing the first set of M concurrent data streams, determining individual transmission bandwidths for each concurrent data stream of the first set of M concurrent data streams and a first aggregate transmission bandwidth for the first set of M concurrent data streams;
during transmission utilizing the second set of N concurrent data streams, determining individual transmission bandwidths for each concurrent data stream of the second set of N concurrent data streams and a second aggregate transmission bandwidth for the second set of N concurrent data streams;
comparing the first aggregate transmission bandwidth to the second aggregate transmission bandwidth; and
responsive to a determination that the second aggregate transmission bandwidth is greater than the first aggregate transmission bandwidth by a first predetermined threshold, initiating a third set of Z concurrent data streams to transfer a portion of the large data file, wherein Z>
N.
-
Specification