openWNS WiFiMAC is a Python module that implements a model to simulate IEEE 802.11 Wireless Local Area Networks.
The WiFiMAC module consists of three different logical entities:
a) A physical layer model that can be used to simulate the transmission of frames over 20/40MHz-wide wireless channels, including
* A SINR-based packet errors dependent on modulation, coding and frame length.
* Capture effect
* Conversion of pre -> post-SINR conversion to simulate MIMO gain
* Channel state detection with virtual and physical carrier sensing
b) A MAC layer that implements the IEEE 802.11 Distributed Coordination Function (DCF) plus
* SINR- and ARQ-based rate adaptation with MIMO support
* Block acknowledgement
* Frame aggregation (A-MPDU)
* Transmission opportunities
c) A Path selection layer for the emulation of IEEE 802.11s-based Wireless Mesh Networks (WMNs).