The present invention generally relates to networked applications that send and receive data over a network, for instance the Internet. The invention more particularly concerns the government of the data rates at which such networked applications transport data over the network, i.e. governance of the rate at which a sender releases packets in the network, in order to avoid congestion.
In order to share the transport resources of a network amongst different applications, it is known to implement congestion control mechanisms at the transport layer. Existing congestion control mechanisms rely on various parameters that govern the rate at which data packets are released into a network. Traditionally, these parameters are given certain values when the congestion control protocol is deployed in order to achieve fairness and convergence to a steady state. The parameter values in other words are chosen such that the different data flows get a fair share of the transport capacity of the network. Further, the parameter values are chosen such that convergence to a steady state is fast enough when new data flows are set-up that also require part of the transport capacity or when existing data flows are torn down therewith releasing transport capacity that can be shared between the remaining data flows.
The most widely used transport layer protocol is the Transmission Control Protocol (TCP). To determine how data packets can be released in the network, TCP maintains a congestion window (cwnd) defined as the amount of data that a sender can send unacknowledged in the network. The size of the congestion window is dynamically controlled in view of arrival of acknowledgments (ACKs) at the sender, each acknowledgement confirming the receipt of one or more data packets by the receiver. The way the congestion window is dynamically adapted in view of received acknowledgements further depends on the flavour of congestion management that is implemented in the TCP based network.
One way to manage congestion in TCP based networks is called TCP RENO. TCP RENO relies on two parameters to control the size of the congestion window cwnd during its so called “congestion avoidance” phase. The congestion window additive increase parameter α represents the amount of data packets per Round Trip Time (RTT) that the congestion window cwnd increases. More precisely, the congestion window cwnd increases by a packets each time receipt of the complete previous congestion window is acknowledged, which boils down to an increase of a/cwnd for each ACK that is received by the sender. The congestion window multiplicative decrease parameter β represents the fraction the congestion window cwnd is decreased upon reception of a triple duplicate ACK. β=0 means no decrease whereas β=1 means a decrease of the congestion window cwnd to the minimal size. In legacy TCP RENO implementations, the parameter α is set 1 and the parameter β is set 0.5.
In an alternative way to manage the congestion window cwnd during the “congestion avoidance” phase in TCP based networks, named TCP CUBIC, the role of the parameter α, i.e. governance of how the congestion window cwnd grows when an ACK confirms proper receipt of data by a receiver, is taken up by a parameter C, the coefficient of the cubical window increase function. Further, TCP CUBIC has a parameter β whose meaning and role is identical to the parameter β in TCP RENO.
TCP RENO and TCP CUBIC also have a so called “slow start” phase during which the congestion window cwnd increases by γ packets per new ACK received, which corresponds to an exponential increase of the congestion window cwnd over time. In both TCP RENO and TCP CUBIC, the parameter γ is set equal to 1 packet. Typically, a TCP connection starts in the “slow start” phase, proceeds to the “congestion avoidance” phase after the first triple duplicate ACK is received, which reduces the congestion window cwnd by a factor β as explained here above, and remains in the “congestion avoidance” phase as long as new ACKs or triple duplicate ACKs are received in time, i.e. before the TCP retransmit timer expires. When the TCP retransmit timer expires, i.e. when the ACK for a packet is not received before an expected time, TCP re-enters the “slow start” phase with a congestion window cwnd set to the minimal size.
A drawback of the existing congestion control mechanisms is that they strive at fairness while fairness might not always be desirable. There exist situations wherein an application temporarily has higher needs than its fair share whereas other applications may temporarily require less than the fair share.
Congestion exposure (Conex) described in IETF rfc6789 is a technology that enables the sender and nodes between the sender and receiver to estimate the congestion caused by a single data flow or an aggregation of data flows. The transport layer sender echoes the congestion feedback signal it receives from its receiver back into the network on new data packets it is sending. As a result thereof, the sender and network nodes between the sender and receiver can estimate the amount of congestion that is experienced by the network, as opposed to the amount of congestion experienced by the hop itself. Conex however does not describe or teach how to manage congestion in the network.
IETF's Transport Services (TAPS) workgroup describes transport services of existing transport layer protocols in an abstract way to enable an application developer to accurately describe the transport services that an application needs and
The best existing solution to the problem of applications having needs above their fair share is deadline-aware congestion control, a congestion control mechanism wherein an application can associate deadlines with information to be transported. The parameters of the congestion control protocol at the transport layer are then adapted such that the number of deadlines that can be met, is maximized. Datacenter TCP (DCTCP), deadline-aware datacenter TCP (D2TCP), and deadline driven delivery (D3) are alternatives developments of this technique. They can be used only in datacenter context because in the open Internet, these techniques would completely starve regular data flows. Shared content addressing protocol (SCAP) allows clients to retrieve content from a server, the client being able to specify the start address and byte range of the content piece it is interested in, as well as a begin and end deadline. SCAP nodes will then schedule the content transfer such that a maximum amount of deadlines is met.
Summarizing, deadline-aware congestion control mechanisms allow applications to obtain throughputs higher than the fair share in order to meet certain deadlines. These techniques however do not guarantee long term fairness as a result of which they cannot be used in the open Internet.
It is an objective of the present invention to disclose a networked application client, server and method that allow to govern the instantaneous throughput of data flows more intelligently, such that temporary needs of applications above their fair share are met while long term fairness between applications maintains guaranteed.
Embodiments of the invention disclose a computer-implemented networked application component adapted to send and receive data over a network, the application component comprising:
The application component may for instance be the client part of an application or the server part of an application. In line with embodiments of the invention, the application itself determines its instantaneous needs for throughput in the network. These instantaneous needs may exceed the instantaneous fair share. Through an application programming interface (API), the application however can set one or more parameters in the transport layer such that it gets an instantaneous throughput that is higher than its fair share and consequently better matches its instantaneous needs. This is made possible on the condition that the application has built up throughput credits as a result of actual throughputs in the past below its fair share. An application consuming less than its fair share in other words builds up credits that can be used to temporarily grab throughputs above its fair share when needed. In the long term, each application still has to respect its fair share, but the instantaneous division of throughput is made more intelligent as applications with higher temporary needs will temporarily get a higher throughput that is taken from applications that do not need their fair share at that moment in time. As a consequence, transport resources are no longer shared fairly all the time. Deviations from the fair share allow applications to perform better whereas fairness remains guaranteed in the long term at the cost of maintaining a throughput credit.
In embodiments of the computer-implemented networked application component according to the present invention, defined by claim 2, the credit parameter manager is adapted to:
Indeed, to build up or consume credit, embodiments of the invention regularly determine or measure the throughput difference, i.e. the difference between the actual throughput of an application and its fair share. This can be done by predicting the throughput from a formula expressing the long term throughput as a function of the TCP parameters, α, β, C, γ, by measuring the throughput, or by comparing the congestion window cwndnew used by the application component according to the present invention with the congestion window cwndfair that traditional TCP implementations like TCP RENO or TCP CUBIC would arrive at. Indeed, comparing the size of the congestion window cwndnew with the size of the congestion window cwndfair traditional TCP implementations would arrive at is sufficient since the throughput corresponds to cwnd/RTT and RTT is the same Round Trip Time in both cases. When the throughput difference is negative, i.e. when the application's actual throughput is smaller than its fair share or equivalently when cwndnew<cwndfair, the throughput credit is increased. On the other hand, when the throughput difference is positive, i.e. when the actual throughput of the application exceeds its fair share or equivalently when cwndnew>cwndfair, the throughput credit of the application is decreased. There may however be a maximum credit such that the application cannot massively build up throughput credit that could then be used at another point in time to grab throughput above its fair share for a long period in time.
In embodiments of the computer-implemented networked application component according to the present invention, defined by claim 3, the credit parameter manager is adapted to update the throughput credit only at instances when congestion is experienced in the network.
Indeed, instead of using throughput difference to build up and consume throughput credit, a technique similar to Conex may be applied wherein throughput credit can only be built up or consumed at critical points in time, e.g. when congestion is experienced. As long as the network is congestion-free, the throughput credit of applications remains unchanged.
In embodiments of the computer-implemented networked application component according to the present invention, defined by claim 4, the transport layer implements TCP RENO, and the transport layer application programming interface is adapted to:
As mentioned above, in the TCP RENO congestion avoidance phase, the congestion window additive increase parameter α and the congestion window multiplicative decrease parameter β determine respectively the increase in number of packets per RTT of the congestion window upon acknowledgement of the complete previous window, or equivalently an increase of α/cwnd per ACK, and the fractional decrease of the congestion window upon receipt of a triple duplicate acknowledgement. These parameters are respectively set α=1 and β=0.5 in legacy implementations of TCP RENO. According to embodiments of the invention, these parameters α and β may be adjusted at regular times t, spaced apart a time interval Δt in view of the throughput credit C(t) built up at time t and the applications throughput need N(t) at time t. In an advantageous embodiment, the parameter α may be left non-amended, whereas the parameter β may be amended according to the formula:
In case the throughput need exceeds the fair share and the application has positive throughput credit built up from the past, the fractional decrease of the congestion window is halved for that application. As a consequence, the throughput of the application is pushed back more slowly in congestion avoidance phase than the throughput of contending applications. The price paid by the application is that its throughput will be forced down more rapidly than other applications when its throughput credit is negative in congestion avoidance phase.
In the here above described embodiments of the computer-implemented networked application component according to the present invention, implementing formula (1), the credit parameter manager may further be adapted to update the throughput credit as defined by claim 5 through the formula:
wherein
C(t) represents the throughput credit at an instance t;
α represents the congestion window additive increase parameter of TCP RENO;
β represents the congestion window multiplicative decrease parameter of TCP RENO; and
Cmax represents a maximum credit.
Indeed, the throughput credit at a time instant t+Δt must be updated in view of the throughput credit at time instant t. It is noticed that the throughput credit can become negative. When the throughput credit C(t) is small but still positive and the application's need N(t) is large, then β will be set 0.25 according to formula (1) and credit is consumed at a rate of 1.22−1.87=−0.65 units per Δt. As there is no lower bound on the throughput credit C(t), the throughput credit will continue to decrease until it becomes negative. As soon as the throughput credit C(t) becomes negative, irrespective of the application's throughput need N(t), β will be set 0.75 according to formula (1) and throughput credit is being built up at a rate of 1.22−0.91=0.31 units per Δt, making C(t) positive again. Throughput credit is further built up until a maximum credit Cmax is achieved.
In an embodiment of the computer-implemented networked application component according to the present invention, defined by claim 6, the networked application component forms part of a database application and the need parameter manager is adapted to determine the instantaneous need for throughput as the difference between a target buffer occupancy and an amount of data the database application has buffered.
A database application typically retrieves some records to process from a central database. As it needs time to process a record, the application desires to buffer some data records but not too many. The application's throughput need hence may be determined from the buffer occupancy, more particularly from the difference between a target buffer fill level and the actual buffer fill level. These actual and target buffer fill levels may be expressed as an amount of bytes or as a number of records. Hence the throughput need will be negative when the application's buffer is filled above the target buffer fill level. The application might be at risk of buffer overflow in such situation and desires to retrieve additional records at a lower data rate while building up throughput credit for later times. On the other hand, the throughput need becomes positive when the buffer fill level is below the target buffer fill level. The application has excess capacity to process records at such time instants and elects to trade its built up throughput credit for higher data retrieval rates.
In an embodiment of the computer-implemented networked application component according to the present invention, defined by claim 7, the networked application component forms part of an adaptive streaming video application and the need parameter manager is adapted to:
In a video streaming application, a video client pulls down consecutive video segments from a video server. In adaptive streaming, each video segment is available in different qualities, encoded at different video bit rates Ri with i=1 . . . I. An adaptive video streaming application attempts to have a number of video seconds ready in its play-out buffer, but not too many. The adaptive video streaming application further strives at optimal video quality but is reluctant to change the video quality often since such quality changes have a negative effect on the user experience. A client component of the adaptive video streaming application in line with embodiments of the present invention shall therefore consider the option to build up throughput credit in periods where temporarily higher throughputs are available by requesting for the throughput a specific target value Rtgt below the fair share throughput but close to a selected video bit rate Ri, and hence close to a desired quality, for the video segments to be downloaded. Instead of striving at maximum quality for video segments, the adaptive streaming video application according to the present invention thus may elect to request a video segment at the current quality at a time where higher rates and consequently higher quality is achievable, i.e. when cwndfair>cwndnew, herewith avoiding a quality change but at the same time building up throughput credit for later times. On the other hand, the adaptive video application according to the present invention may trade some or all of its built up throughput credit to temporarily request a specific target throughput Rtgt above its fair share at a point in time the network gets congested, herewith avoiding it is pushed towards lower streaming rates and consequently towards a shift to a lower video quality. More precisely, the congestion window cwndnew is set to Rtgt×RTT where Rtgt is equal to the video bit rate of the previous video segment when cwndfair<cwndnew. This is achieved through intelligent setting of the instantaneous throughput need N(t). The need parameter N(t) is set equal to the desired, specific target throughput value Rtgt. The congestion window cwndnew is set equal to Rtgt×RTT with RTT being the measured Round Trip Time. Credit is then built up or consumed according to the formula:
A video streaming application that takes benefit of the present invention hence is able to match the video rate and throughput with more agility, herewith reducing the frequency of video quality changes.
Embodiments of the computer-implemented networked application component according to the present invention, defined by claim 8, further comprise:
As mentioned above, the networked application component can for instance be a client component or a server component of an application. Usually, the congestion control parameters in the transport layer controlled according to the present invention must be known at the sender side. In line with the present invention, an application component consequently shall impact the way it sends information and typically set the local transport layer congestion control parameters through an application programming interface (API). If however, the application component desires to control the way it receives information, it needs to control transport layer congestion control parameters remotely. Thereto, the application component may be equipped with an interface and implement a protocol that enables to convey the congestion control parameter settings to the other side, e.g. from client side to server side.
In an embodiment of the computer-implemented networked application component according to the present invention, defined by claim 9, the networked application component is an application client.
In an alternative embodiment of the computer-implemented networked application component according to the present invention, defined by claim 10, the networked application component is an application server.
In addition to a computer-implemented networked application component as defined by claim 1, the present invention also relates to a corresponding computer-implemented method to send and receive data over a network executed at the application layer, the method as defined by claim 11 comprising:
To determine how to release data packets 107 into the network the TCP client 103 and TCP server 104 each maintain a congestion window cwnd defined as the amount of data that they can respectively send unacknowledged into the network. Although
At the application layer, the application client 101 drawn in
The throughput need manager 121 at regular times t determines the application's instantaneous needs for throughput in the direction from server 102 to client 101. This throughput need is denoted N(t) and communicated to the transport layer application programming interface 123. Further below, with reference to
The throughput credit manager 122 at regular times t determines the throughput credit that the application has built up over time for sending data in the direction from server 102 to client 101. This throughput credit is denoted C(t) and the update thereof, i.e. the increase or decrease of credit, is derived from the instantaneous difference between the actual data throughput, or equivalently the congestion window cwndnew, in direction from server 102 to client 101 and the fair share throughput, or equivalently the fair share congestion window cwndfair, that the server 102 would receive in a legacy TCP RENO implementation that does not consider built up credit. In the congestion avoidance state of such a legacy TCP RENO implementation the additive increase parameter is set statically as α=1 and the multiplicative decrease parameter is set statically as β=0.5. It is known that for a TCP RENO controlled data flow with parameters α and β, the throughput λ expressed in data packets per second, as long as the data flow remains in the congestion avoidance state, is approximately given by the formula:
RTT represents the round trip time of the data flow; and
p represents the probability with which the network drops or marks data packets.
Consequently, for a legacy TCP RENO controlled data flow with α=1 and β=0.5, the throughput is approximately given by:
Formula (5) hence represents the fair share throughput that the server 102 would receive, expressed in data packets per second, for sending data packets in the direction towards the client 101 in the congestion avoidance state of legacy TCP RENO.
The transport layer application programming interface 123 determines the parameters α(t) and β(t) at regular time intervals spaced a time interval Δt apart. The time interval Δt may for instance be set equal to RTT multiplied with a factor K that represents an integer value equal to or greater than 1. In the embodiment illustrated by
As mentioned above, the throughput credit C(t) is determined by the credit manager 122 as a function of the throughput difference, i.e. the difference between the actual instantaneous throughput and the fair share throughput. The actual instantaneous throughput can for instance be measured by the server 102 by counting the data packets effectively sent, but in TCP RENO's congestion avoidance state is also approximated by formula (4). In the embodiment illustrated by
The throughput credit at time t in other words is increased at time t+Δt with the throughput difference, but a maximum credit Cmax cannot be exceeded.
It is noticed that the throughput credit can become negative. When C(t), i.e. the throughput credit at time t, is small but still positive and N(t), i.e. the application's instantaneous throughput need at time t is large, then β(t)=0.25 according to formula (6) and credit will be consumed at a rate 1.22−1.87=−0.65 units per time interval Δt. As there is no lower bound on the throughput credit, C(t) will continue to decrease until it becomes negative. As soon as C(t) is negative, irrespective of the application's instantaneous need N(t), formula (6) makes β(t)=0.75 and credit is again being built up at a rate of 1.22−0.91=0.31 units per time interval Δt, making the throughput credit C(t) positive again.
With reference to
In an alternate embodiment illustrated by
This throughput credit that is built up, can be used later, during periods of heavier congestion, by the RDA which then sets N(t) equal to Rtgt, a value higher than the current throughput, to request more than the fair share such that it can maintain the current video quality longer than a traditional RDA would do.
It is noticed that the present invention is not restricted to a particular transmission layer protocol. Although TCP is mentioned here above, other transport layer protocols like for instance the Datagram Congestion Control Protocol (DCCP), the Stream Control Transmission Protocol (SCTP), or congestion control protocols relying on the Real-time Transport Protocol (RTP) or the User Datagram Protocol (UDP) could be implemented and take benefit of alternate embodiments of the present invention that control the congestion control parameters of such transport layer protocols, similarly to TCP here above.
It is further noticed that the present invention is not restricted to a particular congestion control technique implemented at the transport layer. Although TCP RENO is mentioned here above, the skilled person shall appreciate that alternative embodiments of the present invention may set the congestion control parameters of TCP CUBIC or compound TCP with similar advantages. Alternative embodiments that set the congestion control parameters of TCP RENO may also set the slow start phase parameters instead of only parameters used in the congestion avoidance phase.
The skilled person further will appreciate that in alternative embodiments of the invention, besides the multiplicative decrease parameter β, also the additive increase parameter can be set by the application layer as a function of the instantaneous throughput need N(t) and the built up throughput credit C(t), and either one or both can take continuous values instead of the discrete values in the example here above.
Obviously, also the definition of the application's instantaneous throughput need N(t) is not restricted to the examples given above. Many alternative definitions for the application's throughput need exist.
The steps executed in the method for sending and receiving data according to the present invention, illustrated by the above embodiments, may be implemented as programming instructions stored in local memory 404 of the computing system 400 for execution by its processor 402. Alternatively, the instructions may be stored on the storage element 408 or be accessible from another computing system through the communication interface 412.
Although the present invention has been illustrated by reference to specific embodiments, it will be apparent to those skilled in the art that the invention is not limited to the details of the foregoing illustrative embodiments, and that the present invention may be embodied with various changes and modifications without departing from the scope thereof. The present embodiments are therefore to be considered in all respects as illustrative and not restrictive, the scope of the invention being indicated by the appended claims rather than by the foregoing description, and all changes which come within the scope of the claims are therefore intended to be embraced therein.
It will furthermore be understood by the reader of this patent application that the words “comprising” or “comprise” do not exclude other elements or steps, that the words “a” or “an” do not exclude a plurality, and that a single element, such as a computer system, a processor, or another integrated unit may fulfil the functions of several means recited in the claims. Any reference signs in the claims shall not be construed as limiting the respective claims concerned. The terms “first”, “second”, third”, “a”, “b”, “c”, and the like, when used in the description or in the claims are introduced to distinguish between similar elements or steps and are not necessarily describing a sequential or chronological order. Similarly, the terms “top”, “bottom”, “over”, “under”, and the like are introduced for descriptive purposes and not necessarily to denote relative positions. It is to be understood that the terms so used are interchangeable under appropriate circumstances and embodiments of the invention are capable of operating according to the present invention in other sequences, or in orientations different from the one(s) described or illustrated above.
Number | Date | Country | Kind |
---|---|---|---|
16290193.8 | Oct 2016 | EP | regional |