16
Универзитет у Београду Саобраћајни факултет Рачунарска симулација Тема: Network Simulator 3 (семинарски рад) Београд, 2016. Студент: Никола Ђорђевић Индекс: ТС130211 Професор: др Мирјана Стојановић

Network Simulator 3

Embed Size (px)

Citation preview

Универзитет у БеоградуСаобраћајни факултет

Рачунарска симулација

Тема: Network Simulator 3(семинарски рад)

Београд, 2016.

Студент:Никола ЂорђевићИндекс: ТС130211

Професор:др Мирјана Стојановић

Садржај

1.Увод......................................................................................................................................................32.Рачунарска мрежа................................................................................................................................33.Network Simulator 3.............................................................................................................................5

3.1. Основни појмови.........................................................................................................................53.2. NetAnim........................................................................................................................................6

4.Развој симулационог модела рачунарске мреже..............................................................................75.Закључак.............................................................................................................................................12Литература.............................................................................................................................................13ПРИЛОГ................................................................................................................................................14

2

1.Увод

У данашње време, када свака скоро породица поседује барем један рачунар, сви смо свесни да се информационе технологије развијају великом брзином, а да се са уређајима данашњице могу урадити мноштво ствари о којима се у претходне две деценије могло само замишљати.

Први рачунари су креирани са циљем да аутоматски решавају једноставније рачунске операције, а са развојем технологије су се јавиле и нови проблеми где је решење био рачунар (нпр. коришћење одређене машине помоћу програма у рачунару). У новијем добу, са развојем индустрије, јавила се потреба за сложенијим прорачунима у разним областима у индустрији. Раније се до разних претпоставки и резултата сложенијих рачуна долазило „ручно“, уз велики губитак времена и ресурса. Ова ситуација је промењена након креирања првих програма који су, помоћу разних претпоставки, успешно представили могући резултат неке акције у стварном животу.

Ови програми, који су касније названи симулатори, временом су нашли своју примену у свим сферама живота. Тако имамо симулатор, који уз карактеристике свих елемената, може врло верно да представи једно електрично коло, као и резултат рада тог кола; такође имамо и симулаторе који могу на основу кључних параметара да предвиде појаву неке природне катастрофе. Код млађе популације се ипак примена симулатора највише своди на употребу видео-игара, које се из године у годину све више развијају.

У овом раду је развијен симулациони модел рачунарске мреже помоћу бесплатног програма Network Simulator 3. Овај програм омогућава креирање различитих модела рачунарске мреже са циљем да се детаљно представи рад мрежа и резултати њиховог рада, који се касније могу и графички представити ради лакшег разумевања. У почетку рада су наведени основни појмови из теорије рачунарских мрежа, а у даљим поглављима је описан програм Network Simulator 3 као и кораци реализације једне рачунарске симулације.

2.Рачунарска мрежа

Рачунарска мрежа представља скуп од најмање два рачунара који су међусобно повезани одговарајућим медијумом (жица, оптички кабл, ваздух итд.) и који међусобно могу да комуницирају и деле ресурсе (нпр. штампачи, модеми, дискови итд.). Поред рачунара и медијума, рачунарска мрежа се састоји и од уређаја као што су мрежне картице, свичеви, рутери, који заједно са рачунарима и медијумима чине инфраструктуру рачунарске мреже.

Свака рачунарска мрежа се може поделити на две целине: хардверску и софтверску. Под хардверским делом рачунарске мреже спадају мрежни чворови у којима се врши обрада информација, физички спојни пут и дељени ресурси. Даље, чворове можемо поделити на чворове у којима се врши стварна обрада информације и на чворове чија је улога да врше преусмеравање информације ка жељеном циљу. Софтверска целина се састоји од протокола, оперативног система и корисничког мрежног софтвера.

Рачунарске мреже се могу поделити на више начина, у зависности од критеријума. Једна од подела је према архитектури и тада рачунарска мрежа може бити:

1) Peer-to-peer – тип рачунарске мреже у којима сваки корисник администрира свој рачунар; сви рачунари су по хијерархији међусобно једнаки и сви рачунари деле све своје податке. Овакве мреже се углавном састоје од мањег броја рачунара, па је самим тим и имплементација ове мреже јефтина.

3

2) Client-server – тип рачунарске мреже који садржи централни рачунар (сервер) који садржи све податке; корисници имају могућност да се прикључе на сервер и могу да преузму само оне податке које сервер дозвољава (ово селективно дељење података се подешава у бази података унутар сервера). Безбедност овакве мреже је много већа него код мрежа типа peer-to-peer, али је њена имплементација скупља, што је и разумљиво с обзиром на број рачунара који чине ову рачунарску мрежу.

Рачунарску мрежу можемо поделити према топологији. Топологију можемо поделити на логичку и физичку – логичка топологија је начин на који се подаци преносе између уређаја на мрежи, док је физичка топологија физички изглед постављених мрежних каблова.

Постоје две главне логичке топологије:

1) Топологија магистрале2) Топологија прстена

Физичку топологију можемо поделити на:

1) Топологија звезде2) Топологија прстена3) Топологија звезда-прстен4) Топологија магистрале5) Бежична топологија

Ethernet је један од примера у којем физичка топологија није иста као и логичка; ове мреже најчешће користе звезду физичку топологију, а магистралу за логичку топологију.

С обзиром на чињеницу да сваки рачунар који се налази у некој рачунарској мрежи поседује најмање један мрежни уређај, потребно је дефинисати IP и MAC адресе, које су веома битне код ових компоненти рачунара. IP (Internet Protocol) адреса је 32-битни број (према стандарду IPv4; због брзог развоја интернета уведен је стандард IPv6 у којем је IP адреса 128-битни број) који се додељује сваком уређају који користе интернет протокол за комуникацију. MAC (Media Access Control) адреса, која се још назива и физичка адреса, је јединствена ознака која се додељује сваком мрежном уређају. Ова адреса се најчешће користи као мрежна адреса за већину технологија које припадају IEEE 802 стандарду (нпр. Ethernet, WiFi). За разлику од IP адреса, MAC адресе углавном дефинише произвођач мрежних уређаја.

У рачунарским мрежама постоје два основна начина преноса података. У првом типу између два учесника у комуникацији успоставља се чврста директна веза, а укупна информација се преноси путањом која је утврђена у току успоставе везе. Такође, комуникација било која друга два учесника не може да се одвија заузетим спојним путем. Основна карактеристика оваквог начина преноса података је да се подаци могу преносити успостављеном везом максималном брзином која је могућа. У другом типу преноса, пренос података између два учесника се реализује помоћу пакета. Прво се информација која се размењује дели у пакете чија структура одговара носећим протоколима. Пакети се упућују до првог чвора у мрежи, а у сваком рутеру се врши независно усмеравање пакета. Избор путање у рутерима се врши на основу више критеријума који важе у датом тренутку. Пакети пролазе различите путање од изворишта до одредишта. На одредишту се врши слагање пакета у првобитан редослед да би се добила потпуна информација. Суштина оваквог начина преноса података је да се у празним просторима могу слати пакети које шаље неки трећи учесник. Мана је што је ефективна брзина слања података на овај начин мања од максималне коју дозвољава пропусни опсег канала, зато што га користе више учесника у комуникацији.

4

3.Network Simulator 3

Network Simulator 3 (у даљем тексту NS-3) је симулатор мреже заснован на дискретним догађајима. Овај софтвер је бесплатан, јавно доступан под лиценцом GNU GPLv2 за истраживање, развој и употребу и може се покренути на неколико различитих оперативних система (Linux, Windows, Mac OS и др.). Језгро овог симулатора је написано у програмском језику C++ са Python интерфејсом. NS-3 се најчешће користи за симулацију рачунарских мрежа у настави и истраживању, због чега је један од циљева свих корисника који се баве развојем овог софтвера да NS-3 буде усклађен са потребама модерног истраживања рачунарских мрежа, како би корисници који користе овај софтвер били у току са развојем технологија – на свака три месеца се објављује нова верзија NS-3 са новим моделима и документацијом.

Слика 1. – Лого NS-3 симулатора

Укупно постоје три верзије симулатора Network Simulation – NS-1, NS-2 и NS-3. Прва верзија симулатора, која је развијена у периоду 1995-1997, више се не развија и не одржава, друга верзија се не одржава активно, док се трећа и последња верзија активно развија. Једна од битнихих чињеница је да NS-3 није компактибилан са верзијом NS-2.

Општи процес развијања симулације се може поделити на неколико корака:

1) Дефинисање топологије – да би се олакшало стварање основних објеката и дефинисање веза између њих, симулатор користи систем контејнера (containers) и помагача (helpers) који олакшавају овај процес;

2) Развој модела – модели се додају у симулацију (нпр. UDP, IPv4, point-to-point тачке и везе, апликације) и у већини случајева се то ради помоћу помагача;

3) Чвор и конфигурација везе – моделима се додељују подразумеване вредности (нпр. величина пакета који је послат помоћу апликације) и у већини случајева се то ради помоћу атрибута система;

4) Покретање;5) Анализа перформанси – овај корак се реализује након завршетка симулације и када

подаци постану доступни; на основу података се може извршити статистичка анализа помоћу разних алата;

6) Графичка визуелизација – сви прикупљени подаци се могу графички помоћу разних графичких алата, како би се боље разумели добијени подаци.

3.1. Основни појмови

У NS-3 симулатору основи рачунар у мрежи се назива чвор (Node). Овај део мреже се представља помоћу C++ класе Node, која обезбеђује методе за управљање репрезентације рачунарских уређаја у симулацијама. Чвор у почетку не садржи никакве додатке (нпр. апликације, протоколе, мрежне картице), али они се свакако касније могу додати.

5

Основна апстракција за корисника која генерише неке активности за симулацију је апликација (Application). C++ класа Application обезбеђује методе за управљање репрезентације наше верзије апликације на нивоу корисника у симулацијама.

У симулатору, веза између два чвора се назива канал (Channel), који се представља помоћу C++ класе Channel. Ова класа обезбеђује методе за управљање комуникације подмреже објеката и повезивање чворова између њих.

Мрежни уређај (NetDevice) је додатак који се инсталира у сваки рачунар како би се омогућила комуникација између других чворова преко канала у једној мрежи. Постоји могућност да се један чвор повеже на више од једног канала, али да би се то извело потребно је да чвор поседује број мрежних уређаја који је једнак броју канала са којим чвор жели да се повеже. Мрежни уређај се представља помоћу C++ класе NetDevice, који обезбеђује методе за управљање конекције између чвора и канала.

У већој мрежи је неопходно организовати много веза између чворова, мрежних уређаја и канала. У NS-3 симулатору постоји објекат топологија помоћник (Topology Helper) који комбинује разне различите операције у један јединствен модел.

3.2. NetAnim

Графичка визуелизација је последњи корак у реализацији једне симулације у симулатору NS-3. Овај корак може да се реализује на неколико различитих начина уз помоћ додатака различите сложености. Један од аниматора који је употребљен у даљем раду је NetAnim, офлајн аниматор који је заснован на Qt алату. Овај додатак користи податке из XML фајла који се прикупљају приликом симулације. На слици 2. је приказано радно окружење програма NetAnim.

Слика 2. – Радно окружење програма NetAnim

6

4.Развој симулационог модела рачунарске мреже

За реализацију ове симулације је употребљена верзија 3.24 програма NS-3 (ова верзија је објављена у септембру 2015. године) у оперативном систему Linux. За графичку визуелизацију резултата је употребљена верзија 1.0.6 програма NetAnim.

У развоју симулационог модела у софтверу NS-3 биће употребљена рачунарска мрежа приказана на слици 3. Ова мрежа се састоји од n+1 рачунара, где је n број рачунара који уноси корисник преко конзоле. Максималан број рачунара који може да се повеже на магистралу је 20. Од n+1 рачунара, два рачунара су међусобно повезана по принципу peer-to-peer, а n рачунара је повезано у магистрали помоћу Ethernet протокола. Сваки рачунар садржи по један мрежни уређај, осим рачунара који је повезан и на магистралу и са првим рачунаром – он садржи два мрежна уређаја. Сваком рачунару је додељена одређена IP адреса, на основу IP адресе мреже, као и јединствене MAC адресе.

Потребно је нагласити да је у овом примеру коришћен и тип мреже Client/server – у овом примеру је сервер последњи рачунар који је повезан на магистралу. Циљ симулације је да пакети које шаље први рачунар (клијент) стигну до последњег рачунара (сервер), који ће се потом вратити назад ка пошиљаоцу.

Слика 3. – Шематски приказ рачунарске мреже

Свакој подмрежи се додељује јединствена IP адреса базе на основу које се даље додељују IP адресе за сваки уређај. У табели 1. је представљен приказ свих IP адреса које су употребљене у симулацији (у симулацији је употребљено пет рачунара). Ове IP адресе не уноси корисник, већ су саставни део кода.

Табела 1. – IP и MAC адресе рачунара у мрежи

IP адреса MACадресаПодмрежа 1

(10.1.1.0)Подмрежа 2

(10.1.2.0)Рачунар 1 10.1.1.1 / 00:00:00:00:00:01Рачунар 2 10.1.1.2 10.1.2.1 00:00:00:00:00:02 / 00:00:00:00:00:01Рачунар 3 / 10.1.2.2 00:00:00:00:00:04Рачунар 4 / 10.1.2.3 00:00:00:00:00:05Рачунар 5 / 10.1.2.4 00:00:00:00:00:06

7

4.2. Покретање симулације

Када је реч о оперативном систему Linux, рад у симулатору NS-3 се заснива на писању команди у конзоли. За почетак, потребно је отићи у директоријум у којем је инсталиран симулатор. На слици 4. се налази приказ свих датотека у директоријуму у којем је симулатор инсталиран.

Потребно је направити нову датотеку у директоријуму scratch у коју ће датотека бити смештена. У овом примеру датотека се зове seminarski.cc и у њој се налази код који је дат у прилогу.

Симулација се покреће помоћу кода ./waf --run scratch/seminarski . Прво се од корисника тражи да унесе број рачунара који ће бити повезани у магистралу (слика 5.). У овом примеру је четири рачунара који су повезани у магистрали.

Након притиска на дугме Enter, почиње рад симулатора и у веома кратком року се на конзоли исписују резултати симулације. Поред резултата, у конзоли је исписано и упозорење које не утиче на резултат симулације (слика 6.).

Слика 4.

Слика 5.

8

Слика 6.

Добијени су следећи резултати: први рачунар (10.1.1.1) је у другој секунди од почетка симулације послао пакет величине 1Mb последњем рачунару (10.1.2.4) са порта број 49153; 78 милисекунди касније последњи рачунар прима послати пакет преко порта 9 и аутоматски враћа пакет рачунару који га је послао, да би у 2.01761 секунди од почетка симулације пакет стигао првом рачунару. Дакле, рачунари су успешно повезани и могуће је извршити слање података кроз мрежу.

С обзиром на то да је у коду додата наредба да програм направи излазну XML датотеку на крају симулације, могуће је графички представити резултате ове симулације.

4.3. Графичка визуелизација резултата

Изглед радног окружења програма NetAnim у којем ће се извршити графичка визуелизација резултата симулације је приказана на слици 2. Овај програм се покреће из команде линије помоћу команде ./netanim/NetAnim из директоријума ns-3.24. За почетак је потребно учитати XML датотеку у којој су сачувани резултати симулације; потребно је кликнути на сличицу директоријума у горњем левом углу интерфејса. Затим је потребно одабрати датотеку и кликнути на Open (слика 7.). Датотека коју је потребно отворити назива се rezultat.xml – овај назив датотеке је дефинисан у коду програма.

Слика 7.

9

Након овог корака, појавиће се прозор као на слици 8. Локација свих тачака у овом програму су дефинисане у коду програма. Корисник има могућност да подеси разне параметре који могу да утичу на изглед анимације, као и на брзину реализације исте. Притиском на дугме Play animation (зелена стрелица у гоњем левом углу), програм почиње са анимацијом. На сликама 9-16. су приказани сви кораци анимације.

Слика 8.

Слика 9. Слика 10.

Слика 11. Слика 12.

Слика 13. Слика 14.

10

Слика 15. Слика 16.

Први рачунар (10.1.1.1) шаље другом рачунару (10.1.1.2) пакет величине 1Mb. Када је пакет стигао до друге подмреже са рачунарима који су повезани магистралом, почиње се са применом ARP-а (Address Resolution Protocol), протоколом који је стандардан за мреже у којој су рачунари повезани на магистралу. Рачунар бр. 1 шаље свим рачунарима на магистрали сигнал са IP адресом на коју треба да се достави пакет (у овом случају 10.1.2.4), затим рачунар са овом IP адресом (рачунар бр. 4) шаље на магистралу повратни сигнал који садржи његову MAC адресу. Након што је рачунар бр. 1 примио повратни сигнал, он шаље пакет до рачунара који има MAC адресу идентичну као у повратном сигналу, и тиме се завршио први обилазак пакета – од клијента до сервера. Након тога почиње процедура враћања пакета, која је слична претходно описаној процедури.

Уколико корисник два пута кликне на било коју тачку, појавиће се нова картица са десне стране интерфејса, као на слици 17.

Слика 17.

У новој картици корисник има могућност да пронађе детаљније информације о сваком рачунару у мрежи – IP и MAC адресу мрежних уређаја у рачунарима, координате сваког рачунара (ове координате се дефинишу у коду програма) као и поједине параметре који одређују сваки рачунар у овом програму (ID рачунара, боја тачке која представља рачунар, величина тачке).

11

5.Закључак

У овом раду је развијен симулациони модел једна рачунарске мреже помоћу симулатора Network Simulator 3. Резултати рада овог симулатора су приказани помоћу програма NetAnim.

Network Simulator 3 представља одличан, бесплатан симулатор који може да помогне свима који желе да проуче рад једне рачунарске мреже. Ове рачунарске мреже могу бити и једноставне и сложене, али какве год оне биле симулатор у оптималном року даје жељене резултате. Предност овог симулатора је та што се он редовно унапређује од стране стотине корисника широм света, тако да је овај симулатор увек у току са развојем технологија. Једини услов је да корисник поседује основно знање из програмирања у C++ програмском језику, с обзиром на чињеницу да је програмски код који описује рачунарску мрежу заснован на C++ језику.

Да би се резултати приказали са више детаља, употребљен је програм NetAnim који кроз анимацију представља резултате симулације програма Network Simulation 3. Уз помоћ анимације корисник има детаљнији увид у рад једне рачунарске мреже.

12

Литература

1. Небојша Лукић, „Увод у рачунарске мреже“, Бијељина, 2006.2. Младен Веиновић, Александар Јевремовић, „Увод у рачунарске мреже“,

Универзитет Сингидунум Факултет за пословну информатику, Београд, 2007.3. https://www.nsnam.org/4. https://en.wikipedia.org/wiki/Ns_(simulator)5. https://technet.microsoft.com/en-us/library/cc940010.aspx6. https://www.youtube.com/watch?v=1FBSAghbjNM

13

ПРИЛОГ

(програмски код)

14

#include "ns3/core-module.h"#include "ns3/network-module.h"#include "ns3/csma-module.h"#include "ns3/internet-module.h"#include "ns3/point-to-point-module.h"#include "ns3/applications-module.h"#include "ns3/ipv4-global-routing-helper.h"#include "ns3/netanim-module.h"

using namespace ns3;

NS_LOG_COMPONENT_DEFINE ("SeminarskiRad");

int main (int argc, char *argv[]){

uint32_t nCsma; bool verbose = true; do { std::cout<<"Unesite broj racunara koji ce biti povezani u magistralu:"; std::cin>>nCsma; nCsma = nCsma-1; }while(nCsma<2 || nCsma>20); CommandLine cmd; cmd.AddValue ("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma); cmd.AddValue ("verbose", "Tell echo applications to log if true", verbose);

cmd.Parse (argc,argv);

if (verbose) { LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO); }

nCsma = nCsma == 0 ? 1 : nCsma;

NodeContainer p2pNodes; p2pNodes.Create (2);

NodeContainer csmaNodes; csmaNodes.Add (p2pNodes.Get (1)); csmaNodes.Create (nCsma);

PointToPointHelper pointToPoint; pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

NetDeviceContainer p2pDevices; p2pDevices = pointToPoint.Install (p2pNodes);

CsmaHelper csma;

15

csma.SetChannelAttribute ("DataRate", StringValue ("100Mbps")); csma.SetChannelAttribute ("Delay", TimeValue (NanoSeconds (6560)));

NetDeviceContainer csmaDevices; csmaDevices = csma.Install (csmaNodes);

InternetStackHelper stack; stack.Install (p2pNodes.Get (0)); stack.Install (csmaNodes);

Ipv4AddressHelper address; address.SetBase ("10.1.1.0", "255.255.255.0"); Ipv4InterfaceContainer p2pInterfaces; p2pInterfaces = address.Assign (p2pDevices);

address.SetBase ("10.1.2.0", "255.255.255.0"); Ipv4InterfaceContainer csmaInterfaces; csmaInterfaces = address.Assign (csmaDevices);

UdpEchoServerHelper echoServer (9);

ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (nCsma)); serverApps.Start (Seconds (1.0)); serverApps.Stop (Seconds (10.0));

UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (nCsma), 9); echoClient.SetAttribute ("MaxPackets", UintegerValue (1)); echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0))); echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

ApplicationContainer clientApps = echoClient.Install (p2pNodes.Get (0)); clientApps.Start (Seconds (2.0)); clientApps.Stop (Seconds (10.0));

Ipv4GlobalRoutingHelper::PopulateRoutingTables ();

pointToPoint.EnablePcapAll ("second"); csma.EnablePcap ("second", csmaDevices.Get (1), true);

AnimationInterface anim ("rezultat.xml"); anim.SetConstantPosition (p2pNodes.Get(0),1.0,1.0); anim.SetConstantPosition (csmaNodes.Get(0),4.0,1.0); for (double i=0.0;i<nCsma;i++) {

anim.SetConstantPosition (csmaNodes.Get(i+1.0),i+3.0,2.0); } anim.EnablePacketMetadata (true);

Simulator::Run (); Simulator::Destroy (); return 0;}

16