vodič za simulator mreže ns-3. Poglavlja 1,2

Ovaj članak otvara seriju publikacija s prijevodom udžbenika "Izdanje vodiča ns-3 ns-3.29"na mrežnom simulatoru ns-3.

vodič za simulator mreže ns-3. Poglavlja 1,2

Ovaj dokument je prijevod izvornog engleskog dokumenta koji je napisan u restrukturirani tekst za Sfinga i pohranjuje se u imenik doc/tutorial ns-3 izvorni kod.

1 Predgovor
1.1 O ns-3
1.2 Za korisnike ns-2
1.3 Sudjelovanje u projektu
1.4 Organizacija upravljanja
2 Izvori informacija
2.1 Mreža
2.2 Git
2.3 WAF
2.4 Razvojno okruženje
2.5 Programiranje utičnica
3. poglavlje
4. poglavlje
5. poglavlje
6. poglavlje
7. poglavlje
poglavlja 8, 9

Preuzmite prijevod u jednoj pdf datoteci

Primarna dokumentacija za projekt ns-3 dostupna je u pet oblika:

predgovor

Simulator ns-3 je simulator mreže diskretnih događaja namijenjen prvenstveno za istraživačku i obrazovnu upotrebu. Projekt razvoja ns-3 započeo je 2006. godine i projekt je otvorenog koda.

Svrha ovog vodiča je predstaviti ns-3 novim korisnicima na sustavan, strukturiran način. Ponekad početniku može biti teško dobiti potrebne informacije i prevesti ih u radnu simulaciju. U ovom vodiču implementiramo nekoliko primjera simulacije, usput prikazujući i objašnjavajući ključne koncepte i značajke.

Kako budemo napredovali, osigurat ćemo potpunu dokumentaciju za ns-3 i pružiti poveznice na izvorni kod za one koji su zainteresirani za dubinsko razumijevanje načina na koji sustav funkcionira.

Postoji nekoliko ključnih točaka koje treba uočiti na početku:

  • ns-3 je open source, a projekt nastoji održati otvoreno okruženje u kojem istraživači mogu doprinijeti i dijeliti svoj softverski rad.
  • ns-3 nije unatrag kompatibilno proširenje ns-2, to je novi simulator. Oba simulatora su napisana u C++, ali ns-3 je novi simulator koji ne podržava ns-2 API-je.

1.1 O ns-3

Simulator ns-3 dizajniran je da pruži otvorenu, proširivu platformu za simulaciju mreže, istraživanje mreže i obrazovanje. Ukratko, ns-3 pruža modele implementacije i rada mreža paketnih podataka i daje korisniku simulator za provođenje simulacijskih eksperimenata. Razlozi za korištenje ns-3 uključuju situacije u kojima je potrebno provesti istraživanje koje je teško ili nemoguće izvesti na stvarnom sustavu, sposobnost proučavanja ponašanja sustava u visoko kontroliranom okruženju, ponovljivom okruženju i učenje o tome kako mreže funkcioniraju .

Korisnici će primijetiti da je skup modela koji nudi ns-3 usmjeren na simulaciju rada internetskih protokola i mreža, ali ns-3 nije ograničen na internetske sustave; neki korisnici koriste ns-3 za modeliranje sustava koji se ne temelje na internetu.

Dostupni su mnogi alati za modeliranje mreže. Ispod je nekoliko načina na koje se ns-3 uspoređuje s drugim alatima.

  • ns-3 je dizajniran kao skup biblioteka koje se mogu kombinirati zajedno kao i s drugim vanjskim softverskim bibliotekama. Dok neke simulacijske platforme korisnicima pružaju jedno, integrirano okruženje s grafičkim korisničkim sučeljem koje upravlja svim poslom, ns-3 je više modularan u tom pogledu. Uz ns-3 može se koristiti nekoliko vanjskih animatora, alata za analizu podataka i vizualizaciju. Međutim, korisnici mogu očekivati ​​da će raditi na naredbenom retku i s alatima za razvoj softvera C++ i/ili Python.
  • ns-3 se uglavnom koristi u sustavima Linux ili macOS, iako postoji podrška za BSD sustave kao i platforme Windows, sposoban za kompajliranje koda za Linuxkao što su Windows Podsustav za Linux ili Cygwin. Porijeklom iz Windows Visual Studio trenutno nije podržan, iako programer radi na implementaciji ove značajke. Korisnici Windows također može koristiti virtualni stroj s Linux.
  • ns-3 nije službeno podržani softverski proizvod nijedne tvrtke. Podrška za ns-3 pruža se najbolje što možemo na forumu korisnika ns-3 (ns-3-users@googlegroups.com).

1.2 Za korisnike ns-2

Za one koji su upoznati s ns-2 (popularnim alatom koji je prethodio ns-3), najuočljivija vanjska promjena pri prelasku na ns-3 je promjena u skriptnom jeziku. Programi u ns-2 napisani su u OTcl-u, a rezultati simulacije mogu se vizualizirati korištenjem mrežnog animatora nam. U ns-2 nije moguće pokrenuti simulaciju samo iz C++ (to jest, kao main() program bez ikakvog OTcl). Štoviše, neke komponente ns-2 napisane su u C++, dok su druge napisane u OTcl. U ns-3, simulator je u potpunosti napisan u C++ s dodatnim Python vezama. Stoga se simulacijske skripte mogu pisati i u C++ i u Pythonu. Dostupni su novi animatori i rendereri koji se nastavljaju razvijati. Budući da ns-3 generira datoteke praćenja pcap paketa, drugi pomoćni programi se također mogu koristiti za analizu tragova. U ovom vodiču prvo ćemo se usredotočiti na skripte implementirane u C++ i tumačenje rezultata kroz analizu datoteka praćenja.

Ali postoje i sličnosti (na primjer, oba alata temeljena su na C++ objektima, dio ns-2 koda prenesen je na ns-3). Usput ćemo pokušati pokazati razlike između ns-2 i ns-3.

Pitanje koje često čujemo je: "Trebam li i dalje koristiti ns-2 ili nadograditi na ns-3?" Prema autoru, ako korisnik nije na neki način vezan za ns-2 (na temelju postojeće osobne udobnosti i znanja o ns-2, ili na temelju specifičnog simulacijskog modela koji je dostupan samo u ns-2), onda s ns- 3 on će biti produktivniji iz sljedećih razloga:

  • ns-3 se aktivno održava aktivnom, responzivnom korisničkom listom za slanje e-pošte, dok je ns-2 samo malo podržan i nije doživio značajne promjene u svom glavnom stablu koda više od desetljeća.
  • ns-3 pruža značajke koje nisu dostupne u ns-2, kao što je runtime implementacijskog koda (koje korisnicima omogućuje pokretanje stvarnog implementacijskog koda u simulatoru).
  • ns-3 pruža nižu osnovnu razinu apstrakcije od ns-2, što mu omogućuje bolje podudaranje s interakcijom stvarnih sustava. Neka ograničenja pronađena u ns-2 (kao što je ispravna podrška više vrsta sučelja na čvoru) ispravljena su u ns-3.

Zbog svoje duge povijesti, ns-2 ima raznolikiji skup podržanih modula od ns-3. Međutim, ns-3 ima detaljnije modele u nekoliko popularnih istraživačkih područja (uključujući složene LTE i WiFi modele), a podrška za implementacijski kod omogućuje vrlo širok raspon visokokvalitetnih modela. Korisnici bi se mogli iznenaditi kada saznaju da cijeli mrežni stog Linux može se enkapsulirati u ns-3 čvor pomoću okvira za izravno izvršavanje koda (DCE). ns-2 modeli ponekad se mogu prenijeti na ns-3, posebno ako su implementirani u C++.

Ako ste u nedoumici, dobra bi preporuka bila da pogledate oba simulatora (kao i druge simulatore), posebno modele dostupne za vaše istraživanje, ali imajte na umu da bi vaši rezultati mogli biti bolji ako koristite alat koji se trenutno aktivno koristi razvijen i podržan (ns-3).

1.3 Sudjelovanje u projektu

ns-3 je znanstveni i obrazovni simulator za istraživačku zajednicu. Gradit će se na stalnim doprinosima zajednice za razvoj novih modela, uklanjanje pogrešaka ili održavanje postojećih i dijeljenje rezultata. Postoje neke politike za koje se nadamo da će potaknuti ljude da doprinose ns-3 kao što to čine za ns-2:

  • Licenciranje otvorenog koda na temelju kompatibilnosti s GNU GPLv2 licencom.
  • wiki.
  • Stranica Kod suradnika, slično popularnoj stranici za ns-2.
  • Korištenje GitLab.com, uključujući sustav za praćenje problema:
    https://www.gitlab.com/nsnam

Razumijemo da čak i ako čitate ovaj dokument, možda ne planirate sudjelovati u njemu u ovoj fazi. Ali želimo da znate da je davanje doprinosa u duhu projekta i da bismo cijenili vaše povratne informacije, čak i o vašim ranim iskustvima s ns-3 (na primjer, "ovaj dio vodiča nije bio jasan..." ), izvješćivanje o zastarjeloj dokumentaciji ili komentar u kodu, itd... Preferirana metoda za slanje ispravaka je ili napraviti granu (fork) na https://www.gitlab.com/nsnam sa svojim ispravcima i kreirajte zahtjev za spajanje ili kreirajte zahtjev na našem trackeru i dodajte zakrpu.

1.4 Organizacija upravljanja

Ovaj vodič pretpostavlja da bi novi korisnici u početku mogli slijediti nešto poput ovoga:

  • Pokušajte preuzeti i prikupiti kopiju;
  • Pokušajte pokrenuti nekoliko oglednih programa;
  • Pogledajte rezultat simulacije i pokušajte ga prilagoditi.
    U konačnici, pokušali smo organizirati prezentaciju prema ovim koracima.

Poglavlje 2

Izvori informacija

2.1 Mreža

Postoji nekoliko važnih izvora kojih bi svaki korisnik ns-3 trebao biti svjestan. Glavna web stranica nalazi se na: https://www.nsnam.org
te omogućuje pristup osnovnim informacijama o sustavu ns-3. Detaljna dokumentacija dostupna je na glavnoj web stranici na: https://www.nsnam.org/documentation/.

Na istoj web stranici možete pronaći i dokumente vezane uz arhitekturu sustava.

Postoji wiki stranica koja nadopunjuje glavnu ns-3 web stranicu, a koju možete pronaći na: https://www.nsnam.org/wiki/.

Tamo ćete pronaći odgovore na često postavljana pitanja za korisnike i programere, kao i vodiče za rješavanje problema, kôd treće strane, dokumente i još mnogo toga.
Izvorni kod se može pronaći i pogledati na GitLab.com:
https://gitlab.com/nsnam/.

Tamo u spremištu s imenom ns-3-dev nalazi se trenutno stablo razvoja. Prošla izdanja i eksperimentalna spremišta programera kernela također se mogu pronaći pod Mercurialom na staroj stranici projekta na:
http://code.nsnam.org.

2.2 Git

Složeni softverski sustavi trebaju neki način upravljanja organizacijom i promjenom temeljnog koda i dokumentacije. Postoji mnogo načina da se to postigne, a možda ste čuli za neke od sustava koji se obično koriste za postizanje toga. Donedavno je projekt ns-3 koristio Mercurial kao sustav kontrole izvornog koda, no u prosincu 2018. prešli smo na Git. Iako ne morate znati mnogo o Gitu da biste pročitali ovaj vodič, preporučujemo da se upoznate s njim i koristite ga za pristup izvornom kodu. GitLab.com pruža resurse za svladavanje osnovnih vještina na: https://git-scm.com/book/ru/v2.

2.3 WAF

Nakon što preuzmete izvorni kod na svoje računalo, morat ćete ga kompajlirati kako bi program bio spreman za rad. Kao i kod upravljanja izvornim kodom, postoje mnogi alati dostupni za obavljanje ove funkcije. Vjerojatno najpoznatiji od ovih alata je make. Iako je ovaj alat najpoznatiji, treba napomenuti da je najsloženiji kada se koristi u vrlo velikom i vrlo konfigurabilnom sustavu. To je dovelo do razvoja mnogih alternativa. Nedavno su takvi sustavi razvijeni korištenjem jezika Python.

Projekt ns-3 koristi sustav izgradnje Waf. Dio je nove generacije sustava za izradu temeljenih na Pythonu. Da biste izgradili postojeći ns-3 sustav, ne morate poznavati Python.

Za one koje zanimaju pojedinosti o korištenju Wafa, postoji knjiga dostupna na:
https://waf.io/book/
i trenutni kod:
https://gitlab.com/ita1024/waf/.

2.4 Razvojno okruženje

Kao što je gore spomenuto, skripte u ns-3 izvode se u C++ ili Python. Većina ns-3 API-ja dostupna je u Pythonu, ali su modeli svejedno napisani u C++. Ovaj vodič pretpostavlja da ste upoznati s objektno orijentiranim programiranjem u C++. U nastavku ćemo provesti neko vrijeme pregledavajući neke od naprednijih koncepata i možda nepoznatih jezičnih značajki kao što su idiomi i uzorci dizajna. Ne želimo da ovaj vodič postane vodič za C++, stoga očekujemo osnovno razumijevanje jezika. Mnogo je izvora informacija o C++ dostupnih na mreži ili u tisku.

Ako ste novi u C++-u, prije nastavka naučite osnove jezika pomoću vodiča ili web stranice s vodičima ili receptima. Na primjer, ovako: https://github.com/ashtanyuk/CPP-2018.

ispod LinuxSustav ns-3 koristi nekoliko komponenti iz GNU alatnog lanca. Alatni lanac je skup programskih alata dostupnih u određenom softverskom okruženju. Za brzi pregled onoga što je uključeno u GNU alatni lanac, pogledajte http://en.wikipedia.org/wiki/GNU_toolchain.

Simulator ns-3 koristi gcc, GNU binutils i gdb. U isto vrijeme, ne koristimo make ili autotools iz GNU alata za izgradnju projekta. Za ove funkcije koristimo Waf.

В macOS Koristi se Xcode alatni lanac. Korisnicima ns-3 na Macu se toplo preporučuje da instaliraju Xcode i pakete alata naredbenog retka iz Apple App Storea, a za više informacija posjetite wiki stranicu za instalaciju ns-3: (https://www.nsnam.org/wiki/Installation).

Autor ns-3 obično radi u Linux ili Unix-sličnom okruženju. Za one koji rade pod Windows, postoje okruženja koja u različitim stupnjevima oponašaju okruženje LinuxZa takve korisnike, projekt ns-3 je povijesno (ali ne trenutno) podržavao razvoj u Cygwin okruženju. Za detalje o preuzimanju i više informacija o Cygwinu i ns-3 posjetite wiki stranicu ns-3:
http://www.cygwin.com/.

MinGW trenutno nije službeno podržan. Druga alternativa Cygwinu je instalacija virtualnog okruženja, kao što je VMware Server, gdje možete instalirati Linux.

2.5 Programiranje utičnica

Primjeri u ovom tutorialu koristit će osnovne mogućnosti Berkeley Sockets API-ja. Ako ste novi u svijetu socketa, preporučujemo da se upoznate s API-jem i nekim uobičajenim slučajevima upotrebe. Za dobar pregled programiranja socketa, TCP/IP Preporučujemo korištenje: "TCP/IP Utičnice u C", Donahoo i Calvert.

Postoji povezana web stranica koja sadrži izvor primjera u knjizi, a koju možete pronaći na:
http://cs.baylor.edu/~donahoo/practical/CSockets/.

Ako razumijete prva četiri poglavlja knjige (ili za one koji nemaju pristup kopiji knjige, echo klijentima i poslužiteljima prikazanim na gore navedenoj web stranici), to će biti dovoljno za razumijevanje vodiča. Postoji slična knjiga
"Multicast Sockets, Multicast Sockets", Makofske i Almeroth.

Pokriva materijal koji bi vam mogao zatrebati ako proučavate multicast primjere u distribuciji.

Nastavak: 3. poglavlje

Izvor: www.habr.com

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster