The present invention is directed to implementation of priorities QoS in an IEEE 802.11 network.
As wireless IEEE 802.11 based networks become ubiquitous, the need to provide Quality of Service (QoS) to applications has become more important than ever. The IEEE 802.11 standardization organization provides QoS enhancements of the IEEE 802.11 Media Access Control (MAC) protocol, which is based on two paradigms: parameterized QoS and prioritized QoS. WME (Wireless Multimedia Extensions) defines the subset of prioritized QoS for IEEE 802.11. While parameterized QoS uses a central scheduler to grant medium access, prioritized QoS uses a more distributed approach that differentiates traffic based on priority, thereby providing prioritized access to the shared medium. Prioritized access assumes that different traffic types, like voice, video, and data, are treated differently during the arbitration process between stations desiring to transmit simultaneously. WME defines four access categories (ACs) that each use different access parameter values. The access parameter values determine how the transmission contention mechanisms operate, as well as the durations the station can own the medium access. The WME access parameters are: AIFS (arbitration interframe spacing), cwmin (contention window minimum value), cwmax (contention window maximum value), and txoplimit (transmit opportunity limit duration).
To implement prioritized medium access, IEEE 802.11 assumes that a different queue is used for each AC. Referring to
Unfortunately, implementing four separate transmit queues has proven to be costly. Also, since the transmit queues have been conventionally implemented in hardware due to IEEE 802.11 timing requirements, four separate transmit queues require a large amount of integrated circuit real estate as well as power. Because many devices that utilize IEEE 802.11 are wireless, portable, and operate on battery power, it is desirable to reduce the power requirements, cost, and size of the transmission hardware. In addition, it is desirable to provide a way to implement at least a portion of what has traditionally been transmission hardware, as software. This may allow a more simplified hardware design and provide for flexibility in updating and revising the software portion.
Aspects of the present invention are directed to providing a transmit queue to transmit a plurality of access categories in an IEEE 802.11 system. For example, a single transmit queue may be used to transmit packets associated with all four different WME access categories. In doing so, power and integrated circuit space requirements associated with a transmit queue may be reduced by up to fourfold, and possibly more.
Further aspects of the present invention are directed to modifying frame descriptors that provide the logical interface between the NIC and the host computer to include access parameters for the packets that are associated with the frame descriptors. This allows transmission hardware to dynamically change how each packet is transmitted. For example, the contention policies may be implemented on a packet-by-packet basis, even from a single transmit queue.
Still further aspects of the present invention are directed to inserting packets of various access categories into appropriate positions within the same transmit queue. In this way, higher priority packets may be transmitted with less delay than lower priority packets.
These and other aspects of the invention will be apparent upon consideration of the following detailed description of illustrative embodiments.
The foregoing summary of the invention, as well as the following detailed description of illustrative embodiments, is better understood when read in conjunction with the accompanying drawings, which are included by way of example, and not by way of limitation with regard to the claimed invention.
Referring to
The transmit path includes a priority resolver 204 and a transmit engine 205. The priority resolver 204 assigns an access category (AC) to each MSDU packet and forwards the MSDU packets to the transmit engine 205. The IEEE 802.11 standard defines four ACs: Background, Best Effort, Video, and Voice. Depending upon the AC assigned to a particular MDSU packet, the transmit engine 205 applies one or more enhanced distributed channel access function (EDCA) access parameters to the packet, such as the defined transmit opportunity limit duration (txoplimit), arbitration inter frame space (AIFS) interval, and/or the contention window (CW) interval (designated by CWmin and CWmax). Each packet may carry its own access parameters, and so the access parameters may be set on a per packet basis. The access parameters may be part of, e.g., the frame descriptor, which has conventionally been used to create linked buffer lists.
The transmit engine 205 also incorporates a mechanism for accessing the shared wireless medium via a lower layer 206, and for transmitting the packets as MAC payload data units (MPDUs) into the shared medium. Such a mechanism includes a transmit queue. However, unlike conventional WME QoS transmission systems having a different dedicated queue for each AC, the transmit queue may be a single transmit queue that is shared between or among a plurality of ACs. For example, a single transmit queue may be used for two, three, or all four ACs. Where the single transmit queue is used for less than all of the ACs, an additional one or more transmit queues may be used for the remaining ACs.
The priority resolver 204 may more easily be implemented in software since its timing requirements are not as strict as those of the transmit engine 205. However, the priority resolver 204 may be implemented in software and/or hardware. The priority resolver 204 maintains the order of the transmit queue 307 and generates the access parameter structure for each packet. The priority resolver 204 receives an MSDU packet from the upper layer 203, along with the priority information associated with the MSDU packet, such as an IEEE 802.1D tag of the data packet. The priority resolver 204 uniquely maps each 802.1D tag into a corresponding AC and/or corresponding access parameters (AIFS, CWmin, and/or CWmax) as shown in Table 1. The priority resolver 204 fills in the access parameter into the corresponding access parameter info structure that it associates with the packet. The access parameters may be updated following reception of changed access parameter values transmitted in the beacon by the access point. As previously mentioned, the access parameters may be part of the frame descriptor.
The priority resolver 204 may insert the packet into the transmit queue 307 based on the priority and/or arrival time of the packet. The transmit queue 307 may be implemented as, e.g., a linked list. When inserting a packet into the transmit queue 307, the priority resolver 204 may parse the linked list and insert the packet behind the last packet of equal priority already stored in the transmit queue 307. If there are no packets in the transmit queue 307 of equal priority, then the packet is inserted behind a packet having the next highest priority. If there are no packets having a higher priority, then the packet is inserted at the start of the transmit queue 307. For example, referring to
The operation of the priority resolver 204 is discussed with reference to
Steps 906-912 determine where the insertion packet should be inserted in the transmit queue 307. In step 906, a pointer is established that points to a particular position within the transmit queue 307. That position will be referred to as the current queue position. The pointer is initialized to point to the start of the transmit queue 307. In step 907, the priority resolver 204 determines whether the current queue position is at the end of the transmit queue 307. As previously mentioned, the current queue position at this point in the process is the start of the transmit queue 307, not the end. Thus, at step 909, the priority resolver 204 reads the 802.1D field associated with whichever packet is at the current queue position in the transmit queue 307. In step 910, if the 802.1D priority of the insertion packet is greater than the priority of the packet in the current queue position, then in step 911 the insertion packet is inserted into the transmit queue 307 one position ahead of the current queue position. However, if the priority of the insertion packet is not greater than the priority of the packet in the current queue position, then in step 912 the pointer is incremented such that the current queue position moves backward in the queue by one position. Steps 906-912 are repeated as needed until the insertion packet is inserted into the transmit queue 307. If the current queue position has been incremented to the end of the transmit queue 307, then in step 908 the insertion packet is inserted at the end of the transmit queue 307.
A packet may be inserted in the transmit queue 307 in any of a number of ways depending upon how the transmit queue 307 is implemented. For example, where the transmit queue 307 literally contains the substances of the packets, then the insertion packet is inserted by physically copying the insertion packet into a memory location of the queue. More likely, however, the transmit queue 307 is actually a linked list that links to the frame descriptors of the packets “contained” in the transmit queue 307. Each frame descriptor contains a reference to the next frame descriptor in the transmit queue 307. In this case, the insertion packet may be inserted simply by adding a reference to the insertion packet into a memory location of the transmit queue 307.
While the priority resolver 204 maintains the transmit queue 307, the transmit engine 205 transmits the packets in the transmit queue 307 in accordance with the access parameters associated with the packets. Thus, the transmit engine 205 may be dynamically programmable in accordance with the access parameters of the packets that are to be transmitted. The transmit engine 205 may operate as shown, for example, in
Following an initial access grant, the transmit engine 205 loads the txoplimit of the frame to be transmitted that is carried in the frame descriptor into a txop duration timer (part of the MAC finite state machine 1001). The actual transmit time plus the time for acknowledgement and overhead is deducted from the txop duration timer according to the rules defined in 802.11e/WME. The transmit engine 205 maintains ownership of the shared wireless medium until either the txop limit duration counter reaches zero or no packet is to be transmitted with same 802.1D tag or access category, respectively. The txop duration timer may be set only once after obtaining the initial transmit opportunity following the medium access arbitration process. Subsequent transmission with the same transmit opportunity preferably would not cause the txop duration timer to be reset.
In alternative embodiments used for existing hardware solutions and application specific devices that generate one type of data with a fixed priority, access parameters may be adjusted on a per-packet basis via explicit configuration of the hardware using configuration registers. For this purpose, the access parameters may be programmed into the hardware prior to the transfer of the MPDU into the transmission engine 205. As a result the host may invoke multiple operations for configuring the hardware prior to transmission. Depending on the hardware interface, the packet may be written to the hardware via input/output commands, or an isolated short buffer (e.g., a transfer buffer) may be created from which the transmission engine 205 fetches the data using, e.g., direct memory access (DMA). Where such input/output commands are used, the hardware may be configured with the appropriate access parameter values before a packet is written into the input/output registers of the transmission engine 205. In the case of DMA, the hardware may be configured prior to copying the MPDU into the transmit buffer.
While illustrative systems and methods as described herein embodying various aspects of the present invention are shown by way of example, it will be understood, of course, that the invention is not limited to these embodiments. Modifications may be made by those skilled in the art, particularly in light of the foregoing teachings. For example, each of the elements of the aforementioned embodiments may be utilized alone or in combination with elements of the other embodiments. Also, the invention has been defined using the appended claims, however these claims are exemplary in that the invention is intended to include the elements and steps described herein in any combination or sub-combination. It will also be appreciated and understood that modifications may be made without departing from the true spirit and scope of the invention.