src/devices/wifi/wifi.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 07 Aug 2008 11:14:15 -0700
changeset 3517 5ba130a7f519
parent 2595 b504951bcca8
child 4011 2fd3041c3c29
permissions -rw-r--r--
implement WifiNetDevice::SendFrom
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
/**
2217
0b4567d545de Doxygen organization
Tom Henderson <tomh@tomh.org>
parents: 2061
diff changeset
     2
 * \ingroup devices
2061
e78f3fc300b6 define a new dox module
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2059
diff changeset
     3
 * \defgroup Wifi Wifi Models
e78f3fc300b6 define a new dox module
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2059
diff changeset
     4
 *
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * \section Wifi Models
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 *
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * 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
     8
 * 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
     9
 * 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
    10
 * specification.
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 *
2059
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    12
 * 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
    13
 *   - the PHY layer models
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 *   - 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
    15
 *   - 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
    16
 *     beacon generation, probing, and association state machines.
2059
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    17
 *   - 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
    18
 * 
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 *
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
 * 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
    21
 *   - 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
    22
 *     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
    23
 *     state machine is implemented by the ns3::AdhocWifiNetDevice
2285
7c716f6fc4de doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2061
diff changeset
    24
 *     and ns3::MacHighAdhoc classes.
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
 *   - 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
    26
 *     automatic re-association whenever too many beacons are missed
2285
7c716f6fc4de doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2061
diff changeset
    27
 *     is implemented by the ns3::NqstaWifiNetDevice and 
7c716f6fc4de doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2061
diff changeset
    28
 *     ns3::MacHighNqsta classes.
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
 *   - 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
    30
 *     accepts every attempt to associate. This AP state machine
2285
7c716f6fc4de doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2061
diff changeset
    31
 *     is implemented by the ns3::NqapWifiNetDevice and 
7c716f6fc4de doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2061
diff changeset
    32
 *     ns3::MacHighNqap classes.
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
 *
2059
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    34
 * The MAC low layer is split in 3 components:
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    35
 *   - ns3::MacLow which takes care of RTS/CTS/DATA/ACK transactions.
2285
7c716f6fc4de doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2061
diff changeset
    36
 *   - ns3::DcfManager and ns3::DcfState which implements the DCF function.
2059
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    37
 *   - ns3::DcaTxop which handles the packet queue, packet fragmentation,
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    38
 *     and packet retransmissions if they are needed.
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    39
 *
2291
93f5111037d4 add an extra link to the PHY model paper
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2289
diff changeset
    40
 * The PHY layer implements a single model in the ns3::WifiPhy class: the
93f5111037d4 add an extra link to the PHY model paper
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2289
diff changeset
    41
 * physical layer model implemented there is described fully in a paper titled
93f5111037d4 add an extra link to the PHY model paper
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2289
diff changeset
    42
 * "Yet Another Network Simulator", available there: http://cutebugs.net/files/wns2-yans.pdf
2030
e32adc825a74 start of work towards a wifi documentation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
 *
2059
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    44
 * It also provides a set of Rate control algorithms:
2595
b504951bcca8 fix doxygen errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2291
diff changeset
    45
 *   - ns3::ArfMacStations 
b504951bcca8 fix doxygen errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2291
diff changeset
    46
 *   - ns3::AArfMacStations
b504951bcca8 fix doxygen errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2291
diff changeset
    47
 *   - ns3::IdealMacStations
b504951bcca8 fix doxygen errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2291
diff changeset
    48
 *   - ns3::CrMacStations
2285
7c716f6fc4de doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2061
diff changeset
    49
 *   - ns3::OnoeMacStations
7c716f6fc4de doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2061
diff changeset
    50
 *   - ns3::AmrrMacStations
2059
d8b7b2de044e doxygen
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2030
diff changeset
    51
 *
2030
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
 */