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 and dynamically controlling the number of data streams utilized. A determination is made of the optimum number of data streams for a particular data file transfer in the early stage of transmission. 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. 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.
-
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)
-
-
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. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
-
Specification