WiFi/802.11

Demonstrates the use of VisualSim to define signal-level WiFi architecture

Top_Wireless_Heir

Browsable image of the model.

  • To download OpenWebStart click on the links -
    Windows- Compatibility:Windows 10 or higher (*)
    macOS - Compatibility:macOS 10.15 (Catalina) or higher (*)
    Linux - Compatibility:Ubuntu 18.04 LTS or higher (*)
  • For an executable version,
  • Mouse over the icons to view parameters. Click on hierarchy and plotters to reveal content (if provided).
  • To simulate, click on Launch button, open downloaded file and click Run on the Java Security Page.
Top_Wireless_Heirmodel <h2>Processing</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Expression_List</td><td>/* Template to enter multiple RegEx lines*/\\n</td><td>/* Template to enter multiple RegEx lines*/\\n</td></tr><tr><td>Output_Ports</td><td>output,latency</td><td>&quot;output,latency&quot;</td></tr><tr><td>Output_Values</td><td>input,(TNow-input.TIME)</td><td>&quot;input,(TNow-input.TIME)&quot;</td></tr></table> <h2>802_11_Frame_Latency</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>fillOnWrapup</td><td>true</td><td>true</td></tr><tr><td>legend</td><td>Latency</td><td>Latency</td></tr><tr><td>startingDataset</td><td>0</td><td>0</td></tr><tr><td>fileName</td><td>Enter Filename to save plot</td><td>&quot;Enter Filename to save plot&quot;</td></tr><tr><td>viewPlot</td><td>true</td><td>true</td></tr><tr><td>savePlot</td><td>false</td><td>false</td></tr></table> <h2>IN2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>&quot;Stats_Out&quot;</td><td>&quot;&quot;Stats_Out&quot;&quot;</td></tr><tr><td>Destination_Type</td><td>Global</td><td>Global</td></tr></table> <h2>Disp_Fast</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Title</td><td>&quot;Access Out&quot;</td><td>&quot;Access Out&quot;</td></tr><tr><td>Lines_Buffered</td><td>5</td><td>5</td></tr><tr><td>Rows_Displayed</td><td>15</td><td>15</td></tr><tr><td>Columns_Displayed</td><td>75</td><td>75</td></tr><tr><td>Font_Type</td><td>Lucida Console</td><td>Lucida Console</td></tr><tr><td>ViewText</td><td>true</td><td>true</td></tr><tr><td>saveText</td><td>false</td><td>false</td></tr><tr><td>fileName</td><td>Enter Filename to save text</td><td>&quot;Enter Filename to save text&quot;</td></tr><tr><td>Append_Time</td><td>true</td><td>true</td></tr></table> <h2>MUX</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Names</td><td>&quot;SYNC, TRIG&quot;</td><td>&quot;&quot;SYNC, TRIG&quot;&quot;</td></tr><tr><td>Destination_Type</td><td>Global</td><td>Global</td></tr></table> <h2>Wireless_STA_1</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Frequency_Mhz</td><td>10.0 /* Test Only */</td><td>10.0</td></tr><tr><td>Access_Point</td><td>false /* Station = false */</td><td>false</td></tr><tr><td>All_Station_Names</td><td>&quot;STA_1 STA_2 STA_3 HUB&quot;</td><td>&quot;STA_1 STA_2 STA_3 HUB&quot;</td></tr><tr><td>SIFS</td><td>5.0e-07 /* Short Inter Frame Space */</td><td>5.0E-7</td></tr><tr><td>DIFS</td><td>1.0e-06 /* Dist Inter Frame Space */</td><td>1.0E-6</td></tr><tr><td>DeltaT</td><td>1.0e-09 /* Smallest Delta Time */</td><td>1.0E-9</td></tr><tr><td>DurationT</td><td>1.0e-06 /* Duration Time */</td><td>1.0E-6</td></tr><tr><td>Slot_Time</td><td>1.0e-06 /* Contention Slot */</td><td>1.0E-6</td></tr><tr><td>Frame_Max_Bytes</td><td>1500 /* Ethernet Size */</td><td>1500</td></tr><tr><td>Frame_Segment_Bytes</td><td>500 /* Max Fragment */</td><td>500</td></tr><tr><td>CTS_ACK_Time</td><td>(14.0 * 8.0 * BIT_Time) /* 14 Bytes */</td><td>1.12E-5</td></tr><tr><td>RTS_Time</td><td>(20.0 * 8.0 * BIT_Time) /* 20 Bytes */</td><td>1.6E-5</td></tr><tr><td>FRAME_Bytes</td><td>34 /* FRAME Overhead */</td><td>34</td></tr><tr><td>BIT_Time</td><td>1.0e-06 / Frequency_Mhz /* Bit Time */</td><td>1.0E-7</td></tr><tr><td>StationName</td><td>&quot;STA_1&quot; /* Unique Name */</td><td>&quot;STA_1&quot;</td></tr></table> <h2>Wireless_HUB</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Frequency_Mhz</td><td>10.0 /* Test Only */</td><td>10.0</td></tr><tr><td>Access_Point</td><td>true /* Station = false */</td><td>true</td></tr><tr><td>All_Station_Names</td><td>&quot;STA_1 STA_2 STA_3 HUB&quot;</td><td>&quot;STA_1 STA_2 STA_3 HUB&quot;</td></tr><tr><td>SIFS</td><td>5.0e-07 /* Short Inter Frame Space */</td><td>5.0E-7</td></tr><tr><td>DIFS</td><td>1.0e-06 /* Dist Inter Frame Space */</td><td>1.0E-6</td></tr><tr><td>DeltaT</td><td>1.0e-09 /* Smallest Delta Time */</td><td>1.0E-9</td></tr><tr><td>DurationT</td><td>1.0e-06 /* Duration Time */</td><td>1.0E-6</td></tr><tr><td>Slot_Time</td><td>1.0e-06 /* Contention Slot */</td><td>1.0E-6</td></tr><tr><td>Frame_Max_Bytes</td><td>1500 /* Ethernet Size */</td><td>1500</td></tr><tr><td>Frame_Segment_Bytes</td><td>500 /* Max Fragment */</td><td>500</td></tr><tr><td>CTS_ACK_Time</td><td>(14.0 * 8.0 * BIT_Time) /* 14 Bytes */</td><td>1.12E-5</td></tr><tr><td>RTS_Time</td><td>(20.0 * 8.0 * BIT_Time) /* 20 Bytes */</td><td>1.6E-5</td></tr><tr><td>FRAME_Bytes</td><td>34 /* FRAME Overhead */</td><td>34</td></tr><tr><td>BIT_Time</td><td>1.0e-06 / Frequency_Mhz /* Bit Time */</td><td>1.0E-7</td></tr><tr><td>StationName</td><td>&quot;HUB&quot; /* Unique Name */</td><td>&quot;HUB&quot;</td></tr></table> <h2>Wireless_STA_2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Frequency_Mhz</td><td>10.0 /* Test Only */</td><td>10.0</td></tr><tr><td>Access_Point</td><td>false /* Station = false */</td><td>false</td></tr><tr><td>All_Station_Names</td><td>&quot;STA_1 STA_2 STA_3 HUB&quot;</td><td>&quot;STA_1 STA_2 STA_3 HUB&quot;</td></tr><tr><td>SIFS</td><td>5.0e-07 /* Short Inter Frame Space */</td><td>5.0E-7</td></tr><tr><td>DIFS</td><td>1.0e-06 /* Dist Inter Frame Space */</td><td>1.0E-6</td></tr><tr><td>DeltaT</td><td>1.0e-09 /* Smallest Delta Time */</td><td>1.0E-9</td></tr><tr><td>DurationT</td><td>1.0e-06 /* Duration Time */</td><td>1.0E-6</td></tr><tr><td>Slot_Time</td><td>1.0e-06 /* Contention Slot */</td><td>1.0E-6</td></tr><tr><td>Frame_Max_Bytes</td><td>1500 /* Ethernet Size */</td><td>1500</td></tr><tr><td>Frame_Segment_Bytes</td><td>500 /* Max Fragment */</td><td>500</td></tr><tr><td>CTS_ACK_Time</td><td>(14.0 * 8.0 * BIT_Time) /* 14 Bytes */</td><td>1.12E-5</td></tr><tr><td>RTS_Time</td><td>(20.0 * 8.0 * BIT_Time) /* 20 Bytes */</td><td>1.6E-5</td></tr><tr><td>FRAME_Bytes</td><td>34 /* FRAME Overhead */</td><td>34</td></tr><tr><td>BIT_Time</td><td>1.0e-06 / Frequency_Mhz /* Bit Time */</td><td>1.0E-7</td></tr><tr><td>StationName</td><td>&quot;STA_2&quot; /* Unique Name */</td><td>&quot;STA_2&quot;</td></tr></table> <h2>Arbiter_802</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Slot_Time</td><td>1.0e-06</td><td>1.0E-6</td></tr><tr><td>Delta_Time</td><td>1.0e-09</td><td>1.0E-9</td></tr></table> <h2>Plot_802</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr></table> <h2>Trans_Src2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Data_Structure_Name</td><td>&quot;Wireless_802_Class&quot;</td><td>&quot;Wireless_802_Class&quot;</td></tr><tr><td>Start_Time</td><td>0.0</td><td>0.0</td></tr><tr><td>Mean_Time</td><td>5.0e-03</td><td>0.005</td></tr><tr><td>Spread_Time</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Mean)</td><td>Fixed (Mean)</td></tr></table> <h2>Statement2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Field_Description_1</td><td>&quot;Frame_Size = Input_Frame_Size_Bytes &quot;</td><td>&quot;&quot;Frame_Size = Input_Frame_Size_Bytes &quot;&quot;</td></tr><tr><td>Field_Description_2</td><td>&quot;Frame_Receiver = Frame_Destination &quot;</td><td>&quot;&quot;Frame_Receiver = Frame_Destination &quot;&quot;</td></tr><tr><td>Field_Description_3</td><td>&quot;Frame_Access = HUB&quot;</td><td>&quot;&quot;Frame_Access = HUB&quot;&quot;</td></tr><tr><td>Field_Description_4</td><td>&quot;Station_Name = STA_2&quot;</td><td>&quot;&quot;Station_Name = STA_2&quot;&quot;</td></tr><tr><td>Random_Seed</td><td>123457</td><td>123457L</td></tr></table> <h2>Statement</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Field_Description_1</td><td>&quot;Frame_Size = Input_Frame_Size_Bytes &quot;</td><td>&quot;&quot;Frame_Size = Input_Frame_Size_Bytes &quot;&quot;</td></tr><tr><td>Field_Description_2</td><td>&quot;Frame_Receiver = Frame_Destination &quot;</td><td>&quot;&quot;Frame_Receiver = Frame_Destination &quot;&quot;</td></tr><tr><td>Field_Description_3</td><td>&quot;Frame_Access = HUB&quot;</td><td>&quot;&quot;Frame_Access = HUB&quot;&quot;</td></tr><tr><td>Field_Description_4</td><td>&quot;Station_Name = STA_1&quot;</td><td>&quot;&quot;Station_Name = STA_1&quot;&quot;</td></tr><tr><td>Random_Seed</td><td>123457</td><td>123457L</td></tr></table> <h2>Trans_Src</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Data_Structure_Name</td><td>&quot;Wireless_802_Class&quot;</td><td>&quot;Wireless_802_Class&quot;</td></tr><tr><td>Start_Time</td><td>0.0</td><td>0.0</td></tr><tr><td>Mean_Time</td><td>5.0e-03</td><td>0.005</td></tr><tr><td>Spread_Time</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Mean)</td><td>Fixed (Mean)</td></tr></table>

Exploring Wireless LAN Throughput and Interoperability with other Protocols


This model has been created based on the specification laid out by the IEEE 802.11 Working Group. For more details on the Wireless LAN MAC layer details, please refer to the Wireless LAN specifications.  Modeling can be a very effective tool for analyzing a variety of architecture and performance issues.  Some of the issues to be considered by System Architects include:
  • How to account for frame errors that cause retries, or contention from other LAN users, when the application is based on a Constant Bit Rate (CBR) algorithm? 
  • How big should the application buffer be in order to handle interruptions?
  • What are the resource trade-offs in implementing new applications and features in custom hardware or software?
  • What is the buffer tradeoff versus end-to-end frame latency? 
  • How many users can the local coffee shop WiFi network support before information loss renders the Internet access unusable? 
The complexity of these technical decisions and the non-deterministic nature of the traffic profile require accurate modeling efforts to predict the resource requirements, and the effective maximum throughput for a WiFi network. 

The purpose of this model is to evaluate the throughput of a Wireless LAN network for a number of constraints including:
  1. Impact of packet fragmentation on throughput
  2. Frame latency due to preemption by voice traffic
  3. Effective utilization based on Protocol signal overhead, and variable node and Access points Wire-rates.

Model Overview

The Discrete-Event simulation model in VisualSim consists of traffic generators, nodes, Access Points, arbiters, and statistics generation.  The VisualSim model has been constructed as a hierarchical design to enable easy of understanding and modification.  The nodes have been modeled to contain both the transmitter and receiver.  The arbiter was separated from the nodes to improve simulation performance and to allow independent evaluation of the arbitration algorithm. VisualSim model of 802.11 transmits frames from multiple client nodes to an access point.  Nodes are contending for service based on the standard 801.11 backoff procedure.  The overall frame latency is measured for each packet exiting the central access point. 

Each wireless node is defined as a state machine with five states: IDLE, RDY, CTS, RTS and NEXT.  The signaling and arbitration can accommodate single frame, burst mode and fragmentation modes of operation.  The separate arbiter block provides arbitration between the node devices, performs backoff, and slot retention/improvement for the losing node in the arbitration process.

Data Structure

The input frame is a Data Structure that contains the following fields:
Station_Name                     String    Null                                  
Station_X_Pos                    double    0.0                                   
Station_Y_Pos                    double    0.0                                   
Station_Direction                double    0.0                                   
Station_Velocity                 double    0.0                                   
Station_Power                    double    0.0                                   
State_Name                       String    IDLE                                  
Frame_Receiver                   String    Null                                  
Frame_Access                     String    Null                                  
Frame_Transmitter                String    Null                                  
Frame_Type                       String    Null                                  
Frame_Number                     int       0                                     
Frame_Priority                   int       0                                     
Frame_Slot                       int       0                                     
Frame_Size                       int       0                                     
Frame_Duration                   int       0                                     
Frame_Retry                      int       0                                     
Frame_Fragment                   int       0                                     
Frame_Sequence                   int       0                                     
Frame_Select                     boolean   false                                 
Frame_Time                       double    0.0                                   
Frame_Delta_Time                 double    0.0    

The Wireless LAN Data Structure carries the information associated with each frame for analysis and signalling.  The key fields used in the model are source, destination, frame size and timestamp.  The model generates frames at periodic rates but can be easily modified to accommodate a network trace for more accurate modeling. Provision is provided for mobile position, direction and velocity in the input definition.  The Data Structure can be enhanced to add other details as required fvor the modeling including adding the actual data that needs to be transmitted.

Model Details

The protocol data (FRAME) and control frames (RTS, CTS, and ACK) are based on the 802.11 specification.  Network Access Vectors (NAV_RTS and NAV_CTS) are signals to discourage other stations from accessing. 

The model has been constructed with expandability in mind.  The model can be enhanced to add the Physical Layer.  In addition, application such MPEG-4 and H.264 can be developed on top of this model.  A model analyzing hardware design on top of this Wireless LAN system is also available under the Wireless Demo heading.

Modifying Parameters to create new scenarios

The frame size and fragmentation limit are maintained as parameters that can be modified to test protocol functionality and system throughput. The network frequency and individual node timing can be varied from 1 Mhz to 11.0 or 54.0 Mhz.  The DCF Inter Frame Spacing (DIFS) and Short Inter Frame Spacing (SIFS) delays are also parameters of the model.  In addition, each node and the Access points have a parameters that can be modified.  The traffic rate can also be generated by modifying the Mean time and using a different distribution.

  • Vary the simulation time by double-clicking on the Gear (top-right) and modifying the Stop Time parameter.
  • Vary the Node timing by double-clicking on any node and changing the Frequency-MHz to 1.0 or 54.0.  First modify only one and then modify all of them.  Notice the change in the Frame Lantency.
  • Vary the Frame_Size_Bytes parameter by double-clicking on it and changing the value.  The fragmentation has been set at 500 bytes.
  • Double-click on the Transaction_Source blocks and change the Mean time.  Also pull-down and select a different distribution such as Exponential.  If selecting Uniform make sure that Spread is greater than the Mean as these corressponds to Minimum and Maximum value of the distribution.  For the Normal, the spread is the standard deviation.

Analysis

Three analysis graphs are displayed on this page below.  
  1. The timeline plot titled Wireless Protocol contains all the 802.11 signals: RTS, CTS, ACK, NAV_RTS, NAV_CTS and FRAME.  The plot shows fragmentation frames being transmitted. Contention is shown in the first sequence where there are two RTS frames.  This plot represents the functional accuracy of the implemented algorithm and evaluates the protocol correctness for scenarios such as fragmentation, arbitration and contention.
  2. Frame Latency shows the variation of the latency against various parameters.  Vary the size of the input frame or the node timing to see the latency get modified.
  3. Access Out text display shows the values of the DS fields at the Access Point.  
Model Applet: This shows the topology of a WiFi network in VisualSim.  Nodes and Access Points can be arbitrarily added or removed.  This model contains two nodes, an Access Point, Arbiter and statistics block.  The traffic enters the system at each node and leaves the network at the Access Point.


Model Applet: The VisualSim model of an 802.11 node contains a State Machine, with state being the state of the network.  The transmitter and receiver are contained in a single window.  The parameters of the model can be modified to create multiple operating conditions.  The MAC layer is model signaling and timing-accurate.