examples/wireless/ht-wifi-network.cc
author Ghada Badawy <gbadawy@gmail.com>
Tue, 13 Aug 2013 22:05:25 -0700
changeset 10139 17a71cd49da3
child 10218 97da49da2d6c
permissions -rw-r--r--
partial 802.11n support
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
     2
/*
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
     3
 * Copyright (c) 2009 MIRKO BANCHI
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
     4
 *
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
     8
 *
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    12
 * GNU General Public License for more details.
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    13
 *
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    17
 *
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    18
 * Author: Mirko Banchi <mk.banchi@gmail.com>
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    19
 */
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    20
#include "ns3/core-module.h"
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    21
#include "ns3/network-module.h"
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    22
#include "ns3/applications-module.h"
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    23
#include "ns3/wifi-module.h"
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    24
#include "ns3/mobility-module.h"
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    25
#include "ns3/ipv4-global-routing-helper.h"
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    26
#include "ns3/internet-module.h"
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    27
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    28
//This is a simple example in order to show how 802.11n frame aggregation feature (A-MSDU) works.
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    29
//
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    30
//Network topology:
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    31
// 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    32
//  Wifi 192.168.1.0
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    33
// 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    34
//             AP
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    35
//   *    *    *
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    36
//   |    |    |
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    37
//   n1   n2   n3 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    38
//
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    39
//Packets in this simulation aren't marked with a QosTag so they are considered
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    40
//belonging to BestEffort Access Class (AC_BE).
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    41
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    42
using namespace ns3;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    43
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    44
NS_LOG_COMPONENT_DEFINE ("DataRates");
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    45
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    46
double rxBytessum=0;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    47
double throughput=0;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    48
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    49
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    50
//===========================================================================
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    51
//Set position of the nodes
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    52
//===========================================================================
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    53
static void
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    54
SetPosition (Ptr<Node> node, Vector position)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    55
{
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    56
  Ptr<MobilityModel> mobility = node->GetObject<MobilityModel> ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    57
  mobility->SetPosition (position);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    58
}
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    59
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    60
//==========================================================================
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    61
//==========================================================================
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    62
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    63
int main (int argc, char *argv[])
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    64
{
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    65
  std::cout << "DataRate" <<"  " << "Throughput" << '\n';
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    66
  bool udp = true;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    67
  int i=2;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    68
  for (;i <= 2; i++)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    69
  {
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    70
    uint32_t nWifi = 1;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    71
    CommandLine cmd;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    72
    cmd.AddValue ("nWifi", "Number of wifi STA devices", nWifi);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    73
    cmd.Parse (argc,argv);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    74
    Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("990000"));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    75
    // disable rts cts all the time.
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    76
    Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("99000"));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    77
    NodeContainer wifiNodes;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    78
    wifiNodes.Create (1);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    79
    NodeContainer wifiApNode;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    80
    wifiApNode.Create (1);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    81
 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    82
    YansWifiChannelHelper channel = YansWifiChannelHelper::Default ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    83
    YansWifiPhyHelper phy = YansWifiPhyHelper::Default ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    84
    phy.SetChannel (channel.Create ());
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    85
    if (i ==3 || i == 4)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    86
      phy.Set ("ShortGuardEnabled",BooleanValue(true));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    87
      //phy.Set ("GreenfieldEnabled",BooleanValue(true));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    88
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    89
    WifiHelper wifi = WifiHelper::Default ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    90
    wifi.SetStandard (WIFI_PHY_STANDARD_80211n_2_4GHZ);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    91
    HtWifiMacHelper mac = HtWifiMacHelper::Default ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    92
 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    93
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    94
    Ssid ssid = Ssid ("ns380211n");
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    95
    double datarate;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    96
    StringValue DataRate;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    97
    if (i==0)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    98
      {
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
    99
        DataRate = StringValue("OfdmRate6_5MbpsBW20MHz");
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   100
        datarate = 6.5;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   101
      }
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   102
    else if (i==1)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   103
      {
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   104
        DataRate = StringValue("OfdmRate58_5MbpsBW20MHz");
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   105
        datarate = 58.5;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   106
      }
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   107
    else if (i == 2)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   108
      {
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   109
        DataRate = StringValue("OfdmRate65MbpsBW20MHz");
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   110
        datarate = 65;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   111
      }
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   112
    else if (i == 3)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   113
      {
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   114
        DataRate = StringValue("OfdmRate57_8MbpsBW20MHz");
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   115
        datarate = 57.8;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   116
      }
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   117
    else if (i == 4)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   118
      {
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   119
        DataRate = StringValue("OfdmRate72_2MbpsBW20MHz");
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   120
        datarate = 72.2;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   121
      }
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   122
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   123
    wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager","DataMode", DataRate,
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   124
                                   "ControlMode", DataRate);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   125
    mac.SetType ("ns3::StaWifiMac",
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   126
                 "Ssid", SsidValue (ssid),
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   127
                 "ActiveProbing", BooleanValue (false));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   128
    
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   129
    NetDeviceContainer staDevices;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   130
    staDevices = wifi.Install (phy, mac, wifiNodes);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   131
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   132
    mac.SetType ("ns3::ApWifiMac",
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   133
                 "Ssid", SsidValue (ssid));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   134
   
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   135
    NetDeviceContainer apDevice;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   136
    apDevice = wifi.Install (phy, mac, wifiApNode);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   137
   /* Ptr<WifiRemoteStationManager> apStationManager =
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   138
              DynamicCast<WifiNetDevice>(apDevice.Get (0))->GetRemoteStationManager ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   139
    apStationManager->AddBasicMode (WifiMode ("OfdmRate13MbpsBW20MHz"));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   140
    apStationManager->AddBasicMode (WifiMode ("OfdmRate19_5MbpsBW20MHz"));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   141
    apStationManager->AddBasicMode (WifiMode ("OfdmRate26MbpsBW20MHz"));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   142
    apStationManager->AddBasicMode (WifiMode ("OfdmRate39MbpsBW20MHz"));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   143
    Ptr<WifiRemoteStationManager> staStationManager =
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   144
              DynamicCast<WifiNetDevice> (staDevices.Get (0))->GetRemoteStationManager ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   145
    staStationManager->AddBasicMode (WifiMode ("OfdmRate13MbpsBW20MHz"));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   146
    staStationManager->AddBasicMode (WifiMode ("OfdmRate19_5MbpsBW20MHz"));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   147
    staStationManager->AddBasicMode (WifiMode ("OfdmRate26MbpsBW20MHz"));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   148
    staStationManager->AddBasicMode (WifiMode ("OfdmRate39MbpsBW20MHz"));*/
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   149
              
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   150
   // mobility.
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   151
   MobilityHelper mobility;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   152
   mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   153
   mobility.Install (wifiNodes);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   154
   mobility.Install (wifiApNode);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   155
    
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   156
   SetPosition (wifiNodes.Get(0), Vector (1.0,0.0,0.0));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   157
   SetPosition (wifiApNode.Get(0), Vector (0.0,0.0,0.0));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   158
 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   159
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   160
   /* Internet stack*/
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   161
   InternetStackHelper stack;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   162
   stack.Install (wifiApNode);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   163
   stack.Install (wifiNodes);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   164
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   165
   Ipv4AddressHelper address;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   166
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   167
   address.SetBase ("10.1.3.0", "255.255.255.0");
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   168
   Ipv4InterfaceContainer wifiNodesInterfaces;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   169
   Ipv4InterfaceContainer apNodeInterface;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   170
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   171
   wifiNodesInterfaces = address.Assign (staDevices);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   172
   apNodeInterface = address.Assign (apDevice);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   173
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   174
   ApplicationContainer serverApps,sink1App;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   175
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   176
   double t=10;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   177
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   178
   /* Setting applications */
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   179
   if (udp)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   180
     {
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   181
       UdpServerHelper myServer (9);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   182
       serverApps = myServer.Install (wifiNodes.Get (0));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   183
       serverApps.Start (Seconds (0.0));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   184
       serverApps.Stop (Seconds (t));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   185
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   186
       UdpClientHelper myClient (wifiNodesInterfaces.GetAddress (0), 9);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   187
       myClient.SetAttribute ("MaxPackets", UintegerValue (64707202));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   188
       myClient.SetAttribute ("Interval", TimeValue (Time ("0.00002")));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   189
       myClient.SetAttribute ("PacketSize", UintegerValue (1500));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   190
 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   191
       ApplicationContainer clientApps = myClient.Install (wifiApNode.Get (0));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   192
       clientApps.Start (Seconds (0.0));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   193
       clientApps.Stop (Seconds (t));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   194
     }
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   195
   else
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   196
     {
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   197
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   198
       //TCP flow
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   199
       uint16_t port = 50000;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   200
       Address apLocalAddress (InetSocketAddress (Ipv4Address::GetAny (), port));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   201
       PacketSinkHelper packetSinkHelper ("ns3::TcpSocketFactory", apLocalAddress);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   202
       sink1App = packetSinkHelper.Install (wifiNodes.Get (0));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   203
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   204
       sink1App.Start (Seconds (0.0));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   205
       sink1App.Stop (Seconds (t));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   206
            
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   207
       OnOffHelper onoff ("ns3::TcpSocketFactory",Ipv4Address::GetAny ());
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   208
       onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable(30)));//in seconds
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   209
       onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable(0)));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   210
       onoff.SetAttribute ("PacketSize", UintegerValue (1500-30));//1024
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   211
       onoff.SetAttribute ("DataRate", DataRateValue (100000000));//51200
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   212
       ApplicationContainer apps;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   213
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   214
       AddressValue remoteAddress (InetSocketAddress (wifiNodesInterfaces.GetAddress(0), port));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   215
       onoff.SetAttribute ("Remote", remoteAddress);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   216
       apps.Add (onoff.Install (wifiApNode.Get (0)));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   217
       apps.Start (Seconds (0.0));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   218
       apps.Stop (Seconds (t));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   219
     }
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   220
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   221
  
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   222
   Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   223
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   224
   Simulator::Stop (Seconds (t));
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   225
   Simulator::Run ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   226
   Simulator::Destroy ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   227
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   228
   //UDP
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   229
   if (udp)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   230
     {
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   231
       uint32_t totalPacketsThrough = DynamicCast<UdpServer>(serverApps.Get (0))->GetReceived ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   232
       throughput=totalPacketsThrough*1500*8/(t*1000000.0);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   233
     }
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   234
   else
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   235
     {
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   236
       //TCP
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   237
       uint32_t totalPacketsThrough = DynamicCast<PacketSink>(sink1App.Get (0))->GetTotalRx ();
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   238
       throughput=totalPacketsThrough*8/((t-3)*1000000.0);
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   239
     }
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   240
  
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   241
   std::cout << datarate <<"  " << throughput << '\n';
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   242
   }
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   243
  return 0;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents:
diff changeset
   244
}