Wireless Phy in ns-3
The goal of this project is to define a common interface to a set of PHY-level models for wireless transmission mediums spanning a large range of wireless transmission systems:
The following sections try to define:
- the characteristics of each wireless transmission system we want to capture
- various models to capture these characteristics
- carrier frequency: b/g: 2.4GHz, a: 5GHz
- The frequencies for 802.11 b/g span 2.400 GHz to 2.487 GHz. Each channel is 22 MHz wide with a 5 MHz step to the next higher channel
- signal spread: 22MHz for 802.11b (DSSS)
- 802.11b transmission modes:
- 1Mb/s: DBPSK + barker PN sequence
- 2Mb/s: DQPSK + barker PN sequence
- 5.5Mb/s: CCK + code spread
- 11Mb/s: CCK + code spread
- 802.11a transmission modes:
- 6Mb/s: BPSK + FEC 1/2
- 9Mb/s: BPSK + FEC 3/4
- 12Mb/s: DBPSK + FEC 1/2
- 18Mb/s: DBPSK + FEC 3/4
- 24Mb/s: QAM16 + FEC 1/2
- 36Mb/s: QAM16 + FEC 3/4
- 48Mb/s: QAM64 + FEC 2/3
- 54Mb/s: QAM64 + FEC 3/4
The MAC layer needs realistic models for the following features:
- interference among multiple stations transmitting at the same time (on the same channel or from a different channel, since not all frequency channels in the 802.11 standard are perfectly orthogonal)
- resistance of different transmission modes to interference: the 54Mbs mode should resist less than the 6Mbs mode
- signal propagation: attenuation and delay. The attenuation must possibly be random
- so-called "capturing": if a high-energy signal is received during the preamble/header reception of another signal, the high-energy signal crushes the low-energy signal
- support for transmissions on different channels. Why would you like to have this feature? Well, you might want to be able to change the channel you are transmitting/receiving on (there exist several papers proposing to do so) or to have concurrent transmissions on different channels (for instance,if you want to simulate several 802.11 networks using different access points).
So, a typical PHY would be characterized by one of 5 states:
- TX: transmitting some bits
- SYNC: receiving some bits
- IDLE: not doing anything, medium is not busy
- BUSY: not doing anything, medium is busy
- SLEEP: sleeping, not listening to the medium for status
The condition for BUSY state is precisely defined for 802.11: it is called CCA state detection. There are multiple CCA modes but mode 1 is based on the total energy measured at the antenna. Support for Mode 2 might be needed.
- some people might need multiple SLEEP states: some SLEEP states are deeper than others, take longer to recover from, etc.
- some people want to model antenna directionality. I have zero idea on how to model this (the attenuation could be a function of the distance and of the "angle" of the tranmission).
- some people claim that an import feature to modelize is the fact that when a collision happens in the real world, it is really hard to correctly receive any of the two packets. A lot of simulation models incorrectly allow you to receive one of the packets with a high probability.
- switch to sync state based on a simple energy threshold when receiving the first bit of the preamble. Use a BER-based probability calculation to decide whether or not to receive a packet.
- A potentially better model would use a threshold on the min SNIR over the preamble and header reception to decide whther or not to sync on a packet. This would allow us to implement "capturing".
- Another variation would use a SER-based model to decide whether or not a packet can be received
- Yet another variation would use a threshold on the min SNIR over the whole packet reception to decide whether or not a packet can be received.