Channel bandwidth optimization for dynamic network conditions

Embodiments disclosed herein provide systems and methods for optimizing channel bandwidth usage in a communication network from a sender. In a particular embodiment, a method provides transmitting first data on a first data channel from the sender to a receiver at a first rate that does not exceed an available amount of bandwidth on the communication network. The method further provides determining that the first data channel is attempting to transmit at a second rate that is higher than the first rate. Also, the method provides continuing to transmit the first data on the first data channel while increasing from the first rate to the second rate in increments until either the second rate is achieved or the available amount of bandwidth is reached.

TECHNICAL FIELD

Aspects of the disclosure are related to data transfer over a communication network and, in particular, to optimizing bandwidth usage in a network environment where available bandwidth is dynamic.

TECHNICAL BACKGROUND

Networked computer systems can transfer multiple data streams concurrently over a communication network. Even if the communication network is able to provide a constant amount of total bandwidth to one of those systems, which is not always the case as the total available bandwidth may change, the bandwidth used by each of the data streams in a multi-stream scenario may be dynamic. Thus, if one data stream attempts to increase its transfer rate, and thereby use more bandwidth, the bandwidth needed to transfer at that increased rate may not be available due to the bandwidth currently being used by other data streams. Likewise, if the total available network bandwidth changes, the amount of bandwidth needed to transfer at that increased rate may not be available regardless of the bandwidth used by other data streams. Going over the available bandwidth may cause quality issues for the data stream, such as lost or delayed data packets. Conversely, the quality of the information in the data may suffer if the bandwidth used by the data stream is kept artificially low (e.g. using greater compression, lower media resolution, etc.) to ensure the available bandwidth is not exceeded.

Accordingly, an ideal scenario for the data channel would be to use as much as possible of the bandwidth available. Current bandwidth estimators attempt to achieve this ideal scenario but cannot respond quickly enough when a data channel increases its bitrate to greater than what the available bandwidth allows. Consequently, packets are lost, even if only briefly, which degrades quality and causes degradation of the user experience at a system at the receiving end of the data channel.

OVERVIEW

Embodiments disclosed herein provide systems and methods for optimizing channel bandwidth usage in a communication network from a sender. In a particular embodiment, a method provides transmitting first data on a first data channel from the sender to a receiver at a first rate that does not exceed an available amount of bandwidth on the communication network. The method further provides determining that the first data channel is attempting to transmit at a second rate that is higher than the first rate. Also, the method provides continuing to transmit the first data on the first data channel while increasing from the first rate to the second rate in increments until either the second rate is achieved or the available amount of bandwidth is reached.

In some embodiments, the method provides transmitting one or more data channels contemporaneously with the first data channel from the sender to the receiver, wherein a combined rate of the one or more data channels and the first rate together do not exceed the available amount of bandwidth.

In some embodiments, the method provides receiving feedback at the sender from the receiver indicating whether the available amount of bandwidth is reached.

In some embodiments, the receiver executes an early congestion detection algorithm to determine whether the available amount of bandwidth is reached.

In some embodiments, a time period between increments is longer than a round trip delay on the communication network between the sender and the receiver.

In some embodiments, the method provides determining a size of each increment and a duration between each increment.

In some embodiments, each increment of the increments comprises a portion of the difference between the first rate and the second rate.

In some embodiments, the increments cause a linear increase from the first rate to the second rate.

In some embodiments, the method provides when the available amount of bandwidth is exceeded before the second rate is achieved, transmitting the first data on the first channel at a rate corresponding to the increment that immediately preceded the determination that the available amount of bandwidth is exceeded.

In another embodiment, a sender system is provided that includes a communication interface and a processing system. The communication interface is configured to transmit first data on a first data channel from the sender system to a receiver at a first rate that does not exceed an available amount of bandwidth on the communication network. The processing system is configured to determine that the first data channel is attempting to transmit at a second rate that is higher than the first rate. The communication interface is also configured to continue to transmit the first data on the first data channel while increasing from the first rate to the second rate in increments until either the second rate is achieved or the available amount of bandwidth is reached.

In yet another embodiment, a computer readable storage medium having instructions stored thereon is provided. The instructions, when executed by a sender system, direct the sender system to transmit first data on a first data channel from the sender system to a receiver at a first rate that does not exceed an available amount of bandwidth on the communication network. The instructions further direct the sender system to determine that the first data channel is attempting to transmit at a second rate that is higher than the first rate and continue to transmit the first data on the first data channel while increasing from the first rate to the second rate in increments until either the second rate is achieved or the available amount of bandwidth is reached.

TECHNICAL DISCLOSURE

Attempting to use more than the available bandwidth to transfer the data over the data channel on a communication network may result in degraded quality when using that data at a receiver. Specifically, the degraded quality may be caused by packet loss, packet delay, or some other issue that may arise from over-utilization of available bandwidth. Likewise, using less than the available bandwidth may also result in degraded quality if quality is being reduced at the sender to lessen the amount of bandwidth used even though more bandwidth is available.

In a particular example, a data channel may transfer data for a real-time video communication. If more than the available bandwidth for the data channel is used, then packets lost or delayed due to that over-utilization may cause problems when presenting that video at a receiver. In contrast, if less than the available bandwidth for the data channel is used, then the sender may be transferring the video at a lower quality (e.g. lower resolution, higher compression, etc.) than would otherwise be allowed by the available bandwidth.

In some cases, the amount of bandwidth used by a particular data channel may be dynamic and vary over time. For example, the amount of bandwidth used to stream data for a slide presentation may be low until there is a slide change in the presentation. During the slide change the amount of bandwidth used by the presentation stream may need to increase to transfer data representing the new slide. In a similar example, when a video is streaming over a data channel, the bandwidth needed to transfer the video increases whenever a reference frame to which other video frames refer is transferred.

Especially in situations where other data streams are being transferred as well (e.g. data channels for a video stream and an audio stream accompanying a presentation stream), which may themselves be dynamic, it is difficult for a sender to know how much bandwidth can be used for a particular data channel to maximize quality without over-utilizing the available bandwidth. Likewise, conditions on the network itself (e.g. traffic load, resource usage, device downtime, etc.) may cause the amount of bandwidth available to the data channels as a whole to be dynamic.

FIG. 1illustrates data transfer environment100in an operational scenario to optimize bandwidth usage by a data channel over a communication network. Data transfer environment100includes sender system101, receiver system102, and communication network103. Sender system101and communication network103communicate over communication link111. Receiver system102and communication network103communicate over communication link112.

Sender system101may be a user device, network card, application server, or any other type of system capable of transferring data over communication network103. Likewise, receiver system may be a user device, network card, application server, or any other type of system capable of receiving data over communication network103. While only one receiver system is illustrated in environment100, multiple receiver systems may receive data in data channels transferred from sender system101.

When transferring data on a data channel over network103to receiver system102, the rate in which that data can be transferred by sender system101is limited by available bandwidth on network103, which may be a dynamic amount of bandwidth. Moreover, the amount of bandwidth available to that one data channel may be dependent upon the amount of bandwidth used by other data channels transferred from sender system101, which also may be a dynamic amount of bandwidth. Therefore, as detailed below, sender system101determines what rate is allowed for a particular data channel based on the current dynamic state of bandwidth available for that data channel.

FIG. 2illustrates method200of data transfer environment100in an operational scenario to optimize bandwidth usage by a data channel over a communication network. Method200provides transmitting first data on a first data channel from sender101to receiver102at a first rate that does not exceed an available amount of bandwidth on communication network103(step201). The available amount of bandwidth may be the total amount of bandwidth available to sender system101when the first data channel is the only data channel being transferred from sender system101. However, if sender system101is transferring multiple data channels, as in a multi-stream scenario, then the available amount of bandwidth is the total amount of bandwidth available to sender system101less the bandwidth used to transfer the data channels other than the first data channel.

Method200then provides sender system101determining that the first data channel is attempting to transmit at a second rate that is higher than the first rate (step202). The first data channel may be attempting to transmit at a higher rate because additional data needs to be transferred on the first data channel. For example, when a slide changes during a streaming presentation, an entire new slide must be transmitted, which typically requires sending more data than when the presentation sits on one slide for a period of time. In another example, a video conference may use lower quality video or display no video at all for a participant that is not currently speaking and, when that participant speaks, higher quality video for the participant is transferred requiring more data. Sender system101may determine that the channel is attempting to transmit at a higher rate by recognizing that more data is being delivered to a network interface of sender system101for the data channel, by being informed of the rate increase by an element of sender system101(e.g. an executing application) that generates the data, or by some other way of recognizing that the data will be transferred at a higher rate before the data is actually transferred at that higher rate.

Once the attempt to transmit at a higher rate is determined, method200provides sender system101continuing to transmit the first data on the first data channel while increasing from the first rate to the second rate in increments until either the second rate is achieved or the available amount of bandwidth is reached (step203). In this way, the rate in which the first data is transferred increases gradually. Increasing the rate in gradual increments prevents sender system101from going too far over the available amount of bandwidth, which may cause quality to suffer. Specifically, in a dynamic network environment where the available amount of bandwidth changes often, sender system101does not know the exact amount of bandwidth available to the first data channel. Therefore, rather than simply transferring the first data channel at the second rate, which may end up going over the available amount of bandwidth, sender system101increments the transfer rate until it determines that the available amount of bandwidth has been reached. In one example, sender system101determines that the available amount of bandwidth has been reached based on feedback from receiver system102indicating that the amount of available bandwidth has been reached. However, other methods may also be used.

FIG. 3illustrates operation300of data transfer environment100in an operational scenario to optimize bandwidth usage by a data channel over a communication network. Communication network103is not illustrated in operation300for clarity, however, it should be understood that the data transferred between sender system101and receiver system102traverses network103. At step1, sender system101transfers data to receiver system102on a data channel between system101and102. The data is transferred at a first rate that consumes at least a portion of the bandwidth available between sender system101and receiver system102. The bandwidth available between sender system101and receiver system102may be dynamic or constant, although, the portion of that bandwidth available to this specific data channel may be dynamic depending on the rate in which other data channels are transferring data. Therefore, if the data channel attempts to transfer data to receiver system102at a higher rate on the data channel, the dynamic aspect of the bandwidth available to do so causes uncertainty for sender system101about whether enough bandwidth is currently available for the higher rate.

When step2sender system101determines that data is attempting to transfer at a higher rate, sender system101determines increments by which the data transfer rate should be increased to reach the higher rate. The increments may progress linearly, exponentially, logarithmically, or in some other manner. Once the increments are determined, sender system101begins incrementing the rate for sending the data in accordance with the determined increments at step3. During the transmission, receiver system102determines whether congestion is occurring on network103at step4. Receiver system102may perform an early congestion detection algorithm. The algorithm may be based upon changes in packet delays between sender101and receiver102with increasingly longer packet delays indicating that congestion is occurring. Other algorithms may also be used.

When receiver system102determines congestion exists, receiver system102transfers feedback to sender system101indicating that congestion exists at step5. Such feedback indicates to sender system101that the available bandwidth for transferring the data has been reached. Accordingly, the time between rate increase increments should preferably be set to a time greater than the round trip delay. Additionally, the time between increments may include any processing delay needed by receiver102to determine congestion. In this manner, the increment time allows sender system101to increment the transfer rate at step3and wait for receiver system102to report whether congestion is caused by that incremental rate increase at step5. In some examples, no feedback at step5is assumed to indicate that no congestion was found by receiver102. If sender system101is not notified that congestion exists, sender system101repeats step3and waits for feedback regarding this new increment at step5. This process continues until the higher rate is reached or, if sender system101is notified of congestion before the higher rate is reached, then sender system101stops increasing the rate. In some examples, upon being notified of congestion, sender system101may decrease the data transfer rate back to the last increment that did not cause congestion. In other examples, congestion is detected before the rate is high enough for congestion to be a problem and sender system101is notified to stop increasing the rate. Thus, sender system101is able to substantially maximize the data transfer rate on a data channel when the amount of bandwidth available to that channel is dynamic.

FIG. 4illustrates method400of data transfer environment100in an operational scenario to optimize bandwidth usage by a data channel over a communication network. Method400provides sender system101transfer data on a first data channel at a first rate (step401). Sender system101then determines that the channel is attempting to transmit the data at a second, higher rate (step402). In some cases, data may not be transferred prior to step402, in those cases the data transfer rate at step401is effectively zero and the higher bitrate determined at step402is the above zero transfer rate for data on the first data channel.

Sender system101then determines the size of each increment and the duration between each increment (step403). In some examples, the size, duration, or both may be predefined. In other examples, the size and the duration may be calculated by sender system101. Sender system101may calculate the size and duration based upon the rate differential between the first rate and the second rate, a number of increments, a round trip delay between sender system101and receiver system102, processing delay by receiver system102, a time requirement for completing the increase (time-to-do), or some other variable that may effect increment size or duration. One or more of these variables may be predefined. For example, the time-to-do may be set to 1 second and the increments must therefore fit into that 1 second timeframe and be sized/timed in accordance with the other variables.

After determining the increment size and duration, sender system101increments the transfer rate by one increment (step404). For example, if the first rate is 100 KB/s and the increment size is 5 KB/s, then the new incremented rate is 105 KB/s. Sender system then waits for the amount of time provided by the determined duration to receive feedback from receiver system102indicating that congestion has occurred (i.e. the available bandwidth has been reached) (step405). If no indication of congestion is received, then sender system101returns to step401and increases the transfer rate by another increment. Continuing the example from above, the rate would be increased from 105 KB/s to 110 KB/s. Steps404and405then continue until step405receives feedback from receiver system102indicating that congestion has occurred or determines that the second rate has been reached, whichever occurs first. Again from the above example, if the second rate is 200 KB/s, sender system101continues to increment the rate by 5 KB/s until congestion is indicated or 200 KB/s is reached.

Once step405has determined that either congestion has occurred or the second rate has been achieved, sender system101transfers the data on the first channel at the new rate. In particular, the new rate may be the second rate (e.g. 200 KB/s from above). Alternatively, the new rate may be a rate immediately prior to step405determining that congestion has occurred, which maximizes the bandwidth used by the first data channel without over-utilizing bandwidth. Continuing the above example, when sender system101increases the rate from 165 KB/s to 170 KB/s and receives an indication of congestion at 170 KB/s, then sender system101may reduce the bandwidth back to 165 KB/s because no indication of congestion was received during that increment. Alternatively, bandwidth being used by one or more other data channels, if any, from sender system101may be reduced (i.e. reduce transmission rate) in order to allow the first data channel to increase its rate beyond 165 KB/s. The decision to reduce the bandwidth of other data channels may be based on a priority scheme (e.g. the first data channel may be of higher priority or importance than the other data channels that are reduced) or may be made in accordance with some other criteria. In some embodiments, if the desired higher second rate cannot be achieved due to congestion, then sender system101may make additional attempts to achieve the higher rate by returning to step404since additional bandwidth may be available at a later time.

Referring back toFIG. 1, sender system101comprises a computer system and communication interface. Sender system101may also include other components such as a router, server, data storage system, and power supply. Sender system101may reside in a single device or may be distributed across multiple devices. Sender system101may be a telephone, computer, e-book, mobile Internet appliance, network interface card, media player, game console, application server, proxy server, or some other network communication apparatus—including combinations thereof.

Receiver system102comprises a computer system and communication interface. Receiver system102may also include other components such as a router, server, data storage system, and power supply. Receiver system102may reside in a single device or may be distributed across multiple devices. Receiver system102may be a telephone, computer, e-book, mobile Internet appliance, network interface card, media player, game console, application server, proxy server, or some other network communication apparatus—including combinations thereof.

Communication network103comprises network elements that provide communications services to sender system101and receiver system102. Communication network103may comprise switches, wireless access nodes, Internet routers, network gateways, application servers, computer systems, communication links, or some other type of communication equipment—including combinations thereof.

Communication links111-112use metal, glass, air, space, or some other material as the transport media. Communication links111-112could use various communication protocols, such as Time Division Multiplex (TDM), Internet Protocol (IP), Ethernet, communication signaling, Code Division Multiple Access (CDMA), Evolution Data Only (EVDO), Worldwide Interoperability for Microwave Access (WIMAX), Global System for Mobile Communication (GSM), Long Term Evolution (LTE), Wireless Fidelity (WIFI), High Speed Packet Access (HSPA), or some other communication format—including combinations thereof. Communication links111-112could be direct links or may include intermediate networks, systems, or devices.

FIG. 5illustrates chart500showing bandwidth availability in an example scenario of data transfer environment100. In this example, sender system101is transferring data on two data channels, channel 1 and channel 2. The total bandwidth available to sender system101for transferring these two data channels is 500 KB/s. Channel 1 is currently transferring data at a rate of 150 KB/s and channel 2 is currently transferring data at a rate of 225 KB/s. Therefore, an additional 125 KB/s of bandwidth is available to sender system101should either channel 1, 2, or an additional channel not yet established need to transfer data at a higher rate than they are currently transferring.

While channels 1 and 2 are transmitting at their indicated rates, sender system101determines that channel 1 is attempting to transmit at a higher rate than 150 KB/s. Since sender system101is not aware that 125 KB/s of bandwidth is available to increase the transfer rate of channel 1, sender system101incrementally increases the rate of channel 1 until it is notified that the available bandwidth has been reached or the attempted higher rate is achieved. In this case, if channel 1 is attempting to increase to a rate greater than 275 KB/s (e.g. 300 KB/s), then sender system will be notified that bandwidth has been exceeded once channel 1 is incremented to 275 KB/s. However, if channel 1 is attempting to increase to a rate lower than 275 KB/s (e.g. 240 KB/s), then sender system101is able to increment the rate of channel 1 all the way up to that attempted rate.

FIG. 6illustrates transfer rate graph600showing an incremental increase in the data transfer rate of channel 1 from the example inFIG. 5. In particular, graph600shows channel 1 is transmitting at the same 150 KB/s shown in chart500. Before time T1, sender system101determines that channel 1 is attempting to transfer data at an increased rate. In this example, that increased rate is 400 KB/s, which is over 275 KB/s. As has also been the case in the above embodiments, sender system101does not know exactly how much bandwidth is available for channel 1 to increase its data transfer rate due to the dynamic rate of channel 2 and also the possible dynamic nature of bandwidth provided by network103.

Sender system101therefore determines increment size and duration to increase the rate of channel 1 by 250 KB/s. Specifically, sender system101determines that each increment should increase the transfer rate linearly by 25 KB/s. This increment may be calculated from sender system101having a time-to-do requirement of 1 second to increase the transfer rate of channel 1. Using that time-to-do, 8 increments of 25 KB/s would be needed to achieve 400 KB/s and the duration of each increment is 0.125 seconds. Thus, the time between each of times T1-T6 is 0.125 seconds. It should be understood that other increment sizes and time-to-dos could also be used. For instance, in some examples, there may not be a time-to-do requirement but, instead, a fixed increment size may be implemented.

In accordance with the above determined increment size, sender system101begins to increment the transfer rate for channel 1. At increment 1, the rate is increased to 175 KB/s from T1 to T2. Using the 0.125 second increment time from above, sender system101transfers at 175 KB/s for 0.125 seconds while waiting for an indication that the bandwidth available to channel 1 has been reached. Upon not receiving such an indication, sender system101increases the rate again in increment 2 to 200 KB/s for another 0.125 seconds. This process repeats itself until 275 KB/s is reached at increment 5. Put another way, between T1 and T2 sender system101transfers 21.875 KB and then between T2 and T3 sender system transfers 25 KB. Thus, in each increment, sender system101transfers 3.125 KB more than in the previous increment. Since 275 KB/s is the limit of bandwidth available to channel 1, sender system101receives an indication that the bandwidth is exceeded when it attempts to perform a sixth increment up to 300 KB/s. Thus, sender system101backs off to the transfer rate of channel 1 as it stood after increment 5 before the bandwidth was over-utilized, which is 275 KB/s.

In the example, above sender system101is notified that the amount of bandwidth has been reached when received an indication that the bandwidth has been exceeded so that the rate of channel 1 can be backed off to a lower rate. In alternative examples, receiver system102may determine at 275 KB/s that congestion is going to be encountered. In response, receiver system102transfers an indication of such to sender system101. Upon receiving the indication, sender system101does not increase the rate of channel 1 above 275 KB/s rather than attempting 300 KB/s as in the example above.

Since the transfer rate of channel 1 is dynamic, the transfer rate may go down at a later time or attempt to increase again and sender system101will need to repeat the processes described above. Similar processes may also be performed with respect to channel 2. Thus, as channel 1 and channel 2 both change transfer rates over time, sender system101can ensure that channel 1 and channel 2 in combination do not use more bandwidth than is available to sender system101.

In alternative examples, once the sender system101receives and indication that the bandwidth is exceeded, sender system101may reduce the amount of bandwidth used by channel 2 in order to allow channel 1 to send at its desired 400 KB/s. Specifically, to allow channel 1 to increase 125 KB/s above the 275 KB/s at which no congestion was detected, sender system101reduces channel 2's rate by 125 KB/s to 200 KB/s. Once the bandwidth required by channel 1 is reduced, channel 2's rate can be increased back to where it was (i.e. 225 KB/s) or to a greater rate to make up for the rate reduction. The reduction of channel 2's rate in this example may be due to channel 1's priority being greater than that of channel 2.

FIG. 7illustrates sender system700. Sender system700is an example of sender system101, although system101could use alternative configurations. Receiver system102may also use similar structure. Sender system700comprises wireless communication interface701, user interface702, and processing system703. Processing system703is linked to wireless communication interface701and user interface702. Processing system703includes processing circuitry705and memory device706that stores operating software707. Sender system700may include other well-known components such as a battery and enclosure that are not shown for clarity. Sender system700may be a telephone, tablet, computer, e-book, mobile Internet appliance, media player, game console, application server, proxy server, or some other communication apparatus—including combinations thereof.

Communication interface701comprises components that communicate over communication links, such as network cards, ports, RF transceivers, processing circuitry and software, or some other communication devices. Communication interface701may be configured to communicate over metallic, wireless, or optical links. Communication interface701may be configured to use TDM, IP, Ethernet, optical networking, wireless protocols, communication signaling, or some other communication format—including combinations thereof.

User interface702comprises components that interact with a user to receive user inputs and to present media and/or information. User interface702may include a speaker, microphone, buttons, lights, display screen, touch screen, touch pad, scroll wheel, communication port, or some other user input/output apparatus—including combinations thereof. User interface702may be omitted in some examples.

Processing circuitry705comprises microprocessor and other circuitry that retrieves and executes operating software707from memory device706. Memory device706comprises a non-transitory storage medium, such as a disk drive, flash drive, data storage circuitry, or some other memory apparatus. Processing circuitry705is typically mounted on a circuit board that may also hold memory device706and portions of communication interface701and user interface702. Operating software707comprises computer programs, firmware, or some other form of machine-readable processing instructions. Operating software707includes data transfer module708and increment manager module709. Operating software707may further include an operating system, utilities, drivers, network interfaces, applications, or some other type of software. When executed by processing circuitry705, operating software707directs processing system703to operate sender system700as described herein.

In particular, data transfer module708directs processing system703to transmit first data on a first data channel from communication interface701to a receiver at a first rate that does not exceed an available amount of bandwidth on a communication network. Increment manager module709directs processing system703to determine that the first data channel is attempting to transmit at a second rate that is higher than the first rate and continue to transmit the first data on the first data channel while increasing from the first rate to the second rate in increments until either the second rate is achieved or the available amount of bandwidth is reached.