System and method for flow control in an adaptive file delivery system
First Claim
1. A system to transmit a data file made up of a plurality of file segments from a sending system to a receiving computing system, comprising:
- a hardware data storage element configured to store the data file to be transmitted to the receiving computing system;
a hardware network interface communicatively coupled to the data storage element and configured to receive the data file therefrom, the network interface being further configured to transmit the plurality of data file segments to the receiving system via a communications network having a communication path extending from the sending system to the receiving system; and
a network interface controller configured to control transmission of the plurality of file segments to the receiving system via the network interface, the network interface controller being configured to receive a request for the transmission of an additional file segment from the receiving computer system upon expiration of a dynamically alterable wait period between transmission of individual ones of the plurality of file segments based on a level of network congestion in the communication path.
1 Assignment
0 Petitions
Accused Products
Abstract
An adaptive file delivery system and method transmits a data file, such as an audio-video file, over a network or collection of networks in segments, each segment transmitted during a different time period. Each time period has a transmission portion to transmit its associated file segment and a wait portion in which no further interaction with the network occurs regarding the transmitted segment. In some implementations, the duration of the transmission portion of each time period is sufficient to reach a steady-state throughput condition, which allows the traffic load status of the network or networks to be determined from rate measurements of file segment transmissions. The duration of the wait portion of each time period is at least long enough to limit the average rate of file segment transmission to adapt to network traffic load variations and avoid network congestion. Various techniques for measuring congestion are described.
-
Citations
34 Claims
-
1. A system to transmit a data file made up of a plurality of file segments from a sending system to a receiving computing system, comprising:
-
a hardware data storage element configured to store the data file to be transmitted to the receiving computing system; a hardware network interface communicatively coupled to the data storage element and configured to receive the data file therefrom, the network interface being further configured to transmit the plurality of data file segments to the receiving system via a communications network having a communication path extending from the sending system to the receiving system; and a network interface controller configured to control transmission of the plurality of file segments to the receiving system via the network interface, the network interface controller being configured to receive a request for the transmission of an additional file segment from the receiving computer system upon expiration of a dynamically alterable wait period between transmission of individual ones of the plurality of file segments based on a level of network congestion in the communication path. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for transferring a file from a sending system to a receiving system, comprising:
-
sending a file made up of a plurality of file segments from the sending system along a file transmission path, the file transmission path extending from the sending system to the receiving system, the sending of the file including sending the file segments by a plurality of transmissions spaced out in time with a dynamically alterable wait period occurring after the transmission of each of the plurality of file segments; determining a congestion level along the file transmission path; the receiving system controlling the transmission of subsequent file segments by determining the wait period based on the determined congestion level, waiting for the expiration of the wait period, and, upon expiration of the wait period, transmitting a request to the sending system for an additional one of the subsequent file segments; and the sending system sending the additional one of the subsequent file segments upon receipt of the request transmitted from the receiving system. - View Dependent Claims (10, 11, 12)
-
-
13. A method for transferring a file from a sending system to a receiving system, comprising:
-
sending a file made up of a plurality of file segments from the sending system along a file transmission path, the file transmission path extending from the sending system to the receiving system, the sending of the file including sending the file segments by a plurality of transmissions spaced out in time with a dynamically alterable wait period occurring after the transmission of each of the plurality of file segments; determining a congestion level along the file transmission path; the sending system determining the wait period based on the determined congestion level, waiting for expiration of the wait period, and, upon expiration of the wait period, sending an additional one of the plurality of file segments to the receiving system. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20)
-
-
21. A non-transitory computer readable medium containing computer instructions that cause a processor to:
-
send a file made up of a plurality of file segments from a sending system along a file transmission path extending from the sending system to a receiving system, the sending of the file including sending the file segments by a plurality of transmissions spaced out in time with a dynamically alterable wait period occurring after the transmission of each of the plurality of file segments; determine a congestion level along the file transmission path; and control the transmission of subsequent file segments by determining the wait period based on the determined congestion level. - View Dependent Claims (22, 23, 24, 25, 26)
-
-
27. A receiving computer system for the transfer of a data file made up of a plurality of file segments from a sending computer system to the receiving computing system, the receiving computer system comprising:
-
a hardware data storage element configured to receive the data file transmitted from the sending computer system; a hardware network interface communicatively coupled to the data storage element and configured to store the data file therein, the network interface being further configured to receive the plurality of data file segments from the sending computer system via a communications network having a communication path extending from the sending computer system to the receiving computer system; and a network interface controller configured to control transmission of the plurality of file segments to the receiving computer system via the network interface, the network interface controller being configured to determine a dynamically alterable wait period between transmission of individual ones of the plurality of file segments based in part on a level of network congestion in the communication path, wait for an expiration of the wait period, and, upon expiration of the wait period, to transmit a request for the transmission of an additional file segment from the sending system. - View Dependent Claims (28, 29, 30)
-
-
31. A receiving computer system for the transfer of a data file made up of a plurality of file segments from a sending computer system to the receiving computing system, the receiving computer system comprising:
-
a hardware data storage element configured to receive the data file transmitted from the sending computer system; a hardware network interface communicatively coupled to the data storage element and configured to store the data file therein, the network interface being further configured to receive the plurality of data file segments from the sending computer system via a communications network having a communication path extending from the sending computer system to the receiving computer system; and a network interface controller configured to control receipt of the plurality of file segments from the sending computer system via the network interface with a dynamically alterable wait period between transmission of individual ones of the plurality of file segments based in part on a level of network congestion in the communication path, the network interface controller being configured to transmit an acknowledgement message to the sending computer system upon receipt of the file segment and prior to the expiration of the wait period and, upon expiration of the wait period, to receive an additional file segment from the sending computer system. - View Dependent Claims (32)
-
-
33. A sending computer system to transmit a data file made up of a plurality of file segments to a receiving computing system, the sending computer system comprising:
-
a hardware data storage element configured to store the data file to be transmitted to the receiving computing system; a hardware network interface communicatively coupled to the data storage element and configured to receive the data file therefrom, the network interface being further configured to transmit the plurality of data file segments to the receiving system via a communications network having a communication path extending from the sending system to the receiving system; and a network interface controller configured to control transmission of the plurality of file segments to the receiving system via the network interface, the network interface controller being configured to determine a dynamically alterable wait period between transmission of individual ones of the plurality of file segments based in part on a level of network congestion in the communication path, and, upon expiration of the wait period, to transmit an additional file segment of the plurality of file segments. - View Dependent Claims (34)
-
Specification