Akoranga simulator whatunga ns-3. Upoko 3

Akoranga simulator whatunga ns-3. Upoko 3
pene 1,2

3 Te timatanga
3.1 Tirohanga
3.2 Nga whakaritenga o mua
3.2.1 Te tango i te tukunga ns-3 hei puna puna
3.3 Te tango i te ns-3 ma te whakamahi i te Git
3.3.1 Uta ana i te ns-3 ma te Bake
3.4 Huihuinga ns-3
3.4.1 Hanga whare me build.py
3.4.2 Hangahanga me te Tunu
3.4.3 Hanga ki te Waf
3.5 Whakamatau ns-3
3.6 Te whakahaere i te tuhinga
3.6.1 Tohenga rarangi whakahau
3.6.2 Patuiro
3.6.3 Whaiaronga mahi

Upoko 3

Te tiimata

Ko te tikanga o tenei upoko ki te whakarite i te kaipanui ki te timata ki te rorohiko kare ano pea i whakauruhia te ns-3. Ka kapi i nga papaaho tautoko, nga whakaritenga o mua, me pehea te whiwhi ns-3, me pehea te hanga ns-3, me pehea te whakamatautau i to hanga me te whakahaere kaupapa ngawari.

3.1 Tirohanga

Ka hangaia te simulator ns-3 hei punaha o nga whare pukapuka rorohiko mahi tahi. I te wa o te huihuinga, ka hono te waehere o nga papatono kaiwhakamahi ki enei whare pukapuka. Ka whakamahia nga reo C++, Python ranei hei tuhi i nga kaupapa ritenga.

Ka tohatohahia a Ns-3 hei waehere puna, ko te tikanga me whai taiao whanaketanga rorohiko te punaha whaainga kia taea ai te hanga tuatahi nga whare pukapuka katahi ka hanga i te kaupapa kaiwhakamahi. Ko te tikanga, ka taea te tohatoha ns-3 hei whare pukapuka kua rite mo te punaha motuhake, a kei te heke mai ka tohatohahia penei. Engari i enei wa he maha nga kaiwhakamahi e mahi ana i a raatau mahi ma te whakatika i te ns-3 ake, na reira he pai ki te whai i te waehere puna hei hanga i nga whare pukapuka. Mena kei te pirangi tetahi ki te mahi ki te hanga whare pukapuka kua oti te hanga me nga kete mo nga punaha whakahaere, me waea atu ki te rarangi mēra. ns-kaiwhakawhanake.

I muri mai, ka titiro tatou ki nga huarahi e toru ki te tango me te hanga ns-3. Ko te tuatahi ko te tango me te hanga i te tuku mana mai i te pae matua. Ko te tuarua ko te kowhiri me te huihuinga o nga kape o nga putanga whanaketanga o te whakaurunga taketake ns-3. Ko te tuatoru ko te whakamahi taputapu hanga taapiri hei uta atu i nga taapiri mo te ns-3. Ka haere maatau i ia waahanga na te mea he rereke nga taputapu.

Ka miharo pea nga kaiwhakamahi Linux mohio he aha te ns-3 e kore e tukuna hei kete penei i te nuinga o nga whare pukapuka e whakamahi ana i te kaiwhakahaere kete? Ahakoa he kohinga takirua mo nga momo tohatoha Linux (penei i a Debian), ka mutu te nuinga o nga kaiwhakamahi ki te whakatika i nga whare pukapuka me te hanga ano i te ns-3 ma ratou ano, no reira he watea te waahi o te waehere puna. Mo tenei take, ka aro taatau ki te whakauru mai i te puna.

Mo te nuinga o nga tono motika ns-3 pakiaka e kore e hiahiatia, e taunaki ana kia whakamahia he kaute kaiwhakamahi kore.

3.2 Nga whakaritenga o mua

Ko te huinga katoa o nga whare pukapuka ns-3 e waatea ana he maha nga whakawhirinaki ki runga i nga whare pukapuka tuatoru, engari mo te nuinga o te waa ka taea te hanga me te whakamahi i te ns-3 me te tautoko mo etahi waahanga noa (kua whakauruhia ma te taunoa) nga waahanga: he C++ compiler, Python, he kaiwhakatika waehere puna (hei tauira, VIM, emacs ranei pounga) a, ki te whakamahia nga putunga whanaketanga, nga punaha whakahaere putanga Git. Ko te nuinga o nga kaiwhakamahi tuatahi karekau e awangawanga mena ka ripoatahia e ta raatau whirihoranga etahi ahuatanga matatau ns-3 kua ngaro, engari mo te hunga e hiahia ana ki te whakaurunga katoa, ka tukuna e te kaupapa he wiki kei roto nga wharangi he maha nga tohutohu me nga tinihanga. Ko tetahi o aua wharangi ko te wharangi Tāuta, me nga tohutohu whakaurunga mo nga momo punaha, e waatea ana i: https://www.nsnam.org/wiki/Installation.

Ko te waahanga Tuhinga o mua o tenei wiki e whakamarama ana he aha nga kohinga e hiahiatia ana hei tautoko i nga whiringa ns-3 noa, me te whakarato hoki i nga whakahau e whakamahia ana hei whakauru i aua mea ki runga i nga rongo noa o Linux, macOS ranei.

Ka taea e koe te whai waahi ki te tirotiro i te wharangi wiki ns-3, te paetukutuku matua ranei: https://www.nsnam.org, no te mea he maha nga korero kei reira. Ka timata me te putanga hou o ns-3 (ns-3.29), ko nga taputapu e whai ake nei hei whakahaere i te ns-3:

Mōkī Utauta/Putanga

  • C++ whakahiato
    clang++ ranei g++ (g++ putanga 4.9 teitei ake ranei)
  • nānati
    python2 version >= 2.7.10, python3 version >=3.4 ranei
  • Git
    tetahi putanga hou (ki te uru ki te ns-3 i GitLab.com)
  • tar
    tetahi putanga hou (mo te wetewete i te tukunga ns‑3)
  • puku2
    tetahi putanga hou (mo te wetewete i te tukunga ns‑3)

Hei taki i te putanga taunoa o Python, pato python -V. Hei taki i te putanga g++, pato g++ -v. Mena kei te ngaro etahi taputapu, he tawhito rawa ranei, tirohia te aratohu whakaurunga kei te wharangi wiki ns-3.

Mai i tenei wa, ka whakaaro matou kei te whakahaere te kaipanui i te Linux, MacOS, he emulator Linux ranei, me nga taputapu o runga ake nei.

3.2.1 Te tango i te tukunga ns-3 hei puna puna

Koinei te huarahi mahi mo tetahi kaiwhakamahi hou e hiahia ana ki te tango me te whakamatau i nga putanga hou me nga momo kete o ns-3. Ko nga putanga ns-3 ka whakaputahia hei putunga puna puna, i etahi wa ka kiia takipōro. takipōro he whakatakotoranga purongo rorohiko motuhake e honoa ai etahi o nga konae. I te nuinga o te wa ka kopekehia te puranga. ns-3 tukanga whawhai mā takipōro he ngawari noa, me kowhiria he tuku, tango me te wetewete.

Me whakaaro ko koe, hei kaiwhakamahi, e hiahia ana koe ki te hanga ns-3 i roto i te raarangi rohe e kiia nei mokowāmahi. Ka taea e koe te tiki kape mahi o te tukunga ma te whakauru i nga mea e whai ake nei ki te papatohu Linux (whakakapi i nga nama putanga e tika ana, o te akoranga)

$ cd 
$ mkdir workspace 
$ cd workspace 
$ wget https://www.nsnam.org/release/ns-allinone-3.29.tar.bz2 
$ tar xjf ns-allinone-3.29.tar.bz2 

Kia tupato ki te taputapu i whakamahia i runga ake nei wget, he taputapu raina whakahau mo te tango taonga mai i te Ipurangi. Mena kaore i whakauruhia e koe, ka taea e koe te whakamahi i to kaitirotiro mo tenei.

Ma te whai i enei mahi ka kawea koe ki te raarangi ns-allinone-3.29, me kite koe i nga konae me nga raarangi.

$ cd ns-allinone-3.29
$ ls
bake constants.py ns-3.29 README
build.py netanim-3.108 pybindgen-0.17.0.post58+ngcf00cc0 util.py

Kua reri koe inaianei ki te hanga i tetahi tohatoha ns-3 ka taea te neke ki te waahanga mo te hanga ns-3.

3.3 Te tango i te ns-3 ma te whakamahi i te Git

Kei te waatea te waehere ns-3 i roto i nga whare pupuri Git i GitLab.com i https://gitlab.com/nsnam/. Rōpū nsnam he whakakotahi i nga momo putunga e whakamahia ana e tetahi kaupapa puna tuwhera.

Ko te huarahi ngawari ki te tiimata ki te whakamahi i nga putunga putunga a Git ko te marau, te kati ranei i te taiao ns-3-allinone. He huinga tuhinga tuhi tenei e whakahaere ana i te utaina me te whakahiato o nga punaha iti ns-3 e tino whakamahia ana. Mena he tauhou koe ki a Git, kare pea koe e mohio ki nga kupu "marau" me te "clone"; ki te pera, ka kii atu matou kia kati koe (hangaia taau ake kape) te putunga kei runga GitLab.com penei:

$ cd 
$ mkdir workspace 
$ cd workspace 
$ git clone https://gitlab.com/nsnam/ns-3-allinone.git 
$ cd ns-3-allinone 

I tenei wahanga, te tirohanga o to whaiaronga ns-3-allinone He rereke te rereke mai i te raarangi tuku korero i runga ake nei. Me penei te ahua:

$ ls
build.py constants.py download.py README util.py

Kia mahara kei reira he tuhinga download.py, ka tango ano i te ns-3 me te waehere puna taapiri. Kei a koe he whiringa: tango ranei i te whakaahua whanaketanga ns-3 hou:

$ python download.py

he pai ake ranei te tuku ns-3 ma te whakamahi i te haki -n hei tohu i te nama tuku:

$ python download.py -n ns-3.29

I muri i tenei taahiraa ki te whaiaronga ns-3-allinone ka tangohia etahi atu putunga ns-3, tunu, pybindgen и netanim.

parau
I runga i te miihini me te Ubuntu16.04 ma, me whakarereke e au te whakahau ki tenei: $ sudo python3 download.py -n ns-3.29 (i muri nei ko nga korero a te kaiwhakamaori).

3.3.1 Uta ana i te ns-3 ma te Bake

Ko nga tikanga e rua i runga ake nei (puranga puna, putunga ranei ns-3-allinone mā Git) he pai mo te whakaurunga ns-3 ngawari me nga taapiri maha (pybindgen ki te whakaputa i nga here Python me te netanim mo te hākoritanga whatunga). Ko te tuatoru o nga putunga e whakaratohia ana e te taunoa i roto i te ns-3-allinone ka kiia tunu.

Tunua he taputapu mo te hanga raupaparorohiko mai i nga putunga maha, i whakawhanakehia mo te kaupapa ns-3. Tunua ka taea te whakamahi ki te tiki putanga whanaketanga o ns-3, me te tango me te hanga i nga toronga o te putanga turanga o te tohatoha ns-3, penei i te taiao Whakahaere Waehere Tika, CradleNetwork Simulation Pouraka, te kaha ki te hanga i nga here Python hou me nga momo ns-3 "taupānga".

parau
Ko te CradleNetwork Simulation Cradle he anga e taea ai e koe te whakamahi i nga putunga whatunga TCP/IP i roto i te simulator whatunga.

Mena kei te tumanako koe kei to whakaurunga ns-3 etahi atu waahanga taapiri, ka taea e koe te whai i tenei ara whakauru.

I nga putanga hou o ns-3 Tunua i tapirihia ki te tuku tar. Kei roto i te tukunga he konae whirihoranga ka taea e koe te tango i nga putanga rorohiko o naianei i te wa o te tukunga. Arā, hei tauira, te putanga Tunua, ka tohatohahia me te tukunga ns-3.29, ka taea te whakamahi ki te tiki i nga waahanga mo tera tukunga o ns-3 i mua atu ranei, engari kaore e taea te whakamahi ki te tiki i nga waahanga mo nga tukunga o muri mai (mehemea ko te konae whakaahuatanga kete bakeconf.xml kaore i whakahoutia).

Ka taea hoki te tiki i te kape hou tunuma te whakauru i te whakahau e whai ake nei ki to papatohu Linux (mehemea kua whakauruhia e koe a Git):

$ cd 
$ mkdir workspace 
$ cd workspace 
$ git clone https://gitlab.com/nsnam/bake.git

Ka whakahaerehia e koe te whakahau git, me kite koe i tetahi mea penei:

Cloning into 'bake'...
remote: Enumerating objects: 2086, done. 
remote: Counting objects: 100% (2086/2086), done. 
remote: Compressing objects: 100% (649/649), done. 
remote: Total 2086 (delta 1404), reused 2078 (delta 1399) 
Receiving objects: 100% (2086/2086), 2.68 MiB | 3.82 MiB/s, done. 
Resolving deltas: 100% (1404/1404), done.

Ka mutu te whakahau ki tou me whai ingoa koe i tetahi whaiaronga tunu, me penei te ahua o nga ihirangi:

$ cd bake
$ ls
bake bakeconf.xml bake.py doc examples generate-binary.py test TODO

Kia mahara kua utaina e koe etahi tuhinga Python, he waahanga Python kua whakaingoatia tunu me te kōnae whirihoranga XML. Ko te mahi e whai ake nei ko te whakamahi i enei tuhinga hei tango me te hanga i te tohatoha ns-3 e pai ana koe. He maha nga whaainga whakarite e waatea ana:

  1. ns-3.29: kōwae e hāngai ana ki te tukunga; ka tango i nga waahanga rite ki te tuku i roto i te tarball;

  2. ns-3-dev: he kōwae rite, engari he whakamahi waehere mai i te rakau whanaketanga;

  3. ns-allinone-3.29: He kōwae kei roto etahi atu waahanga penei i te Whakarererangi Pawhiri me te Whatunga Whakamutunga Pouraka, Openflow mo ns-3.

  4. ns-3-allinone: rite ki te putanga tuku o te kōwae allinone, engari mo te waehere whanaketanga.

parau
Pāwhiritia — hoahoanga rorohiko modular mo te hanga pouara.

Ko te Openflow he kawa mo te whakahaere i te tukanga o te tukatuka raraunga ka tukuna i runga i te whatunga raraunga e nga pouara me nga whakawhiti, te whakatinana i te hangarau whatunga kua tautuhia e te rorohiko.

Ko te whakaahua whanaketanga o naianei (kaore i tukuna) ns-3 ka kitea i:https://gitlab.com/nsnam/ns-3-dev.git.

Ka ngana nga kaihanga ki te pupuri i enei putunga i roto i te raupapa mahi rite tonu, engari kei roto i te waahi whanaketanga me te whakauru i nga waehere kaore i tukuna, na, ki te kore koe e whakaaro ki te whakamahi i nga ahuatanga hou, tohua te tuku mana.

Ka kitea e koe te putanga hou o te waehere ma te tirotiro i te rarangi o nga putunga, ma te haere ranei ki te wharangi paetukutuku ns-3 Releases:https://www.nsnam.org/releases/ me te panui i te hononga putanga hou. I tenei tauira ka haere tonu tatou ki te ns-3.29.

Na, ki te tiki i nga waahanga ns-3 e hiahiatia ana, ka whakamahia e matou te taputapu Tunua. Me korero etahi kupu whakataki mo te mahi Tunua.

Ka mahi te tunu ma te uta i nga puna mokete ki roto i te raarangi pūtake me te whakauru i nga whare pukapuka ki te raarangi hanga. Tunua Ka taea te whakahaere ma te tohutoro i te rua, engari ki te hiahia koe ki te oma Tunua ehara i te whaiaronga i tangohia ai, he mea tika kia taapirihia te ara ki tunu ki to ara (PATH taiao taurangi), hei tauira e whai ake nei (tauira mo te anga bash Linux). Haere ki te raarangi "tunu" katahi ka tautuhi i nga taurangi taiao e whai ake nei:

$ export BAKE_HOME=`pwd` 
$ export PATH=$PATH:$BAKE_HOME:$BAKE_HOME/build/bin 
$ export PYTHONPATH=$PYTHONPATH:$BAKE_HOME:$BAKE_HOME/build/lib

Ma tenei ka tuu te kaupapa tunu.py ki te ara anga ka taea e etahi atu papatono te kimi i nga whakahaere me nga whare pukapuka i hangaia e ia tunu. I etahi waahi whakamahi tunu, ko te tautuhinga PATH me te PYTHONPATH e whakaahuatia ana i runga ake nei kaore e hiahiatia, engari ko te hanga katoa o te ns-3-allinone (me etahi atu kohinga) ka hiahiatia.

Haere ki to whaiaronga mahi ka uru ki te papatohu e whai ake nei:

$ ./bake.py configure -e ns-3.29

Hei muri ka patai Tunua tirohia mena he nui a maatau taputapu hei uta i nga momo waahanga. Waea:

$ ./bake.py check

Me kite koe i tetahi mea penei:

> Python - OK 
> GNU C++ compiler - OK 
> Mercurial - OK 
> Git - OK 
> Tar tool - OK 
> Unzip tool - OK 
> Make - OK 
> cMake - OK 
> patch tool - OK 
> Path searched for tools: /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin ...

Ina koa, ko nga taputapu tukuake penei i a Mercurial, CVS, Git me Bazaar he mea nui ki tenei mahi na te mea ka taea e taatau te tiki i te waehere. I tenei wa, whakauruhia nga taputapu ngaro i runga i te tikanga mo to punaha (mehemea ka mohio koe me pehea) me waea atu ranei ki to kaiwhakahaere punaha mo te awhina.

Panuku, ngana ki te tango i te rorohiko:

$ ./bake.py download

me penei te hua:

>> Searching for system dependency setuptools - OK 
>> Searching for system dependency libgoocanvas2 - OK 
>> Searching for system dependency gi-cairo - OK 
>> Searching for system dependency pygobject - OK 
>> Searching for system dependency pygraphviz - OK 
>> Searching for system dependency python-dev - OK 
>> Searching for system dependency qt - OK 
>> Searching for system dependency g++ - OK 
>> Downloading pybindgen-0.19.0.post4+ng823d8b2 (target directory:pybindgen) - OK 
>> Downloading netanim-3.108 - OK 
>> Downloading ns-3.29 - OK

Ko te tikanga e toru nga puna kua tangohia. Na haere ki te whaiaronga puna me te pato ls; Me kite koe:

$ cd source 
$ ls
netanim-3.108 ns-3.29 pybindgen

Inaianei kua rite koe ki te hanga i te tohatoha ns-3.

3.4 Huihuinga ns-3

Ka rite ki te tango i te ns-3, he maha nga huarahi hei hanga i te ns-3. Ko te mea nui e hiahia ana matou ki te whakanui ko te hanga ns-3 ma te whakamahi i tetahi taputapu hanga e kiia nei Wafwhakaahuatia i raro nei. Ka mahi tahi te nuinga o nga kaiwhakamahi Waf, engari he iti noa nga tuhinga hei awhina i a koe ki te timata, ki te whakarite ranei i nga hanga uaua ake. Na koa, i mua i to panui Waf, titiro ki hanga.py me te huihuinga me tunu.

3.4.1 Hanga whare me build.py

Tūpato Ko tenei taahiraa hanga e waatea ana mai i te putanga puna puna kua riro mai i runga ake nei; a kaore i tangohia ma te git me te tunu ranei.

I te wa e mahi ana me tetahi puranga tuku takipōroi roto ns-3-allinone He tuhi tuhi ka taea te whakakotahi i nga waahanga kia ngawari ake. Ka kiia ko build.py. Ma tenei kaupapa e whakarite te kaupapa mo koe i roto i te huarahi tino whai hua. Heoi, kia mahara ko te tatūnga matatau ake me te mahi tahi me ns-3 ko te tikanga ko te whakamahi i te punaha hanga a ns-3 ake, a Waf, ka whakaatuhia i muri mai i tenei akoranga.

Mena i tangohia e koe ma te whakamahi takipōro, ka i roto i to whaiaronga ~/mokowāmahi he whaiaronga me tetahi ingoa penei ns-allinone-3.29. Whakauruhia nga mea e whai ake nei:

$ ./build.py --enable-examples --enable-tests

Ka karangahia hanga.py I whakamahia e matou nga tohenga rarangi whakahau hei hanga i nga tauira me nga whakamatautau i whakamahia i roto i tenei akoranga, kaore i hangaia ma te taunoa i roto i te ns-3. Ma te taunoa, ka hangaia e te papatono nga waahanga katoa e waatea ana. Na, ki te hiahia koe, ka taea e koe te hanga ns-3 kaore he tauira me nga whakamatautau, ka whakakorehia ranei nga waahanga kaore e hiahiatia mo to mahi.

Ka kite koe i te maha o nga karere whakaputa kaitoi e whakaatuhia ana e te tuhinga i a ia e hanga ana i nga momo waahanga kua utaina e koe. Tuatahi ka ngana te tuhinga ki te hanga i te kaiwhakaora netanim, katahi te kaihanga here pybindgen ka mutu ko ns-3. Ina oti te tukanga, me kite koe i enei e whai ake nei:

Waf: Leaving directory '/path/to/workspace/ns-allinone-3.29/ns-3.29/build'
'build' finished successfully (6m25.032s) 

Modules built:
antenna                aodv                     applications
bridge                 buildings                config-store
core                   csma                     csma-layout
dsdv                   dsr                      energy 
fd-net-device          flow-monitor             internet
internet-apps          lr-wpan                  lte
mesh                   mobility                 mpi
netanim (no Python)    network                  nix-vector-routing 
olsr                   point-to-point           point-to-point-layout 
propagation            sixlowpan                spectrum 
stats                  tap-bridge               test (no Python) 
topology-read          traffic-control          uan 
virtual-net-device     visualizer               wave 
wifi                   wimax 

Modules not built (see ns-3 tutorial for explanation):
brite                  click                    openflow 
Leaving directory ./ns-3.29

I nga rarangi whakamutunga e toru o te raarangi ka kite matou i tetahi panui mo nga waahanga kaore i hangaia:

Modules not built (see ns-3 tutorial for explanation):
brite                     click

Ko te tikanga ko etahi waahanga ns-3 e whakawhirinaki ana ki nga whare pukapuka o waho kaore pea i hangaia, kaore ranei e hiahiatia kia hangaia mo tenei whirihoranga. Ehara tenei i te mea karekau te simulator e whakahiato, karekau ranei e mahi tika nga waahanga kua oti te whakaemi.

3.4.2 Hangahanga me te Tunu

Mena i whakamahia e koe te tunu i runga ake nei ki te tiki waehere puna mai i nga putunga kaupapa, ka taea e koe te whakamahi tonu ki te hanga ns-3. Waea:

$ ./bake.py build

a me kite koe i tetahi mea penei:

>> Building pybindgen-0.19.0.post4+ng823d8b2 - OK 
>> Building netanim-3.108 - OK 
>> Building ns-3.29 - OK

Tooltip: Ka taea hoki e koe te tango me te hanga kaupae i te wa kotahi ma te karanga "bake.py deploy".

Ka taka pea te whakahiato i nga waahanga katoa, engari ka haere tonu te huihuinga ki te kore e hiahiatia he waahanga. Hei tauira, ko tetahi take kawe i tata nei ko tera castxml ka taea te huihui ma te taputapu tunu kaua i runga i nga papaaho katoa. I tenei take, ka puta he karere penei:

>> Building castxml - Problem 
> Problem: Optional dependency, module "castxml" failed
This may reduce the functionality of the final build.
However, bake will continue since "castxml" is not an essential dependency.
For more information call bake with -v or -vvv, for full verbose mode.

Engari, castxml ka hiahiatia anake mena ka hiahia koe ki te hanga i nga here Python kua whakahoutia. Mo te nuinga o nga kaiwhakamahi kaore he hiahia mo tenei (i te iti rawa kia huri ra ano ratou i te ns-3), na reira ka taea te wareware i enei whakatupato mo tenei wa.

Mena ka rahua, ko te whakahau e whai ake nei ka hoatu he tohu ki a koe mo te ngaro o nga whakawhirinakitanga:

$ ./bake.py show

Ka whakarārangihia ngā momo whakawhirinakitanga o ngā mōkihi e ngana ana koe ki te hanga.

3.4.3 Hanga ki te Waf

Tae noa ki tenei wa, ki te timata ki te hanga ns-3, i whakamahia e matou te tuhinga hanga.py, taputapu ranei tunu. He pai enei taputapu mo te hanga ns-3 me te pupuri whare pukapuka. Inaa, ki te hanga ka whakahaerehia e ratou te taputapu hanga Waf mai i te whaiaronga ns-3. Waf kua whakauruhia ki te waehere puna ns-3. Ko te nuinga o nga kaiwhakamahi ka tere haere ki te whakamahi tika ki te whirihora me te whakahiato i te ns‑3 Waf. Na, ki te haere tonu, haere koa ki te raarangi ns-3 i hangaia e koe i te tuatahi.

Kaore tenei i te tino hiahiatia i tenei wa, engari he pai ki te hoki whakamuri iti me te kite me pehea te whakarereke i te whirihoranga kaupapa. Ko te huringa whirihoranga tino whai hua ka taea e koe ko te hanga i tetahi putanga papai o te waehere. Ma te taunoa, kua whirihora e koe to kaupapa ki te hanga i tetahi putanga patuiro. Kia titiro tatou ki tetahi kaupapa hei hanga i te hanga papai. Hei whakamaarama ki a Waf me hanga e ia nga hanga papai me nga tauira me nga whakamatautau, me whakahaere e koe nga whakahau e whai ake nei:

$ ./waf clean 
$ ./waf configure --build-profile=optimized --enable-examples --enable-tests

Ka whakarewahia tenei Waf kei waho o te raarangi o te rohe (mo to waatea). Ko te whakahau tuatahi ka horoi mai i te hanga o mua, ko te tikanga kaore tenei e tino tika, engari he mahi pai (tirohia nga korero hanga i raro nei); ka mukua nga whare pukapuka i hangaia i mua me nga konae ahanoa kei roto i te whaiaronga hanga/. Ina whirihora ano te kaupapa ka tirohia e te punaha hanga nga momo whakawhirinakitanga, me kite koe i nga putanga e rite ana ki enei e whai ake nei:

Setting top to      : /home/ns3user/workspace/bake/source/ns-3-dev
Setting out to      : /home/ns3user/workspace/bake/source/ns-3-dev/build
Checking for 'gcc' (C compiler)        : /usr/bin/gcc 
Checking for cc version                : 7.3.0 
Checking for 'g++' (C++ compiler)      : /usr/bin/g++ 
Checking for compilation flag -march=native support : ok 
Checking for compilation flag -Wl,--soname=foo support : ok 
Checking for compilation flag -std=c++11 support       : ok 
Checking boost includes   : headers not found, please ,!provide a --boost-includes argument (see help) 
Checking boost includes   : headers not found, please ,!provide a --boost-includes argument (see help) 
Checking for program 'python'            : /usr/bin/python 
Checking for python version >= 2.3       : 2.7.15 python-config                                                                     : /usr/bin/python-config
Asking python-config for pyembed '--cflags --libs --ldflags' flags : yes
Testing pyembed configuration                                      : yes
Asking python-config for pyext '--cflags --libs --ldflags' flags   : yes
Testing pyext configuration                                        : yes

Checking for compilation flag -fvisibility=hidden support          : ok 
Checking for compilation flag -Wno-array-bounds support            : ok 
Checking for pybindgen location          : ../pybindgen ,!(guessed) 
Checking for python module 'pybindgen'   : 0.19.0. ,!post4+g823d8b2 
Checking for pybindgen version           : 0.19.0. ,!post4+g823d8b2 
Checking for code snippet                : yes 
Checking for types uint64_t and unsigned long equivalence : no 
Checking for code snippet                                 : no 
Checking for types uint64_t and unsigned long long equivalence     : yes 
Checking for the apidefs that can be used for Python bindings                       : gcc-LP64 
Checking for internal GCC cxxabi         : complete 
Checking for python module 'pygccxml'    : not found 
Checking for click location              : not found 
Checking for program 'pkg-config'        : /usr/bin/pkg- ,!config 
Checking for 'gtk+-3.0'                  : not found 
Checking for 'libxml-2.0'                : yes 
checking for uint128_t                   : not found 
checking for __uint128_t                 : yes 
Checking high precision implementation   : 128-bit integer ,!(default) 
Checking for header stdint.h             : yes 
Checking for header inttypes.h           : yes 
Checking for header sys/inttypes.h       : not found 
Checking for header sys/types.h          : yes 
Checking for header sys/stat.h           : yes 
Checking for header dirent.h             : yes 
Checking for header stdlib.h             : yes 
Checking for header signal.h             : yes 
Checking for header pthread.h            : yes 
Checking for header stdint.h             : yes 
Checking for header inttypes.h           : yes 
Checking for header sys/inttypes.h       : not found
Checking for library rt                  : yes 
Checking for header sys/ioctl.h          : yes 
Checking for header net/if.h             : yes 
Checking for header net/ethernet.h       : yes 
Checking for header linux/if_tun.h       : yes 
Checking for header netpacket/packet.h   : yes 
Checking for NSC location                : not found 
Checking for 'sqlite3'                   : not found 
Checking for header linux/if_tun.h       : yes 
Checking for python module 'gi'          : 3.26.1 
Checking for python module 'gi.repository.GObject'      : ok 
Checking for python module 'cairo'                      : ok 
Checking for python module 'pygraphviz'                 : 1.4rc1 
Checking for python module 'gi.repository.Gtk'          : ok 
Checking for python module 'gi.repository.Gdk'          : ok 
Checking for python module 'gi.repository.Pango'        : ok 
Checking for python module 'gi.repository.GooCanvas'    : ok 
Checking for program 'sudo'                             : /usr/bin/sudo 
Checking for program 'valgrind'                         : not found 
Checking for 'gsl' : not found python-config            : not found 
Checking for compilation flag -fstrict-aliasing support : ok 
Checking for compilation flag -fstrict-aliasing support : ok 
Checking for compilation flag -Wstrict-aliasing support : ok 
Checking for compilation flag -Wstrict-aliasing support : ok 
Checking for program 'doxygen'                          : /usr/bin/doxygen
---- Summary of optional ns-3 features:
Build profile : optimized
Build directory : 
BRITE Integration : not enabled (BRITE not enabled (see option --with- ,!brite)) 
DES Metrics event collection : not enabled (defaults to disabled) 
Emulation FdNetDevice        : enabled 
Examples                     : enabled 
File descriptor NetDevice    : enabled 
GNU Scientific Library (GSL) : not enabled (GSL not found) 
Gcrypt library               : not enabled
(libgcrypt not found: you can use ,!libgcrypt-config to find its location.) GtkConfigStore               : not enabled (library 'gtk+-3.0 >= 3.0' not fou   nd)
MPI Support                  : not enabled (option --enable-mpi not selected)
ns-3 Click Integration       : not enabled (nsclick not enabled (see option --with- ,!nsclick))
ns-3 OpenFlow Integration   : not enabled (Required boost libraries not found) 
Network Simulation Cradle    : not enabled (NSC not found (see option --with-nsc))
PlanetLab FdNetDevice         : not enabled (PlanetLab operating system not detected ,!(see option --force-planetlab)) PyViz visualizer : enabled 
Python API Scanning Support   : not enabled (Missing 'pygccxml' Python module)
Python Bindings : enabled 
Real Time Simulator           : enabled 
SQlite stats data output      : not enabled (library 'sqlite3' not found)
Tap Bridge                    : enabled 
Tap FdNetDevice               : enabled
Tests                         : enabled 
Threading Primitives          : enabled 
Use sudo to set suid bit   : not enabled (option --enable-sudo not selected)
XmlIo                         : enabled
'configure' finished successfully (6.387s)

Tena koa tirohia te waahanga whakamutunga o te raarangi i runga ake nei. Ko etahi o nga whiringa ns-3 kaore i te whakahohea ma te taunoa, ka hiahiatia ranei te tautoko a te punaha kia pai te mahi. Hei tauira, kia taea ai te XmlTo, me noho te whare pukapuka ki runga i te punaha libxml-2.0. Ki te kore tenei whare pukapuka i kitea, karekau hoki te mahi ns-3 e hono ana, ka whakaatuhia he karere. Kia mahara ano ka taea te whakamahi i te whakahau Tuhinga ki te tautuhi i te moka sui "tautuhi ID roopu i te wa whakahaere" mo etahi kaupapa. Kaore i te whakahohea ma te taunoa, na reira ka puta mai tenei ahuatanga "kaore e taea". Hei whakamutunga, ki te tiki rarangi o nga whiringa kua whakahohea, whakamahia Waf me te tawhā --check-config.

Inaianei ka hoki ano ka huri ki te hanga patuiro kei roto nga tauira me nga whakamatautau.

$ ./waf clean 
$ ./waf configure --build-profile=debug --enable-examples --enable-tests

Kua whakaritea te punaha hanga, ka taea e koe te hanga i nga putanga patuiro o nga papatono ns-3 ma te pato noa:

$ ./waf

Ko nga hikoinga i runga ake nei i kaha koe ki te hanga i tetahi waahanga o te punaha ns-3 kia rua, engari inaianei kua mohio koe ki te whakarereke i te whirihoranga me te hanga i te waehere kua tino pai.

Hei taki ko wai te kōtaha e kaha ana mo tetahi whirihoranga kaupapa, he whakahau:

$ ./waf --check-profile 
Waf: Entering directory `/path/to/ns-3-allinone/ns-3.29/build' 
Build profile: debug

Ko te ahuatanga o runga ake nei hanga.py tautoko ana hoki i nga tautohetohe --enable-examples и --enable-tests, engari etahi atu whiringa Waf kaore i te tautoko tika. Hei tauira, kaore tenei e mahi:

$ ./build.py --disable-python

ka penei te tauhohenga:

build.py: error: no such option: --disable-python

Heoi, ko te kaiwhakahaere motuhake -- ka taea te whakamahi ki te whakawhiti i nga taapiri taapiri ma wafna hei utu mo nga mea i runga ake nei ka mahi te whakahau e whai ake nei:

$ ./build.py -- --disable-python

na te mea ka whakaputa i te whakahau matua ./waf configure --disable-python. Anei etahi atu tohutohu whakataki mo Waf.

Te whakahaere i nga hapa hanga

Ko nga tukunga ns-3 ka whakamatauria i runga i nga kohinga C++ hou e waatea ana i te wa tukunga i runga i nga tohatoha Linux me MacOS noa. Heoi, i te roanga o te waa, ka tukuna nga tohatoha hou me nga kaikoipi hou, a ko enei kaikoipi hou ka kaha ake te whakaaro ki nga whakatupato. Ka whirihorahia e te ns-3 tana hanga ki te whakatau i nga whakatupato katoa he hapa, na i etahi wa mena kei te whakahaere koe i tetahi putanga tawhito i runga i te punaha hou, ka aukati te whakatumatuma whakahiato i te hanga.

Hei tauira, he tukunga ns‑3.28 i mua mo Fedora 28, he putanga nui hou gcc (gcc-8). Ko te hanga i te tukunga ns-3.28 ranei nga putanga o mua i raro i te Fedora 28, me te Gtk2+ kua whakauruhia, ka puta te hapa e whai ake nei:

/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h:59:8: error: unnecessary parentheses ,!in declaration of ‘__gtk_reserved1’ [-Werror=parentheses] void (*__gtk_reserved1);

I roto i nga whakaputanga timata mai i ns‑3.28.1, i roto i Waf kei te waatea he whiringa hei whakaoti i enei raru. Ka whakakorehia te tautuhi i te haki "-Werror" ki te g++ me te clang++. Koinei te kōwhiringa "--disable-werror" me tono i te wa whirihoranga:

$ ./waf configure --disable-werror --enable-examples --enable-tests

Whirihorahia, whakahiato ranei

Ko etahi whakahau Waf whai tikanga anake i roto i te wahanga whirihoranga, a ko etahi ka whai mana anake i te wahanga hanga. Hei tauira, ki te hiahia koe ki te whakamahi i nga ahuatanga whakatairite ns-3, ka taea e koe te whakarite moka mate whakamahi ana Tuhinga, pera me te korero i runga ake nei. Ma tenei ka whakakore i nga whakahau taahiraa whirihoranga, na reira ka taea e koe te whakarereke i te whirihoranga ma te whakamahi i te whakahau e whai ake nei, kei roto hoki nga tauira me nga whakamatautau.

$ ./waf configure --enable-sudo --enable-examples --enable-tests

Ki te mahi koe i tenei Waf ka whakarewahia Tuhingaki te huri i nga kaupapa hanga turanga turanga tauira hei whakahaere me nga whakaaetanga pakiaka. Ko te Waf He maha atu nga whiringa e waatea ana mo te whirihoranga me te hanga kaupae. Hei torotoro i o whiringa, uruhia:

$ ./waf --help

I te waahanga e whai ake nei ka whakamahia e matou etahi whiringa e pa ana ki te whakamatautau.

Kōtaha Runanga

Kua kite matou me pehea e taea ai e koe te whirihora Waf mo nga huihuinga patuiro и arotau:

$ ./waf --build-profile=debug

Kei reira ano he whakaaturanga huihuinga takawaenga, tuku. Kōwhiringa -d he riterite ki --build-profile. Ko te kōtaha hangahanga e whakahaere ana i te whakamahi i te takiuru, nga whakapae, me nga huringa arotautanga whakahiato:

Akoranga simulator whatunga ns-3. Upoko 3

Kei te kite koe, kei te waatea noa te takiuru me nga whakapae i roto i nga hanga patuiro. Ko te tikanga e taunakitia ana ko te whakawhanake i to tuhinga ki te aratau patuiro, katahi ka mahi i nga omatanga tukurua (mo nga tatauranga me nga huringa tawhā) i roto i tetahi tohu hanga papai.

Mēnā kei a koe te waehere e tika ana kia whakahaere i roto i ētahi kōtaha hangahanga, whakamahia te Tohutono Takai Waehere:

NS_BUILD_DEBUG (std::cout << "Part of an output line..." << std::flush; timer.Start ,!()); DoLongInvolvedComputation ();
NS_BUILD_DEBUG (timer.Stop (); std::cout << "Done: " << timer << std::endl;)

Taunoa, Waf Ka hangaia e nga waahi nga taonga ki roto i te raarangi hanga. Ka taea e koe te tautuhi i tetahi whaiaronga putanga rereke ma te whakamahi i te whiringa - -out, hei tauira:

$ ./waf configure --out=my-build-dir

Ma te whakakotahi i tenei me nga korero hanga, ka taea e koe te huri i waenga i nga whiringa whakahiato rereke:

$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf build
... 
$ ./waf configure --build-profile=optimized --out=build/optimized 
$ ./waf build
...

Ka taea e koe te mahi me nga huihuinga maha me te kore e tuhi ano i nga huihuinga hou ia wa. Ina huri koe ki tetahi atu kōtaha, Waf ka whakahiato anake, kaore e tino whakahiato nga mea katoa.

Ina huri koe i nga korero hangahanga penei, me tupato koe ki te hoatu i nga whiringa whirihoranga rite ia wa. Ma te tautuhi i etahi taurangi taiao ka awhina koe ki te karo i nga hapa:

$ export NS3CONFIG="--enable-examples --enable-tests" 
$ export NS3DEBUG="--build-profile=debug --out=build/debug"
$ export NS3OPT=="--build-profile=optimized --out=build/optimized" 

$ ./waf configure $NS3CONFIG $NS3DEBUG
$ ./waf build 
... 
$ ./waf configure $NS3CONFIG $NS3OPT
$ ./waf build

Kaihanga me nga haki

I nga tauira o runga ake nei Waf ki te hanga ns-3 ka whakamahi i te C++ compiler mai i GCC ( g ++). Heoi, ka taea e koe te huri i te mea e whakamahia ana e koe Waf C++ compiler, ma te tautuhi i te taurangi taiao CXX. Hei tauira, ki te whakamahi i te C ++ compiler Clang, clang++,

$ CXX="clang++" ./waf configure 
$ ./waf build 

I te ara ano ka taea e koe te whirihora Waf ki te whakamahi i te whakahiato tohatoha ma te whakamahi distcc:

$ CXX="distcc g++" ./waf configure 
$ ./waf build

Ko etahi atu korero mo te distcc me te whakahiato kua tohatohahia ka kitea i runga i te wharangi kaupapa i te waahanga Tuhinga. Hei taapiri i nga haki whakahiato i te wa e whirihora ana i te ns-3, whakamahia te taurangi taiao CXXFLAGS_EXTRA.

tāutanga

Waf Ka taea te whakamahi ki te whakauru whare pukapuka ki nga waahi rereke o te punaha. Ma te taunoa, kei roto i te whaiaronga nga whare pukapuka kua whakahiato me nga mahi whakahaere hanga, a, i te mea e mohio ana a Waf ki te waahi o enei whare pukapuka me nga mana whakahaere, kaore he take ki te whakauru i nga whare pukapuka ki hea atu.

Mena ka hiahia nga kaiwhakamahi ki te whakauru ki waho o te raarangi hanga, ka taea e raatau te whakahaere i te whakahau ./waf tāuta. Ko te prefix taunoa mo te whakaurunga ko / usr / rohekoia te aha ./waf tāuta ka whakauru i nga papatono ki roto / usr / rohe / bin, whare pukapuka kei roto / usr / rohe / lib me nga konae pane ki roto /usr/local/include. Ko te tikanga me whakarite nga motika superuser me te prefix taunoa, no reira he tono angamaheni sudo ./waf tāuta. Ina whakarewahia, ka whiriwhiri tuatahi a Waf ki te whakamahi i nga whare pukapuka tiritahi i roto i te raarangi hanga, katahi ka rapua nga whare pukapuka ma te ara ki nga whare pukapuka kua whirihorahia i te taiao o te rohe. Na i te wa e whakauru ana i nga whare pukapuka ki runga i tetahi punaha, he mahi pai ki te tirotiro kei te whakamahia nga whare pukapuka tika. Ka taea e nga kaiwhakamahi te kowhiri ki te whakauru me tetahi rereke rereke ma te tuku i te whiringa i te waa whirihoranga --prefix, hei tauira:

./waf configure --prefix=/opt/local

Mena i muri mai, i muri i te hanga, ka uru te kaiwhakamahi ki te whakahau whakauru ./waf, ka whakamahia te prefix /opt/local.

rōpū ./waf clean me whakamahi i mua i te whirihora ano i te kaupapa mena ka whakamahia te whakaurunga Waf i raro i te ahua rereke.

Na, ki te whakamahi i te ns-3 kaore he take ki te waea ./waf install. Ko te nuinga o nga kaiwhakamahi kaore e hiahia ki tenei tono na te mea Waf ka tikina nga whare pukapuka o naianei mai i te raarangi hanga, engari ka kitea e etahi o nga kaiwhakamahi he whai hua tenei mena ka uru a raatau mahi ki te mahi me nga kaupapa kei waho o te raarangi ns-3.

Waf kotahi

I te taumata o runga o te rakau puna ns-3, kotahi noa te tuhinga Waf. Kia timata koe ki te mahi, ka nui te wa e noho ana koe i roto i te raarangi scratch/ hohonu atu raneisrc/... a i te wa ano me oma Waf. Ka mahara noa koe kei hea koe ka oma Waf e whai ake nei:

$ ../../../waf ...

engari ka hoha tenei, ka hee, no reira he pai ake nga otinga. Ko tetahi huarahi noa ko te whakamahi i te ētita tuhinga penei emacs ranei VIM, ka whakatuwherahia nga waahanga e rua, ka whakamahia tetahi ki te hanga ns-3, ka whakamahia te tuarua ki te whakatika i te waehere puna. Mena kei a koe anake takipōro, ka taea e te taurangi taiao te awhina:

$ export NS3DIR="$PWD" 
$ function waff { cd $NS3DIR && ./waf $* ; } 

$ cd scratch 
$ waff build

I roto i te whaiaronga kōwae he mea whakamatautau ki te taapiri i tetahi tuhinga waf iti penei exec ../../waf. Tena koa, kaua e pena. He rangirua tenei mo nga tauhou, a, ki te hee te mahi, ka puta he hapa hanga uaua ki te kitea. Ko nga otinga e whakaatuhia ana i runga ake nei ko te huarahi e tika ana kia whakamahia.

3.5 Whakamatau ns-3

Ka taea e koe te whakahaere i nga whakamatautau waahanga tohatoha ns-3 ma te whakahaere i te tuhinga ./test.py:

$ ./test.py

He whakarara enei whakamatautau me Waf. I te mutunga ka kite koe i tetahi karere e kii ana:

92 of 92 tests passed (92 passed, 0 failed, 0 crashed, 0 valgrind errors)

He karere nui tenei mo te tautuhi i nga tukinga o te valgrind, i nga tukinga, i nga hapa ranei, e tohu ana i nga raruraru me te waehere, te kore hototahi ranei i waenga i nga taputapu me te waehere.

Ka kite hoki koe i te putanga whakamutunga mai Waf me tetahi kaiwhakaatu e whakahaere ana i ia whakamatautau, ka penei te ahua:

Waf: Entering directory `/path/to/workspace/ns-3-allinone/ns-3-dev/build' 
Waf: Leaving directory `/path/to/workspace/ns-3-allinone/ns-3-dev/build' 
'build' finished successfully (1.799s) 

Modules built:
aodv           applications          bridge
click          config-store          core
csma           csma-layout           dsdv
emu            energy                flow-monitor
internet       lte                   mesh
mobility       mpi                   netanim
network        nix-vector-routing    ns3tcp
ns3wifi        olsr                  openflow
point-to-point point-to-point-layout propagation
spectrum       stats                 tap-bridge
template       test                  tools
topology-read  uan                   virtual-net-device
visualizer     wifi                  wimax

PASS: TestSuite ns3-wifi-interference
PASS: TestSuite histogram 

...

PASS: TestSuite object
PASS: TestSuite random-number-generators
92 of 92 tests passed (92 passed, 0 failed, 0 crashed, 0 valgrind errors)

I te nuinga o te wa ka whakahaerehia tenei whakahau e nga kaiwhakamahi kia tere te manatoko he tika te hanga o te tohatoha ns-3. (Kia mahara he rereke pea te raupapa o nga rarangi "PASS: ...", he mea noa tenei. Ko te mea nui ko te rarangi whakarāpopototanga kei te mutunga o te ripoata e whakaatu ana kua paahitia nga whakamatautau katoa; kaore he whakamatautau i rahua, i tuki ranei.) Na Wafa whakamātautau.py ka whakarararite nga mahi puta noa i nga uho tukatuka e waatea ana o te miihini.

3.6 Te whakahaere i te tuhinga

I te nuinga o te wa ka whakahaerehia e matou nga tuhinga Waf. Ma tenei ka taea e te punaha hanga te whakarite kia tika nga huarahi whare pukapuka tiritahi me te watea o nga whare pukapuka i te wa whakahaere. Hei whakahaere i te papatono, whakamahia noa Waf me te tawhā - -run. Me whakahaere te ns-3 orite o te hotaka puta noa hello aoma te pato i nga mea e whai ake nei:

$ ./waf --run hello-simulator

Ka tirohia e Waf i te tuatahi kua tika te hanga o te papatono me te hanga mehemea e tika ana. Na Waf ka mahia he papatono ka whakaputa i nga putanga e whai ake nei.

Hello Simulator

Kia ora! He kaiwhakamahi ns-3 koe inaianei!

Me aha au ki te kore au e kite i nga hua?

Mena ka kite koe i nga karere Wafe tohu ana kua oti pai te hanga, engari kaore koe e kite i te putanga "Kia ora Simulator", katahi ka puta pea i te wahanga [Hanga-me-Waf] i huri koe i to aratau hanga ki arotau, engari i ngaro te huri ki te aratau patuiro. Ko nga putanga papatohu katoa e whakamahia ana i roto i tenei akoranga e whakamahi ana i tetahi waahanga ns-3 motuhake e mahi ana i te takiuru me te whakamahia hei ta i nga karere ritenga ki te papatohu. Ko te putanga mai i tenei waahanga ka monokia aunoa ina whakahiatohia te waehere kua arotau - kua "whakapaipai". Mena kaore koe e kite i te putanga "Hello Simulator", uruhia nga mea e whai ake nei:

$ ./waf configure --build-profile=debug --enable-examples --enable-tests

ki te whirihora Waf ki te hanga putanga patuiro o nga kaupapa ns-3, kei roto nga tauira me nga whakamatautau. Me hanga ano e koe te putanga patuiro o naianei o te waehere ma te pato

$ ./waf

Inaianei mena ka whakahaere koe i te kaupapa Kia ora-simulator, me kite koe i te hua e tumanakohia ana.

3.6.1 Tohenga rarangi whakahau

Hei tuku tohenga rarangi whakahau ki te papatono ns-3, whakamahia te tauira e whai ake nei:

$ ./waf --run <ns3-program> --command-template="%s <args>"

Whakakapihia ki te ingoa o to hotaka me nga tohenga. Tohenga - -command-template ki Waf Ko te tikanga he tohutaka mo te hanga i te raina whakahau Waf whakamahia ki te whakahaere i te kaupapa. Ka tirohia e Waf kua oti te hanga, ka tautuhi i nga huarahi whare pukapuka tiritahi, katahi ka whakamahi i te tauira raina whakahau kua whakaratohia, ka whakakapi i te ingoa o te papatono mo te %s puri wahi ki te karanga i te kaipahua. Mena ka kitea e koe he uaua tenei wetereo, he putanga ngawari ake e uru ana ki te kaupapa ns-3 me ona tohenga kei roto i nga korukī kotahi:

$ ./waf --run '<ns3-program> --arg1=value1 --arg2=value2 ...'

Ko tetahi atu tauira tino whai hua ko te whakahaere i nga huinga whakamatautau. Me whakaaro he huinga whakamatautau e kiia nei ko te mytest (kaore rawa). I runga ake i whakamahia e matou te ./test.py hōtuhi ki te whakahaere i te maha o nga whakamatautau i roto i te whakarara, e karanga ana i te hotaka whakamatautau. kai-whakamatautau. Karanga kai-whakamatautau tika ki te whakahaere i tetahi whakamatautau:

$ ./waf --run test-runner --command-template="%s --suite=mytest --verbose"

Ka tukuna nga tautohetohe ki te kaupapa kai-whakamatautau. I te mea karekau he whakamatautau, ka puta he karere hapa. Hei tā i ngā kōwhiringa kaiwhakamātautau e wātea ana, tāuru:

$ ./waf --run test-runner --command-template="%s --help"

3.6.2 Patuiro

Hei whakahaere i nga kaupapa ns-3 i raro i tetahi atu taputapu, penei i te patuiro (hei tauira, gdb) he taputapu whakamatautau mahara ranei (hei tauira, valgrind), whakamahia te ahua rite - -command-template = "…". Hei tauira, ki te rere i roto i te patuiro gdb to kaupapa here-simulator ns-3 me nga tautohetohe:

$ ./waf --run=hello-simulator --command-template="gdb %s --args <args>"

Kia mahara ka tae mai te ingoa papatono ns-3 me te tautohe - -run, me te whaipainga whakahaere (i konei gdb) ko te tohu tuatahi i roto i te tautohe - -command-template. Kōwhiringa - -args whakamōhio gdbko te toenga o te rarangi whakahau no te kaupapa "raro". (Etahi putanga gdb kaua e mohio ki te whiringa - -args. I tenei take, tangohia nga tohenga papatono mai i - -command-template me te whakamahi i te huinga whakahau gdb Tuhinga o mua.) Ka taea e tatou te whakakotahi i tenei tohutao me te mea o mua ki te whakahaere i te whakamatautau i raro i te patuiro:

$ ./waf --run test-runner --command-template="gdb %s --args --suite=mytest --verbose"

3.6.3 Whaiaronga mahi

Me whakarewahia te Waf mai i tona waahi ki te tihi o te rakau ns-3. Ka noho tenei kōpaki hei whaiaronga mahi hei tuhi i nga konae whakaputa. Engari he aha mena kei te pirangi koe ki te pupuri i enei konae ki waho o te rakau puna ns-3? Whakamahia te tautohetohe - -cwd:

$ ./waf --cwd=...

Ka kitea e koe he pai ake te tiki i nga konae whakaputa ki to raarangi mahi. I tenei take, ka awhina nga mahi autaki e whai ake nei:

$ function waff {
CWD="$PWD" 
cd $NS3DIR >/dev/null 
./waf --cwd="$CWD" $*
cd - >/dev/null 
}

Ko tenei whakapaipai o te putanga o mua o te whakahau e pupuri ana i te raarangi mahi o naianei, ka haere ki te raarangi Wafkatahi ka tohutohu Waf ki te huri i te whaiaronga mahi ki te raarangi mahi o naianei kua tiakina i mua i te tiimata i te papatono. Ka whakahuahia e matou te kapa - -cwd Mo te whakaotinga, ko te nuinga o nga kaiwhakamahi ka whakahaere noa i a Waf mai i te raarangi taumata-runga ka whakaputa i nga konae whakaputa ki reira.

Haere tonu: Upoko 4

Source: will.com

Tāpiri i te kōrero