NS3中的WiFi网络配置(以third.cc为例)

       该脚本的WiFi网络由一个接入点(AccessPoint,AP)和nWiFi个移动节点组成。这里的AP节点为一个双模节点,安装有WiFi设备和PPP设备。

        下图为该脚本中的Wifi网络部分C++示意图:

     WifiNetDevice+Mac+Phy 三层网络设备结构

      WifiNetDevice:连接上下层,无实际作用

      配置的具体步骤:

     1. 创建结点

NodeContainer wifiStaNodes;
wifiStaNodes.Create(nWifi);
NodeContainer wifiApNode = p2pNodes.Get(0);

     2. 设置Channel和WifiPhy

       使用YansWifiChannelHelperYansWifiPhyHelper两个助手类来配置ChannelWifiPhy。Wifi Channel需要配置传播延迟(propagation delay)和损耗模型(propagation loss,这两个模型加上最后一步中的移动模型一起决定了一个分组在无线信道中的传播延迟和接收功率。(在third.cc中使用Default()函数设置delay和loss的默认模型:ConstantSpeedPropagationDelayModel和LogDistancePropagationLossModel)。

YansWifiChannelHelper channel = YansWifiChannelHelper::Default();
YansWifiPhyHelper phy;
phy.SetChannel(channel.Create());

    3. 设置WifiMac并在节点中安装NetDevice

       使用WifiMacHelperWifiHelper两个助手类。

       前者需要设置两个参数:WifiMac子类和服务集标识符(SSID)。前者决定节点的种类(AP或移动节点),后者决定节点所属的服务集。

WifiMacHelper mac;
Ssid ssid = Ssid("ns-3-ssid");

WifiHelper wifi;

NetDeviceContainer staDevices;
mac.SetType("ns3::StaWifiMac", "Ssid", SsidValue(ssid), "ActiveProbing", BooleanValue(false));
staDevices = wifi.Install(phy, mac, wifiStaNodes);

NetDeviceContainer apDevices;
mac.SetType("ns3::ApWifiMac", "Ssid", SsidValue(ssid));
apDevices = wifi.Install(phy, mac, wifiApNode);

      WifiHelper将Wifi网络设备安装到指定结点。默认的Wifi协议是802.11a,可以通过SetStandard()函数来选择其他Wifi协议类型。

     4.设置移动模型

           在网络设备安装至结点后配置。

           助手类为MobilityHelper,在设置时需要区分AP和移动结点。

MobilityHelper mobility;

mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");
mobility.Install(wifiApNode);

mobility.SetPositionAllocator("ns3::GridPositionAllocator",
                                  "MinX",
                                  DoubleValue(0.0),
                                  "MinY",
                                  DoubleValue(0.0),
                                  "DeltaX",
                                  DoubleValue(5.0),
                                  "DeltaY",
                                  DoubleValue(10.0),
                                  "GridWidth",
                                  UintegerValue(3),
                                  "LayoutType",
                                  StringValue("RowFirst"));
mobility.SetMobilityModel("ns3::RandomWalk2dMobilityModel",
                              "Bounds",
                              RectangleValue(Rectangle(-50, 50, -50, 50)));
mobility.Install(wifiStaNodes);

   AP:固定结点。使用SetMobilityModel()为其设置固定位置移动模型ConstantPositionMobilityModel

      移动结点:初始位置分布+后续移动轨迹模型。SetPositionAllocator()函数设置初始位置,SetMobilityModel()设置RandomWalk2dMobilityModel移动模型。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值