# Patent

## Title
Controlling transmission of data

## Abstract

In an embodiment, a method of controlling transmission of data from a wireless device to a receiver connected via a communication channel includes an application executing on the wireless device providing an estimate of end-to-end bandwidth of the communication channel; supplying to the application from wireless access circuitry in the wireless device at least on communication-related parameter and modifying in the application the estimate of end-to-end bandwidth using the at least one communication-related parameter.

## Background
RELATED APPLICATIONS
This application is a continuation of and claims priority under 35 U.S.C. §120 to U.S. patent application Ser. No. 13/341,287, filed on Dec. 30, 2011, Ser. No. 13/341,287 claims priority under 35 USC §119 or §365 to Great Britain Patent Application No. 1117867.0, filed Oct. 17, 2011. The disclosures of which are incorporated by reference herein in their entirety.


TECHNICAL FIELD
The present invention relates to controlling transmission of data from a wireless device to a receiver.
BACKGROUND
FIG. 1 is a schematic block diagram of a communication system comprising a first user terminal UE1 and a second user terminal UE2. The first and second user terminals are in communication over a communication network 2. In order for communications to be provided between the first and second user terminals, a communication channel is set up between them. This channel comprises a first leg between the user terminal and the network, a leg across the network itself, and a leg between the network and the second user terminal. Each leg can be wired or wireless—wireless connections are shown by way of example. The communication network can be packet switched, that is data to be transmitted from the first user terminal to the second user terminal takes the form of packets to be conveyed over the communication channel set up between them.
In an attempt to try and improve data flow, minimise congestion and for efficiency's sake, rate control is widely used in such transmissions. That is, the rate at which data is transmitted from the sending side (transmitter) is controlled based on information relating to the available bandwidth over which it is to be transmitted. One approach to rate control is end-to-end rate control. End-to-end rate control can be implemented in a number of different forms, but in principle, relies on information about the channel which exists from end-to-end between the sending side (transmitters) and the receiving side (receiver). In any implementation of end-to-end rate control, a message from the transmitter has to reach the receiver, and information relating to the message (or the message itself) returned from the receiver to the transmitter in a round trip. End-to-end rate control has the advantage that no assumptions are made as to where the smallest bottleneck on the communication channel sits. On the other hand, as congestion starts building up at the bottleneck, this has to be detected at the receiver and a message returned to the sender. Thus, reacting to congestion takes at least a round-trip time (RTT), during which the congestion becomes worse, potentially harming a real time communication experience.
SUMMARY
It is an aim of the present invention to provide a technique for controlling transmission of data which retains the end-to-end rate control advantages, but which improves reaction times.
According to an aspect of the present invention there is provided a method of controlling transmission of data from a wireless device to a receiver connected via a communication channel, the method comprising:
an application executing on the wireless device providing an estimate of end-to-end bandwidth of the communication channel;
supplying to the application from wireless access circuitry in the wireless device at least on communication-related parameter;
modifying in the application the estimate of end-to-end bandwidth using the at least one communication-related parameter.
A computer program product comprising code embodied on a non-transient computer-readable medium which when executed implement the above-defined method is also provided.
The term “end-to-end bandwidth” used herein is not intended to be restricted to a situation where the bandwidth is estimated between a source and a final destination. In the present context, end-to-end bandwidth relates to the situation where so called intelligent operations occur at the end points of a communication system, in contrast with a model of intelligent operations being carried out in the communication network itself. The end-to-end principle is one of the central design principles of the current internet, and applies to many other network communication systems. A benefit of the end-to-end principle is that the network does not have to maintain the state of each traffic flow through it, and so network design becomes more simple and robust.
In particular, end-to-end bandwidth can encompass end points which include sender, receiver or overlay/relay nodes which may be situated between the sender and an ultimate receiver.
Another aspect of the invention provides a processor for use in a wireless device for transmitting data over a wireless channel to a receiver, a computer program product comprising program code means which when executed on a processor configure an application to carry out the following steps: providing estimate of end-to-end bandwidth of a communication channel; receive at least one communication related parameter from wireless access circuitry; and modify the estimate of end-to-end bandwidth using the at least one communication related parameter.
The following described embodiments of the present invention combine the advantages of end-to-end rate control with local monitoring at the wireless access level. That is, the local queue assisted rate control described herein allows end points to do the rate control instead of requiring the network to make decisions. The inventors have appreciated that in many cases, the wireless access technology, and particularly the uplink, is the weakest link on a communication channel and thus the most likely source of congestion. By monitoring communication-related parameters at the wireless access level, in particular buffer status indicators, and notifying the application layer, the advantages of end-to-end rate control can be combined with a fast reaction based on information at the wireless access level. Thus, in the following described embodiments, it is possible to react immediately to changes in the local buffer, while maintaining end-to-end rate control should the bottleneck in fact sit elsewhere than in the local wireless uplink.
End-to-end bandwidth estimation can be then at the sender side or the receiver side. That is, the application can be considered to generate the estimate of end-to-end bandwidth at the wireless device (on the send side), for example based on feedback from a remote device such as the sender, perhaps in the form of measuring and low pass filtering the rate of return acknowledgements from the remote device or receiver.
Alternatively, the estimate of end-to-end bandwidth can be carried out on the receive side, and the application can be configured to receive an estimate of end-to-end bandwidth from a remote device or the receiver.
Thus, it is possible to monitor a local buffer provided at the wireless access circuitry constantly, and to immediately react to congestion by notifying the application as soon as congestion is detected. Because the feedback from the wireless access level can be direct measurements of the buffer queue status at that level, they are much more reliable than queuing estimates underlying end-to-end delay-based rate control, because the latter can be contaminated by clock-offset problems and network artefacts, such as a Wifi beacon search.
For a better understanding of the present invention to show how the same may be carried into effect, reference will now be made to the following drawings.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a schematic block diagram of a communication system;
FIG. 2 is a schematic block diagram of the principles of the present invention;
FIG. 2a is a schematic block diagram of the principles of the present invention;
FIG. 3 is a schematic diagram showing layers in a wireless device;
FIG. 4 is a functional block diagram of one form of bandwidth modification;
FIG. 5 is a functional block diagram of another form of bandwidth modification;
FIG. 6 is a schematic block diagram of wireless access circuit.



DETAILED DESCRIPTION
In the following described embodiments of the invention, in a wireless packet switch communication system (GPRS, UMTS, HSDPA, Wimax, LTE, Wifi etc) the sending side constantly monitors the amount of traffic awaiting transmission in a physical (network) layer. Information pertaining to this buffered data at the physical layer is fed to an application layer to facilitate improved rate control. Specifically, in one embodiment, it is shown how to combine such information with end-to-end rate control to achieve a more agile rate controller.
FIG. 2 is a schematic block diagram illustrating the principles underlying the present invention. A bandwidth modification function implemented by processing code at the application layer receives an estimate of bandwidth BW_e2e from an application executing in the application layer, typically from a rate control part of the application, and further receives communication-related parameters d(k), c(k) and s(k) from a lower protocol layer responsible for wireless access. The modification function provides a modified estimate of the bandwidth BW(k).
A schematic version of the context of the invention is described with reference to FIG. 2A. A transmitter 4 sends real time data (for example, audio and/or video) to a receiver 6 over a packet-based network such as the Internet 2. The transmitter 4 uses a wireless access technology such as UMTS, HSDPA, Wimax, LTE, Wifi etc. to access the Internet, whereas the receiver 6 can use any technology (wired or wireless).
The transmitter is a wireless device which includes a microprocessor 8 which executes programs in the form of code which can be held locally in the microprocessor 8 or in a memory connected to it. The wireless device 4 has a radio access chip 10 for transmitting and receiving radio frequency (RF) communications between the wireless device 4 and the network 2.
RF communications between the wireless device 4 and the network 2 take place by transmitting and receiving RF signals over radio channels by the radio access chip 10.
The wireless device can be any piece of user equipment (UE) which supports at least one radio access technology, for example, GPRS, UMTS, HSDPA, Wimax, LTE or Wifi. Software for execution by the processor is organised in a protocol stack of the type illustrated in FIG. 3. FIG. 3 illustrates only one example of a stack—there are many variations currently in use and the invention can be applied in any type of stack. The stack exemplified in FIG. 3 includes an application layer 12, a transport layer 14, an Internet layer 16 and a link layer 18. The link layer is subdivided into a physical link layer 20 and a media access control (MAC) layer 22.
The link layer is responsible for organising communication technologies for the device 4. The media access control layer 22 within the link layer 18 is responsible for addressing, assigning multiple channels to different users and avoiding collisions, amongst other things. In particular, it is responsible for controlling the operational mode of the radio. It contains a buffer for queuing data to be transmitted and monitoring circuitry, discussed more fully later. Each layer can communicate with its equivalent layer in a different wireless device—the link layer 18 communicates with a corresponding link layer in a different device at the level of RF data in the form of frames.
The Internet layer provides Internet communications in the form of packets carrying IP (Internet Protocol) data with IP headers, and is responsible for IP addressing.
The transport layer 14 runs host to host communications according to the transmission control protocol (TCP) or a user datagram protocol (UDP), for example. In this context, a host is any kind of user equipment seeking to communicate wirelessly.
The application layer 12 handles application-based interactions on a process-to-process level between communicating hosts. It is this layer that runs user applications which may generate data to be transmitted over the channel. Thus, embodiments of the invention are described in the context that a user equipment runs at least one application that connects to the Internet 2 through at least one of the radio access technologies through the media access control layer 22.
The invention can be used with a number of different applications, but one particular context concerns social communications, such as VoIP (Voice over Internet Protocol) calls between UE's, instant messaging (IM) chat or live meetings run over a conference framework. Alongside these kind of services, applications can be responsible for data transfer, such as file transfer, updating presence information for contacts in a social network, or control data such as “keep-alive” data.
Preferably, the application sending the real-time data over the Internet has an end-to-end rate control scheme implemented to determine the coding rates of the real-time data. This end-to-end scheme can be any method known in the art, such as described in Jacobson, V., Congestion Avoidance and Control, ACM Computer Communications Review, 18(4):314-329, August 1988. Such schemes generally fall into two categories:
Receiver based, where the receiving side estimates the proper bandwidth to use over the end-2-end connection based on reception of the data.
Transmitter based, where the transmitting side decides on the bandwidth to use based on special feedback fed back from the receiver.
In either case, the estimate of end-to-end bandwidth provided by the application is referred to as BW_e2e. Information on which the end-to-end rate control is based must traverse the network from the receiver to the transmitter; thus it will be subject to delay. Thus, in case of congestion somewhere on the network path, the transmitter reaction to it will be delayed accordingly, and the congestion problems become worse.
In an alternative, but not preferred, embodiment the end-to-end estimate may simply equal the recent sending rate but such an approach can be problematic if the bottleneck sits elsewhere.
The inventors have appreciated that in many cases, the wireless access technology, and especially its uplink, is the weakest link on a communication path, and thus the most likely source of congestion. This congestion will manifest as a build-up of a packet queue in the same device or computer as is running the real-time application, however, at a different network layer. In the described embodiments of this invention, the lower network layers 20, 22 continuously inform the application layer about the state of their internal buffer or other communication-related parameter monitored at the wireless level. This information may comprise one or more of the following parameters:

    
    
        The current buffer size in time (d(k)), bytes (N(k)), or similar. The two can be interchanged by the relation N(k)=d(k)*R(k) with R(k) being the recent sending rate, and thus we can write d(k) in the following without loss of generality.
        A specialized congestion indication parameter, c(k).
        Antenna signal-to-noise ratio (SNR) or similar, s(k).
        An indication of traffic sent by other applications (cross-traffic), for example, Xtr(k)=tr_0(k)/tr_tot(k), where tr_0 is the applications own sending rate and tr_tot is the total sending rate of all applications.

where k is a counting index. This information may be fed at predetermined intervals, or preferably adaptively, so that urgent information like congestion is given to the application layer immediately when it occurs.

    
    


A time average of above-mentioned parameters can also be utilised.
An example implementation of c(k) is to set c(k)=1 when d(k) exceeds a pre-specified threshold, and back to 0 when it goes below another lower threshold.
The information fed from the lower network layers is used to modify the end-to-end bandwidth estimate. For example, we can use the parameters to find a correction term to the end-to-end bandwidth:

BW(k)=BW_e2e(k)+f(p(k))  (1)

Where p(k) is the aggregation of present and past values of d(k), c(k) and s(k).

In a preferred embodiment we use for f( ):

f(p(k))=min(beta*BW_e2e(k),alpha(k)*BW_e2e(k)*(d_target−d_aggr(k))  (2)

Where d_target is a constant, alpha(k) is a stepsize factor and d_aggr is an aggregated delay value, calculated from the generalized parameter set p(k) of current and past values. Limiting f(p(k)) is necessary should the bottleneck sit elsewhere in the network; suggested value is in range beta=0.0-0.05.
As for the calculation of d_aggr(k) there are many options. Generally, the values should be smoothed to avoid rapid variation, but still allow for quick reaction to congestion. This can be obtained through adaptive smoothing. FIG. 4 is a schematic block diagram of smoothing of a combined instantaneous value d_inst(k). A combined observation d_inst(k) is generated by a combination function 40, and smoothed by a smoothing function 42. The smoothed value d_aggr(k) is updated quickly if it is smaller than the current instantaneous observation d_inst(k), otherwise it is updated slowly. Mathematically, this can be expressed as:












if ( d_aggr(k) < d_inst(k) )


 d_aggr(k) = lambdaFast * d_aggr(k) + ( 1 − lambdaFast ) * d_inst(k)


else


 d_aggr(k) = lambdaSlow * d_aggr(k) + ( 1 − lambdaSlow ) * d_inst(k)


with 0.5 < lambda[Slow/Fast] < 1, and lambdaFast < lambaSlow.









The combined observation, d_inst(k) can be generated by combining the instantaneous values of some or all of d(k), c(k) and s(k). Examples are:

    
    
        Use the average queue delay reported from link layer directly:

d_inst(k)=d(k).

        Aggregate the congestion indicator by counting consecutive congestion indicators, f. e.g.
    
    
















if ( c(k) )



 c_count(k) = min( max_count, count(k−1) + 1 );



else



 c_count(k) = max(0, c_count(k−1) − 1);



And then 



 d_inst(k) = max( d(k) , d_c * c_count(k) ),



with a reasonable value for d_c being e.g. 150 ms.









    
    
        The preferred embodiment takes s(k) into account to take a bigger step when signal quality degrades:

d_inst(k))=max(d(k),snrboost(k)*d_c*c_count(k))

With snrboost being determined from any recent drop in signal quality: snrboost=max(1, s_avg(k)−s(k)),

with s_avg(k) being an average of recent values of s(k).

    
    


In some cases, not all of the parameters d(k), c(k) and s(k) are available; in this case, the equations listed above can be used directly if setting the missing parameters to 0. However, to provide a significant improvement, at least one of d(k) or c(k) must be available: these can be termed buffer status indicators, because they relate to traffic congestion at the link layer 18.
A potential problem of the method described above is that another application running in the same environment may not be listening to the feedback, thus not reacting to congestion. Such an application could gradually steal all available bandwidth from applications reacting properly. Therefore, in a preferred embodiment, we take Xtr(k) into account also. One way of doing this is to let alpha(k) in Equation (2) depend on Xtr(k). For example, if Xtr(k)=tr_0(k)/tr_tot(k) as suggested above:

alpha(k)=alpha0*max(0,Xtr(k)−Xtr0)/(1−Xtr0).

With 0<Xtr0<1, e.g. Xtr0=0.5. This way, the back-off steps taken will be smaller as the application's share of the total traffic reduces.

The bandwidth adaptation function 44 processes the estimate of e2e_BW with the local link information to provide the modified estimate of bandwidth for the application to use in setting the data transmission rate.
It will be appreciated that the equations above are only example embodiments, and many variations are possible. Similarly, it is possible to interchange the parameter smoothing and combinations steps as shown in FIG. 5 where individual smoothing functions 50, 52, 54 are applied to each respective parameter prior to a combination function 56 and BW adaptation function 58.
FIG. 6 is a schematic block diagram of a radio access chip 10 showing only components relevant for implementing embodiments of the present invention. The chip provides an antenna 66 with associated RF processing circuitry which allows the chip 10 to transmit and receive RF data. As described above, such data can include the feedback and/or estimates of bandwidth when controlling rate using end-to-end bandwidth estimates. In addition, the data can include data from the application layer which is to be transmitted over the communication channel. The chip is also illustrated to include the buffer 60 and monitoring circuitry 64 which monitors wireless conditions on the communication channel, for example, signal-to-noise ratio to provide the parameter s(k). The chip 10 also includes logic 62 for generating the special congestion indicators c(k) based on the buffer status indicator d(k). Connections between the chip 10 and the other layers in the device are shown schematically only by arrows in and out of the chip—it will be evident how such connection can be implemented in practice to receive data from the application to be transmitted, and to supply the communication-related parameters from the chip 10 in the link layer 18 to the application in the application layer 12.

## Claims

1. A method for controlling transmission of data by an application in a wireless user terminal, over a communication channel to another user terminal, the method comprising:
providing an estimate of end-to-end bandwidth of the communication channel between the wireless user terminal and the other user terminal;
receiving, at the application, from a media access control layer of a protocol stack in the wireless user terminal, at least one communication-related parameter; and
modifying, in the application, the estimate of end-to-end bandwidth using the at least one communication-related parameter.

2. The method of claim 1, wherein the at least one communication-related parameter comprises an indication of a quantity of data in a buffer of the media access control layer.

3. The method of claim 2, wherein the indication comprises at least one of an indication in time or bits.

4. The method of claim 1, wherein the at least one communication-related parameter comprises a congestion indicator parameter.

5. The method of claim 1, wherein the at least one communication-related parameter comprises a wireless signal quality parameter determined by wireless access circuitry.

6. The method of claim 1, wherein the at least one communication-related parameter comprises a recent sending rate and wherein the modifying the end-to-end bandwidth of the communication channel comprises setting the estimated end-to-end bandwidth equal to the recent sending rate.

7. The method of claim 1, wherein modifying the estimate of the end-to-end bandwidth comprises using an aggregate of a plurality of different communication-related parameters.

8. The method of claim 7, wherein the aggregate is smoothed over time, and wherein the smoothed aggregate is used in modifying the estimate of end-to-end bandwidth.

9. The method of claim 8, wherein an update rate of the smoothed aggregate is dependent on a difference between a current smoothed aggregate value and an observed instantaneous value of the aggregate.

10. The method of claim 1, further comprising operations of controlling a transmission rate of the data from the wireless user terminal based on the modified estimate of end-to-end bandwidth.

11. The method of claim 1, wherein the application is configured to generate the estimate of end-to-end bandwidth at the wireless user terminal.

12. The method of claim 1, wherein the application is configured to receive an estimate of end-to-end bandwidth from the other user terminal.

13. The method of claim 1, wherein the at least one communication-related parameter is received at predetermined intervals from the media access control layer.

14. The method of claim 1, wherein the at least one communication-related parameter is received at an adaptive rate based on changes in the at least one communication parameter.

15. The method of claim 1, wherein the application is one of a Voice over IP (VoIP) application, an Instant Messaging (IM) application, or a conferencing application.

16. A wireless device comprising:
a processor;
a computer-readable medium; and
an application stored on the computer-readable medium that, when executed on the processor, is configured to perform operations for controlling transmission of data from the wireless device to a receiver connected via a communication channel, the operations comprising:
providing an estimate of end-to-end bandwidth of the communication channel between the wireless device and the receiver;
receiving, at the application from a media access control layer of a protocol stack in the wireless device, at least one communication-related parameter; and
modifying in the application the estimate of end-to-end bandwidth using the at least one communication-related parameter.

17. The wireless device of claim 16, wherein the at least one communication-related parameter comprises an indication of a quantity of data in a buffer of the media access control layer.

18. The wireless device of claim 16, further comprising operations of controlling a transmission rate of the data from the wireless device based on the modified estimate of end-to-end bandwidth.

19. One or more computer-readable storage memories storing instructions of an application in a wireless device for controlling transmission of data over a communication channel in a wireless device, the instructions executable by one or more processors to perform operations comprising:
providing an estimate of end-to-end bandwidth of the communication channel;
receiving, at the application, from a media access control layer of a protocol stack in the wireless device, at least one communication-related parameter, the at least one communication-related parameter including a recent sending rate; and
modifying, in the application, the estimate of end-to-end bandwidth by setting the estimated end-to-end bandwidth equal to the recent sending rate.

20. One or more computer-readable storage memories comprising instructions of an application for controlling transmission of data over a communication channel in a wireless device, the instructions executable by one or more processors to perform operations comprising:
providing an estimate of end-to-end bandwidth of the communication channel;
receiving, at the application, from a media access control layer of a protocol stack in the wireless device, at least one communication-related parameter; and
modifying, in the application, the estimate of end-to-end bandwidth using the at least one communication-related parameter, the modifying the estimate of end-to-end bandwidth comprising using an aggregate of a plurality of different communication-related parameters,
wherein the aggregate is smoothed over time, wherein the smoothed aggregate is used in modifying the estimate of end-to-end bandwidth, and wherein an update rate of the smoothed aggregate is dependent on a difference between a current smoothed aggregate value and an observed instantaneous value of the aggregate.