




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1. Ns3 的安裝: 開發(fā)環(huán)境配置:sudo apt-get install gcc g+ python python-dev /C+和python安裝,必裝sudo apt-get install mercurial /NS3代碼維護(hù)使用的源碼版本控制管理系統(tǒng)sudo apt-get install bzr /運(yùn)行python綁定ns-3-dev需要bazaar這個組件sudo apt-get install libgtk2.0-0 libgtk2.0-dev /基于GTK的配置系統(tǒng)sudo apt-get install gdb valgrind /調(diào)試工具sudo apt-get in
2、stall doxygen graphviz imagemagick /文檔生成器sudo apt-get install texlive texlive-latex-extra /文檔生成器,從源代碼中生成說明文檔 sudo apt-get install texinfo dia texlive-extra-utils texi2html /ns-3手冊和tutorial編寫查看工具sudo apt-get install flex bison /仿真必需的詞法分析器和語法分析生成器,必裝sudo apt-get install libgoocanvas-dev /部分移動場景仿真的可視化測
3、試需要這個組件sudo apt-get install tcpdump /讀取pcap的packet traces,即包嗅探器sudo apt-get install sqlite sqlite3 libsqlite3-dev /支持統(tǒng)計(jì)特性的數(shù)據(jù)庫軟件sudo apt-get install libxml2 /xml的配置存儲軟件sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas /Gustavo's ns-3-pyviz的可視化軟件sudo apt-get install qt4-qmakesu
4、do apt-get install qt4-dev-tools安裝完成后:進(jìn)入ns-allinone-3.16目錄sudo ./build.py 之后 進(jìn)入ns-allinone-3.16/ns-3.16sudo ./waf -check返回目錄ns-allinone-3.16進(jìn)入目錄netanim-3.103sudo make cleansudo qmake NetAsudo make之后sudo ls可以看見綠色的NetAnim這個東西就成功了sudo ./NetAnim 打開仿真界面安裝全部完成2. ns3仿真的運(yùn)行 ctrl+alt+t調(diào)出終端,進(jìn)入ns-allinon
5、e-3.16目錄, 輸入 cd ns-3.16/ 進(jìn)入ns-3.16文件夾 輸入 cd examples/tutorial/ 進(jìn)入examples里面的tutorial文件夾(里面有剛剛上手專用的實(shí)例,我們就用這個來調(diào)試) 在tutorial目錄下,輸入 cp first.cc /ns-allinone/ns-3.16/scratch/ ,將first.cc這個文件復(fù)制到ns-3.16的scratch文件夾里面. 具體位置由實(shí)際的自己的計(jì)算機(jī)的文件目錄所定。 輸入 cd . 輸入 cd . 此時進(jìn)入的是ns-3.16文件夾 輸入cd scratch/ 進(jìn)入scratch文件夾 輸入 ls 查看
6、有沒有那個復(fù)制進(jìn)去的文件 有的話進(jìn)行下面,沒有的話 要先復(fù)制進(jìn)去 確定有的話,輸入 cd . 返回ns-3.16/ 輸入 sudo ./waf -run scratch/first 注意:在輸入運(yùn)行的文件名時,不要加后綴名。 現(xiàn)在就可以運(yùn)行了。以下是這個的顯示結(jié)果:此結(jié)果表示的意思是:第一行:客戶機(jī)在第2s的時候向IP為的節(jié)點(diǎn)的第九號端口(port)發(fā)送了1024字節(jié)大小的數(shù)據(jù)包第二行:的這個服務(wù)器接在2.00369s收到了來自的端口為49153的1024字節(jié)大小的數(shù)據(jù)包第三行:服務(wù)器在2.00369s向的4915
7、3號端口發(fā)送了1024字節(jié)的一個數(shù)據(jù)包第四行:2.00737s客戶機(jī)()接收到了來自ip為(服務(wù)器)的9號端口的一個1024字節(jié)的數(shù)據(jù)包3. 圖形仿真器(Netanim)的使用 進(jìn)入ns-allinone-3.16文件夾 輸入cd netanim-3.103 進(jìn)入netanim-3.103文件夾 看見那個綠色的了吧,就是運(yùn)行那個綠色的來調(diào)出仿真界面輸入 ./NetAnim 可以看見下圖點(diǎn)擊左上角的文件夾符號,可以打開導(dǎo)入文件(PS:必須是.xml文件)選擇一個.xml文件即可導(dǎo)入。(如果沒有,請繼續(xù)下節(jié)的生成.xml文件)點(diǎn)擊綠色的開始符號即可運(yùn)行。4. 生成.
8、xml文件比如:進(jìn)入ns-3.16文件夾,可以看到有個scratch目錄。將你需要生成.xml的文件復(fù)制到scratch文件夾。進(jìn)入scratchcd scratch/sudo apt-get install vim輸入sudo vim first.cc 即打開vim編輯器。可以看到這是first.cc的源代碼 按下I 可以進(jìn)入編輯模式 按下ESC可以退出編輯模式 在頭文件包含處添加一句#include “ns3/netanim-module.h”然后去找到有一句 Simulator:Run();在這句的前面添加一行代碼AnimationInterface anim(“first.xml”);
9、按下ESC,退出編輯模式按下:wq 可以將剛才的改動保存輸入 cd .返回ns-3.16文件夾輸入 sudo ./waf run scratch/first 注意不要有后綴名運(yùn)行成功輸入 ls 可以看到有個名字叫做 first.xml的文件 這個就是可以當(dāng)作動畫的文件。再用上一節(jié)的仿真界面的使用來運(yùn)行這個就行如圖:成功的仿真了。5. .tr和.pcap文件的生成和解析tr文件的生成:需要在Simulator:Run (); 這個的前面加上 AsciiTraceHelper ascii; csmaHelper.EnableAll (ascii.CreateFileStream (“csma-1.
10、tr”);pcap文件的生成: 需要在Simulator:Run (); 這個的前面加上 csmaHelper.EnablePcapAll (“csma-1”, false);如圖:之后按照上面的運(yùn)行方法運(yùn)行。(csmaHelper是由CsmaHelper這個類(協(xié)議)實(shí)例化的對象).如圖運(yùn)行完成:之后ls 看有沒有自己命名的那些文件:我的tr文件為test-csma-1.tr 我的pcap文件為 test-csma-1.pcap輸入vim 自己的文件名 即: vim test-csma-1.tr如圖:分析Ascii Traces 在一個極其密集的文檔中有很多信息,但是需要注意的第一件事是在這
11、個文件中有很多分立的行。除非你大大加寬你的窗口,否則是很難看清楚的。每一行對應(yīng)了一個trace事件。本例中我們在查看每個點(diǎn)到點(diǎn)設(shè)備的傳輸隊(duì)列的trace事件。傳輸隊(duì)列是任一個目的地為點(diǎn)到點(diǎn)信道的數(shù)據(jù)包的必經(jīng)隊(duì)列。注意trace文件的每行以一個單獨(dú)的字符開始(后面帶有空格)。這個字符具有如下含義:· +: An enqueue operation occurred on the device queue;· -: A dequeue operation occurred on the device queue;· d: A packet was dropped, t
12、ypically because the queue was full;· r: A packet was received by the net device. · +:設(shè)備隊(duì)列中的入隊(duì)操作;· -:設(shè)備隊(duì)列中的出隊(duì)操作;· d:數(shù)據(jù)包被丟棄,通常因?yàn)殛?duì)列已滿;· r:網(wǎng)絡(luò)設(shè)備接收到數(shù)據(jù)包。我們來更詳細(xì)的看一下trace文件的第一行。為了看得更清晰,我把這一行分成了不同的部分,并在左邊標(biāo)出序號: 00 + 01 2 02 /NodeList/0/DeviceList/0/$ns3:PointToPointNetDevice/TxQueue/E
13、nqueue 03 ns3:PppHeader ( 04 Point-to-Point Protocol: IP (0x0021) 05 ns3:Ipv4Header ( 06 tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags none 07 length: 1052 > ) 08 ns3:UdpHeader ( 09 length: 1032 49153 > 9) 10 Payload (size=1024) 展開后的trace事件的第一行(序號00)代表操作。+字符表示是一個傳輸隊(duì)列的入隊(duì)操作。第二行
14、(序號01)是單位為秒的仿真時間。Trace的下一行(序號02)告訴我們trace發(fā)送端發(fā)起這個事件(以tracing命名空間表示)。你可以認(rèn)為tracing命名空間有點(diǎn)像一個文件系統(tǒng)命名空間。命名空間的根為NodeList。這個NodeList是NS-3核心代碼管理的一個容器,此容器包含有一個腳本中創(chuàng)建的所有的節(jié)點(diǎn)。正如一個文件系統(tǒng)在根下有目錄,在NodeList下有節(jié)點(diǎn)數(shù)。字符串/NodeList/0是指NodeList中第0個節(jié)點(diǎn),我們通常認(rèn)為是"node 0".每個節(jié)點(diǎn)中有一個已經(jīng)安裝好的設(shè)備列表。這個列表是在命名空間的下一個出現(xiàn)的??梢钥吹絫race事件來自節(jié)點(diǎn)中
15、安裝的第0個設(shè)備DeviceList/0。下一個字符串,$ns3:PointToPointNetDevice告訴我們第0個節(jié)點(diǎn)的設(shè)備列表的第0個位置的設(shè)備類型?;貞浶蛱?0處的+操作表示設(shè)備的傳輸隊(duì)列發(fā)生了入隊(duì)操作,這個在"trace path"TxQueue/Enqueue的最后部分反映出來了。Trace中剩下的幾行是很直觀的。序號03-04處表明數(shù)據(jù)包封裝成點(diǎn)到點(diǎn)協(xié)議。序號05-07處顯示數(shù)據(jù)包IP版本,發(fā)送端IP地址,接收端IP地址為。序號08-09出顯示數(shù)據(jù)包的UDP頭,最后序號10處表明數(shù)據(jù)包數(shù)據(jù)量為1024bytes。在trace
16、文件中的下一行顯示了這個數(shù)據(jù)包在這個節(jié)點(diǎn)中從傳輸隊(duì)列中被移除。Trace文件的第三行顯示了數(shù)據(jù)包正在被回顯服務(wù)器所在的節(jié)點(diǎn)的網(wǎng)絡(luò)設(shè)備接收。trace如下。 00 r 01 2.25732 02 /NodeList/1/DeviceList/0/$ns3:PointToPointNetDevice/MacRx 03 ns3:Ipv4Header ( 04 tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags none 05 length: 1052 > ) 06 ns3:UdpHeader ( 07 length:
17、1032 49153 > 9) 08 Payload (size=1024) 注意,trace操作現(xiàn)在是r并且仿真時間已經(jīng)增加到2.25732秒。如果你一直按照本教程來操作,你已經(jīng)把網(wǎng)絡(luò)設(shè)備的DataRate,和信道Delay設(shè)置成默認(rèn)值。在第2行中,Trace發(fā)送端命名空間條目已經(jīng)改變,來顯示這個事件是來自節(jié)點(diǎn)1(/NodeList/1),即數(shù)據(jù)包的接收trace端(/MacRx)。通過查看文件中其他的traces,你可以很容易的跟蹤數(shù)據(jù)包。5.3.2 PCAP 格式Tracing ns-3設(shè)備控制器也可以被用來創(chuàng)建.pcap格式的trace文件??s寫pcap(通常為小寫)表示pack
18、et capture,事實(shí)上是包含有定義一個.pcap文件格式的API??梢宰x取并且顯示這種格式的最流行的程序是Wireshark(以前被稱為Ethereal)。然而,有很多其他的分析器也使用這個包格式。我們鼓勵讀者了解其他的分析pcap追蹤文件的工具。在本教程中,我們用tcpdump來查看pcap trace。在scratch/myfirst.cc中我們剛增加的ASCII追蹤代碼后面插入這行代碼。注意我們剛使用的是字符串''myfirst"而不是"myfirst.pcap"。這是因?yàn)檫@里傳遞的參數(shù)是個前綴,而不是完整的文件名。在仿真過程中,hel
19、per將為任何一個點(diǎn)到點(diǎn)設(shè)備創(chuàng)建一個追蹤文件。文件名將包含預(yù)設(shè)前綴,節(jié)點(diǎn)名,設(shè)備名,和".pcap"后綴。在我們的例子腳本中,我們最終將看到名為"myfirst-0-0.pcap"和"myfirst-1-0.pcap"。這分別是為節(jié)點(diǎn)0設(shè)備0,和節(jié)點(diǎn)1設(shè)備0創(chuàng)建的pcap trace文件。用tcpdump讀取結(jié)果 此處最簡單的做法就是使用tcpdump來查看pcap文件, tcpdump -nn -tt -r myfirst-0-0.pcap reading from file myfirst-0-0.pcap, link-type
20、PPP (PPP) 2.000000 IP .49153 > .9: UDP, length 1024 2.514648 IP .9 > .49153: UDP, length 1024 tcpdump -nn -tt -r myfirst-1-0.pcap reading from file myfirst-1-0.pcap, link-type PPP (PPP) 2.257324 IP .49153 > .9: UDP, length 1024 2.257324 IP 10.
21、 > .49153: UDP, length 1024在myfirst-0-0.pcap(客戶端設(shè)備)文件中可以看到回顯數(shù)據(jù)包在第二秒被發(fā)送。如果查看第二個文件(myfirst-1-0.pcap)可以看到此包在2.257324秒被收到。在第二個文件中可以看到在2.257324秒這個包被回應(yīng),最終,在客戶端2.514648秒回應(yīng)的包被收到。 用Wireshark讀取結(jié)果如果你對Wireshark不熟悉,從/可以下載到程序和文檔。Wireshark是一個可以用來顯示trace文件的用戶圖形接口。如果你安
22、裝了Wireshark,可以打開和查看每一個trace文件,就像這些trace是使用包嗅探工具在真正的網(wǎng)絡(luò)上抓下來一樣。對于trace文件和pcap文件 均可以自己編寫gawk腳本來查看,編寫方法自己百度。以下為實(shí)例講解:打開first.cc文件 (前面的標(biāo)號是我自己的vim配置,只是方便閱讀,并不是代碼。)頂部的注釋欄為GNU聲明 1 /* -*- Mode:C+; c-file-style:"gnu" indent-tabs-mode:nil; -*- */ 2 /* 3 * This program is free software; you can redistri
23、bute it and/or modify 4 * it under the terms of the GNU General Public License version 2 as 5 * published by the Free Software Foundation; 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or
24、 FITNESS FOR A PARTICULAR PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software 14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 0211
25、1-1307 USA 15 */然后是頭文件包含 16 17 #include "ns3/core-module.h" 核心模型庫 18 #include "ns3/network-module.h" 網(wǎng)絡(luò)模型庫 19 #include "ns3/internet-module.h" 因特網(wǎng)模型庫 20 #include "ns3/point-to-point-module.h" 點(diǎn)到點(diǎn)網(wǎng)絡(luò)模型 21 #include "ns3/applications-module.h" 應(yīng)用模型庫正式代碼:
26、 22 23 using namespace ns3; 使用ns3的命名空間 24 25 NS_LOG_COMPONENT_DEFINE ("FirstScriptExample"); 啟用日志,日志是方便在運(yùn)行和運(yùn)行成功后查看輸出的信息的。 26 27 int 28 main (int argc, char *argv) 29 30 LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO); 開啟客戶機(jī)應(yīng)用日志,記錄客戶機(jī)的使用情況 31 LogComponentEnable (&q
27、uot;UdpEchoServerApplication", LOG_LEVEL_INFO); 開啟服務(wù)器應(yīng)用日志,記錄服務(wù)器的使用情況 32 33 NodeContainer nodes; 實(shí)例化一個節(jié)點(diǎn)容器對象,里面還是空的。 34 nodes.Create (2); 為容器創(chuàng)建兩個新的節(jié)點(diǎn)。 35 36 PointToPointHelper pointToPoint; 實(shí)例化一個點(diǎn)到點(diǎn)協(xié)議的對象。 37 pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps");
28、設(shè)置點(diǎn)到點(diǎn)協(xié)議的數(shù)據(jù)傳輸速率。 38 pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"); 設(shè)置點(diǎn)到點(diǎn)協(xié)議的網(wǎng)絡(luò)延遲。 39 40 NetDeviceContainer devices; 實(shí)例化一個網(wǎng)卡容器。 41 devices = pointToPoint.Install (nodes); 為節(jié)點(diǎn)安裝帶有點(diǎn)到點(diǎn)協(xié)議的網(wǎng)卡。 42 43 InternetStackHelper stack; 實(shí)例化一個協(xié)議棧。 44 stack.Install (nodes); 為每個節(jié)點(diǎn)安裝一個協(xié)議棧用于網(wǎng)卡存儲網(wǎng)絡(luò)協(xié)議。 45 46 Ipv4AddressHelper address; 實(shí)例化一個IP地址的對象。 47 address.SetBase ("", ""); 設(shè)置IP地址和子網(wǎng)掩碼。 48 49 Ipv4InterfaceContainer interfaces = address.Assign (devices); 為網(wǎng)卡注冊IP地址。 50 以下為應(yīng)用層配置 51
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 種子行業(yè)競爭格局與戰(zhàn)略選擇考核試卷
- 藤制品市場營銷渠道建設(shè)考核試卷
- 生物技術(shù)在食品安全生物技術(shù)檢測中的應(yīng)用考核試卷
- 豆類種植的農(nóng)業(yè)科技創(chuàng)新能力提升考核試卷
- 竹筍采集技術(shù)及其保鮮處理考核試卷
- 稻谷加工產(chǎn)品市場分析與預(yù)測考核試卷
- 呼吸窘迫護(hù)理
- 環(huán)保設(shè)備研發(fā)、生產(chǎn)、銷售、運(yùn)營與市場調(diào)研合同
- 培訓(xùn)活動簡報(bào)
- 節(jié)能減排技術(shù)標(biāo)準(zhǔn)共同制定與推廣合同
- 店面出讓股權(quán)協(xié)議書
- 心理健康課件主題班會
- 2025年家政服務(wù)行業(yè)考核考試試題及答案
- 江蘇省南通市2025屆高三三模語文試題(含答案)
- 護(hù)理6大核心制度
- 旅游退團(tuán)協(xié)議書
- 浙江國企筆試題目及答案
- 零信任網(wǎng)絡(luò)安全架構(gòu)
- Purchase Order模板參考模板
- VISIO圖標(biāo)大全(完整版)
- 退料作業(yè)流程(生產(chǎn)退料)
評論
0/150
提交評論