一. 一些基础必备点:
无线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成功获得吞吐量
网友评论