ns網路模擬
A. NS 論壇有沒有比較好的,推薦一下,做網路模擬的。
NS 網路模擬論壇太少了,如果速度快,沒有限制的,上次上過一個論壇,
感覺還不錯,幾個牛人都在那裡!網址是:
http://www.si.net/forum-440-1.html
如果覺得好,就給我加幾分哦!
B. ns2網路模擬工具 gnuplot顯示結果
ns2是網路模擬模擬器,不是繪圖軟體,你可以把模擬出來的數據在其他軟體上畫出來,比如excel或者matlab等等。一般linux自帶了一個叫gnuplot的軟體可以繪圖,你也可以看看怎麼使用它。
C. 誰能給我一個NS2網路模擬軟體的下載地址
http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.35/ns-allinone-2.35.tar.gz/download
其他版本在http://www.isi.e/nsnam/ns/官網上尋找,都有發布
D. 求NS2模擬無線區域網WLAN 802.11b模擬的源代碼
NS是一種針對網路技術的源代碼公開的、免費的軟體模擬平台,研究人員使用它可以很容易的進行網路技術的開發,而且發展到今天,它所包含的模塊已經非常豐富,幾乎涉及到了網路技術的所有方面。所以,NS成了目前學術界廣泛使用的一種網路模擬軟體。在每年國內外發表的有關網路技術的學術論文中,利用NS給出模擬結果的文章最多,通過這種方法得出的研究結果也是被學術界所普遍認可的,此外,NS也可作為一種輔助教學的工具,已被廣泛應用在了網路技術的教學方面。因此,目前在學術界和教育界,有大量的人正在使用或試圖使用NS。
然而,對初學者來說,NS是非常難於掌握的,一般人從學習NS到上手至少需要半年多時間。原因是多方面的:一方面,NS內容龐雜,隨軟體所提供的手冊更新不夠快,初學者閱讀起來非常困難;另一方面,使用NS還要掌握其它很多必備的相關知識以及相關工具,這會使初學者感到無從入手;有的使用者可能還不了解網路模擬的過程或是對NS軟體的機制缺乏理解,這也影響了對NS的掌握。另外,不論在國外還是國內,還沒有一本書能集中回答和解決這些問題,這也是NS難於被掌握的一個重要原因。
1、NS2簡介
NS2(Network Simulator, version 2)是一種面向對象的網路模擬器,本質上是一個離散事件模擬器。由UC Berkeley開發而成。它本身有一個虛擬時鍾,所有的模擬都由離散事件驅動的。目前NS2可以用於模擬各種不同的IP網,已經實現的一些模擬有:網路傳輸協議,比如TCP和UDP;業務源流量產生器,比如FTP, Telnet, Web CBR和VBR;路由隊列管理機制,比如Droptail , RED和CBQ;路由演算法,比如Dijkstra等。NS2也為進行區域網的模擬而實現了多播以及一些MAC 子層協議。
NS2使用C++和Otcl作為開發語言。NS可以說是Otcl的腳本解釋器,它包含模擬事件調度器、網路組件對象庫以及網路構建模型庫等。事件調度器計算模擬時間,並且激活事件隊列中的當前事件,執行一些相關的事件,網路組件通過傳遞分組來相互通信,但這並不耗費模擬時間。所有需要花費模擬時間來處理分組的網路組件都必須要使用事件調度器。它先為這個分組發出一個事件,然後等待這個事件被調度回來之後,才能做下一步的處理工作。事件調度器的另一個用處就是計時。NS是用Otcl和C++編寫的。由於效率的原因,NS將數據通道和控制通道的實現相分離。為了減少分組和事件的處理時間,事件調度器和數據通道上的基本網路組件對象都使用C++寫出並編譯的,這些對象通過映射對Otcl解釋器可見。
當模擬完成以後,NS將會產生一個或多個基於文本的跟蹤文件。只要在Tcl腳本中加入一些簡單的語句,這些文件中就會包含詳細的跟蹤信息。這些數據可以用於下一步的分析處理,也可以使用NAM將整個模擬過程展示出來。
2、使用NS進行網路模擬的方法和一般過程。
進行網路模擬前,首先分析模擬涉及哪個層次,NS模擬分兩個層次:一個是基於OTcl編程的層次。利用NS已有的網路元素實現模擬,無需修改NS本身,只需編寫OTcl腳本。另一個是基於C++和OTcl編程的層次。如果NS中沒有所需的網路元素,則需要對NS進行擴展,添加所需網路元素,即添加新的C++和OTcl類,編寫新的OTcl腳本。
假設用戶已經完成了對NS的擴展,或者NS所包含的構件已經滿足了要求,那麼進行一次模擬的步驟大致如下:
(1)開始編寫OTcl腳本。首先配置模擬網路拓撲結構,此時可以確定鏈路的基本特性,如延遲、帶寬和丟失策略等。
(2)建立協議代理,包括端設備的協議綁定和通信業務量模型的建立。
(3)配置業務量模型的參數,從而確定網路上的業務量分布。
(4)設置Trace對象。NS通過Trace文件來保存整個模擬過程。模擬完後,用戶可以對Trace文件進行分析研究。
(5)編寫其他的輔助過程,設定模擬結束時間,至此OTcl腳本編寫完成。
(6)用NS解釋執行剛才編寫的OTcl腳本。
(7)對Trace文件進行分析,得出有用的數據。
(8)調整配置拓撲結構和業務量模型,重新進行上述模擬過程。
NS2採用兩級體系結構,為了提高代碼的執行效率,NS2 將數據操作與控制部分的實現相分離,事件調度器和大部分基本的網路組件對象後台使用C++實現和編譯,稱為編譯層,主要功能是實現對數據包的處理;NS2的前端是一個OTcl 解釋器,稱為解釋層,主要功能是對模擬環境的配置、建立。從用戶角度看,NS2 是一個具有模擬事件驅動、網路構件對象庫和網路配置模塊庫的OTcl腳本解釋器。NS2中編譯類對象通過OTcl連接建立了與之對應的解釋類對象,這樣用戶間能夠方便地對C++對象的函數進行修改與配置,充分體現了模擬器的一致性和靈活性。
3、NS2的功能模塊
NS2模擬器封裝了許多功能模塊,最基本的是節點、鏈路、代理、數據包格式等等,下面分別來介紹一下各個模塊。
(1)事件調度器:目前NS2提供了四種具有不同數據結構的調度器,分別是鏈表、堆、日歷表和實時調度器。
(2)節點(node):是由TclObject對象組成的復合組件,在NS2中可以表示端節點和路由器。
(3)鏈路(link):由多個組件復合而成,用來連接網路節點。所有的鏈路都是以隊列的形式來管理分組的到達、離開和丟棄。
(4)代理(agent):負責網路層分組的產生和接收,也可以用在各個層次的協議實現中。每個agent連接到一個網路節點上,由該節點給它分配一個埠號。
(5)包(packet):由頭部和數據兩部分組成。一般情況下,packet只有頭部、沒有數據部分。
4、NS2的軟體構成
NS2包含Tcl/Tk, OTcl, NS,Tclcl。其中Tcl是一個開放腳本語言,用來對NS2進行編程;Tk是Tcl的圖形界面開發工具,可幫助用戶在圖形環境下開發圖形界面;OTcl是基於Tcl/Tk的面向對象擴展,有自己的類層次結構;NS2為本軟體包的核心,是面向對象的模擬器,用C++編寫,以OTcl解釋器作為前端;Tclcl則提供NS2和OTcl的介面,使對象和變數出現在兩種語言中。為了直觀的觀察和分析模擬結果,NS2 提供了可選的Xgraphy、可選件Nam。
5、NS現有的模擬元素
從網路拓撲模擬、協議模擬和通信量模擬等方面介紹NS的相應元素:
(1)網路拓撲主要包括節點、鏈路。NS的節點由一系列的分類器(Classifier,如地址分類器等)組成,而鏈路由一系列的連接器(Connector)組成。
(2)在節點上,配置不同的代理可以實現相應的協議或其它模型模擬。如NS的TCP代理,發送代理有:TCP,TCP/Reno,TCP/Vegas,TCP/Sack1,TCP/FACK,TCP/FULLTCP等,接收代理有:TCPSINK,TCPSINK/DELACK。TCPSINK/SACK1,TCPSINK/SACK1/DELACK等。此外,還提供有UDP代理及接收代理Null(負責通信量接收)、Loss Monitor(通信量接收並維護一些接收數據的統計)。
(3)網路的路由配置通過對節點附加路由協議而實現。NS中有三種單播路由策略:靜態、會話、動態。
(4)在鏈路上,可以配置帶寬、時延和丟棄模型。NS支持:Drop-tail(FIFO)隊列、RED緩沖管、CBO(包括優先權和Round-robin 調度)。各種公平隊列包括:FQ,SFQ,DRR等。
(5)通信量模擬方面,NS提供了許多通信應用,如FTP,它產生較大的峰值數據傳輸;Telnet則根據相應文件隨機選取傳輸數據的大小。此外,NS提供了四種類型的通信量產生器:EXPOO,根據指數分布(On/Off)產生通信量,在On階段分組以固定速率發送,Off階段不發送分組,On/Off的分布符合指數分布,分組尺寸固定;POO,根據Pareto分布(On/Off)產生通信量,它能用來產生長范圍相關的急劇通信量;CBR,以確定的速率產生通信量,分組尺寸固定,可在分組間隔之間產生隨機抖動;Traffic Trace,根據追蹤文件產生通信量。
E. 如何用NS2模擬一個MESH網路
1.在Linux下的安裝
申明:我的pc上安裝的是Ubuntu版本,個人用戶名為ryan
首先下載軟體包ns-allinone-2.31.tar.gz(目前最新版本).
具體步驟如下:
(1)到自家目錄下確定軟體包的所在
ryan@Ubuntu:~$cd
ryan@Ubuntu:~$ls -l ns-allinone-2.31.tar.gz
(2)解壓軟體包,使用tar命令解壓為.gz結尾的軟體包
ryan@Ubuntu:~$tar zxf ns-allinone-2.31.tar.gz
zxf為解壓.gz專用參數,如果想看到解壓輸出的過程,也可以加上V,即用vzxf參數解壓,詳細的tar命令的參數
和使用方法可以參加linux的有關資料.
(3)運行安裝命令
ryan@Ubuntu:~$cd ns-allinone-2.31
ryan@Ubuntu:~/ns-allinone-2.31 $./install
執行./install命令後,會出現很多編譯過程的結果輸出,主要沒有錯誤信息並停止,不用去管它,不出意外,
等待一段時間後會正常退出到提示符.
(4)設置全局路徑變數
上一步的安裝成功後,最後輸出部分會提示你必須設置三個全局變數path,ld_library_path和tcl_library.
在自己的家目錄下編輯終端配置文件 .bashrc,注意要帶"."開頭, .bashrc是bash終端的配置文件,每次打開
一個終端窗口,該文件中的腳本就會自動運行.在Linux中它是隱藏文件,一般用ls命令看不出來,沒關系,採用
vi命令編輯該文件:
ryan@Ubuntu:~$cd
ryan@Ubuntu:~$vi .bashrc
將游標移動到文件的最後一行,按"ins"鍵進行插入,在此文件中添加一下三行:
export path=$path:~/ns-allinone-2.31/bin:/home/ryan/ns-allinone-2.31/tcl8.4.13/unix
export ld_library_path=$ld_library_path:/home/ryan/ns-allinone-2.31/otcl-1.12:/home/ryan/ns-allinone-2.30/lib
export tcl_library=$tcl_library:/home/ryan/ns-allinone-2.31/tcl.4.13/library
編輯完成後,按"esc"鍵退出插入模式,再按":wq"存檔退出.
重新打開新的終端,腳本運行生效.
(5)簡單測試
重新打開新的終端,環境變數的設置才會生效,如果.bashrc文件中有什麼錯誤,這時在新開的終端中會有提示信息
顯示出來.如果沒有錯誤,則在終端提示符下輸入ns命令進行測試.操作步驟如下:
A)打開一個新的終端
B)輸入ns並回車
ryan@Ubuntu:~ns
C)輸入一段測試用的tcl腳本代碼進行測試
%puts "hello world"回車
如下所示顯示則表示安裝成功.
hello world
%
2.如何快速入門
ns中兩個語言是c++和tcl,所以懂得這兩種語言的語法是入門的關鍵.
c++我就不多說了,很多關於這方面的書籍,而且個人覺得作為一名計算機專業的學生,學好c++是根本吧.
只有tcl,感覺語法和網路編程語言php比較類似,個人以前用它開發過網站,感覺很熟悉,也容易理解.即使不懂,我感覺半天就可以上手.
這里還推薦一本書<ns和網路模擬>,主要看看第4,5,7章就ok了,最後分析數據的時候再看看第6章.
在自己動手之前,認真研究mflood的例子,這是一個原型的東西,看懂了基本就可以下一步了.如果以後遇到不懂的,可以重新回頭看.
3.如何開發,講講自己的經驗.
開發工具非常重要,本人採用eclipse作為開發工具,感覺非常好用.至於...安裝就不需要我講解了吧-_-#必要的插件是必須的.
用eclipse建立ns的工程,開發自己的源代碼(c++文件).基本就是.h和.cc文件的code,需要一定的c++基礎(ps:好久不寫代碼,犯了很多幼稚的錯誤)
調試c++代碼時,可以使用eclipse工具,非常方便,而且定位錯誤也准確,我想使用過這個平台的人都深有體會吧.
編譯通過之後,編寫tcl腳本,開始模擬測試...
F. OPNET或NS網路模擬,那個更適合對EPON的模擬會得朋友幫忙指導
OPNET這個通信軟體我用過,做模擬效果是不錯。EPON無源光網路跟aloha,csma之類有些相似應該不錯的
G. ns2 網路模擬軟體
ns2下載網站
http://www.isi.e/nsnam/dist/ns-allinone-2.28.tar.gz
H. NS無線網路模擬用awk分析trace文件
你得修改腳本設置tcl文件,在tcl文件裡面設置模擬時所用的數據包類型。awk文件僅僅是用於分析數據的,算不上腳本文件。具體建議你去百思論壇的NS專區http://www.si.net/forum-440-1.html去問問,關於FTP的模擬我也沒接觸過
I. matlab網路模擬和ns的區別
NS是專門的網路模擬軟體,MATLAB更擅長的是信號處理類的工作。
J. NS-2無線網路模擬用gawk分析trace文件
1)欄位賦值,有線的trace都是同一個格式的
無線的分新版本和舊版本的略有不同。我的是舊版本的。
下面這個是無線的
1 2 3 4 5:6 7 8 9 [10/11/12/13] 14:16 [ 17 -18 19 20]
s 3.000000000 _0_RTR --- 0 AODV 48 [0 0 0 0] ------- [0:255 -1:255 30 0]
s 10.00000000 _0_AGT --- 2 tcp 40 [0 0 0 0] ------- [0:0 1:0 32 0]
r 10.00000000 _0_RTR --- 2 tcp 40 [0 0 0 0] ------- [0:0 1:0 32 0]
s 12.50000000 _0_RTR --- 0 AODV 48 [0 0 0 0] ------- [0:255 -1:25530 0]
1-20 是對這個無線Trace的標注,每條記錄共有20欄,下面對各欄表示的意義進行說明:
(1)事件類型:
s:分組的發送事件;
r:分組的接收事件;
d:分組的丟棄事件;
f:分組的轉發事件;
(2)事件產生的時間。
(3)處理該事件的節點ID。
(4)Trace種類:
RTR:路由器Trace;
AGT:代理Trace;
MAC:MAC層Trace;
(5:6)分隔符。
(7)分組ID。
(8)分組類型。
(9)分組大小(位元組)。
[10:13]有關MAC層的詳細信息
(10)發送節點在無線信道上發送該分組所期望的時間值,用16進製表示。
(11)接收節點的MAC地址。
(12)發送節點的MAC地址。
(13)MAC層封裝的分組類型。 0x800:IP分組,0x806:ARP分組
(14:16)分隔符。
(17)分組發送的源IP地址。節點號.埠號
(18)分組發送的目的IP地址。節點號.埠號
(19)分組的TTL值。
(20)源節點到目的節點的跳數。
2)測丟包率的
BEGIN {
highest_uid=0; #保存保存已處理的最大的uid
}
{
event = $1;
time = $2;
node = $3;
node_ = substr(node,2,1);
trace_type = $4;
flag = $5;
uid = $6;
pkt_type = $7;
pkt_size = $8;
send[uid]=0;recv[uid]=0;
if(event=="s" && node_==2 && trace_type="AGT" && pkt_type=="cbr")
sendx[uid] = 1;
if(event=="r" && node_==4 && trace_type="AGT" && pkt_type=="cbr")
recv[uid] = 1;
if(highest_uid < uid)
highest_uid = uid;
}
END {
id=1;
loss=0;
for(i=0;i<highest_uid;i++)
{
xx = sendx[i];
yy = recv[i];
if(xx==1 && yy==0)
loss++;
}
printf("allpacket: %d loss packet: %d\n",highest_uid,loss);
printf("%.6f\n",loss/highest_uid);
}
測吞吐量的
BEGIN {
init=0;
i=0;
}
{
#將out.tr文件的相應欄位賦值給變數
action=$1;
time=$2;
from=$3;
to=$4;
type=$5;
pktsize=$6;
flow_id=$8;
src=$9;
dst=$10;
seq_no=$11;
packet_id=$12;
if (action=="r" && from==2 && to==3 && flow_id==2) {
pkt_byte_sum[i+1]=pkt_byte_sum[i]+pktsize;
if (init==0) {
start_time=time;
init=1;
}
end_time[i]=time;
i=i+1;
}
}
END {
#第一筆記錄的Throughput設置為零, 以表示傳輸開始, 為了繪圖的美觀
printf("%.2f\t %.2f\n", end_time[0],0);
for (j=1; j<i; j++) {
#單位為 kbps
th=pkt_byte_sum[j]/(end_time[j] - start_time) *8/1000;
printf("%.2f\t%.2f\n", end_time[j], th);
}
#最後一筆記錄的Throughput設置為零, 以表示傳輸結束, 為了繪圖的美觀
printf("%.2f\t%.2f\n", end_time[i-1],0);
}
PS:建議去看一下柯老師那本書,講的很詳細的,或者是黃化吉的NS網路模擬和協議模擬,裡面都有教awk怎麼寫,也把trace格式講的很詳細