一. 一些基礎(chǔ)必備點(diǎn):
? ? ? ? ? ?無線AP秸仙,即Access Point嘴拢,也就是無線接入點(diǎn)。簡(jiǎ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ù)包長(zhǎng)大于1500bytes時(shí)不會(huì)再報(bào)錯(cuò)了奴曙。