国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于NS3的無線自組網仿真實現(xiàn)

2014-12-31 00:36陳運海
電腦知識與技術 2014年35期
關鍵詞:仿真

陳運海

摘要:該文首先介紹了NS3.20在Fedora20環(huán)境下的安裝過程,并重點介紹了無線自組網的拓撲設計及仿真程序設計過程,最后用NS3仿真了無線自組網通信的過程。

關鍵詞:無線自組網;NS3;仿真

中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2014)35-8365-03

Implementation of Wireless Ad-hoc Network Simulation Based on NS3

CHEN Yun-hai

(Department of Electronic Information Technology, Shenzhen Senior Technical Institute, Shenzhen 518116, China)

Abstract: First the process of installing the simulator NS3.20 and the system of Fedora20 was presented. Then this paper introduces the topological structure of to a Wireless Ad-hoc Network and the design of simulation process. Finally this paper simulate the communication process of the Wireless Ad-hoc Network by using NS3 Simulator.

Key words: Wireless Ad-hoc Network; NS3; Simulation

近年來,隨著計算機和網絡通信技術的迅速發(fā)展,研究人員不斷開發(fā)新的網絡協(xié)議、算法和應用,以適應日益增長的網絡通信需要。因此,網絡仿真日益成為分析、研究、設計和改善網絡性能的強大工具,它通過在計算機上建立一個虛擬的網絡平臺,來實現(xiàn)真實的網絡環(huán)境的仿真。網絡技術研究人員在仿真環(huán)境中不僅能對網絡通信、網絡設備、協(xié)議以及網絡應用進行設計研究,還能對網絡的性能進行分析和評估。目的是在網絡項目實施的過程前期和實施過程中提供指導。

相對于其它的網絡模擬軟件而言,NS3是比較年輕的網絡工具。NS3避免了一些其它網絡模擬軟件的缺點,盡量吸收其他模擬軟件的優(yōu)點。NS3是應用現(xiàn)代軟件工程技術和網絡仿真技術而設計開發(fā)的新一代網絡模擬工具。

本文介紹了在Fedora20環(huán)境下,安裝NS3.20模擬軟件的具體方法,并在此基礎上開發(fā)了一套無線自組網的仿真程序,對從事這方面的科研人員及教學人員具有一定的指導作用。

1 Fedora20及NS3.20環(huán)境的安裝

1.1 Fedora20的下載與環(huán)境安裝

首先在WINDOWS下安裝虛擬機VMware8.0版本,然后到網站http://fedoraproject.org/get-fedora下面免費下載鏡像Fedora-20-i386-DVD.iso,在虛擬機VMware8.0中安裝此鏡像,將fedora系統(tǒng)安裝好。

NS3內核是是使用C++語言開發(fā)的,并提供Python接口,因此,安裝NS3之前需要安裝許多安裝包,安裝軟件包一定要將自己的系統(tǒng)與外網連接,有些依賴軟件包系統(tǒng)直接從外網下載并安裝。使用下列命令安裝軟件包:

yum install gcc gcc-c++ python python-devel

yum install mercurial

yum install bzr

yum install gsl gsl-devel

yum install gtk2 gtk2-devel

yum install gdb valgrind

yum install doxygen graphviz ImageMagick

yum install python-sphinx dia texlive texlive-latex

yum install flex bison

yum install tcpdump

yum install sqlite sqlite-devel

yum install libxml2 libxml2-devel

yum install uncrustify

yum install openmpi openmpi-devel

yum install boost-devel

yum install graphviz graphviz-devel python-setuptools-devel python-kiwi pygoocanvas

easy_install pygraphviz

yum install cmake glibc-devel.i686 glibc-devel.x86_64

在運行命令yum install graphviz graphviz-devel python-setuptools-devel python-kiwi pygoocanvas 時,系統(tǒng)提示有錯誤信息,與某些軟件發(fā)生沖突;這時候,要先用下列命令刪除沖突的軟件:

rpm —e vim-minimal

rpm -e sudo

然后,再安裝上述命令后,再完成后續(xù)命令的安裝。

1.2 NS3.20網絡模擬器的安裝endprint

在網站http://www.nsnam.org上免費下載軟件包ns-allinone-3.20.tar.bz2,然后拷貝到虛擬機Fedora20的系統(tǒng)/root目錄下,然后用命令:tar —jxvf ns-allinone-3.20.tar.bz2進行解壓縮。解壓縮完成后,用以下命令進入相關目錄:

cd /root/ns-allinone-3.20/ns-3.20/

然后執(zhí)行:

. /waf configure —enable-examples —enable-tests

最后執(zhí)行命令:

./waf

執(zhí)行完后,如果出現(xiàn)如圖1的畫面,即編譯安裝成功。

2 無線自組網IP地址的分配和拓撲結構設計

2.1 無線自組網的IP地址分配

我們將16個無線自組網都當成一個獨立的節(jié)點,既可以充當路由器,又可以充當終端節(jié)點。它們的IP地址都位于同一個網絡10.1.1.0中,如圖1所示。

2.2 無線自組網拓撲結構圖

無線自組網節(jié)點作為一個獨立的無線節(jié)點,可以再空間中自由移動,同時,在一范圍內可進行互相通信。其拓撲結構如圖2所示。

無線自組網絡可以互相之間通信,每個節(jié)點既充當路由器,又充當終端。我們假定節(jié)點n0與節(jié)點n15通信,來模擬數據在無線自組網中的通信過程。

3 用NS3仿真無線自組網

3.1 用NS3創(chuàng)建16個獨立的無線節(jié)點

我們首先創(chuàng)建16個無線節(jié)點,并配置無線節(jié)點通信所需要的參數。最主要的代碼如下:

NodeContainer wifiAdhocNodes;

wifiAdhocNodes.Create (16); //創(chuàng)建16無線自組網節(jié)點

WifiHelper wifi = WifiHelper::Default ();

NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default (); //配置Mac與Phy

wifiMac.SetType ("ns3::AdhocWifiMac");

YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();

YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default (); //創(chuàng)建無線節(jié)點互連通道

wifiPhy.SetChannel (wifiChannel.Create ());

NetDeviceContainer wifiAdhocDevices = wifi.Install (wifiPhy, wifiMac, wifiAdhocNodes); //創(chuàng)建節(jié)點的無線設備(無線網卡)

InternetStackHelper stack; //安裝協(xié)議棧

stack.Install (wifiAdhocNodes);

Ipv4AddressHelper address; //設置無線節(jié)點的IP地址

address.SetBase ("10.1.1.0", "255.255.255.0");

Ipv4InterfaceContainer AdhocInterfaces;

AdhocInterfaces = address.Assign (wifiAdhocDevices);

3.2 應用層模擬

1) 服務端節(jié)點設置

16個節(jié)點創(chuàng)建并配置完后,我們在最后一個節(jié)點n15放置echo服務端程序,其主要代碼為:

UdpEchoServerHelper echoServer (9); //設置服務器端口號9

ApplicationContainer serverApps = echoServer.Install (wifiAdhocNodes.Get (15)); //服務端程序安裝在節(jié)點n15。

serverApps.Start (Seconds (1.0)); //服務端程序在1秒生效

serverApps.Stop (Seconds (10.0)); //服務端程序在10秒停止。

2) 客戶端節(jié)點設置

我們將回顯客戶端放在節(jié)點n0上,其主要代碼為:

UdpEchoClientHelper echoClient (AdhocInterfaces.GetAddress (15), 9);//讓客戶端與服務端及其端口關聯(lián)

echoClient.SetAttribute ("MaxPackets", UintegerValue (100)); //設置通信時參數

echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));

echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

ApplicationContainer clientApps =

echoClient.Install (wifiAdhocNodes.Get (0)); //客戶端程序安裝在節(jié)點n0

clientApps.Start (Seconds (2.0));//客戶端在 2秒中生效

clientApps.Stop (Seconds (10.0)); //客戶端在10秒鐘停止

4 用NS3仿真無線自組網運行效果

4.1 節(jié)點之間數據流向顯示

在 Fedora20操作系統(tǒng)中,運行:

./waf —run scratch/adhoctest

則可以看出,移動節(jié)點n0與n15節(jié)點,可正常通信;顯示的數據流向如圖4所示,客戶端與服務端之間的數據傳送和應答順利。

4.2 節(jié)點之間通信效果顯示:

用Pyviz工具,可以查看節(jié)點之間互相通信的效果圖,運行以下命令:

./waf —run scratch/adhoctest —vis

則可以看出,剛開始,在路由選擇階段,數據流向多個節(jié)點,如圖5所示。一旦兩個節(jié)點之間明確了路由,數據流向比較穩(wěn)定,如圖6所示。

5 結束語

本文主要仿真了無線自組網傳送數據的過程。在仿真過程中,設計了無線自組網絡節(jié)點,并仿真了數據傳送的過程??稍诖嘶A上,進一步研究不同算法對不同環(huán)境下的數據傳送效果。希望對從事這方面的研究者有所啟發(fā)。

參考文獻:

[1] ns-3 documentation[EB/OL]. http://www.nsnam.org/docs/doxygen/index.html.

[2] ns-3 developers[EB/OL].http://www.nsnam.org/developers/overview.

[3] 馬春光,姚建盛.ns-3網絡模擬器基礎與應用[M].北京:人民郵電出版社,2014.

[4] 黃化吉,馮穗力,秦麗姣.NS網絡模擬和協(xié)議仿真[M].北京:人民郵電出版社,2010.endprint

在網站http://www.nsnam.org上免費下載軟件包ns-allinone-3.20.tar.bz2,然后拷貝到虛擬機Fedora20的系統(tǒng)/root目錄下,然后用命令:tar —jxvf ns-allinone-3.20.tar.bz2進行解壓縮。解壓縮完成后,用以下命令進入相關目錄:

cd /root/ns-allinone-3.20/ns-3.20/

然后執(zhí)行:

. /waf configure —enable-examples —enable-tests

最后執(zhí)行命令:

./waf

執(zhí)行完后,如果出現(xiàn)如圖1的畫面,即編譯安裝成功。

2 無線自組網IP地址的分配和拓撲結構設計

2.1 無線自組網的IP地址分配

我們將16個無線自組網都當成一個獨立的節(jié)點,既可以充當路由器,又可以充當終端節(jié)點。它們的IP地址都位于同一個網絡10.1.1.0中,如圖1所示。

2.2 無線自組網拓撲結構圖

無線自組網節(jié)點作為一個獨立的無線節(jié)點,可以再空間中自由移動,同時,在一范圍內可進行互相通信。其拓撲結構如圖2所示。

無線自組網絡可以互相之間通信,每個節(jié)點既充當路由器,又充當終端。我們假定節(jié)點n0與節(jié)點n15通信,來模擬數據在無線自組網中的通信過程。

3 用NS3仿真無線自組網

3.1 用NS3創(chuàng)建16個獨立的無線節(jié)點

我們首先創(chuàng)建16個無線節(jié)點,并配置無線節(jié)點通信所需要的參數。最主要的代碼如下:

NodeContainer wifiAdhocNodes;

wifiAdhocNodes.Create (16); //創(chuàng)建16無線自組網節(jié)點

WifiHelper wifi = WifiHelper::Default ();

NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default (); //配置Mac與Phy

wifiMac.SetType ("ns3::AdhocWifiMac");

YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();

YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default (); //創(chuàng)建無線節(jié)點互連通道

wifiPhy.SetChannel (wifiChannel.Create ());

NetDeviceContainer wifiAdhocDevices = wifi.Install (wifiPhy, wifiMac, wifiAdhocNodes); //創(chuàng)建節(jié)點的無線設備(無線網卡)

InternetStackHelper stack; //安裝協(xié)議棧

stack.Install (wifiAdhocNodes);

Ipv4AddressHelper address; //設置無線節(jié)點的IP地址

address.SetBase ("10.1.1.0", "255.255.255.0");

Ipv4InterfaceContainer AdhocInterfaces;

AdhocInterfaces = address.Assign (wifiAdhocDevices);

3.2 應用層模擬

1) 服務端節(jié)點設置

16個節(jié)點創(chuàng)建并配置完后,我們在最后一個節(jié)點n15放置echo服務端程序,其主要代碼為:

UdpEchoServerHelper echoServer (9); //設置服務器端口號9

ApplicationContainer serverApps = echoServer.Install (wifiAdhocNodes.Get (15)); //服務端程序安裝在節(jié)點n15。

serverApps.Start (Seconds (1.0)); //服務端程序在1秒生效

serverApps.Stop (Seconds (10.0)); //服務端程序在10秒停止。

2) 客戶端節(jié)點設置

我們將回顯客戶端放在節(jié)點n0上,其主要代碼為:

UdpEchoClientHelper echoClient (AdhocInterfaces.GetAddress (15), 9);//讓客戶端與服務端及其端口關聯(lián)

echoClient.SetAttribute ("MaxPackets", UintegerValue (100)); //設置通信時參數

echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));

echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

ApplicationContainer clientApps =

echoClient.Install (wifiAdhocNodes.Get (0)); //客戶端程序安裝在節(jié)點n0

clientApps.Start (Seconds (2.0));//客戶端在 2秒中生效

clientApps.Stop (Seconds (10.0)); //客戶端在10秒鐘停止

4 用NS3仿真無線自組網運行效果

4.1 節(jié)點之間數據流向顯示

在 Fedora20操作系統(tǒng)中,運行:

./waf —run scratch/adhoctest

則可以看出,移動節(jié)點n0與n15節(jié)點,可正常通信;顯示的數據流向如圖4所示,客戶端與服務端之間的數據傳送和應答順利。

4.2 節(jié)點之間通信效果顯示:

用Pyviz工具,可以查看節(jié)點之間互相通信的效果圖,運行以下命令:

./waf —run scratch/adhoctest —vis

則可以看出,剛開始,在路由選擇階段,數據流向多個節(jié)點,如圖5所示。一旦兩個節(jié)點之間明確了路由,數據流向比較穩(wěn)定,如圖6所示。

5 結束語

本文主要仿真了無線自組網傳送數據的過程。在仿真過程中,設計了無線自組網絡節(jié)點,并仿真了數據傳送的過程??稍诖嘶A上,進一步研究不同算法對不同環(huán)境下的數據傳送效果。希望對從事這方面的研究者有所啟發(fā)。

參考文獻:

[1] ns-3 documentation[EB/OL]. http://www.nsnam.org/docs/doxygen/index.html.

[2] ns-3 developers[EB/OL].http://www.nsnam.org/developers/overview.

[3] 馬春光,姚建盛.ns-3網絡模擬器基礎與應用[M].北京:人民郵電出版社,2014.

[4] 黃化吉,馮穗力,秦麗姣.NS網絡模擬和協(xié)議仿真[M].北京:人民郵電出版社,2010.endprint

在網站http://www.nsnam.org上免費下載軟件包ns-allinone-3.20.tar.bz2,然后拷貝到虛擬機Fedora20的系統(tǒng)/root目錄下,然后用命令:tar —jxvf ns-allinone-3.20.tar.bz2進行解壓縮。解壓縮完成后,用以下命令進入相關目錄:

cd /root/ns-allinone-3.20/ns-3.20/

然后執(zhí)行:

. /waf configure —enable-examples —enable-tests

最后執(zhí)行命令:

./waf

執(zhí)行完后,如果出現(xiàn)如圖1的畫面,即編譯安裝成功。

2 無線自組網IP地址的分配和拓撲結構設計

2.1 無線自組網的IP地址分配

我們將16個無線自組網都當成一個獨立的節(jié)點,既可以充當路由器,又可以充當終端節(jié)點。它們的IP地址都位于同一個網絡10.1.1.0中,如圖1所示。

2.2 無線自組網拓撲結構圖

無線自組網節(jié)點作為一個獨立的無線節(jié)點,可以再空間中自由移動,同時,在一范圍內可進行互相通信。其拓撲結構如圖2所示。

無線自組網絡可以互相之間通信,每個節(jié)點既充當路由器,又充當終端。我們假定節(jié)點n0與節(jié)點n15通信,來模擬數據在無線自組網中的通信過程。

3 用NS3仿真無線自組網

3.1 用NS3創(chuàng)建16個獨立的無線節(jié)點

我們首先創(chuàng)建16個無線節(jié)點,并配置無線節(jié)點通信所需要的參數。最主要的代碼如下:

NodeContainer wifiAdhocNodes;

wifiAdhocNodes.Create (16); //創(chuàng)建16無線自組網節(jié)點

WifiHelper wifi = WifiHelper::Default ();

NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default (); //配置Mac與Phy

wifiMac.SetType ("ns3::AdhocWifiMac");

YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();

YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default (); //創(chuàng)建無線節(jié)點互連通道

wifiPhy.SetChannel (wifiChannel.Create ());

NetDeviceContainer wifiAdhocDevices = wifi.Install (wifiPhy, wifiMac, wifiAdhocNodes); //創(chuàng)建節(jié)點的無線設備(無線網卡)

InternetStackHelper stack; //安裝協(xié)議棧

stack.Install (wifiAdhocNodes);

Ipv4AddressHelper address; //設置無線節(jié)點的IP地址

address.SetBase ("10.1.1.0", "255.255.255.0");

Ipv4InterfaceContainer AdhocInterfaces;

AdhocInterfaces = address.Assign (wifiAdhocDevices);

3.2 應用層模擬

1) 服務端節(jié)點設置

16個節(jié)點創(chuàng)建并配置完后,我們在最后一個節(jié)點n15放置echo服務端程序,其主要代碼為:

UdpEchoServerHelper echoServer (9); //設置服務器端口號9

ApplicationContainer serverApps = echoServer.Install (wifiAdhocNodes.Get (15)); //服務端程序安裝在節(jié)點n15。

serverApps.Start (Seconds (1.0)); //服務端程序在1秒生效

serverApps.Stop (Seconds (10.0)); //服務端程序在10秒停止。

2) 客戶端節(jié)點設置

我們將回顯客戶端放在節(jié)點n0上,其主要代碼為:

UdpEchoClientHelper echoClient (AdhocInterfaces.GetAddress (15), 9);//讓客戶端與服務端及其端口關聯(lián)

echoClient.SetAttribute ("MaxPackets", UintegerValue (100)); //設置通信時參數

echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));

echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

ApplicationContainer clientApps =

echoClient.Install (wifiAdhocNodes.Get (0)); //客戶端程序安裝在節(jié)點n0

clientApps.Start (Seconds (2.0));//客戶端在 2秒中生效

clientApps.Stop (Seconds (10.0)); //客戶端在10秒鐘停止

4 用NS3仿真無線自組網運行效果

4.1 節(jié)點之間數據流向顯示

在 Fedora20操作系統(tǒng)中,運行:

./waf —run scratch/adhoctest

則可以看出,移動節(jié)點n0與n15節(jié)點,可正常通信;顯示的數據流向如圖4所示,客戶端與服務端之間的數據傳送和應答順利。

4.2 節(jié)點之間通信效果顯示:

用Pyviz工具,可以查看節(jié)點之間互相通信的效果圖,運行以下命令:

./waf —run scratch/adhoctest —vis

則可以看出,剛開始,在路由選擇階段,數據流向多個節(jié)點,如圖5所示。一旦兩個節(jié)點之間明確了路由,數據流向比較穩(wěn)定,如圖6所示。

5 結束語

本文主要仿真了無線自組網傳送數據的過程。在仿真過程中,設計了無線自組網絡節(jié)點,并仿真了數據傳送的過程??稍诖嘶A上,進一步研究不同算法對不同環(huán)境下的數據傳送效果。希望對從事這方面的研究者有所啟發(fā)。

參考文獻:

[1] ns-3 documentation[EB/OL]. http://www.nsnam.org/docs/doxygen/index.html.

[2] ns-3 developers[EB/OL].http://www.nsnam.org/developers/overview.

[3] 馬春光,姚建盛.ns-3網絡模擬器基礎與應用[M].北京:人民郵電出版社,2014.

[4] 黃化吉,馮穗力,秦麗姣.NS網絡模擬和協(xié)議仿真[M].北京:人民郵電出版社,2010.endprint

猜你喜歡
仿真
Proteus仿真軟件在單片機原理及應用課程教學中的應用
工業(yè)機器人模擬仿真技術在職業(yè)教育中的應用淺析
一種幫助幼兒車內脫險應急裝置的仿真分析
論虛擬仿真實訓系統(tǒng)在口腔實驗教學中的應用
基于機電設備電氣控制線路排故的仿真系統(tǒng)設計
Buck開關變換器的基本參數設計及仿真分析
試析PLC控制下的自動化立體倉庫仿真情況分析
基于MADYMO的航空座椅約束系統(tǒng)優(yōu)化設計
中國體態(tài)假人模型與FAA Hybrid Ⅲ 型假人模型沖擊差異性分析
機械加工仿真技術研究
杭锦旗| 滦平县| 共和县| 北票市| 定结县| 蓬莱市| 女性| 厦门市| 定日县| 桐城市| 宁津县| 屏山县| 高邑县| 伊金霍洛旗| 普兰县| 磴口县| 通化县| 新宾| 大姚县| 买车| 北京市| 巴塘县| 曲阜市| 东源县| 无为县| 怀安县| 贵定县| 苏尼特右旗| 酒泉市| 长乐市| 云浮市| 灵台县| 徐州市| 博白县| 磐石市| 宁津县| 长寿区| 江城| 左贡县| 盐津县| 汶川县|