ns-3 sare-simulatzailearen tutoriala. 1,2 kapituluak

Artikulu honek argitalpen sorta bat irekitzen du testu-liburuaren itzulpenarekin "ns-3 Tutorialaren bertsioa ns-3.29"ns-3 sareko simulagailuan.

ns-3 sare-simulatzailearen tutoriala. 1,2 kapituluak

Dokumentu hau ingelesezko jatorrizko dokumentuaren itzulpena da, zeina idatzita zegoen reStructuredText egiteko Sphinx eta direktorioan gordetzen da dok/tutoretza ns-3 iturburu kodea.

1 Hitzaurrea
1.1 ns-3ri buruz
1.2 ns-2 erabiltzaileentzat
1.3 Proiektuan parte hartzea
1.4 Kudeaketa antolamendua
2 Informazio iturriak
2.1 Sarea
2.2 Git
2.3 WAF
2.4 Garapen ingurunea
2.5 Socket programazioa
3. kapitulua
4. kapitulua
5. kapitulua
6. kapitulua
7. kapitulua
kapituluak 8, 9

Deskargatu itzulpena pdf fitxategi batean

ns-3 proiekturako lehen dokumentazioa bost formatan dago eskuragarri:

hitzaurrea

ns-3 simulagailua gertaera diskretuen sare-simulatzailea da, batez ere ikerketarako eta hezkuntzarako erabiltzeko pentsatua. ns-3 garatzen duen proiektua 2006an hasi zen eta kode irekiko proiektua da.

Gida honen helburua ns-3 erabiltzaile berriei modu sistematiko eta egituratuan aurkeztea da. Batzuetan zaila izan daiteke hasiberri bati beharrezko informazioa lortzea eta lan-simulazio batean itzultzea. Tutorial honetan, hainbat simulazio-adibide inplementatzen ditugu, bidean funtsezko kontzeptuak eta ezaugarriak erakutsiz eta azalduz.

Aurrera goazen heinean, ns-3-rako dokumentazio osoa emango dugu eta iturburu-koderako estekak emango dizkiegu sistemaren funtzionamendua sakonean ulertzeko interesa dutenentzat.

Hasieran kontuan hartu beharreko funtsezko puntu batzuk daude:

  • ns-3 kode irekia da, eta proiektua ingurune ireki bat mantentzen ahalegintzen da, non ikertzaileek beren software-lana partekatu eta lagundu dezaketen.
  • ns-3 ez da ns-2ren luzapen atzerakoi bateragarria, simulatzaile berria da. Bi simulagailuak C++-n idatzita daude, baina ns-3 ns-2 APIak onartzen ez dituen simulatzaile berria da.

1.1 ns-3ri buruz

ns-3 simulagailua sarearen simulaziorako, sareko ikerketarako eta hezkuntzarako plataforma ireki eta zabalgarri bat eskaintzeko diseinatu zen. Laburbilduz, ns-3-k datu-paketeen sareak inplementatzen eta funtzionatzen duten ereduak eskaintzen ditu eta erabiltzaileari simulazio-motor bat ematen dio simulazio-esperimentuak egiteko. Ns-3 erabiltzeko arrazoiak honako hauek dira: sistema erreal batean egitea zaila edo ezinezkoa den ikerketa egitea beharrezkoa den egoerak, sistemaren portaera oso kontrolatutako ingurune batean aztertzeko gaitasuna, ingurune erreproduzigarria eta sareen funtzionamenduari buruz ikasteko gaitasuna. .

Erabiltzaileak ohartuko dira ns-3-n emandako ereduen multzoa Interneteko protokoloen eta sareen funtzionamendua simulatzera bideratuta dagoela, baina ns-3 ez da Interneteko sistemetara mugatzen; erabiltzaile batzuek ns-3 erabiltzen dute Interneten oinarritutako sistemak modelatzeko.

Sarean modelatzeko tresna asko daude eskuragarri. Jarraian, ns-3 beste tresna batzuekin alderatzeko modu batzuk daude.

  • ns-3 kanpoko beste software liburutegi batzuekin batera konbina daitezkeen liburutegi multzo gisa diseinatuta dago. Simulazio-plataforma batzuek erabiltzaileei ingurune bakar eta integratua eskaintzen dieten lan guztiak kudeatzen dituen erabiltzaile-interfaze grafiko batekin, ns-3 modularagoa da zentzu honetan. Kanpoko hainbat animatzaile, datuak aztertzeko eta bistaratzeko tresna erabil daitezke ns-3-rekin. Hala ere, erabiltzaileek komando lerroan eta C++ eta/edo Python software garatzeko tresnekin lan egitea espero dezakete.
  • ns-3 batez ere sistemetan erabiltzen da Linux edo macOS, nahiz eta BSD sistemetarako eta plataformetarako euskarria egon Windows, kodea konpilatzeko gai dena Linux, esaterako Windows Azpisistema honetarako Linux edo Cygwin. Jatorriz hemengoa Windows Visual Studio ez da une honetan onartzen, nahiz eta garatzailea funtzio hau ezartzen ari den lanean. Erabiltzaileak Windows makina birtual bat ere erabil dezake Linux.
  • ns-3 ez da inongo enpresaren software produktu ofizialki onartua. ns-3rako laguntza eraginkortasun handienarekin egiten da ns-3 erabiltzaileen foroan (ns-3-users@googlegroups.com).

1.2 ns-2 erabiltzaileentzat

ns-2 ezagutzen dutenentzat (ns-3-ren aurretik zegoen tresna ezaguna), ns-3ra pasatzean kanpoko aldaketa nabariena script-lengoaiaren aldaketa da. ns-2-n programak OTcl-en idazten dira, eta simulazioaren emaitzak nam sareko animatzailea erabiliz ikus daitezke. ns-2n ezin da simulazio bat C++-tik soilik exekutatu (hau da, main() programa gisa OTclrik gabe). Gainera, ns-2-ren osagai batzuk C++-n idazten dira, eta beste batzuk OTcl-en idazten dira. ns-3-n, simulagailua C++-n idatzita dago, aukerako Python loturekin. Beraz, simulazio-scriptak C++ zein Python-en idatz daitezke. Animatzaile eta errendatzaile berriak eskuragarri daude eta garatzen jarraitzen dute. ns-3-k pcap paketeen traza fitxategiak sortzen dituenez, beste utilitate batzuk ere erabil daitezke arrastoak aztertzeko. Tutorial honetan, lehenik eta behin, C++-n inplementatutako scriptetan zentratuko gara eta emaitzak aztarna-fitxategien analisiaren bidez interpretatuko ditugu.

Baina antzekotasunak ere badaude (adibidez, bi tresnak C++ objektuetan oinarritzen dira, ns-2 kodearen zati bat ns-3ra eraman zen). Goazen heinean, ns-2 eta ns-3-ren arteko ezberdintasunak erakusten saiatuko gara.

Askotan entzuten dugun galdera hau da: "ns-2 erabili behar al dut oraindik edo ns-3ra eguneratu?" Egilearen arabera, erabiltzailea nolabait ns-2-ri lotuta ez badago (dagoen erosotasun pertsonalean eta ns-2-ren ezagutzan oinarrituta, edo ns-2n soilik eskuragarri dagoen simulazio-eredu zehatz batean oinarrituta), orduan ns-rekin. 3 produktiboagoa izango da arrazoi hauengatik:

  • ns-3 aktiboki mantentzen da erabiltzailearen posta-zerrenda aktibo eta erantzunkorrarekin, ns-2, berriz, arinki onartzen da eta hamarkada bat baino gehiago ez du aldaketa esanguratsurik ikusi bere kode-zuhaitz nagusian.
  • ns-3-k ns-2n erabilgarri ez diren funtzioak eskaintzen ditu, esate baterako, inplementazio-kodearen exekuzio-denbora (erabiltzaileei benetako inplementazio-kodea exekutatzeko aukera ematen die simulagailuan).
  • ns-3-k ns-2-k ​​baino abstrakzio maila baxuagoa eskaintzen du, sistema errealak nola elkarreragiten duen hobeto etortzeko aukera emanez. ns-2-n aurkitutako muga batzuk (esaterako, nodo batean interfaze mota anitzak behar bezala onartzea) ns-3-n zuzendu dira.

Bere historia luzea dela eta, ns-2-k ​​ns-3-k baino modulu onartuen multzo anitzagoa du. Hala ere, ns-3-k hainbat ikerketa-arlo ezagunetan eredu zehatzagoak ditu (LTE eta WiFi eredu konplexuak barne), eta bere inplementazio-kodearen euskarriak fideltasun handiko eredu sorta zabala ahalbidetzen du. Erabiltzaileak harrituta geratuko dira sare-pila osoa... Linux ns-3 nodo batean kapsulatu daiteke kode exekuzio zuzenaren (DCE) esparrua erabiliz. ns-2 ereduak batzuetan ns-3ra eraman daitezke, batez ere C++-n inplementatu badira.

Zalantzarik izanez gero, gomendio ona litzateke bi simulagailuei (baita beste simulagailu batzuei ere) begirada bat ematea, batez ere zure azterketarako dauden ereduei, baina kontuan izan zure emaitzak hobeak izan daitezkeela une honetan aktiboki ari den tresna bat erabiliz. garatu eta onartzen (ns-3).

1.3 Proiektuan parte hartzea

ns-3 ikerketa-komunitaterako simulatzaile zientifiko eta didaktiko bat da. Komunitatearen etengabeko ekarpenetan oinarrituko da eredu berriak garatzeko, daudenak arazketa edo mantentzeko eta emaitzak partekatzeko. Badira politika batzuk ns-3-n ns-2-n egiten duen bezala jendea bultzatzea espero duguna:

  • GNU GPLv2 lizentziarekin bateragarritasunean oinarritutako kode irekiko lizentziak.
  • wiki.
  • orri Kolaboratzaile kodea, ns-2-ren orrialde ezagunaren antzekoa.
  • GitLab.com erabiliz, arazoen jarraipena egiteko sistema barne:
    https://www.gitlab.com/nsnam

Ulertzen dugu dokumentu hau irakurtzen ari bazara ere, balitekeela fase honetan ekarpenik egiteko asmoa ez egotea. Baina jakitea nahi dugu ekarpenak egitea proiektuaren izpirituan dagoela eta zure iritzia baloratuko genituzkeela, nahiz eta ns-3-rekin izandako lehen esperientziei buruz (adibidez, "tutorialaren atal hau ez zegoen argi..." ), zaharkitutako dokumentazioari buruzko berri ematea edo kodean iruzkin bat, etab... Zuzenketak bidaltzeko hobetsitako metodoa adar bat (sardexka) egitea da. https://www.gitlab.com/nsnam zure zuzenketekin eta bateratze-eskaera sortu, edo sortu eskaera bat gure jarraitzailean eta gehitu adabaki bat.

1.4 Kudeaketa antolamendua

Gida honek suposatzen du erabiltzaile berriek hasiera batean honelako zerbait jarraitu dezaketela:

  • Saiatu kopia bat deskargatzen eta biltzen;
  • Saiatu hainbat programa lagin exekutatzen;
  • Begiratu simulazioaren emaitza eta saiatu doitzen.
    Azken batean, aurkezpena urrats hauen arabera antolatzen saiatu gara.

2 kapitulua

Informazio iturriak

2.1 Sarea

Ns-3 erabiltzaileek jakin beharko luketen hainbat baliabide garrantzitsu daude. Webgune nagusia helbidean dago: https://www.nsnam.org
eta ns-3 sistemari buruzko oinarrizko informaziorako sarbidea eskaintzen du. Dokumentazio zehatza webgune nagusian eskuragarri dago: https://www.nsnam.org/documentation/.

Web orri honetan bertan sistemaren arkitekturarekin lotutako dokumentuak ere aurki ditzakezu.

Bada ns-3 webgune nagusia osatzen duen wiki orri bat, hemen aurki dezakezuna: https://www.nsnam.org/wiki/.

Bertan erabiltzaile eta garatzaileentzako maiz egiten diren galderen erantzunak aurkituko dituzu, baita arazoak konpontzeko gidak, hirugarrenen kodea, dokumentuak eta abar.
Iturburu kodea GitLab.com webgunean aurki eta ikus daiteke:
https://gitlab.com/nsnam/.

Hor biltegian izenarekin ns-3-garapena egungo garapen zuhaitza kokatzen da. Kerneleko garatzaileen iraganeko bertsioak eta biltegi esperimentalak Mercurial-en ere aurki daitezke proiektu zaharreko webgunean:
http://code.nsnam.org.

2.2 Git

Software-sistema konplexuek moduren bat behar dute azpiko kodearen eta dokumentazioaren antolaketa eta aldaketa kudeatzeko. Hori lortzeko modu asko daude, eta hori lortzeko erabili ohi diren sistema batzuen berri izan dezakezu. Duela gutxi arte, ns-3 proiektuak Mercurial erabiltzen zuen iturburu-kodea kontrolatzeko sistema gisa, baina 2018ko abenduan Git erabiltzera pasatu ginen. Gida hau irakurtzeko Git-i buruz asko jakin behar ez duzun arren, ezagutzea eta iturburu-kodea atzitzeko erabiltzea gomendatzen dizugu. GitLab.com-ek oinarrizko gaitasunak menderatzeko baliabideak eskaintzen ditu hemen: https://git-scm.com/book/ru/v2.

2.3 WAF

Iturburu-kodea zure ordenagailura deskargatu ondoren, konpilatu beharko duzu programa exekutatzeko prest izateko. Iturburu-kodearen kudeaketarekin gertatzen den bezala, funtzio hori betetzeko tresna asko daude eskuragarri. Seguruenik, tresna horien artean ezagunena maketa da. Tresna hau ezagunena den arren, kontuan izan behar da konplexuena dela sistema oso handi eta oso konfiguragarrian erabiltzen denean. Horrek alternatiba asko garatzea ekarri du. Duela gutxi, horrelako sistemak Python lengoaia erabiliz garatu dira.

ns-3 proiektuak Waf eraikitze sistema erabiltzen du. Python-en oinarritutako eraikuntza sistemen belaunaldi berri baten parte da. Lehendik dagoen ns-3 sistema bat eraikitzeko, ez duzu Python ezagutu beharrik.

Waf erabiltzeko xehetasunetan interesa dutenentzat, liburu bat dago eskuragarri:
https://waf.io/book/
eta egungo kodea:
https://gitlab.com/ita1024/waf/.

2.4 Garapen ingurunea

Goian esan bezala, ns-3-n scriptak C++ edo Python-en exekutatzen dira. ns-3 API gehienak Python-en daude eskuragarri, baina ereduak C++-n idatzita daude hala ere. Tutorial honek C++-n objektuetara zuzendutako programazioa ezagutzen duzula suposatzen du. Aurrera goazen heinean, denbora pixka bat emango dugu kontzeptu aurreratuagoak eta agian hizkuntzaren ezaugarri ezezagun batzuk berrikusten, esate baterako, idiomak eta diseinu ereduak. Ez dugu nahi gida hau C++ tutorial bihurtzea, beraz, hizkuntzaren oinarrizko ulermena espero dugu. C++-ri buruzko informazio iturri ugari daude sarean edo inprimatuta.

C++-n berria bazara, ikasi hizkuntzaren oinarriak tutorial edo tutorial edo errezeten webgune batekin jarraitu aurretik. Adibidez, honela: https://github.com/ashtanyuk/CPP-2018.

azpian Linuxns-3 sistemak GNU tresna-kateko hainbat osagai erabiltzen ditu. Tresna-katea software ingurune jakin batean eskuragarri dagoen programazio tresna multzoa da. GNU tresna-katean zer sartzen den ikuspegi azkar bat lortzeko, ikus http://en.wikipedia.org/wiki/GNU_toolchain.

ns-3 simulatzaileak gcc, GNU binutils eta gdb erabiltzen ditu. Aldi berean, ez dugu GNU tresnetako make edo autotoolsrik erabiltzen proiektua eraikitzeko. Funtzio hauetarako Waf erabiltzen dugu.

В macOS Xcode tresna-katea erabiltzen da. Mac-eko ns-3 erabiltzaileei gomendatzen zaie Xcode eta komando-lerroko tresna-paketeak Apple App Store-tik instalatzea, eta informazio gehiago lortzeko, bisitatu ns-3 instalazio-wiki orria: (https://www.nsnam.org/wiki/Installation).

Normalean, ns-3-ren egileak hemen lan egiten du: Linux edo Unix antzeko ingurunea. Lan egiten dutenentzat Windows, ingurunea maila desberdinetan imitatzen duten inguruneak daude LinuxErabiltzaile horientzat, ns-3 proiektuak historikoki (baina ez oraingoz) Cygwin inguruneko garapena lagundu du. Deskargatzeko xehetasunak eta Cygwin eta ns-3ri buruzko informazio gehiago lortzeko, bisitatu ns-3 wiki orria:
http://www.cygwin.com/.

MinGW ez da ofizialki onartzen oraingoz. Cygwin-en beste alternatiba bat ingurune birtual bat instalatzea da, hala nola VMware Server, non instalatu dezakezun Linux.

2.5 Socket programazioa

Tutorial honetako adibideek Berkeley Sockets APIaren oinarrizko gaitasunak erabiliko dituzte. Socketetan berria bazara, APIarekin eta ohiko erabilera kasu batzuekin ohitzea gomendatzen dizugu. Socket programazioaren ikuspegi orokor ona lortzeko, TCP/IP Honako hau erabiltzea gomendatzen dugu: "TCP/IP C", Donahoo eta Calvert-eko entxufeak.

Liburuko adibideen iturria duen estekatutako webgune bat dago, hemen aurki dezakezuna:
http://cs.baylor.edu/~donahoo/practical/CSockets/.

Liburuaren lehen lau kapituluak ulertzen badituzu (edo liburuaren kopiarako sarbidea ez dutenentzat, goiko estekatutako webgunean agertzen diren oihartzun bezeroak eta zerbitzariak), hau nahikoa izango da tutoriala ulertzeko. Badago antzeko liburu bat
"Multicast Sockets, Multicast Sockets", Makofske eta Almeroth.

Banaketaren multicast adibideak aztertzen badituzu behar dezakezun materiala biltzen du.

Jarraipena: 3. kapitulua

Iturria: www.habr.com

Erosi hosting fidagarria DDoS babesa duten guneetarako, VPS VDS zerbitzariak 🔥 Erosi webguneentzako ostatu fidagarria DDoS babesarekin, VPS VDS zerbitzariak | ProHoster