SlideShare a Scribd company logo
NSG:模擬檔案產生軟體

NSG 簡介與安裝

NSG 是一個專為 ns2 所設計的劇本產生器,目前最新的版本為第二版(NSG2),

和前一版(NSG1)比較起來最大的不同在於 NSG2 除了原本支援的無線網路之

外還支援有線網路的劇本 以下列出 NSG2 主要的功能及支援 ns2 的物件種類 ︰
           ,

1.   產生有線網路及無線網路的劇本(目前尚不支援無線及有線混合的劇本)

2.   支援的 Node 種類︰WirelessNode 及 WiredNode

3.   支援 WirelessNode 的移動設定

4.   支援的 Link 種類︰Duplex-link 及 Simplex-link

5.   Agent 支援(TCP、TCP/Tahoe、TCP/Reno、TCP/Newreno、TCP/Vegas、

     TCPSink、UDP 及 NULL)

6.   支援的 Application 種類:CBR 及 FTP

7.   支援的 Routing protocol 種類︰DSDV、DSR、AODV 及 TORA

8.   支援的 Queue 種類︰DropTail、RED、FQ、DRR、SFQ 及 CBQ

9.   無線網路相關設定

10. 802.11 參數設定(NSG 提供一組 802.11b 的預設參數)


由於 NSG2 是以 Java 撰寫,因此可在任何支援 Java 的平台上執行(如 Windows、

                ,另外 NSG2 是以 Java Jar 檔案的形式來發布,所以 NSG2 本
Linux、Mac OS ...)

身並不需要安裝,只要下載 NSG2 並儲存到電腦中便可透過 Java 來啟動。其下

載網址如下︰


NSG2 下載網址︰http://wushoupong.googlepages.com/nsg


此外,在執行 NSG2 之前必須先確定電腦中裝有 Java Runtime Environment JRE)
                                                (

或 Java SE Development Kit(JDK)
                             ,以 Window 作業系統為例,若要確定電腦中
是否已安裝 Java,可在 DOS 命令列中輸入” java -version” 指令,如果電腦已安

裝過 Java 則螢幕上會顯示出所安裝的 Java 版本(請參考圖 1)。




                      圖 1. 確認電腦中的 Java 版本

如果電腦中尚未安裝過 JRE 或 JDK 也可在昇陽的 Java 網站上下載最新版的 JRE
                    ,

或 JDK,安裝步驟請參考網站的上說明。


昇陽的 JAVA 官方網站︰http://java.sun.com/javase/downloads/index.jsp


要啟動 NSG2 可在 DOS 命令列中切換到 NSG2 程式的存放目錄中(此例中 NSG2

被存放在 C:nsg2目錄中) 輸入”java -jar nsg2.jar”即可(請參考圖 2)
                 ,                                。




                           圖 2. 執行 NSG2


NSG2 的基本概念

利用 NSG2 來產生劇本檔案非常簡單,在設計 NSG2 時便是希望能夠讓使用者以

最自然、最直覺的方式來產生 ns2 劇本檔,因此盡量以「所見即所得」的方式來

設計,也就是說使用者大多能夠直接在畫面上看到 Node 的位置,以及相關的其
他資訊(座標、連線等等...),使用者可在劇本產生後,針對本身的需求自行去

作適當的修改,存檔之後的劇本檔(.tcl)再交由 ns2 去執行即可,因此使用上

非常簡單,如果可以抓住幾個重點,即可輕易的操作 NSG2。


以下將針對幾個 NSG2 的基本概念作簡單的說明,在 NSG2 中,最方便的地方在

於產生無線網路中的 Node 座標,以筆者的經驗來說,撰寫 ns2 的無線網路劇本

檔時必須提供每一個 Node 的座標(包含 x,y,z),為使其產生大量且有規律的

Node,會使劇本檔的撰寫變得相當繁瑣,這也是當初筆者想要自己撰寫一個工

具來協助使用者產生劇本檔的原因,以 NSG2 來產生 Node 的座標是一件相當容

易的事。


使用 NSG2 時,主要分成五個模式,這些模式大多都是依照 ns2 中主要的幾種物

件來設計,各物件之間的關係可參考圖 3。要切換各個模式,只要按下畫面上方

的切換鈕即可,NSG2 中包含以下五種模式:

1.   Hand mode

2.   Node mode

3.   Link mode(只適用於有線網路劇本)

4.   Agent mode

5.   Application mode



                        Application CBR, FTP ...        Application




                          Agent     TCP, UDP ...          Agent




                          Node             Link           Node
                                      Complex, Duplex



                         圖 3. NSG2 中的主要物件關係
Hand mode

在 Hand mode 模式下的功能最為單純,主要是讓使用者可以調整要觀看的範圍。

當建置一個大型的劇本時,可能會包含大量的 Node,畫面可能容納不下所有的

物件,這時可利用 Hand mode 來調整要觀看的範圍,使用時只要按住滑鼠的左

鍵,然後拖曳即可。


Node mode

在 Node mode 模式下,使用者可配置 Node 的位置,如果是有線網路劇本,那麼

Node 的座標並不是很重要,主要是設定其相對的位置罷了,然而 NSG 仍會根據

所設定的 Node 相關位置來配置在 NAM 中 Node 的位置。


在設計無線網路劇本時,Node 的座標就變的非常重要,因為每一個 Node 的座標

將會影響到傳輸範圍、訊號強度以及 Routing protocol 等,所以在建置無線網路

劇本時,NSG2 會在畫面下方顯示出座標的資訊作為參考。並且 NSG 會假設無

線網路 Node 的傳輸距離為 250m(實際模擬時的有效傳輸距離則根據所設定的

無線網路參數來決定),所以當二個 Node 的傳輸距離在 250m 以內時,NSG2 會

在二者之間畫一條連線,使用者可以透過滑鼠點選 Node 並拖曳來調整所要擺放

的 Node 位置。除此之外,在 Node mode 底下還提供一次產生多個 Node 的方式,

其中包含了:Chain 垂直和水平、Grid(n×n)及 Random,使用者只需設定 Node

和 Node 之間的距離,即可輕鬆產生大量且規律的網路拓撲。


Link mode

Link mode 只適用於有線網路的劇本,無線網路中不需要該項設定,在 Link mode

中可用來設定 Node 和 Node 間的鏈路,例如 Simplex-link 或 Duplex-link,並且設

定相關的參數(傳輸速度、佇列的種類等)。使用時先設定屬性,然後用滑鼠選

取要連結的二個 Node 即可,設定好後,也可利用滑鼠右鍵來修改鏈路的參數或

刪除鏈路。
Agent mode

在 Agent mode 中,使用者可設定要附加在 Node 上的通訊協定(在 ns2 中稱為

Agent),目前 NSG2 主要支援 TCP(包含多種變形)和 UDP 通訊協定,其設定

方式很簡單,只要在要附加的 Node 上按一下滑鼠左鍵,然後再點選要擺放 Agent

的位置即可,Agent 的重點在於附加在哪一個 Node 上而不是它的位置,位置的

設定只是為了畫面的顯示罷了,所以使用者可以將位置擺放在清楚容易辨識的位

置即可。


在 Agent mode 除了設定 Agent 所屬的 Node 之外,還可以設定傳送端和接收端的

相關資訊,使用時只要選取二個要配對的 Agent 即可,一般來說在 ns2 中 TCP

Agent 必須要對應到 TCP-Sink Agent,而 UDP Agent 則是對應到 Null Agent,其

中 TCP Agent 和 UDP Agent 便是傳送端,而 TCP-Sink Agent 和 Null Agent 則分別

是 TCP Agent 和 UDP Agent 的接收端。在設定傳送端和接收端時要注意配對的問

題,例如將二個 TCP Agent 配對起來,或是將一個 TCP Agent 和一個 UDP Agent

配對起來都是沒有意義的。


當設定好 Agent 之後,也可以利用滑鼠右鍵來修改修改 Agent 的參數或刪除

Agent,有些細部的參數在產生 Agent 時無法直接設定,必須要先建立好 Agent,

再利用滑鼠右鍵的彈出式選單來設定,例如 TCP 的 congestion window 與 packet

size 等相關設定。


Application mode

在 Application mode 模式底下可以用來設定最上層的應用程式,例如 CBR 與

FTP,設定時只要在要附加的 Agent 上按一下滑鼠左鍵,然後再點選要擺放

Application 的位置即可,同樣的 Application 的重點在於附加的 Agent 而不是在於

其位置,所以位置的設定只要在清楚容易辨識的位置即可。


和設定 Agent 時一樣,當設定好 Application 之後,可以利用滑鼠右鍵來修改
Application 的參數或刪除 Application 有些細部的參數在產生 Application 時無法
                              ,

直接設定,必須要先建立好 Application,再利用滑鼠右鍵的彈出式選單來設定,

例如 CBR 的 Transmission rate 與 packet size 等相關設定。


Parameters

除了上述五種模式之外,另外還有參數設定的功能,在有線網路劇本時,參數的

設定包含模擬時間和 Trace 檔的名稱(包含 NAM 的 Trace 檔)
                                     ,而在建立無線網

路劇本時,則另外多了無線網路(Wireless)及頻道特性(Channel)的相關設定。

比較值得一提的是,在頻道特性的相關設定中,NSG2 提供了一組模擬 802.11b

的參考值,然而在預設的情況下並不會啟用,如果使用者要啟用這些設定,則選

取畫面左邊的方塊即可,當然,也可以根據模擬的需求設定新的值。


當一切都設定完畢之後,按下 TCL 按鈕即可產生 TCL 劇本檔,使用者這時候還

可以自行在劇本檔上作一些調整,調整完畢後便可以將檔案儲存並利用 ns2 去執

行。


最後,有幾點注意的事項:

1.   當設定參數時,若是必要的參數則使用者一定要提供,否則 NSG 會跳出警

     告訊息;若是非必要參數,則可以輸入 -1,若參數設定為 -1 那麼在產生

     TCL 劇本檔時 NSG 將忽略該參數 另外 NSG 也不會去檢查參數的正確性,
                        。  ,

     例如輸入一個佇列的大小為 -50 則 NSG 會「忠實的」將該值寫到劇本檔當

     中。

2.   當刪除物件時,該物件所屬的相關物件也會一併被刪除,例如刪除一個

     Node,則所有連到該 Node 的 Link 及所有附加到該 Node 的 Agent 都會被刪

     除,而當 Agent 被刪除時,所有附加在該 Agent 的 Application 也會一併被

     刪除。

3.   若設定 Agent 時,沒有設定傳送端(或接收端)
                             ,則在產生 TCL 劇本檔時該
Agent 會被忽略,因為就算將該 Agent 的設定加到劇本檔當中模擬時也不會

     有效果。


用 NSG 來產生有線網路劇本

接著筆者將以一個簡單的範例來介紹如何在 NSG 中產生一個有線網路的劇本

檔,模擬的環境如圖 4 所示。

      cbr0   udp0                                                             null2


                    n0                                                   n4
                         2 Mbps, 10 ms                   2 Mbps, 10 ms
                                         1 Mbps, 20 ms
                              n2                              n3

                         2 Mbps, 10 ms                   2 Mbps, 10 ms
                    n1                                                   n5


      cbr1   udp1                                                             null3



                              圖 4. 有線網路拓撲


在這一個模擬環境中共放置六個 Node,條件如下:


1.   n0 和 n4 之間建立一個以 UDP 為通訊協定的 CBR 連線(標示為 cbr0)。


2.   n1 和 n5 之間建立一個以 UDP 為通訊協定的 CBR 連線(標示為 cbr1)。


3.   n0-n2、n1-n2、n3-n4、n3-n5 間的頻寬為 2Mbps,延遲時間設定為 10ms。


4.   n2-n3 間的頻寬則設為 1Mbps,延遲時間設定為 20ms。


5.   所有鏈路皆為 Duplex-link、佇列的管理機制都是採用 DropTail,且佇列長度

     (Queue limit)皆設定為 10 個封包長度。


在應用程式設定方面:


1.   cbr0 的封包大小設定為 1500bytes,並以 1Mbps 的傳送速度來發送資料,在

     模擬時間為 1 秒時開始送資料,在第 4 秒時結束傳送。
2.   cbr1 的封包大小亦設定為 1500bytes,並以 1Mbps 的傳送速度來發送資料,

     並在模擬時間為 2 秒時開始送資料,在第 3 秒時結束傳送。


3.   整個模擬的時間設定為 5 秒。


注意:由於 ns2 的 UDP 通訊協定預設的封包大小為 1000bytes,也就是說,當封

      包大小超過 1000bytes 時 UDP 便會將封包切割為較小的片斷來傳送

      (Segmentation)
                   ,所以在設定時需特別指定 UDP 的封包大小為 1500bytes

      以避免上層的應用程式封包被 UDP 所切割。


在這個實驗中,可以發現二個 cbr 連線都會通過 n2-n3 這條鏈路,且這條鏈路的

頻寬為 1Mbps,然而 cbr0 的傳送速度為 1Mbps,這會讓整個 n2-n3 頻寬都被 cbr0

的封包所占滿,因此當 cbr1 也開始傳輸之後,將會發現 n2-n3 的流量開始變的擁

擠,經過一段時間之後,當 n3 的佇列被塞滿時,就會開始有一些封包在 n3 被丟

棄,這樣的現象一直持續到 cbr1 結束傳送之後。


實際操作


Step1:新增一個有線網路的劇本,使用者可以透過 Scenario→New wired scenario

      來建立(或按下快速鍵 Ctrl+W),建立後如圖 5 所示,在預設的情況下

      NSG 會切換到 Node mode(Node 按鈕會變成灰色)
                                     ,也就是說使用者一開

      始便可建立 Node。
圖 5. 新增一個有線網路的劇本


Step2:開始建立劇本所需要的 Node,利用滑鼠直接點選想要擺放 Node 的位置

    以建立 Node,在此範例中建立的六個 Node 其相對位置如圖 6,可透過調

    整畫面右下方的橫桿顯示不同的比例。
圖 6 : 設定好六個 node 相關位置


Step3:設定 Node 之間的鏈路,首先切換到 Link mode(按下 Link 按鈕或快速鍵

    Ctrl+3),然後依序將下列的參數設定好。

    1.   Link-type:duplex-link

    2.   Queue type:DropTail

    3.   Capacity:2Mbps

    4.   Propagation delay:10ms

    5.   Queue size:10


Step4:以滑鼠點選的方式將 n0-n2、n1-n2、n3-n4 及 n3-n5 之間的鏈路建立起來,

    接著將 Capacity 設定為 1Mbps,Propagation delay 設定為 20ms,然後再建

    立 n2-n3 間的鏈路,建立好後如圖 7 所示,如果建立的過程中有參數沒設

    定好,也可以在鏈路上按下滑鼠右鍵進行修改。
圖 7 : 設定好六個 node 之間的鏈路


Step5:接著切換到 Agent mode(按下 Agent 按鈕或快速鍵 Ctrl+4)來進行通訊

    協定的設定。首先選取 Agent type 為 UDP 並設定封包大小(Packet size)

    為 1500 bytes,並在 n0 與 n1 上各建立一個 Agent,接著選取 Agent type

    為 NULL,並在 n4、n5 上各建立一個 NULL Agent。建立好 Agent 之後還

    要繼續設定 Agent 之間的連線,其設定的方式是用滑鼠選取要建立連線

    的二個 Agent,在此分別在(udp0、null2)和(udp1、null3)之間建立連

    線,建立好之後如圖 8 所示。
圖 8 : 建立 Agents


Step6:切換到 Application mode(按下 Application 按鈕或快速鍵 Ctrl+5)來進行

     上層的應用程式設定,將 Application type 設定為 CBR 並設定啟動時間

     (Start time) 1 秒 結束時間
                 為   ,    (Stop time) 4 秒 封包大小為 1500bytes,
                                     為   ,

     傳輸速度為 1Mbps,然後在 n0 上建立一個 CBR Application,接著將啟動

     時間(Start time)為 2 秒,結束時間(Stop time)為 3 秒,並在 n1 上再

     建立一個 CBR Application,如圖 9。
圖 9 : 建立 Application


Step7:最後,設定模擬的參數(按下 Parameters 鈕即可或快速鍵 Ctrl+6),在這

    個例子中,因為是建立有線網路的劇本,所以參數的部份只需要將模擬

    時間(Simulation time)設定為 5.0,並且指定產生 Trace 檔案名稱即可,

    如圖 10。




                  圖 10: 設定模擬參數


Step8:當一切都設定完畢之後按下 TCL 按鈕(快速鍵 Ctrl+7)即可產生劇本檔
了,每一次產生的劇本檔都會被建立在一個獨立的視窗,使用者這時候

      還可以根據自己的需求去做修正,如圖 11 所示。




                          圖 11. 產生劇本檔


Step9:按下 Save 按鈕(快速鍵 Alt+S)將產生出來的 TCL 檔儲存起來之後,便

      可交由 ns2 開始進行模擬,產生出來的劇本檔如下 。


# This script is created by NSG2 beta1
# <http://wushoupong.googlepages.com/nsg>

#===================================
#    Simulation parameters setup
#===================================
set val(stop) 5.0                      ;# time of simulation end

#===================================
#       Initialization
#===================================
#Create a ns simulator
set ns [new Simulator]

#Open the NS trace file
set tracefile [open out.tr w]
$ns trace-all $tracefile
#Open the NAM trace file
set namfile [open out.nam w]
$ns namtrace-all $namfile

#===================================
#       Nodes Definition
#===================================
#Create 6 nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]

#===================================
#       Links Definition
#===================================
#Createlinks between nodes
$ns duplex-link $n0 $n2 2.0Mb 10ms DropTail
$ns queue-limit $n0 $n2 10
$ns duplex-link $n2 $n1 2.0Mb 10ms DropTail
$ns queue-limit $n2 $n1 10
$ns duplex-link $n4 $n3 2.0Mb 10ms DropTail
$ns queue-limit $n4 $n3 10
$ns duplex-link $n3 $n5 2.0Mb 10ms DropTail
$ns queue-limit $n3 $n5 10
$ns duplex-link $n2 $n3 1.0Mb 20ms DropTail
$ns queue-limit $n2 $n3 10

#Give node position (for NAM)
$ns duplex-link-op $n0 $n2 orient   right-down
$ns duplex-link-op $n2 $n1 orient   left-down
$ns duplex-link-op $n4 $n3 orient   left-down
$ns duplex-link-op $n3 $n5 orient   right-down
$ns duplex-link-op $n2 $n3 orient   right

#===================================
#       Agents Definition
#===================================
#Setup a UDP connection
set udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0
set null2 [new Agent/Null]
$ns attach-agent $n4 $null2
$ns connect $udp0 $null2
$udp0 set packetSize_ 1500

#Setup a UDP connection
set udp1 [new Agent/UDP]
$ns attach-agent $n1 $udp1
set null3 [new Agent/Null]
$ns attach-agent $n5 $null3
$ns connect $udp1 $null3
$udp1 set packetSize_ 1500

#===================================
#       Applications Definition
#===================================
#Setup a CBR Application over UDP connection
set cbr0 [new Application/Traffic/CBR]
$cbr0 attach-agent $udp0
$cbr0 set packetSize_ 1500
$cbr0 set rate_ 1.0Mb
$cbr0 set random_ null
$ns at 1.0 "$cbr0 start"
$ns at 4.0 "$cbr0 stop"

#Setup a CBR Application over UDP connection
set cbr1 [new Application/Traffic/CBR]
$cbr1 attach-agent $udp1
$cbr1 set packetSize_ 1500
$cbr1 set rate_ 1.0Mb
$cbr1 set random_ null
$ns at 2.0 "$cbr1 start"
$ns at 3.0 "$cbr1 stop"

#===================================
#       Termination
#===================================
#Define a 'finish' procedure
proc finish {} {
   global ns tracefile namfile
   $ns flush-trace
   close $tracefile
   close $namfile
   exec nam out.nam &
   exit 0
}
$ns at $val(stop) "$ns nam-end-wireless $val(stop)"
$ns at $val(stop) "finish"
$ns at $val(stop) "puts "done" ; $ns halt"
$ns run


NSG 所產生出來的劇本檔會自動啟動 NAM 來呈現模擬的過程,如果不想讓

NAM 啟動可在 NSG 中參數設定時,將 NAM File 選項設定為-1,則 NSG 便不會

將啟動 NAM 的指令寫入到劇本檔當中。圖 12 為 NAM 啟動的畫面,可以看出

在模擬時間為 2.1 秒時,n2 因同時湧入太多封包而發生封包被丟棄現象。
圖 12

以下截取出 Trace 檔的部份內容,由 Trace 檔內容也可以觀察到封包被丟棄的現

象(d 代表 drop)。
前略
r 2.12 3 5 cbr 1500 ------- 0 1.0 5.0 2 88
r 2.12 0 2 cbr 1500 ------- 0 0.0 4.0 92 101
+ 2.12 2 3 cbr 1500 ------- 0 0.0 4.0 92 101
d 2.12 2 3 cbr 1500 ------- 0 0.0 4.0 92 101
- 2.12 2 3 cbr 1500 ------- 0 1.0 5.0 4 92
r 2.124 1 2 cbr 1500 ------- 0 1.0 5.0 9 102
+ 2.124 2 3 cbr 1500 ------- 0 1.0 5.0 9 102
r 2.128 2 3 cbr 1500 ------- 0 1.0 5.0 3 90
+ 2.128 3 5 cbr 1500 ------- 0 1.0 5.0 3 90
- 2.128 3 5 cbr 1500 ------- 0 1.0 5.0 3 90
+ 2.128 0 2 cbr 1500 ------- 0 0.0 4.0 94 105
- 2.128 0 2 cbr 1500 ------- 0 0.0 4.0 94 105
+ 2.132 1 2 cbr 1500 ------- 0 1.0 5.0 11 106
- 2.132 1 2 cbr 1500 ------- 0 1.0 5.0 11 106
r 2.132 3 4 cbr 1500 ------- 0 0.0 4.0 86 89
r 2.132 0 2 cbr 1500 ------- 0 0.0 4.0 93 103
+ 2.132 2 3 cbr 1500 ------- 0 0.0 4.0 93 103
d 2.132 2 3 cbr 1500 ------- 0 0.0 4.0 93 103
- 2.132 2 3 cbr 1500 ------- 0 0.0 4.0 88 93
r 2.136 1 2 cbr 1500 ------- 0 1.0 5.0 10 104
+ 2.136 2 3 cbr 1500 ------- 0 1.0 5.0 10 104
略

More Related Content

Similar to Network Simulator Generator TCL 2.1

探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
YingSiang Geng
 
路由器配置手册
路由器配置手册路由器配置手册
路由器配置手册cpcfan
 
Corega CG-WLAPGMN Manual
Corega CG-WLAPGMN ManualCorega CG-WLAPGMN Manual
Corega CG-WLAPGMN Manual
tag taglife
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmmYiwei Ma
 
8 集群
8 集群8 集群
8 集群
hik_lhz
 
20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大
MAKERPRO.cc
 
大鱼架构演进
大鱼架构演进大鱼架构演进
大鱼架构演进
Jun Liu
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365
Peter Yi
 
智慧家庭 簡報
智慧家庭 簡報智慧家庭 簡報
智慧家庭 簡報艾鍗科技
 
Ccns 網路基礎概論
Ccns 網路基礎概論 Ccns 網路基礎概論
Ccns 網路基礎概論
世平 梁
 
上位机发送FINS UDP命令读写NJ数据.pdf
上位机发送FINS UDP命令读写NJ数据.pdf上位机发送FINS UDP命令读写NJ数据.pdf
上位机发送FINS UDP命令读写NJ数据.pdf
Dandon12
 
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
dbabc
 
网管会 一些基础知识
网管会 一些基础知识网管会 一些基础知识
网管会 一些基础知识Jammy Wang
 
云计算 系统实例与研究现状
云计算 系统实例与研究现状云计算 系统实例与研究现状
云计算 系统实例与研究现状Danny AJ Lin
 
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統Hsu Ping Feng
 
Hadoop学习总结
Hadoop学习总结Hadoop学习总结
Hadoop学习总结ordinary2012
 
ZeroMQ简介
ZeroMQ简介ZeroMQ简介
ZeroMQ简介
Xu Wang
 

Similar to Network Simulator Generator TCL 2.1 (20)

探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
 
路由器配置手册
路由器配置手册路由器配置手册
路由器配置手册
 
Corega CG-WLAPGMN Manual
Corega CG-WLAPGMN ManualCorega CG-WLAPGMN Manual
Corega CG-WLAPGMN Manual
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmm
 
Technotrend
TechnotrendTechnotrend
Technotrend
 
Tcpip
TcpipTcpip
Tcpip
 
8 集群
8 集群8 集群
8 集群
 
Manual
ManualManual
Manual
 
20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大
 
大鱼架构演进
大鱼架构演进大鱼架构演进
大鱼架构演进
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365
 
智慧家庭 簡報
智慧家庭 簡報智慧家庭 簡報
智慧家庭 簡報
 
Ccns 網路基礎概論
Ccns 網路基礎概論 Ccns 網路基礎概論
Ccns 網路基礎概論
 
上位机发送FINS UDP命令读写NJ数据.pdf
上位机发送FINS UDP命令读写NJ数据.pdf上位机发送FINS UDP命令读写NJ数据.pdf
上位机发送FINS UDP命令读写NJ数据.pdf
 
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
 
网管会 一些基础知识
网管会 一些基础知识网管会 一些基础知识
网管会 一些基础知识
 
云计算 系统实例与研究现状
云计算 系统实例与研究现状云计算 系统实例与研究现状
云计算 系统实例与研究现状
 
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統
 
Hadoop学习总结
Hadoop学习总结Hadoop学习总结
Hadoop学习总结
 
ZeroMQ简介
ZeroMQ简介ZeroMQ简介
ZeroMQ简介
 

Recently uploaded

GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
微信 tytyqqww业务接单
 
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
微信 tytyqqww业务接单
 
Lesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptxLesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptx
priscilleng1
 
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
ictglzse
 
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
微信 tytyqqww业务接单
 
Unit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptxUnit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptx
priscilleng1
 
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
微信 tytyqqww业务接单
 
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
ssuserd66db11
 
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
微信 tytyqqww业务接单
 
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
微信 tytyqqww业务接单
 
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
微信 tytyqqww业务接单
 

Recently uploaded (11)

GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
 
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
 
Lesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptxLesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptx
 
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
 
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
 
Unit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptxUnit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptx
 
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
 
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
 
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
 
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
 
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
 

Network Simulator Generator TCL 2.1

  • 1. NSG:模擬檔案產生軟體 NSG 簡介與安裝 NSG 是一個專為 ns2 所設計的劇本產生器,目前最新的版本為第二版(NSG2), 和前一版(NSG1)比較起來最大的不同在於 NSG2 除了原本支援的無線網路之 外還支援有線網路的劇本 以下列出 NSG2 主要的功能及支援 ns2 的物件種類 ︰ , 1. 產生有線網路及無線網路的劇本(目前尚不支援無線及有線混合的劇本) 2. 支援的 Node 種類︰WirelessNode 及 WiredNode 3. 支援 WirelessNode 的移動設定 4. 支援的 Link 種類︰Duplex-link 及 Simplex-link 5. Agent 支援(TCP、TCP/Tahoe、TCP/Reno、TCP/Newreno、TCP/Vegas、 TCPSink、UDP 及 NULL) 6. 支援的 Application 種類:CBR 及 FTP 7. 支援的 Routing protocol 種類︰DSDV、DSR、AODV 及 TORA 8. 支援的 Queue 種類︰DropTail、RED、FQ、DRR、SFQ 及 CBQ 9. 無線網路相關設定 10. 802.11 參數設定(NSG 提供一組 802.11b 的預設參數) 由於 NSG2 是以 Java 撰寫,因此可在任何支援 Java 的平台上執行(如 Windows、 ,另外 NSG2 是以 Java Jar 檔案的形式來發布,所以 NSG2 本 Linux、Mac OS ...) 身並不需要安裝,只要下載 NSG2 並儲存到電腦中便可透過 Java 來啟動。其下 載網址如下︰ NSG2 下載網址︰http://wushoupong.googlepages.com/nsg 此外,在執行 NSG2 之前必須先確定電腦中裝有 Java Runtime Environment JRE) ( 或 Java SE Development Kit(JDK) ,以 Window 作業系統為例,若要確定電腦中
  • 2. 是否已安裝 Java,可在 DOS 命令列中輸入” java -version” 指令,如果電腦已安 裝過 Java 則螢幕上會顯示出所安裝的 Java 版本(請參考圖 1)。 圖 1. 確認電腦中的 Java 版本 如果電腦中尚未安裝過 JRE 或 JDK 也可在昇陽的 Java 網站上下載最新版的 JRE , 或 JDK,安裝步驟請參考網站的上說明。 昇陽的 JAVA 官方網站︰http://java.sun.com/javase/downloads/index.jsp 要啟動 NSG2 可在 DOS 命令列中切換到 NSG2 程式的存放目錄中(此例中 NSG2 被存放在 C:nsg2目錄中) 輸入”java -jar nsg2.jar”即可(請參考圖 2) , 。 圖 2. 執行 NSG2 NSG2 的基本概念 利用 NSG2 來產生劇本檔案非常簡單,在設計 NSG2 時便是希望能夠讓使用者以 最自然、最直覺的方式來產生 ns2 劇本檔,因此盡量以「所見即所得」的方式來 設計,也就是說使用者大多能夠直接在畫面上看到 Node 的位置,以及相關的其
  • 3. 他資訊(座標、連線等等...),使用者可在劇本產生後,針對本身的需求自行去 作適當的修改,存檔之後的劇本檔(.tcl)再交由 ns2 去執行即可,因此使用上 非常簡單,如果可以抓住幾個重點,即可輕易的操作 NSG2。 以下將針對幾個 NSG2 的基本概念作簡單的說明,在 NSG2 中,最方便的地方在 於產生無線網路中的 Node 座標,以筆者的經驗來說,撰寫 ns2 的無線網路劇本 檔時必須提供每一個 Node 的座標(包含 x,y,z),為使其產生大量且有規律的 Node,會使劇本檔的撰寫變得相當繁瑣,這也是當初筆者想要自己撰寫一個工 具來協助使用者產生劇本檔的原因,以 NSG2 來產生 Node 的座標是一件相當容 易的事。 使用 NSG2 時,主要分成五個模式,這些模式大多都是依照 ns2 中主要的幾種物 件來設計,各物件之間的關係可參考圖 3。要切換各個模式,只要按下畫面上方 的切換鈕即可,NSG2 中包含以下五種模式: 1. Hand mode 2. Node mode 3. Link mode(只適用於有線網路劇本) 4. Agent mode 5. Application mode Application CBR, FTP ... Application Agent TCP, UDP ... Agent Node Link Node Complex, Duplex 圖 3. NSG2 中的主要物件關係
  • 4. Hand mode 在 Hand mode 模式下的功能最為單純,主要是讓使用者可以調整要觀看的範圍。 當建置一個大型的劇本時,可能會包含大量的 Node,畫面可能容納不下所有的 物件,這時可利用 Hand mode 來調整要觀看的範圍,使用時只要按住滑鼠的左 鍵,然後拖曳即可。 Node mode 在 Node mode 模式下,使用者可配置 Node 的位置,如果是有線網路劇本,那麼 Node 的座標並不是很重要,主要是設定其相對的位置罷了,然而 NSG 仍會根據 所設定的 Node 相關位置來配置在 NAM 中 Node 的位置。 在設計無線網路劇本時,Node 的座標就變的非常重要,因為每一個 Node 的座標 將會影響到傳輸範圍、訊號強度以及 Routing protocol 等,所以在建置無線網路 劇本時,NSG2 會在畫面下方顯示出座標的資訊作為參考。並且 NSG 會假設無 線網路 Node 的傳輸距離為 250m(實際模擬時的有效傳輸距離則根據所設定的 無線網路參數來決定),所以當二個 Node 的傳輸距離在 250m 以內時,NSG2 會 在二者之間畫一條連線,使用者可以透過滑鼠點選 Node 並拖曳來調整所要擺放 的 Node 位置。除此之外,在 Node mode 底下還提供一次產生多個 Node 的方式, 其中包含了:Chain 垂直和水平、Grid(n×n)及 Random,使用者只需設定 Node 和 Node 之間的距離,即可輕鬆產生大量且規律的網路拓撲。 Link mode Link mode 只適用於有線網路的劇本,無線網路中不需要該項設定,在 Link mode 中可用來設定 Node 和 Node 間的鏈路,例如 Simplex-link 或 Duplex-link,並且設 定相關的參數(傳輸速度、佇列的種類等)。使用時先設定屬性,然後用滑鼠選 取要連結的二個 Node 即可,設定好後,也可利用滑鼠右鍵來修改鏈路的參數或 刪除鏈路。
  • 5. Agent mode 在 Agent mode 中,使用者可設定要附加在 Node 上的通訊協定(在 ns2 中稱為 Agent),目前 NSG2 主要支援 TCP(包含多種變形)和 UDP 通訊協定,其設定 方式很簡單,只要在要附加的 Node 上按一下滑鼠左鍵,然後再點選要擺放 Agent 的位置即可,Agent 的重點在於附加在哪一個 Node 上而不是它的位置,位置的 設定只是為了畫面的顯示罷了,所以使用者可以將位置擺放在清楚容易辨識的位 置即可。 在 Agent mode 除了設定 Agent 所屬的 Node 之外,還可以設定傳送端和接收端的 相關資訊,使用時只要選取二個要配對的 Agent 即可,一般來說在 ns2 中 TCP Agent 必須要對應到 TCP-Sink Agent,而 UDP Agent 則是對應到 Null Agent,其 中 TCP Agent 和 UDP Agent 便是傳送端,而 TCP-Sink Agent 和 Null Agent 則分別 是 TCP Agent 和 UDP Agent 的接收端。在設定傳送端和接收端時要注意配對的問 題,例如將二個 TCP Agent 配對起來,或是將一個 TCP Agent 和一個 UDP Agent 配對起來都是沒有意義的。 當設定好 Agent 之後,也可以利用滑鼠右鍵來修改修改 Agent 的參數或刪除 Agent,有些細部的參數在產生 Agent 時無法直接設定,必須要先建立好 Agent, 再利用滑鼠右鍵的彈出式選單來設定,例如 TCP 的 congestion window 與 packet size 等相關設定。 Application mode 在 Application mode 模式底下可以用來設定最上層的應用程式,例如 CBR 與 FTP,設定時只要在要附加的 Agent 上按一下滑鼠左鍵,然後再點選要擺放 Application 的位置即可,同樣的 Application 的重點在於附加的 Agent 而不是在於 其位置,所以位置的設定只要在清楚容易辨識的位置即可。 和設定 Agent 時一樣,當設定好 Application 之後,可以利用滑鼠右鍵來修改
  • 6. Application 的參數或刪除 Application 有些細部的參數在產生 Application 時無法 , 直接設定,必須要先建立好 Application,再利用滑鼠右鍵的彈出式選單來設定, 例如 CBR 的 Transmission rate 與 packet size 等相關設定。 Parameters 除了上述五種模式之外,另外還有參數設定的功能,在有線網路劇本時,參數的 設定包含模擬時間和 Trace 檔的名稱(包含 NAM 的 Trace 檔) ,而在建立無線網 路劇本時,則另外多了無線網路(Wireless)及頻道特性(Channel)的相關設定。 比較值得一提的是,在頻道特性的相關設定中,NSG2 提供了一組模擬 802.11b 的參考值,然而在預設的情況下並不會啟用,如果使用者要啟用這些設定,則選 取畫面左邊的方塊即可,當然,也可以根據模擬的需求設定新的值。 當一切都設定完畢之後,按下 TCL 按鈕即可產生 TCL 劇本檔,使用者這時候還 可以自行在劇本檔上作一些調整,調整完畢後便可以將檔案儲存並利用 ns2 去執 行。 最後,有幾點注意的事項: 1. 當設定參數時,若是必要的參數則使用者一定要提供,否則 NSG 會跳出警 告訊息;若是非必要參數,則可以輸入 -1,若參數設定為 -1 那麼在產生 TCL 劇本檔時 NSG 將忽略該參數 另外 NSG 也不會去檢查參數的正確性, 。 , 例如輸入一個佇列的大小為 -50 則 NSG 會「忠實的」將該值寫到劇本檔當 中。 2. 當刪除物件時,該物件所屬的相關物件也會一併被刪除,例如刪除一個 Node,則所有連到該 Node 的 Link 及所有附加到該 Node 的 Agent 都會被刪 除,而當 Agent 被刪除時,所有附加在該 Agent 的 Application 也會一併被 刪除。 3. 若設定 Agent 時,沒有設定傳送端(或接收端) ,則在產生 TCL 劇本檔時該
  • 7. Agent 會被忽略,因為就算將該 Agent 的設定加到劇本檔當中模擬時也不會 有效果。 用 NSG 來產生有線網路劇本 接著筆者將以一個簡單的範例來介紹如何在 NSG 中產生一個有線網路的劇本 檔,模擬的環境如圖 4 所示。 cbr0 udp0 null2 n0 n4 2 Mbps, 10 ms 2 Mbps, 10 ms 1 Mbps, 20 ms n2 n3 2 Mbps, 10 ms 2 Mbps, 10 ms n1 n5 cbr1 udp1 null3 圖 4. 有線網路拓撲 在這一個模擬環境中共放置六個 Node,條件如下: 1. n0 和 n4 之間建立一個以 UDP 為通訊協定的 CBR 連線(標示為 cbr0)。 2. n1 和 n5 之間建立一個以 UDP 為通訊協定的 CBR 連線(標示為 cbr1)。 3. n0-n2、n1-n2、n3-n4、n3-n5 間的頻寬為 2Mbps,延遲時間設定為 10ms。 4. n2-n3 間的頻寬則設為 1Mbps,延遲時間設定為 20ms。 5. 所有鏈路皆為 Duplex-link、佇列的管理機制都是採用 DropTail,且佇列長度 (Queue limit)皆設定為 10 個封包長度。 在應用程式設定方面: 1. cbr0 的封包大小設定為 1500bytes,並以 1Mbps 的傳送速度來發送資料,在 模擬時間為 1 秒時開始送資料,在第 4 秒時結束傳送。
  • 8. 2. cbr1 的封包大小亦設定為 1500bytes,並以 1Mbps 的傳送速度來發送資料, 並在模擬時間為 2 秒時開始送資料,在第 3 秒時結束傳送。 3. 整個模擬的時間設定為 5 秒。 注意:由於 ns2 的 UDP 通訊協定預設的封包大小為 1000bytes,也就是說,當封 包大小超過 1000bytes 時 UDP 便會將封包切割為較小的片斷來傳送 (Segmentation) ,所以在設定時需特別指定 UDP 的封包大小為 1500bytes 以避免上層的應用程式封包被 UDP 所切割。 在這個實驗中,可以發現二個 cbr 連線都會通過 n2-n3 這條鏈路,且這條鏈路的 頻寬為 1Mbps,然而 cbr0 的傳送速度為 1Mbps,這會讓整個 n2-n3 頻寬都被 cbr0 的封包所占滿,因此當 cbr1 也開始傳輸之後,將會發現 n2-n3 的流量開始變的擁 擠,經過一段時間之後,當 n3 的佇列被塞滿時,就會開始有一些封包在 n3 被丟 棄,這樣的現象一直持續到 cbr1 結束傳送之後。 實際操作 Step1:新增一個有線網路的劇本,使用者可以透過 Scenario→New wired scenario 來建立(或按下快速鍵 Ctrl+W),建立後如圖 5 所示,在預設的情況下 NSG 會切換到 Node mode(Node 按鈕會變成灰色) ,也就是說使用者一開 始便可建立 Node。
  • 9. 圖 5. 新增一個有線網路的劇本 Step2:開始建立劇本所需要的 Node,利用滑鼠直接點選想要擺放 Node 的位置 以建立 Node,在此範例中建立的六個 Node 其相對位置如圖 6,可透過調 整畫面右下方的橫桿顯示不同的比例。
  • 10. 圖 6 : 設定好六個 node 相關位置 Step3:設定 Node 之間的鏈路,首先切換到 Link mode(按下 Link 按鈕或快速鍵 Ctrl+3),然後依序將下列的參數設定好。 1. Link-type:duplex-link 2. Queue type:DropTail 3. Capacity:2Mbps 4. Propagation delay:10ms 5. Queue size:10 Step4:以滑鼠點選的方式將 n0-n2、n1-n2、n3-n4 及 n3-n5 之間的鏈路建立起來, 接著將 Capacity 設定為 1Mbps,Propagation delay 設定為 20ms,然後再建 立 n2-n3 間的鏈路,建立好後如圖 7 所示,如果建立的過程中有參數沒設 定好,也可以在鏈路上按下滑鼠右鍵進行修改。
  • 11. 圖 7 : 設定好六個 node 之間的鏈路 Step5:接著切換到 Agent mode(按下 Agent 按鈕或快速鍵 Ctrl+4)來進行通訊 協定的設定。首先選取 Agent type 為 UDP 並設定封包大小(Packet size) 為 1500 bytes,並在 n0 與 n1 上各建立一個 Agent,接著選取 Agent type 為 NULL,並在 n4、n5 上各建立一個 NULL Agent。建立好 Agent 之後還 要繼續設定 Agent 之間的連線,其設定的方式是用滑鼠選取要建立連線 的二個 Agent,在此分別在(udp0、null2)和(udp1、null3)之間建立連 線,建立好之後如圖 8 所示。
  • 12. 圖 8 : 建立 Agents Step6:切換到 Application mode(按下 Application 按鈕或快速鍵 Ctrl+5)來進行 上層的應用程式設定,將 Application type 設定為 CBR 並設定啟動時間 (Start time) 1 秒 結束時間 為 , (Stop time) 4 秒 封包大小為 1500bytes, 為 , 傳輸速度為 1Mbps,然後在 n0 上建立一個 CBR Application,接著將啟動 時間(Start time)為 2 秒,結束時間(Stop time)為 3 秒,並在 n1 上再 建立一個 CBR Application,如圖 9。
  • 13. 圖 9 : 建立 Application Step7:最後,設定模擬的參數(按下 Parameters 鈕即可或快速鍵 Ctrl+6),在這 個例子中,因為是建立有線網路的劇本,所以參數的部份只需要將模擬 時間(Simulation time)設定為 5.0,並且指定產生 Trace 檔案名稱即可, 如圖 10。 圖 10: 設定模擬參數 Step8:當一切都設定完畢之後按下 TCL 按鈕(快速鍵 Ctrl+7)即可產生劇本檔
  • 14. 了,每一次產生的劇本檔都會被建立在一個獨立的視窗,使用者這時候 還可以根據自己的需求去做修正,如圖 11 所示。 圖 11. 產生劇本檔 Step9:按下 Save 按鈕(快速鍵 Alt+S)將產生出來的 TCL 檔儲存起來之後,便 可交由 ns2 開始進行模擬,產生出來的劇本檔如下 。 # This script is created by NSG2 beta1 # <http://wushoupong.googlepages.com/nsg> #=================================== # Simulation parameters setup #=================================== set val(stop) 5.0 ;# time of simulation end #=================================== # Initialization #=================================== #Create a ns simulator set ns [new Simulator] #Open the NS trace file set tracefile [open out.tr w] $ns trace-all $tracefile
  • 15. #Open the NAM trace file set namfile [open out.nam w] $ns namtrace-all $namfile #=================================== # Nodes Definition #=================================== #Create 6 nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] #=================================== # Links Definition #=================================== #Createlinks between nodes $ns duplex-link $n0 $n2 2.0Mb 10ms DropTail $ns queue-limit $n0 $n2 10 $ns duplex-link $n2 $n1 2.0Mb 10ms DropTail $ns queue-limit $n2 $n1 10 $ns duplex-link $n4 $n3 2.0Mb 10ms DropTail $ns queue-limit $n4 $n3 10 $ns duplex-link $n3 $n5 2.0Mb 10ms DropTail $ns queue-limit $n3 $n5 10 $ns duplex-link $n2 $n3 1.0Mb 20ms DropTail $ns queue-limit $n2 $n3 10 #Give node position (for NAM) $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n2 $n1 orient left-down $ns duplex-link-op $n4 $n3 orient left-down $ns duplex-link-op $n3 $n5 orient right-down $ns duplex-link-op $n2 $n3 orient right #=================================== # Agents Definition #=================================== #Setup a UDP connection set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set null2 [new Agent/Null] $ns attach-agent $n4 $null2 $ns connect $udp0 $null2 $udp0 set packetSize_ 1500 #Setup a UDP connection set udp1 [new Agent/UDP] $ns attach-agent $n1 $udp1 set null3 [new Agent/Null] $ns attach-agent $n5 $null3 $ns connect $udp1 $null3 $udp1 set packetSize_ 1500 #=================================== # Applications Definition #=================================== #Setup a CBR Application over UDP connection
  • 16. set cbr0 [new Application/Traffic/CBR] $cbr0 attach-agent $udp0 $cbr0 set packetSize_ 1500 $cbr0 set rate_ 1.0Mb $cbr0 set random_ null $ns at 1.0 "$cbr0 start" $ns at 4.0 "$cbr0 stop" #Setup a CBR Application over UDP connection set cbr1 [new Application/Traffic/CBR] $cbr1 attach-agent $udp1 $cbr1 set packetSize_ 1500 $cbr1 set rate_ 1.0Mb $cbr1 set random_ null $ns at 2.0 "$cbr1 start" $ns at 3.0 "$cbr1 stop" #=================================== # Termination #=================================== #Define a 'finish' procedure proc finish {} { global ns tracefile namfile $ns flush-trace close $tracefile close $namfile exec nam out.nam & exit 0 } $ns at $val(stop) "$ns nam-end-wireless $val(stop)" $ns at $val(stop) "finish" $ns at $val(stop) "puts "done" ; $ns halt" $ns run NSG 所產生出來的劇本檔會自動啟動 NAM 來呈現模擬的過程,如果不想讓 NAM 啟動可在 NSG 中參數設定時,將 NAM File 選項設定為-1,則 NSG 便不會 將啟動 NAM 的指令寫入到劇本檔當中。圖 12 為 NAM 啟動的畫面,可以看出 在模擬時間為 2.1 秒時,n2 因同時湧入太多封包而發生封包被丟棄現象。
  • 17. 圖 12 以下截取出 Trace 檔的部份內容,由 Trace 檔內容也可以觀察到封包被丟棄的現 象(d 代表 drop)。 前略 r 2.12 3 5 cbr 1500 ------- 0 1.0 5.0 2 88 r 2.12 0 2 cbr 1500 ------- 0 0.0 4.0 92 101 + 2.12 2 3 cbr 1500 ------- 0 0.0 4.0 92 101 d 2.12 2 3 cbr 1500 ------- 0 0.0 4.0 92 101 - 2.12 2 3 cbr 1500 ------- 0 1.0 5.0 4 92 r 2.124 1 2 cbr 1500 ------- 0 1.0 5.0 9 102 + 2.124 2 3 cbr 1500 ------- 0 1.0 5.0 9 102 r 2.128 2 3 cbr 1500 ------- 0 1.0 5.0 3 90 + 2.128 3 5 cbr 1500 ------- 0 1.0 5.0 3 90 - 2.128 3 5 cbr 1500 ------- 0 1.0 5.0 3 90 + 2.128 0 2 cbr 1500 ------- 0 0.0 4.0 94 105 - 2.128 0 2 cbr 1500 ------- 0 0.0 4.0 94 105 + 2.132 1 2 cbr 1500 ------- 0 1.0 5.0 11 106 - 2.132 1 2 cbr 1500 ------- 0 1.0 5.0 11 106 r 2.132 3 4 cbr 1500 ------- 0 0.0 4.0 86 89 r 2.132 0 2 cbr 1500 ------- 0 0.0 4.0 93 103 + 2.132 2 3 cbr 1500 ------- 0 0.0 4.0 93 103 d 2.132 2 3 cbr 1500 ------- 0 0.0 4.0 93 103 - 2.132 2 3 cbr 1500 ------- 0 0.0 4.0 88 93 r 2.136 1 2 cbr 1500 ------- 0 1.0 5.0 10 104 + 2.136 2 3 cbr 1500 ------- 0 1.0 5.0 10 104 略