ns-3 network simulator qhia. Tshooj 4

ns-3 network simulator qhia. Tshooj 4
nqe 1,2
qib 3

4 Lub ntsiab lus piav qhia
4.1 Cov ntsiab lus tseem ceeb
4.1.1 Noob
4.1.2 Kev thov
4.1.3 Channel
4.1.4 Net Device
4.1.5 Topological pab
4.2 Thawj ns-3 tsab ntawv
4.2.1 Boilerplate code
4.2.2 Plug-ins
4.2.3 ns3 npe
4.2.4 Logging
4.2.5 Lub luag haujlwm tseem ceeb
4.2.6 Siv topology pab
4.2.7 Siv Daim Ntawv Thov
4.2.8 Lub Simulator
4.2.9 Tsim koj tsab ntawv
4.3 ns-3 Source code

Tshooj 4

Tswv yim txheej txheem cej luam

Thawj qhov uas peb yuav tsum tau ua ua ntej peb pib kawm lossis sau ns-3 code yog piav qhia ob peb lub ntsiab lus yooj yim thiab abstractions hauv qhov system. Ntau qhov no yuav zoo li pom tseeb rau qee tus, tab sis peb xav kom siv sijhawm los nyeem nqe lus no kom ntseeg tau tias koj tab tom pib ntawm lub hauv paus ruaj khov.

4.1 Cov ntsiab lus tseem ceeb

Hauv seem no, peb yuav saib qee cov ntsiab lus uas feem ntau siv hauv lub vev xaib tab sis muaj lub ntsiab lus tshwj xeeb hauv ns-3.

4.1.1 Noob

Hauv Internet jargon, lub khoos phis tawj uas txuas rau lub network yog hu ua tus tswv tsev lossis qee zaum qhov kawg. Vim tias ns-3 yog lub network simulator thiab tsis yog Internet simulator, peb txhob txwm tsis siv lub sij hawm tus tswv tsev, vim qhov no muaj feem xyuam nrog Is Taws Nem thiab nws cov kev cai. Hloov chaw, peb siv lub ntsiab lus dav dav, kuj tseem siv los ntawm lwm cov simulators, uas tshwm sim hauv kab kev xav: node (ntawm).

Hauv ns-3, lub hauv paus abstraction ntawm lub khoos phis tawj yog hu ua node. Qhov no abstraction yog sawv cev hauv C ++ los ntawm Node chav kawm. Chav kawm NodeNode (node) muab txoj hauv kev los tswj cov sawv cev ntawm cov cuab yeej siv hauv kev simulation.

Koj yuav tsum to taub Ntawm zoo li lub computer uas koj ntxiv functionality. Koj yuav ntxiv tej yam xws li cov ntawv thov, cov kab ke sib txuas, thiab cov ntawv txuas ntxiv nrog cov tsav tsheb uas tso cai rau lub khoos phis tawj ua haujlwm muaj txiaj ntsig. Peb siv tib tus qauv yooj yim hauv ns-3.

4.1.2 Kev thov

Feem ntau, computer software muab faib ua ob chav kawm dav. System software npaj ntau yam khoom siv hauv computer xws li kev nco, processor cycles, disk, network, thiab lwm yam raws li qee cov qauv kev suav. System software feem ntau tsis siv cov peev txheej no los ua cov haujlwm uas tau txais txiaj ntsig ncaj qha rau tus neeg siv. Tus neeg siv feem ntau khiav ib daim ntawv thov kom ua tiav lub hom phiaj tshwj xeeb, uas tau txais thiab siv cov peev txheej tswj hwm los ntawm lub kaw lus software.

Feem ntau txoj kab ntawm kev sib cais ntawm qhov system thiab daim ntawv thov software yog kos ntawm qhov kev hloov pauv uas tshwm sim hauv cov cuab yeej ua haujlwm. ns-3 tsis muaj lub tswv yim tiag tiag ntawm kev ua haujlwm thiab yog li tsis muaj lub tswv yim ntawm cov cai tswjfwm lossis kev hu xovtooj. Txawm li cas los xij, peb muaj lub tswv yim rau ib qho app. Ib yam li hauv "lub ntiaj teb tiag" cov ntawv thov software khiav ntawm cov khoos phis tawj los ua haujlwm, ns-3 daim ntawv thov khiav ntawm ns-3 nodes los tswj kev simulation hauv ntiaj teb simulated.

Hauv ns-3, qhov kev paub daws teeb meem yooj yim rau cov neeg siv cov kev pab cuam uas tsim qee yam haujlwm rau kev ua qauv yog ib daim ntawv thov. Qhov no abstraction yog sawv cev hauv C ++ los ntawm Chav Kawm Ntawv Thov. Cov chav kawm ntawv thov muab txoj hauv kev rau kev tswj xyuas cov kev xav ntawm peb cov neeg siv-theem version ntawm daim ntawv thov hauv simulations. Cov neeg tsim khoom yuav tsum tau tshwj xeeb hauv Chav Kawm Daim Ntawv Thov hauv qhov kev xav ntawm qhov programming los tsim cov ntawv thov tshiab. Hauv qhov kev qhia no, peb yuav siv qhov tshwj xeeb ntawm Chav Kawm Ntawv Thov hu ua UdpEchoClientApplication ΠΈ UdpEchoServerApplication. Raws li koj xav tau, cov ntawv thov no tsim ib txheej ntawm cov neeg siv khoom / server daim ntawv thov siv los tsim thiab ncha network pob ntawv.

4.1.3 Channel

Hauv lub ntiaj teb tiag tiag, koj tuaj yeem txuas lub computer mus rau lub network. Feem ntau cov xov xwm tshaj tawm uas cov ntaub ntawv raug xa mus rau hauv cov tes hauj lwm no hu ua channels. Thaum koj ntsaws Ethernet cable rau hauv lub qhov hluav taws xob phab ntsa, koj txuas koj lub computer mus rau qhov txuas Ethernet. Nyob rau hauv lub simulated ns-3 ntiaj teb node yog txuas nrog ib yam khoom uas sawv cev rau ib tug kev sib txuas lus channel. Ntawm no, qhov yooj yim abstraction ntawm kev sib txuas lus subnetwork yog hu ua ib tug channel thiab yog sawv cev rau hauv C ++ los ntawm cov chav kawm Channel.

Класс ChannelChannel muab txoj hauv kev los tswj kev sib cuam tshuam ntawm cov khoom subnet thiab txuas cov tswv rau lawv. Cov channel kuj tseem tuaj yeem tsim tshwj xeeb los ntawm cov neeg tsim khoom hauv qhov kev xav tau ntawm kev ua haujlwm. Kev tshwj xeeb channel tuaj yeem ua qauv ib yam yooj yim xws li cov xaim. Ib lub channel tshwj xeeb kuj tuaj yeem ua qauv ua qauv zoo li qhov hloov pauv loj Ethernet lossis qhov chaw peb sab uas muaj kev cuam tshuam hauv cov xov tooj wireless.

Peb yuav tau siv tshwj xeeb versions ntawm channel nyob rau hauv no tutorial hu ua CsmaChannelCsmaChannel, PointToPointChannelPointToPointChannel ΠΈ WifiChannelWifiChannel. CsmaChannel, piv txwv li, qauv qauv ntawm ib qho kev sib txuas lus subnet uas siv cov neeg nqa khoom-kev nkag siab ntau qhov chaw sib txuas lus. Qhov no muab peb Ethernet zoo li kev ua haujlwm.

4.1.4 Net Device

Nws tau hais tias yog tias koj xav txuas lub khoos phis tawj mus rau lub network, koj yuav tsum tau yuav ib lub network tshwj xeeb thiab cov khoom siv kho vajtse hu ua (hauv PC terminology) ib daim npav peripheral uas yuav tsum tau muab tso rau hauv lub computer. Yog tias daim npav peripheral tau siv qee qhov kev sib txuas ua haujlwm, lawv raug hu ua network interface cards lossis network cards. Niaj hnub no, feem ntau cov khoos phis tawj tuaj nrog kev sib koom ua ke network interface kho vajtse thiab tsis pom los ntawm cov neeg siv ua cov khoom siv cais.

Daim npav network yuav tsis ua haujlwm yam tsis muaj software tsav tsheb uas tswj hwm nws cov khoom siv. Hauv Unix (lossis Linux), ib qho khoom siv peripheral raug cais raws li cov khoom siv. Cov cuab yeej tau tswj hwm siv cov cuab yeej tsav tsheb, thiab cov khoom siv hauv lub network (NICs) raug tswj los ntawm kev siv lub tshuab hluav taws xob network (network ntaus ntawv tsav tsheb) thiab suav nrog cov khoom siv network (net li). Hauv Unix thiab Linux, koj xa mus rau cov khoom siv network los ntawm cov npe xws li eth0.

Nyob rau hauv ns-3, lub network ntaus ntawv abstraction npog ob qho tib si software tsav tsheb thiab kho vajtse ua qauv. Nyob rau hauv lub simulation, lub network ntaus ntawv yog "ntsia" nyob rau hauv ib tug node kom nws mus sib txuas lus nrog rau lwm cov nodes los ntawm raws. Ib yam li lub khoos phis tawj tiag tiag, lub node tuaj yeem txuas nrog ntau txoj hauv kev los ntawm ntau yam khoom siv NetDevices.

Lub network abstraction ntawm ib lub cuab yeej yog sawv cev hauv C ++ los ntawm chav kawm NetDevice. Chav kawm NetDevice muab txoj hauv kev los tswj kev sib txuas rau Node thiab Channel cov khoom; thiab tuaj yeem tsim tshwj xeeb los ntawm cov neeg tsim khoom hauv kev nkag siab ntawm cov phiaj xwm taw qhia. Hauv qhov kev qhia no peb yuav siv ntau qhov tshwj xeeb ntawm NetDevice hu ua CsmaNetDevice, PointToPointNetDevice ΠΈ WifiNetDevice. Ib yam li Ethernet network adapter yog tsim los ua haujlwm nrog lub network Ethernet, CsmaNetDevice tsim los ua haujlwm nrog CsmaChannel, PointToPointNetDevice tsim los ua haujlwm nrog PointToPointChannelthiab WifiNetDevice - tsim los ua haujlwm nrog WifiChannel.

4.1.5 Topological pab

Hauv lub network tiag tiag, koj yuav pom cov khoos phis tawj tswj hwm nrog cov npav network ntxiv (lossis built-in). Hauv ns-3 peb xav hais tias koj yuav pom cov nodes nrog NetDevices txuas. Nyob rau hauv ib lub network simulated loj, koj yuav tsum npaj kev sib txuas ntawm ntau yam khoom Ntawm, NetDevice ΠΈ Channel.

Txij li thaum txuas NetDevices rau cov nodes, NetDevices rau kev sib txuas, muab IP chaw nyob, thiab lwm yam. nyob rau hauv ns-3 yog ib txoj hauj lwm uas ib txwm ua, ua kom qhov no yooj yim li sai tau peb muab cov npe hu ua topology helpers. Piv txwv li, los tsim NetDevice, koj yuav tsum ua ntau yam haujlwm ns-3 kernel, ntxiv qhov chaw nyob MAC, teeb tsa lub network ntaus ntawv hauv Node, teeb tsa cov txheej txheem ntawm pawg, thiab tom qab ntawd txuas NetDevice rau Channel. Txawm tias ua hauj lwm ntau dua yuav tsum tau txuas ntau yam khoom siv mus rau ntau qhov sib txuas thiab tom qab ntawd txuas tus kheej tes hauj lwm rau hauv Internetworks network. Peb muab cov khoom pabcuam topology uas muab ntau cov haujlwm no rau hauv cov qauv siv yooj yim rau koj qhov yooj yim.

4.2 Thawj ns-3 tsab ntawv

Yog tias koj tau teeb tsa lub kaw lus raws li tau hais los saum toj no, koj yuav muaj ns-3 tso rau hauv cov npe hu ua repos hauv koj phau ntawv qhia tsev. Mus rau phau ntawv qhia tso tawm

Yog tias koj tsis muaj cov ntawv teev npe zoo li no, nws txhais tau tias koj tsis tau teev cov ntaub ntawv tso tawm thaum tsim cov ntawv tso tawm ntawm ns-3, tsim zoo li no:
$ ./waf configure β€”build-profile=tso β€”out=build/release,
$ ./waf tsim

nyob rau hauv koj yuav tsum pom ib tug directory qauv zoo ib yam li cov hauv qab no:

AUTHORS       examples      scratch       utils       waf.bat*
bindings      LICENSE       src           utils.py    waf-tools
build         ns3           test.py*      utils.pyc   wscript
CHANGES.html  README        testpy-output VERSION     wutils.py
doc           RELEASE_NOTES testpy.supp   waf*        wutils.pyc

Mus rau phau ntawv qhia piv txwv/tutorial. Koj yuav tsum pom cov ntaub ntawv nyob ntawd hu ua ib.cc. Qhov no yog ib tsab ntawv uas yuav tsim ib qho yooj yim point-to-point kev sib txuas ntawm ob lub nodes thiab xa ib pob ntawv ntawm cov nodes. Cia peb saib cov kab ntawv no los ntawm kab; ua qhov no, qhib thawj.cc hauv koj nyiam editor.

4.2.1 Boilerplate code
Thawj kab hauv cov ntaub ntawv yog tus editor hom kab emacs. Nws qhia emacs txog kev sib koom ua ke (coding style) uas peb siv hauv peb qhov chaws.

/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */

Qhov no ib txwm muaj teeb meem tsis sib haum xeeb, yog li peb yuav tsum tau teeb tsa cov ntaub ntawv ncaj qha kom nws tawm ntawm txoj kev tam sim ntawd. Qhov project ns-3, zoo li feem ntau cov haujlwm loj, tau txais ib qho kev coding style uas txhua qhov kev koom tes yuav tsum ua raws li. Yog tias koj xav pab txhawb koj cov lej rau qhov project, koj yuav tsum tau ua raws li tus qauv ns-3 coding, raws li tau piav qhia hauv cov ntaub ntawv doc/codingstd.txt los yog muaj nyob rau ntawm qhov project web page: https://www.nsnam.org/develop/contributing-code/coding-style/.

Peb pom zoo kom koj tau txais kev pom zoo ntawm ns-3 code thiab siv tus qauv no thaum twg koj ua haujlwm nrog peb cov cai. Tag nrho pab pawg txhim kho thiab cov neeg koom nrog pom zoo rau qhov no tom qab qee qhov yws yws. emacs hom kab saum toj no ua rau nws yooj yim rau format kom raug yog tias koj siv emacs editor.

ns-3 simulator muaj ntawv tso cai siv GNU General Public License. Koj yuav pom qhov tsim nyog GNU header raws li txoj cai hauv txhua ns-3 cov ntaub ntawv faib tawm. Feem ntau koj yuav pom daim ntawv ceeb toom kev cai lij choj rau ib lub koom haum koom nrog hauv ns-3 qhov project saum toj no GPL cov ntawv thiab tus sau, qhia hauv qab no.

/* 
* This program is free software; you can redistribute it and/or modify 
* it under the terms of the GNU General Public License version 2 as 
* published by the Free Software Foundation; 
*
* This program is distributed in the hope that it will be useful, 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
* GNU General Public License for more details. 
* 
* You should have received a copy of the GNU General Public License 
* along with this program; if not, write to the Free Software 
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
*/

4.2.2 Plug-ins

Txoj cai nws tus kheej pib nrog cov lus qhia txog kev suav nrog (suav nrog).

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"

Txhawm rau pab peb cov neeg siv cov ntawv sau qib siab tiv thaiv ntau ntawm cov ntaub ntawv header tam sim no hauv lub kaw lus, peb pab pawg raws li lawv siv rau hauv cov qauv loj. Peb muab ib cov ntaub ntawv header uas yuav rov ua dua tag nrho cov ntaub ntawv header siv hauv ib qho module. Es tsis txhob yuav tsum tau tshawb nrhiav raws nraim li cas header koj xav tau thiab tejzaum nws yuav tau txais cov npe tseeb ntawm cov dependencies, peb muab koj lub peev xwm mus download tau ib pawg ntawm cov ntaub ntawv nyob rau hauv zoo granularity. Nws tsis yog qhov ua tau zoo tshaj plaws, tab sis nws yeej ua rau kev sau ntawv yooj yim dua.

Txhua ntawm ns-3 suav nrog cov ntaub ntawv tau muab tso rau hauv cov npe hu ua ns3 (tsim subdirectory) kom tsis txhob muaj cov ntaub ntawv npe tsis sib haum thaum lub sijhawm tsim. Cov ntaub ntawv ns3/core-module.h sib raug rau ns-3 module, uas koj yuav pom nyob rau hauv phau ntawv qhia src/cov nyob rau hauv qhov tso tawm koj ntsia. Hauv cov npe ntawm cov npe no koj yuav pom ntau cov ntaub ntawv header. Thaum koj ua lub rooj sib txoos, Waf tso cov ntaub ntawv header rau pej xeem hauv ns3 directory hauv subdirectory tsim / debug

Yog tias koj tsis muaj cov ntawv teev npe zoo li no, nws txhais tau tias koj tsis tau teev cov ntaub ntawv tso tawm thaum tsim cov ntawv tso tawm ntawm ns-3, tsim zoo li no:
$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf tsim
los yog
$ ./waf configure --build-profile=optimized --out=build/optimized
$ ./waf tsim

los yog tsim/optimized, nyob ntawm koj configuration. Waf tseem yuav cia li tsim ib qho module suav nrog cov ntaub ntawv los thauj tag nrho cov ntaub ntawv header pej xeem. Txij li thaum koj tau ua raws li phau ntawv qhia no kev ntseeg, koj twb ua tiav lawm

$ ./waf -d debug --enable-examples --enable-tests configure

los teeb tsa qhov project los khiav debug tsim uas suav nrog cov piv txwv thiab cov kev sim. Koj kuj tau ua

$ ./waf

los sib sau ua ke qhov project. Yog li tam sim no thaum koj saib hauv phau ntawv qhia ../../build/debug/ns3, tom qab ntawd koj yuav pom, ntawm lwm tus, cov ntaub ntawv header ntawm plaub modules qhia saum toj no. Koj tuaj yeem saib cov ntsiab lus ntawm cov ntaub ntawv no thiab pom tias lawv suav nrog tag nrho cov ntaub ntawv pej xeem siv los ntawm cov qauv sib txuas.

4.2.3 ns3 npe

Kab tom ntej hauv tsab ntawv ib.cc yog kev tshaj tawm lub npe.

using namespace ns3;

Qhov project ns-3 yog siv nyob rau hauv C ++ namespace hu ua ns3. Cov pab pawg no tag nrho cov ns-3-hais lus tshaj tawm rau hauv qhov chaw sab nraum lub ntiaj teb lub npe, uas yuav cia siab tias yuav pab nrog kev koom ua ke nrog lwm cov cai. Siv C ++ tus neeg teb xov tooj qhia txog ns-3 namespace rau hauv cheeb tsam tam sim no (thoob ntiaj teb) tshaj tawm. Qhov no yog ib txoj hauv kev zoo uas hais tias tom qab qhov kev tshaj tawm no, koj yuav tsis tas yuav ntaus tus ns3:: tus neeg ua haujlwm tso cai ua ntej tag nrho koj ns-3 code siv nws. Yog tias koj tsis paub nrog namespaces, xa mus rau yuav luag txhua phau ntawv C ++ thiab muab piv rau ns3 namespace siv std namespace thiab tshaj tawm using namespace std; hauv cov piv txwv ntawm kev ua haujlwm nrog tus neeg teb xov tooj tso zis nqi thiab ntws.

4.2.4 Logging

Cov kab hauv qab no ntawm tsab ntawv yog:

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

Peb yuav siv nqe lus no ua qhov chaw yooj yim los tham txog peb cov ntaub ntawv Cov pa. Yog tias koj saib ntawm ns-3 qhov project lub vev xaib, koj yuav pom cov ntaub ntawv txuas hauv qhov kev taw qhia. Yog tias koj nyem qhov txuas no koj yuav raug coj mus rau peb nplooj ntawv cov ntaub ntawv. Muaj qhov txuas "Tshiab Tshaj Tawm" uas yuav coj koj mus rau cov ntaub ntawv rau qhov tseeb ruaj khov version ntawm ns-3. Yog tias koj xaiv qhov txuas "API Documentation", koj yuav raug coj mus rau nplooj ntawv ns-3 API cov ntaub ntawv.

Nyob rau sab laug ntawm nplooj ntawv koj yuav pom graphical sawv cev ntawm cov ntaub ntawv qauv. Qhov chaw zoo pib yog Modules ns-3 "phau ntawv" hauv ns-3 navigation ntoo. Yog koj qhia modules, koj yuav pom ib daim ntawv teev cov ntaub ntawv ns-3 modules. Raws li tau hais los saum no, lub tswv yim ntawm ib qho module ntawm no yog ncaj qha ntsig txog cov ntaub ntawv suav nrog hauv module saum toj no. Lub ns-3 logging subsystem yog tham nyob rau hauv seem Siv lub Loggging Module, yog li peb yuav rov qab los rau nws tom qab hauv qhov kev qhia no, tab sis koj tuaj yeem kawm txog cov nqe lus saum toj no los ntawm saib ntawm lub module Corethiab ces qhib phau ntawv Cov cuab yeej debuggingthiab tom qab ntawd xaiv nplooj ntawv txiav. Nyem rau txiav.

Tam sim no koj yuav tsum rov xyuas cov ntaub ntawv Cov pa rau module txiav. Nyob rau hauv daim ntawv teev cov macros nyob rau sab saum toj ntawm nplooj ntawv, koj yuav pom ib tug nkag rau NS_LOG_COMPONENT_DEFINE. Ua ntej nyem qhov txuas, nco ntsoov saib "Cov Lus Qhia ntxaws" ntawm cov ntawv sau npe kom nkag siab tias nws ua haujlwm li cas. Txhawm rau ua qhov no koj tuaj yeem nqes nqes lossis xaiv "Ntxiv ... " hauv qab daim duab.

Thaum koj muaj lub tswv yim dav dav ntawm qhov yuav tshwm sim, mus tom ntej thiab saib cov ntaub ntawv rau qhov tshwj xeeb NS_LOG_COMPONENT_DEFINE. Kuv yuav tsis luam cov ntaub ntawv ntawm no, tab sis kom xaus lus, kab no tshaj tawm cov npe npe hu ua FirstScriptExample, uas tso cai rau koj los pab lossis lov tes taw console logging ntawm cov lus los ntawm kev siv lub npe.

4.2.5 Lub luag haujlwm tseem ceeb

Hauv kab hauv qab no ntawm tsab ntawv koj yuav pom,

int 
main (int argc, char *argv[])
{ 

Qhov no tsuas yog ib qho kev tshaj tawm ntawm lub luag haujlwm tseem ceeb ntawm koj qhov program (script). Raws li nrog rau txhua qhov kev pab cuam C ++, koj yuav tsum tau txhais lub luag haujlwm tseem ceeb, qhov no yog ua ntej. Tsis muaj dab tsi tshwj xeeb ntawm no. Koj tsab ntawv ns-3 tsuas yog C ++ program. Cov kab hauv qab no tau teeb tsa lub sijhawm daws teeb meem rau 1 nanosecond, uas yog lub neej ntawd:

Time::SetResolution (Time::NS);

Lub sij hawm daws teeb meem, los yog kev daws teeb meem yooj yim, yog lub sij hawm tsawg tshaj plaws uas siv tau (qhov tsawg tshaj plaws sawv cev sib txawv ntawm ob zaug). Koj tuaj yeem hloov qhov kev daws teeb meem raws nraim ib zaug. Lub tshuab uas muab qhov kev hloov pauv no siv lub cim xeeb, yog li thaum qhov kev daws teeb meem tau teeb tsa, peb tso lub cim xeeb, tiv thaiv kev hloov tshiab ntxiv. (Yog tias koj tsis teeb tsa qhov kev daws teeb meem tshwj xeeb, nws yuav ua haujlwm rau ib nanosecond thiab lub cim xeeb yuav raug tso tawm thaum lub simulation pib.)

Ob kab ntawm tsab ntawv hauv qab no yog siv los ua kom muaj ob lub ntsiab lus nkag uas tau tsim rau hauv daim ntawv thov EchoClient ΠΈ EchoServer:

LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);

Yog tias koj nyeem cov ntaub ntawv rau Logging tivthaiv, koj yuav pom tias muaj ntau theem ntawm kev nkag / granularity uas koj tuaj yeem ua rau ntawm txhua yam. Ob kab ntawm kab no pab kom debug nkag mus rau qib INFO rau ncha cov neeg siv khoom thiab cov servers. Nyob rau theem no, daim ntawv thov yuav luam cov lus thaum nws xa thiab tau txais pob ntawv thaum simulation.

Tam sim no peb yuav tau nqes mus rau kev lag luam ntawm kev tsim cov topology thiab khiav lub simulation. Peb siv cov khoom siv topology los ua txoj haujlwm no yooj yim li sai tau.

4.2.6 Siv topology pab

Ob kab tom ntej ntawm cov cai hauv peb tsab ntawv yuav tsim tau cov Node ns-3 cov khoom uas yuav sawv cev rau cov khoos phis tawj hauv kev simulation.

NodeContainer nodes;
nodes.Create (2);

Ua ntej peb mus ntxiv, cia peb nrhiav cov ntaub ntawv rau chav kawm NodeContainer. Lwm txoj hauv kev kom tau txais cov ntaub ntawv rau ib chav kawm yog los ntawm lub tab Cov chav kawm ntawm nplooj ntawv Cov pa. Yog tias koj twb muaj Doxygen qhib, tsuas yog scroll mus rau sab saum toj ntawm nplooj ntawv thiab xaiv Cov Chav Kawm tab. Koj yuav tsum pom cov txheej txheem tshiab, ib qho ntawm cov npe ntawm cov chav kawm. Hauv qab no tab koj yuav pom cov npe ntawm tag nrho cov chav kawm ns-3. Scroll cia rau ns3 ::npe. Thaum koj pom ib chav kawm, xaiv nws mus rau cov ntaub ntawv rau chav kawm.

Raws li peb nco qab, ib qho ntawm peb cov ntsiab lus tseem ceeb yog qhov node. Nws sawv cev rau lub khoos phis tawj uas peb yuav ntxiv cov khoom xws li raws tu qauv, daim ntawv thov, thiab daim npav txuas ntxiv. Topology pab NodeContainer muab txoj hauv kev yooj yim los tsim, tswj thiab nkag mus rau txhua yam khoom Ntawm, uas peb tsim los khiav lub simulation. Thawj kab saum toj no tsuas yog tshaj tawm NodeContainer, uas peb hu ua nodes. Cov kab thib ob hu rau Tsim txoj hauv kev ntawm cov khoom nodes thiab nug lub thawv los tsim ob lub nodes. Raws li tau piav qhia hauv Cov pa, lub thawv thov ns-3 system los tsim ob yam khoom Ntawm thiab khaws cov pointers rau cov khoom no sab hauv.

Cov nodes tsim nyob rau hauv tsab ntawv ua dab tsi tseem. Cov kauj ruam tom ntej hauv kev tsim cov topology yog txuas peb cov nodes rau lub network. Daim ntawv yooj yim tshaj plaws ntawm lub network uas peb txhawb nqa yog qhov taw tes rau qhov kev sib txuas ntawm ob lub nodes. Peb tam sim no yuav tsim kev sib txuas zoo li no.

PointToPointHelper

Peb tsim ib qho kev sib txuas ntawm qhov taw tes rau qhov uas siv cov qauv paub, siv cov khoom siv topology los ua cov haujlwm qis uas yuav tsum tau ua rau kev sib txuas. Nco qab tias ob peb yam ntsiab lus tseem ceeb NetDevice ΠΈ Channel. Nyob rau hauv lub ntiaj teb no tiag tiag, cov ntsiab lus roughly sib haum mus rau peripheral cards thiab network cables. Feem ntau, ob yam no muaj feem cuam tshuam rau ib leeg, thiab tsis muaj leej twg tuaj yeem suav nrog kev sib koom, piv txwv li, cov khoom siv. Ethernet ntawm ib qho wireless channel. Peb cov neeg pabcuam topology ua raws li kev sib raug zoo no thiab yog li koj yuav siv ib yam khoom hauv qhov xwm txheej no PointToPointHelper rau kev teeb tsa thiab txuas ns-3 cov khoom PointToPointNetDevice ΠΈ PointToPointChannel. Peb kab tom ntej no hauv tsab ntawv:

PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); 
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

Thawj kab,

PointToPointHelper pointToPoint;

tsim ib qho piv txwv ntawm cov khoom ntawm pawg PointToPointHelper. Los ntawm cov theem saum toj kawg nkaus ntawm saib kab hauv qab no,

pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));

qhia qhov khoom PointToPointHelper siv tus nqi "5 Mbit / s" (tsib megabits ib ob) li "DataRate".

Los ntawm ib qho tshwj xeeb ntawm qhov pom, txoj hlua "DataRate" sib raug rau qhov peb hu ua tus cwj pwm PointToPointNetDevice. Yog koj saib Cov pa rau chav kawm ns3::PointToPointNetDevice thiab nyob rau hauv cov ntaub ntawv rau txoj kev GetTypeId koj yuav pom cov npe ntawm cov cwj pwm uas tau hais tseg rau lub cuab yeej. Ntawm lawv yuav yog tus cwj pwm "DataRate" Feem ntau cov neeg siv pom ns-3 cov khoom muaj cov npe zoo sib xws. Peb siv cov txheej txheem no kom yooj yim teeb tsa lub simulation yam tsis muaj recompilation, raws li koj yuav pom nyob rau hauv seem tom ntej.

Zoo ib yam li "DataRate" hauv PointToPointNetDevice, koj yuav pom "Ntev" tus cwj pwm cuam tshuam nrog PointToPointChannel. Kab kawg

pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

hais tias PointToPointHelper siv tus nqi "2 ms" (ob milliseconds) raws li tus nqi ncua sij hawm rau qhov taw tes-rau-point txuas nws tom qab tsim.

NetDeviceContainer

Tam sim no peb muaj nyob rau hauv tsab ntawv NodeContainer, uas muaj ob lub nodes. Peb muaj PointToPointHelper, uas yog npaj rau kev tsim khoom PointToPointNetDevices thiab txuas lawv siv PointToPointChannel khoom. Ib yam li peb siv NodeContainer topology tus pab khoom los tsim cov nodes, peb yuav nug PointToPointHelper ua haujlwm rau peb txog kev tsim, teeb tsa thiab kev teeb tsa ntawm peb cov khoom siv. Peb xav tau ib daim ntawv teev tag nrho cov khoom tsim NetDevice, yog li peb siv NetDeviceContainer khaws cia ib yam li peb siv NodeContainer khaws cov nodes peb tsim. Tom ntej no ob kab ntawm code,

NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);

ua kom tiav cov cuab yeej thiab kev teeb tsa channel. Thawj kab tshaj tawm cov khoom ntim tau hais los saum toj no, thiab qhov thib ob ua haujlwm tseem ceeb. Txoj kev Nruab chaw PointToPointHelper lees txais NodeContainer raws li parameter. Sab hauv NetDeviceContainer rau txhua qhov node nyob hauv NodeContainer yog tsim (rau kev sib txuas lus point-to-point yuav tsum muaj raws nraim ob ntawm lawv) PointToPointNetDevice yog tsim thiab khaws cia rau hauv lub thawv ntim khoom. PointToPointChannel yog tsim thiab ob yog txuas rau nws PointToPointNetDevices. Tom qab tsim cov khoom, cov cwj pwm khaws cia hauv PointToPointHelper, yog siv los pib cov khoom sib xws hauv cov khoom tsim.

Tom qab hu pointToPoint.Install (nodes) peb yuav muaj ob lub nodes, txhua tus nrog ib tug point-to-point network ntaus ntawv ntsia thiab ib tug point-to-point txuas ntawm lawv. Ob lub cuab yeej yuav raug teeb tsa kom xa cov ntaub ntawv ntawm qhov ceev ntawm tsib megabits ib ob nrog rau kev xa tawm qeeb ntawm ob milliseconds hla cov channel.

InternetStackHelper

Tam sim no peb muaj cov nodes thiab cov khoom siv tau teeb tsa, tab sis peb cov nodes tsis muaj cov txheej txheem teeb tsa. Ob kab ntawm kab tom ntej no yuav saib xyuas qhov no.

InternetStackHelper stack;
stack.Install (nodes);

InternetStackHelper - yog tus pab topology rau Internet pawg, zoo ib yam li PointToPointHelper rau point-to-point network li. Txoj kev Nruab siv NodeContainer ua tus parameter. Thaum ua tiav, nws yuav nruab Internet pawg (TCP, UDP, IP, thiab lwm yam) ntawm txhua lub thawv ntim.

IPv4AddressHelper

Tom qab ntawd peb yuav tsum koom nrog peb cov khoom siv nrog IP chaw nyob. Peb muab ib tug topology pab tswj kev faib IP chaw nyob. Tsuas yog API pom rau tus neeg siv yog teeb tsa tus IP chaw nyob thiab netmask siv thaum ua qhov chaw nyob tiag tiag (qhov no yog ua tiav ntawm qib qis hauv tus pab). Tom ntej no ob kab ntawm code nyob rau hauv peb tsab ntawv piv txwv ib.cc,

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

tshaj tawm qhov chaw nyob pab khoom thiab qhia nws tias nws yuav tsum pib faib IP chaw nyob los ntawm network 10.1.1.0, siv 255.255.255.0 bitmask los txiav txim. Los ntawm lub neej ntawd, faib chaw nyob yuav pib ntawm ib qho thiab nce monotonically, yog li thawj qhov chaw nyob faib los ntawm lub hauv paus no yuav yog 10.1.1.1, tom qab ntawd 10.1.1.2, thiab lwm yam. Hauv kev muaj tiag, nyob rau theem qis, ns-3 system nco ntsoov txhua qhov chaw nyob IP thiab ua rau muaj kev ua yuam kev loj yog tias koj yuam kev tsim qhov xwm txheej uas tib qhov chaw nyob tau tsim ob zaug (los ntawm txoj kev, qhov yuam kev no nyuaj rau kev debug).

Cov kab hauv qab no ntawm code,

Ipv4InterfaceContainer interfaces = address.Assign (devices);

ua qhov chaw nyob tiag tiag. Hauv ns-3 peb tsim kev sib txuas ntawm tus IP chaw nyob thiab cov cuab yeej siv cov khoom IPv4 interface. Ib yam li peb qee zaum xav tau cov npe ntawm cov khoom siv network tsim los ntawm tus pab cuam rau kev siv tom qab, qee zaum peb xav tau cov npe ntawm cov khoom IPv4 interface. IPv4InterfaceContainer muab qhov no functionality.

Peb tau tsim ib qhov point-to-point network, nrog cov pawg teeb tsa thiab IP chaw nyob tau muab. Tam sim no peb xav tau cov ntawv thov hauv txhua qhov los tsim kev khiav tsheb.

4.2.7 Siv Daim Ntawv Thov

Lwm qhov ntawm cov ntsiab lus tseem ceeb ntawm ns-3 system yog Daim ntawv thov (daim ntawv thov). Hauv qhov xwm txheej no peb tab tom siv ob chav kawm tshwj xeeb Daim ntawv thov npe ns3 UdpEchoServerApplication ΠΈ UdpEchoClientApplication. Ib yam li yav dhau los, peb siv cov khoom pabcuam los teeb tsa thiab tswj cov khoom hauv paus. Ntawm no peb siv UdpEchoServerHelper ΠΈ UdpEchoClientHelper khoom ua kom peb lub neej yooj yim dua.

UdpEchoServerHelper

Cov kab hauv qab no ntawm cov cai hauv peb qhov piv txwv thawj.cc yog siv los teeb tsa UDP ncha server daim ntawv thov ntawm ib qho ntawm peb tsim ua ntej.

UdpEchoServerHelper echoServer (9);

ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));

Thawj kab ntawm cov cai nyob rau saum toj no snippet tsim UdpEchoServerHelper. Raws li ib txwm muaj, qhov no tsis yog daim ntawv thov nws tus kheej, nws yog ib yam khoom uas pab peb tsim cov ntawv thov tiag tiag. Ib qho ntawm peb cov rooj sib tham yog kom dhau cov yam ntxwv xav tau rau tus tsim khoom ntawm tus pab khoom. Hauv qhov no, tus pab cuam tsis tuaj yeem ua dab tsi tseem ceeb tshwj tsis yog nws tau muab tus lej chaw nres nkoj uas tus neeg rau zaub mov yuav mloog rau pob ntawv, tus lej no kuj yuav tsum paub rau tus neeg siv khoom. Hauv qhov no, peb dhau tus lej chaw nres nkoj mus rau tus pab tsim kho. Lub constructor, nyob rau hauv lem, tsuas ua SetAttribute nrog tus nqi dhau. Tom qab ntawd, yog tias xav tau, koj tuaj yeem siv SetAttribute los teeb tsa tus nqi sib txawv rau Port attribute.

Zoo li ntau lwm yam khoom pab, cov khoom UdpEchoServerHelper muaj ib txoj kev Nruab. Kev ua raws li txoj kev no ua tau zoo tsim ib qho yooj yim ncha server daim ntawv thov thiab khi rau tus tswv tsev. Interestingly, txoj kev Nruab lees txais NodeContainer raws li parameter ib yam li lwm tus Nruab txoj kev peb tau pom.

C ++ implicit conversion ua hauj lwm ntawm no yuav siv sij hawm qhov tshwm sim ntawm txoj kev node.Get(1) (uas rov qab tus pointer ntse rau cov khoom node - Ptr ) thiab siv nws nyob rau hauv lub constructor rau cov khoom tsis qhia npe NodeContaineruas yog ces dhau mus rau txoj kev Nruab. Yog tias koj tsis tuaj yeem txiav txim siab hauv C ++ code twg kos npe rau kev sau thiab ua tiav, ces saib ntawm cov kev hloov pauv tsis raug.

Tam sim no peb pom qhov ntawd echoServer.Install txog rau nruab daim ntawv thov UdpEchoServerApplication nyob rau hauv NodeContaineruas peb siv los tswj peb cov nodes, node nrog index 1. Method Nruab yuav xa rov qab lub thawv uas muaj cov taw qhia rau txhua daim ntawv thov (hauv qhov no ib qho, txij li peb dhau qhov tsis qhia npe NodeContainer, muaj ib qho) tsim los ntawm tus pab.

Cov ntawv thov yuav tsum tau qhia meej thaum pib tsim tsheb khiav "pib" thiab tej zaum yuav tsum tau qhia ntxiv txog lub sijhawm uas yuav tsum tau tso tseg "nres". Peb muab ob qho kev xaiv. Cov sijhawm no tau teem sijhawm siv cov txheej txheem ApplicationContainer Start ΠΈ Tsis txhob. Cov txheej txheem no lees txais cov yam ntxwv ntawm hom Lub sij hawm. Hauv qhov no peb siv qhov qhia meej meej ntawm C ++ kev hloov pauv kom coj C ++ ob 1.0 thiab hloov nws mus rau tns-3 Lub Sijhawm khoom siv uas siv cov khoom thib ob los hloov mus rau vib nas this. Nco ntsoov tias txoj cai hloov dua siab tshiab tuaj yeem tswj tau los ntawm tus qauv sau, thiab C ++ muaj nws tus kheej cov cai, yog li koj tsis tuaj yeem suav nrog qhov tsis hloov pauv raws li koj xav tau. Ob kab

serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));

yuav ua rau lub ncha server daim ntawv thov pib (tig rau cia li) ib tug thib ob tom qab lub simulation pib thiab nres (tig) tom qab kaum vib nas this ntawm lub simulation. Vim qhov tseeb tias peb tau tshaj tawm qhov kev tshwm sim simulation (daim ntawv thov nres qhov xwm txheej), uas yuav raug tua hauv kaum vib nas this, tsawg kawg kaum vib nas this ntawm kev ua haujlwm network yuav simulated.

UdpEchoClientHelper

Client daim ntawv thov Ncha configured nyob rau hauv ib yam yuav luag zoo li lub server. Muaj ib qho khoom siv UdpEchoClientApplication, uas yog tswj
UdpEchoClientHelper.

UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);
echoClient.SetAttribute ("MaxPackets", UintegerValue (1));
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));;

Txawm li cas los xij, rau tus neeg siv echo peb yuav tsum tau teeb tsa tsib yam ntxwv sib txawv. Thawj ob tus cwj pwm yog teem rau lub sijhawm tsim UdpEchoClientHelper. Peb dhau cov kev txwv uas siv (hauv tus pab) los teeb tsa tus cwj pwm "RemoteAddress" ΠΈ "RemotePort" nyob rau hauv raws li peb daim ntawv cog lus kom dhau qhov tsim nyog tsis mus rau tus pab constructor.

Cia peb nco ntsoov tias peb siv IPv4InterfaceContainer txhawm rau taug qab tus IP chaw peb tau muab rau peb cov khoom siv. Lub null interface nyob rau hauv lub thawv interfaces yuav sib haum mus rau tus IP chaw nyob ntawm lub null node nyob rau hauv lub thawv ntim. Thawj qhov sib txuas hauv cov thawv ntim khoom sib txuas nrog tus IP chaw nyob ntawm thawj qhov hauv lub thawv ntim. Yog li ntawd, nyob rau hauv thawj kab ntawm code (saum toj no), peb tsim ib tug pab thiab qhia nws hais tias tus neeg siv qhov chaw nyob tej thaj chaw deb yuav yog tus IP chaw nyob uas muab rau tus tswv tsev nyob qhov twg lub server nyob. Peb kuj hais tias peb yuav tsum npaj cov pob ntawv xa mus rau qhov chaw nres nkoj cuaj.

Tus cwj pwm "MaxPackets" qhia tus neeg siv khoom ntau tshaj ntawm cov pob ntawv uas peb tuaj yeem xa tuaj thaum lub sijhawm simulation. Tus cwj pwm "Interval" qhia tus neeg siv sijhawm ntev npaum li cas ntawm cov pob ntawv, thiab "PacketSize" tus cwj pwm qhia tus neeg siv khoom loj npaum li cas pob ntawv them nyiaj yuav tsum yog. Nrog rau qhov sib xyaw ua ke no peb qhia tus neeg siv khoom kom xa ib pob ntawv 1024-byte.

Raws li nrog lub ncha server, peb teeb tsa tus cwj pwm ntawm tus neeg siv ncho Start ΠΈ Tsis txhob, tab sis ntawm no peb pib tus neeg siv khoom thib ob tom qab lub server qhib (ob vib nas this tom qab pib qhov simulation).

4.2.8 Lub Simulator

Hauv qhov no, peb yuav tsum khiav qhov simulation. Qhov no yog ua tiav siv lub ntiaj teb ua haujlwm Simulator::Khiav.

Simulator::Run ();

Thaum peb yav tas los hu ua txoj kev,

serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));
... 
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));

peb tau teem sijhawm cov xwm txheej hauv lub simulator ntawm 1,0 vib nas this, 2,0 vib nas this, thiab ob qhov xwm txheej ntawm 10,0 vib nas this. Tom qab hu Simulator::Khiav, lub kaw lus yuav pib saib cov npe ntawm cov xwm txheej tau teem tseg thiab ua rau lawv. Nws yuav xub tua ib qho kev tshwm sim tom qab 1,0 vib nas this, uas yuav ua rau lub ncha server daim ntawv thov (qhov kev tshwm sim no tuaj yeem teem sijhawm ntau lwm yam xwm txheej). Tom qab ntawd nws yuav tua ib qho kev tshwm sim tau teem tseg ntawm t = 2,0 vib nas this uas yuav tso tawm daim ntawv thov ncha. Ntxiv dua thiab, qhov kev tshwm sim no yuav muaj ntau yam xwm txheej ntxiv. Qhov pib tshwm sim kev siv nyob rau hauv tus neeg siv ncha yuav pib cov ntaub ntawv hloov mus rau theem ntawm kev sim los ntawm kev xa ib pob ntawv mus rau lub server.

Txoj cai xa ib pob ntawv mus rau tus neeg rau zaub mov yuav ua rau muaj kev sib txuas ntawm cov xwm txheej uas yuav cia li teem sijhawm tom qab ntawm qhov xwm txheej thiab uas yuav siv cov tshuab xa cov pob ntawv ncha raws li lub sijhawm uas peb tau teev tseg hauv tsab ntawv.

Yog li ntawd, txij li thaum peb xa tsuas yog ib pob ntawv (nco ntsoov, tus cwj pwm MaxPackets tau teeb tsa rau ib qho), cov saw ntawm cov xwm txheej tau pib los ntawm tus neeg siv khoom ping nkaus xwb yuav xaus thiab qhov simulation yuav mus rau hauv hom standby. Thaum qhov no tshwm sim, cov txheej xwm uas tau teem tseg yuav yog cov xwm txheej Tsis txhob rau server thiab tus neeg siv khoom. Thaum cov xwm txheej no raug tua, yuav tsis muaj cov xwm txheej sab laug rau kev ua haujlwm ntxiv thiab Simulator::Khiav yuav rov qab tswj. Lub simulation tiav lawm.

Txhua yam uas tseem tshuav yog los ntxuav tom qab koj tus kheej. Qhov no yog ua los ntawm kev hu rau lub ntiaj teb ua haujlwm Simulator:: Ua kom puas. Vim tias tus pab cuam ua haujlwm (lossis qis-qib ns-3 code) raug hu ua, uas tau teeb tsa kom cov hooks tau muab tso rau hauv lub simulator kom rhuav tshem txhua yam khoom uas tau tsim. Koj tsis tas yuav taug qab ib qho ntawm cov khoom no koj tus kheej - txhua yam koj tau ua yog hu Simulator:: Ua kom puas thiab tawm mus. ns-3 system yuav ua haujlwm nyuaj rau koj. Cov kab seem ntawm peb thawj tsab ntawv ns-3, first.cc, ua li ntawd:

Simulator::Destroy ();
return 0;
}

Thaum twg lub simulator yuav nres?

ns-3 yog qhov kev tshwm sim tsis sib xws (DE) simulator. Nyob rau hauv xws li ib tug simulator, txhua qhov kev tshwm sim yog txuam nrog nws lub sij hawm tua, thiab simulation txuas ntxiv los ntawm kev ua cov txheej xwm nyob rau hauv qhov kev txiav txim lawv tshwm sim raws li lub simulation zuj zus. Cov xwm txheej tuaj yeem ua rau cov xwm txheej yav tom ntej tau teem sijhawm (piv txwv li, lub sijhawm teem sijhawm tuaj yeem teem sijhawm nws tus kheej kom tiav suav hauv lub sijhawm tom ntej).

Cov xwm txheej pib feem ntau yog pib los ntawm qhov chaw, piv txwv li IPv6 yuav teem sijhawm nrhiav pom cov kev pabcuam hauv lub network, cov neeg nyob ze thov, thiab lwm yam. Daim ntawv thov teem caij rau thawj pob ntawv xa tuaj, thiab lwm yam. Thaum ib qho kev tshwm sim ua tiav, nws tuaj yeem tsim xoom, ib qho, lossis ntau qhov xwm txheej. Raws li kev simulation nce mus, cov xwm txheej tshwm sim, xaus lossis tsim cov tshiab. Lub simulation yuav nres cia li yog tias qhov kev tshwm sim queue yog khoob lossis kuaj pom qhov xwm txheej tshwj xeeb Tsis txhob. Kev tshwm sim Tsis txhob tsim los ntawm kev ua haujlwm Simulator:: nres (nres sijhawm).

Muaj ib qho xwm txheej uas Simulator:: Nres yog qhov tsim nyog los nres qhov simulation: thaum muaj cov xwm txheej txhawb nqa tus kheej. Kev txhawb nqa tus kheej (lossis rov ua dua) cov xwm txheej yog cov xwm txheej uas ib txwm rov teem sijhawm. Raws li qhov tshwm sim, lawv ib txwm khaws cov xwm txheej queue tsis khoob. Muaj ntau cov kev cai thiab cov qauv uas muaj cov xwm txheej rov ua dua, piv txwv li:

β€’ FlowMonitor - tshawb xyuas cov pob ntawv poob;

β€’ RIPng – ib ntus tshaj tawm ntawm routing rooj hloov tshiab;

β€’ lwm yam.

Thaum zoo li no Simulator:: nres tsim nyog los nres qhov simulation kom raug. Tsis tas li ntawd, thaum ns-3 nyob rau hauv emulation hom, RealtimeSimulator yog siv los synchronize lub simulation moos nrog lub tshuab moos, thiab Simulator:: nres tsim nyog los tso tseg txoj kev.

Ntau qhov kev simulation hauv phau ntawv kawm tsis hu Simulator:: nres meej meej, txij li thaum lawv txiav tawm tau thaum cov txheej xwm queued tag lawm. Txawm li cas los xij, cov kev pabcuam no tseem yuav lees txais Simulator::Tsev hu. Piv txwv li, cov lus qhia ntxiv hauv qab no hauv thawj qhov kev ua piv txwv yuav teem sijhawm kom nres ntawm 11 vib nas this:

+ Simulator::Stop (Seconds (11.0));
  Simulator::Run ();
  Simulator::Destroy ();
  return 0;
}

Cov saum toj no yuav tsis hloov tus cwj pwm ntawm qhov kev pab cuam no, txij li qhov kev simulation tshwj xeeb no xaus tom qab 10 vib nas this. Tab sis yog tias koj yuav tsum hloov lub sijhawm nres hauv cov lus hais saum toj no los ntawm 11 vib nas this mus rau 1 thib ob, koj yuav pom tias qhov simulation nres ua ntej cov zis tawm mus rau qhov screen (vim cov zis tshwm sim tom qab li 2 vib nas this ntawm lub sijhawm simulation).

Nws yog ib qho tseem ceeb uas yuav tau hu rau Simulator::Nres ua ntej hu Simulator::Khiav; txwv tsis pub Simulator:: Khiav yuav tsis rov qab los tswj rau qhov haujlwm tseem ceeb kom ua tiav qhov nres!

4.2.9 Tsim koj tsab ntawv

Peb tau tsim koj cov ntawv sau yooj yim tsis tseem ceeb. Txhua yam koj yuav tsum tau ua yog muab koj cov ntawv sau rau hauv daim ntawv qhia kos thiab nws yuav raug tsim yog tias koj khiav Waf. Wb sim. Rov qab mus rau cov ntawv teev npe saum toj kawg nkaus thiab luam tawm example/tutorial/first.cc mus rau catalog kos

$ cd ../.. 
$ cp examples/tutorial/first.cc scratch/myfirst.cc

Tam sim no tsim koj thawj tus qauv sau ntawv siv waf ua:

$ ./waf

Koj yuav tsum pom cov lus qhia tias koj thawj qhov piv txwv tau tsim tiav.

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
[614/708] cxx: scratch/myfirst.cc -> build/debug/scratch/myfirst_3.o
[706/708] cxx_link: build/debug/scratch/myfirst_3.o -> build/debug/scratch/myfirst
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (2.357s)

Tam sim no koj tuaj yeem khiav qhov piv txwv (nco ntsoov tias yog tias koj tsim koj qhov kev pab cuam hauv daim ntawv kos, ces koj yuav tsum khiav nws los ntawm kos):

$ ./waf --run scratch/myfirst

Koj yuav tsum pom cov txiaj ntsig zoo sib xws:

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.418s) Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2

Ntawm no koj tuaj yeem pom tias lub kaw lus tsim kom paub tseeb tias cov ntaub ntawv tau tsim thiab tom qab ntawd khiav nws. Koj pom cov khoom nkag ntawm tus neeg siv ncha qhia tias nws xa ib pob ntawv 1024-byte rau ncha server 10.1.1.2. Koj ib yam nkaus thiab pom cov khoom txiav tawm ntawm lub ncha server hais tias nws tau txais 1024 bytes los ntawm 10.1.1.1. Echo server ntsiag to replays pob ntawv thiab koj tuaj yeem pom nyob rau hauv tus neeg siv lub cav uas nws tau txais nws pob ntawv rov qab los ntawm lub server.

4.3 ns-3 Source code

Tam sim no koj tau siv qee tus neeg pab ns-3, koj tuaj yeem saib qee qhov ntawm qhov chaws uas siv cov haujlwm no. Cov lej tshiab tuaj yeem pom ntawm peb lub vev xaib server ntawm qhov txuas hauv qab no: https://gitlab.com/nsnam/ns-3-dev.git. Nyob ntawd koj yuav pom nplooj ntawv qhia txog Mercurial rau peb ns-3 kev loj hlob tsob ntoo. Nyob rau sab saum toj ntawm nplooj ntawv koj yuav pom ntau qhov txuas,

summary | shortlog | changelog | graph | tags | files

Mus tom ntej thiab xaiv cov ntaub ntawv txuas. Nov yog qhov theem sab saum toj ntawm feem ntau ntawm peb cov chaw cia khoom yuav zoo li:

drwxr-xr-x                               [up]
drwxr-xr-x                               bindings python  files
drwxr-xr-x                               doc              files
drwxr-xr-x                               examples         files
drwxr-xr-x                               ns3              files
drwxr-xr-x                               scratch          files
drwxr-xr-x                               src              files
drwxr-xr-x                               utils            files
-rw-r--r-- 2009-07-01 12:47 +0200 560    .hgignore        file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1886   .hgtags          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1276   AUTHORS          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 30961  CHANGES.html     file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 17987  LICENSE          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 3742   README           file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 16171  RELEASE_NOTES    file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 6      VERSION          file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 88110  waf              file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 28     waf.bat          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 35395  wscript          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 7673   wutils.py        file | revisions | annotate

Peb cov ntawv piv txwv yog nyob rau hauv phau ntawv teev npe piv txwv. Yog tias koj nyem rau ntawm cov piv txwv koj yuav pom cov npe ntawm cov npe subdirectories. Ib tug ntawm cov ntaub ntawv nyob rau hauv lub subdirectory kev qhia - first.cc. Yog koj nias rau ib.cc koj yuav pom cov cai uas koj nyuam qhuav kawm.

Lub hauv paus code yog nyob rau hauv cov directory Src. Koj tuaj yeem saib cov cai los ntawm txhaj rau ntawm lub npe npe lossis nyem rau ntawm cov ntaub ntawv txuas mus rau sab xis ntawm lub npe npe. Yog tias koj nyem rau ntawm src directory, koj yuav tau txais cov npe ntawm src subdirectories. Yog tias koj nyem rau ntawm qhov tseem ceeb subdirectory, koj yuav pom cov npe ntawm cov ntaub ntawv. Thawj cov ntaub ntawv koj yuav pom (thaum lub sijhawm sau phau ntawv qhia no) yog rho menyuam.h. Yog koj nyem qhov link rho menyuam.h, koj yuav raug xa mus rau qhov chaw ntaub ntawv rau rho menyuam.h, uas muaj cov macros uas muaj txiaj ntsig zoo rau kev tawm ntawm cov ntawv sau yog tias kuaj pom muaj qhov txawv txav. Lub hauv paus code rau cov neeg pab peb siv nyob rau hauv tshooj no tuaj yeem pom hauv phau ntawv qhia src/Applications/helper. Xav tias dawb poke ib ncig ntawm tsob ntoo directory kom paub seb qhov twg yog qhov twg thiab nkag siab txog cov qauv ntawm ns-3 cov kev pab cuam.

Tau qhov twg los: www.hab.com

Ntxiv ib saib