{"id":86559,"date":"2020-06-26T19:42:13","date_gmt":"2020-06-26T17:42:13","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12"},"modified":"2020-06-26T19:42:13","modified_gmt":"2020-06-26T17:42:13","slug":"uchebnik-po-simulyatoru-seti-ns-3-glavy-12","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","title":{"rendered":"Manual de simulare a re\u021belei ns-3. Capitolele 1, 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Acest articol deschide o serie de publica\u021bii cu traducerea manualului &quot;<noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/docs\/release\/3.30\/tutorial\/ns-3-tutorial.pdf\">ns-3 Tutorial Release ns-3.29<\/a><\/noindex>&quot; pentru simulatorul de re\u021bele ns-3. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Manual de simulare a re\u021belei ns-3. Capitolele 1, 2\" src=\"\/wp-content\/uploads\/2020\/06\/cddee391ba8763baab6eaa185e081bf6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Acest document este o traducere a documentului original \u00een englez\u0103, care a fost scris \u00een <noindex><a rel=\"nofollow\" href=\"http:\/\/docutils.sourceforge.net\/rst.html\">reStructuredText<\/a><\/noindex> pentru <noindex><a rel=\"nofollow\" href=\"http:\/\/sphinx.pocoo.org\/\">Sphinx<\/a><\/noindex> \u0219i este stocat \u00een directorul <em>doc\/tutorial<\/em> al codului surs\u0103 ns-3.<\/p>\n<p><\/p>\n<p>1 Prefa\u021b\u0103<br \/>\n1.1 Despre ns-3<br \/>\n1.2 Pentru utilizatorii ns-2<br \/>\n1.3 Participarea la proiect<br \/>\n1.4 Organizarea manualului<br \/>\n2 Surse de informa\u021bie<br \/>\n2.1 Re\u021bea<br \/>\n2.2 Git<br \/>\n2.3 WAF<br \/>\n2.4 Mediu de dezvoltare<br \/>\n2.5 Programarea socket-urilor<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497318\/\">capitol 3<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497478\/\">capitol 4<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/498372\/\">capitolul 5<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/500170\/\">capitolul 6<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/507472\/\">capitolul 7<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/507770\/\">capitolele 8, 9<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/508218\/\">Desc\u0103rca\u021bi traducerea \u00eentr-un fi\u0219ier pdf<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Documenta\u021bia ini\u021bial\u0103 pentru proiectul ns-3 este disponibil\u0103 \u00een cinci forme:<\/p>\n<p><\/p>\n<ul>\n<li>Documenta\u021bia API-ului simulatorului: ns-3 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/doxygen\/index.html\">Doxygen<\/a><\/noindex>.<\/li>\n<li>Manual, ghid \u0219i bibliotec\u0103 de modele pentru <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/documentation\/latest\/\">versiunii finale<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/ns-3-dev\/documentation\/\">arborele de dezvoltare<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/wiki\/Main_Page\">Wiki<\/a><\/noindex> ns-3.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<h2 id=\"glava-1\">Capitolul 1<\/h2>\n<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"predislovie\">Prefa\u021b\u0103<\/h3>\n<p><\/p>\n<p>Simulatorul ns-3 este un simulator de re\u021bea cu evenimente discrete, destinat \u00een principal cercet\u0103rii \u0219i utiliz\u0103rii \u00een scopuri educa\u021bionale. Proiectul care dezvolt\u0103 ns-3 a \u00eenceput \u00een 2006 \u0219i este un proiect open-source.<\/p>\n<p><\/p>\n<p>Scopul acestui ghid este de a prezenta ns-3 utilizatorilor noi \u00eentr-o manier\u0103 sistematic\u0103 \u0219i structurat\u0103. Uneori, un \u00eencep\u0103tor poate avea dificult\u0103\u021bi \u00een a ob\u021bine informa\u021biile necesare \u0219i a le transforma \u00een modelare func\u021bional\u0103. \u00cen acest ghid vom implementa c\u00e2teva exemple de modelare, explic\u00e2nd \u0219i eviden\u021biind conceptele \u0219i caracteristicile-cheie pe parcurs.<\/p>\n<p><\/p>\n<p>Pe parcursul prezent\u0103rii, vom oferi documenta\u021bia complet\u0103 pentru ns-3 \u0219i vom include linkuri c\u0103tre codul surs\u0103 pentru cei interesa\u021bi de o \u00een\u021belegere mai profund\u0103 a func\u021bion\u0103rii sistemului.<\/p>\n<p><\/p>\n<p>La \u00eenceput, este important s\u0103 men\u021bion\u0103m c\u00e2teva aspecte cheie:<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 are un cod surs\u0103 deschis, proiectul \u00ee\u0219i propune s\u0103 men\u021bin\u0103 un mediu deschis \u00een care cercet\u0103torii pot contribui \u0219i \u00eemp\u0103rt\u0103\u0219i realiz\u0103rile lor software.<\/li>\n<li>ns-3 nu este o extensie compatibil\u0103 \u00eenapoi cu ns-2, ci un nou simulator. Ambele simulatoare sunt scrise \u00een C++, dar ns-3 reprezint\u0103 un nou simulator care nu suport\u0103 API-urile ns-2.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"11-o-ns-3\">1.1 Despre ns-3<\/h3>\n<p><\/p>\n<p>Simulatorul ns-3 a fost dezvoltat pentru a oferi o platform\u0103 deschis\u0103 \u0219i extensibil\u0103 pentru modelarea re\u021belelor, cercetarea re\u021belilor \u0219i educa\u021bie. Pe scurt, ns-3 ofer\u0103 modele ale modului \u00een care sunt implementate \u0219i func\u021bioneaz\u0103 re\u021belele de transfer de date \u0219i ofer\u0103 utilizatorului un motor de simulare pentru a desf\u0103\u0219ura experimente de simulare. Motivele pentru a utiliza ns-3 pot fi situa\u021bii \u00een care este necesar\u0103 realizarea unei cercet\u0103ri care este dificil\u0103 sau imposibil\u0103 de efectuat pe un sistem real, posibilitatea de a studia comportamentul unei sisteme \u00eentr-un mediu strict controlat \u0219i reproductibil, precum \u0219i de a \u00eenv\u0103\u021ba despre modul \u00een care func\u021bioneaz\u0103 re\u021belele. <\/p>\n<p><\/p>\n<p>Utilizatorii vor observa c\u0103 setul de modele furnizat \u00een ns-3 este concentrat pe modelarea func\u021bion\u0103rii protocoalelor de internet \u0219i a re\u021belelor, dar ns-3 nu este limitat doar la sistemele de internet; unii utilizatori folosesc ns-3 pentru a modela sisteme care nu se bazeaz\u0103 pe tehnologiile internetului.<\/p>\n<p><\/p>\n<p>Exist\u0103 o mul\u021bime de instrumente de modelare a re\u021belelor. Mai jos sunt prezentate c\u00e2teva tr\u0103s\u0103turi distinctive ale ns-3 \u00een compara\u021bie cu alte instrumente.<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 a fost dezvoltat ca un set de biblioteci care pot fi combinate \u00eentre ele, precum \u0219i cu alte biblioteci software externe. \u00cen timp ce unele platforme de modelare ofer\u0103 utilizatorilor un mediu integrat unitar cu o interfa\u021b\u0103 grafic\u0103 de utilizator care gestioneaz\u0103 \u00eentreaga activitate, ns-3 este mai modular \u00een aceast\u0103 privin\u021b\u0103. Cu ns-3 pot fi utilizate mai multe anima\u021bii externe, instrumente de analiz\u0103 a datelor \u0219i vizualizare. Cu toate acestea, utilizatorii se a\u0219teapt\u0103 s\u0103 lucreze \u00een linia de comand\u0103 \u0219i cu instrumente de dezvoltare software C++ \u0219i \/ sau Python.<\/li>\n<li>ns-3 este utilizat \u00een principal \u00een sistemele Linux sau macOS, de\u0219i exist\u0103 suport pentru sistemele BSD, precum \u0219i pentru platformele Windows capabile s\u0103 compileze cod pentru Linux, cum ar fi Windows Subsystem for Linux sau Cygwin. Visual Studio nativ pentru Windows nu este \u00een prezent suportat, de\u0219i dezvoltatorul lucreaz\u0103 la implementarea acestei func\u021bionalit\u0103\u021bi. Utilizatorii Windows pot folosi, de asemenea, o ma\u0219in\u0103 virtual\u0103 cu Linux.<\/li>\n<li>ns-3 nu este un produs software oficial sus\u021binut de vreo companie. Suportul pentru ns-3 este oferit cu maximum de efort pe forumul utilizatorilor ns-3 (ns-3-users@googlegroups.com).<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"12-dlya-polzovateley-ns-2\">1.2 Pentru utilizatorii ns-2<\/h3>\n<p><\/p>\n<p>Pentru cei care sunt familiariza\u021bi cu ns-2 (un instrument popular, predecesor al ns-3), cea mai notabil\u0103 schimbare extern\u0103 la trecerea la ns-3 este schimbarea limbajului de scripting. Programele \u00een ns-2 sunt scrise \u00een OTcl, iar rezultatele simul\u0103rii pot fi vizualizate folosind animatorul de re\u021bea nam. \u00cen ns-2, nu este posibil s\u0103 porne\u0219ti o simulare exclusiv din C++ (adic\u0103 ca un program main() f\u0103r\u0103 nicio OTcl). Mai mult, unele componente ns-2 sunt scrise \u00een C++, iar altele \u00een OTcl. \u00cen ns-3, simulatorul este scris complet \u00een C++ cu leg\u0103turi op\u021bionale Python. Prin urmare, scenariile de simulare pot fi scrise at\u00e2t \u00een C++, c\u00e2t \u0219i \u00een Python. Sunt disponibile noi animatori \u0219i vizualizatori, iar acestea continu\u0103 s\u0103 fie dezvoltate. Deoarece ns-3 genereaz\u0103 fi\u0219iere de urm\u0103rire a pachetelor pcap, se pot utiliza \u0219i alte utilitare pentru a analiza urmele. \u00cen acest ghid, ne vom concentra mai \u00eent\u00e2i pe scenariile implementate \u00een C++ \u0219i interpretarea rezultatelor prin analiza fi\u0219ierelor de urm\u0103rire.<\/p>\n<p><\/p>\n<p>Dar exist\u0103 \u0219i asem\u0103n\u0103ri (de exemplu, ambele instrumente sunt bazate pe obiecte C++, o parte din codul ns-2 a fost portat\u0103 \u00een ns-3). Pe m\u0103sur\u0103 ce ne desf\u0103\u0219ur\u0103m explica\u021biile, vom \u00eencerca s\u0103 eviden\u021biem diferen\u021bele dintre ns-2 \u0219i ns-3.<\/p>\n<p><\/p>\n<p>\u00centrebarea pe care o auzim adesea: &quot;Ar trebui s\u0103 continui s\u0103 folosesc ns-2 sau s\u0103 trec la ns-3?&quot; \u00cen opinia autorului, dac\u0103 utilizatorul nu este legat de ns-2 (pe baza confortului personal existent \u0219i a cuno\u0219tin\u021belor despre ns-2, sau pe baza unei modele specifice de simulare care este disponibil\u0103 doar \u00een ns-2), atunci ns-3 va fi mai productiv din urm\u0103toarele motive:<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 este activ \u00eentre\u021binut cu o list\u0103 de discu\u021bii a utilizatorilor activ\u0103 \u0219i receptiv\u0103, \u00een timp ce ns-2 este sus\u021binut doar superficial \u0219i nu a v\u0103zut modific\u0103ri semnificative \u00een arborele s\u0103u principal de cod de mai bine de zece ani.<\/li>\n<li>ns-3 ofer\u0103 func\u021bii care nu sunt disponibile \u00een ns-2, cum ar fi mediu de execu\u021bie pentru codul de implementare (permi\u021b\u00e2nd utilizatorilor s\u0103 ruleze codul de implementare real \u00een simulator).<\/li>\n<li>ns-3 ofer\u0103 un nivel de abstractizare de baz\u0103 mai sc\u0103zut comparativ cu ns-2, ceea ce \u00eei permite s\u0103 corespund\u0103 mai bine modului \u00een care interac\u021bioneaz\u0103 sistemele reale. Unele limit\u0103ri descoperite \u00een ns-2 (de exemplu, suportul corect pentru mai multe tipuri de interfe\u021be pe un nod) au fost corectate \u00een ns-3.<\/li>\n<\/ul>\n<p><\/p>\n<p>Datorit\u0103 istoriei sale \u00eendelungate, ns-2 dispune de un set mai diversificat de module suportate dec\u00e2t ns-3. Cu toate acestea, ns-3 ofer\u0103 modele mai detaliate \u00een mai multe domenii populare de cercetare (inclusiv modele complexe LTE \u0219i WiFi), iar suportul s\u0103u pentru codul de implementare permite o gam\u0103 foarte larg\u0103 de modele de \u00eenalt\u0103 precizie. Utilizatorii ar putea fi surprin\u0219i s\u0103 afle c\u0103 \u00eentreaga stiv\u0103 de re\u021bea Linux poate fi \u00eencorporat\u0103 \u00eentr-un nod ns-3 utiliz\u00e2nd cadrul de execu\u021bie direct\u0103 a codului (DCE). Modelele din ns-2 pot fi uneori portate \u00een ns-3, \u00een special dac\u0103 acestea au fost implementate \u00een C++.<\/p>\n<p><\/p>\n<p>Dac\u0103 ave\u021bi dubii, o recomandare bun\u0103 ar fi s\u0103 analiza\u021bi ambele simulatoare (precum \u0219i alte simulatoare), \u00een special modelele disponibile pentru cercetarea dumneavoastr\u0103, dar fi\u021bi con\u0219tien\u021bi c\u0103 rezultatul poate fi mai bun folosind un instrument care este \u00een prezent activ dezvoltat \u0219i sus\u021binut (ns-3).<\/p>\n<p><\/p>\n<h3 id=\"13-uchastie-v-proekte\">1.3 Participarea la proiect<\/h3>\n<p><\/p>\n<p>ns-3 este un simulator \u0219tiin\u021bific \u0219i educa\u021bional pentru comunitatea de cercetare. Acesta se va baza pe contribu\u021biile curente ale comunit\u0103\u021bii \u00een dezvoltarea de noi modele, depanarea sau \u00eentre\u021binerea celor existente \u0219i schimbul de rezultate. Exist\u0103 o anumit\u0103 politic\u0103 care, sper\u0103m, va \u00eencuraja oamenii s\u0103 contribuie la ns-3, a\u0219a cum au f\u0103cut pentru ns-2:<\/p>\n<p><\/p>\n<ul>\n<li>Licen\u021biere cu surs\u0103 deschis\u0103 bazat\u0103 pe compatibilitatea cu licen\u021ba GNU GPLv2.<\/li>\n<li>wiki.<\/li>\n<li>Pagina <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pocoo.org\/\">Codul colaboratorilor<\/a><\/noindex>, similar cu pagina popular\u0103 pentru ns-2.<\/li>\n<li>Utilizarea GitLab.com, inclusiv sistemul de urm\u0103rire a erorilor:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.gitlab.com\/nsnam\">https:\/\/www.gitlab.com\/nsnam<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>\u00centelegem c\u0103, chiar \u0219i dac\u0103 citi\u021bi acest document, este posibil s\u0103 nu pl\u0103nuim \u00een acest moment s\u0103 contribui\u021bi la el. Dar dorim s\u0103 \u0219ti\u021bi c\u0103 contribu\u021bia se aliniaz\u0103 cu spiritul proiectului \u0219i c\u0103 feedback-ul dumneavoastr\u0103 va fi valoros, chiar \u0219i \u00een privin\u021ba experien\u021bei timpurii de utilizare a ns-3 (de exemplu, &quot;aceast\u0103 sec\u021biune a manualului nu a fost clar\u0103 ...&quot;), raportarea documenta\u021biei \u00eenvechite sau comentarii \u00een cod etc. Cel mai preferat mod de a trimite corec\u021bii este fie s\u0103 face\u021bi un fork la <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gitlab.com\/nsnam\">https:\/\/www.gitlab.com\/nsnam<\/a><\/noindex> Aceast ghid presupune c\u0103 utilizatorii noi pot ini\u021bial s\u0103 navigheze, de exemplu, pe un astfel de parcurs:<\/p>\n<p><\/p>\n<h3 id=\"14-organizaciya-rukovodstva\">1.4 Organizarea manualului<\/h3>\n<p><\/p>\n<p>\u00cencerca\u021bi s\u0103 desc\u0103rca\u021bi \u0219i s\u0103 aduna\u021bi o copie;<\/p>\n<p><\/p>\n<ul>\n<li>\u00cencerca\u021bi s\u0103 rula\u021bi c\u00e2teva exemple de programe;<\/li>\n<li>\u00cencerca\u021bi s\u0103 rula\u021bi c\u00e2teva exemple de programe;<\/li>\n<li>Vezi rezultatul simul\u0103rii \u0219i \u00eencearc\u0103 s\u0103-l ajustezi.<br \/>\n\u00cen cele din urm\u0103, am \u00eencercat s\u0103 organiz\u0103m prezentarea conform acestor pa\u0219i.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"glava-2\">Capitolul 2<\/h2>\n<p><\/p>\n<h2 id=\"istochniki-informacii\">Surse de informa\u021bie<\/h2>\n<p><\/p>\n<h3 id=\"21-set\">2.1 Re\u021bea<\/h3>\n<p><\/p>\n<p>Exist\u0103 c\u00e2teva resurse importante despre care trebuie s\u0103 \u0219tie orice utilizator al ns-3. Site-ul web principal se afl\u0103 la: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\">https:\/\/www.nsnam.org<\/a><\/noindex><br \/>\n\u0219i ofer\u0103 acces la informa\u021bii de baz\u0103 despre sistemul ns-3. Documenta\u021bia detaliat\u0103 este disponibil\u0103 prin intermediul site-ului principal la: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/documentation\/\">https:\/\/www.nsnam.org\/documentation\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Pe aceea\u0219i pagin\u0103 web, pute\u021bi g\u0103si \u0219i documente referitoare la arhitectura sistemului.<\/p>\n<p><\/p>\n<p>Exist\u0103 o pagin\u0103 wiki care completeaz\u0103 site-ul principal ns-3, pe care o g\u0103si\u021bi la: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/wiki\/\">https:\/\/www.nsnam.org\/wiki\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Acolo ve\u021bi g\u0103si r\u0103spunsuri la \u00eentreb\u0103rile frecvente pentru utilizatori \u0219i dezvoltatori, precum \u0219i ghiduri pentru depanare, cod ter\u021b, documente etc.<br \/>\nCodul surs\u0103 poate fi g\u0103sit \u0219i vizualizat pe GitLab.com:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/nsnam\/\">https:\/\/gitlab.com\/nsnam\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Acolo \u00een depozitul numit <em>ns-3-dev<\/em> se afl\u0103 arborele curent de dezvoltare. Versiunile anterioare \u0219i depozitele experimentale ale dezvoltatorilor nucleului pot fi g\u0103site de asemenea sub Mercurial pe vechiul site al proiectului la:<br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/code.nsnam.org\">http:\/\/code.nsnam.org<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"22-git\">2.2 Git<\/h3>\n<p><\/p>\n<p>Sistemele software complexe necesit\u0103 o modalitate de a gestiona organizarea \u0219i modificarea codului surs\u0103 \u0219i a documenta\u021biei de baz\u0103. Exist\u0103 multe moduri de a realiza acest lucru, iar voi a\u021bi auzit probabil despre unele dintre sistemele folosite \u00een mod obi\u0219nuit pentru aceasta. P\u00e2n\u0103 de cur\u00e2nd, proiectul ns-3 a folosit Mercurial ca sistem de control al versiunilor, dar \u00een decembrie 2018, am trecut la utilizarea Git. De\u0219i nu trebuie s\u0103 \u0219ti\u021bi multe despre Git pentru a citi acest ghid, v\u0103 recomand\u0103m s\u0103 v\u0103 familiariza\u021bi cu el \u0219i s\u0103-l folosi\u021bi pentru a accesa codul surs\u0103. GitLab.com ofer\u0103 resurse pentru a \u00eenv\u0103\u021ba abilit\u0103\u021bile de baz\u0103 la: <noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/book\/ru\/v2\">https:\/\/git-scm.com\/book\/ru\/v2<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"23-waf\">2.3 WAF<\/h3>\n<p><\/p>\n<p>Dup\u0103 ce a\u021bi desc\u0103rcat codul surs\u0103 pe computerul dvs., pentru a ob\u021bine un program func\u021bional, va trebui s\u0103-l compila\u021bi. La fel ca \u00een cazul gestion\u0103rii codului surs\u0103, exist\u0103 o mul\u021bime de instrumente disponibile pentru a \u00eendeplini aceast\u0103 func\u021bie. Cel mai cunoscut dintre aceste instrumente este, probabil, make. De\u0219i acest instrument este cel mai celebru, merit\u0103 men\u021bionat c\u0103 devine cel mai complex de utilizat \u00eentr-o sistem foarte mare \u0219i flexibil configurabil. Acesta a fost motivul pentru care au fost dezvoltate multe alternative. Recent, au fost create astfel de sisteme folosind limbajul Python.<\/p>\n<p><\/p>\n<p>\u00cen proiectul ns-3 se folose\u0219te sistemul de construire Waf. Este o genera\u021bie nou\u0103 de sisteme de construire bazate pe Python. Pentru a construi sistemul existent ns-3, nu trebuie s\u0103 cunoa\u0219te\u021bi Python.<\/p>\n<p><\/p>\n<p>Pentru cei interesa\u021bi de detaliile utiliz\u0103rii Waf, exist\u0103 o carte disponibil\u0103 la:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/waf.io\/book\/\">https:\/\/waf.io\/book\/<\/a><\/noindex><br \/>\n\u0219i codul curent:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/ita1024\/waf\/\">https:\/\/gitlab.com\/ita1024\/waf\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"24-sreda-razrabotki\">2.4 Mediu de dezvoltare<\/h3>\n<p><\/p>\n<p>A\u0219a cum s-a men\u021bionat mai sus, scripturile \u00een ns-3 sunt scrise \u00een C++ sau Python. Majoritatea API-ului ns-3 este disponibil \u00een Python, \u00eens\u0103 modelele sunt scrise \u00een C++. Acest ghid presupune c\u0103 ave\u021bi cuno\u0219tin\u021be despre programarea orientat\u0103 pe obiect \u00een C++. Pe parcursul expunerii, vom dedica ceva timp revizuirii conceptelor mai avansate \u0219i, posibil, unor particularit\u0103\u021bi necunoscute ale limbajului, cum ar fi idiomele \u0219i \u0219abloanele de design. Nu dorim ca acest ghid s\u0103 devin\u0103 un manual de C++, a\u0219a c\u0103 ne a\u0219tept\u0103m la o st\u0103p\u00e2nire de baz\u0103 a limbajului. Exist\u0103 multe surse de informa\u021bii despre C++ disponibile online sau \u00een format tip\u0103rit.<\/p>\n<p><\/p>\n<p>Dac\u0103 sunte\u021bi \u00eencep\u0103tor \u00een C++, \u00eenainte de a continua, \u00eenv\u0103\u021ba\u021bi elementele de baz\u0103 ale limbajului, folosind un manual sau un site web dedicat \u00eenv\u0103\u021b\u0103rii sau re\u021betelor gata f\u0103cute. De exemplu, acesta: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ashtanyuk\/CPP-2018\">https:\/\/github.com\/ashtanyuk\/CPP-2018<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Pe Linux, sistemul ns-3 utilizeaz\u0103 c\u00e2teva componente din instrumenta\u021bia proiectului GNU. Instrumenta\u021bia este un set de unelte de programare disponibile \u00een acest mediu software. Pentru o privire rapid\u0103 asupra a ceea ce este inclus \u00een uneltele GNU, consulta\u021bi. <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/GNU_toolchain\">http:\/\/en.wikipedia.org\/wiki\/GNU_toolchain<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Simulatorul ns-3 folose\u0219te gcc, GNU binutils \u0219i gdb. Totu\u0219i, nu folosim make sau autotools din uneltele GNU pentru a construi proiectul. Pentru aceste func\u021bii, utiliz\u0103m Waf.<\/p>\n<p><\/p>\n<p>Pe macOS se utilizeaz\u0103 un set de instrumente Xcode. Utilizatorii ns-3 pe Mac sunt sf\u0103tui\u021bi s\u0103 instaleze Xcode \u0219i pachetele instrumentelor de linie de comand\u0103 din Apple App Store, precum \u0219i, pentru informa\u021bii suplimentare, s\u0103 viziteze pagina de wiki pentru instalarea ns-3: (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/wiki\/Installation\">https:\/\/www.nsnam.org\/wiki\/Installation<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>\u00cen general, autorul ns-3 lucreaz\u0103 \u00eentr-un mediu Linux sau Unix-like. Pentru cei care lucreaz\u0103 pe Windows, exist\u0103 medii care imit\u0103 \u00eentr-o anumit\u0103 m\u0103sur\u0103 mediul Linux. Pentru ace\u0219ti utilizatori, proiectul ns-3 a sus\u021binut \u00een trecut (dar nu acum) dezvoltarea \u00een mediu Cygwin. Pentru detalii despre desc\u0103rcare \u0219i informa\u021bii suplimentare despre Cygwin \u0219i ns-3, vizita\u021bi pagina wiki ns-3:<br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.cygwin.com\/\">http:\/\/www.cygwin.com\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>MinGW nu este \u00een prezent sus\u021binut oficial. O alt\u0103 alternativ\u0103 la Cygwin este instalarea unui mediu virtual, cum ar fi serverul VMware, unde se poate instala Linux.<\/p>\n<p><\/p>\n<h3 id=\"25-programmirovanie-soketov\">2.5 Programarea socket-urilor<\/h3>\n<p><\/p>\n<p>\u00cen exemplele utilizate \u00een acest ghid, vom folosi func\u021bionalit\u0103\u021bile de baz\u0103 ale API-ului socket-urilor Berkeley. Dac\u0103 sunte\u021bi \u00eencep\u0103tor \u00een socket-uri, v\u0103 recomand\u0103m s\u0103 consulta\u021bi API-ul \u0219i c\u00e2teva cazuri comune de utilizare. Ca o bun\u0103 introducere \u00een programarea socket-urilor TCP\/IP, recomand\u0103m: &quot;TCP\/IP Sockets in C&quot;, Donahoo \u0219i Calvert.<\/p>\n<p><\/p>\n<p>Exist\u0103 un site web asociat care con\u021bine sursa exemplelor din carte, pe care o pute\u021bi g\u0103si la:<br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/cs.baylor.edu\/~donahoo\/practical\/CSockets\/\">http:\/\/cs.baylor.edu\/~donahoo\/practical\/CSockets\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Dac\u0103 \u00een\u021belege\u021bi primele patru capitole ale c\u0103r\u021bii (sau pentru cei care nu au acces la o copie a c\u0103r\u021bii, clien\u021bii \u0219i serverele echo, prezentate pe site-ul web de la linkul de mai sus), aceasta va fi suficient pentru a \u00een\u021belege tutorialul. Exist\u0103 o carte similar\u0103<br \/>\n&quot;Socket-uri Multicast, Socket-uri Multicast&quot;, Makofske \u0219i Almeroth.<\/p>\n<p><\/p>\n<p>Acesta acoper\u0103 materialul de care a\u021bi putea avea nevoie dac\u0103 dori\u021bi s\u0103 studia\u021bi \u00een distribu\u021bia exemplele de multicast.<\/p>\n<p><\/p>\n<p>Continuare: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497318\/\">capitol 3<\/a><\/noindex><\/p>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497106\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release ns-3.29&quot; \u043f\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0441\u0435\u0442\u0435\u0439 ns-3. \u042d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432 reStructuredText \u0434\u043b\u044f Sphinx \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 doc\/tutorial \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 ns-3. 1 \u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435 1.1 \u041e ns-3 1.2 \u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 ns-2 1.3 \u0423\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 1.4 \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 2 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":86560,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-86559","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0423\u0447\u0435\u0431\u043d\u0438\u043a \u043f\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0441\u0435\u0442\u0438 ns-3. \u0413\u043b\u0430\u0432\u044b 1,2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-26T17:42:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-26T17:42:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tutorial pentru simulatorul de re\u021bea ns-3. Capitolele 1,2 | ProHoster","description":"Aceast\u0103 articol deschide o serie de publica\u021bii cu traducerea tutorialului \"ns-3 Tutorial Release.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0423\u0447\u0435\u0431\u043d\u0438\u043a \u043f\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0441\u0435\u0442\u0438 ns-3. \u0413\u043b\u0430\u0432\u044b 1,2 | ProHoster","og:description":"\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-26T17:42:13+00:00","article:modified_time":"2020-06-26T17:42:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"86559","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:48:32","updated":"2022-09-30 06:25:10","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/86559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=86559"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/86559\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/86560"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=86559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=86559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=86559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}