-
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
執行結果