ns-3 retis simulator doceo. Caput 3

ns-3 retis simulator doceo. Caput 3
capitulum 1,2

III questus coepi
3.1 Overview
3.2 Praesualisites
3.2.1 Download ns-3 release sicut fons archive
3.3 Download ns-III usura Git
3.3.1 loading ns-III usura coquamus
3.4 Conventus ns-3
3.4.1 aedificationem cum build.py
3.4.2 Building with Bake
3.4.3 aedificate cum Waf
3.5 Testis ns-3
3.6 Cursor scriptor
3.6.1 Praecipe linea argumentorum
3.6.2 Debugging
3.6.3 Opus Directory

CAPUT 3

questus Coepi

Hoc capitulum intendit praeparare lectorem incipiendum a computatro qui ns-3. Rostra fulta tegit, praerequisita, quomodo obtinendum ns-3, quomodo aedificandum ns-3, quomodoque ad probandum tua simplicia programmata construenda et decurrenda.

3.1 Overview

NS III simulator est aedificatum ut systema collaborative software libraries. Durante Conventus, in codice of user programs est coniunctum cum his libraries. C ++ et Python Programming Languages ​​sunt ad Write Custom Programs.

NS-III distribuitur sicut source codice, quod significat quod scopum ratio debet habere software progressionem environment ut primum aedificare libraries et aedificare in user progressio. In principle, ns-III posset distribui ut paratum-factum libraries ad specifica ratio, et in futurum ut distribuatur hoc modo. Sed iam plures users actu facere eorum opus per edendis ns-III, ita utile est ad fontem codice ut aedificare libraries. Si quis vellem accipere in opere creandi parati-factum libraries et packages ad operating systems, placere contactus in Mailing List ns, tincidunt.

Next, ut youll 'vultus ad tripliciter ad download et aedificare NS-III. Primum est ad download et aedificare in officialem release a pelagus site. Secundum est lectio et ecclesia ex parte progressionem versions of the basic ns-III installation. Tertium est ut additional aedificate instrumenta ad load magis extensiones pro NS-III. Nos youll 'ire per se unum cum instrumenta sunt leviter diversis.

Utentes Linux periti mirentur cur ns-3 non praebeatur sicut sarcina sicut pleraque alia bibliothecae quae in villico sarcina utuntur? Licet binarii fasciculi sint pro variis Linux distributionibus (exempli Debian), plerique utentes bibliothecas emendare et se ns-3 reficere, ita promptus fons codicis praesto est. Quam ob rem a fonte instituendo intendunt.

Pleraque enim applicationes us-3 ius radix non opus est, commendatur ut rationi usoris inculpato utatur.

3.2 Praesualisites

Et totum paro of available ns-III libraries habet numerum dependentibus in tertia-pars libraries, sed pro maxime pars Ns-III potest aedificare et usus cum auxilium pro pluribus communi (saepe installed per default pro pluribus communi (saepe installed per default) components: C ++ Compiler: Pythone, a fons code Editor (exempli gratia, vim, emacs aut Eclipse) et, repositoria evolutionis adhibita, systemata versionis moderari Git. Maxime primi temporis users non solliciti esse debent si eorum configurationem referat aliqua notarum 3 provectorum absentia, sed iis qui plenam institutionem desiderant, consilium praebet wiki, quod paginas cum multis apicibus et dolis utilibus comprehendit. Una talis pagina est pagina instruitur, cum instructiones institutionum ad varia systemata in promptu sunt: https://www.nsnam.org/wiki/Installation.

Praerequisita huius wiki sectio explicat quae sarcinae ad optiones communes ns-3 sustinendas requiruntur ac etiam mandata praebet ut eas in communes sapores Linux vel macOS instituant.

Hac occasione uti potes ad explorandum pagina wiki 3 vel principalis website: https://www.nsnam.orgquia sit amet elit nulla. Incipiens a recentissima versione ns-3 (ns-3.29), instrumenta sequentia ad ns-3 currendum requiruntur;

Instrumentum Package / Version

  • C ++ Compiler
    clang ++ g or ++ (g ++ version 4.9 or higher)
  • Python
    Python2 Version> = 2.7.10, aut Python3 Version> = 3.4
  • vade
    quaelibet versio novissima (accedere ns-3 on GitLab.com)
  • multos bituminis
    si tardus poema (ad vestimenta ns-3 release)
  • bunzip2
    si tardus poema (pro vestimenta ns-III release)

Ad defaltam Pythonis versionem ut reprehendo, typus python -V. Ut reprehendo in G ++ Version, Type g++ -v. Si quae instrumenta desunt vel nimis antiqua, ad ducem institutionem referre placet in pagina wiki-3 ana.

Posthac assumimus lectorem Linux, MacOS, vel Linux emulatorem currere, et saltem instrumenta superiora habere.

3.2.1 Download ns-3 release sicut fons archive

Haec est agendi ratio pro novo usore qui experiri et experiri cupit cum recentissima emissione et sarcina versionum ns-3. solvo-ns-3 publici iuris fiunt ut archivi fontis compressi, interdum appellati tarball. tarball Est speciale software archive format in quibus pluribus files sunt simul. Archive solet compressi. NS III tabernus processus per tarball Est simplex, vos iustus postulo eligere release, download et unpack eam.

Demus te, ut user, ns aedificare velle in directorio locali vocato opus spatium. Exemplar emissionis operarium potes ingrediendo sequentes in consolatorium Linux (numeris versionis congruentibus substituendis, scilicet)

$ 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 

Attende ad utilitatem supra wgetquod est instrumentum lineae mandati ad objecta ex interreti deprimendi. Si non inauguratus es, ad hoc navigatro tuo uti potes.

Post haec vestigia erit tibi ad NS, allinone, 3.29 Directory, illic vos should animadverto plures files et directoriis

$ 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

Nunc parati estis ad ns-3 basim distributionem aedificare et ad sectionem in ns-3 aedificando procedere potes.

3.3 Download ns-III usura Git

In codice ns-3 praesto est in Git repositoria in GitLab.com at https://gitlab.com/nsnam/. Group nsnam varia repositoria a fonte aperto incepta colligit.

Repositoria Git facillime incipere usura est ad furca vel clone in environment ns-3-allinone. Haec est copia scriptorum quae onerationem et conventum usorum subsystematum communium administrat. Si Git nova es, verba "furca" et "clone" tibi ignota esse possunt; si ita, commendamus te simpliciter clone (facies exemplar proprium) repositorium in GitLab.com positum sic:

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

Hac in scena conspectum directorium tuorum ns-3-allinone paullo differt a emissione archivi directorii de quo supra. Videre debet aliquid simile hoc;

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

Lorem quod scriptum est download.py, Quod erit additionally extract ns-III et comitante source codice. Hic habes arbitrium, aut download tardus NS III Development Snapshot:

$ python download.py

vel potius ns-III release in usura vexillum -n ad numerum release indicant:

$ python download.py -n ns-3.29

Post hunc gradum ad indicem ns-3-allinone additional repositoria ut downloaded ns-3, quodcumque operandum, pybindgen ΠΈ netanim.

illud
De machina munda Ubuntu16.04, imperium huic mutandum sum; $ sudo python3 download.py -n ns-3.29 (infra notas interpres).

3.3.1 loading ns-III usura coquamus

Supra duo modi (archive fons seu repositio ns-3-allinone per Git) utiles sunt ad institutionem acquirendam simplicissimam ns-3 cum multis additamentis (pybindgen ad generandum pythonem ligamenta et netanim ad animationem retis). Tertium repositorium, dummodo per defaltam in ns-3-allinone vocatur quodcumque operandum.

Coquamus instrumentum est ad coordinatas structuras programmatum ex pluribus repositoriis, evoluta pro ns-3 project. Coquamus adhiberi potest ad versiones evolutionis ns-3, necnon ad tractandas et extruendas extensiones basis versionis distributionis ns-3, sicut ambitus. Direct Code Execution, CradleNetwork simulatio Cradle, Et facultatem creare novum python alligationibus et variis ns-III "apps."

illud
Cavladenetwork simulation cunabula est compage quod sino vos utor realis TCP / IP Network Acervis intus a network simulator.

Si exspectas institutionem tuam ns-3 progressas vel additas notas, hanc institutionem viam sequi potes.

In tardus ns-III solvo Coquamus addita ad tar dimissionem. Remissio limam conformationem includit quae te permittit ut hodiernas versiones programmata software tempore emissionis recipias. Hoc est, exempli gratia, version Coquamus, Quod distribuitur cum release NS-3.29, potest esse retrieve components ut release of NS-III vel ante, sed non potest esse retrieve components ad postea solvo (si sarcina Description for post solvo (si in sarcina Descriptio file bakeconf.xml not updated).

Accipere potes etiam exemplum novissimum quodcumque operandumsequentem mandatum intrando in tuo Linux console (si modo Git installed);

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

Cum curris mandatum git, debes videre aliquid simile sequenti;

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.

Post imperium complet cDNA clone: habere debetis presul nomine quodcumque operandumquorum contenta inspicere aliquid oportet;

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

Nota te complura scripta Pythone, moduli Pythonis nomine, oneratum esse quodcumque operandum et XML configuration file. Proximus gradus est his scriptis utere ut prehendas et constructas ns-3 distributionem electionis tuae. Plures scuta customization praesto sunt:

  1. ns-3.29: moduli emissione debita; componetur similis emissio in tarball;

  2. ns-3-dev: modulus similis, sed utens codice ex arbore evolutionis;

  3. ns-allinone-3.29: A modulus quod includit alia additional features ut click routing et network simulation cunabula, OpenFlow ad NS-III.

  4. ns-3-allinone: versio moduli emissio similis allinonesed ad explicandum codicem.

illud
Click β€” architectura modularis programmatis iter conficiendi.

OpenFlow est protocol ad administrandi processus processus traducitur in notitia network per iter itineris et virgas, effectum software-defined network technology.

Current progressio snapshot (non-release) ns-3 inveniri potest apud:https://gitlab.com/nsnam/ns-3-dev.git.

Tincidunt ea repositoria servare in ordine operationis congruenter, sed in evolutione areae sunt et codicem resolutum continent, quare si novis notis uti non cogitas, tunc officialem missionem elige.

Codicis versionem novissimam invenire potes per indicem repositoriorum pascendo, vel eundo ad ns-3 Releases paginam:https://www.nsnam.org/releases/ Et clicking in tardus poema link. In hoc exemplum non permanere cum NS, 3.29.

Nunc, ut in ns-3 partibus quae nobis opus sunt, instrumento utemur Coquamus. Pauca verba introductoria de opere dicamus Coquamus.

Coquamus opera sarcina fontes in Directory principium et instituendis bibliothecis in presul constructis. Coquamus currere potest per binarium referens, sed si vis currere Coquamus non ex directorio in quo recepta est, iter to . addere expedit quodcumque operandum ad iter (iter environment variabilis), exempli gratia ut sequitur (Exemplum pro Linux Bash Crusta). Ad "coquamus" Directory et posuit sequentibus environment variables:

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

Haec progressio ponet bake.py et testa semita et patitur alia progressio invenire in executables et libraries quod creatus est quodcumque operandum. In casibus nonnullis usu quodcumque operandumPath et PYTHONPATH occasus supra descriptos non requiritur, sed ns-3-allinone (cum fasciculis adiectis) plerumque id requirit.

Vade ad directorium opus tuum et sequentia in console:

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

Deinde rogabimus Coquamus Reprehendo si satis instrumenta ad load in variis components. Dial:

$ ./bake.py check

Videre debes aliquid simile sequenti:

> 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 ...

Speciatim instrumenta fasciculorum qualia sunt Mercurial, CVS, Git et Bazaar in hoc gradu essentiales sunt, sicut nobis permittunt codicem obtinere. Hic, instrumenta absentia more solito institue pro systemate tuo (si scias) vel administratorem systematis tuum pro auxilio contact.

Deinde, programmationem deprimendo experiri:

$ ./bake.py download

effectus debet esse aliquid simile;

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

Hoc vult tres fontes receptae. Nunc ad fontem directorium et typus ls; Videres;

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

Nunc parati es edifica- ns 3 distributionem.

3.4 Conventus ns-3

Ut cum downloads ns-III, sunt aliquot vias aedificare NS-III. Pelagus res nos volo ad commendandam est, quod NS III, quod aedificavit per aedificare tool dicitur WAFinfrascriptis. Most users mos opus WAF, sed pauca sunt scripta habilis ut te adiuvet incipias vel incomplexas aedificationes instituas. Sic placet, antequam legas WAFVide build.py et contionem quodcumque operandum.

3.4.1 aedificationem cum build.py

Cautus esto Hoc aedificare step non solum available a Source Archive versio adeptus ut supra; et non downloaded per git et coxit.

Cum opus cum release Archive tarballapud ns-3-allinone Est scriptura habilis quae faciliorem reddere potest convenientiam. Suus 'dicitur build.py. Haec progressio consilium tibi utilissime erigit. Nihilominus notandum est quod plus proficit et labor cum ns-3 implicat utens ratio aedificandi proprium ns-3, Waf, quod postea in hoc doceo introducetur.

Si per downloaded tarballErgo in Directory ~/workspace directorium cum nomine aliquid simile ns-allinone-3.29. Haec intrant:

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

cum vocantem build.py Argumenta recta iubemus ut exempla et probationes in hoc doceo aedificando adhibitas, quae non sunt aedificata defalta in ns-3. Pro defalta, etiam progressio omnes modulorum promptorum aedificat. Deinde, si vis, sine exemplis ac probationibus ns-3 aedificare potes, vel modulos excludere qui ad opus tuum non necessarii sunt.

Multos epistulas compilator output per scripturam ostendes videbis sicut varias partes quas onerasti aedificat. Primum scriptum conabitur animatoris aedificare netanimergo ligamen generans pybindgen postremo, ns-3. Cum processus perfectus sit, sequentia videas:

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

In ultimis tribus lineis enumerationis videmus nuntium de modulis non aedificatum;

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

Hoc simpliciter significat quosdam ns-3 modulorum qui ab externis bibliothecis pendent aedificari non possunt, vel non requiri ad hanc figuram aedificandam. Hoc non significat simulatorem non congregari vel moduli collecti recte operari.

3.4.2 Building with Bake

Si supra coquendum usus es ad fontem codicem ex repositoriis project, pergere potes ad ns-3 aedificandum uti. Dial:

$ ./bake.py build

et debes videre aliquid simile;

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

auxilium: Facere etiam potes utrumque download et simul gressus aedificare vocando "bake.py explicandam".

Congregatio omnium partium deficere potest, sed conventus perseveret si pars non requiritur. Exempli gratia, exitus portability recens erat castxml colligi potest instrumentum quodcumque operandum non in omnibus suggestis. Hoc in casu, nuntius huius modi apparebit;

>> 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.

autem castxml tantum opus est si ligamenta Pythonis renovata creare vis. Pluribus usoribus non opus est hoc (saltem usque dum commu- ns-3), ut huiusmodi admonitiones nunc tuto negligi possint.

Si defecerit, sequens praeceptum tibi de absentis clientelas admonitum dabit;

$ ./bake.py show

Variae dependentiae fasciculorum quas conaris aedificare enumerabuntur.

3.4.3 aedificate cum Waf

Huc usque ut incipiamus aedificare ns-3, vel scriptione usi sumus build.pyAut instrumentum quodcumque operandum. Haec instrumenta utilia sunt ad aedificandas ns-3 bibliothecas et conservandas. Nam aedificare instrumentum currunt WAF ex directorio ns-3. WAF installed cum fonte codice ns-3. Plerique usores cito moventur ad usum directum ad configurandum et ad ns‑3 convocandum WAF. Ita, ut pergas, quaeso adi ad directorium-ns-3 quem primum creasti.

Hoc hoc tempore stricte non requiritur, sed utile erit paulo retrocedere et videre quomodo mutationes in schematismi figurae vertantur. Probabiliter utilissima configuratione mutatione quam facere potes est versionem optimized codicis creare. Defalta figurasti consilium tuum ut versionem lusione construas. Inspice consilium ad creandum constructum optimized. Ad explicandum Waf quod optimized aedificationes facere debet quae exempla et probationes includunt, necesse erit sequentia mandata currere:

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

Hoc deducet WAF extra presul loci (pro commodo tuo). Primum mandatum expurgat a priore aedificato, hoc plerumque non stricte necessarium, sed bonum est praxis (vide etiam infra profiles aedificare); hoc delebit antea bibliothecas creatas et documenta objecta in indicem indicem posita constructum/. Cum consilium refiguratur et systema aedificandi varias dependentias coercet, outputum his similia videre debes:

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)

Quaeso nota ultimam partem recensionis supra. Nonnullae optiones ns-3 per defaltam non efficiuntur vel systematis sustentationem ad recte functionem requirunt. Exempli gratia, ut XmlTo possit, bibliotheca in systemate adesse debet libxml-2.0. Si haec bibliotheca non inventa est nec functio ns-3 correspondens data est, nuntius ostendetur. Item nota quod potest uti praecepto sudo ut suid frenum "set coetus ID runtime" pro quibusdam programs. Non est enabled per default ideoque haec factura sicut "non est enabled". Denique ut indicem optionum enabledium, utere WAF cum parametri --check-config.

Nunc abeamus et mutemus ad debug constructum continens exempla et probationes.

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

Systema constructum nunc institutum est et debug versiones ns-3 programmatis aedificare potes per typing simpliciter:

$ ./waf

Gradus superius te ad partem systematis ns-3 ratio bis aedificandi compulerunt, nunc scis figuram mutare et codicem optimized facere.

Ad reprimendam quam profile activam est ad certam figuram instituti, mandatum est:

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

Quod supra sem build.py et argumentis sustinet --enable-examples ΠΈ --enable-tests, sed alia bene WAF non directe supportat. Verbi gratia, hoc non operabitur:

$ ./build.py --disable-python

reactionem sic erit:

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

Praecipuus tamen operator - adhiberi potest ad parametri accessiones ad ulteriora transire WAFita loco sequenti praecepto opus erit;

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

quia generat imperium ./waf configurare --disable-python. Hic sunt quidam apicibus plus introductoriis de WAF.

Tractantem aedificare errores

solvo-ns-3 probatae sunt in recentissimis C++ compilatoribus praesto tempore remissionis in distributionibus communibus Linux et MacOS. Attamen per tempus, novae distributiones novis compilatoribus emittuntur, et recentiores compilatores tendunt ut de admonitionibus plus pedanticae fiant. ns-3 configurat suam aedificationem ad omnes admonitiones tamquam errores tractandas, ut interdum si vetustiorem versionem in recentiore systemate curris, admonitio compilator aedificet prohibere potest.

Nam exempli gratia, ibi fuit antea a release of NS, 3.28 ad Fedora XXVIII, quod includitur a major version gcc ((XLIV)DXVII gcc,). Aedificans emissionem ns-3.28 vel versiones anteriores sub Fedora 28, cum Gtk2+ inaugurata, sequens error occurret:

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

Releases incipiens a NS, 3.28.1 in WAF bene competit solvere has difficultates. Disables vexillum "-Werror" in g ++ et clangorem ++ collocans. Haec optio "-disable-werr" est et applicanda in configuration:

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

Configure et Congrega

Quidam mandata WAF significationem habent tantum in schemate de configuratione, et quaedam tantum valent in aedificatione periodi. Exempli gratia, si voles lineamentis aemulationis ns-3 uti, frenum constituere potes meridiem usura sudout supra. Hoc praeceptis scaenicis configurationem vincet, et sic conformationem mutare potes sequenti mandato, quod etiam exempla et probationes includit.

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

Si hoc facere WAF erit launch sudomutare emulation code nervum creaturae progressio currere cum permissionibus radix. Quod WAF Sunt multa alia options praesto ad configuratione et aedificare gradibus. Ut explorarent options, intra:

$ ./waf --help

In sectione sequenti utemur optionibus quibusdam probatis affinibus.

Conventus Profiles

Iam vidimus quomodo configurare potes WAF pro ecclesiis debug ΠΈ optimized:

$ ./waf --build-profile=debug

Est etiam profile conventus intermedius; release. Option -d synonymum est --build-profile. Constructum profanum moderatur usum logging, assertionum et optimizationum virgarum compilator:

ns-3 retis simulator doceo. Caput 3

Sicut vos can animadverto, logging et assertiones non solum available in CETING. Suspendisse usu est ut develop vestri scriptum in Debug modus, tunc perfecte fugit (pro statistics et parameter mutationes) in optimized aedificare profano.

Si codicem habes qui in certis profiles aedificandis solum currere debet, Codice Macroni Wrappero utere:

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;)

Default, WAF loca artificialia in aedificatione presul construunt. Determinare potes alium output Directory utens optionis -β€―-outFor example:

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

Hoc componendo cum perfiles aedificandi, facile potes inter optiones varias compilationum commutare;

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

Quod permittit ut sine multiplicibus conventibus laborare debeas, ut novissimam ecclesiam singulis diebus rescribas. Cum ad aliam profile vertas, WAF et compile non solum, sine totaliter recompiling omnia.

Cum switch aedificare profiles hoc opus esse diligenter dare eadem configuratione options omni tempore. Definiens plures environment variables auxiliatus sum tibi ne errata:

$ 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

Circle et vexilla

In supra exempla WAF facere ns-3 utitur C ++ compilator ex GCC ( g ++). Sed mutare potes unum uteris WAF C++ compilator, definiendo CXX ambitus variabiles. Exempli gratia, uti C++ compilator Clang, clang+,

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

In eodem modo potes configurare WAF ut uti distribuit compilationem DISTICC:

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

Plura de compilatione distcc et distributa inveniri possunt in pagina paginae in sectione Documentationi. Ad compilator vexilla cum ns-3 configurans, CXXFLAGS_EXTRA ambitus variabilis utere.

occasum

WAF adhiberi potest ut in diversis locis systematis instituendi bibliothecas. Defalta compilata bibliothecae et executables in indicem inscripta sunt Γ¦dificemet cum Waf locum harum bibliothecarum et exsecutabilium noverit, nihil opus est ut bibliothecas alibi instituamus.

Si utentes malint instituere extra directorium constructum, mandatum currere possunt install ./waf. Default Praefixum pro institutionem est / Usr / locusigitur install ./waf mos install programs / Usr / locus / bin, bibliothecae in / Usr / locus / lib ac header files in /usr/loci/include. Superuser iura plerumque opus est ut cum praepositione defalta ponatur, ita mandatum typicum esset sudo ./waf install. Cum deductae sunt, Waf primum eliget ut bibliothecas communibus in aedificatione presul utere, deinde bibliothecas per iter ad bibliothecas in ambitu locali configuratas exspectes. Cum igitur bibliothecas in systemate instituere, bene moris est ut ius bibliothecae inhibeantur. Users potest eligere ut installare cum alia praepositione transeundo optionis in configuratione --prefixFor example:

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

Si postea, post Γ¦dificem, user mandatum institutionem intrat ./waf, Prefix erit usus /opt/loci.

bigas ./waf clean ante reconfigurans project utendum erit si institutionem utar WAF sub alia praepositione.

Ita uti ns-3 vocare non est necesse ./waf install. Most users non opus est mandatum quod WAF hodiernas bibliothecas ex aedificatione presul colliget, sed aliqui usores hoc utile reperire possunt si eorum actiones cum programmatis extra directorium ns-3 involvant.

Waf uno

In summo gradu de NS, III Source ligno, ibi est tantum unum Waf script. Semel vos satus opus, vos mos habe multum temporis in Directory scratch/ aut altius insrc/... et simul currere WAF. Vos can iustus memini, ubi vos es et currere WAF ut sequitur:

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

Sed hoc erit taedium et proclivior error, ut meliores solutiones sint. Una communis via est uti textu edito ut emacs aut vimin quibus duae sessiones terminales apertae sunt, una ns-3 edificare adhibetur, altera vero ad fontem codicis recensendum adhibita est. Si modo habent tarball, Deinde in environment variabilis potest auxilium:

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

$ cd scratch 
$ waff build

In directorio moduli tentare posset scriptionem waf trivialem addere exec ../../waf. Quaeso, nolite facere. Hoc confundens pro newbies et cum male ducit ad durum-ut-detect facere errores. Solutions ostensum est supra sunt semita, ut sit usus.

3.5 Testis ns-3

Potes currere ns-3 distributio unitatis probat currit scriptor ./test.py:

$ ./test.py

Haec probat sunt in parallel WAF. Tandem vos should animadverto nuntium dicens:

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

Hoc magni momenti est nuntius ad valgrinos fragores, fragores vel errores cognoscendos, difficultates ostendens cum codice vel repugnantia inter instrumenta et codicem.

Videbis etiam extremum output e WAF et testor currit unumquodque test, quod aliquid simile hoc spectabit;

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)

Praeceptum hoc ab utentibus currere solet ut cito cognoscere possit distributio ns-3 recte aedificata esse. (Nota quod ordo "transeo:..." lineae possunt esse diversae, hoc est normale. Quid interest, quod linea summaria in fine relationis ostendit omnes probationes praetermissas esse; nullae probationes defecerunt vel ingruunt). Et WAFet test.py opus parallelize per coros processus praesto machinae.

3.6 Cursor scriptor

Nos plerumque scripta currere per imperium WAF. Hoc sino aedificare ratio ut participatur bibliotheca semitas sunt recte et quod libraries sunt available at Runtime. Ad currere progressio, simpliciter uti WAF cum parametri -β€―-run. Curramus ns-3 equivalent of ubiquitous programma salve mundiper typing quae sequuntur:

$ ./waf --run hello-simulator

Waf primum inspiciet programmata recte aedificata et si opus est aedificare. deinde WAF programmata faciente sequenti output faciet.

Hello Simulator

Macte! Nunc es ns-3 user!

Quid faciam si eventus non video?

Si vidisti nuntios WAFsignificans constructum feliciter confectum, sed non vides output "Salve simulator"ergo est possibilitas in sectione [Build-with-Waf] quam switched modum ad modum constructum tuum. optimizedSed desiderari switching ad modum debug. Omnes console output usi sunt in hac tutorial ns-3 usibus specialibus componentibus quae logging exercet ac consuetudinis nuntiis ad consolatorium imprimendi adhibetur. Output ex hac parte automatice debilitatum est cum codice optimized componitur - "optimized" est. Si non vides output "Salve Simulator", sequentia ingredere:

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

ut mos WAF facere debug versiones programmatum ns-3, quae exempla et probationes includunt. Debes deinde reficere hodiernam debug versionem Codicis per typing

$ ./waf

Nunc si progressio currere salve, simulator, Vos should animadverto expectata exitum.

3.6.1 Praecipe linea argumentorum

Ut transeamus iubes rationes rectae ad programmata ns-3, hoc exemplo utere:

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

Reponere Ad nomen tuum progressio et argumentis. Ratio -β€―-command-template ad WAF essentialiter facito aedificandi ipsum mandatum versus WAF ad faciendam progressio. Waf compescit ut constructum completum sit, semitas bibliothecae communicatae ponit, deinde proviso mandato linee templates utitur et programmatis nomen substituit pro %s placeholder ad exsecutabile vocandum. Si hanc syntaxin complicatam inveneris, simplicior versio est quae programmatum ns-3 implicat eiusque rationes in singulis sententiis inclusas invenias:

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

Aliud speciatim utile exemplum currit probatio consentanea selective. Sumamus testam sectam quae mytest vocatur (re vera non est). Supra scriptum est ./test.py ut plures probationes in parallelis curramus, quae saepe programmata experimenta vocat test-cursor. Voco test-cursor protinus ad unum test currere:

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

Argumenta ad propositum tradentur test-cursor. Cum mytest non existat, nuntius error generabitur. Imprimere optiones cursoris cursoris praesto, intra:

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

3.6.2 Debugging

Ad currere ns-III programs sub alio utilitatem, ut de debugger (exempli gratia, gdb) vel instrumentum memoriae test (exempli gratia, valgrind) Simili forma utuntur -β€―-command-template = "…". Ut in cursus felis gdb Tua salve, simulator NS III Program cum rationes:

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

Nota quod nomen programmatis ns-3 venit cum argumento -β€―-runac utilitas procuratio gdb) Primum argumentum est in argumento -β€―-command-template. Option -β€―-args tradit gdbquod reliquum mandatum lineae ad "inferiorem" rationem pertinet. (Quaedam versiones gdb non intelligunt per optionem -β€―-args. Hoc in casu, rationes programmatis remove a -β€―-command-template et utere imperio set gdb args.) Hanc recipe et priorem ad probationem sub debugger cohaerere possumus:

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

3.6.3 Opus Directory

WAF debet launched ex loco ad summitatem de NS-III arbore. Hoc folder fit opus Directory ubi output files et scriptum. Sed quid si vis ut ea files extra NS III Source lignum? Usurpatio -β€―-cwd:

$ ./waf --cwd=...

Commodius invenias ut lima output in tuo operando presul. Hoc in casu, haec actio indirecta adiuvare potest;

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

Haec ornamentum prioris versionis praecepti hodiernam directorium laboris conservat, ad indicem pergit WAFet instruit WAF mutare directorium laborantis reducere in directorio currenti servavit antequam programmata inchoaret. Dicimus bigas -β€―-cwd Ad perfectionem, plerique users simpliciter currunt Waf a summo-level directorio et generare output lima ibi.

Continued: Caput 4

Source: www.habr.com