Kyëta e këtij artikulli hap një seri publikimesh me përkthimin e librit "" mbi simulatorin e rrjeteve ns-3.

Ky dokument është një përkthim i dokumentit origjinal në anglisht, i shkruar në për 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 Organizimi i udhëzuesit
2 Burimet e informacionit
2.1 Rrjeti
2.2 Git
2.3 WAF
2.4 Mjedisi i zhvillimit
2.5 Programimi i soketëve
Dokumentacioni fillestar për projektin ns-3 është i disponueshëm në pesë forma:
- Dokumentacioni i API-së së simulatorit: ns-3 .
- Udhezues, manual dhe bibliotekë modelesh për dhe .
- ns-3.
Kreu 1
Parathënie
Simulatori ns-3 është një simulator rrjeti me ngjarje diskrete, i destinuar kryesisht për kërkime dhe përdorim në arsim. 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ë mënyrë sistematike dhe të strukturuar. Ndonjëherë, një fillestar ka vështirësi në marrjen e informacionit të nevojshëm dhe ta kthejë atë në modelim funksional. Në këtë udhëzues do të realizojmë disa shembuj modelimi, duke treguar dhe shpjeguar konceptet dhe karakteristikat kryesore gjatë procesit.
Gjatë shpjegimit, ne do të prezantojmë dokumentacionin e plotë për ns-3 dhe do të japim lidhjet për kodin burimor për ata që janë të interesuar për një kuptim më të thellë të funksionimit të sistemit.
Fillimisht, duhet të theksohen disa pika kyçe:
- ns-3 ka kod të hapur, projekti kërkon të mbajë një mjedis të hapur ku hulumtuesit mund të kontribuojnë dhe të ndajnë punën e tyre të zhvilluar.
- ns-3 nuk është një zgjerim mbështetës për ns-2, është një simulator i ri. Të dy simulatorët janë të shkruar në C++, por ns-3 është një simulator i ri që nuk mbështet API-të e ns-2.
1.1 Rreth ns-3
Simulatori ns-3 është zhvilluar për të siguruar një platformë të hapur dhe të zgjerueshme për modelimin e rrjeteve, kërkimeve të rrjetit dhe edukimit. Në përmbledhje, ns-3 ofron modele të asaj si janë zbatuar dhe funksionojnë rrjetet e transferimit të paketave dhe i ofron përdoruesit një motor simulatori për të kryer eksperimente simulative. Arsyet për të përdorur ns-3 mund të përfshijnë situata kur është e nevojshme të kryhet një kërkim që është i vështirë ose i pamundur të kryhet në një sistem real, mundësia për të studiuar sjelljen e një sistemi në një ambient të kontrolluar, si dhe të kuptohet se si funksionojnë rrjetet.
Përdoruesit do të vërejnë se grupi i modeleve i ofruar në ns-3 është përqendruar në modelimin e punës së protokollave 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.
Ekzistojnë shumë vegla për modelimin e rrjeteve. Më poshtë janë disa karakteristika të veçanta të ns-3 në krahasim me vegla të tjera.
- ns-3 është zhvilluar si një grup bibliotekash që mund të bashkohen së bashku, si dhe me biblioteka të tjera softuerike të jashtme. Ndërsa disa platforma modelimi ofrojnë përdoruesve një ambient të integruar me një ndërfaqe grafike për të menaxhuar të gjithë punën, ns-3 është më modulare në këtë aspekt. Me ns-3 mund të përdoren disa animatorë të jashtëm, vegla për analizimin e të dhënave dhe për vizualizimin. Megjithatë, përdoruesit duhet të presin të punojnë në një linjë komande dhe me vegla zhvillimi për C++ dhe / ose Python.
- ns-3 përdoret kryesisht në sisteme Linux ose macOS, megjithatë ka mbështetje për sisteme BSD, si dhe për platforma Windows që tregojnë se mund të kompilojnë kod për Linux, si Windows Subsystem për Linux ose Cygwin. Visual Studio natyror për Windows aktualisht nuk mbështetet, megjithatë zhvilluesi po punon për implementimin e kësaj mundësie. Përdoruesit e Windows mund të përdorin gjithashtu një makinë virtuale me Linux.
- ns-3 nuk është një produkt që mbështetet zyrtarisht nga ndonjë kompani. Mbështetja për ns-3 ofrohet me maksimumin e mundshëm në форумin 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ë të njohur me ns-2 (një mjet popullor që parapriu ns-3), ndryshimi më i dukshëm kur kaloni në ns-3 është ndryshimi i gjuhës së skenarëve. Programet në ns-2 janë shkruar në OTcl, dhe rezultatet e simulimeve mund të vizualizohen duke përdorur animatorin e rrjeteve nam. Në ns-2, nuk është e mundur të lansoni një simulim vetëm nga C++ (do të thotë si program main() pa asnjë OTcl). Për më tepër, disa komponentë të ns-2 janë shkruar në C++, dhe të tjerë në OTcl. Në ns-3, simulatori është shkruar tërësisht në C++ me lidhje opsionale në Python. Prandaj, skenarët e simulimit mund të shkruhen si në C++, ashtu edhe në Python. Animatorët dhe vizualizuesit e rinj janë në dispozicion dhe vazhdojnë të zhvillohen. Në këtë udhëzues, fillimisht do të përqendrohemi në skenarët e realizuar në C++ dhe interpretimin e rezultateve përmes analizës së skedarëve të gjurmimit.
Por ka edhe ngjashmëri (p.sh., të dy mjetet janë të bazuara në objekte C++, një pjesë e kodit të ns-2 është portuar në ns-3). Gjatë tregimit, do të përpiqemi të shpjegojmë diferencat midis ns-2 dhe ns-3.
Një pyetje që e dëgjojmë shpesh është: "A duhet të vazhdoj të përdor ns-2 apo të kaloj në ns-3?" Sipas autorit, nëse përdoruesi ndonjëherë nuk është i lidhur me ns-2 (në bazë të komoditetit dhe njohurive ekzistuese me ns-2, ose në bazë të një modeli specifik simulimi që është në dispozicion vetëm në ns-2), atëherë me ns-3 do të jetë më produktiv për arsyet e mëposhtme:
- ns-3 mbështetet aktivisht me një listë postimesh përdoruesish aktive dhe përgjegjëse, ndërsa ns-2 mbështetet vetëm lehtësisht dhe nuk ka parë ndryshime të rëndësishme në degën e saj të kodit për më shumë se dhjetë vjet.
- ns-3 ofron funksione që nuk janë të disponueshme në ns-2, siç është një mjedis ekzekutimi për kodin e zbatimit (që u lejon përdoruesve të ekzekutojnë kodin e vërtetë të implementuar në simulator).
- ns-3 ofron një nivel më të ulët bazik të abstraksionit në krahasim me ns-2, që i lejon atij të përputhet më mirë me mënyrën si bashkëveprojnë sistemet reale. Disa kufizime të gjetura në ns-2 (p.sh., mbështetje e saktë për shumë lloje ndërfaqesh në nod) janë rregulluar në ns-3.
Për shkak të historisë së tij të gjatë, ns-2 ka një gamë më të gjerë modulësh të mbështetur sesa ns-3. Megjithatë, ns-3 ka modele më të detajuara në disa fusha kërkimi të njohura (duke përfshirë modele komplekse LTE dhe WiFi), mbështetje e kodit të implementimit lejon një gamë shumë të gjerë modelesh me saktësi të lartë. Përdoruesit mund të habiten kur kuptojnë se i gjithë steku rrjetit Linux mund të inkorporohet në një nod ns-3 duke përdorur kornizën e drejtpërdrejtë të ekzekutimit të kodit (DCE). Modelet nga ns-2 ndonjëherë mund të portohen në ns-3, veçanërisht nëse ato janë realizuar në C++.
Nëse jeni të pasigurt, një rekomandim i mirë do të ishte të shikoni të dy simulatorët (si dhe simulatorë të tjerë), veçanërisht modelet që janë të disponueshme për kërkimin tuaj, por kini parasysh që rezultati juaj mund të jetë më i mirë duke përdorur një mjet që aktualisht zhvillohet dhe mbështetet aktivisht (ns-3).
1.3 Pjesëmarrja në projekt
ns-3 është një simulator shkencor-arsimor për komunitetin kërkues. Ai do të mbështetet në kontributet aktuale të komunitetit në zhvillimin e modeleve të reja, riparimin ose mbështetje ekzistuese dhe ndarjen e rezultateve. Ka një politikë të caktuar që shpresojmë se do të inkurajojë njerëzit të kontribuojnë në ns-3, siç bëjnë për ns-2:
- Licencimi me kod të hapur në bazë të pajtueshmërisë me licencën GNU GPLv2.
- wiki.
- Faqja , i ngjashëm me faqen e njohur për ns-2.
- Përdorimi i GitLab.com, përfshirë sistemin e ndjekjes së gabimeve:
Ne e kuptojmë se edhe nëse po e lexoni këtë dokument, ndoshta në këtë fazë nuk po planifikoni të kontribuoni. Por ne duam që ju të dini se kontribuimi është në frymën e projektit dhe se për ne do të jetë e çmuar pikëpamja juaj, madje edhe për përvojën tuaj të hershme me ns-3 (p.sh., "ky seksion i manualit nuk ishte i qartë ..."), raportimi i dokumentacionit të vjetruar ose një koment në kod etj... Mënyra e preferuar për të dërguar korrigjime është ose të bëni një deponim (fork) në me korrigjimet tuaja dhe të krijoni një kërkesë për bashkim, ose të krijoni një kërkesë në ndjekësin tonë dhe të shtoni patch.
1.4 Organizimi i udhëzuesit
Ky manual supozon se përdoruesit e rinj mund të fillojnë, për shembull, nga ky rrugë:
- Të përpiqen të shkarkojnë dhe ndërttojnë një kopje;
- Të përpiqen të ekzekutojnë disa shembuj programesh;
- Të shikojnë rezultatin e simulimit dhe të përpiqen ta rregullojnë atë.
Në fund, ne u përpoqëm të organizonim përshkrimin sipas këtyre hapave.
Kreu 2
Burimet e informacionit
2.1 Rrjeti
Ka disa burime të rëndësishme që çdo përdorues i ns-3 duhet të dijë. Web-faqja kryesore ndodhet në adresën:
dhe ofron qasje në informacionin bazë mbi sistemin ns-3. Dokumentacioni i detajuar është në dispozicion nëpërmjet web-faqes kryesore në adresën: .
Në këtë web-faqe do të gjeni gjithashtu dokumente që lidhen me arkitekturën e sistemit.
Ekziston një faqe wiki që plotëson web-faqen kryesore të ns-3, e cila mund të gjendet në adresën: .
Aty do të gjeni përgjigje për pyetjet e shpeshta për përdoruesit dhe zhvilluesit, si dhe udhëzime për zgjidhjen e problemeve, kod të jashtëm, dokumente etj.
Kodi burim mund të gjendet dhe shikohet në GitLab.com:
.
Atje ndodhet gjithashtu repozitori i emërtuar ns-3-dev ku është struktura aktuale e zhvillimit. Versionet e kaluara dhe repozitorët eksperimentalë të zhvilluesve të bërthamës gjithashtu mund të gjenden nën Mercurial në web-faqen e vjetër të projektit në adresën:
.
2.2 Git
Sistemet programore komplekse kanë nevojë për një mënyrë për të menaxhuar organizimin dhe ndryshimet në kodin dhe dokumentacionin bazë. Ekzistojnë 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ë qëllim. Deri kohët e fundit, projekti ns-3 përdorte Mercurial si sistemin e menaxhimit të kodit burim, por në dhjetor 2018, ne kaluam në përdorimin e Git. Megjithëse për të lexuar këtë udhëzim nuk keni nevojë të dini shumë rreth Git, ne rekomandojmë që të njiheni me të dhe ta përdorni për të aksesuar kodin burim. GitLab.com ofron burime për të zotëruar aftësitë bazë në adresën: .
2.3 WAF
Pasi të keni shkarkuar kodin burim në kompjuterin tuaj, për të marrë programin gati për punë, do t'ju duhet ta kompiloni atë. Ashtu si në rastin e menaxhimit të kodit burim, për të kryer këtë funksion janë në dispozicion shumë mjete. Ndër mjetet më të njohura është make. Ndërsa ky mjet është më i njohuri, duhet të theksohet që ai është më i komplikuar në përdorim në një sistem shumë të madh dhe fleksibël. Kjo ka çuar në zhvillimin e shumë alternativave. Kohët e fundit, janë zhvilluar sisteme të tilla duke përdorur gjuhën Python.
Në projektin ns-3 përdoret sistemi i ndërtimit Waf. Është një nga gjeneratat e reja të sistemeve të ndërtimit të bazuara 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, ka një libër në dispozicion në adresën:
dhe kodi aktual:
.
2.4 Mjedisi i zhvillimit
Siç u përmend më lart, skenarët në ns-3 ekzekutohen në C++ ose Python. Shumica e API-ve të ns-3 janë të bëra në Python, por modelet për çdo rast janë shkruar në C++. Ky udhëzues supozon që ju jeni të njohur me programimin orientuar në objekte në C++. Në vazhdim të përshkrimit, ne do t'i kushtojmë pak kohë për të shqyrtuar konceptet më të avancuara dhe ndoshta karakteristikat e panjohura të gjuhës si idiomat dhe modelet e dizajnit. Ne nuk dëshirojmë që ky udhëzues të shndërrohet në një tekst mësimor për C++, prandaj ne presim njohuri bazë mbi gjuhën. Ekzistojnë shumë burime informacioni mbi C++ të disponueshme në internet ose në versionin print.
Nëse jeni të rinj në C++, atëherë para se të vazhdoni, mësoni bazat e gjuhës duke përdorur një libër ose një web-faqe të dedikuar për mësimin ose receta të gatshme. Për shembull, një e tillë: .
Në Linux, sistemi ns-3 përdor disa komponentë nga veglat e projektit GNU. Veglat janë 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 shih. .
Simuluesi ns-3 përdor gcc, GNU binutils dhe gdb. Në të njëjtën kohë, ne nuk përdorim për ndërtimin e projektit as make, as autotools nga mjetet GNU. Për këto funksione ne përdorim Waf.
Në macOS përdoret një grup mjetesh të Xcode. Përdoruesve të ns-3 në Mac u rekomandohet të instalojnë Xcode dhe paketat e mjeteve të komandës nga Apple App Store, dhe gjithashtu, për informacion të mëtejshëm, vizitoni faqen wiki për instalimin e ns-3: ().
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ë imitojnë në mënyrë të ndryshme ambientin Linux. Për këta përdorues, projekti ns-3 në të kaluarën (por jo aktualisht) mbështeti zhvillimin në mjedisin Cygwin. Për detaje rreth shkarkimit dhe informacionit të mëtejshëm mbi Cygwin dhe ns-3, vizitoni faqen wiki të ns-3:
.
MinGW aktualisht nuk mbështetet zyrtarisht. Një alternativë tjetër për Cygwin është instalimi i një mjedisi virtual, si VMware server, ku mund 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ë soketeve Berkeley (Berkeley Sockets). Nëse jeni fillestar me soketet, ju rekomandojmë të njiheni me API-në dhe disa raste të zakonshme të përdorimit të tyre. Si një përmbledhje të mirë të programimit të soketeve TCP/IP, rekomandojmë: "TCP/IP Sockets in C", Donahoo dhe Calvert.
Ekziston një faqe web e lidhur që përmban burimin e shembujve në libër, e cila mund të gjendet në:
.
Nëse kuptoni katër kapitujt e parë të librit (ose për ata që nuk kanë qasje në një kopje të librit, klientët dhe serverët echo që janë treguar në faqe në lidhje me lart, do të mjaftojnë për të kuptuar udhëzimin. Ekziston një libër i ngjashëm
"Multicast Sockets, Multicast Sockets", Makofske dhe Almeroth.
Ai mbulon materialin që mund t’ju nevojitet nëse dëshironi të studioni në distribucionin e shembujve të shumëadresimit.
Vazhdimi:
Burimi: habr.com
