
Right - as promised, today I shall attempt to explain what I have been doing for the last 18 months as part of my Master's research. My work is in the field of wireless networking and is, basically, a performance study of a channel access control protocol within
IEEE 802.11. More specifically, I am looking how this protocol performs in Internet access networks (like wireless Internet cafes etc.). In order to do this, I shall perform a number of experiments using a test network, kindly provided by research lab (there's a picture of it on the left.
Imagine you put lots of people together in a room and tell them to talk. Normally, there is some form of structure to the conversation and people contend for speaking rights, usually by waiting until there is some idle time in the conversation. If everybody spoke at once, most of the chatter would be indiscernible from the chatter next to you.
In single channel wireless networks things happen in the much same way. Computers contend for access to a shared wireless channel (they can't all just transmit when they want to) using some
medium access control mechanism. There are two broad types of control - (1) contention-based and (2) contention-free. We've already looked at (1) above. In (2) the "conversation" is regulated by some central manager.
IEEE 802.11 (you probably know this by it's commercial name,
WiFi) is a standard for wireless networks. Basically, it provides a guide for manufacturers so that they produce interoperable products; it would really suck if your laptop could only connect to certain wireless networks.
IEEE 802.11 normally operates in one of the license-free channels in the 2.4 GHz or 5.2 GHz ISM bands. However, since
Bluetooth, microwaves and some cordless phones also operate in this band, there's normally lots of interference to contend with. To illustrate this problem, here are two snapshots from a
WiSPY 2.4 GHz spectrum analyser. The first image shows a 30 second recording of near-perfect channel conditions - there is some mild activity on channels 6 and 12. In the second image I turned a microwave on... I think the image speaks for itself.


Technically,
IEEE 802.11 specifies both a contention-based and contention free mechanism to coordinate access to the channel, which they call
DCF and
PCF. However, some naughty companies fought over the "ambiguous" details of
PCF, which resulted in it never being implemented in any products.
Wireless radios have one major problem - you can't transmit and receive at the same time. Even if you could, the signal coming out your antenna would be so powerful that it would be difficult to hear any signal other than your own. Wired networks don't have this problem. In fact, you are able to detect and recover from errors much quicker in wired networks, because of this. In contrast, wireless networks use
collision avoidance strategies to try and limit the number of collisions that occur between stations.
D
CF is what most
WiFi networks use these days (see the figure on the right). In 2005 the
IEEE made a cooler version called
HCF, but it's not used widely enough yet.
DCF stands for the Distributed Coordination Function and it's quite a clever method of coordinating channel access. Without going into too much detail, all that
DCF does is enforce a certain amount of waiting time before it attempts to transmit information. The random waiting time
x(0) is chosen uniformly in the integer range [0, 16] or [0, 32] depending on what type of hardware you have. The station now counts down for x(0) ticks (the time of each tick is really small - either 9 or 20 microseconds, again depending on your hardware). If another station starts transmitting at any point this 'back-off counter' is suspended and resumes again when the channel is sensed idle.
When the counter reaches zero the station tries to send the data. If, after a little bit of time, there is no response from the receiver the sender assumes that a collision took place. To recover from this, a new waiting time x(1) is chosen from an integer range that is double the size of the last one. The station then backs-off again for x(1) ticks and attempts to transmit. The integer range is doubled until it's size in 1024. Thereafter, it stays at that size until a maximum retry counter is met, which normally happens after 5 to 7 retries. If it collides on the last attempt the data is dropped - you have to really be stressing the network to get to this point!
Naturally, this is only a brief intro to
DCF. I haven't even talked about the inter-frame spaces (
SIFS,
PIFS,
DIFS and
EIFS), all of which are crucial to the operation of the protocol - they enforce a hierarchy of actions,
viz. they enforce DATA-
ACK sequences complete before new DATA-
ACK sequences start. There is also an optional four-way handshaking mechanism, in which a station sends a curt warning (called a request to send message, or
RTS) to stations in the area warning about an upcoming transmission. The receiver immediately sends a brief clear to send message, or
CTS, back. The extra two messages tell stations in the area to keep quiet for a while, so as not to crash the party.
Now I could waffle on four hours about DCF (my remaining friends will vouch for that) but to cut straight to the chase -
DCF adds lots of
overhead to the network. When combined with all the headers that are appended to messages, the random back-off process, control packets (
ACK,
RTS and
CTS) and inter-frame spaces used in
DCF eat a huge chunk out of your available network capacity. To give you an idea, modern
WiFi radios can transmit data at up to 54
Mbps (
megaBITS per second) and control packets at up to 24
Mbps. The absolute maximum performance you can get is heavily-dependent on the amount of data in each message. However, in typical cases a standard-abiding network will peak at around 45% efficiency. This means that your network will run at 24.3
Mbps, which is just over three
megaBYTES per second! Now this is shared amongst all users in the network. For example, an 800 MB
XviD movie will take 5 minutes to transfer
accross a wireless network in these optimal conditions, which is significantly longer than on a regular wired network.
Storage : 1 Megabit = 1024 Kilobits = 1024 x 1024 bits
Transmission : 1 Mbps = 1000 Kbps = 1000 x 1000 bits a second
Now, hopefully you understand why wireless networks run so slowly when compared to their wireless counterparts. Although
IEEE 802.11n (an upcoming standard revision) promised to provide much faster transmit rates, the problem of channel coordination remains. I think it's clear why we need models to predict
IEEE 802.11 performance - deploying
Up next in Part II : Modelling Wireless Internet Traffic