美文网首页
NS3:802.11 DCF (一个AP,多节点)

NS3:802.11 DCF (一个AP,多节点)

作者: 小超超爱超超 | 来源:发表于2017-07-20 19:55 被阅读0次

    一. 一些基础必备点:

               无线AP,即Access Point,也就是无线接入点。简单来说就是无线网络中的无线交换机,它是移动终端用户进入有线网络的接入点。

             可以实现两个无线设备通讯,也可以起到放大信号的作用,而产品的SSID也可以不同。

            AP的一个重要的功能就是中继,所谓中继就是在两个无线点间把无线信号放大一次,使得远端的客户端可以接受到更强的无线信号。

                最后一个功能是“主从模式”,在这个模式下工作的AP会被主AP或者无线路由看做是一台无线客户端。

               一般的无线AP还带有接入点客户端模式,也就是说AP之间可以进行无线链接。

             单纯型AP由于缺少了路由功能,相当于无线交换机,仅仅是提供一个无线信号发射的功能。

              它的工作原理是将网络信号通过双绞线传送过来,经过无线AP的编译,将电信号转换成为无线电讯号发送出来,形成无线网络的覆盖。根据不同的功率,网络覆盖程度也是不同的,一般无线AP的最大覆盖距离可达400米。

              扩展型AP就是我们常说的无线路由器了。无线路由器,顾名思义就是带有无线覆盖功能的路由   器,它主要应用于用户上网和无线覆盖。通过路由功能,可以实现家庭无线网络中的Internet连接共享,也能实现ADSL和小区宽带的无线共享接入 。值得一提的是,可以通过无线路由器把无线和有线连接的终端都分配到一个子网,使得子网内的各种设备可以方便的交换数据。

    二. 设置RTS阈值和Fragmentation阈值

    图一  RTS/CTS模式使能

    三. 设置网络为饱和状态

    myClient.SetAttribute ("MaxPackets", UintegerValue (4294967295u));  // 饱和状态???

    四. 设置slot(时隙)、SIFS等参数

    图二 设置  slot, SIFS 图三 添加命令行参数用于启用和停止记录组件,改变设备创建的数量 图四 重新配置标准定时值 图五 无RTS/CTS模式和无分包方式

    五. 实际在802.11a中slot、SIFS、DIFS和仿真是一致的,不需修改。

    图六 802.11a 设置符合论文参数设计

    这里仍然是RTS阈值的设置;

    图七 RTS/CTS模式转换

    六. 问题出现:

           数据包PacketSize只能小于1500bytes,否则报错,下面是PacketSize设置为1200bytes的吞吐量:

    图八 50节点1个AP

           这里是设置速率为54Mbps:

    图九 设置速率

         下面是节选自参考网上RTS阈值设置,起初以为是RTS阈值设置错误或者设置不起作用等原因造成报错:

    uint32_t rtsThreshold = 65535;

    cmd.AddValue ("rtsThreshold", "RTS threshold", rtsThreshold);

    wifi.SetRemoteStationManager (staManager, "RtsCtsThreshold", UintegerValue (rtsThreshold));

    wifi.SetRemoteStationManager (apManager, "RtsCtsThreshold", UintegerValue (rtsThreshold));

    std::string staManager = "ns3::MinstrelHtWifiManager";

    std::string apManager = "ns3::MinstrelHtWifiManager";

    查看classess:发现udp-client中数据包设置在12-1500bytes范围:

    图十 udpclient数据包大小(12-1500bytes)

    在udp-client.cc中发现命令MakeUintegerChecker<uint32_t> (12, 1500)

    图十一 PacketSize设置

     重点:

           起初数据包只要超过1500bytes,程序就会出错,几天下来以为是RtsCtsThreshold的设置不起作用,几经折腾,最后在udp-client.cc头文件中修改packetSize(1500bytes变为999999bytes),重新运行和编译,这样当仿真数据包长大于1500bytes时不会再报错了。

    图十二 更改udp-client.cc中PacketSize1500为999999 图十三 更改数据包长1500为999999bytes成功获得吞吐量

    相关文章

      网友评论

          本文标题:NS3:802.11 DCF (一个AP,多节点)

          本文链接:https://www.haomeiwen.com/subject/lopjkxtx.html