Upute Za Rad Sa Simulatorom NS2

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

Fakultet elektrotehnike i računarstva

Zavod za telekomunikacije

Simulator NS2
Upute za rad

željko ilić
1. Opis rada u simulatoru NS2

NS 2 (Network Simulator) je objektno orijentiran mrežni simulator razvijen na


Sveučilištu Berkely. Simulator pruža mogućnost simulacijske analize lokalnih i
širokopojasnih mreža. NS implementira mrežne protokole kao što su TCP i UDP, ponašanje
prometnih izvora kao što su FTP, Telnet, Web, CBR i VBR, mehanizme upravljanja
spremnicima kao što su Drop Tail, RED i CBQ, algoritam usmjeravanja Dijkstra i mnoge
druge stvari. NS također implementira višeodredišno razašiljanje (multicast) i neke od
protokola sloja pristupa mediju (MAC, Medium Access Control) za simulacije u LAN-u. NS
projekt je sada dio VINT projekta koji razvija alate za prikaz rezultata simulacije, analize i
pretvarače koji pretvaraju mrežnu topologiju generiranu od dobro poznatih generatora NS
formata.
NS je napisan u dva programska jezika: C++ i Otcl-u (Tcl je skriptni jezik s objektno
orijentiranim (OO) proširenjem). U [12] su detaljno opisane osnovne strukture NS-a, te je
objašnjeno kako koristiti NS većinom kroz raznolike primjere.

1.1. Općenito o simulatoru NS2

Kako je prikazano na slici (Slika 1.1) u pojednostavljenom korisnikovom pogledu, NS


je objektno-orijentirani Tcl (OTcl) skriptni prevoditelj koji sadrži raspored simulacijskih
događaja, biblioteke objekata mrežnih komponenti i biblioteke pomoćnih modula (plumbing
modules) za opis mreže (plumbing moduli su implementirani kao pripadajuće funkcije
(member functions) osnovnog simulatorskog objekta). Drugim riječima, da bi se koristio NS,
treba programirati u OTcl skriptnom jeziku. Da bi se postavila i pokrenula simulacija mreže,
korisnik treba napisati OTcl skriptu koja pokreće raspored događaja, postavlja mrežnu
topologiju koristeći mrežne objekte i pokretačke funkcije (plumbing functions) iz biblioteke
funkcija i govori prometnim izvorima kada pokrenuti i zaustaviti prenošenje paketa prema
rasporedu događaja. Korisnik može napraviti novi mrežni objekt pišući isti ili praveći isti
koristeći objekte iz biblioteke objekata (object library). Ovo može izgledati kao kompliciran
posao, ali plumbing Otcl modula čine posao jako jednostavnim. Snaga NS simulatora upravo
dolazi iz plumbing-a.

1
analiza
Tcl prevoditelj sa OO rezultata
ekstenzijom

Otcl skripta
Biblioteka NS rezultati
simulacijskog simulatora simulacije
programa
 objekt rasporeda
događaja
 objekt mrežne grafički
komponente prikaz u
 pomoćni moduli za NAM-u
postavljanje mreže
(plumbing modules)

Slika 1.1 Korisnikov pogled na NS

Druga važna komponenta NS-a, osim mrežnih objekata je raspoređivač događaja


(event scheduler). Događaj u NS-u je identifikator paketa (packet ID), koji je jedinstven za
paket sa ugovorenim vremenom (scheduled time) i pokazivačem na objekt koji upravlja
događajem. U NS-u raspored događaja slijedi vrijeme simulacije i pokreće sve događaje koji
čekaju raspoređeni za trenutno vrijeme, prozivajući odgovarajuće mrežne komponente.
Mrežne komponente komuniciraju jedna s drugom propuštajući pakete, međutim to ne troši
stvarno vrijeme simulacije. Sve mrežne komponente koje trebaju potrošiti određeno vrijeme
upravljajući s paketima (unose neko kašnjenje), koriste raspored događaja u koji se uključuje
sam događaj s paketom kao i vrijeme čekanja da se paket otpusti prije nego što se nastavi
daljna akcija upravljanja paketom. Na primjer, mrežna komutatorska komponenta (network
switch component) koja simulira komutator (switch) s 20 mikrosekundi komutatorskog
kašnjenja (switching delay) uključuje događaj za paket koji je predočen u rasporedu kao
događaj koji se pojavljuje 20 mikrosekundi kasnije. Raspoređivač događaja nakon 20
mikrosekundi uklanja događaj iz spremnika i prenosi ga u komutatorsku komponentu, koja
prosljeđuje paket na odgovarajući izlazni link.
Druga uporaba raspoređivača događaja je mjerač vremena. Na primjer, TCP koristi
mjerač vremena koji motri na istek vremena prijenosa paketa (packet transmission time out)
zbog retransmisije (transmisija paketa sa istim brojem TCP paketa, ali različitim NS
identifikatorom paketa). Mjerači vremena koriste raspoređivač dogođaja na sličan način kako
je to opisano za kašnjenje.

2
1.2. C++ i OTcl

NS je objektno orijentirani simulator, napisan u programskim jezicima C++ i Otcl-u.


NS koristi dva programska jezika iz razloga što simulator ima dvije različite vrste stvari koje
izvodi. S jedne strane, detaljne simulacije protokola zahtijevaju programski jezik koji može
učinkovito upravljati paketima, zaglavljima paketa i implementiranjem algoritama koji rade s
velikim količinama podataka. Za ovakve zadatke brzina vremena izvođenja simulacije je jako
važna, dok je rijeme ciklusa manje važno (run simulation, find bug, fix bug, recompile, re-
run). S druge strane, veliki broj mrežnih istraživanja uključuju polagano promjenljive
parametre ili konfiguriranje ili brzo istraživanje broja scenarija. U ovim slučajevima, vrijeme
iteracije (promijeniti model i ponovno pokrenuti simulaciju) je jako važno. Budući se
konfiguracija pokreće samo na početku simulacije, vrijeme izvođenja simulacije u ovom
dijelu zadatka je manje važno.
NS svoje zahtjeve zadovoljava s ova dva jezika: C++ i Otcl. C++ izvodi simulaciju
jako brzo, pogodan je za detaljne implementacije protokola, ali je sporiji za promjene koda i
pojedinih parametara. Otcl se pokreće mnogo sporije, ali njegov kôd može se izmjeniti jako
brzo te je na taj način idealan za simulacijske konfiguracije. NS omogućava spoj ova dva
jezika te pravi objekte i varijable dostupnim na oba jezika. Glavno pitanje je koji jezik
koristiti za koju potrebu? Otcl je najbolje koristiti:
 za konfiguraciju, postavke i radnje koje se rade samo jedanput (one-timestuff);
 za događaje koji se mogu realizirati upravljajući s postojećim C++ objektima.
dok C++ je najbolje koristiti za :
 radnje koje zahtijevaju procesiranje svakog paketa u toku;
 promijene ponašanja postojećih C++ klasa na načine koji nisu bili pretpostavljeni.
Na primjer, linkovi su Otcl objekti koji okupljaju module za kašnjenje, upravljanje
spremnicima i mogućim modulima za gubitke. Ako se eksperiment može učiniti s tim
djelovima, to je dobro, u suprotnom, ako se želi napraviti nešto maštovitija konfiguracija
(posebna disciplina rukavanja spremnicima ili model gubitaka) tada je potreban novi C++
objekt.
Iako je NS jako dobar simulator, postoje još velika područja u NS-u koja se mogu
nadograditi. Na primjer, većina usmjeravanja je napravljena u Otcl-u, iako je jezgreni Dijkstra
algoritam napisan u C++. Potom HTTP simulacije, gdje je svaki tok pokrenut u Otcl-u, a
procesiranje po svakom paketu je napravljeno u C++. Ovakav pristup radi sve dok se ne mora
pokrenuti veći broj prometnih tokova u isto vrijeme. Općenito, ako se Tcl mora pozvati

3
mnogo puta u sekundi, tada je bolje taj dio koda prebaciti u C++.

Raspored
ns - 2
događaja

tclcl

komponenta
Otcl

Mrežna
Tcl
8.0

Slika 1.2 Općenita arhitektura NS-a

Postoji još jedan bitan razlog zbog kojeg je NS napisan u dva programska jezika. NS
odvaja implementaciju podatkovnog puta od implementacije kontrolnog puta. Da bi smanjio
vrijeme procesiranja paketa i samih događaja (to nije vrijeme simulacije), raspored događaja i
osnovni objekti mrežnih komponenti na podatkovnom putu napisani su i prevedeni koristeći
C++. Ovi prevedeni objekti su napravljeni dostupnim Otcl prevoditelju kroz OTcl spoj, koji
pravi podudarajuće OTcl objekte za svaki od C++ objekata te pravi kontrolne funkcije i
konfiguracijske varijable. One su specificirane C++ objektom djelujući kao pripadajuće
funkcije i pripadajuće varijable (member variables) odgovarajućeg OTcl objekta. Na ovaj
način, kontrole C++ objekata su dane Otcl-u. Također je moguće dodati pripadajuće funkcije i
varijable u C++ te ih povezati s OTcl objektima.
Objekti u C++ koji ne trebaju bit kontrolirani u simulaciji ili objekti koji su korišteni
od drugih objekata ne trebaju bit povezani s Otcl-om. Isto tako, objekt može biti cjelokupno
implementiran u Otcl-u. Slika (Slika 1.2) prikazuje općenitu arhitekutru NS-a. Na ovoj slici
korisnik može zamisliti da stoji u donjem lijevom kutu i da može oblikovati i pokretati
simulacije u Tcl-u koristeći objekte simulatora u Otcl biblioteci. Raspored događaja i većina
mrežnih komponenti su implementirani u C++ i dostupni su OTcl preko OTcl spone koja je
implementirana koristeći tclcl. Cijela stvar skupa čini NS, koji je Tcl prevoditelj s objektno
orijentiranim proširenjem, te koji sadrži biblioteke funkcija mrežnog simulatora.

4
1.3. Opis osnovnih kodnih linija

Ovaj dio poglavlja sažeto ispituje glavnu strukturu i arhitekturu NS-a. Kako je
prikazano na slici (Slika 1.1), kada je simulacija završena, NS generira jednu ili više izlaznih
tekstualnih datoteka koje sadrže detaljne podatke simulacije, ako je tako navedeno u ulaznoj
OTcl skripti. Podaci se mogu koristiti za analize simulacija ili kao ulazni podaci za grafičko
simulacijski alat Network Animator (NAM) koji je razvijen kao dio VINT projekta. Kako je
prethodno navedeno, NS je, najjednostavnije rečeno, OTcl prevoditelj s bibliotekom objekata
za mrežnu simulaciju. Da bi se NS mogao što bolje iskoristiti, važno je dobro znati
programirati u Otcl-u. U nastavku su objašnjene osnovne zamisli i naredbe za programiranje u
Otcl-u.Također za detaljne simulacije potrebno je poznavanje programskog jezika C (C++).
Pobliže će se objasniti osnovne naredbe Tcl skripte među kojima i naredbe koje
prikazuje kako kreirati proceduru i pozvati je, kako pridjeliti vrijednosti varijablama i kako
napraviti petlju. Poznavajući da je OTcl objektno orijentirana ekstenzija Tcl-a, očigledno je da
sve Tcl naredbe rade na Otcl-u (veza između Tcl-a i Otcl-a je jednaka kao i veza između
jezika C i C++). Za pokretanje Tcl skripte u komandnom promptu (>>) treba utipkati >>"ns
ime_datoteke.tcl" i na taj način naredba "ns" pokreće NS (OTcl prevoditelj).

Pisanje programa u TCL-u


U Tcl-u, ključna riječ proc se koristi za definiranje procedura, nakon čega slijedi ime
procedure i argumenti u vitičastim zagradama. Ključna riječ set se koristi za pridjeljivanje
vrijednosti varijabli. [expr ...] služi da bi prevoditelj izračunao vrijednost izraza unutar
zagrada nakon ključne riječi. Važno je primijetiti jednu stvar, a to je da bi se vrijednost
pridjelila varijabli, znak $ se koristi s imenom varijable. Ključna riječ puts ispisuje sljedeći
string unutar dvostrukih navodnih znakova. Općenito, NS skripta počinje postavljanjem
instance simulatorskog objekta.
set ns [new Simulator]: generira instancu objekta NS simulatora, i pridjeljuje ju
varijabli ns. Prethodna naredba čini sljedeće:
 Inicijalizira format paketa;
 Oblikuje raspored;
 Odabire standardni format adrese.
Objekt "Simulator" sadrži pripadajuće funkcije koje čine sljedeće:
 Oblikuju složene objekte kao što su čvorovi i linkovi;

5
 Povezuju objekte mrežnih komponenti koji su oblikovani (to čini naredbom
attach-agent);
 Postavljaju parametre mrežnih komponenti (uglavnom za složene objekte);
 Oblikuju veze između agenata (npr. prave vezu između agenata "tcp" and "sink");
 Specificiraju opcije za prikaz u NAM-u;
 Itd.
Većina pripadajućih funkcija služe za postavke simulacije (te funkcije su već prethodno
navedene kao plumbing funkcije) i za oblikovanje rasporeda, međutim neke od njih služe i za
prikazivanje u NAM-u.
$ns color fid color: služi za postavljanje boje paketa za tok specificiran s
identifikatorom toka (fid, flow id). Ova funkcija pridjeljivanja se koristi za prikaz u NAM-u i
nema nikakav utjecaj na trenutnu simulaciju. Vrijednost fid se navodi rednim brojem, dok se
vrijednost color navodi imenom boje.
$ns namtrace-all file-descriptor: Ova pripadajuća funkcija potiče simulator da
snima simulation traces u NAM ulaznom formatu. Također prethodna naredba daje ime
datoteke gdje će trace datoteka biti kasnije pospremljena sa naredbom $ns flush-trace.
Slično tomu, pripadajuće funkcija trace-all je za snimanje trace simulacije u općenitom
formatu.
proc finish {}: se poziva nakon što je simulacija gotova s naredbom $ns at time
"finish". U ovoj funkciji su specificirani procesi koji se događaju poslije simulacije.
set n0 [$ns node]: Pripadajuća funkcija node oblikuje čvor. Čvor u NS-u je složeni
objekt sačinjen od adrese i port classifier-a. Korisnik može oblikovati čvor, odvojeno
oblikujući adresu i port classifier objekte i povezujući ih jedne s drugim.
$ns duplex-link node1 node2 bandwidth delay queue-type: oblikuje
dva simplex linka sa karakterističnom širinom prijenosnog pojasa i kašnjenjem te povezuje
dva navedena čvora. U NS-u, izlazni spremnik čvora je implementiran kao dio linka, stoga
korisnici trebaju specificirati tip spremnika kada oblikuju link. Kao i čvor i link je složeni
objekt, te korisnik može oblikovati njegove pod-objekte i povezati njih i čvorove. Postoji
mogućnost ubacivanja modula sa gubicima kao komponente linka te se na taj način simulira
link sa gubicima (ustvari korisnik može napraviti bilo kakav mrežni objekt te ga ubaciti).
Detaljne upute mogu se pronaći u [14].

6
$ns queue-limit node1 node2 number: Ova linija koda postavlja veličinu
spremnika na linku koja povezuju čvor1 i čvor2 na određenu vrijednost. Vrijednost number se
navodi u broju paketa.
$ns duplex-link-op node1 node2 : Ova linija koda se koristi za prikaz u NAM-u.
Da bi se vidio efekt ovih naredbi, korisnik može komentirati ove linije i pokušati simulirati.
Sada kada su osnovne postavke mreže postavljene, treba postaviti prometne agente kao što su
TCP i UDP, prometne izvore kao što su FTP i CBR, i pridjeliti ih čvorovima i agentima.
set tcp [new Agent/TCP]: Ova linija koda pokazuje kako se oblikuje TCP agent.
Općenito, korisnik može bilo kojeg agenta prometnog izvora oblikovati na ovaj način. Agenti
i prometni izvori su u stvari osnovni objekti (nisu složeni objekti), uglavnom implementirani
u C++ i povezani s Otcl-om. Iz tog razloga ne postoje specifične pripadajuće funkcije objekta
Simulator koje oblikuju instance ovih objekata. Da bi korisnik oblikovao agente ili
prometne izvore, trebao bi znati imena klasa ovih objekata (Agent/TCP,
Agent/TCPSink, Application/FTP itd). Ove podatke korisnik može naći u [14].
$ns attach-agent node agent: attach-agent pripadajuće funkcije pridjeljuje
oblikovani objekt agenta objektu čvora. Ustvari, ova funkcija poziva attach pripadajuću
funkciju odabranog čvora, koja zatim pridjeljuje sama sebi dani agent. Na primjer, ako se
čvoru n0 želi pridjeliti agent TCP to se može napraviti na način $n0 attach $tcp. Analogno
agentima, pripadajuća funkcija attach-agent pridjeljuje objekte prometnih izvora objektu
čvora.
$ns connect agent1 agent2: Nakon što su oblikovana dva agenta koja će
komunicirati jedan s drugim, sljedeća stvar je uspostaviti logičku mrežnu vezu između njih.
Ova linija koda uspostavlja mrežnu vezu postavljajući odredišnu adresu za obje mreže i
adrese para portova. Pretpostavljajući da je sva mrežna konfiguracija napravljena, treba
napraviti simulacijski scenarij (simulacijski raspored događaja). Simulacijski objekt sadrži
mnogo dijelova funkcija raspoređivanja, međutim najčešće se koristi sljedeća:
$ns at time "string": Ova pripadajuća funkcija objekta Simulator pravi raspored
(scheduler_ je varijabla koja pokazuje na objekt za raspoređivanje) koji raspoređuje
izvršavanje određenog stringa u danom vremenu simulacije. Na primjer, $ns at 0.1
"$cbr start" će pokrenuti raspored koji poziva start pripadajuća funkcija objekta s
CBR prometnim izvorom, koji pokreće CBR da prenese podatke. U NS-u, uglavnom
prometni izvor ne prenosi stvarne podatke, ali zato obavještava određenog agenta da ima
određenu količinu podataka za prenijeti. Zatim agent, koji je obavješten o količini podataka

7
koju mora prenijeti, stvara pakete i šalje ih. Nakon što se postavi mrežna konfiguracija,
napravi raspored događaja i specificiraju procedure nakon završetka simulacije, posljednja
stvar koju treba napraviti je pokrenuti simulaciju. To se radi sa $ns run. Primjer prethodno
objašnjenih naredbi sa dodatnim komentarima naveden je ispod.

set ns [new Simulator]


#Oblikuje se instanca simulatora

#Definiraju se različite boje za tokove podataka (služi za NAM)


$ns color 1 Blue
$ns color 2 Red

#Otvara se NAM trace datoteka


set nf [open out.nam w]
$ns namtrace-all $nf

#Definira se završna procedura (finish)


proc finish {} {
global ns nf
$ns flush-trace
#Zatvara se NAM trace datoteka
close $nf
#I NAM on the trace file
exec nam out.nam &
exit 0
}
#Oblikovanje čvora
set n0 [$ns node]

#Oblikovanje linka između dva čvora


$ns duplex-link $n0 $n2 2Mb 10ms DropTail

#Postavljanje veličine spremnika na linku (n2-n3) na vrijednost 10


$ns queue-limit $n2 $n3 10

#Postavljanje orijentacije čvora (za NAM)


$ns duplex-link-op $n0 $n2 orient right-down

#Promatranje spremnika za link (n2-n3)(za NAM)


$ns duplex-link-op $n2 $n3 queuePos 0.5

8
#Postavljanje TCP konekcije
set tcp [new Agent/TCP]
$tcp set class_ 2
$ns attach-agent $n0 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n3 $sink
$ns connect $tcp $sink
$tcp set fid_ 1

#Postavljanje FTP aplikacije preko TCP konekcije


set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ftp set type_ FTP

#Postavljanje UDP konekcije


set udp [new Agent/UDP]
$ns attach-agent $n1 $udp
set null [new Agent/Null]
$ns attach-agent $n3 $null
$ns connect $udp $null
$udp set fid_ 2

#Postavljanje CBR aplikacie preko UDP konekcije


set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$cbr set type_ CBR
$cbr set packet_size_ 1000
$cbr set rate_ 1mb
$cbr set random_ false

#Raspored događaja za CBR i FTP agente


$ns at 0.1 "$cbr start"
$ns at 1.0 "$ftp start"
$ns at 4.0 "$ftp stop"
$ns at 4.5 "$cbr stop"

#Poziva se završna procedura nakon 5 secundi simulacijskog vremena


$ns at 5.0 "finish"
#Pokreće se simulacija
$ns run

9
1.4. Pokretanje NS-a i NAM-a

Ubrzano naprijed sa korakom


od 25*Step seconds
Zaustavi animaciju
Trenutno vrijeme animacije
Pokreni animaciju Pokreni animaciju Vrijeme između dva
unatrag Zatvori NAM "okvira" animacije
Ubrzano unatrag
sa korakom od
25*Step seconds Promijeni
Step
parametar
Povećaj

Smanji
Prostor
animacije

Povuci klizač na
određenu točku u
vremenu

Slika 1.3 NAM prozor za animaciju


NAM se može pokrenuti s naredbom >>'nam <ime_nam_datoteke>' gdje je
'<ime_nam_datoteke>' ime NAM trace datoteke generirane u NS-u. Drugi način za
pokretanje NAM-a je izravno pokretanje iz Tcl simulacijske skripte za simulaciju koju želimo
vizualno prikazati. Dodatni parametri za NAM se mogu pogledati u [14]. Prvi korak koji treba
napraviti da bi se mogao koristiti NAM je napraviti trace datoteku. Ta datoteka bi trebala
sadržavati sve podatke u vezi topologije, kao što su čvorovi, linkovi, a također i packet traces.
Opis pojedinog retka u trace datoteci prikazan je na slici (Slika 1.4). Detaljan opis se također
može naći u [14].
Identifikator
identifikator
Tip paketa

Odredišna
Zastavice

segmenta
Odredišni

Izvorišna
događaja

događaja
Izvorišni

Veličina
Vrijeme

paketa

paketa
adresa

adresa
Vrsta

čvor

čvor

toka

Broj

Slika 1.4 Opis retka iz trace datoteke

Uglavnom, trace datoteka je generirana od strane NS-a. Kada se izgenerira trace datoteka,
ista je spremna za animaciju u NAM-u. Nakon pokretanja, NAM će pročitati trace datoteku,

10
oblikovati topologiju, otvoriti prozor za animaciju, izbaciti izlazne podatke ako je potrebno i
zaustaviti sa svim akcijama kada naiđe na prvi paket u trace datoteci. Kroz korisnikovo
sučelje, NAM omogućava kontrolu različitih pogleda animacije.

1.5. Objekti u NAM-u

NAM prikazuje animaciju koristeći sljedeće gradivne blokove: čvorove, linkove,


spremnike, pakete, agente i promatrače (monitor). Svaki od tih blokova opisan je u nastavku:

Čvor
Čvorovi su oblikovani iz 'n' trace događaja u trace datoteci. On predstavlja
izvor/korisnika/usmjeritelja te će NAM odrediti ako postoje udvostručene definicije za isti
čvor. Čvorovi mogu biti različitih oblika (krug, kvadrat i šesterokut), ali jednom kad se
oblikuju više ne mogu mjenjati svoj oblik. Također, čvorovi mogu biti različitih boja, ali
mogu mjenjati boje tijekom animacije.

Link
Linkovi su oblikovani između čvorova i na taj način formiraju mrežnu topologiju. NAM
linkovi su simplex iznutra, ali je to nevidljivo za korisnike. Trace događaj 'l' oblikuje dva
simplex linka i druge potrebne postavke te zbog toga za korisnike izgleda jednako kao duplex
link. Link može biti različitih boja te se te boje mogu mjenjati tokom animacije.

Spremnik
Spremik treba biti iskonstruiran u NAM-u između dva čvora. Slično linku, NAM spremnik je
pridjeljen simplex linku. Trace događaj 'q' samo oblikuje spremnik za simplex link. U NAM-
u, spremnici su vizualno prikazani kao paketi spremljeni na stogu. Paketi su stavljeni na stog
duž linije koja može biti pod različitim kutom u odnosu na horizontalnu liniju. Taj kut se
može postaviti u trace događaju 'q'.

Paket
Paket je vizualno prikazan kao blok sa strelicom. Smjer strelice pokazuje smjer toka paketa.
Paketi koji se nalaze u spremniku su prikazani kao mali kvadrati. Paket može biti odbačen iz
spremnika ili s linka. Odbačeni paketi prikazani su kao rotirajući kvadrati, koji nestaju na dnu
ekrana. Međutim, odbačeni paketi nisu vidljivi tijekom animacije unatrag.

11
Agent
Agenti se koriste da odvoje stanja protokola od samih čvorova. Oni se uvijek pridjeljuju
čvorovima. Svaki agent ima svoje ime, koje predstavlja jedinstveni identifikator za njega.
Agent je prikazan kao kvadrat sa svojim imenom unutar njega te je povezan s linijom prema
pridruženom čvoru.
Nakon što su objašnjeni svi gradivni blokovi i s kojim događajima se oni
inicijaliziraju, prikazan je primjer nekoliko redaka kojima se to postiže. Za lakše
razumijevanje korisno je pogledati sliku (Slika 1.4).

V -t * -v 1.0a5 -a 0
A -t * -n 1 -p 0 -o 0xffffffff -c 31 -a 1
A -t * -h 1 -m 2147483647 -s 0
c -t * -i 0 -n green
c -t * -i 1 -n red
n -t * -a 4 -s 4 -S UP -v circle -c black -i black
n -t * -a 0 -s 0 -S UP -v circle -c black -i black
n -t * -a 5 -s 5 -S UP -v circle -c black -i black
n -t * -a 1 -s 1 -S UP -v circle -c black -i black
n -t * -a 2 -s 2 -S UP -v circle -c black -i black
n -t * -a 3 -s 3 -S UP -v circle -c black -i black
l -t * -s 0 -d 2 -S UP -r 10000000 -D 0.005 -c black -o down-right
l -t * -s 1 -d 2 -S UP -r 10000000 -D 0.005 -c black -o up-right
l -t * -s 2 -d 3 -S UP -r 10000000 -D 0.005 -c black -o right
l -t * -s 3 -d 4 -S UP -r 5000000 -D 0.005 -c black -o right
l -t * -s 4 -d 5 -S UP -r 10000000 -D 0.005 -c black -o right
q -t * -s 3 -d 4 -a 0.5
+ -t 0 -s 1 -d 2 -p tcp -e 40 -c 1 -i 0 -a 1 -x {1.0 5.0 0 ------- null}
- -t 0 -s 1 -d 2 -p tcp -e 40 -c 1 -i 0 -a 1 -x {1.0 5.0 0 ------- null}
h -t 0 -s 1 -d 2 -p tcp -e 40 -c 1 -i 0 -a 1 -x {1.0 5.0 -1 ------- null}

12
2. Literatura

[1] D. McDysan. QoS & Traffic Management in IP & ATM Networks, 2000. McGraw Hill
1st ed.
[2] D. Comer. Internetworking with TCP/IP principles, protocols, and architectures, 2000.
Prentice Hall 4th ed. Vol 1.
[3] K. Nichols. Definition of the Differentiated Service Field (DS Field) in the IPv4 and IPv6
Headers, Dec 1998. Status: INFORMATIONAL. ftp://ftp.internetic.net/rfc/rfc2474.txt.
[4] S. Blake. An Arhitecture for Differentiated Services, Dec 1998. Status: STANDARD.
ftp://ftp.internetic.net/rfc/rfc2475.txt
[5] D. Black. Per Hop Behavior Identification Codes, June 2001. Status: STANDARD.
ftp://ftp.internetic.net/rfc/rfc3140.txt
[6] J. Heinanen. Assured Forwarding PHB Group, June 1999. Status: STANDARD.
ftp://ftp.internetic.net/rfc/rfc2597.txt
[7] V. Jacobson. An Expedited Forwarding PHB, June 1999. Status: STANDARD.
ftp://ftp.internetic.net/rfc/rfc2598.txt
[8] P. Almquist. Type of Service in the Internet Protocol Suite, July 1992. Status:
STANDARD. ftp://ftp.internetic.net/rfc/rfc1349.txt
[9] J. Heinanen. A Single Rate Three Color Marker, September 1999. Status: STANDARD.
ftp://ftp.internetic.net/rfc/rfc2697.txt
[10] J. Heinanen. A Two Rate Three Color Marker, September 1999. Status: STANDARD.
ftp://ftp.internetic.net/rfc/rfc2698.txt
[11] The Network Simulator – NS-2, http://www.isi.edu/nsnam/ns
[12] M. Greis. Tutorial for the Network Simulator,
http://www.isi.edu/nsnam/ns/tutorial
[13] V. Matić. Svojstva govornog prometa u paketskim mrežama s razlučivim uslugama,
travanj 2002. Magistarski rad.
[14] Ns manual, http://www.isi.edu/nsnam/ns/doc/ns_doc.pdf
[15] IP QoS – A Bold New Network, white paper, Northern Telecom
[16] S. Floyd, V. Jacobson. Random Early Detection Gateways for Congestion Avoidance,
August 1993.
[17] Ns_by_Example, http://www.di.unito.it/~matteo/Reti0102/nsbyExamples.pdf

13

You might also like