NS-2 無線網路模擬 Speaker : Rung Shiang Cheng ( 程榮祥 ) Department of Computer and Communication Kun Shan University http://teachers.ksu.edu.tw/ 1
Outline 2
Linux 下的 NS-2 安裝與設定 3
NS-2 是什麼? Network Simulator, version 2 物件導向網路模擬器 Router, Link, End point, TCP/IP protocols C++, OTCL NS-2 的執行流程 4
NS-2 的下載與安裝 下載 NS-2 NS-2 網址 http://www.isi.edu/nsnam/ns/ Download and Build ns Getting everything at once Ns-allinone 安裝 NS-2 解壓縮 安裝 5
NS-2 的下載與安裝 6
NS-2 的下載與安裝 安裝完成訊息 7
NS-2 的下載與安裝 修改使用者環境設定 將 NS-2 要求設定的路徑, 加入 PATH 參數中 8
個別套件的安裝 以 NAM 為例 Download and Build ns Getting the Pieces 將下載的檔案移至 NS-allinone 的目錄下 9
個別套件的安裝 以 NAM 為例 使用 tar 指令將下載的檔案解壓縮 開始進行安裝 10
個別套件的安裝 以 NAM 為例 指定使用新的 NAM 版本來取代舊的版本 11
Getting Older Versions of Ns 12
TCL 簡介 13
TCL 語法簡介 Hello world! 設定變數 ( 例 1) 數學運算設定變數 ( 例 2) 14
流程控制 if 條件敘述 for 迴圈 ( 例 1) for 迴圈 ( 例 2) 15
流程控制 while 迴圈 16
程序 程式範例 執行結果 說明 程序基本的語法為 : proc name {params} {body}, 其中 name 為程序的名稱,params 是參數列表,body 則是程序的主體 定義完程序後就可以像其它任何的 tcl 指令一樣執行 17
陣列 程式範例 執行結果 說明 陣列的內容可以是數字或者是字串, 存放的位置不一定要用 0 1 2... 這樣的編號 18
輸出 程式範例 執行結果 說明 一般來說,puts 若是沒有指定輸出裝置的話, 內定的輸出裝置是螢幕, 但此範例中有指定輸出的裝置為檔案, 因此會將字串寫入檔案中 19
TCP 與 UDP 模擬實驗 20
模擬程式 (TCL Script) 的基本架構 21
網路架構圖 22
TCL Script # 產生模擬物件 # 定義執行程序 # 設定網路拓樸 撰寫模擬劇本 23
TCL Script TCP 封包長度預設為 1 Kbytes UDP Agent 在 NS-2 中,UDP Agents 的程式碼是放在 "ns-allinone-2.31/ns- 2.31/apps/udp.{cc, h}" 這兩個 C++ 原檔中 Application Layer 的應用程式, 可透過 sendmsg() 這個 C++ function 來取存 UDP Agent UDP 的 maximum segment size (MSS) 預設值為 1000 byte Agent/UDP set packetsize_ 1000 24
TCL Script CBR 在 0.1 秒開始傳送,4.5 秒結束 ; FTP 在 1.0 秒開始傳送,4.0 秒結束 25
模擬過程記錄檔的內容與格式 Trace record 的格式 部份記錄檔的內容 26
AWK 資料處理語言 AWK 簡介 以 Aho Weinberger Kernighan 三位設計者的字者命名 Pattern scanning and processing language Linux 大多取名為 gawk AWK 命令格式 可以直接指定要處理的動作, 或將欲處理的動作寫在一個命令稿中 27
AWK Script: 計算 End-to-End Delay 的範例
AWK Script: 計算 End-to-End Delay 的範例
AWK Script: 計算 End-to-End Delay 的範例 執行方法 ($ 為 shell 提示符號 ) $awk -f measure-delay.awk out.tr 執行結果
AWK Script: 統計傳送以及遺失封包的個數
AWK Script: 統計傳送以及遺失封包的個數
亂數產生器 Random Number Generator 33
亂數產生器 設定種子 (seed) 設定分佈 (distribution) E.g. Pareto Constant Uniform Exponential HyperExponentail 設定種子的範例 這個例子在 NS2 中產生一個亂數產生器, 並把種子的值設定為 1( 若種子的值為 0 的話, 則亂數產生器會在每次程式被執行時使用不同的種子 ) 34
Pareto Distribution 參數 expectation (avg_) shaper parameter (shape_) 範例 執行結果 35
Uniform distribution 參數 最小值 (min_) 最大值 (max_) 範例 執行結果 36
Exponential distribution 參數 平均值 (avg_) 範例 執行結果 37
亂數產生器使用範例 - 設定應用程式的啟動時間 模擬網路架構圖 38
亂數產生器使用範例 - 設定應用程式的啟動時間 FTP 的起始時間由亂數產 ( 時間介於 0 到 1 秒之間 ) 39
亂數產生器使用範例 - 設定應用程式的啟動時間 執行結果 40
分析 Throughput 的 awk 程式碼 2 3 0 1 統計在 1 秒到 5 秒之間, 由 R2 流向 D1,D2,D3 的資料量 41 R: receive (at to_node)
分析 Throughput 的 awk 程式碼 執行結果 42
亂數產生器使用範例 - 設定節點的初始位置 43
亂數產生器使用範例 - 設定節點的初始位置 (TCL 程式碼 ) ;# TCL 程式碼的撰寫流程 ;# 設定無線節點的個數 ;# 設定 X 軸座標的範圍 ;# 設定 Y 軸座標的範圍 ;# 設定 simulation 時間 44
亂數產生器使用範例 - 設定節點的初始位置 (TCL 程式碼 ) ;# 開啟資料記錄檔 ;# 產生拓撲物 ;# 設定 Node 的屬性 45
亂數產生器使用範例 - 設定節點的初始位置 (TCL 程式碼 ) ;# 設定亂數的範圍 46
亂數產生器使用範例 - 設定節點的初始位置 (TCL 程式碼 ) 47
亂數產生器使用範例 - 設定節點的初始位置 執行結果 48
乙太網路模擬 49
TCL 程式碼 指令格式 : Simulator instproc make-lan {nodes bw delay lltype ifqtype mactype chantype} 50
TCL 程式碼 51
模擬結果 BEB: Binary Exponential Backoff 52
NS-2 下的 IEEE 802.11 Ad Hoc 無線網路模擬
IEEE 802.11 的網路架構 Infrastructure Ad Hoc MAC DCF (contention-based Distributed Coordination Function Basic access Virtual carrier sensing (RTS/CTS) PCF (contention-free Point Coordination Function) 54
Media Access Mechanisms in IEEE 802.11 DCF 55
The 802.11 Frame Ns-2 中的 implement 56 mac-802_11.h
RTS CTS and ACK Frame 57
802.11 MAC 層和實體層使用的預設參數 ns-2.xx/tcl/lib/ns-default.tcl 58
TCP 在 802.11 網路上的預估效能 59
Ad Hoc 網路架構圖 60
TCL 程式碼 在這個例子中, 無線節點的傳送頻率被設為 2.4 GHz, 傳送距離是 40 公尺 (RXThresh_ =1.74293e-08), 接收距離是 90 公尺 61
無線節點的傳送範圍設定 計算結果 P r = PG G t t r 2 2 t hr 4 h d = (0.28183815 1 1 ) (1.5 2 1.5 2 ) / (250 4 ) = 3.652e-10 62
TCL 程式碼 63
TCL 程式碼 Parameters for MAC and PHY Layer 在 Ns-2 中,RTS CTS 以及 ACK 的大小分為別 20 14 14 byte ( 不含 PHYhdr,PHYhdr = PLCP preamble + PLCP header) 64
TCL 程式碼 設定 Node 的參數 產生 Node 並設定 Node 的位置 無線網路不需要去設定 Node 與 Node 之間的 Link 連線 65
TCL 程式碼 使用 FTP 來產生資料 ( 在第 0 秒時開始傳送 ) 66
TCL 程式碼 在指定的時間 "$end" 執行 stop 這個副程式並結束資料傳送 67
模擬結果 68
Multi-hop Ad Hoc 網路模擬 1. 撰寫 Unix shell script ( 假設儲存檔案名稱為 : runtcp) 2. 執行 script Hop-count 數對 TCP 效能的影響 69
記錄檔的部份內容 70
Mobile Node 的設定參數 在設定 Mobile-node 時, 可視需要設定相關的參數, 包括像 MAC 層所使用的傳輸協定 (-mactype) 信號傳遞時所使用的衰減模型 (-proptype) Queue 的種類 (-ifqtype) Queue 的長度 (-ifqlen) 以及是否考慮能源的限制 (-energymodel) 等 71
Movement Mobie-node 的移動設定 $node 會在時間 $time 時, 以指定的速度 <speed> (m/s) 由 <x1, y1> 向 <x2, y2> 移動 Example 72
Energy Extension Energy model 的設定 Energy model 是 Node 可以設定的屬性之一, 設定方法如下 : 設定傳送 / 接收所消耗的能源, 以及一開始所擁有的能源 Energy-aware node 的設定範例 73 ns-2.31/mobile/energy-model[.cc and.h]
Energy Model 的參考設定值 Wireless transceiver power consumption [1] Lucent IEEE 802.11 WaveLan PC card characteristics [2] [1] B. Bougard, S. Pollin, G. Lenoir, L. Van der Perre, F. Catthoor, W. Dehaene, "Energy-aware radio link control for OFDM-based WLAN", IEEE SIPS 2004. [2] L. M. Feeney and M. Nilsson, "Investigating the Energy Consumption of a Wireless Network Interface in an Ad-hoc Networking Environment", IEEE INFOCOM 2001. 74
有關 Mobile-node 的原始程式碼以及實作細節, 請參考 mobilenode.{cc.h} 這兩個檔案 下面列出在 ns-allinone- 2.31/ns-2.31/mobile/ 目錄下的相關檔案 : 75
NS-2 下的 TCP over IEEE 802.11WLAN 模擬 76
模擬架構圖 TCP Source (W0) 和 TCP Sink (Ni) 之間有一個 TCP 的 Connection, 其中 W0 和 W1 代表網路上的 Wired Node,AP 代表 Access Point,Ni (i = 1~ n) 則是 WLAN 裡面的 Wireless Station WLAN 模擬架構圖 77
TCL 程式碼 78
79
80
81
82
83
84
85
86
87
88
Unix Shell Script 假設儲存的檔案名稱為 : run_tcp 89
Unix Shell Script 的執行結果 90
計算 Goodput 的 AWK 程式 假設儲存的檔案名稱為 : goodput.sh 91
執行結果 92