rscheng1
NS-2無線網路模擬
Speaker : Rung‐Shiang Cheng (程榮祥)Department of Computer and CommunicationKun Shan Universityhttp://teachers.ksu.edu.tw/rscheng
rscheng2
Outline
rscheng3
Linux下的NS-2安裝與設定
rscheng4
NS-2是什麼?
Network Simulator, version 2物件導向網路模擬器Router, Link, End point, TCP/IP protocolsC++, OTCL
NS-2的執行流程
rscheng5
NS-2的下載與安裝
下載NS-2NS-2網址 http://www.isi.edu/nsnam/ns/Download and Build ns
• Getting everything at once • Ns-allinone
安裝NS-2解壓縮
安裝
rscheng6
NS-2的下載與安裝
rscheng7
NS-2的下載與安裝
安裝完成訊息
rscheng8
NS-2的下載與安裝
修改使用者環境設定
將NS-2要求設定的路徑,加入PATH參數中
rscheng9
個別套件的安裝 – 以NAM為例
Download and Build nsGetting the Pieces
將下載的檔案移至NS-allinone的目錄下
rscheng10
個別套件的安裝 – 以NAM為例
使用tar指令將下載的檔案解壓縮
開始進行安裝
rscheng11
個別套件的安裝 – 以NAM為例
指定使用新的NAM版本來取代舊的版本
rscheng12
Getting Older Versions of Ns
rscheng13
TCL簡介
rscheng14
TCL 語法簡介
Hello world!
設定變數(例1)
數學運算 設定變數(例2)
rscheng15
流程控制
if條件敘述 for迴圈(例1)
for迴圈(例2)
rscheng16
流程控制
while迴圈
rscheng17
程序
程式範例
執行結果
說明程序基本的語法為: proc name {params} {body},其中name為程序的名稱,params是參數列表,body則是程序的主體。定義完程序後就可以像其它任何的tcl指令一樣執行
rscheng18
陣列
程式範例
執行結果
說明陣列的內容可以是數字或者是字串,存放的位置不一定要用0、1、2...這樣的編號
rscheng19
輸出
程式範例
執行結果
說明一般來說,puts若是沒有指定輸出裝置的話,內定的輸出裝置是螢幕,但此範例中有指定輸出的裝置為檔案,因此會將字串寫入檔案中
rscheng20
TCP與UDP模擬實驗
rscheng21
模擬程式(TCL Script)的基本架構
rscheng22
網路架構圖
rscheng23
TCL Script#產生模擬物件
#定義執行程序
#設定網路拓樸、撰寫模擬劇本
rscheng24
TCL ScriptTCP封包長度預設為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 AgentUDP的maximum segment size (MSS) 預設值為1000 byte。Agent/UDP set packetSize_ 1000
rscheng25
TCL Script
CBR在0.1秒開始傳送,4.5秒結束; FTP在1.0秒開始傳送,4.0秒結束
rscheng26
模擬過程記錄檔的內容與格式
Trace record的格式
部份記錄檔的內容
rscheng27
AWK資料處理語言
AWK簡介以Aho、Weinberger、Kernighan三位設計者的字者命名
Pattern scanning and processing languageLinux大多取名為 gawk
AWK命令格式 可以直接指定要處理的動作,或將欲處理的動作寫在一個命令稿中
rscheng
AWK Script: 計算End-to-End Delay的範例
rscheng
AWK Script: 計算End-to-End Delay的範例
rscheng
AWK Script: 計算End-to-End Delay的範例
執行方法 ($為shell提示符號)$awk -f measure-delay.awk out.tr
執行結果
rscheng
AWK Script: 統計傳送以及遺失封包的個數
rscheng
AWK Script: 統計傳送以及遺失封包的個數
rscheng33
亂數產生器Random Number Generator
rscheng34
亂數產生器
設定種子(seed)設定分佈 (distribution)
E.g. Pareto、Constant、Uniform、Exponential、HyperExponentail
設定種子的範例
這個例子在NS2中產生一個亂數產生器,並把種子的值設定為1(若種子的值為0的話,則亂數產生器會在每次程式被執行時使用不同的種子 )
rscheng35
Pareto Distribution
參數expectation (avg_) shaper parameter (shape_)
範例
執行結果
rscheng36
Uniform distribution
參數最小值(min_)最大值(max_)
範例
執行結果
rscheng37
Exponential distribution
參數平均值(avg_)
範例
執行結果
rscheng38
亂數產生器使用範例-設定應用程式的啟動時間
模擬網路架構圖
rscheng39
亂數產生器使用範例-設定應用程式的啟動時間
FTP的起始時間由亂數產(時間介於0到1秒之間)
rscheng40
亂數產生器使用範例-設定應用程式的啟動時間
執行結果
rscheng41
分析Throughput的awk程式碼
統計在1秒到5秒之間,由R2流向D1,D2,D3的資料量
R: receive (at to_node)
0 1
2 3
rscheng42
分析Throughput的awk程式碼
執行結果
rscheng43
亂數產生器使用範例-設定節點的初始位置
rscheng44
亂數產生器使用範例-設定節點的初始位置 (TCL程式碼)
;# TCL程式碼的撰寫流程;# 設定無線節點的個數;# 設定X軸座標的範圍;# 設定Y軸座標的範圍;# 設定simulation時間
rscheng45
亂數產生器使用範例-設定節點的初始位置 (TCL程式碼)
;# 開啟資料記錄檔
;# 產生拓撲物
;# 設定Node的屬性
rscheng46
亂數產生器使用範例-設定節點的初始位置 (TCL程式碼)
;# 設定亂數的範圍
rscheng47
亂數產生器使用範例-設定節點的初始位置 (TCL程式碼)
rscheng48
亂數產生器使用範例-設定節點的初始位置
執行結果
rscheng
乙太網路模擬
49
rscheng50
TCL程式碼
指令格式:Simulator instproc make-lan {nodes bw delay lltype ifqtype mactype chantype}
rscheng51
TCL程式碼
rscheng52
模擬結果
BEB: Binary Exponential Backoff
rscheng
NS-2下的IEEE 802.11 Ad Hoc無線網路模擬
rscheng54
IEEE 802.11的網路架構
Infrastructure Ad Hoc
MACDCF (contention-based Distributed Coordination Function
• Basic access• Virtual carrier sensing (RTS/CTS)
PCF (contention-free Point Coordination Function)
rscheng55
Media Access Mechanisms in IEEE 802.11 DCF
rscheng56
The 802.11 Frame
Ns-2中的implement
mac-802_11.h
rscheng57
RTS、CTS and ACK Frame
rscheng58
802.11 MAC層和實體層使用的預設參數
ns-2.XX/tcl/lib/ns-default.tcl
rscheng59
TCP在802.11網路上的預估效能
rscheng60
Ad Hoc 網路架構圖
rscheng61
TCL程式碼
在這個例子中,無線節點的傳送頻率被設為2.4 GHz,傳送距離是40公尺(RXThresh_ =1.74293e-08),接收距離是90公尺
rscheng62
無線節點的傳送範圍設定
計算結果
4
22
dhhGGPP rtrttr = = (0.28183815×1×1 ) × (1.52×1.52) / (2504) = 3.652e-10
rscheng63
TCL程式碼
rscheng64
TCL程式碼
Parameters for MAC and PHY Layer
在Ns-2中,RTS、CTS以及ACK的大小分為別20、14、14 byte (不含PHYhdr,PHYhdr = PLCP preamble + PLCP header)
rscheng65
TCL程式碼
無線網路不需要去設定Node與Node之間的Link連線
設定Node的參數
產生Node並設定Node的位置
rscheng66
TCL程式碼
使用FTP來產生資料(在第0秒時開始傳送)
rscheng67
TCL程式碼
在指定的時間"$end"執行stop這個副程式並結束資料傳送
rscheng68
模擬結果
rscheng69
Multi-hop Ad Hoc 網路模擬
1. 撰寫Unix shell script (假設儲存檔案名稱為: runtcp)
2. 執行 script
Hop-count數對TCP效能的影響
rscheng70
記錄檔的部份內容
rscheng71
Mobile Node的設定參數
在設定Mobile-node時,可視需要設定相關的參數,包括像MAC層所使用的傳輸協定(-macType)、信號傳遞時所使用的衰減模型(-propType)、Queue的種類(-ifqType)、Queue的長度(-ifqLen)
以及是否考慮能源的限制(-energyModel)等。
rscheng72
Movement Mobie-node的移動設定
Example $node會在時間$time時,以指定的速度 (m/s)由向
移動
rscheng73
Energy Extension Energy model的設定
Energy model是Node可以設定的屬性之一,設定方法如下:
Energy-aware node的設定範例
ns-2.31/mobile/energy-model[.cc and.h]
設定傳送/接收所消耗的能源,以及一開始所擁有的能源
rscheng74
Energy Model的參考設定值Wireless transceiver power consumption [1]
[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.
Lucent IEEE 802.11 WaveLan PC card characteristics [2]
rscheng75
有關Mobile-node的原始程式碼以及實作細節,請參考mobilenode.{cc.h}這兩個檔案。下面列出在ns-allinone-
2.31/ns-2.31/mobile/目錄下的相關檔案:
rscheng
NS-2下的TCP over IEEE 802.11WLAN模擬
76
rscheng77
模擬架構圖
WLAN模擬架構圖
TCP Source (W0)和TCP Sink (Ni)之間有一個TCP 的Connection,其中W0和W1代表網路上的Wired Node,AP代表Access Point,Ni (i = 1~ n)
則是WLAN裡面的Wireless Station。
rscheng78
TCL程式碼
rscheng79
rscheng80
rscheng81
rscheng82
rscheng83
rscheng84
rscheng85
rscheng86
rscheng87
rscheng88
rscheng89
Unix Shell Script
假設儲存的檔案名稱為: run_tcp…
rscheng90
Unix Shell Script的執行結果
rscheng91
計算Goodput的AWK程式
假設儲存的檔案名稱為: goodput.sh …
rscheng92
執行結果