Manuali për simulatorin e rrjetit ns-3. Kaptujt 1,2

Ky kjo artikull hap një seri publikimesh me përkthimin e librit të mësimeve "ns-3 Tutorial Shpërndarja ns-3.29" për simulatorin e rrjeteve ns-3.

Manuali për simulatorin e rrjetit ns-3. Kaptujt 1,2

Ky dokument është një përkthim i dokumentit origjinal në anglisht, i shkruar në reStructuredText për Sphinx dhe ruhet në direktorinë doc/tutorial të kodit burimor të ns-3.

1 Parathënie
1.1 Rreth ns-3
1.2 Për përdoruesit e ns-2
1.3 Pjesëmarrja në projekt
1.4 Organizatë e udhëzuesit
2 Burime informacioni
2.1 Rrjeti
2.2 Git
2.3 WAF
2.4 Mjedisi zhvillimi
2.5 Programimi i soketëve
kafsha 3
kafsha 4
kapitulli 5
kapitulli 6
kaptina 7
kapitujt 8, 9

Shkarko përkthimin si një skedar pdf

Dokumentacioni fillestar për projektin ns-3 është në dispozicion në pesë forma:

Parathënie

Simulatori ns-3 është një simulator rrjeti me ngjarje të diskutueshme, i dizajnuar kryesisht për kërkime dhe përdorim në qëllime edukative. Projekti që zhvillon ns-3 filloi në vitin 2006 dhe është një projekt me kod të hapur.

Qëllimi i këtij udhëzuesi është të prezantojë ns-3 për përdoruesit e rinj në një strukturë sistematike. Ndonjëherë nxënësi ka vështirësi në marrjen e informacionit të nevojshëm dhe ta shndërrojë atë në modelizim funksional. Në këtë udhëzues, ne do të realizojmë disa shembuj modelizimi, duke ilustruar dhe shpjeguar konceptet dhe veçoritë kryesore.

Gjatë paraqitjes, ne do të ofrojmë dokumentacion të plotë mbi ns-3 dhe do të japim lidhje me kodin burimor për ata që janë të interesuar në një kuptim më të thellë të funksionimit të sistemit.

Në fillim, është e rëndësishme të theksohen disa pika kyçe:

  • ns-3 ka kod tĂ« hapur, projekti pĂ«rpiqet tĂ« mbĂ«shtesĂ« njĂ« mjedis tĂ« hapur, ku kĂ«rkuesit mund tĂ« kontribuojnĂ« dhe tĂ« ndajnĂ« arritjet e tyre programore.
  • ns-3 nuk Ă«shtĂ« njĂ« zgjerim pĂ«rkatĂ«s i ns-2, Ă«shtĂ« njĂ« simulator i ri. TĂ« dy simulatorĂ«t janĂ« shkruar nĂ« C++, por ns-3 Ă«shtĂ« njĂ« simulator i ri qĂ« nuk mbĂ«shtet interface tĂ« API-sĂ« sĂ« ns-2.

1.1 Rreth ns-3

Simulatori ns-3 është zhvilluar për të ofruar një platformë të hapur dhe të zgjerueshme për modelimin e rrjeteve, kërkimin në rrjet dhe arsimimin. Në thelb, ns-3 ofron modele se si janë realizuar dhe si funksionojnë rrjetet e transfertës së paketave dhe i jep përdoruesit një motor simulues për të kryer eksperimente imituese. Shkaku për të përdorur ns-3 mund të jetë situata kur është e nevojshme të kryhet një kërkim që është e vështirë ose e pamundur të realizohet në një sistem të vërtetë, mundësia për të studiuar sjelljen e sistemit në një ambient rigoroz të kontrolluar, si dhe për të mësuar se si funksionojnë rrjetet.

Përdoruesit do të vërejnë se grupi i modeleve që ofrohet në ns-3 është i fokusuara në modelimin e funksionimit të protokolleve të internetit dhe rrjeteve, por ns-3 nuk është i kufizuar vetëm në sistemet e internetit; disa përdorues e përdorin ns-3 për të modeluar sisteme që nuk janë të bazuara në teknologjitë e internetit.

Ekziston një gamë e gjerë mjetesh për modelimin e rrjeteve. Më poshtë janë disa karakteristika të veçanta të ns-3 krahasuar me mjete të tjera.

  • ns-3 Ă«shtĂ« zhvilluar si njĂ« grup bibliotekash qĂ« mund tĂ« mblidhen sĂ« bashku, si dhe me biblioteka tĂ« tjera softuerike tĂ« jashtme. NdĂ«rsa disa platforma modelimi ofrojnĂ« pĂ«rdoruesve njĂ« ambient tĂ« integruar dhe tĂ« vetĂ«m me njĂ« ndĂ«rfaqe grafike pĂ«rdoruesi qĂ« menaxhon gjithĂ« punĂ«n, ns-3 Ă«shtĂ« mĂ« modulare nĂ« kĂ«tĂ« drejtim. Me ns-3 mund tĂ« pĂ«rdoren disa animatorĂ« tĂ« jashtĂ«m, mjete analize tĂ« dhĂ«nash dhe vizualizimi. MegjithatĂ«, pĂ«rdoruesit presin tĂ« punojnĂ« me linjĂ«n e komandĂ«s dhe me mjete zhvillimi softuerik C++ dhe / ose Python.
  • ns-3 pĂ«rdoret kryesisht nĂ« sistemet Linux ose macOS, megjithĂ«se ka mbĂ«shtetje pĂ«r sistemet BSD, si dhe pĂ«r platformat Windows qĂ« janĂ« nĂ« gjendje tĂ« kompilohet kodi pĂ«r Linux, si Windows Subsystem pĂ«r Linux ose Cygwin. Visual Studio qĂ« Ă«shtĂ« vendas pĂ«r Windows aktualisht nuk mbĂ«shtetet, megjithatĂ« zhvilluesi po punon pĂ«r implementimin e kĂ«saj mundĂ«sie. PĂ«rdoruesit e Windows gjithashtu mund tĂ« pĂ«rdorin njĂ« makinĂ« virtuale me Linux.
  • ns-3 nuk Ă«shtĂ« njĂ« produkt softuerik qĂ« mbĂ«shtetet zyrtarisht nga ndonjĂ« kompani. MbĂ«shtetja pĂ«r ns-3 ofrohet me maksimumin e pĂ«rkushtimit nĂ« forumet e pĂ«rdoruesve tĂ« ns-3 (ns-3-users@googlegroups.com).

1.2 Për përdoruesit e ns-2

Për ata që janë njohur me ns-2 (një mjet popullar që i parapriu ns-3), kalimi në ns-3 ndryshimi më i dukshëm është gjuha e skenarëve. Programet në ns-2 janë shkruar në OTcl, dhe rezultatet e simulimit mund të vizualizohen duke përdorur animatorin e rrjeteve nam. Në ns-2 nuk është e mundur të nisni një simulim ekskluzivisht nga C++ (dmth si një program main() pa asnjë OTcl). Më tej, disa komponente të ns-2 janë shkruar në C++, ndërsa të tjera në OTcl. Në ns-3, simulatori është shkruar plotësisht në C++ me lidhje të opsionale Python. Prandaj, skenaret e simulimit mund të shkruhen si në C++, ashtu edhe në Python. Animatorë dhe vizualizues të rinj janë në dispozicion dhe vazhdojnë të zhvillohen. Meqenëse ns-3 gjeneron skedarë të ndjekjes së paketave pcap, mjete të tjera gjithashtu mund të përdoren për analizimin e ndjekjeve. Në këtë udhëzues, ne fillimisht do të fokusohemi në skenaret e zbatuara në C++ dhe interpreton rezultatin përmes analizës së skedarëve të ndjekjes.

Por ka edhe ngjashmëri (për shembull, të dy mjetet janë të bazuara në objekte C++, një pjesë e kodit të ns-2 është portuar në ns-3). Ndërsa po e paraqesim, ne do të përpiqemi të tregojmë ndryshimet midis ns-2 dhe ns-3.

Një pyetje që ne shpesh e dëgjojmë: "A duhet të vazhdoj të përdor ns-2 apo të kaloj në ns-3?" Sipas autorit, nëse përdoruesi në një mënyrë nuk është i varur nga ns-2 (në bazë të komoditetit personal dhe njohurisë ekzistuese për ns-2, ose në bazë të një modeli të veçantë imitimor që disponohet vetëm në ns-2), atëherë me ns-3 do të jetë më produktiv për këto arsye:

  • ns-3 mbĂ«shtetet aktivisht me njĂ« listĂ« diskutimesh pĂ«rdoruesish aktive dhe reaguese, ndĂ«rsa ns-2 mbĂ«shtetet vetĂ«m lehtĂ« dhe qĂ« mĂ« shumĂ« se dhjetĂ« vjet nuk ka parĂ« ndryshime tĂ« rĂ«ndĂ«sishme nĂ« pemĂ«n e saj tĂ« kodit.
  • ns-3 ofron funksione qĂ« nuk janĂ« tĂ« disponueshme nĂ« ns-2, siç Ă«shtĂ« ambienti pĂ«r ekzekutimin e kodit tĂ« realizimit (duke lejuar pĂ«rdoruesit tĂ« ekzekutojnĂ« kodin e realizimit real nĂ« simulator).
  • ns-3 ofron njĂ« nivel mĂ« tĂ« ulĂ«t bazĂ« tĂ« abstraksionit nĂ« krahasim me ns-2, duke i lejuar atij tĂ« pĂ«rputhet mĂ« mirĂ« me mĂ«nyrĂ«n si ndĂ«rveprojnĂ« sistemet reale. Disa kufizime, tĂ« gjetura nĂ« ns-2 (pĂ«r shembull, mbĂ«shtetje e saktĂ« pĂ«r disa lloje ndĂ«rfaqesh nĂ« nyje) janĂ« rregulluar nĂ« ns-3.

Falë historisë së saj të gjatë, ns-2 ka një gamë më të gjerë modulash të mbështetur se ns-3. Megjithatë, ns-3 ka modele më të detajuara në disa fushat e njohura të kërkimit (përfshirë modelet komplekse LTE dhe WiFi), mbështetja e implementimit të kodit të saj lejon një gamë të gjerë modelesh me saktësi të lartë. Përdoruesit mund të habiten kur mësojnë se e gjithë steka rrjetore Linux mund të inkorporohet në një nyje ns-3 duke përdorur kornizën e ekzekutimit të drejtpërdrejtë të kodit (DCE). Modelet nga ns-2 ndonjëherë mund të portohen në ns-3, veçanërisht nëse ato janë implementuar në C++.

Nëse keni dyshime, një rekomandim i mirë do të ishte të shqyrtonit të dy simuluesit (si dhe simulues të tjerë), veçanërisht modelet e disponueshme për kërkimin tuaj, por mbani në mend se rezultati juaj mund të jetë më i mirë duke përdorur një mjet që aktualisht po zhvillohet dhe mbështetet aktivisht (ns-3).

1.3 Pjesëmarrja në projekt

ns-3 është një simulator edukativo-shkencor për komunitetin kërkues. Ai do të mbështetet në kontributet aktuale të komunitetit në zhvillimin e modeleve të reja, debugimin ose mbështetje për ato ekzistuese dhe shkëmbimin e rezultateve. Ekziston një politikë që shpresojmë se do të nxisë njerëzit të kontribuojnë në ns-3, ashtu siç e bëjnë për ns-2:

  • Licencimi me burim tĂ« hapur bazuar nĂ« pĂ«rputhshmĂ«rinĂ« me licencĂ«n GNU GPLv2.
  • wiki.
  • Faqja Kodi i kontributoreve, e ngjashme me faqen popullore pĂ«r ns-2.
  • PĂ«rdorimi i GitLab.com, duke pĂ«rfshirĂ« sistemin e ndjekjes sĂ« gabimeve:
    https://www.gitlab.com/nsnam

Ne e kuptojmë se nëse madje po e lexoni këtë dokument, ndoshta në këtë fazë nuk po planifikoni të kontribuoni në të. Por duam që të dini se kontributet janë në frymën e projektit dhe se komentet tuaja, edhe për përvojën tuaj të hershme me ns-3 (p.sh., "kjo seksion i manualit nuk ishte e qartë ..."), raportimi i dokumentacionit të vjetëruar ose komentet në kod etj., do të jenë të çmuara për ne. Mënyra e preferuar për të dërguar rregullime është ose të bëni një fork me rregullimet tuaja dhe të krijoni një kërkesë për bashkim, ose të krijoni një kërkesë në tracker-in tonë dhe të shtoni një patch. https://www.gitlab.com/nsnam Ky udhëzues supozon se përdoruesit e rinj mund të fillojnë, për shembull, me këtë rrugë:

1.4 Organizatë e udhëzuesit

Të provoni të shkarkoni dhe të ndërtoni një kopje;

  • TĂ« provoni tĂ« ekzekutoni disa shembuj programesh;
  • TĂ« provoni tĂ« ekzekutoni disa shembuj programesh;
  • Shihni rezultatet e simullimit dhe provoni ta pĂ«rshtatni atĂ«.
    Në fund të fundit, përpiqëm të organizojmë paraqitjen në përputhje me këto hapa.

Kapitulli 2

Burimet e informacionit

2.1 Rrjeti

Ka disa burime të rëndësishme që çdo përdorues i ns-3 duhet të dijë. Webfaqja kryesore ndodhet në adresën: https://www.nsnam.org
dhe ofron akses në informacionin bazë rreth sistemit ns-3. Dokumentacioni i detajuar është i disponueshëm përmes webfaqes kryesore në adresën: https://www.nsnam.org/documentation/.

Në këtë webfaqe, gjithashtu mund të gjeni dokumente lidhur me arkitekturën e sistemit.

Ekziston një faqe wiki që plotëson webfaqen kryesore të ns-3, e cila mund të gjendet në adresën: https://www.nsnam.org/wiki/.

Atje do të gjeni përgjigje të pyetjeve të shpeshta për përdoruesit dhe zhvilluesit, si dhe udhëzime për zgjidhjen e problemeve, kod të palëve të treta, dokumente etj.
Kodine burimor mund ta gjeni dhe ta shihni në GitLab.com:
https://gitlab.com/nsnam/.

Po ashtu në depo të quajtur ns-3-dev ndodhet tregu aktual i zhvillimit. Publikimet e kaluara dhe depo eksperimentale të zhvilluesve të bërthamës gjithashtu mund të gjenden nën Mercurial në faqen e vjetër të projektit në adresën:
http://code.nsnam.org.

2.2 Git

Sistemet komplekse të programimit kanë nevojë për një mënyrë për të menaxhuar organizimin dhe ndryshimet në kodin dhe dokumentacionin themelor. Ka shumë mënyra për ta arritur këtë, dhe ndoshta keni dëgjuar për disa nga sistemet që zakonisht përdoren për këtë. Deri në fund të vitit 2018, projekti ns-3 përdorte Mercurial si sistemin për menaxhimin e kodit burimor, por në dhjetor 2018, ne u kaluam në përdorimin e Git. Megjithëse nuk keni nevojë të dini shumë rreth Git për të lexuar këtë udhëzues, ne rekomandojmë të njiheni me të dhe ta përdorni atë për të hyrë në kodin burimor. GitLab.com ofron burime për të zotëruar aftësitë bazë në adresën: https://git-scm.com/book/ru/v2.

2.3 WAF

Pasi që e keni shkarkuar kodin burimor në kompjuterin tuaj, për të marrë një program të gatshëm për t'u përdorur, do t'ju duhet ta compiloni atë. Ashtu si në rastin e menaxhimit të kodit burimor, ka shumë mjete të disponueshme për ta kryer këtë funksion. Ndoshta mjeti më i njohur nga këto është make. Përveç se ky mjet është më i njohuri, është e rëndësishme të theksohet se ai ndonjëherë është më i komplikuar për t'u përdorur në një sistem shumë të madh dhe fleksibël. Kjo ka qenë arsyeja për zhvillimin e alternativave të shumta. Së fundmi, janë zhvilluar sisteme të tilla duke përdorur gjuhën Python.

Në projektin ns-3, përdoret sistemi i ndërtimit Waf. Ky është një sistem ndërtimi i brezit të ri bazuar në Python. Për të ndërtuar sistemin ekzistues ns-3, nuk do t'ju nevojitet të dini Python.

Për ata që janë të interesuar në detajet e përdorimit të Waf, ekziston një libër i disponueshëm në adresën:
https://waf.io/book/
dhe kodi aktual:
https://gitlab.com/ita1024/waf/.

2.4 Mjedisi zhvillimi

Siç u përmend më parë, skenarët në ns-3 ekzekutohen në C++ ose Python. Pjesa më e madhe e API-së së ns-3 është e disponueshme në Python, por modelet gjithsesi janë shkruar në C++. Ky udhëzues supozon se jeni të njohur me programimin orientuar nga objektet në C++. Ndërsa e prezantojmë, ne do t'i kushtojmë disa kohë një rishikimi të koncepteve më të avancuara dhe ndoshta karakteristikave të panjohura të gjuhës si idiomat dhe modelet e dizajnit. Nuk duam që ky udhëzues të shndërrohet në një tekst mësimor për C++, prandaj presim njohuri bazike të gjuhës. Ka shumë burime informacioni për C++ të disponueshme në internet ose në shtyp.

Nëse jeni fillestar në C++, para se të vazhdoni, mësoni bazat e gjuhës duke përdorur një libër mësimor ose një ueb-faqe që merret me mësimin ose receta të gatshme. Për shembull, një të tillë: https://github.com/ashtanyuk/CPP-2018.

Nën Linux, sistemi ns-3 përdor disa komponentë nga kutia e mjeteve të projektit GNU. Kutia e mjeteve është një grup mjetesh programimi të disponueshme në këtë mjedis softuerik. Për një pasqyrë të shpejtë të asaj që përfshihet në mjetet GNU shihni: http://en.wikipedia.org/wiki/GNU_toolchain.

Simulatori ns-3 përdor gcc, GNU binutils dhe gdb. Ndërkohë, ne nuk përdorim as make dhe as autotools nga mjetet GNU për ndërtimin e projektit. Për këto funksione ne përdorim Waf.

Në macOS përdorim një grup mjetesh Xcode. Përdoruesve të ns-3 në Mac iu rekomandohet fuqishëm të instalojnë Xcode dhe paketat e mjeteve të linjës së komandës nga Apple App Store, si dhe, për më shumë informacion, vizitoni faqen e wiki për instalimin e ns-3: (https://www.nsnam.org/wiki/Installation).

Zakonisht, autori i ns-3 punon në një mjedis Linux ose Unix të ngjashëm. Për ata që punojnë në Windows, ekzistojnë mjedise që në mënyra të ndryshme imitojnë mjedisin Linux. Për përdoruesit e tillë, projekti ns-3 në të kaluarën (por jo aktualisht) mbështeste zhvillimin në mjedisin Cygwin. Për detaje mbi shkarkimin dhe informacionin shtesë mbi Cygwin dhe ns-3, vizitoni faqen e wiki të ns-3:
http://www.cygwin.com/.

MinGW aktualisht nuk mbështetet zyrtarisht. Një alternativë tjetër për Cygwin është instalimi i një mjedisi virtual, si VMware server, ku të instaloni Linux.

2.5 Programimi i soketëve

Në shembujt e përdorur në këtë udhëzues, do të përdorim funksionalitetet bazë të API-së së soketëve Berkeley (Berkeley Sockets). Nëse jeni fillestar në soketë, rekomandojmë të njiheni me API-në dhe disa raste të zakonshme të përdorimit të saj. Si një përmbledhje të mirë të programimit të soketëve TCP/IP, rekomandojmë: "TCP/IP Sockets in C", Donahoo dhe Calvert.

Ekziston një faqe e lidhur, e cila përmban burimin e shembujve në libër, të cilin mund ta gjeni në adresën:
http://cs.baylor.edu/~donahoo/practical/CSockets/.

Nëse kuptoni katër kapitujt e parë të librit (ose për ata që nuk kanë akses në një kopje të librit, klientët dhe serverët e echo, të montruar në faqen e internetit në lidhjen e mësipërme), ky informacion do të jetë i mjaftueshëm për të kuptuar udhëzuesin. Ekziston një libër i ngjashëm
"Multicast Sockets, Multicast Sockets", Makofske dhe Almeroth.

Ai përfshin materialin që mund t'ju nevojitet nëse do të studiojë shembujt e shpërndarjes multicast në distro.

Vijimi: kafsha 3

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster