ns-3 network simulator maphunziro. Mutu 4

ns-3 network simulator maphunziro. Mutu 4
Chithunzi cha 1,2
Chithunzi cha 3

4 Kufotokozera mwachidule
4.1 Zitsanzo zazikulu
4.1.1 Node
4.1.2 Kugwiritsa ntchito
4.1.3 Channel
4.1.4 Net Chipangizo
4.1.5 Othandizira zakuthambo
4.2 Cholemba choyamba cha ns-3
4.2.1 Boilerplate kodi
4.2.2 plug-ins
4.2.3 ns3 malo a mayina
4.2.4 Kudula mitengo
4.2.5 Ntchito yaikulu
4.2.6 Kugwiritsa ntchito ma topology othandizira
4.2.7 Kugwiritsa Ntchito
4.2.8 Simulator
4.2.9 Kupanga zolemba zanu
4.3 ns-3 source kodi

Mutu 4

Malingaliro mwachidule

Chinthu choyamba chimene tiyenera kuchita tisanayambe kuphunzira kapena kulemba ns-3 code ndi kufotokoza mfundo zingapo zofunika ndi zotsalira mu dongosolo. Zambiri mwa izi zingawoneke zoonekeratu kwa ena, koma timalimbikitsa kutenga nthawi kuti muwerenge gawoli kuti muwonetsetse kuti mukuyamba pa maziko olimba.

4.1 Zitsanzo zazikulu

Mu gawoli, tiwona mawu ena omwe amagwiritsidwa ntchito kwambiri pa intaneti koma ali ndi tanthauzo lenileni mu ns-3.

4.1.1 Node

M'mawu a pa intaneti, chipangizo cha kompyuta chomwe chimalumikizana ndi netiweki chimatchedwa host kapena nthawi zina ma end system. Chifukwa ns-3 ndi choyimira cha netiweki osati choyimira pa intaneti, sitigwiritsa ntchito mwadala mawu akuti host, chifukwa izi zimagwirizana kwambiri ndi intaneti komanso ma protocol ake. M'malo mwake, timagwiritsa ntchito liwu lodziwika bwino, lomwe limagwiritsidwanso ntchito ndi ena oyeserera, omwe amachokera ku chiphunzitso cha graph: node (Mfundo).

Mu ns-3, kuchotsedwa kwapakompyuta kumatchedwa node. Izi zimayimiridwa mu C ++ ndi gulu la Node. Kalasi NodeNode (node) imapereka njira zosinthira mawonekedwe a zida zamakompyuta muzoyerekeza.

Muyenera kumvetsa Node ngati kompyuta yomwe mumawonjezera magwiridwe antchito. Muwonjezera zinthu monga mapulogalamu, ma protocol stacks, ndi makhadi ozungulira okhala ndi madalaivala omwe amalola kompyuta kugwira ntchito zothandiza. Timagwiritsa ntchito mtundu womwewo mu ns-3.

4.1.2 Kugwiritsa ntchito

Nthawi zambiri, mapulogalamu apakompyuta amagawidwa m'magulu awiri akuluakulu. Mapulogalamu amakonza zinthu zosiyanasiyana zamakompyuta monga kukumbukira, kuzungulira kwa purosesa, litayamba, maukonde, ndi zina zambiri malinga ndi mtundu wina wamakompyuta. Mapulogalamu apakompyuta sagwiritsa ntchito zinthuzi pochita ntchito zomwe zimapindulitsa mwachindunji wogwiritsa ntchito. Wogwiritsa ntchito nthawi zambiri amayendetsa pulogalamu kuti akwaniritse cholinga chake, chomwe chimapeza ndikugwiritsa ntchito zinthu zoyendetsedwa ndi pulogalamu yamapulogalamu.

Nthawi zambiri mzere wolekanitsa pakati pa dongosolo ndi mapulogalamu ogwiritsira ntchito umakokedwa pakusintha kwamwayi komwe kumachitika mumisampha yamakina ogwiritsira ntchito. ns-3 ilibe lingaliro lenileni la makina ogwiritsira ntchito motero palibe lingaliro lamwayi kapena kuyimba foni. Komabe, tili ndi lingaliro la pulogalamu. Monga momwe mu "dziko lenileni" mapulogalamu amagwiritsira ntchito makompyuta kuti agwire ntchito, mapulogalamu a ns-3 amayendetsa pa ns-3 node kuti athe kuwongolera zofananira m'dziko lofanana.

Mu ns-3, chidule cha pulogalamu ya ogwiritsa ntchito yomwe imapanga zochitika zina zachitsanzo ndi ntchito. Izi zikuyimiridwa mu C ++ ndi gulu la Application. Gulu la Application limapereka njira zosinthira mawonedwe amtundu wa ogwiritsa ntchito muzoyerekeza. Madivelopa akuyembekezeredwa kuti azipanga mwapadera kalasi ya Application m'lingaliro lokhazikika lazinthu kuti apange mapulogalamu atsopano. Mu phunziro ili, tidzagwiritsa ntchito zapadera za kalasi ya Application yotchedwa UdpEchoClientApplication ΠΈ UdpEchoServerApplication. Monga momwe mungayembekezere, mapulogalamuwa amapanga gulu la kasitomala/maseva omwe amagwiritsidwa ntchito kupanga ndi kubwereza mapaketi a netiweki.

4.1.3 Channel

M'dziko lenileni, mutha kulumikiza kompyuta ndi netiweki. Nthawi zambiri zoulutsira mawu zomwe zimatumizidwa pamanetiweki zimatchedwa njira. Mukalumikiza chingwe cha Ethernet pakhoma, ndiye kuti mukulumikiza kompyuta yanu ku ulalo wa Efaneti. M'dziko lofananira la ns-3, mfundo imalumikizidwa ndi chinthu chomwe chikuyimira njira yolumikizirana. Apa, kuchotsedwa kofunikira kwa subnetwork yolumikizirana kumatchedwa njira ndipo kuyimiridwa mu C ++ ndi gulu la Channel.

Kalasi ChannelChannel imapereka njira zoyendetsera kuyanjana kwa zinthu za subnet ndikulumikiza node kwa iwo. Makanema amathanso kukhala apadera ndi omwe amapanga mapulogalamu omwe ali ndi cholinga. Katswiri wamakina amatha kutengera chinthu chosavuta ngati waya. Njira yodzipatulira imathanso kutengera zinthu zovuta monga chosinthira chachikulu cha Ethernet kapena malo amitundu itatu odzaza ndi zopinga pamanetiweki opanda zingwe.

Tigwiritsa ntchito ma tchanelo apadera muphunziroli lotchedwa CsmaChannelCsmaChannel, PointToPointChannelPointToPointChannel ΠΈ WifiChannelWifiChannel. CsmaChannel, mwachitsanzo, imayimira mtundu wa netiweki yolumikizirana yomwe imagwiritsa ntchito malo olumikizirana ndi onyamulira angapo. Izi zimatipatsa magwiridwe antchito ngati Ethernet.

4.1.4 Net Chipangizo

Zikadakhala kuti ngati mukufuna kulumikiza kompyuta ndi netiweki, mumafunika kugula chingwe china cha netiweki ndi chipangizo cha Hardware chotchedwa (mu PC terminology) khadi yolumikizira yomwe imayenera kuyikidwa pakompyuta. Ngati zotumphukira khadi kukhazikitsa ntchito zina pamanetiweki, iwo amatchedwa maukonde mawonekedwe makhadi kapena maukonde makadi. Masiku ano, makompyuta ambiri amabwera ndi zida zophatikizira zolumikizira maukonde ndipo samawonedwa ndi ogwiritsa ntchito ngati zida zosiyana.

Khadi la netiweki silingagwire ntchito popanda woyendetsa mapulogalamu omwe amawongolera zida zake. Mu Unix (kapena Linux), kachidutswa kakang'ono kachipangizo kamakhala ngati chipangizo. Zipangizo zimayendetsedwa pogwiritsa ntchito madalaivala a zida, ndipo zida za netiweki (NICs) zimayendetsedwa pogwiritsa ntchito ma driver a network (madalaivala a chipangizo cha intaneti) ndipo palimodzi amatchedwa zida zama network (zida za ukonde). Mu Unix ndi Linux, mumatchula zida zapaintaneti ndi mayina monga eth0.

Mu ns-3, kuchotsedwa kwa chipangizo cha netiweki kumakwirira dalaivala wa pulogalamuyo komanso ma hardware omwe akutsatiridwa. Poyerekeza, chipangizo cha netiweki "chayikidwa" mu node kuti chizitha kulumikizana ndi ma node ena kudzera munjira. Monga kompyuta yeniyeni, node imatha kulumikizidwa kumayendedwe angapo kudzera pazida zingapo NetDevices.

Kutulutsa kwa netiweki kwa chipangizo kumayimiridwa mu C ++ ndi kalasi NetDevice. Kalasi NetDevice imapereka njira zoyendetsera zolumikizira ku Node ndi Channel zinthu; ndipo akhoza kukhala apadera ndi omanga m'lingaliro la mapulogalamu opangidwa ndi chinthu. Mu phunziro ili tidzagwiritsa ntchito mitundu ingapo yapadera ya NetDevice yotchedwa CsmaNetDevice, PointToPointNetDevice ΠΈ WifiNetDevice. Monga ngati adapter ya netiweki ya Ethernet idapangidwa kuti igwire ntchito ndi netiweki Efaneti, CsmaNetDevice opangidwa kuti azigwira nawo ntchito CsmaChannel, PointToPointNetDevice opangidwa kuti azigwira nawo ntchito PointToPointChannelndi WifiNetDevice - adapangidwa kuti azigwira nawo ntchito WifiChannel.

4.1.5 Othandizira zakuthambo

Mu netiweki yeniyeni, mupeza makompyuta omwe ali ndi makhadi a netiweki owonjezeredwa (kapena omangidwa). Mu ns-3 tinganene kuti muwona ma node okhala ndi NetDevices ophatikizidwa. Mu netiweki yayikulu yofananira, muyenera kukonza kulumikizana pakati pa zinthu zambiri Node, NetDevice ΠΈ Channel.

Kuyambira kulumikiza NetDevices ku node, NetDevices ku maulalo, kupatsa ma adilesi a IP, ndi zina zambiri. mu ns-3 ndi ntchito wamba, kuti izi zikhale zosavuta momwe tingathere timapereka otchedwa topology othandizira. Mwachitsanzo, kuti mupange NetDevice, muyenera kuchita zambiri za ns-3 kernel, kuwonjezera adilesi ya MAC, kukhazikitsa chipangizo cha netiweki mu Node, sinthani ma protocol a node, ndikulumikiza NetDevice ku Channel. Padzafunikanso ntchito yochulukirapo kuti mulumikizane ndi zida zingapo ndi maulalo amitundu yambiri ndikulumikiza ma netiweki omwe ali pa intaneti. Timapereka zinthu zothandizira topology zomwe zimaphatikiza machitidwe ambiriwa kukhala mtundu wosavuta kugwiritsa ntchito kuti muthandizire.

4.2 Cholemba choyamba cha ns-3

Ngati mwayika dongosolo monga momwe tafotokozera pamwambapa, mudzakhala ndi ns-3 kumasulidwa mu bukhu lotchedwa repos mu bukhu lanu lanyumba. Pitani ku chikwatu kumasulidwa

Ngati mulibe chikwatu chotere, zikutanthauza kuti simunatchule chikwatu chotuluka mukamapanga mtundu wa ns-3, pangani motere:
$ ./waf configure β€”build-profile=release β€”out=build/release,
$ ./waf kumanga

pamenepo muyenera kuwona chikwatu chofanana ndi ichi:

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

Pitani ku chikwatu zitsanzo/maphunziro. Muyenera kuwona fayilo yomwe ili pamenepo yotchedwa choyamba.cc. Ichi ndi script yomwe idzapangitse kulumikizana kosavuta pakati pa mfundo ziwiri ndikutumiza paketi imodzi pakati pa mfundo. Tiyeni tiwone mzere ndi mzere; kuti muchite izi, tsegulani choyamba.cc mumkonzi womwe mumakonda.

4.2.1 Boilerplate kodi
Mzere woyamba mu fayilo ndi mzere wa edit mode emacs. Imauza emacs zamitundu yosinthira (makodi kalembedwe) omwe timagwiritsa ntchito pamakhodi athu.

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

Nkhani imeneyi nthawi zonse imakhala yotsutsana, choncho tiyenera kukonza zolembedwazo kuti zichotsedwe nthawi yomweyo. Pulojekiti ya ns-3, monga ma projekiti akuluakulu ambiri, yatengera kalembedwe kamene kayenera kutsatira. Ngati mukufuna kupereka khodi yanu ku polojekitiyi, pamapeto pake mudzayenera kugwirizana ndi ns-3 code code, monga momwe yafotokozedwera mu fayilo. doc/codingstd.txt kapena kuwonetsedwa patsamba la projekiti: https://www.nsnam.org/develop/contributing-code/coding-style/.

Tikukulimbikitsani kuti muzolowerane ndi kawonekedwe ndi kamvekedwe ka ns-3 ndipo mugwiritse ntchito muyezowu nthawi zonse mukamagwiritsa ntchito khodi yathu. Gulu lonse lachitukuko ndi omwe adathandizira adagwirizana ndi izi atatha kung'ung'udza. Mzere wamachitidwe a emacs pamwambapa umapangitsa kuti zikhale zosavuta kupanga bwino ngati mukugwiritsa ntchito mkonzi wa emacs.

NS-3 simulator imaloledwa kugwiritsa ntchito GNU General Public License. Mudzawona mutu wovomerezeka wa GNU mufayilo iliyonse yogawa ns-3. Nthawi zambiri mudzawona chidziwitso cha kukopera kwa amodzi mwa mabungwe omwe akutenga nawo gawo mu pulojekiti ya ns-3 pamwamba pa zolemba za GPL ndi wolemba, zomwe zili pansipa.

/* 
* 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

Khodiyo imayamba ndi mawu angapo ophatikiza (onjezerani).

#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"

Kuti tithandize ogwiritsa ntchito ma script apamwamba kwambiri kuti athe kuthana ndi kuchuluka kwa mafayilo amutu omwe ali mudongosolo, timawagawa molingana ndi momwe amagwiritsidwira ntchito kukhala ma module akulu. Timapereka fayilo imodzi yamutu yomwe imabwezeretsa mobwerezabwereza mafayilo onse amutu omwe amagwiritsidwa ntchito mugawo lopatsidwa. M'malo mofufuza ndendende mutu womwe mukufuna komanso kuti mupeze mndandanda wolondola wazomwe mumadalira, tikukupatsani mwayi wotsitsa gulu la mafayilo mu granularity yayikulu. Si njira yabwino kwambiri, koma imapangitsa kuti zolemba zikhale zosavuta.

Iliyonse ya ns-3 ikuphatikiza mafayilo amayikidwa mu bukhu lotchedwa ns3 (build subdirectory) kuti mupewe kusamvana kwa dzina la fayilo panthawi yomanga. Fayilo ns3/core-module.h zimagwirizana ndi gawo la ns-3, lomwe mupeza m'ndandanda src/core mumasulidwe omwe mudayika. Pamndandanda wa bukhuli mudzapeza mafayilo ambiri amutu. Pamene mukuchita msonkhano, Waf imayika mafayilo amutu pagulu mu ns3 directory mu subdirectory kumanga/konza

Ngati mulibe chikwatu chotere, zikutanthauza kuti simunatchule chikwatu chotuluka mukamapanga mtundu wa ns-3, pangani motere:
$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf kumanga
kapena
$ ./waf configure --build-profile=optimized --out=build/wokongoletsedwa
$ ./waf kumanga

kapena kumanga/kukhathamiritsa, kutengera kasinthidwe kwanu. Waf idzapanganso gawo limodzi lophatikizira fayilo kuti ikweze mafayilo onse amutu wapagulu. Popeza mukutsatira kalozerayu mwachipembedzo, mwachita kale

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

kukonza pulojekiti kuti igwiritse ntchito zomanga zomwe zimaphatikizapo zitsanzo ndi mayeso. Inunso munatero

$ ./waf

kusonkhanitsa polojekiti. Kotero tsopano pamene inu muyang'ana mu chikwatu ../../build/debug/ns3, pamenepo mudzapeza, pakati pa ena, mafayilo amutu a ma module anayi omwe awonetsedwa pamwambapa. Mutha kuyang'ana zomwe zili m'mafayilowa ndikupeza kuti akuphatikiza mafayilo onse agulu omwe amagwiritsidwa ntchito ndi ma module ofanana.

4.2.3 ns3 malo a mayina

Mzere wotsatira mu script choyamba.cc ndi chilengezo chamalo a mayina.

using namespace ns3;

Ntchito ya ns-3 ikugwiritsidwa ntchito mu C ++ namespace yotchedwa ns3. Izi zimayika zidziwitso zonse zokhudzana ndi ns-3 kukhala kunja kwa dzina lapadziko lonse lapansi, zomwe mwachiyembekezo zithandizira kuphatikiza ndi ma code ena. Kugwiritsa ntchito C++ kumayambitsa dzina la ns-3 kudera lomwe lilipo (padziko lonse lapansi). Imeneyi ndi njira yabwino yonenera kuti pambuyo pa chilengezochi, simudzafunika kulemba ns3::scope permit operator pamaso pa nambala yanu yonse ya ns-3 kuti mugwiritse ntchito. Ngati simukudziwa malo a mayina, tchulani pafupifupi buku lililonse la C ++ ndikuyerekeza ns3 namespace pogwiritsa ntchito std namespace ndi chilengezo. using namespace std; mu zitsanzo zogwira ntchito ndi operekera zotsatira mtengo ndi mitsinje.

4.2.4 Kudula mitengo

Mzere wotsatira wa script ndi:

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

Tigwiritsa ntchito mawuwa ngati malo osavuta kukambirana ndi zolemba zathu Dothi la oxygen. Mukayang'ana patsamba la projekiti ya ns-3, mupeza ulalo wa Documentation mu bar ya navigation. Mukadina ulalowu mudzatengedwera kutsamba lathu lazolemba. Pali ulalo wa "Zotulutsidwa Zaposachedwa" zomwe zingakufikitseni ku zolembedwa za mtundu waposachedwa wa ns-3. Mukasankha ulalo wa "API Documentation", mudzatengedwera kutsamba la zolemba za ns-3 API.

Kumanzere kwa tsambali mudzapeza chithunzithunzi cha zolembazo. Malo abwino oyambira ndi "buku" la Modules ns-3 mumtengo wa navigation wa ns-3. Ngati muulula zigawo, mudzawona mndandanda wa zolemba za ns-3 modules. Monga tafotokozera pamwambapa, lingaliro la module pano likugwirizana mwachindunji ndi mafayilo omwe ali mu module pamwambapa. Njira yodula mitengo ya ns-3 ikukambidwa mugawo Kugwiritsa Ntchito Logging Module, kotero tibwereranso ku nthawi ina mu phunziro ili, koma mutha kuphunzira za mawu omwe ali pamwambawa poyang'ana gawoli. pakatikenako ndikutsegula bukulo Zida zoyesererandiyeno kusankha tsamba Kulemba. Dinani pa Kulemba.

Muyenera kuwonanso zolembedwazo Dothi la oxygen za module Kulemba. Pamndandanda wamakina pamwamba pa tsamba, muwona cholowa cha NS_LOG_COMPONENT_DEFINE. Musanadina ulalo, onetsetsani kuti mwayang'ana "Mafotokozedwe Atsatanetsatane" a gawo lolembetsa kuti mumvetsetse momwe zimagwirira ntchito nthawi zonse. Kuti muchite izi mutha kupukusa pansi kapena kusankha "More ..." pansi pa tchati.

Mukakhala ndi lingaliro lazomwe zikuchitika, pitilizani kuyang'ana zolemba za NS_LOG_COMPONENT_DEFINE. Sindingabwereze zolembedwa pano, koma kunena mwachidule, mzerewu ukulengeza gawo lolembetsa lotchedwa FirstScriptExample, zomwe zimakulolani kuti muthe kapena kuletsa kudulidwa kwa mauthenga potengera dzina.

4.2.5 Ntchito yaikulu

M'mizere yotsatira ya script muwona,

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

Uku ndikungolengeza ntchito yayikulu ya pulogalamu yanu (script). Mofanana ndi pulogalamu iliyonse ya C ++, muyenera kufotokozera ntchito yaikulu, izi zimachitidwa poyamba. Palibe chapadera pano. Zolemba zanu za ns-3 ndi pulogalamu ya C++ chabe. Mzere wotsatirawu umayika kusintha kwa nthawi kukhala 1 nanosecond, yomwe ndiyosakhazikika:

Time::SetResolution (Time::NS);

Kusintha kwa nthawi, kapena kungosintha, ndiye nthawi yaying'ono kwambiri yomwe ingagwiritsidwe ntchito (kusiyana kocheperako kowoneka pakati pa nthawi ziwiri). Mukhoza kusintha kusamvana ndendende kamodzi. Makina omwe amapereka kusinthasintha uku amawononga kukumbukira, kotero kuti chiganizocho chikakhazikitsidwa momveka bwino, timamasula kukumbukira, kuteteza zosintha zina. (Ngati simuyika chiganizocho momveka bwino, chidzasintha kukhala nanosecond imodzi ndipo kukumbukira kudzamasulidwa pamene kuyerekezera kuyambika.)

Mizere iwiri yotsatirayi ya script imagwiritsidwa ntchito kuti athandizire magawo awiri odula mitengo omwe amapangidwa kuti agwiritse ntchito EchoClient ΠΈ EchoServer:

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

Ngati muwerenga zolemba za gawo la Kudula mitengo, muwona kuti pali magawo angapo odula mitengo/granularity omwe mungathe kuwathandiza pagawo lililonse. Mizere iwiri iyi yamakhodi imathandizira kutsitsa mitengo ku INFO level kwa makasitomala ndi ma seva. Pa mlingo uwu, ntchito kusindikiza mauthenga monga kutumiza ndi kulandira mapaketi pa kayeseleledwe.

Tsopano tifika pabizinesi yopanga topology ndikuyendetsa kayeseleledwe. Timagwiritsa ntchito zinthu zothandizira topology kuti ntchitoyi ikhale yosavuta momwe tingathere.

4.2.6 Kugwiritsa ntchito ma topology othandizira

Mizere iwiri yotsatira ya code mu script yathu idzapanga zinthu za Node ns-3 zomwe zidzayimire makompyuta muyeso.

NodeContainer nodes;
nodes.Create (2);

Tisanapitirize, tiyeni tipeze zolemba za kalasi NodeContainer. Njira ina yofikira zolemba za kalasi yomwe mwapatsidwa ndi kudzera pa tabu makalasi pamasamba Dothi la oxygen. Ngati muli ndi Doxygen yotsegulidwa kale, ingoyendani pamwamba pa tsamba ndikusankha Makalasi tabu. Muyenera kuwona ma tabu atsopano, amodzi omwe ndi mndandanda wamakalasi. Pansi pa tabu iyi muwona mndandanda wamakalasi onse a ns-3. Mpukutu pansi mpaka ns3::NodeContainer. Mukapeza kalasi, sankhani kuti mupite ku zolemba za kalasi.

Monga tikukumbukira, chimodzi mwazofunikira zathu ndi node. Zimayimira kompyuta yomwe tiwonjezerepo zinthu monga ma protocol, mapulogalamu, ndi makhadi ozungulira. Wothandizira Topology NodeContainer imapereka njira yabwino yopangira, kuyang'anira ndi kupeza zinthu zilizonse Node, zomwe timapanga kuti tigwiritse ntchito fanizo. Mzere woyamba pamwambapa umangolengeza NodeContainer, zomwe timazitcha ma node. Mzere wachiwiri umayitanitsa Pangani njira pa node chinthu ndikufunsa chidebe kuti chipange mfundo ziwiri. Monga tafotokozera mu Dothi la oxygen, chidebecho chimapempha dongosolo la ns-3 kuti lipange zinthu ziwiri Node ndikusunga zolozera kuzinthu izi mkati.

Ma node opangidwa mu script sachita kanthu panobe. Gawo lotsatira pomanga topology ndikulumikiza node zathu ku netiweki. Njira yosavuta yolumikizira maukonde yomwe timathandizira ndikulumikizana kolunjika pakati pa node ziwiri. Tsopano tipanga kulumikizana koteroko.

PointToPointHelper

Timapanga kugwirizana kwa mfundo ndi mfundo pogwiritsa ntchito chitsanzo chodziwika bwino, pogwiritsa ntchito chinthu chothandizira topology kuti tichite ntchito yotsika yofunikira pa kugwirizana. Kumbukirani kuti ziganizo zathu ziwiri zazikulu NetDevice ΠΈ Channel. M'dziko lenileni, mawuwa amafanana ndi makhadi ozungulira ndi zingwe zapaintaneti. Kawirikawiri, zinthu ziwirizi zimagwirizana kwambiri, ndipo palibe amene angadalire kugawana, mwachitsanzo, zipangizo Efaneti panjira yopanda zingwe. Othandizira athu a topology amatsata ubale wapamtima chifukwa chake mugwiritsa ntchito chinthu chimodzi muzochitika izi PointToPointHelper pakukhazikitsa ndi kulumikiza zinthu za ns-3 PointToPointNetDevice ΠΈ PointToPointChannel. Mizere itatu yotsatira mu script:

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

Mzere woyamba,

PointToPointHelper pointToPoint;

amapanga chitsanzo cha chinthu pamtengo PointToPointHelper. Pamawonedwe apamwamba mzere wotsatirawu,

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

amauza chinthucho PointToPointHelper gwiritsani ntchito mtengo "5 Mbit/s" (ma megabit asanu pa sekondi imodzi) ngati "DataRate".

Kuchokera pamalingaliro achindunji, chingwe "DataRate" chikufanana ndi zomwe timachitcha kuti mawonekedwe PointToPointNetDevice. Ngati muyang'ana Dothi la oxygen za kalasi ns3::PointToPointNetDevice ndi zolembedwa za njirayo GetTypeId mudzapeza mndandanda wa makhalidwe kufotokozedwa kwa chipangizo. Zina mwa izo padzakhala chikhalidwe β€œDataRate" Zinthu zambiri zowoneka ndi ogwiritsa ntchito ns-3 zili ndi mindandanda yofananira yamakhalidwe. Timagwiritsa ntchito njirayi kuti tikhazikitse mosavuta kuyerekezera popanda kubwezeretsanso, monga muwona mu gawo lotsatira.

Zofanana ndi "DataRate" mu PointToPointNetDevice, mupeza "Delay" yolumikizidwa ndi PointToPointChannel. Mzere womaliza

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

akuti PointToPointHelper gwiritsani ntchito mtengo wa "2 ms" (ma milliseconds awiri) monga mtengo wochedwetsa kufalikira kwa ulalo wa nsonga ndi nsonga yomwe imapanga pambuyo pake.

NetDeviceContainer

Pakali pano tili mu script NodeContainer, yomwe ili ndi mfundo ziwiri. Tili ndi PointToPointHelper, yomwe imakonzedwa kuti ipange zinthu PointToPointNetDevices ndi kuwalumikiza pogwiritsa ntchito chinthu cha PointToPointChannel. Monga momwe tidagwiritsira ntchito chinthu chothandizira cha NodeContainer topology kupanga ma node, tidzafunsa PointToPointHelper mutichitire ntchito yokhudzana ndi kupanga, kukonza ndi kukhazikitsa zida zathu. Timafunikira mndandanda wazinthu zonse zolengedwa NetDevice, kotero timagwiritsa ntchito NetDeviceContainer kuwasunga monga momwe tidachitira NodeContainer kusunga mfundo zomwe tinapanga. Mizere iwiri yotsatira ya code,

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

malizani kukonza chipangizo ndi tchanelo. Mzere woyamba umalengeza chidebe cha chipangizo chomwe chatchulidwa pamwambapa, ndipo chachiwiri chimagwira ntchito yayikulu. Njira Sakani chinthu PointToPointHelper amavomereza NodeContainer ngati parameter. Mkati NetDeviceContainer pa node iliyonse yomwe ili mkati NodeContainer idapangidwa (pakulankhulana kolunjika payenera kukhala ziwiri ndendende) PointToPointNetDevice imapangidwa ndikusungidwa mu chidebe cha chipangizo. PointToPointChannel adalengedwa ndipo awiri adalumikizidwa kwa icho PointToPointNetDevices. Pambuyo popanga zinthu, mawonekedwewo amasungidwa mkati PointToPointHelper, amagwiritsidwa ntchito poyambitsa zikhumbo zofananira muzinthu zopangidwa.

Atayimba foni pointToPoint.Install (node) tidzakhala ndi ma node awiri, iliyonse ili ndi chipangizo cholumikizira mfundo ndi mfundo imodzi pakati pawo. Zida zonsezi zidzakonzedwa kuti zitumize deta pa liwiro la ma megabits asanu pa sekondi imodzi ndikuchedwa kutumizira ma milliseconds awiri pa njira.

InternetStackHelper

Tsopano tili ndi ma node ndi zida zokonzedwa, koma ma node athu alibe ma protocol omwe adayikidwa. Mizere iwiri yotsatira ya code idzasamalira izi.

InternetStackHelper stack;
stack.Install (nodes);

InternetStackHelper - ndi wothandizira topology pama stacks a intaneti, ofanana ndi PointToPointHelper pazida zapaintaneti za point-to-point. Njira Sakani imatenga NodeContainer ngati parameter. Ikaphedwa, idzakhazikitsa stack ya intaneti (TCP, UDP, IP, etc.) pa node iliyonse ya chidebe.

IPv4AddressHelper

Kenako tiyenera kugwirizanitsa zida zathu ndi ma adilesi a IP. Timapereka wothandizira topology kuti azitha kuyang'anira ma adilesi a IP. API yokhayo yomwe ikuwonekera kwa wogwiritsa ntchito ndikuyika adilesi ya IP yoyambira ndi netmask kuti agwiritse ntchito pogawa ma adilesi enieni (izi zimachitika pamlingo wocheperako mkati mwa wothandizira). Mizere iwiri yotsatira ya code muzolemba zathu zachitsanzo choyamba.cc,

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

lengezani chinthu chothandizira adilesi ndikuwuuza kuti ikuyenera kuyamba kugawa ma adilesi a IP kuchokera pa netiweki 10.1.1.0, pogwiritsa ntchito 255.255.255.0 bitmask kuti idziwe. Mwachikhazikitso, maadiresi omwe aperekedwa adzayambira pa imodzi ndikuwonjezeka mokhazikika, kotero kuti adilesi yoyamba yoperekedwa kuchokera ku maziko awa idzakhala 10.1.1.1, kenako 10.1.1.2, ndi zina zotero. Zoonadi, pamlingo wochepa, dongosolo la ns-3 limakumbukira ma adilesi onse a IP omwe adapatsidwa ndikupanga cholakwika chowopsa ngati mwangozi mupanga momwe adilesi yomweyi imapangidwira kawiri (mwa njira, cholakwika ichi ndi chovuta kuchichotsa).

Mzere wotsatira wa code,

Ipv4InterfaceContainer interfaces = address.Assign (devices);

imagwira ntchito yeniyeni ya adilesi. Mu ns-3 timakhazikitsa kulumikizana pakati pa adilesi ya IP ndi chipangizo chogwiritsa ntchito chinthucho IPv4 Interface. Monga momwe nthawi zina timafunikira mndandanda wa zida zapaintaneti zopangidwa ndi wothandizira kuti azigwiritsa ntchito pambuyo pake, nthawi zina timafunikira mndandanda wazinthu IPv4 Interface. IPv4InterfaceContainer imapereka magwiridwe antchito awa.

Tinapanga netiweki ya point-to-point, yokhala ndi ma stacks omwe adayikidwa ndi ma adilesi a IP omwe adaperekedwa. Tsopano tikufunika mapulogalamu mu node iliyonse kuti apange magalimoto.

4.2.7 Kugwiritsa Ntchito

Chimodzi mwazinthu zazikulu za dongosolo la ns-3 ndi ntchito (ntchito). Munkhaniyi tikugwiritsa ntchito mitundu iwiri yoyambira ntchito ns-3 woyitanira UdpEchoServerApplication ΠΈ UdpEchoClientApplication. Monga momwe zinalili kale, timagwiritsa ntchito zinthu zothandizira kukonza ndikuwongolera zinthu zoyambira. Apa timagwiritsa ntchito UdpEchoServerHelper ΠΈ UdpEchoClientHelper zinthu zopangitsa moyo wathu kukhala wosavuta.

UdpEchoServerHelper

Mizere yotsatirayi ya code mu script yathu yoyamba.cc imagwiritsidwa ntchito kukonza pulogalamu ya UDP echo seva pa imodzi mwa mfundo zomwe tidapanga kale.

UdpEchoServerHelper echoServer (9);

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

Mzere woyamba wa kachidindo muzachidule pamwambapa umapanga UdpEchoServerHelper. Monga mwachizolowezi, iyi si ntchito yokha, ndi chinthu chomwe chimatithandiza kupanga mapulogalamu enieni. Imodzi mwamisonkhano yathu ndiyo kupereka zikhumbo zofunika kwa womanga chinthu chothandizira. Pankhaniyi, wothandizira sangathe kuchita chilichonse chothandiza pokhapokha atapatsidwa nambala ya doko yomwe seva idzamvera mapaketi, nambalayi iyeneranso kudziwika kwa kasitomala. Pankhaniyi, timadutsa nambala ya doko kwa womanga wothandizira. Womanga nayenso amangochita SetAttribute ndi mtengo wodutsa. Pambuyo pake, ngati mungafune, mutha kugwiritsa ntchito SetAttribute kuti muyike mtengo wosiyana ndi mawonekedwe a Port.

Monga zinthu zina zambiri zothandizira, chinthucho UdpEchoServerHelper ali ndi njira Sakani. Kuchita njirayi kumapanga pulogalamu yoyambira ya seva ya echo ndikuyimanga kwa wolandirayo. Chochititsa chidwi ndi njira Sakani amavomereza NodeContainer monga parameter monga enawo Sakani njira zomwe taziwona.

Kutembenuka kwa C ++ kosamveka kumagwira ntchito pano kumatenga zotsatira za njirayi node.Pezani(1) (chomwe chimabwezera cholozera chanzeru ku chinthu cha node - Ptr ) ndikuchigwiritsa ntchito popanga chinthu chosadziwika NodeContainerzomwe kenako zimaperekedwa ku njira Sakani. Ngati simungathe kudziwa mu code C ++ kuti ndi njira iti yomwe siginecha imapangidwa ndi kuchitidwa, ndiye yang'anani pakati pa zosinthazo.

Tsopano ife tikuwona izo echoServer.Install za kukhazikitsa pulogalamu UdpEchoServerApplication pa zopezeka mu NodeContainerzomwe timagwiritsa ntchito poyang'anira mfundo zathu, mfundo ndi ndondomeko 1. Njira Sakani adzabwezera chidebe chomwe chili ndi zolozera kuzinthu zonse (panthawiyi imodzi, popeza tidadutsa osadziwika NodeContainer, yokhala ndi mfundo imodzi) yopangidwa ndi wothandizira.

Mapulogalamu ayenera kutchula nthawi yoyambira kupanga magalimoto "yamba" ndipo angafunikire kutchulanso nthawi yoyenera kuyimitsa "Imani". Timapereka njira zonse ziwiri. Nthawi izi zimakhazikitsidwa pogwiritsa ntchito njira ApplicationContainer Start ΠΈ Imani. Njirazi zimavomereza magawo amtundu Time. Pankhaniyi timagwiritsa ntchito kutsatizana momveka bwino kwa kutembenuka kwa C ++ kutenga C++ awiri 1.0 ndikusintha kukhala chinthu cha tns-3 Time chomwe chimagwiritsa ntchito chinthu cha Seconds kuti chisinthe kukhala masekondi. Kumbukirani kuti malamulo otembenuka amatha kulamulidwa ndi wolemba chitsanzo, ndipo C ++ ili ndi malamulo ake, kotero simungathe kuwerengera nthawi zonse kuti magawowo akutembenuzidwa momwe mukuyembekezera. Mizere iwiri

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

zipangitsa kuti pulogalamu ya echo seva iyambike (kuyatsa zokha) sekondi imodzi mukayeseza kuyamba ndikuyimitsa (kuzimitsa) pakatha masekondi khumi a kuyerekezera. Chifukwa chakuti tinalengeza chochitika chofananira (choyimitsa ntchito), chomwe chidzachitidwa mumasekondi khumi, osachepera masekondi khumi a ntchito ya intaneti adzafanizidwa.

UdpEchoClientHelper

Client Application Tchulani kukhazikitsidwa m'njira yofanana ndi seva. Pali chinthu choyambira UdpEchoClientApplication, yomwe imayendetsedwa
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));;

Komabe, kwa kasitomala wa echo tiyenera kukhazikitsa zikhalidwe zisanu. Makhalidwe awiri oyambirira amaikidwa pa nthawi yolenga UdpEchoClientHelper. Timadutsa magawo omwe amagwiritsidwa ntchito (mkati mwa wothandizira) kuti akhazikitse zikhumbozo "RemoteAddress" ΠΈ "RemotePort" mogwirizana ndi mgwirizano wathu kupereka magawo ofunikira kwa womanga wothandizira.

Tikumbukenso kuti tinagwiritsa ntchito IPv4InterfaceContainer kutsatira ma adilesi a IP omwe tapereka ku zida zathu. Mawonekedwe opanda pake mu chidebe cholumikizira amafanana ndi adilesi ya IP ya node yopanda pake mu chidebe cha node. Mawonekedwe oyamba mu chidebe cholumikizira amafanana ndi adilesi ya IP ya node yoyamba mu chidebe cha node. Kotero, mu mzere woyamba wa code (pamwambapa), timapanga wothandizira ndikuwuza kuti adiresi yakutali ya kasitomala idzakhala adiresi ya IP yomwe imaperekedwa kwa wolandira kumene seva ili. Timanenanso kuti tiyenera kukonza mapaketi kuti atumizidwe ku port 9.

Makhalidwe a "MaxPackets" amauza kasitomala kuchuluka kwa mapaketi omwe tingatumize panthawi yoyerekeza. Makhalidwe a "Interval" amauza kasitomala kuti adikire nthawi yayitali bwanji pakati pa mapaketi, ndipo mawonekedwe a "PacketSize" amauza kasitomala kuchuluka kwa malipiro a paketiyo. Ndi kuphatikiza kwamtunduwu timauza kasitomala kuti atumize paketi imodzi ya 1024-byte.

Monga ndi seva ya echo, timayika zikhalidwe za kasitomala wa echo Start ΠΈ Imani, koma apa timayambitsa kasitomala kachiwiri pambuyo poti seva itsegulidwa (masekondi awiri pambuyo poyambira kuyerekezera).

4.2.8 Simulator

Pa nthawiyi tiyenera kuyendetsa kayeseleledwe. Izi zimachitika pogwiritsa ntchito ntchito yapadziko lonse lapansi Woyeserera :: Thamangani.

Simulator::Run ();

Pamene tinkatchula kale njira,

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

tinakonza zochitika mu simulator pa masekondi 1,0, 2,0 masekondi, ndi zochitika ziwiri pa masekondi 10,0. Atatha kuyimba Woyeserera :: Thamangani, dongosololi lidzayamba kuwona mndandanda wa zochitika zomwe zakonzedwa ndikuzipanga. Idzayatsa chochitika pambuyo pa masekondi 1,0, zomwe ziyambitsa pulogalamu ya echo seva (chochitikachi chikhoza kukonza zochitika zina zambiri). Idzayatsa chochitika chomwe chakonzedwa pa t=2,0 masekondi omwe adzayambitsa pulogalamu ya echo kasitomala. Apanso, chochitika ichi chikhoza kukhala ndi zochitika zambiri zokonzekera. Kukhazikitsa koyambira mu kasitomala wa echo kudzayamba gawo lotengera deta potumiza paketi ku seva.

Mchitidwe wotumiza paketi ku seva udzayambitsa zochitika zambiri zomwe zidzakonzedweratu kuseri kwa zochitikazo ndi zomwe zidzagwiritse ntchito makina otumizira paketi ya echo malinga ndi nthawi yomwe tayika mu script.

Zotsatira zake, popeza tikutumiza paketi imodzi yokha (kumbukirani, mawonekedwe MaxPackets idakhazikitsidwa ku imodzi), mndandanda wa zochitika zomwe zimayambitsidwa ndi ping imodzi yokha yamakasitomala zidzatha ndipo kuyerekezera kudzalowa mumayendedwe oyimilira. Izi zikachitika, zochitika zotsalira zomwe zakonzedwa zidzakhala zochitika Imani kwa seva ndi kasitomala. Izi zikachitika, sipadzakhalanso zochitika zomwe zidzasiyidwe kuti zipitirire kukonzedwa komanso Woyeserera :: Thamangani adzabwezeretsa ulamuliro. Kuyerekezera kwatha.

Chotsalira ndikuyeretsa nokha. Izi zimachitika poyitanitsa ntchito yapadziko lonse lapansi Simulator:: Kuwononga. Chifukwa ntchito zothandizira (kapena zotsika ns-3 code) zimatchedwa, zomwe zimakonzedwa kuti mbewa zilowetsedwe mu simulator kuti ziwononge zinthu zonse zomwe zinalengedwa. Simunafunikire kutsatira chilichonse mwazinthu izi - zomwe mumayenera kuchita ndikuyimba foni Simulator:: Kuwononga ndi kutuluka. Dongosolo la ns-3 lidzakuchitirani izi molimbika. Mizere yotsala ya zolemba zathu zoyamba za ns-3, first.cc, chitani izi:

Simulator::Destroy ();
return 0;
}

Kodi woyeseza ayimitsa liti?

ns-3 ndi choyimira cha discrete (DE). Mu sewero loterolo, chochitika chilichonse chimalumikizidwa ndi nthawi yake yochitira, ndipo kuyerekezera kumapitilira pokonza zochitika momwe zimachitikira momwe kuyerekezera kukuyendera. Zochitika zitha kupangitsa kuti zochitika zamtsogolo zikonzedwe (mwachitsanzo, chowerengera nthawi chingathe kudzikonza kuti chimalizitse kuwerengera mumgawo wotsatira).

Zochitika zoyambirira nthawi zambiri zimayambitsidwa ndi bungwe, mwachitsanzo IPv6 imakonza zopezeka pa intaneti, zopempha zoyandikana nawo, ndi zina. Pulogalamuyi imakonza chochitika choyamba kutumiza paketi, ndi zina zotero. Chochitika chikakonzedwa, chimatha kupanga ziro, chimodzi, kapena zina zambiri. Pamene kuyerekezera kukupitirira, zochitika zimachitika, mwina kutha kapena kupanga zatsopano. Kuyerekezako kumangoyima zokha ngati mzere wa zochitika ulibe kanthu kapena chochitika chapadera chadziwika Imani. Chochitika Imani zopangidwa ndi ntchito Woyeserera :: Imani (nthawi yoyimitsa).

Pali chochitika chomwe Simulator ::Imani ndikofunikira kwambiri kuti muyimitse kuyerekezera: pakakhala zochitika zodzilimbitsa. Zochitika zodzithandizira (kapena zobwerezabwereza) ndizochitika zomwe zimasinthidwa nthawi zonse. Zotsatira zake, nthawi zonse amasunga mzere wa zochitikazo kukhala wopanda kanthu. Pali ma protocol ambiri ndi ma module okhala ndi zochitika zobwerezabwereza, mwachitsanzo:

β€’ FlowMonitor - kuyang'ana nthawi ndi nthawi kwa mapaketi otayika;

β€’ RIPng - kuwulutsa kwanthawi ndi nthawi kwa zosintha zamatebulo;

β€’ ndi zina.

Zikatero Woyeserera :: Imani zofunika kuyimitsa kayeseleledwe molondola. Kuphatikiza apo, ns-3 ikakhala mumayendedwe otsanzira, RealtimeSimulator imagwiritsidwa ntchito kulumikiza wotchi yofananira ndi wotchi yamakina, ndi Woyeserera :: Imani zofunika kuyimitsa ndondomekoyi.

Mapulogalamu ambiri oyerekeza omwe ali m'buku lophunzirira samayitana Woyeserera :: Imani momveka bwino, chifukwa amazimitsa zokha pamene zochitika zomwe zili pamzere zatha. Komabe, mapulogalamuwa avomerezanso Simulator::Imitsa kuyimba. Mwachitsanzo, chiganizo chotsatirachi mu pulogalamu yachitsanzo choyamba chikhoza kukonza kuyimitsidwa kwa masekondi 11:

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

Zomwe zili pamwambazi sizingasinthe machitidwe a pulogalamuyi, chifukwa kayesedwe kameneka kamatha pambuyo pa masekondi 10. Koma ngati mutasintha nthawi yoyimitsa m'mawu omwe ali pamwambawa kuchokera pa masekondi 11 kufika pa 1 sekondi imodzi, mungazindikire kuti kuyerekezera kumayima musanatulutse chinsalu (popeza zotsatirazo zimachitika pambuyo pa masekondi a 2 a nthawi yoyerekezera).

Ndikofunikira kuyimbira Simulator::Imani musanayimbe Simulator::Thamanga; mwinamwake Simulator :: Thamangani simungabwezerenso kuwongolera ku pulogalamu yayikulu kuti muyimitse!

4.2.9 Kupanga zolemba zanu

Tapanga kupanga zolemba zanu zosavuta kukhala zazing'ono. Zomwe muyenera kuchita ndikuyika zolemba zanu muzolembera zoyambira ndipo zidzangomangidwa ngati mutathamanga Waf. Tiyeni tiyese. Bwererani ku chikwatu chapamwamba ndikujambula zitsanzo/maphunziro/first.cc ku katalogu Sanga

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

Tsopano pangani script yanu yoyamba pogwiritsa ntchito waf:

$ ./waf

Muyenera kuwona mauthenga osonyeza kuti chitsanzo chanu choyamba chinapangidwa bwino.

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)

Tsopano mutha kuyendetsa chitsanzo (zindikirani kuti ngati mupanga pulogalamu yanu pamndandanda woyambira, ndiye kuti muyenera kuyendetsa kuchokera Sanga):

$ ./waf --run scratch/myfirst

Muyenera kuwona zotsatira zofanana:

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

Apa mutha kuwona kuti dongosolo lomanga limatsimikizira kuti fayilo yamangidwa ndikuyiyendetsa. Mukuwona cholowa pa kasitomala wa echo chikuwonetsa kuti idatumiza paketi imodzi ya 1024-byte ku seva ya echo 10.1.1.2. Inunso mukuwona chigawo chodula mitengo pa seva ya echo kunena kuti idalandira ma byte 1024 kuchokera ku 10.1.1.1. Seva ya echo imabwerezanso paketiyo mwakachetechete ndipo mutha kuwona mu chipika cha kasitomala wa echo kuti idalandira paketi yake kuchokera pa seva.

4.3 ns-3 source kodi

Tsopano popeza mwagwiritsa ntchito othandizira ena a ns-3, mutha kuyang'ana ma code ena omwe amagwiritsira ntchito izi. Khodi yaposachedwa ikhoza kuwonedwa pa seva yathu yapaintaneti pa ulalo wotsatirawu: https://gitlab.com/nsnam/ns-3-dev.git. Kumeneko muwona tsamba lachidule la Mercurial la mtengo wathu wachitukuko wa ns-3. Pamwamba pa tsamba muwona maulalo angapo,

summary | shortlog | changelog | graph | tags | files

Pitani patsogolo ndikusankha ulalo wa mafayilo. Izi ndi zomwe gawo lapamwamba lazosungira zathu zambiri liziwoneka:

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

Zolemba zathu zachitsanzo zili m'ndandanda zitsanzo. Mukadina pazitsanzo muwona mndandanda wama subdirectories. Imodzi mwamafayilo omwe ali mu subdirectory phunziro - choyamba.cc. Ngati inu alemba pa choyamba.cc mudzawona code yomwe mwaphunzira.

Khodi yoyambira imapezeka makamaka m'ndandanda src. Mutha kuwona kachidindo koyambira podina dzina lachikwatu kapena kudina ulalo wamafayilo kumanja kwa dzina lachikwatu. Mukadina pa src directory, mupeza mndandanda wama subdirectories a src. Mukadina pa subdirectory yayikulu, mupeza mndandanda wamafayilo. Fayilo yoyamba yomwe mudzawone (panthawi yolemba bukuli) ndi kuchotsa.h. Mukadina ulalo kuchotsa.h, mudzatumizidwa ku fayilo yoyambira kuchotsa.h, yomwe ili ndi ma macros othandiza potuluka ngati zinthu zachilendo zapezeka. Khodi yochokera kwa othandizira omwe tagwiritsa ntchito m'mutu uno ikupezeka m'ndandanda src/Applications/helper. Khalani omasuka kusuntha mozungulira mtengo kuti mudziwe komwe kuli komanso kumvetsetsa kalembedwe ka mapulogalamu a ns-3.

Source: www.habr.com

Kuwonjezera ndemanga