This application claims priority under 35 U.S.C. §119 or 365 to Great Britain, Application No. GB1115812.8, filed Sep. 13, 2011. The entire teachings of the above application are incorporated herein by reference.
The present invention relates to transmitting data from a wireless device in a wireless communication system, particularly in a communication system which provides at least first and second wireless access technologies for a communication session.
The communication system comprises a first communication network 6 according to a first wireless access technology, for example, WiFi. The communication system further comprises a second communication network 8 according to a second wireless access technology, for example, WWAN (such as 3G or 4G).
A wireless device has the capability of establishing a communication session via the alternate communication network (for example, WWAN network 8 in
In one type of wireless device, data to be transmitted is generated by an application executed on the device, for example, for social communications such as VoIP (Voice over Internet Protocol) calls, instant messaging (IM) chat or live meetings run over a conference framework.
In existing devices, such as shown in
In another situation, an application loaded into the CPU polls the operating system to assess what network interfaces are available, and assigns IP addresses accordingly. This can be done at set-up of the application and also during runtime. The polling activity is instigated by the application.
According to an aspect of the present invention, there is provided a method of transmitting data from a device in a communications system, the method comprising:
at the device, executing an application which generates data according to an application layer protocol and supplies the data to an access layer for transmission in a communication session over a first channel using a first network interface;
receiving at the application an indication from the access layer of an alternate, second channel for transmission of the data, the second channel using a second network interface;
on receipt of the indication, the application determining whether or not to take action responsive to the indication and, if it determines to do so, opening a second channel for the communication session and supplying data to the access layer for transmission over the second channel.
Another aspect of the invention provides a device arranged to transmit data in a communications system, the device comprising:
a first network interface for transmitting data;
a second network interface for transmitting data;
a processor arranged to execute an application which generates data according to an application layer protocol and supplies the data to an access layer for transmission, the application arranged to supply said data for transmission over a first channel using the first network interface and arrange to receive an indication from an access layer implemented at the device of an alternate, second channel for transmission of the data, the second channel using the second network interface,
the application further arranged, on receipt of the indication, to determine whether or not to take action responsive to the indication and, if it determines to do so, opening the second channel for the communication session and supplying data to the access layer for transmission over the second channel using the second network interface.
Another aspect of the invention provides a computer program product comprising a non-transitory computer readable medium storing thereon computer readable instructions which when executed by a processor carries out the steps of:
generating data according to an application layer protocol and supplying the data to an access layer for transmission in a communication session over a first channel using a first network interface;
receiving an indication from the access layer of an alternate, second channel for transmission of the data, the second channel using a second network interface;
on receipt of the indication, determining whether or not to take action responsive to the indication and, if determined to do so, opening the second channel for the communication session and supplying data to the access layer for transmission over the second channel.
The network interfaces can be wireless or wired.
As the access layer can continuously monitor network conditions, it can determine if the quality of the first channel is deteriorating.
Embodiments of the present invention described in the following are in the context of wireless devices and provide significant advantages over a situation where the wireless interface is determined by an operating system priority list, or where an application had to instigate a query or poll.
In many real life cases, a WiFi network may be available, but of poor quality. For example, the signal strength may be low, or a WiFi router may be overloaded. In such scenarios, data transmitted over the WiFi network is often subject to packet loss or jitter which in turn has severe detrimental effects on real time applications such as voice or video calling. Therefore, using WWAN is a better option, even if WiFi is available. Also, in a scenario where the user moves away from a WiFi router (for example, when leaving home or office), the deterioration of the WiFi connection can be detected and a handover can be effected by the application to the WWAN network before actually losing a connection with the WiFi network, resulting in uninterrupted service.
It will be appreciated that, in contrast, in a situation where an operating system priority list determines the network, there will be a change of network only after the radio chip 224 has informed the operating system that it has lost connection (i.e. that the first network is unavailable).
Furthermore, in some cases, it is advantageous to move an application's traffic from WWAN to WiFi. This is because a good WiFi network typically offers higher bandwidth than a WWAN network, with less battery usage. Also, a WWAN connection may be subject to a limited data plan or per traffic charging, making it a costly resource for the user.
In embodiments of the invention, side information is sent from the application layer to the access layer to influence the indication to take into account such possibilities.
For a better understanding of the present invention and to show how the same may be carried into effect reference will now be made by way of example to the accompanying drawings.
The invention will now be described in the context of a wireless device of the type discussed in relation to
The link layer is responsible for organizing communication technologies for the device 1. The media access control layer 322 within the link layer 318 is responsible for addressing, assigning multiple channels to different users and avoiding collisions amongst other things. In particular, it is responsible for monitoring the quality of different network connections through respective MAC layers 322a, 322b. Each layer can communicate with its equivalent layer in a different wireless device—the link layer 318 communicates with a corresponding link layer in a different device at the level of RF data in the form of frames. Frames are transmitted and received over a channel between the radio access chip 224 (
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. This layer applies IP headers to data packets to define a destination (far end) device—these are distinct from IP addresses applied by the local application to direct a packet of a data stream to a particular network interface as discussed later.
The transport layer 314 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 312 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. For example, the client UI and client engine of
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 US's, instant messaging (IM) chat or live meetings run over a conference framework. Alongside these kinds 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. References to applications running in the application layer in the present cases are considered to encompass all such possibilities.
Reverting to
The aggregator function supplies to a real time communications application 216 executing in the application layer 312 a network indication in the form of a “best access technology” identifier 322 from the MAC layer. The identifier 332 can be provided periodically and/or when it changes. The identifier can take the form of a network socket identifier, e.g. the IP address of a local network interface card (NIC) that uses the “best access technology”, along with an indication of the network type, for example, WiFi or 3G. The “best access technology” chosen in the MAC by the aggregator function may take into account information fed as side information 334 from the real time communications application 216. This side information can consist of parameters such as price of using a certain network type or a score that the application sets for different network types to indicate for example, a general preference for WiFi over LTE, or an estimate of bandwidth.
With reference to
Conversely the application can control which network interface is used by specifying an IP address when opening a socket. So, the application sends data on a specific network interface by opening a socket with its IP address, and then transmitting data on the socket. In fact, the application has no direct access to the IP packet header so it cannot set it itself. Just as an application sends data on a socket, it can listen to it for any incoming data. The application first determines 402 whether or not the identifier 332 identifies a network different to the one which is currently being used by the application for the transmission of data. If there is no change, the application continues to control traffic 404 on the existing network (shown as the WWAN network 8 via layer MAC 2). This is done according to the socket 408 opened by the application for that traffic, which is the IP address of the WWAN network 8 at the port. If there is a change in the network, the application determines, at the determining step, whether or not to use the new network. The response not to change the network can be a reasonable choice, for example if the user has instructed the application not to use a particular access technology, or to use it only when there are no other options. In that case, the application continues to control traffic to the existing network.
If the application determines that it should respond to the identifier 332, it can select a new network 403 and controls some or all of its traffic to the new network (shown by the dotted line in
The application may send to the MAC layer an acknowledgement that it has moved its data to the new network interface. This allows for the MAC layer to power down the access technology that is no longer in use and thus save power.
In the following, the process of moving data to another network interface is referred to as a “handover”.
When data is moved to another network interface, unless the far-side acts as a server and reflects requests to their origin, even though an application moves its outgoing data to another network interface, any incoming data will still arrive on the old one. That is, data transmitted over network 8 would be over a channel where the far side device would be addressing its data to socket 410, even when it should be using socket 412 after handover. Therefore, in a typical peer-to-peer system, it will be necessary to notify the far side about the new destination IP address to use. This is complicated by the fact that the new destination IP address obtained may be a private one that cannot be targeted directly by the far side device. However, well-known so-called Network Address Translation (NAT) traversal techniques exist for this problem.
Thus when applied to a peer-to-peer system, the application sends a message to the far side device identifying the new destination IP address when there has been a change in network interface. It will be appreciated that the far end device 4 is in all important respects similar to the local device 2. Therefore reference will be made to
Moreover, the application may carry out one or more of a number of steps in order to make the transition from one network to another as smooth as possible.
Instead of instantly moving traffic to a new network interface, the application may choose to make use of both the new and the old interface for a while. Outgoing data may be sent redundantly on both interfaces, in order to ensure stable delivery during a “warm up” interval of the new channel. Also the application should continue to monitor both sockets for received data in this interval to avoid disruption in the incoming service.
When switching to a new network, the bandwidth of it is unknown. Therefore, the application can limit its data generation rate in a time interval after moving to a new network interface. The time interval and the data limit may depend on the new access technology. For example, limitation may not be needed at all when moving from 3G to WiFi, whereas, a strict limitation in the ballpark of 100 kbps may be reasonable when moving in the opposite direction. A message can be sent to the far side device to do the same. Alternatively, the far side device is set up to make the limitation when receiving the message 414 to start sending to another IP. Data rate of the local device and/or the far side device can be managed in the respective control traffic function 404. In
The following proposals affect a jitter buffer which is in the path of a received data stream.
A jitter buffer 416 is used at the receiving terminal to order the data packets in the correct sequence and to allow for the concealment of the variations in the propagation of the data packets. The jitter buffer is placed on the receiving path of the terminal and receives incoming data packets from the network. The jitter buffer buffers the incoming packets by introducing a delay before outputting data from the packets. Typically the jitter buffer adapts the delay according to variation in the rate at which the packets are received from the network. The jitter buffer is also arranged to reorder the packets that arrive out of sequence into the correct sequence and to discard packets that arrive too late to be included in the correct sequence. Increasing the delay introduced by the jitter buffer reduces the number of packets that arrive too late to be included in the correct sequence. Increasing the delay introduced by the jitter buffer also conceals larger delays in the propagation of the data packets.
When switching to a new network, some disruption in service may be inevitable. For example, a 3G connection may have 100s of milliseconds higher end-2-end delay as compared to a WiFi connection.
In order to conceal this for the user, jitter buffer delay for data received over any of the connections may be increased for an interval from the handover. Also, a message can be sent to the far side device regarding a handover for it to do the same. That is, when an application determines to move its traffic, it can postpone the actual moving of data for a few seconds, in order to carry out the preparation steps in advance. As an alternative to sending a message to the far side to have it increase its jitter buffer delay, the local side device can gradually introduce jitter, i.e. variations in the transmission rate of packets in its outgoing data stream; this will make an adaptive jitter buffer sitting at the far side increase its delay automatically.
It should be understood that the block and flow diagrams may include more or fewer elements, be arranged differently, or be represented differently. It should be understood that implementation may dictate the block and flow diagrams and the number of block and flow diagrams illustrating the execution of embodiments of the invention. It should be understood that elements of the block and flow diagrams described above may be implemented in software, hardware, or firmware. In addition, the elements of the block and flow diagrams described above may be combined or divided in any manner in software, hardware, or firmware. If implemented in software, the software may be written in any language that can support the embodiments disclosed herein. The software may be stored on any form of non-transitory computer readable medium, such as random access memory (RAM), read only memory (ROM), compact disk read only memory (CD-ROM), flash memory, hard drive, and so forth. In operation, a general purpose or application specific processor loads and executes the software in a manner well understood in the art.
While this invention has been particularly shown and described with references to example embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the invention encompassed by the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
1115812.8 | Sep 2011 | GB | national |