The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different instances in the description and the figures may indicate similar or identical items.
In the following discussion, an exemplary environment and devices are described which may provide and/or utilize techniques to accomplish multiple network connections. Exemplary procedures are then described which may be employed by the exemplary environment and/or devices, as well as by other environments and/or devices without departing from the spirit and scope thereof.
Exemplary Devices
The network connections are illustrated in the environment 100 of
The client 102 may be configured in a variety of different ways. For example, the client 102 is illustrated in the environment 100 of
Processors are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, processors may be comprised of semiconductor(s), transistors (e.g., electronic integrated circuits (ICs)), and/or a variety of other mechanisms. In such a context, processor-executable instructions may be electronically-executable instructions. For example, the processor 110 may execute one or more modules in response to inputs received from the cursor control device 116. Additionally, although a single memory 112 is shown, a wide variety of types and combinations of memory may be employed, such as random access memory (RAM), hard disk memory, removable medium memory, and other types of computer-readable media.
The client 102 is illustrated as executing a communication module 118 and a plurality of applications 120(1)-120(A) on the processor 110, which are also storable in memory 112. The applications 120(1)-120(A) are representative of functionality that may employ particular data for a particular purpose. For example, one or more of the applications 120(1)-12o(A) may be configured as stand-alone modules, such as a word processor, a spreadsheet application, a browser, and so on that consume and/or generate particular data, such as documents, spreadsheets and web pages, respectively. Further, the applications 120(1)-120(A) may be configured to support Voice-over-Internet Protocol (VoIP), Internet Protocol Television (IPTV), online gaming, file transfer protocol (FTP), and so on. Additionally, applications 120(1)-120(A) may be combined to incorporate different types of data, such as a media player that includes an application 120(1) for audio data and another application 120(A) for video data. Thus, applications 120(1)-120(A) are not limited to stand-alone programs but may also be representative of uses of particular data. A variety of other instances are also contemplated.
The communication module 118 is representative of functionality to manage client 102 use of network connections in the environment 100, such as use of wired connections (e.g., the POTS) and/or wireless connections (e.g., local area and/or wide area wireless networks provided by the respective base stations 106(1)-106(B), 108(c)). For example, the communication module 118 may employ Macro-Spatial-Multiplexing (MSM) to transmit data between base stations and the client 102 in overlapped coverage regions “between” the base stations (e.g., base stations 106(1)-106(B), 108(c)). The client 102, for instance, may receive different data from different base stations in order to distribute its traffic load among the base stations 106(1)-106(B), 108(c). Additionally, this data may be received from and/or transmitted using homologous sources (e.g., networks employing the same transfer protocols and/or standards) or heterogeneous sources (e.g., networks that do not employ the same transfer protocols and/or standards), such as the wide area network base stations 108(c) and the local area network base stations 106(1)-106(B).
For example, each of the base stations 106(1)-106(B), 108(c) may have a respective coverage area which overlaps with one or more other base stations. Through execution of the communication module 118, when the client 102 is within an overlapped region in a wireless network, it can transmit signals to and receive signals from a plurality of the base stations 106(1)-106(B), 108(c). Thus, rather than employ traditional techniques which view network traffic to a single client as a single entity, a plurality of network connections may be leveraged by the client 102.
For example, the data traffic from/to the client 102 may be divided into different portions, each of which travels through different base stations 106(1)-106(B), 108(c). Thus, this technique may be referred to as Macro-Spatial-Multiplexing (MSM) since different base stations 106(1)-106(B), 108(c) carry different data. MSM may be performed in a variety of ways, such as between different operators (e.g., each of the base stations 106(1)-106(B), 108(c) is associated with a different service provider), heterogeneous networks, homogeneous networks, and so on, further discussion of which may be found in relation to the following figure.
One such technique of MSM is to multiplex traffic from/to the client 102 at the packet level among different base stations. For example, the client 102 may communicate a data flow 202 from an application 120(1) over a plurality of network connection devices 114(1), 114(2) such that a first group of packets 204 are transmitted to the base station 108(c) while a second group of packets 206 are transmitted to another base station 106(1). In an implementation, the packets 204 received by base station 108(c) do not match the packets 206 received by base station 106(1). It should also be noted that in this example the packets 204, 206 are communicated over heterogeneous networks.
Another technique of MSM is to share traffic from/to the client 102 at the flow level among different base stations. For example, the data flow 208 from application 120(A) is illustrated as being communicated using network connection device 114(N) to base station 106(B) while the data flow 202 from application 120(1) is illustrated as being communicated to at least one other base station, which in this instance is base stations 108(c), 106(1) as previous described. Thus, in this example packets of data pertaining to application 120(A) are handled by base station 106(B) while packets 204, 260 from application 120(1) are handed by other base stations 108(c), 106(1). In this way, MSM at the flow level can reduce system complexity (e.g., routing packets to the right base station), simplify management (e.g., base station coordination, packet reordering, radio resource management), simplify the quantification of system performance metrics (e.g., flow block probability), and so on.
It should be readily apparent that MSM may also be implemented at a variety of other levels as well. For example, in the WiMAX context, one connection can map to multiple application flows, and the sharing may be performed at a connection level. Thus, MSM may provide flexibility to direct traffic among networks. As mentioned previously, traffic from/to a terminal is viewed as an integrated entity in traditional networks. In contrast, MSM enables load sharing at a finer level of resource granularity allowing traffic to be distributed among different base stations. This flexibility may further lead to efficient usage of network resources, reduction of flow block probability, flexibility in network load balancing, and improvement of application performance. Further, these advantages may be magnified when the client experiences relatively “heavy” traffic, the traffics are diversified, and/or the network is saturated. Further, as shown in
MSM may also be utilized to leverage information from the base stations. For example, to balance network loads, the base stations could provide load information, which may then be utilized to pick particular base stations, with which, to send data. Another example is that the base stations could provide resource utilization information and participate in algorithms to efficiently utilize its resource as well as network resource, including other base stations. A third example is that, the base stations could change its admission control logic/algorithms in adapt to the partition and aggregation of client traffic so that the block probability could be reduced. A variety of other examples are also contemplated.
Generally, any of the functions described herein can be implemented using software, firmware, hardware (e.g., fixed logic circuitry), manual processing, or a combination of these implementations. The terms “module,” “functionality,” and “logic” as used herein generally represent software, firmware, hardware, or a combination thereof. In the case of a software implementation, for instance, the module, functionality, or logic represents program code that performs specified tasks when executed on a processor (e.g., CPU or CPUs). The program code can be stored in one or more computer readable memory devices, e.g., memory 112. The features of the techniques described below are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.
Exemplary Procedures
The following discussion describes macro-spatial network multiplexing techniques that may be implemented utilizing the previously described systems and devices. The procedures are shown as a set of blocks that specify operations performed by one or more devices and are not necessarily limited to the orders shown for performing the operations by the respective blocks.
Packets are formed from the data that pertains to the particular application (block 304). The packets, for instance, may be formed by the communication module 118 to include headers that identify a particular order, in which, the packets are to relate, one to another. Therefore, the headers may be used to reorder data included in the packets after transmittal.
The packets are divided to be transmitted via first and second network connections (block 306). For example, the packets may be divided for transmittal to a plurality of base stations (e.g., base stations 106(1), 106(B)) by a single network connection device, such as in a homologous network. In another example, the packets may be divided for transmittal by different respective network connection devices. In yet another example, the packets may be divided for transmittal in a heterogeneous network, such as for transmittal to base station 108(c) and base station 106(1).
The packets are transmitted via the first and second network connections such that the packets transmitted via the first network connection do not match packets transmitted via the second network connection (block 308). The data that is transmitted on the different respective network connections, for instance, may be multiplexed such that it is not substantially shared by each of the connections. Therefore, each of the network connections may be used to transmit data that is not transmitted on another one of the connections, thereby improving bandwidth available to the client 102.
Although transmission has been described, these techniques may also be applied by the client 102 when receiving data over multiple connections. In this example, the client, through execution of the communication module 118, aggregate data contained in packets received wirelessly from a plurality of base stations, in which, one or more of the packets received from a first one of the wireless connections are not received from a second one of the wireless connections. A wide variety of other examples are also contemplated.
The received data is aggregated (block 404). For example, packets may be formed from the received data having headers that identify the respective application 120(1)-120(A) which generated the data and an order, in which, the packets are to be placed, one to another. These packets, for instance, may be combined into a single stream as received from the respective application 120(1)-120(A).
The aggregated data is divided to be transmitted by a plurality of network connection devices (block 406). The data, for instance, may be divided based on a variety of considerations, such as available bandwidth of the respective network connection devices, further discussion of which may be found in relation to
The aggregated data is then transmitted such that each of the plurality of network connection devices transmits data from the plurality of applications (block 408). For instance, network connection device 114(1) and network connection device 114(2) may each transmit packets received from applications 120(1), 120(A). Therefore both applications 120(1), 120(A) may take advantage of multiple network connections. A variety of considerations may be applied to determine which network connection to use to transmit data, further discussion of which may be found in relation to the following figure.
A determination is made as to which of a plurality of network connection devices are to be used to transmit the data based on one or more considerations (block 504). For example, the communication module 118 may make the determination automatically and without user intervention based on a quality of service (QoS) specified for particular data, available bandwidth of network connections provided by the respective network connection devices, cost in transmitting data using the network connections, and so on. Further, this determination may be based on a variety of different “levels”, such as on a “flow” level that related to data from a particular application, on a “per packet” basis, and so on. The data may then be transmitted using the determined network connection device (block 506). A variety of other examples are also contemplated.
Although the invention has been described in language specific to structural features and/or methodological acts, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claimed invention.