版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
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這個(gè)組件sudo apt-get install libgtk2.0-0 libgtk2.0-dev /基于GTK的配置系統(tǒng)sudo apt-get install gdb valgrind /調(diào)試工具sudo apt-get i
2、nstall doxygen graphviz imagemagick /文檔生成器sudo apt-get install texlive texlive-latex-extra /文檔生成器,從源代碼中生成說(shuō)明文檔 sudo apt-get install texinfo dia texlive-extra-utils texi2html /ns-3手冊(cè)和tutorial編寫查看工具sudo apt-get install flex bison /仿真必需的詞法分析器和語(yǔ)法分析生成器,必裝sudo apt-get install libgoocanvas-dev /部分移動(dòng)場(chǎng)景仿真的可視化
3、測(cè)試需要這個(gè)組件sudo apt-get install tcpdump /讀取pcap的packet traces,即包嗅探器sudo apt-get install sqlite sqlite3 libsqlite3-dev /支持統(tǒng)計(jì)特性的數(shù)據(jù)庫(kù)軟件sudo apt-get install libxml2 /xml的配置存儲(chǔ)軟件sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas /Gustavos ns-3-pyviz的可視化軟件sudo apt-get install qt4-qmakesudo a
4、pt-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這個(gè)東西就成功了sudo ./NetAnim 打開仿真界面安裝全部完成2. ns3仿真的運(yùn)行 ctrl+alt+t調(diào)出終端,進(jìn)入ns-allinone-3.
5、16目錄, 輸入 cd ns-3.16/ 進(jìn)入ns-3.16文件夾 輸入 cd examples/tutorial/ 進(jìn)入examples里面的tutorial文件夾(里面有剛剛上手專用的實(shí)例,我們就用這個(gè)來(lái)調(diào)試) 在tutorial目錄下,輸入 cp first.cc /ns-allinone/ns-3.16/scratch/ ,將first.cc這個(gè)文件復(fù)制到ns-3.16的scratch文件夾里面. 具體位置由實(shí)際的自己的計(jì)算機(jī)的文件目錄所定。 輸入 cd . 輸入 cd . 此時(shí)進(jìn)入的是ns-3.16文件夾 輸入cd scratch/ 進(jìn)入scratch文件夾 輸入 ls 查看有沒(méi)有那
6、個(gè)復(fù)制進(jìn)去的文件 有的話進(jìn)行下面,沒(méi)有的話 要先復(fù)制進(jìn)去 確定有的話,輸入 cd . 返回ns-3.16/ 輸入 sudo ./waf -run scratch/first 注意:在輸入運(yùn)行的文件名時(shí),不要加后綴名。 現(xiàn)在就可以運(yùn)行了。以下是這個(gè)的顯示結(jié)果:此結(jié)果表示的意思是:第一行:客戶機(jī)在第2s的時(shí)候向IP為的節(jié)點(diǎn)的第九號(hào)端口(port)發(fā)送了1024字節(jié)大小的數(shù)據(jù)包第二行:的這個(gè)服務(wù)器接在2.00369s收到了來(lái)自的端口為49153的1024字節(jié)大小的數(shù)據(jù)包第三行:服務(wù)器在2.00369s向的49153號(hào)端口
7、發(fā)送了1024字節(jié)的一個(gè)數(shù)據(jù)包第四行:2.00737s客戶機(jī)()接收到了來(lái)自ip為(服務(wù)器)的9號(hào)端口的一個(gè)1024字節(jié)的數(shù)據(jù)包3. 圖形仿真器(Netanim)的使用 進(jìn)入ns-allinone-3.16文件夾 輸入cd netanim-3.103 進(jìn)入netanim-3.103文件夾 看見那個(gè)綠色的了吧,就是運(yùn)行那個(gè)綠色的來(lái)調(diào)出仿真界面輸入 ./NetAnim 可以看見下圖點(diǎn)擊左上角的文件夾符號(hào),可以打開導(dǎo)入文件(PS:必須是.xml文件)選擇一個(gè).xml文件即可導(dǎo)入。(如果沒(méi)有,請(qǐng)繼續(xù)下節(jié)的生成.xml文件)點(diǎn)擊綠色的開始符號(hào)即可運(yùn)行。4. 生成.xml文
8、件比如:進(jìn)入ns-3.16文件夾,可以看到有個(gè)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”);按下ES
9、C,退出編輯模式按下:wq 可以將剛才的改動(dòng)保存輸入 cd .返回ns-3.16文件夾輸入 sudo ./waf run scratch/first 注意不要有后綴名運(yùn)行成功輸入 ls 可以看到有個(gè)名字叫做 first.xml的文件 這個(gè)就是可以當(dāng)作動(dòng)畫的文件。再用上一節(jié)的仿真界面的使用來(lái)運(yùn)行這個(gè)就行如圖:成功的仿真了。5. .tr和.pcap文件的生成和解析tr文件的生成:需要在Simulator:Run (); 這個(gè)的前面加上 AsciiTraceHelper ascii; csmaHelper.EnableAll (ascii.CreateFileStream (“csma-1.tr”)
10、;pcap文件的生成: 需要在Simulator:Run (); 這個(gè)的前面加上 csmaHelper.EnablePcapAll (“csma-1”, false);如圖:之后按照上面的運(yùn)行方法運(yùn)行。(csmaHelper是由CsmaHelper這個(gè)類(協(xié)議)實(shí)例化的對(duì)象).如圖運(yùn)行完成:之后ls 看有沒(méi)有自己命名的那些文件:我的tr文件為test-csma-1.tr 我的pcap文件為 test-csma-1.pcap輸入vim 自己的文件名 即: vim test-csma-1.tr如圖:分析Ascii Traces 在一個(gè)極其密集的文檔中有很多信息,但是需要注意的第一件事是在這個(gè)文件中
11、有很多分立的行。除非你大大加寬你的窗口,否則是很難看清楚的。每一行對(duì)應(yīng)了一個(gè)trace事件。本例中我們?cè)诓榭疵總€(gè)點(diǎn)到點(diǎn)設(shè)備的傳輸隊(duì)列的trace事件。傳輸隊(duì)列是任一個(gè)目的地為點(diǎn)到點(diǎn)信道的數(shù)據(jù)包的必經(jīng)隊(duì)列。注意trace文件的每行以一個(gè)單獨(dú)的字符開始(后面帶有空格)。這個(gè)字符具有如下含義: +: An enqueue operation occurred on the device queue; -: A dequeue operation occurred on the device queue; d: A packet was dropped, typically because the q
12、ueue 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ù)包。我們來(lái)更詳細(xì)的看一下trace文件的第一行。為了看得更清晰,我把這一行分成了不同的部分,并在左邊標(biāo)出序號(hào): 00 + 01 2 02 /NodeList/0/DeviceList/0/$ns3:PointToPointNetDevice/TxQueue/Enqueue 03 ns3:PppHeader ( 04 Point-to-Point Protocol:
13、 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事件的第一行(序號(hào)00)代表操作。+字符表示是一個(gè)傳輸隊(duì)列的入隊(duì)操作。第二行(序號(hào)01)是單位為秒的仿真時(shí)間。Trace的下一行(序號(hào)02)告訴我們trace發(fā)送端發(fā)起這個(gè)事件(以tracing命名空間
14、表示)。你可以認(rèn)為tracing命名空間有點(diǎn)像一個(gè)文件系統(tǒng)命名空間。命名空間的根為NodeList。這個(gè)NodeList是NS-3核心代碼管理的一個(gè)容器,此容器包含有一個(gè)腳本中創(chuàng)建的所有的節(jié)點(diǎn)。正如一個(gè)文件系統(tǒng)在根下有目錄,在NodeList下有節(jié)點(diǎn)數(shù)。字符串/NodeList/0是指NodeList中第0個(gè)節(jié)點(diǎn),我們通常認(rèn)為是node 0.每個(gè)節(jié)點(diǎn)中有一個(gè)已經(jīng)安裝好的設(shè)備列表。這個(gè)列表是在命名空間的下一個(gè)出現(xiàn)的??梢钥吹絫race事件來(lái)自節(jié)點(diǎn)中安裝的第0個(gè)設(shè)備DeviceList/0。下一個(gè)字符串,$ns3:PointToPointNetDevice告訴我們第0個(gè)節(jié)點(diǎn)的設(shè)備列表的第0個(gè)位置的
15、設(shè)備類型。回憶序號(hào)00處的+操作表示設(shè)備的傳輸隊(duì)列發(fā)生了入隊(duì)操作,這個(gè)在trace pathTxQueue/Enqueue的最后部分反映出來(lái)了。Trace中剩下的幾行是很直觀的。序號(hào)03-04處表明數(shù)據(jù)包封裝成點(diǎn)到點(diǎn)協(xié)議。序號(hào)05-07處顯示數(shù)據(jù)包IP版本,發(fā)送端IP地址,接收端IP地址為。序號(hào)08-09出顯示數(shù)據(jù)包的UDP頭,最后序號(hào)10處表明數(shù)據(jù)包數(shù)據(jù)量為1024bytes。在trace文件中的下一行顯示了這個(gè)數(shù)據(jù)包在這個(gè)節(jié)點(diǎn)中從傳輸隊(duì)列中被移除。Trace文件的第三行顯示了數(shù)據(jù)包正在被回顯服務(wù)器所在的節(jié)點(diǎn)的網(wǎng)絡(luò)設(shè)備接收。trace如下。 00 r 01 2
16、.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: 1032 49153 9) 08 Payload (size=1024) 注意,trace操作現(xiàn)在是r并且仿真時(shí)間已經(jīng)增加到2.25732秒。如果你一直按照本教程來(lái)操作,你已經(jīng)把網(wǎng)絡(luò)設(shè)
17、備的DataRate,和信道Delay設(shè)置成默認(rèn)值。在第2行中,Trace發(fā)送端命名空間條目已經(jīng)改變,來(lái)顯示這個(gè)事件是來(lái)自節(jié)點(diǎn)1(/NodeList/1),即數(shù)據(jù)包的接收trace端(/MacRx)。通過(guò)查看文件中其他的traces,你可以很容易的跟蹤數(shù)據(jù)包。5.3.2 PCAP 格式Tracing ns-3設(shè)備控制器也可以被用來(lái)創(chuàng)建.pcap格式的trace文件??s寫pcap(通常為小寫)表示packet capture,事實(shí)上是包含有定義一個(gè).pcap文件格式的API。可以讀取并且顯示這種格式的最流行的程序是Wireshark(以前被稱為Ethereal)。然而,有很多其他的分析器也使用這
18、個(gè)包格式。我們鼓勵(lì)讀者了解其他的分析pcap追蹤文件的工具。在本教程中,我們用tcpdump來(lái)查看pcap trace。在scratch/myfirst.cc中我們剛增加的ASCII追蹤代碼后面插入這行代碼。注意我們剛使用的是字符串myfirst而不是myfirst.pcap。這是因?yàn)檫@里傳遞的參數(shù)是個(gè)前綴,而不是完整的文件名。在仿真過(guò)程中,helper將為任何一個(gè)點(diǎn)到點(diǎn)設(shè)備創(chuàng)建一個(gè)追蹤文件。文件名將包含預(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)建
19、的pcap trace文件。用tcpdump讀取結(jié)果 此處最簡(jiǎn)單的做法就是使用tcpdump來(lái)查看pcap文件, tcpdump -nn -tt -r myfirst-0-0.pcap reading from file myfirst-0-0.pcap, link-type 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 rea
20、ding from file myfirst-1-0.pcap, link-type PPP (PPP) 2.257324 IP .49153 .9: UDP, length 1024 2.257324 IP .9 .49153: UDP, length 1024在myfirst-0-0.pcap(客戶端設(shè)備)文件中可以看到回顯數(shù)據(jù)包在第二秒被發(fā)送。如果查看第二個(gè)文件(myfirst-1-0.pcap)可以看到此包在2.257324秒被收到。在第二個(gè)文件中可以看到在2.257324秒這個(gè)包被回應(yīng),最終,在客戶端2.514648秒回
21、應(yīng)的包被收到。 用Wireshark讀取結(jié)果如果你對(duì)Wireshark不熟悉,從/可以下載到程序和文檔。Wireshark是一個(gè)可以用來(lái)顯示trace文件的用戶圖形接口。如果你安裝了Wireshark,可以打開和查看每一個(gè)trace文件,就像這些trace是使用包嗅探工具在真正的網(wǎng)絡(luò)上抓下來(lái)一樣。對(duì)于trace文件和pcap文件 均可以自己編寫gawk腳本來(lái)查看,編寫方法自己百度。以下為實(shí)例講解:打開first.cc文件 (前面的標(biāo)號(hào)是我自己的vim配置,只是方便閱讀,并不是代碼。)頂部的注釋欄為GNU聲明 1 /* -*- Mode
22、:C+; c-file-style:gnu; indent-tabs-mode:nil; -*- */ 2 /* 3 * This program is free software; you can redistribute 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
23、it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or 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 pr
24、ogram; if not, write to the Free Software 14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 15 */然后是頭文件包含 16 17 #include ns3/core-module.h 核心模型庫(kù) 18 #include ns3/network-module.h 網(wǎng)絡(luò)模型庫(kù) 19 #include ns3/internet-module.h 因特網(wǎng)模型庫(kù) 20 #include ns3/point-to-point-module.h 點(diǎn)到點(diǎn)網(wǎng)絡(luò)模型
25、21 #include ns3/applications-module.h 應(yīng)用模型庫(kù)正式代碼: 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ī)的使用情況 3
26、1 LogComponentEnable (UdpEchoServerApplication, LOG_LEVEL_INFO); 開啟服務(wù)器應(yīng)用日志,記錄服務(wù)器的使用情況 32 33 NodeContainer nodes; 實(shí)例化一個(gè)節(jié)點(diǎn)容器對(duì)象,里面還是空的。 34 nodes.Create (2); 為容器創(chuàng)建兩個(gè)新的節(jié)點(diǎn)。 35 36 PointToPointHelper pointToPoint; 實(shí)例化一個(gè)點(diǎn)到點(diǎn)協(xié)議的對(duì)象。 37 pointToPoint.SetDeviceAttribute (DataRate, StringValue (5Mbps); 設(shè)置點(diǎn)到點(diǎn)協(xié)議的數(shù)據(jù)傳輸
27、速率。 38 pointToPoint.SetChannelAttribute (Delay, StringValue (2ms); 設(shè)置點(diǎn)到點(diǎn)協(xié)議的網(wǎng)絡(luò)延遲。 39 40 NetDeviceContainer devices; 實(shí)例化一個(gè)網(wǎng)卡容器。 41 devices = pointToPoint.Install (nodes); 為節(jié)點(diǎn)安裝帶有點(diǎn)到點(diǎn)協(xié)議的網(wǎng)卡。 42 43 InternetStackHelper stack; 實(shí)例化一個(gè)協(xié)議棧。 44 stack.Install (nodes); 為每個(gè)節(jié)點(diǎn)安裝一個(gè)協(xié)議棧用于網(wǎng)卡存儲(chǔ)網(wǎng)絡(luò)協(xié)議。 45 46 Ipv4AddressHelper address; 實(shí)例化一個(gè)IP地址的對(duì)象。 47 address.SetBase (, ); 設(shè)置IP地址和子網(wǎng)掩碼。 48 49 Ipv4InterfaceContainer interfaces = address.Assign (devices); 為網(wǎng)卡注冊(cè)IP地址。 50 以下為應(yīng)用層配置 51 UdpE
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024專業(yè)加工承攬合同
- 2024西瓜種植收購(gòu)合同范文
- 工程勞務(wù)承包合同的簡(jiǎn)化版本
- 成人高等教育聯(lián)合舉辦協(xié)議
- 2024工程機(jī)械租賃合同范本
- 租房協(xié)議書示范
- 2024標(biāo)識(shí)標(biāo)牌合同
- 信息技術(shù)服務(wù)合作契約樣本
- 2024財(cái)產(chǎn)信托合同范文
- 2024年人力資源派遣協(xié)議范本
- 遠(yuǎn)程遙控設(shè)備操作安全保障
- 機(jī)加工節(jié)拍計(jì)算表
- 年產(chǎn)15萬(wàn)噸發(fā)酵豆粕項(xiàng)目可行性研究報(bào)告
- 幼兒園公開課:大班語(yǔ)言《相反國(guó)》課件(優(yōu)化版)
- VSD護(hù)理完整版本
- 中小學(xué)勞動(dòng)教育在跨學(xué)科融合中的作用探究
- 宮腔鏡手術(shù)知情同意書
- 北師大版數(shù)學(xué)六年級(jí)上冊(cè)單元真題拔高卷 第6單元《比的認(rèn)識(shí)》(A4 原卷)
- 如何提高中小學(xué)生的數(shù)學(xué)學(xué)習(xí)成績(jī)
- 上海市房地產(chǎn)買賣合同范本
- 2023年教師招聘考試考前必背簡(jiǎn)答題條
評(píng)論
0/150
提交評(píng)論