無線網路技術實驗七——隱藏節點和暴露節點模擬實驗
阿新 • • 發佈:2021-06-17
實驗要求與目的
- 1人獨立完成
- 學習無線網路中隱藏和暴露節點問題
- 利用 NS2 分析隱藏和暴露節點問題
- 瞭解 OTcl 指令碼語言的基礎知識
實驗環境與資源
ns2模擬環境、實驗程式碼
實驗背景
隱藏節點
指處於接收節點的覆蓋範圍內而在傳送節點的覆蓋範圍外的節點。由於監聽不到
傳送節點的資料傳輸,隱藏節點不受限制地傳送分組到該接收節點,導致分組在接收節點處衝突
。隱藏節點可以分為隱傳送節點和隱接收節點。
暴露節點
是指在傳送節點覆蓋範圍內而在接收節點覆蓋範圍外的節點,暴露節點因監聽
到傳送節點的傳送而可能延遲傳送
。但它其實是在接收節點的通訊範圍之外,它的傳送不會造成衝突
,這種延遲傳送並不必要。
實驗過程
隱藏節點與暴露節點問題模擬
- 之前我們完成了ns模擬環境的安裝,現在我進入終端中執行本實驗,命令為:
cd ~/wireless/experiments/exp7
- 執行:
ns Hidden_Terminal.tcl
(隱藏節點)ns Exposed_Terminal.tcl
(暴露節點) - 發現報錯
原因:缺少模組 - 安裝所需模組,在 ~/wireless/ns/ns-2.35 下新建
measure
資料夾,放入以下四個檔案
cd ~/wireless/ns/ns-2.35
mkdir measure
5. 修改 ~/wireless/ns/ns-2.35/common 下的packet.h
,將如下程式碼新增到 struct hdr_cmn{}
cd ~/wireless/ns/ns-2.35/common
sudo gedit packet.h
-----檔案新增如下程式碼:
int frametype_;
double sendtime;
unsigned int pkt_id_;
unsigned int frame_pkt_id_;
6. 修改 ~/wireless/ns/ns-2.35/ 下的Makefile
檔案,將如下程式碼新增到OBJ_CC
中
cd ~/wireless/ns/ns-2.35/ sudo gedit Makefile -----檔案新增如下程式碼: measure/mudp.o measure/mudpsink.o \
- 如果許可權不夠不能儲存,可以通過以下命令更改許可權
sudo chattr -i Makefile
sudo chmod 777 Makefile
- 修改 ~/wireless/ns/ns-2.35/tcl/lib 下的
ns-default.tcl
檔案,將如下程式碼新增到檔案最後
cd ~/wireless/ns/ns-2.35/tcl/lib
sudo gedit ns-default.tcl
-----檔案新增如下程式碼:
Agent/mUDP set packetSize_ 1000
9. 修改 mudp.cc 原始碼
cd ~/wireless/ns/ns-2.35/measure
sudo gedit mudp.cc
-----檔案修改如下:
修改前
修改後
- 再次執行(2)中檔案,觀察彈出的NAM動畫視窗,觀察實驗結果,修改執行時間為2ms
隱藏節點
暴露節點
總結與體會
隱藏節點問題需要延遲傳送
,暴露節點需要去掉
延遲傳送,這兩個問題都可以通過RTS/CTS
機制解決。
隱藏節點:傳送方送出RTS包,告知範圍內節點不要進行傳送操作,目前接收方空閒,就響應CTS包。
暴露節點:某個節點偵聽到鄰節點的RTS而未偵聽到CTS,可推測自己為暴露節點,可以傳送資料。