Handbok för nÀtverksimulatorns ns-3. Kapitel 1, 2.

Denna artikel inleder en serie publikationer med översÀttning av lÀroboken "ns-3 Tutorial Release ns-3.29" för nÀtverkssimulatorn ns-3.

Handbok för nÀtverksimulatorns ns-3. Kapitel 1, 2.

Detta dokument Àr en översÀttning av det ursprungliga dokumentet pÄ engelska, som Àr skrivet i reStructuredText för Sphinx och lagras i katalogen doc/tutorial i ns-3:s kÀllkod.

1 Inledning
1.1 Om ns-3
1.2 För ns-2-anvÀndare
1.3 Deltagande i projektet
1.4 Organisation av manualen
2 InformationskÀllor
2.1 NĂ€tverk
2.2 Git
2.3 WAF
2.4 Utvecklingsmiljö
2.5 Programmering av sockets
kapitel 3
kapitel 4
kapitel 5
kapitel 6
kapitel 7
kapitel 8, 9

Ladda ner översÀttningen som en pdf-fil

Den primÀra dokumentationen för ns-3-projektet finns i fem format:

Förord

Simulatorn ns-3 Àr en hÀndelsedriven nÀtverkssimulator, avsedd frÀmst för forskning och utbildningsÀndamÄl. Projektet som utvecklar ns-3 startades 2006 och Àr ett öppen kÀllkodsprojekt.

Syftet med denna manual Àr att introducera ns-3 för nya anvÀndare pÄ ett systematiskt och strukturerat sÀtt. Det kan ibland vara svÄrt för nybörjare att fÄ den information de behöver och omvandla den till fungerande simuleringar. I denna manual genomför vi flera exempel pÄ simulering medan vi förklarar och visar centrala begrepp och funktioner.

I takt med att vi gÄr framÄt kommer vi att presentera den fullstÀndiga dokumentationen för ns-3 och ge lÀnkar till kÀllkoden för dem som Àr intresserade av en djupare förstÄelse av systemets funktionalitet.

I början Àr det vÀrt att notera nÄgra nyckelpunkter:

  • ns-3 har öppen kĂ€llkod och projektet strĂ€var efter att upprĂ€tthĂ„lla en öppen miljö dĂ€r forskare kan bidra och dela sina programvaruinsatser.
  • ns-3 Ă€r inte en bakĂ„tkompatibel utvidgning av ns-2; det Ă€r en ny simulator. BĂ„da simulatorsystemen Ă€r skrivna i C++, men ns-3 Ă€r en ny simulator som inte stödjer ns-2:s API-grĂ€nssnitt.

1.1 Om ns-3

ns-3-simulatorn har utvecklats för att erbjuda en öppen och utbyggbar plattform för nÀtverksmodellering, nÀtverksforskning och utbildning. Kort sagt, ns-3 tillhandahÄller modeller för hur paketdatatransmissionsnÀtverk Àr implementerade och fungerar, och ger anvÀndaren en simuleringsmotor för att utföra simuleringsexperiment. Anledningar att anvÀnda ns-3 kan vara situationer dÀr det Àr svÄrt eller omöjligt att utföra forskning pÄ ett verkligt system, möjligheten att studera systembeteende i en strikt kontrollerad och reproducerbar miljö, samt att lÀra sig hur nÀtverk fungerar.

AnvÀndare kommer att mÀrka att den uppsÀttning modeller som erbjuds i ns-3 Àr fokuserad pÄ modellering av internetprotokoll och nÀtverk, men ns-3 Àr inte begrÀnsat till enbart internetbaserade system; vissa anvÀndare anvÀnder ns-3 för att modellera system som inte Àr baserade pÄ Internet-teknologier.

Det finns mÄnga verktyg för nÀtverksmodellering. HÀr Àr nÄgra sÀrskiljande drag hos ns-3 i jÀmförelse med andra verktyg.

  • ns-3 har utformats som en uppsĂ€ttning biblioteker som kan kombineras med varandra och med andra externa programvarubibliotek. Medan vissa modellplattformar erbjuder anvĂ€ndarna en integrerad miljö med ett grafiskt anvĂ€ndargrĂ€nssnitt som hanterar allt arbete, Ă€r ns-3 mer modulĂ€r i detta avseende. Med ns-3 kan flera externa animatorer, dataanalys- och visualiseringsverktyg anvĂ€ndas. AnvĂ€ndare förvĂ€ntas dock arbeta i kommandoraden och med C++ och/eller Python-programmeringsverktyg.
  • ns-3 anvĂ€nds frĂ€mst pĂ„ Linux- eller macOS-system, Ă€ven om det finns stöd för BSD-system samt Windows-plattformar som kan kompilera kod för Linux, sĂ„som Windows Subsystem for Linux eller Cygwin. Windows-versionen av Visual Studio stöds för nĂ€rvarande inte, Ă€ven om utvecklaren arbetar pĂ„ att implementera denna möjlighet. Windows-anvĂ€ndare kan ocksĂ„ anvĂ€nda en virtuell maskin med Linux.
  • ns-3 Ă€r inte en officiellt stödd produkt frĂ„n nĂ„got företag. Stödet för ns-3 ges med högsta engagemang pĂ„ forumet för ns-3-anvĂ€ndare (ns-3-users@googlegroups.com).

1.2 För ns-2-anvÀndare

För dem som Àr bekanta med ns-2 (ett populÀrt verktyg som föregick ns-3) Àr det mest pÄtagliga yttre förÀndringarna vid övergÄngen till ns-3 bytet av skriptsprÄk. Program i ns-2 Àr skrivna i OTcl, och simuleringsresultat kan visualiseras med hjÀlp av nÀtverksanimatorn nam. I ns-2 Àr det omöjligt att köra en simulering enbart frÄn C++ (det vill sÀga som en main()-program utan nÄgon OTcl). Dessutom Àr vissa komponenter i ns-2 skrivna i C++ medan andra Àr skrivna i OTcl. I ns-3 Àr simulatorn helt skriven i C++ med valfria bindningar till Python. DÀrför kan simuleringsscenarier skrivas bÄde i C++ och Python. Nya animatorer och visualiserare finns tillgÀngliga och utvecklas fortfarande. Eftersom ns-3 genererar pcap-paketracefiler kan Àven andra verktyg anvÀndas för att analysera spÄren. I denna handledning kommer vi först att fokusera pÄ scenarier som realiserats i C++ och tolkningen av resultaten genom analys av tracefiler.

Men det finns Àven likheter (till exempel Àr bÄda verktygen baserade pÄ C++-objekt, en del av koden frÄn ns-2 har portats till ns-3). Under presentationen kommer vi att försöka visa skillnaderna mellan ns-2 och ns-3.

En frÄga som vi ofta hör Àr: "Ska jag fortfarande anvÀnda ns-2 eller byta till ns-3?" Enligt författarens Äsikt, om anvÀndaren pÄ nÄgot sÀtt inte Àr bunden till ns-2 (baserat pÄ befintlig personlig komfort och kunskap om ns-2, eller pÄ en specifik simuleringsmodell som endast Àr tillgÀnglig i ns-2), kommer ns-3 att ge en högre produktivitet av följande skÀl:

  • ns-3 stöds aktivt med en aktiv och responsiv anvĂ€ndarforum, medan ns-2 endast stöds nĂ„got och har pĂ„ över tio Ă„r inte sett nĂ„gra betydande förĂ€ndringar i sin huvudsakliga kĂ€llkod.
  • ns-3 erbjuder funktioner som inte Ă€r tillgĂ€ngliga i ns-2, sĂ„som en körningsmiljö för implementationskod (som gör att anvĂ€ndare kan köra verklig implementationskod i simulatorn).
  • ns-3 ger en lĂ€gre grundlĂ€ggande abstraheringsnivĂ„ jĂ€mfört med ns-2, vilket gör att det bĂ€ttre kan motsvara hur verkliga system interagerar. Vissa begrĂ€nsningar som upptĂ€ckts i ns-2 (som korrekt stöd för flera typer av grĂ€nssnitt pĂ„ noden) har Ă„tgĂ€rdats i ns-3.

Tack vare sin lĂ„nga historia har ns-2 ett mer varierat utbud av stödda moduler Ă€n ns-3. Å andra sidan har ns-3 mer detaljerade modeller inom flera populĂ€ra forskningsomrĂ„den (inklusive komplexa modeller för LTE och WiFi), och dess stöd för implementationskoden möjliggör en mycket bred uppsĂ€ttning högprecisionsmodeller. AnvĂ€ndare kan bli förvĂ„nade över att lĂ€ra sig att hela Linux-nĂ€tverksstacken kan kapslas in i en ns-3-nod med hjĂ€lp av direkt körningskod (DCE) ramverket. Modeller frĂ„n ns-2 kan ibland porteras till ns-3, sĂ€rskilt om de har implementerats i C++.

Om du Àr osÀker Àr en bra rekommendation att titta pÄ bÄda simulators (liksom andra simulatorer), sÀrskilt pÄ modeller som Àr tillgÀngliga för din forskning, men kom ihÄg att ditt resultat kan bli bÀttre om du anvÀnder ett verktyg som för nÀrvarande aktivt utvecklas och underhÄlls (ns-3).

1.3 Deltagande i projektet

ns-3 Àr en forsknings- och utbildningssimulator för forskarsamhÀllet. Det kommer att bygga pÄ nuvarande bidrag frÄn samhÀllet i utvecklingen av nya modeller, felsökning eller underhÄll av befintliga, och dela resultat. Det finns viss policy som vi hoppas kommer att uppmuntra mÀnniskor att bidra till ns-3, precis som de gör för ns-2:

  • Öppen kĂ€llkodlicens baserad pĂ„ kompatibilitet med GNU GPLv2-licensen.
  • wiki.
  • Sida Bidragsgivares kod, liknande den populĂ€ra sidan för ns-2.
  • AnvĂ€ndning av GitLab.com, inklusive buggrapportering:
    https://www.gitlab.com/nsnam

Vi förstÄr att Àven om du lÀser detta dokument kan du kanske inte planera att bidra vid det hÀr laget. Men vi vill att du ska veta att bidra ligger i projektets anda och att din feedback, Àven om det handlar om din tidiga erfarenhet med ns-3 (t.ex. "denna del av manualen var inte tydlig ..."), rapportering av förÄldrad dokumentation eller kommentar i koden etc. kommer att vara vÀrdefull för oss... Det föredragna sÀttet att skicka in rÀttelser Àr antingen att göra en gaffel (fork) med dina rÀttelser och skapa en sammanslagningsförfrÄgan, eller att skapa en förfrÄgan pÄ vÄr tracker och lÀgga till en patch. https://www.gitlab.com/nsnam Denna guide förutsÀtter att nya anvÀndare initialt kan följa en vÀg som den hÀr:

1.4 Organisation av manualen

Försök ladda ner och bygga en kopia;

  • Försök köra nĂ„gra exempelprogram;
  • Försök att köra nĂ„gra exempelprogram;
  • Titta pĂ„ simuleringsresultatet och försök att anpassa det.
    I slutÀndan försökte vi organisera presentationen enligt dessa steg.

Kapitel 2

InformationskÀllor

2.1 NĂ€tverk

Det finns flera viktiga resurser som varje anvÀndare av ns-3 bör kÀnna till. Huvudwebbplatsen finns pÄ: https://www.nsnam.org
och ger tillgÄng till grundlÀggande information om ns-3-systemet. Detaljerad dokumentation Àr tillgÀnglig via huvudwebbplatsen pÄ: https://www.nsnam.org/documentation/.

PÄ denna webbsida kan du ocksÄ hitta dokument relaterade till systemarkitekturen.

Det finns en wiki-sida som kompletterar huvudwebbplatsen för ns-3, som du hittar pÄ: https://www.nsnam.org/wiki/.

DÀr hittar du svar pÄ vanliga frÄgor för anvÀndare och utvecklare, samt felsökningsguider, tredjepartskod, dokument osv.
KÀllkoden kan hittas och ses pÄ GitLab.com:
https://gitlab.com/nsnam/.

DÀr i förvaret med namnet ns-3-dev finns den aktuella utvecklingsgrenen. Tidigare versioner och experimentella kÀrnutvecklarförvar kan ocksÄ hittas under Mercurial pÄ den gamla projektwebbplatsen pÄ:
http://code.nsnam.org.

2.2 Git

Komplexa programsystem behöver ett sĂ€tt att hantera organisationen och förĂ€ndringarna av den underliggande koden och dokumentationen. Det finns mĂ„nga sĂ€tt att uppnĂ„ detta, och du har kanske hört talas om nĂ„gra av de system som vanligtvis anvĂ€nds för detta. Fram till nyligen anvĂ€nde ns-3-projektet Mercurial som kĂ€llkodshanteringssystem, men i december 2018 bytte vi till att anvĂ€nda Git. Även om du inte behöver veta mycket om Git för att lĂ€sa denna handledning, rekommenderar vi att du bekantar dig med det och anvĂ€nder det för att fĂ„ tillgĂ„ng till kĂ€llkoden. GitLab.com erbjuder resurser för att bemĂ€stra grundlĂ€ggande fĂ€rdigheter pĂ„: https://git-scm.com/book/ru/v2.

2.3 WAF

NĂ€r du har laddat ner kĂ€llkoden till din dator, behöver du kompilera den för att fĂ„ en fĂ€rdig programvara. Precis som med hanteringen av kĂ€llkoden finns det mĂ„nga verktyg tillgĂ€ngliga för att utföra denna funktion. Förmodligen Ă€r det mest kĂ€nda av dessa verktyg make. Även om detta verktyg Ă€r det mest vĂ€lkĂ€nda, bör det noteras att det kan vara mest komplicerat att anvĂ€nda i ett mycket stort och flexibelt konfigurerbart system. Detta har lett till utvecklingen av mĂ„nga alternativ. Nyligen har sĂ„dana system utvecklats med hjĂ€lp av Python-sprĂ„ket.

I ns-3-projektet anvÀnds byggsystemet Waf. Det Àr en ny generation av byggsystem baserade pÄ Python. För att bygga det befintliga ns-3-systemet behöver du inte kunna Python.

För dem som Àr intresserade av detaljer om hur man anvÀnder Waf, finns det en bok tillgÀnglig pÄ adressen:
https://waf.io/book/
och den aktuella koden:
https://gitlab.com/ita1024/waf/.

2.4 Utvecklingsmiljö

Som nÀmnts ovan körs skripten i ns-3 pÄ C++ eller Python. Största delen av API:et i ns-3 Àr tillgÀngligt pÄ Python, men modellerna Àr ÀndÄ skrivna i C++. Denna handbok förutsÀtter att du Àr bekant med objektorienterad programmering i C++. NÀr vi gÄr framÄt kommer vi att Àgna en viss tid Ät att gÄ igenom de mest avancerade koncepten och kanske okÀnda egenskaper hos sprÄket, som idiom och designmönster. Vi vill inte att denna handbok ska bli en lÀrarhandledning i C++, sÄ vi förvÀntar oss grundlÀggande kunskaper i sprÄket. Det finns mÄnga informationskÀllor om C++ tillgÀngliga online eller i tryck.

Om du Àr nybörjare i C++, vÀnligen se till att du behÀrskar grunderna i sprÄket innan du fortsÀtter, anvÀnda en lÀrobok eller en webbplats dedikerad till utbildning eller fÀrdiga recept. Till exempel: https://github.com/ashtanyuk/CPP-2018.

Under Linux anvÀnder ns-3-systemet flera komponenter frÄn GNU-projektets verktyg. Verktygen Àr en uppsÀttning programmeringsverktyg som finns tillgÀngliga i denna mjukvarumiljö. För en snabb översyn av vad som ingÄr i GNU-verktygen, se. http://en.wikipedia.org/wiki/GNU_toolchain.

Simulatorn ns-3 anvÀnder gcc, GNU binutils och gdb. Samtidigt anvÀnder vi varken make eller autotools för att bygga projektet frÄn GNU-verktygen. För dessa funktioner anvÀnder vi Waf.

I macOS anvÀnds uppsÀttningen verktyg Xcode. AnvÀndare av ns-3 pÄ Mac rekommenderas starkt att installera Xcode och kommandoradsverktyg frÄn Apple App Store, samt för mer information, besök wikisidan för installation av ns-3: (https://www.nsnam.org/wiki/Installation).

Vanligtvis arbetar ns-3 författaren i en Linux- eller Unix-liknande miljö. För de som arbetar under Windows finns det miljöer som i varierande grad imiterar Linux-miljön. För sÄdana anvÀndare har projektet ns-3 tidigare (men inte nu) stöd för utveckling i Cygwin-miljön. För detaljer om nedladdning och mer information om Cygwin och ns-3, besök wikisidan för ns-3:
http://www.cygwin.com/.

MinGW stöds för nÀrvarande inte officiellt. Ett annat alternativ till Cygwin Àr att installera en virtuell miljö som VMware-server, dÀr Linux kan installeras.

2.5 Programmering av sockets

I exemplen som anvÀnds i den hÀr guiden kommer vi att anvÀnda de grundlÀggande funktionerna hos Berkeley Socket API. Om du Àr ny pÄ sockets rekommenderar vi att du bekantar dig med API:et och nÄgra vanliga anvÀndningsfall för dem. Som en bra översikt över TCP/IP-socketprogrammering rekommenderar vi: "TCP/IP Sockets in C", av Donahoo och Calvert.

Det finns en tillhörande webbplats som innehÄller kÀllan till exemplen i boken, som du kan hitta pÄ:
http://cs.baylor.edu/~donahoo/practical/CSockets/.

Om du förstÄr de första fyra kapitlen i boken (eller för dem som inte har tillgÄng till en kopia av boken, echo-klienterna och servrarna som visas pÄ webbplatsen via lÀnken ovan), Àr detta tillrÀckligt för att förstÄ handledningen. Det finns en liknande bok
"Multicast Sockets, Multicast Sockets", av Makofske och Almeroth.

Den tÀcker material som kan vara anvÀndbart om du studerar exemplen för multicast-distribution.

FortsÀttning: kapitel 3

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster