src/devices/wifi/wifi.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 05 Nov 2007 16:31:52 +0100
changeset 2066 4477ee7d0798
parent 2061 e78f3fc300b6
child 2217 0b4567d545de
child 2285 7c716f6fc4de
permissions -rw-r--r--
test propagation losses
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/**
2061
e78f3fc300b6 define a new dox module
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2059
diff changeset
     2
 * \defgroup Wifi Wifi Models
e78f3fc300b6 define a new dox module
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2059
diff changeset
     3
 *
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 * \section Wifi Models
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 *
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * The set of 802.11 models provided in ns-3 attempts to provide
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * an accurate MAC-level implementation of the 802.11 specification
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 * and to provide a not-so-slow PHY-level model of the 802.11a
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * specification.
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 *
2059
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    11
 * The current implementation provides roughly 4 levels of models:
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 *   - the PHY layer models
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *   - the so-called MAC low models: they implement DCF
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 *   - the so-called MAC high models: they implement the MAC-level
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 *     beacon generation, probing, and association state machines.
2059
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    16
 *   - a set of Rate control algorithms used by the MAC low models.
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    17
 * 
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 *
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 * We have today 3 MAC high models:
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
 *   - a simple adhoc state machine which does not perform any
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
 *     kind of beacon generation, probing, or association. This
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
 *     state machine is implemented by the ns3::AdhocWifiNetDevice
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
 *     class.
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
 *   - an active probing and association state machine which handles
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
 *     automatic re-association whenever too many beacons are missed
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
 *     is implemented by the ns3::NqstaWifiNetDevice class.
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
 *   - an access point which generates periodic beacons, and which
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
 *     accepts every attempt to associate. This AP state machine
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
 *     is implemented by the ns3::NqapWifiNetDevice.
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
 *
2059
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    31
 * The MAC low layer is split in 3 components:
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    32
 *   - ns3::MacLow which takes care of RTS/CTS/DATA/ACK transactions.
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    33
 *   - ns3::Dcf which implements the DCF function.
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    34
 *   - ns3::DcaTxop which handles the packet queue, packet fragmentation,
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    35
 *     and packet retransmissions if they are needed.
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    36
 *
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    37
 * The PHY layer implements a single model in ns3::WifiPhy.
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
 *
2059
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    39
 * It also provides a set of Rate control algorithms:
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    40
 *   - ns3::ArfMacStations (initialized from \valueref{WifiArfTimerThreshold}, and,
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    41
 *     \valueref{WifiArfSuccessThreshold})
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    42
 *   - ns3::AArfMacStations (initialized from \valueref{WifiAarfMinSuccessThreshold},
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    43
 *     \valueref{WifiAarfMinTimerThreshold}, \valueref{WifiAarfSuccessK}, 
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    44
 *     \valueref{WifiAarfMaxSuccessThreshold}, and, \valueref{WifiAarfTimerK}
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    45
 *   - ns3::IdealMacStations (initialized from \valueref{WifiIdealRateControlBerThreshold})
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    46
 *   - ns3::CrMacStations (initialized from \valueref{WifiConstantDataRate}, and,
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    47
 *     \valueref{WifiConstantCtlRate}).
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    48
 *
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    49
 * The type of rate control algorithm is controlled through \valueref{WifiRateControlAlgorithm}.
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    50
 *
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
 *
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
 * \section Wifi Tutorial
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
 *
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
 *
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
 */