Příručka pro simulátor sítě ns-3. Kapitoly 1, 2

Tento článek zahajuje sérii publikací s překladem učebnice "ns-3 Tutorial Release ns-3.29" o simulátoru sítí ns-3.

Příručka pro simulátor sítě ns-3. Kapitoly 1, 2

Tento dokument je překlad původního dokumentu v angličtině, který byl napsán v reStructuredText pro Sphinx a nachází se v adresáři doc/tutorial zdrojového kódu ns-3.

1 Úvod
1.1 O ns-3
1.2 Pro uživatele ns-2
1.3 Účast v projektu
1.4 Organizace příručky
2 Zdroje informací
2.1 Síť
2.2 Git
2.3 WAF
2.4 Vývojové prostředí
2.5 Programování socketů
kapitola 3
kapitola 4
kapitola 5
kapitola 6
kapitola 7
kapitoly 8, 9

Stáhnout překlad jako jeden pdf soubor

Primární dokumentace pro projekt ns-3 je k dispozici v pěti formách:

Úvod

Simulátor ns-3 je simulátor sítě s diskrétními událostmi, určený především pro výzkum a vzdělávací účely. Projekt vyvíjející ns-3 byl zahájen v roce 2006 a je to projekt s otevřeným zdrojem.

Cílem této příručky je představit ns-3 novým uživatelům strukturovaným způsobem. Nováčkovi může být někdy obtížné získat potřebné informace a přetvořit je na funkční modelování. V této příručce realizujeme několik příkladů modelování, během kterých ukazujeme a vysvětlujeme klíčové koncepty a funkce.

Během textu představíme kompletní dokumentaci k ns-3 a dáme odkazy na zdrojový kód pro ty, kteří mají zájem o hlubší porozumění fungování systému.

Na začátku stojí za zmínku několik klíčových bodů:

  • ns-3 má otevřený zdrojový kód, projekt usiluje o udržení otevřeného prostředí, ve kterém mohou výzkumníci přispívat a sdílet své programové výtvory.
  • ns-3 není zpětně kompatibilní rozšíření ns-2, je to nový simulátor. Oba simulátory jsou napsány v C++, ale ns-3 je nový simulátor, který nepodporuje API rozhraní ns-2.

1.1 O ns-3

Simulator ns-3 byl vyvinut jako otevřená rozšiřitelná platforma pro modelování sítí, výzkum sítí a vzdělávání. Stručně řečeno, ns-3 poskytuje modely toho, jak jsou implementovány a fungují sítě přenosu paketů a dává uživatelům simulátorový engine pro provádění simulačních experimentů. Důvody pro použití ns-3 mohou zahrnovat situace, kdy je třeba provést výzkum, který je obtížné nebo nemožné realizovat na skutečném systému, možnost studovat chování systému ve striktně kontrolovaném a reprodukovatelném prostředí a také se dozvědět, jak sítě fungují.

Uživatelé si všimnou, že sady modelů poskytované v ns-3 se zaměřují na modelování internetových protokolů a sítí, ale ns-3 není omezen pouze na internetové systémy; někteří uživatelé používají ns-3 k modelování systémů, které nejsou založené na internetových technologiích.

Existuje mnoho nástrojů pro modelování sítí. Níže jsou uvedeny některé charakteristické rysy ns-3 ve srovnání s jinými nástroji.

  • ns-3 byl navržen jako sada knihoven, které lze kombinovat dohromady, stejně jako s dalšími externími softwarovými knihovnami. Zatímco některé modelovací platformy poskytují uživatelům jednotné integrované prostředí s grafickým uživatelským rozhraním, které řídí veškerou činnost, ns-3 je v tomto ohledu modulárnější. S ns-3 lze využít různé externí animátory, nástroje pro analýzu dat a vizualizaci. Nicméně, uživatelé mohou očekávat práci z příkazového řádku a s nástroji pro vývoj softwaru v C++ a/nebo Pythonu.
  • ns-3 se většinou používá na systémech Linux nebo macOS, ačkoliv je zde podpora pro systémy BSD a také pro platformy Windows schopné kompilovat kód pro Linux, jako je Windows Subsystem pro Linux nebo Cygwin. Nativní podpora pro Windows Visual Studio v současnosti není dostupná, ačkoli na realizaci této možnosti pracuje vývojář. Uživatelé Windows mohou také použít virtuální stroj s Linuxem.
  • ns-3 není oficiálně podporovaným produktem žádné společnosti. Podpora ns-3 je poskytována maximálně na fóru uživatelů ns-3 (ns-3-users@googlegroups.com).

1.2 Pro uživatele ns-2

Pro ty, kteří jsou obeznámeni s ns-2 (populárním nástrojem, který předcházel ns-3), je nejvýraznější viditelnou změnou při přechodu na ns-3 změna jazyka skriptů. Programy v ns-2 jsou napsány v OTcl a výsledky simulací lze vizualizovat pomocí animátoru sítí nam. V ns-2 není možné spustit simulaci pouze z C++ (to znamená jako hlavní program bez jakýchkoli OTcl). Navíc některé komponenty ns-2 jsou napsány v C++, zatímco jiné v OTcl. V ns-3 je simulátor napsán výhradně v C++ s volitelnými vazbami na Python. Proto mohou být skripty simulace napsány jak v C++, tak v Pythonu. Jsou k dispozici nové animátory a vizualizátory, které se i nadále vyvíjejí. Protože ns-3 generuje soubory pro sledování paketů pcap, mohou být také použity jiné nástroje pro analýzu tras. V této příručce se nejprve zaměříme na scénáře implementované v C++ a interpretaci výsledků prostřednictvím analýzy souborů trasování.

Ale existují i podobnosti (například oba nástroje jsou založeny na objektech C++, část kódu ns-2 byla portována do ns-3). Při výkladu se pokusíme ukázat rozdíly mezi ns-2 a ns-3.

Otázka, kterou často slýcháme: "Měl bych stále používat ns-2 nebo přejít na ns-3?" Podle názoru autora, pokud uživatel není nějakým způsobem vázán na ns-2 (na základě existujícího osobního pohodlí a znalosti ns-2, nebo na základě konkrétní simulační modelu, který je dostupný pouze v ns-2), pak s ns-3 bude produktivnější z následujících důvodů:

  • ns-3 je aktivně podporován s aktivním a reagujícím uživatelským mailing listem, zatímco ns-2 je podporován jen mírně a během více než deseti let neprošel žádnými významnými změnami ve své základní struktuře kódu.
  • ns-3 poskytuje funkce, které nejsou k dispozici v ns-2, jako je prostředí pro spuštění kódu implementace (umožňující uživatelům spouštět v simulátoru skutečný kód implementace).
  • ns-3 zajišťuje nižší základní úroveň abstrakce ve srovnání s ns-2, což mu umožňuje lépe odpovídat tomu, jak interagují skutečné systémy. Některé omezení, která byla nalezena v ns-2 (například správná podpora různých typů rozhraní na uzlu) byla opravena v ns-3.

Díky své dlouhé historii má ns-2 rozmanitější sadu podporovaných modulů než ns-3. Přesto má ns-3 podrobnější modely v několika populárních oblastech výzkumu (včetně složitých modelů LTE a WiFi). Jeho podpora kódu implementace umožňuje velmi široké spektrum modelů s vysokou přesností. Uživatelé mohou být překvapeni, když zjistí, že celý síťový zásobník Linuxu může být zapouzdřen v uzlu ns-3 pomocí rámce pro přímé provádění kódu (DCE). Modely z ns-2 lze někdy přenést do ns-3, zejména pokud byly implementovány v C++.

Pokud si nejste jisti, dobré doporučení by bylo podívat se na oba simulátory (a také na jiné simulátory), konkrétně na modely dostupné pro váš výzkum, ale mějte na paměti, že vaše výsledky mohou být lepší při použití nástroje, který se aktuálně aktivně vyvíjí a podporuje (ns-3).

1.3 Účast v projektu

ns-3 je vědecko-vzdělávací simulátor pro výzkumnou komunitu. Bude se opírat o aktuální příspěvky komunity na vývoj nových modelů, ladění nebo podporu stávajících a sdílení výsledků. Existují jisté politiky, které, jak doufáme, povzbudí lidi, aby přispěli do ns-3, jak to dělali pro ns-2:

  • Licencování s otevřeným zdrojovým kódem na základě kompatibility s licencí GNU GPLv2.
  • wiki.
  • Stránka Kód přispěvatelů, podobná populární stránce pro ns-2.
  • Používání GitLab.com, včetně systému sledování chyb:
    https://www.gitlab.com/nsnam

Chápeme, že pokud i čtete tento dokument, možná v tuto chvíli neplánujete se na něm podílet. Ale chceme, abyste věděli, že přispívání odpovídá duchu projektu a že pro nás bude cenná vaše zpětná vazba, i ohledně vašich raných zkušeností s ns-3 (například "tato část učebnice nebyla srozumitelná..."). Přednostní způsob odesílání oprav je buď udělat odbočku (fork) na https://www.gitlab.com/nsnam s vašimi opravami a vytvořit žádost o sloučení, nebo vytvořit žádost na našem trackeru a přidat patch.

1.4 Organizace příručky

Tato příručka předpokládá, že noví uživatelé mohou zpočátku postupovat, například, podle této cesty:

  • Zkusit stáhnout a sestavit kopii;
  • Zkusit spustit několik příkladových programů;
  • Podívejte se na výsledek simulace a zkuste ho přizpůsobit.
    Nakonec jsme se snažili uspořádat požadavek podle těchto kroků.

Kapitola 2

Zdroje informací

2.1 Síť

Existuje několik důležitých zdrojů, o kterých by měl vědět každý uživatel ns-3. Hlavní webová stránka je dostupná na adrese: https://www.nsnam.org
a poskytuje přístup k základním informacím o systému ns-3. Podrobná dokumentace je dostupná prostřednictvím hlavní webové stránky na adrese: https://www.nsnam.org/documentation/.

Na téže webové stránce také najdete dokumenty týkající se architektury systému.

Existuje wiki stránka, která doplňuje hlavní webovou stránku ns-3, najdete ji na adrese: https://www.nsnam.org/wiki/.

Tam naleznete odpovědi na často kladené dotazy pro uživatele a vývojáře, stejně jako návody k odstraňování problémů, externí kód, dokumenty atd.
Zdrojový kód můžete najít a prohlížet na GitLab.com:
https://gitlab.com/nsnam/.

V repozitáři s názvem ns-3-dev se nachází aktuální vývojová větev. Staré verze a experimentální repozitáře vývojářů jádra můžete také najít na Mercurial na staré webové stránce projektu na adrese:
http://code.nsnam.org.

2.2 Git

Složitým programovým systémům je potřeba nějaký způsob řízení organizace a změn základního kódu a dokumentace. Existuje mnoho způsobů, jak toho dosáhnout, a možná jste slyšeli o některých systémech, které se obvykle používají k tomu. Do nedávné doby projekt ns-3 používal Mercurial jako systém správy zdrojového kódu, ale v prosinci 2018 jsme přešli na používání Gitu. I když k přečtení této příručky nemusíte mít mnoho znalostí o Gitu, doporučujeme se s ním seznámit a používat ho pro přístup ke zdrojovému kódu. GitLab.com poskytuje zdroje pro osvojení základních dovedností na adrese: https://git-scm.com/book/ru/v2.

2.3 WAF

Poté, co si stáhnete zdrojový kód na váš počítač, budete muset k jeho zkompilování použít vhodný nástroj, abyste získali plně funkční program. Stejně jako v případě správy zdrojového kódu existuje mnoho nástrojů pro tuto funkci. Pravděpodobně nejznámějším z těchto nástrojů je make. Ačkoli je tento nástroj nejznámější, je také nejtěžší použít ve velmi velkém a flexibilně konfigurovatelném systému. To vedlo k vývoji mnoha alternativ. Nedávno byly vyvinuty tyto systémy s využitím jazyka Python.

V projektu ns-3 se používá systém sestavení Waf. Je to nová generace systémů sestavení založených na Pythonu. K sestavení stávajícího systému ns-3 nemusíte znát Python.

Pro ty, kteří mají zájem o podrobnosti o použití Waf, je k dispozici kniha na adrese:
https://waf.io/book/
a aktuální kód:
https://gitlab.com/ita1024/waf/.

2.4 Vývojové prostředí

Jak již bylo zmíněno výše, skripty v ns-3 se provádějí v C++ nebo Pythonu. Většina API ns-3 je dostupná v Pythonu, ale modely jsou v každém případě psány v C++. Toto příručka předpokládá, že jste obeznámeni s objektově orientovaným programováním v C++. Během expozice věnujeme trochu času přehledu nejpokročilejších konceptů a možná neznámých aspektů jazyka, jako jsou idiomy a návrhové vzory. Nechceme, aby se tato příručka stala učebnicí C++, proto očekáváme základní znalost jazyka. Existuje mnoho zdrojů informací o C++ dostupných online nebo v tisku.

Pokud jste v C++ nováčkem, pak se před pokračováním naučte základy jazyka pomocí učebnice nebo webových stránek věnovaných výuce nebo osvědčeným receptům. Například zde: https://github.com/ashtanyuk/CPP-2018.

Pod Linuxem systém ns-3 používá několik komponent z nástrojů projektu GNU. Nástroje jsou soubor programovacích nástrojů dostupných v tomto softwarovém prostředí. Pro rychlý přehled toho, co zahrnují nástroje GNU, viz. http://en.wikipedia.org/wiki/GNU_toolchain.

Simulator ns-3 používá gcc, GNU binutils a gdb. Zároveň nepoužíváme make ani autotools z nástrojů GNU pro sestavení projektu. Pro tyto funkce používáme Waf.

Na macOS se používá sada nástrojů Xcode. Uživatelům ns-3 na Macu se důrazně doporučuje nainstalovat Xcode a balíčky nástrojů příkazového řádku z Apple App Store, a také, pro další informace, navštívit wiki stránku o instalaci ns-3: (https://www.nsnam.org/wiki/Installation).

Obvykle autor ns-3 pracuje v Linuxu nebo v prostředí podobném Unixu. Pro ty, kteří pracují na Windows, existují prostředí, která do určité míry napodobují prostředí Linux. Pro takové uživatele projekt ns-3 v minulosti (nikoli v současnosti) podporoval vývoj v prostředí Cygwin. Pro podrobnosti o stažení a další informace o Cygwin a ns-3 navštivte wiki stránku ns-3:
http://www.cygwin.com/.

MinGW momentálně není oficiálně podporován. Další alternativou Cygwin je instalace virtuálního prostředí, jako je VMware server, kde lze nainstalovat Linux.

2.5 Programování socketů

Ve vzorcích použitých v této příručce budeme používat základní funkce API rozhraní Berkeley Sockets. Pokud jste začátečník v oblasti socketů, doporučujeme se seznámit s API a některými běžnými případy jejich použití. Jako dobrý přehled programování socketů TCP/IP doporučujeme: "TCP/IP Sockets in C", Donahoo a Calvert.

Existuje související webová stránka, která obsahuje zdrojové příklady z knihy, které můžete najít na adrese:
http://cs.baylor.edu/~donahoo/practical/CSockets/.

Pokud rozumíte prvním čtyřem kapitolám knihy (nebo pro ty, kteří nemají přístup ke kopii knihy, echo klienti a servery zobrazené na webové stránce na odkazu výše), bude to stačit k pochopení tutoriálu. Existuje podobná kniha
"Multicast Sockets, Multicast Sockets", Makofske a Almeroth.

Pokrývá materiál, který budete možná potřebovat, pokud se budete zabývat příklady mnohosměrného rozesílání v distribuci.

Pokračování: kapitola 3

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster