NS-2無線網路模擬 - Kun Shan Universityteachers.ksu.edu.tw/rscheng/talk/NS-2-20081111.pdf ·...

92
rscheng 1 NS-2無線網路模擬 Speaker : RungShiang Cheng (程榮祥) Department of Computer and Communication Kun Shan University http://teachers.ksu.edu.tw/rscheng

Transcript of NS-2無線網路模擬 - Kun Shan Universityteachers.ksu.edu.tw/rscheng/talk/NS-2-20081111.pdf ·...

  • 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

    執行結果