ns-3 тармак симуляторунун окуу куралы. 1,2-глава

Бул макала окуу китебинин котормосу менен басылмалардын сериясын ачат "ns-3 окуу куралы ns-3.29"NS-3 тармак симуляторунда.

ns-3 тармак симуляторунун окуу куралы. 1,2-глава

Бул документ англис тилинде жазылган түпнуска документтин котормосу болуп саналат reStructuredText үчүн Sphinx жана каталогдо сакталат doc/tutorial ns-3 булак коду.

1 Кирүү сөз
1.1 ns-3 жөнүндө
1.2 ns-2 колдонуучулар үчүн
1.3 Долбоорго катышуу
1.4 Башкаруу уюштуруу
2 Маалымат булактары
2.1 Тармак
2.2 Git
2.3 WAF
2.4 Өнүктүрүү чөйрөсү
2.5 Сокеттик программалоо
3-бөлүм
4-бөлүм
5-бөлүм
6-бөлүм
7-бөлүм
8, 9-бөлүмдөр

Котормону бир pdf файлында жүктөп алыңыз

ns-3 долбоору үчүн баштапкы документтер беш түрдө жеткиликтүү:

сөздөр

ns-3 симулятору, негизинен, изилдөө жана билим берүү үчүн арналган дискреттик окуя тармагы симулятору. ns-3 иштеп чыгуу долбоору 2006-жылы башталган жана ачык булак долбоору болуп саналат.

Бул колдонмонун максаты ns-3 жаңы колдонуучуларга системалуу, структуралык түрдө тааныштыруу болуп саналат. Кээде жаңы үйрөнчүктөргө керектүү маалыматты алуу жана аны жумушчу симуляцияга которуу кыйын болушу мүмкүн. Бул окуу куралында биз негизги түшүнүктөрдү жана мүмкүнчүлүктөрдү көрсөтүп жана түшүндүрүп, бир нече симуляция мисалдарын ишке ашырабыз.

Биз бара жатып, биз ns-3 үчүн толук документтерди беребиз жана системанын кантип иштээрин терең түшүнүүгө кызыккандар үчүн баштапкы кодго шилтемелерди беребиз.

Башында белгилей турган бир нече негизги жагдайлар бар:

  • ns-3 ачык булак болуп саналат жана долбоор изилдөөчүлөр өздөрүнүн программалык иштерине салым кошуп, бөлүшө ала турган ачык чөйрөнү сактоого умтулат.
  • ns-3 ns-2нин артка шайкеш кеңейтилиши эмес, бул жаңы симулятор. Эки симулятор тең C++ тилинде жазылган, бирок ns-3 жаңы симулятор, ал ns-2 API'лерди колдобойт.

1.1 ns-3 жөнүндө

Ns-3 симулятору тармакты симуляциялоо, тармактык изилдөөлөр жана билим берүү үчүн ачык, кеңейтилүүчү платформаны камсыз кылуу үчүн иштелип чыккан. Кыскача айтканда, ns-3 пакеттик маалымат тармактары кандайча ишке ашырылып, иштешет жана колдонуучуга симуляциялык эксперименттерди жүргүзүү үчүн симулятор кыймылдаткычын берет. ns-3 колдонуунун себептери реалдуу системада аткаруу кыйын же мүмкүн эмес изилдөө жүргүзүү талап кылынган жагдайларды камтыйт, системанын жүрүм-турумун катуу көзөмөлдөнгөн чөйрөдө, кайталануучу чөйрөдө изилдөө жана тармактардын кантип иштеши жөнүндө билүү. .

Колдонуучулар ns-3те берилген моделдердин жыйындысы Интернет протоколдорунун жана тармактарынын иштешин имитациялоого багытталганын белгилешет, бирок ns-3 Интернет тутумдары менен эле чектелбейт; кээ бир колдонуучулар Интернетке негизделген эмес системаларды моделдөө үчүн ns-3 колдонушат.

Жеткиликтүү көптөгөн тармак моделдөө куралдары бар. Төмөндө ns-3 башка инструменттерге салыштырмалуу бир нече жолдор бар.

  • ns-3 башка тышкы программалык китепканалар менен бирге айкалыштырыла турган китепканалардын жыйындысы катары иштелип чыккан. Кээ бир симуляция платформалары колдонуучуларга бардык ишти башкарган графикалык колдонуучу интерфейси менен бирдиктүү, интеграцияланган чөйрөнү камсыздаса, ns-3 бул жагынан көбүрөөк модулдук. ns-3 менен бир нече тышкы аниматорлорду, маалыматтарды талдоо жана визуалдаштыруу куралдарын колдонсо болот. Бирок, колдонуучулар буйрук сабында жана C++ жана/же Python программалык камсыздоону иштеп чыгуу куралдары менен иштей алышат.
  • ns-3 негизинен системаларда колдонулат Linux же macOS, бирок BSD системалары жана платформалары үчүн колдоо бар Windows, кодду компиляциялай алат Linuxсыяктуу Windows Кичи система үчүн Linux же Cygwin. Жергиликтүү Windows Visual Studio учурда колдоого алынбайт, бирок иштеп чыгуучу бул функцияны ишке ашыруунун үстүндө иштеп жатат. Колдонуучулар Windows ошондой эле виртуалдык машинаны колдоно алат Linux.
  • ns-3 эч кандай компаниянын расмий колдоого алынган программалык продуктусу эмес. ns-3 үчүн колдоо ns-3 колдонуучу форумунда (ns-3-users@googlegroups.com) максималдуу натыйжалуулук менен ишке ашырылат.

1.2 ns-2 колдонуучулар үчүн

ns-2 менен тааныш болгондор үчүн (ns-3ке чейинки популярдуу курал), ns-3ке өткөндө эң байкаларлык тышкы өзгөрүү бул скрипт тилинин өзгөрүшү. Ns-2деги программалар OTclде жазылган жана симуляциянын натыйжаларын nam тармак аниматорунун жардамы менен көрүүгө болот. ns-2де симуляцияны C++ тилинен гана иштетүү мүмкүн эмес (б.а. эч кандай OTcl жок main() программасы катары). Мындан тышкары, ns-2нин кээ бир компоненттери C++ тилинде, ал эми башкалары OTcl тилинде жазылган. Ns-3те симулятор толугу менен C++ тилинде кошумча Python байланыштары менен жазылган. Ошондуктан, симуляция скрипттерин C++ жана Python тилдеринде да жазса болот. Жаңы аниматорлор жана рендерерлер жеткиликтүү жана иштелип чыгууну улантууда. ns-3 pcap пакет трасса файлдарын жараткандыктан, башка утилиталар да издерди талдоо үчүн колдонулушу мүмкүн. Бул окуу куралында биз алгач C++ тилинде ишке ашырылган скрипттерге көңүл бурабыз жана натыйжаларды трасса файлдарын талдоо аркылуу чечмелейбиз.

Бирок окшоштуктар да бар (мисалы, эки курал тең C++ объекттерине негизделген, ns-2 кодунун кээ бирлери ns-3кө көчүрүлгөн). Биз бара жатып, ns-2 жана ns-3 ортосундагы айырмачылыктарды көрсөтүүгө аракет кылабыз.

Биз көп уккан суроо: "Мен дагы эле ns-2 колдонушум керекпи же ns-3кө жаңыртыш керекпи?" Автордун айтымында, эгер колдонуучу кандайдыр бир жол менен ns-2ге байланбаса (бар болгон жеке комфорттун жана ns-2 билиминин негизинде же ns-2де гана жеткиликтүү болгон белгилүү бир симуляциялык моделдин негизинде), анда ns- 3 Ал төмөнкү себептерден улам жемиштүү болот:

  • ns-3 жигердүү, жигердүү колдонуучу почта тизмеси менен колдоого алынат, ал эми ns-2 бир аз гана колдоого алынат жана он жылдан ашык убакытта негизги код дарагында олуттуу өзгөрүүлөрдү көргөн эмес.
  • ns-3 ns-2де жок өзгөчөлүктөр менен камсыз кылат, мисалы, ишке ашыруу кодунун иштөө убактысы (колдонуучуларга симулятордо реалдуу ишке ашыруу кодун иштетүүгө мүмкүндүк берет).
  • ns-3 ns-2ге караганда абстракциянын төмөнкү базалык деңгээлин камсыз кылат, бул реалдуу системалардын өз ара аракеттенүүсүнө жакшыраак дал келүүгө мүмкүндүк берет. ns-2де табылган кээ бир чектөөлөр (мисалы, түйүндө бир нече интерфейс түрлөрүн туура колдоо) ns-3тө оңдолгон.

Узак тарыхынан улам, ns-2 ns-3кө караганда колдоого алынган модулдардын ар түрдүү топтомуна ээ. Бирок, ns-3 бир нече популярдуу изилдөө тармактарында (анын ичинде татаал LTE жана WiFi моделдеринде) кененирээк моделдерге ээ жана аны ишке ашыруу кодунун колдоосу жогорку тактыктагы моделдердин абдан кеңири чөйрөсүн түзүүгө мүмкүндүк берет. Колдонуучулар бүтүндөй тармактык стек экенин билип таң калышы мүмкүн. Linux түз код аткаруу (DCE) алкагын колдонуп, ns-3 түйүнүнө камтылышы мүмкүн. ns-2 моделдерин кээде ns-3кө которууга болот, айрыкча, алар C++ тилинде ишке ашырылган болсо.

Эгер шектенсеңиз, эки тренажерду (ошондой эле башка симуляторлор сыяктуу), өзгөчө сиздин изилдөөңүз үчүн жеткиликтүү болгон моделдерди карап көрүү жакшы сунуш болот, бирок сиздин натыйжаларыңыз учурда активдүү болуп жаткан куралды колдонуу менен жакшыраак болушу мүмкүн экенин унутпаңыз. иштелип чыккан жана колдоого алынган (ns-3).

1.3 Долбоорго катышуу

ns-3 изилдөө коомчулугу үчүн илимий жана билим берүүчү симулятор болуп саналат. Ал жаңы моделдерди иштеп чыгуу, учурдагыларды оңдоо же сактоо жана натыйжаларды бөлүшүү үчүн коомчулуктун үзгүлтүксүз салымдарына негизделет. Адамдарды ns-3 үчүн жасагандай ns-2ке салым кошууга үндөгөн кээ бир саясаттар бар:

  • GNU GPLv2 лицензиясы менен шайкештикке негизделген ачык булак лицензиясы.
  • вики
  • бет салым коду, ns-2 үчүн популярдуу бетке окшош.
  • GitLab.com сайтын колдонуу, анын ичинде маселени көзөмөлдөө тутуму:
    https://www.gitlab.com/nsnam

Биз бул документти окуп жатсаңыз да, бул этапта ага салым кошууну пландап жатпашы мүмкүн экенин түшүнөбүз. Бирок биз салым кошуу долбоордун духуна туура келерин жана ns-3 менен болгон алгачкы тажрыйбаларыңыз тууралуу да пикириңизди баалай турганыбызды билишиңизди каалайбыз (мисалы, "үйрөтүүнүн бул бөлүмү так эмес..." ), эскирген документация жөнүндө кабарлоо же коддогу комментарий ж.б.у.с. Оңдоолорду тапшыруу үчүн артыкчылыктуу ыкма бул же бутагы (айрык) жасоо. https://www.gitlab.com/nsnam Сиздин оңдоолоруңуз менен жана бириктирүү өтүнүчүн түзүңүз же биздин трекерде сурам түзүп, патч кошуңуз.

1.4 Башкаруу уюштуруу

Бул колдонмо жаңы колдонуучулар адегенде бул сыяктуу нерсени ээрчиши мүмкүн деп болжолдойт:

  • Көчүрмөсүн жүктөп алып, чогултуп көрүңүз;
  • Бир нече үлгү программаларды иштетүүгө аракет кылыңыз;
  • Симуляциянын натыйжасын карап, аны тууралоого аракет кылыңыз.
    Акыры, биз презентацияны ушул кадамдарга ылайык уюштурууга аракет кылдык.

бөлүм 2

маалымат булагы

2.1 Тармак

Ар бир ns-3 колдонуучусу билиши керек болгон бир нече маанилүү ресурстар бар. Негизги веб-сайт төмөнкү даректе жайгашкан: https://www.nsnam.org
жана ns-3 системасы жөнүндө негизги маалыматка жетүүнү камсыз кылат. Толук документация негизги веб-сайт аркылуу жеткиликтүү: https://www.nsnam.org/documentation/.

Ушул эле веб-баракчадан сиз системанын архитектурасына тиешелүү документтерди таба аласыз.

Негизги ns-3 веб-сайтын толуктаган вики баракчасы бар, аны төмөнкү жерден таба аласыз: https://www.nsnam.org/wiki/.

Ал жерден сиз колдонуучулар жана иштеп чыгуучулар үчүн көп берилүүчү суроолорго жоопторду, ошондой эле көйгөйлөрдү аныктоо боюнча колдонмолорду, үчүнчү тараптын кодун, документтерди жана башкаларды таба аласыз.
Булак кодун GitLab.com сайтынан тапса жана көрүүгө болот:
https://gitlab.com/nsnam/.

аты менен репозиторийде бар ns-3-dev учурдагы өнүгүү дарагы жайгашкан. Мурунку релиздерди жана ядрону иштеп чыгуучулардын эксперименталдык репозиторийлерин Mercurial астындагы эски долбоордун сайтынан тапса болот:
http://code.nsnam.org.

2.2 Git

Татаал программалык камсыздоо тутумдары уюштурууну жана негизги кодду жана документтерди өзгөртүүнү башкаруунун кандайдыр бир ыкмасын талап кылат. Буга жетишүүнүн көптөгөн жолдору бар жана сиз буга жетүү үчүн көбүнчө колдонулган системалардын айрымдарын уккандырсыз. Акыркы убакка чейин ns-3 долбоору Mercurialды баштапкы кодду башкаруу системасы катары колдонгон, бирок 2018-жылдын декабрында биз Gitти колдонууга өттүк. Бул колдонмону окуу үчүн Git жөнүндө көп нерсени билүүнүн кереги жок болсо да, биз аны менен таанышып, аны баштапкы кодго жетүү үчүн колдонууну сунуштайбыз. GitLab.com негизги көндүмдөрдү өздөштүрүү үчүн ресурстар менен камсыз кылат: https://git-scm.com/book/ru/v2.

2.3 WAF

Компьютериңизге баштапкы кодду жүктөгөндөн кийин, программаны иштетүүгө даярдоо үчүн аны компиляциялашыңыз керек болот. Булак кодун башкаруу сыяктуу эле, бул функцияны аткаруу үчүн көптөгөн куралдар бар. Балким, бул куралдардын эң белгилүүсү бул жасоо. Бул курал эң белгилүү болгону менен, ал өтө чоң жана конфигурациялануучу системада колдонулганда эң татаал экенин белгилей кетүү керек. Бул көптөгөн альтернативаларды иштеп чыгууга алып келди. Акыркы убакта мындай системалар Python тилин колдонуу менен иштелип чыккан.

ns-3 долбоору Waf куруу системасын колдонот. Бул Python негизиндеги куруу системаларынын жаңы муунун бир бөлүгү. Учурдагы ns-3 системасын куруу үчүн Python тилин билүүнүн кереги жок.

Waf колдонуунун чоо-жайына кызыккандар үчүн төмөнкү даректе китеп бар:
https://waf.io/book/
жана учурдагы код:
https://gitlab.com/ita1024/waf/.

2.4 Өнүктүрүү чөйрөсү

Жогоруда айтылгандай, ns-3 скрипттери C++ же Python тилдеринде аткарылат. Ns-3 API көпчүлүгү Python жеткиликтүү, бирок моделдер баары бир C ++ жазылган. Бул окуу куралы сиз C++ тилинде объектиге багытталган программалоону жакшы билесиз деп болжолдойт. Убакыттын өтүшү менен биз кээ бир өркүндөтүлгөн концепцияларды жана идиомалар жана дизайн үлгүлөрү сыяктуу бейтааныш тил өзгөчөлүктөрүн карап чыгууга бир аз убакыт бөлөбүз. Биз бул колдонмонун C++ окуу куралы болушун каалабайбыз, андыктан тилди негизги түшүнүүнү күтөбүз. C++ жөнүндө көптөгөн маалымат булактары онлайн же басма түрүндө жеткиликтүү.

Эгер сиз C++ менен жаңы болсоңуз, улантуудан мурун окуу куралы же окуу куралы же рецепт веб-сайты аркылуу тилдин негиздерин үйрөнүңүз. Мисалы, бул сыяктуу: https://github.com/ashtanyuk/CPP-2018.

төмөндө Linuxns-3 системасы GNU куралдар тизмегинен бир нече компоненттерди колдонот. Куралдар тизмеги – бул берилген программалык чөйрөдө жеткиликтүү болгон программалоо куралдарынын жыйындысы. GNU куралдар тизмегине эмнелер киргени жөнүндө кыскача маалымат алуу үчүн караңыз http://en.wikipedia.org/wiki/GNU_toolchain.

Ns-3 симулятору gcc, GNU binutils жана gdb колдонот. Ошол эле учурда биз долбоорду куруу үчүн GNU инструменттеринен жасалган же авто куралдарды колдонбойбуз. Бул функциялар үчүн биз Waf колдонобуз.

В macOS Xcode куралдар чынжыры колдонулат. Mac'тагы ns-3 колдонуучуларына Xcode жана буйрук сабынын курал пакеттерин Apple App Store'дон орнотуу сунушталат, ал эми көбүрөөк маалымат алуу үчүн ns-3 орнотуу вики барагына кириңиз: (https://www.nsnam.org/wiki/Installation).

Адатта, ns-3түн автору иштейт Linux же Unix сыяктуу чөйрө. Кол астында иштегендер үчүн Windows, айлана-чөйрөнү ар кандай деңгээлде туураган чөйрөлөр бар LinuxМындай колдонуучулар үчүн ns-3 долбоору тарыхый жактан (бирок учурда эмес) Cygwin чөйрөсүндө иштеп чыгууну колдоп келген. Жүктөп алуу жөнүндө маалымат жана Cygwin жана ns-3 жөнүндө көбүрөөк маалымат алуу үчүн ns-3 вики барагына кириңиз:
http://www.cygwin.com/.

MinGW учурда расмий түрдө колдоого алынбайт. Cygwinге дагы бир альтернатива - бул VMware Server сыяктуу виртуалдык чөйрөнү орнотуу, ал жерге орното аласыз Linux.

2.5 Сокеттик программалоо

Бул окуу куралындагы мисалдар Berkeley Sockets API'синин негизги мүмкүнчүлүктөрүн колдонот. Эгер сиз сокеттерге жаңыдан үйрөнүп жатсаңыз, API жана кээ бир кеңири таралган колдонуу учурлары менен таанышып чыгууну сунуштайбыз. Сокет программалоосуна жакшы сереп салуу үчүн, TCP/IP Биз төмөнкүлөрдү колдонууну сунуштайбыз: "TCP/IP Cдеги розеткалар", Донаху жана Калверт.

Китептеги мисалдардын булагын камтыган шилтемеленген веб-сайт бар, аны төмөнкү жерден таба аласыз:
http://cs.baylor.edu/~donahoo/practical/CSockets/.

Эгер сиз китептин алгачкы төрт бөлүмүн түшүнсөңүз (же китептин көчүрмөсүн, эхо кардарлары жана серверлери жогоруда шилтемеленген веб-сайтта көрсөтүлгөн), бул окуу куралын түшүнүү үчүн жетиштүү болот. Окшош китеп бар
"Multicast Sockets, Multicast Sockets", Makofske and Almeroth.

Ал бөлүштүрүүдөгү мультикаст мисалдарын изилдеп көрсөңүз керек болгон материалды камтыйт.

Уландысы: 3-бөлүм

Source: www.habr.com

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster