{"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\/pl\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","title":{"rendered":"Podr\u0119cznik do symulatora sieci ns-3. Rozdzia\u0142y 1, 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ten artyku\u0142 otwiera seri\u0119 publikacji z t\u0142umaczeniem podr\u0119cznika \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/docs\/release\/3.30\/tutorial\/ns-3-tutorial.pdf\">ns-3 Tutorial Wydanie ns-3.29<\/a><\/noindex>\" dotycz\u0105cego symulatora sieci ns-3. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Podr\u0119cznik do symulatora sieci ns-3. Rozdzia\u0142y 1, 2\" src=\"\/wp-content\/uploads\/2020\/06\/cddee391ba8763baab6eaa185e081bf6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dokument ten jest t\u0142umaczeniem oryginalnego dokumentu w j\u0119zyku angielskim, kt\u00f3ry napisano w <noindex><a rel=\"nofollow\" href=\"http:\/\/docutils.sourceforge.net\/rst.html\">reStructuredText<\/a><\/noindex> do <noindex><a rel=\"nofollow\" href=\"http:\/\/sphinx.pocoo.org\/\">Sphinx<\/a><\/noindex> i znajduje si\u0119 w katalogu <em>doc\/tutorial<\/em> kodu \u017ar\u00f3d\u0142owego ns-3.<\/p>\n<p><\/p>\n<p>1 Wst\u0119p<br \/>\n1.1 O ns-3<br \/>\n1.2 Dla u\u017cytkownik\u00f3w ns-2<br \/>\n1.3 Udzia\u0142 w projekcie<br \/>\n1.4 Organizacja podr\u0119cznika<br \/>\n2 \u0179r\u00f3d\u0142a informacji<br \/>\n2.1 Sie\u0107<br \/>\n2.2 Git<br \/>\n2.3 WAF<br \/>\n2.4 \u015arodowisko programistyczne<br \/>\n2.5 Programowanie gniazd<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497318\/\">rozdzia\u0142 3<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497478\/\">rozdzia\u0142 4<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/498372\/\">rozdzia\u0142 5<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/500170\/\">rozdzia\u0142 6<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/507472\/\">rozdzia\u0142 7<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/507770\/\">rozdzia\u0142y 8, 9<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/508218\/\">Pobierz t\u0142umaczenie w jednym pliku pdf<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Podstawowa dokumentacja projektu ns-3 jest dost\u0119pna w pi\u0119ciu formatach:<\/p>\n<p><\/p>\n<ul>\n<li>Dokumentacja API symulatora: ns-3 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/doxygen\/index.html\">Doxygen<\/a><\/noindex>.<\/li>\n<li>Podr\u0119cznik, przewodnik i biblioteka modeli dla <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/documentation\/latest\/\">ostatniej wersji<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/ns-3-dev\/documentation\/\">drzewa rozwoju<\/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\">Rozdzia\u0142 1<\/h2>\n<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"predislovie\">Wst\u0119p<\/h3>\n<p><\/p>\n<p>Symulator ns-3 to symulator sieci oparty na zdarzeniach dyskretnych, zaprojektowany g\u0142\u00f3wnie do bada\u0144 i zastosowa\u0144 edukacyjnych. Projekt rozwijaj\u0105cy ns-3 rozpocz\u0105\u0142 si\u0119 w 2006 roku i jest projektem typu open source.<\/p>\n<p><\/p>\n<p>Celem tego przewodnika jest wprowadzenie ns-3 nowym u\u017cytkownikom w spos\u00f3b systematyczny i uporz\u0105dkowany. Czasami nowicjuszowi trudno jest uzyska\u0107 potrzebne informacje i przekszta\u0142ci\u0107 je w dzia\u0142aj\u0105ce modelowanie. W tym przewodniku zrealizujemy kilka przyk\u0142ad\u00f3w modelowania, jednocze\u015bnie przedstawiaj\u0105c i wyja\u015bniaj\u0105c kluczowe poj\u0119cia i cechy.<\/p>\n<p><\/p>\n<p>W miar\u0119 post\u0119pu przedstawimy pe\u0142n\u0105 dokumentacj\u0119 ns-3 i udzielimy odno\u015bnik\u00f3w do kodu \u017ar\u00f3d\u0142owego dla tych, kt\u00f3rzy s\u0105 zainteresowani g\u0142\u0119bszym zrozumieniem dzia\u0142ania systemu.<\/p>\n<p><\/p>\n<p>Na pocz\u0105tku warto zaznaczy\u0107 kilka kluczowych punkt\u00f3w:<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 ma otwarty kod \u017ar\u00f3d\u0142owy, projekt d\u0105\u017cy do utrzymania otwartego \u015brodowiska, w kt\u00f3rym badacze mog\u0105 przyczyni\u0107 si\u0119 i podzieli\u0107 swoimi osi\u0105gni\u0119ciami programistycznymi.<\/li>\n<li>ns-3 nie jest wstecznie zgodnym rozszerzeniem ns-2, to nowy symulator. Oba symulatory s\u0105 napisane w C++, ale ns-3 to nowy symulator, kt\u00f3ry nie obs\u0142uguje interfejs\u00f3w API ns-2.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"11-o-ns-3\">1.1 O ns-3<\/h3>\n<p><\/p>\n<p>Symulator ns-3 zosta\u0142 stworzony, aby zapewni\u0107 otwart\u0105, rozszerzaln\u0105 platform\u0119 do modelowania sieci, bada\u0144 sieciowych i edukacji. W skr\u00f3cie, ns-3 dostarcza modele tego, jak dzia\u0142aj\u0105 sieci pakietowe i daje u\u017cytkownikowi silnik symulacyjny do przeprowadzania eksperyment\u00f3w symulacyjnych. Powody korzystania z ns-3 mog\u0105 obejmowa\u0107 sytuacje, w kt\u00f3rych trzeba przeprowadzi\u0107 badania, kt\u00f3re s\u0105 trudne lub niemo\u017cliwe do wykonania w rzeczywistym systemie, a tak\u017ce mo\u017cliwo\u015b\u0107 badania zachowania systemu w \u015bci\u015ble kontrolowanym i reprodukowalnym \u015brodowisku oraz zrozumienie, jak dzia\u0142aj\u0105 sieci. <\/p>\n<p><\/p>\n<p>U\u017cytkownicy zauwa\u017c\u0105, \u017ce zestaw modeli dostarczany w ns-3 jest skoncentrowany na modelowaniu protoko\u0142\u00f3w internetowych i sieci, ale ns-3 nie ogranicza si\u0119 tylko do system\u00f3w internetowych; niekt\u00f3rzy u\u017cytkownicy korzystaj\u0105 z ns-3 do modelowania system\u00f3w niezwi\u0105zanych z technologiami internetowymi.<\/p>\n<p><\/p>\n<p>Istnieje wiele narz\u0119dzi do modelowania sieci. Poni\u017cej przedstawiono kilka charakterystycznych cech ns-3 w por\u00f3wnaniu do innych narz\u0119dzi.<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 zosta\u0142 zaprojektowany jako zbi\u00f3r bibliotek, kt\u00f3re mo\u017cna \u0142\u0105czy\u0107 razem, a tak\u017ce z innymi zewn\u0119trznymi bibliotekami oprogramowania. Podczas gdy niekt\u00f3re platformy modeluj\u0105ce oferuj\u0105 u\u017cytkownikom jednolite zintegrowane \u015brodowisko z graficznym interfejsem u\u017cytkownika zarz\u0105dzaj\u0105cym ca\u0142ym przebiegiem pracy, ns-3 jest w tym zakresie bardziej modu\u0142owy. Z ns-3 mog\u0105 by\u0107 u\u017cywane r\u00f3\u017cne zewn\u0119trzne animatory, narz\u0119dzia analizy danych i wizualizacji. Niemniej jednak u\u017cytkownicy musz\u0105 si\u0119 przygotowa\u0107 na prac\u0119 w wierszu polece\u0144 oraz z narz\u0119dziami programistycznymi C++ i\/lub Python.<\/li>\n<li>ns-3 jest g\u0142\u00f3wnie u\u017cywany w systemach Linux lub macOS, chocia\u017c istnieje wsparcie dla system\u00f3w BSD oraz platform Windows, kt\u00f3re mog\u0105 kompilowa\u0107 kod dla Linuxa, takich jak Windows Subsystem for Linux lub Cygwin. Wersja natywna dla Windows, Visual Studio, nie jest obecnie wspierana, chocia\u017c programi\u015bci pracuj\u0105 nad wdro\u017ceniem tej funkcjonalno\u015bci. U\u017cytkownicy Windows mog\u0105 r\u00f3wnie\u017c korzysta\u0107 z maszyny wirtualnej z Linuxem.<\/li>\n<li>ns-3 nie jest oficjalnie wspieranym produktem \u017cadnej firmy. Wsparcie dla ns-3 jest realizowane z maksymalnym zaanga\u017cowaniem na forum u\u017cytkownik\u00f3w ns-3 (ns-3-users@googlegroups.com).<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"12-dlya-polzovateley-ns-2\">1.2 Dla u\u017cytkownik\u00f3w ns-2<\/h3>\n<p><\/p>\n<p>Dla os\u00f3b, kt\u00f3re znaj\u0105 ns-2 (popularne narz\u0119dzie, kt\u00f3re poprzedza\u0142o ns-3), najwa\u017cniejsz\u0105 zewn\u0119trzn\u0105 zmian\u0105 przy przej\u015bciu na ns-3 jest zmiana j\u0119zyka skryptowego. Programy w ns-2 s\u0105 napisane w OTcl, a wyniki symulacji mo\u017cna wizualizowa\u0107 za pomoc\u0105 animatora sieci nam. W ns-2 nie mo\u017cna uruchomi\u0107 symulacji wy\u0142\u0105cznie z C++ (to znaczy jako program main() bez jakiegokolwiek OTcl). Ponadto niekt\u00f3re komponenty ns-2 s\u0105 napisane w C++, a inne w OTcl. W ns-3 symulator jest napisany w ca\u0142o\u015bci w C++ z opcjonalnymi powi\u0105zaniami Python. Dlatego skrypty symulacyjne mog\u0105 by\u0107 pisane zar\u00f3wno w C++, jak i w Pythonie. Dost\u0119pne s\u0105 nowe animatory i wizualizatory, kt\u00f3re s\u0105 nadal rozwijane. Poniewa\u017c ns-3 generuje pliki \u015bledzenia pakiet\u00f3w pcap, mo\u017cna u\u017cywa\u0107 r\u00f3wnie\u017c innych narz\u0119dzi do analizy tras. W tym przewodniku najpierw skupimy si\u0119 na skryptach zaimplementowanych w C++ i interpretacji wynik\u00f3w poprzez analiz\u0119 plik\u00f3w \u015bledzenia.<\/p>\n<p><\/p>\n<p>Ale istniej\u0105 te\u017c podobie\u0144stwa (na przyk\u0142ad oba narz\u0119dzia opieraj\u0105 si\u0119 na obiektach C++, cz\u0119\u015b\u0107 kodu ns-2 zosta\u0142a przeniesiona do ns-3). W miar\u0119 przedstawiania postaramy si\u0119 pokaza\u0107 r\u00f3\u017cnice mi\u0119dzy ns-2 a ns-3.<\/p>\n<p><\/p>\n<p>Pytanie, kt\u00f3re cz\u0119sto s\u0142yszymy: \"Czy powinienem wci\u0105\u017c u\u017cywa\u0107 ns-2, czy przej\u015b\u0107 na ns-3?\" Wed\u0142ug autora, je\u017celi u\u017cytkownik nie jest w \u017caden spos\u00f3b przywi\u0105zany do ns-2 (ze wzgl\u0119du na osobisty komfort i znajomo\u015b\u0107 ns-2 lub na podstawie konkretnego modelu symulacyjnego, kt\u00f3ry jest dost\u0119pny tylko w ns-2), to z ns-3 b\u0119dzie bardziej produktywny z nast\u0119puj\u0105cych powod\u00f3w:<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 jest aktywnie wspierany przez aktywn\u0105, responsywn\u0105 list\u0119 dyskusyjn\u0105 u\u017cytkownik\u00f3w, podczas gdy ns-2 jest wspierany jedynie lekko i od ponad dziesi\u0119ciu lat nie widzia\u0142 znacz\u0105cych zmian w swoim g\u0142\u00f3wnym drzewie kodu.<\/li>\n<li>ns-3 oferuje funkcje niedost\u0119pne w ns-2, takie jak \u015brodowisko uruchamiania kodu realizacji (pozwalaj\u0105ce u\u017cytkownikom uruchamia\u0107 w symulatorze rzeczywisty kod realizacji).<\/li>\n<li>ns-3 zapewnia ni\u017cszy podstawowy poziom abstrakcji w por\u00f3wnaniu do ns-2, co pozwala mu lepiej odpowiada\u0107 na to, jak rzeczywiste systemy wchodz\u0105 w interakcje. Niekt\u00f3re ograniczenia odkryte w ns-2 (na przyk\u0142ad w\u0142a\u015bciwe wsparcie dla wielu typ\u00f3w interfejs\u00f3w w w\u0119\u017ale) zosta\u0142y naprawione w ns-3.<\/li>\n<\/ul>\n<p><\/p>\n<p>Dzi\u0119ki swojej d\u0142ugiej historii, ns-2 ma bardziej zr\u00f3\u017cnicowany zestaw obs\u0142ugiwanych modu\u0142\u00f3w ni\u017c ns-3. Niemniej jednak, ns-3 ma bardziej szczeg\u00f3\u0142owe modele w kilku popularnych obszarach bada\u0144 (w tym skomplikowane modele LTE i WiFi), a jego wsparcie dla kod\u00f3w implementacji umo\u017cliwia bardzo szeroki zakres modeli o wysokiej precyzji. U\u017cytkownicy mog\u0105 by\u0107 zaskoczeni, dowiaduj\u0105c si\u0119, \u017ce ca\u0142y stos sieciowy Linux mo\u017ce by\u0107 zainkapu\u0142owany w w\u0119ze\u0142 ns-3 przy u\u017cyciu frameworka przejrzystego wykonania kodu (DCE). Modele z ns-2 czasami mo\u017cna przenie\u015b\u0107 do ns-3, szczeg\u00f3lnie je\u015bli zosta\u0142y zaimplementowane w C++.<\/p>\n<p><\/p>\n<p>Je\u015bli masz w\u0105tpliwo\u015bci, dobr\u0105 rekomendacj\u0105 by\u0142oby zapoznanie si\u0119 z oboma symulatorami (a tak\u017ce innymi symulatorami), szczeg\u00f3lnie z modelami dost\u0119pnymi dla twoich bada\u0144, ale pami\u0119taj, \u017ce tw\u00f3j wynik mo\u017ce by\u0107 lepszy przy u\u017cyciu narz\u0119dzia, kt\u00f3re obecnie jest aktywnie rozwijane i wspierane (ns-3).<\/p>\n<p><\/p>\n<h3 id=\"13-uchastie-v-proekte\">1.3 Udzia\u0142 w projekcie<\/h3>\n<p><\/p>\n<p>ns-3 to naukowo-edukacyjny symulator dla spo\u0142eczno\u015bci badawczej. B\u0119dzie opiera\u0142 si\u0119 na bie\u017c\u0105cych wk\u0142adach spo\u0142eczno\u015bci w rozw\u00f3j nowych modeli, debugowanie lub wsparcie istniej\u0105cych oraz wymian\u0119 wynik\u00f3w. Istniej\u0105 pewne zasady, kt\u00f3re mamy nadziej\u0119 zach\u0119c\u0105 ludzi do wniesienia wk\u0142adu w ns-3, jak to robi\u0105 dla ns-2:<\/p>\n<p><\/p>\n<ul>\n<li>Licencja z otwartym kodem \u017ar\u00f3d\u0142owym, zgodna z licencj\u0105 GNU GPLv2.<\/li>\n<li>wiki.<\/li>\n<li>Strona <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pocoo.org\/\">Kod wsp\u00f3\u0142tw\u00f3rc\u00f3w<\/a><\/noindex>, podobna do popularnej strony dla ns-2.<\/li>\n<li>Wykorzystanie GitLab.com, w tym systemu \u015bledzenia b\u0142\u0119d\u00f3w:<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>Rozumiemy, \u017ce nawet je\u015bli czytasz ten dokument, mo\u017cesz na tym etapie nie planowa\u0107 w nim wnosi\u0107 wk\u0142adu. Ale chcemy, aby\u015b wiedzia\u0142, \u017ce wniesienie wk\u0142adu jest zgodne z duchem projektu i \u017ce cenimy sobie twoje uwagi, nawet na temat twojego wczesnego do\u015bwiadczenia z ns-3 (np. \"ten dzia\u0142 podr\u0119cznika by\u0142 niezrozumia\u0142y ...\"), zg\u0142oszenie przestarza\u0142ej dokumentacji lub komentarz w kodzie itp. Preferowany spos\u00f3b przesy\u0142ania poprawek to albo dokonanie forkowania na <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gitlab.com\/nsnam\">https:\/\/www.gitlab.com\/nsnam<\/a><\/noindex> ze swoimi poprawkami i utworzenie \u017c\u0105dania \u0142\u0105czenia, lub utworzenie zg\u0142oszenia w naszym trackerze i dodanie \u0142aty.<\/p>\n<p><\/p>\n<h3 id=\"14-organizaciya-rukovodstva\">1.4 Organizacja podr\u0119cznika<\/h3>\n<p><\/p>\n<p>To podr\u0119cznik zak\u0142ada, \u017ce nowi u\u017cytkownicy mog\u0105 na pocz\u0105tku i\u015b\u0107, na przyk\u0142ad, tak\u0105 \u015bcie\u017ck\u0105:<\/p>\n<p><\/p>\n<ul>\n<li>Spr\u00f3bowa\u0107 pobra\u0107 i skompilowa\u0107 kopi\u0119;<\/li>\n<li>Spr\u00f3bowa\u0107 uruchomi\u0107 kilka przyk\u0142ad\u00f3w program\u00f3w;<\/li>\n<li>Zobacz wynik symulacji i spr\u00f3buj dostosowa\u0107 go.<br \/>\nOstatecznie starali\u015bmy si\u0119 zorganizowa\u0107 prezentacj\u0119 w zgodzie z tymi krokami.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"glava-2\">Rozdzia\u0142 2<\/h2>\n<p><\/p>\n<h2 id=\"istochniki-informacii\">\u0179r\u00f3d\u0142a informacji<\/h2>\n<p><\/p>\n<h3 id=\"21-set\">2.1 Sie\u0107<\/h3>\n<p><\/p>\n<p>Istnieje kilka wa\u017cnych zasob\u00f3w, o kt\u00f3rych ka\u017cdy u\u017cytkownik ns-3 powinien wiedzie\u0107. G\u0142\u00f3wna strona internetowa znajduje si\u0119 pod adresem: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\">https:\/\/www.nsnam.org<\/a><\/noindex><br \/>\ni zapewnia dost\u0119p do podstawowych informacji o systemie ns-3. Szczeg\u00f3\u0142owa dokumentacja jest dost\u0119pna poprzez g\u0142\u00f3wn\u0105 stron\u0119 internetow\u0105 pod adresem: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/documentation\/\">https:\/\/www.nsnam.org\/documentation\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Na tej samej stronie internetowej mo\u017cna r\u00f3wnie\u017c znale\u017a\u0107 dokumenty dotycz\u0105ce architektury systemu.<\/p>\n<p><\/p>\n<p>Istnieje strona wiki, kt\u00f3ra uzupe\u0142nia g\u0142\u00f3wn\u0105 stron\u0119 internetow\u0105 ns-3, kt\u00f3r\u0105 znajdziesz pod adresem: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/wiki\/\">https:\/\/www.nsnam.org\/wiki\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Znajdziesz tam odpowiedzi na cz\u0119sto zadawane pytania dla u\u017cytkownik\u00f3w i programist\u00f3w, a tak\u017ce poradniki dotycz\u0105ce rozwi\u0105zywania problem\u00f3w, kod zewn\u0119trzny, dokumenty itd.<br \/>\nKod \u017ar\u00f3d\u0142owy mo\u017cna znale\u017a\u0107 i przegl\u0105da\u0107 na 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>Tam r\u00f3wnie\u017c w repozytorium o nazwie <em>ns-3-dev<\/em> znajduje si\u0119 aktualne drzewo rozwoju. Poprzednie wersje oraz eksperymentalne repozytoria deweloper\u00f3w j\u0105dra r\u00f3wnie\u017c s\u0105 dost\u0119pne pod Mercurial na starej stronie projektu pod adresem:<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>Z\u0142o\u017conym systemom programowym potrzebny jest jaki\u015b spos\u00f3b zarz\u0105dzania organizacj\u0105 i zmian\u0105 podstawowego kodu oraz dokumentacji. Istnieje wiele sposob\u00f3w, aby to osi\u0105gn\u0105\u0107, a by\u0107 mo\u017ce s\u0142ysza\u0142e\u015b o niekt\u00f3rych z system\u00f3w, kt\u00f3re zwykle si\u0119 do tego stosuje. Do niedawna projekt ns-3 u\u017cywa\u0142 Mercurial jako systemu kontroli wersji, ale w grudniu 2018 roku przeszli\u015bmy na korzystanie z Gita. Mimo \u017ce do przeczytania tego przewodnika nie musisz zna\u0107 wielu rzeczy na temat Gita, zalecamy zapoznanie si\u0119 z nim i u\u017cywanie go do uzyskania dost\u0119pu do kodu \u017ar\u00f3d\u0142owego. GitLab.com oferuje zasoby do opanowania podstawowych umiej\u0119tno\u015bci pod adresem: <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>Po pobraniu kodu \u017ar\u00f3d\u0142owego na Tw\u00f3j komputer, aby uzyska\u0107 gotowy do pracy program, b\u0119dziesz musia\u0142 go skompilowa\u0107. Podobnie jak w przypadku zarz\u0105dzania kodem \u017ar\u00f3d\u0142owym, dost\u0119pnych jest wiele narz\u0119dzi do wykonania tej funkcji. Prawdopodobnie najbardziej znanym z tych narz\u0119dzi jest make. Cho\u0107 jest to najbardziej znane narz\u0119dzie, warto zauwa\u017cy\u0107, \u017ce okazuje si\u0119 ono najtrudniejsze w u\u017cyciu w bardzo du\u017cych i elastycznie konfigurowalnych systemach. To sta\u0142o si\u0119 przyczyn\u0105 opracowania wielu alternatyw. Ostatnio zaprojektowano takie systemy z u\u017cyciem j\u0119zyka Python.<\/p>\n<p><\/p>\n<p>W projekcie ns-3 u\u017cywany jest system budowania Waf. Jest to nowej generacji system budowania oparty na Pythonie. Aby zbudowa\u0107 istniej\u0105cy system ns-3, nie musisz zna\u0107 Pythona.<\/p>\n<p><\/p>\n<p>Dla tych, kt\u00f3rzy s\u0105 zainteresowani szczeg\u00f3\u0142ami u\u017cycia Waf, dost\u0119pna jest ksi\u0105\u017cka pod adresem:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/waf.io\/book\/\">https:\/\/waf.io\/book\/<\/a><\/noindex><br \/>\ni bie\u017c\u0105cy kod:<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 \u015arodowisko programistyczne<\/h3>\n<p><\/p>\n<p>Jak ju\u017c wspomniano, skrypty w ns-3 s\u0105 wykonywane w C++ lub Pythonie. Wi\u0119kszo\u015b\u0107 API ns-3 jest dost\u0119pna w Pythonie, ale modele s\u0105 w ka\u017cdym razie napisane w C++. To poradnik zak\u0142ada, \u017ce znasz programowanie obiektowe w C++. W miar\u0119 rozwoju om\u00f3wimy niekt\u00f3re z bardziej zaawansowanych koncepcji oraz by\u0107 mo\u017ce nieznanych funkcji j\u0119zyka, takich jak idiomy i wzorce projektowe. Nie chcemy, aby ten przewodnik sta\u0142 si\u0119 podr\u0119cznikiem do C++, dlatego oczekujemy podstawowej znajomo\u015bci j\u0119zyka. Istnieje wiele \u017ar\u00f3de\u0142 informacji o C++ dost\u0119pnych w Internecie lub w druku.<\/p>\n<p><\/p>\n<p>Je\u015bli jeste\u015b nowicjuszem w C++, zanim przejdziesz dalej, opanuj podstawy j\u0119zyka, korzystaj\u0105c z podr\u0119cznika lub strony internetowej po\u015bwi\u0119conej nauce lub gotowym przepisom. Na przyk\u0142ad, takimi jak: <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>Na Linuksie system ns-3 korzysta z kilku komponent\u00f3w z narz\u0119dzi projektu GNU. Narz\u0119dzia to zestaw narz\u0119dzi programistycznych dost\u0119pnych w tym \u015brodowisku programistycznym. Aby szybko zapozna\u0107 si\u0119 z tym, co wchodzi w sk\u0142ad narz\u0119dzi GNU, zobacz. <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>Symulator ns-3 u\u017cywa gcc, GNU binutils i gdb. Jednocze\u015bnie nie u\u017cywamy do budowy projektu ani make, ani autotools z narz\u0119dzi GNU. Do tych funkcji u\u017cywamy Waf.<\/p>\n<p><\/p>\n<p>W macOS u\u017cywany jest zestaw narz\u0119dzi Xcode. U\u017cytkownikom ns-3 na Macu zaleca si\u0119 zainstalowanie Xcode oraz pakiet\u00f3w narz\u0119dzi wiersza polece\u0144 z Apple App Store, a tak\u017ce, w celu uzyskania dodatkowych informacji, odwiedzenie strony wiki dotycz\u0105cej instalacji 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>Zazwyczaj autor ns-3 pracuje w systemie Linux lub podobnym do Uniksa. Dla tych, kt\u00f3rzy pracuj\u0105 w systemie Windows, istniej\u0105 \u015brodowiska, kt\u00f3re w r\u00f3\u017cnym stopniu emuluj\u0105 \u015brodowisko Linux. W przesz\u0142o\u015bci (ale nie obecnie) projekt ns-3 wspiera\u0142 rozw\u00f3j w \u015brodowisku Cygwin dla takich u\u017cytkownik\u00f3w. Szczeg\u00f3\u0142y dotycz\u0105ce pobierania i dodatkowe informacje o Cygwin i ns-3 mo\u017cna znale\u017a\u0107 na stronie 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 obecnie nie jest oficjalnie wspierane. Inn\u0105 alternatyw\u0105 dla Cygwin jest zainstalowanie wirtualnego \u015brodowiska, takiego jak VMware server, w kt\u00f3rym mo\u017cna zainstalowa\u0107 Linux.<\/p>\n<p><\/p>\n<h3 id=\"25-programmirovanie-soketov\">2.5 Programowanie gniazd<\/h3>\n<p><\/p>\n<p>W przyk\u0142adach u\u017cytych w tym przewodniku b\u0119dziemy korzysta\u0107 z podstawowych mo\u017cliwo\u015bci API gniazd Berkeley (Berkeley Sockets). Je\u015bli jeste\u015b nowy w gniazdach, zalecamy zapoznanie si\u0119 z API i niekt\u00f3rymi powszechnymi przypadkami ich u\u017cycia. Jako dobrego przegl\u0105du programowania gniazd TCP\/IP zalecamy: \"TCP\/IP Sockets in C\", Donahoo i Calvert.<\/p>\n<p><\/p>\n<p>Istnieje powi\u0105zana strona internetowa, kt\u00f3ra zawiera \u017ar\u00f3d\u0142o przyk\u0142ad\u00f3w z ksi\u0105\u017cki, kt\u00f3re mo\u017cna znale\u017a\u0107 pod adresem:<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>Je\u015bli rozumiesz pierwsze cztery rozdzia\u0142y ksi\u0105\u017cki (lub dla tych, kt\u00f3rzy nie maj\u0105 dost\u0119pu do kopii ksi\u0105\u017cki, klient\u00f3w i serwer\u00f3w echa pokazanych na stronie internetowej pod linkiem powy\u017cej), to wystarczy, aby zrozumie\u0107 podr\u0119cznik. Istnieje podobna ksi\u0105\u017cka<br \/>\n\"Multicast Sockets, Multicast Sockets\", Makofske i Almeroth.<\/p>\n<p><\/p>\n<p>Ona obejmuje materia\u0142, kt\u00f3ry mo\u017cesz potrzebowa\u0107, je\u015bli b\u0119dziesz studiowa\u0107 w dystrybucji przyk\u0142ady multicastowe.<\/p>\n<p><\/p>\n<p>Ci\u0105g dalszy: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497318\/\">rozdzia\u0142 3<\/a><\/noindex><\/p>\n<p>\u0179r\u00f3d\u0142o: <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.1.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\/pl\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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\udd47Podr\u0119cznik do symulatora sieci ns-3. Rozdzia\u0142y 1,2 | ProHoster","description":"Niniejszy artyku\u0142 otwiera seri\u0119 publikacji z t\u0142umaczeniem podr\u0119cznika \"ns-3 Tutorial Release.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/86559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=86559"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/86559\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/86560"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=86559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=86559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=86559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}