一. 一些基礎(chǔ)必備點(diǎn):
? ? ? ? ? ?無線AP,即Access Point,也就是無線接入點(diǎn)。簡單來說就是無線網(wǎng)絡(luò)中的無線交換機(jī),它是移動(dòng)終端用戶進(jìn)入有線網(wǎng)絡(luò)的接入點(diǎn)。
? ? ? ? ?可以實(shí)現(xiàn)兩個(gè)無線設(shè)備通訊,也可以起到放大信號(hào)的作用,而產(chǎn)品的SSID也可以不同。
? ? ? ? AP的一個(gè)重要的功能就是中繼,所謂中繼就是在兩個(gè)無線點(diǎn)間把無線信號(hào)放大一次,使得遠(yuǎn)端的客戶端可以接受到更強(qiáng)的無線信號(hào)。
? ? ? ? ? ? 最后一個(gè)功能是“主從模式”,在這個(gè)模式下工作的AP會(huì)被主AP或者無線路由看做是一臺(tái)無線客戶端。
? ? ? ? ? ?一般的無線AP還帶有接入點(diǎn)客戶端模式,也就是說AP之間可以進(jìn)行無線鏈接。
? ? ? ? ?單純型AP由于缺少了路由功能,相當(dāng)于無線交換機(jī),僅僅是提供一個(gè)無線信號(hào)發(fā)射的功能。
? ? ? ? ? 它的工作原理是將網(wǎng)絡(luò)信號(hào)通過雙絞線傳送過來,經(jīng)過無線AP的編譯,將電信號(hào)轉(zhuǎn)換成為無線電訊號(hào)發(fā)送出來,形成無線網(wǎng)絡(luò)的覆蓋。根據(jù)不同的功率,網(wǎng)絡(luò)覆蓋程度也是不同的,一般無線AP的最大覆蓋距離可達(dá)400米。
? ? ? ? ? 擴(kuò)展型AP就是我們常說的無線路由器了。無線路由器,顧名思義就是帶有無線覆蓋功能的路由 ? 器,它主要應(yīng)用于用戶上網(wǎng)和無線覆蓋。通過路由功能,可以實(shí)現(xiàn)家庭無線網(wǎng)絡(luò)中的Internet連接共享,也能實(shí)現(xiàn)ADSL和小區(qū)寬帶的無線共享接入 。值得一提的是,可以通過無線路由器把無線和有線連接的終端都分配到一個(gè)子網(wǎng),使得子網(wǎng)內(nèi)的各種設(shè)備可以方便的交換數(shù)據(jù)。
二. 設(shè)置RTS閾值和Fragmentation閾值

三. 設(shè)置網(wǎng)絡(luò)為飽和狀態(tài)
myClient.SetAttribute ("MaxPackets", UintegerValue (4294967295u)); ?// 飽和狀態(tài)???
四. 設(shè)置slot(時(shí)隙)、SIFS等參數(shù)




五. 實(shí)際在802.11a中slot、SIFS、DIFS和仿真是一致的,不需修改。

這里仍然是RTS閾值的設(shè)置;

六. 問題出現(xiàn):
? ? ? ?數(shù)據(jù)包PacketSize只能小于1500bytes,否則報(bào)錯(cuò),下面是PacketSize設(shè)置為1200bytes的吞吐量:

? ? ? ?這里是設(shè)置速率為54Mbps:

? ? ?下面是節(jié)選自參考網(wǎng)上RTS閾值設(shè)置,起初以為是RTS閾值設(shè)置錯(cuò)誤或者設(shè)置不起作用等原因造成報(bào)錯(cuò):
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:發(fā)現(xiàn)udp-client中數(shù)據(jù)包設(shè)置在12-1500bytes范圍:

在udp-client.cc中發(fā)現(xiàn)命令MakeUintegerChecker<uint32_t> (12, 1500)

?重點(diǎn):
? ? ? ?起初數(shù)據(jù)包只要超過1500bytes,程序就會(huì)出錯(cuò),幾天下來以為是RtsCtsThreshold的設(shè)置不起作用,幾經(jīng)折騰,最后在udp-client.cc頭文件中修改packetSize(1500bytes變?yōu)?99999bytes),重新運(yùn)行和編譯,這樣當(dāng)仿真數(shù)據(jù)包長大于1500bytes時(shí)不會(huì)再報(bào)錯(cuò)了。

