Professional Documents
Culture Documents
Adnan Hadiahmetovi
Admir Hui
Faruk Zaimovi
Amila Begovi
Haris Karahoda
PROJEKTNI ZADATAK 6
Sadraj
Uvod.......................................................................................................................................1
1.
Opis metodologije..........................................................................................................2
1.1.
2.
1.1.1.
Struktura protokola.........................................................................................3
1.1.2.
1.1.3.
SIP poruke......................................................................................................7
1.2.
NS2-simulator........................................................................................................8
1.3.
1.3.1.
Analitiko modeliranje.................................................................................10
1.3.2.
1.3.3.
1.3.4.
Simulacijsko modeliranje.............................................................................12
1.3.5.
1.3.6.
1.3.7.
1.3.8.
1.3.9.
1.3.10.
1.3.11.
Rezultati i diskusija......................................................................................................31
2.1.
3.
Zakljuak......................................................................................................................40
Uvod
Zadatak ovog projekta je ispitivanje vjerovatnoe gubitka BYE poruka koritenjem
performansi SIP signalizacije na odredinom SIP posrednikom serveru, kao i analiza i
proraun prosjene duine reda ekanja, gdje e biti posmatrani scenariji za broj korisnika
u redu ekanja (K=5,K=20,K=50). Kao zadate parametre smo uzeli kapacitet linkova od 1
Mb/s i propagacijsko kanjenje od 10ms. Broj istovremenih sesija/registracija u sekundi se
poveava za 50 prilikom svakog mjerenja, poevi od 50 istovremenih sesija/registracija u
prvoj seriji mjerenja do 500 istovremenih sesija/registracija u desetoj seriji mjerenja. S tim
u vezi, vrijedi da je m = 50 pri svakom mjerenju. Takoe, vrijedi da je n = 1 u prvoj seriji
mjerenja, odnosno n = 10 u desetoj seriji mjerenja. Za mjerenje ove metrike kreirane su
Tcl skripte kojima je modeliran sistem od n domena na nain da svaka od skripti sadri
jednu odredinu i n-1 izvorinih domena. Nakon pokretanja Tcl skripti kreirane su izlazne
datoteke koje predstavljaju uvid u saobraaj izmeu bilo koja dva korisnika izvorine i
odredine domene.
Na osnovu trace datoteke napisane su Awk skripte za raunanje vjerovatnoe gubitaka
BYE poruka. I izvreno je poreenje simulacionog i matemtikog rezultata srednje duine
reda ekanja. Na slici 1 je prikazana razmjena poruka kod SIP protokola, gdje se moe
uoiti i naa BYE poruka.
1. Opis metodologije
Cilj ovog projektnog zadatka je proraunati vjerovatnou gubitka BYE poruke unutar SIP
(Session Initiation Protocol) bazirane mree. Ideja je da se sa jedne strane data mrea opie
specifinim modelom posluivanja i analitikim putem proraunaju parametri od interesa,
te sa druge strane da se, koristei odreeni mreni simulator (u naem sluaju Network
Simulator 2 NS2), simulira data mrea te pomou odreenih postupaka proraunaju
simulacijski dobijeni parametri od interesa. U tu svrhu, potrebno je da se najprije
upoznamo sa simulacijskih okruenjem, tj. sa SIP-om te sa NS2 mrenim simulatorom.
Cilj je SIP protokola omoguiti istu funkcionalnost koju imaju klasine PSTN mree, ali
primjenu novih usluga koje se teko mogu implementirati u klasi, SIP je baziran na
vjerojatno najuspjenijem i najvie koritenom internetskom protokolu HTTP-u.
HTTP se moe klasificirati kao signalni protokol jer ga klijenti koriste da bi posluitelju
rekli koji ih dokumenti zanimaju. SIP se koristi za prenoenje sesije, opis se kodira u
dokument pomou SDP protokola. Oba protokola (HTTP i STP) naslijedila su kodiranje
zaglavlja poruka iz RFC 822. Kodiranje se tokom godina pokazalo sigurnim i fleksibilnim.
1.1.1.
Struktura protokola
SIP protokol je struktuiran kao slojeviti protokol, pri emu svaki sloj definie odreeni
skup pravila.
Tabela 1.1 Grafiki prikaz slojeva SIP protokola
1. Sintaksa i kodiranje (engl. syntax and encoding) koristi ABNF (Augmented BackusNaur Form) pravila.
2. Transportni sloj (engl. transport layer) definie kako klijent alje i prima odgovore
putem mree. Sve komponente SIP protokola moraju implementirati UDP (User
Datagram Protocol) i TCP (Transport Control Protocol), ali mogu podravati i druge
protokole, kao to su SCTP (Stream Control Transmission Protocol).
3. Trei sloj je transakcijski (engl. transaction layer) koji upravlja retransmisijama
aplikacijskog sloja povezivanjem odgovora i zahtjeva, kao i istekom vremena
aplikacijskog sloja. Transakcija je temeljna komponenta SIP protokola koja se sastoji
od zahtjeva i jednog ili vie odgovora.
4. etvrti je sloj korisnika transakcije (engl. transaction user TU). Svi entiteti SIP
protokola, osim stasteless proxy posluitelja, su korisnici transakcije TU.
1.1.2.
Korisniki agent (engl. User Agent UA) aplikacija koja uspostavlja, prihvaa i
prekida sesiju. Sastoji se od dva dijela :
Klijenta korisnikog agenta (engl. User Agent Client UAC) koji alje
zahtjeve (engl. request) i prima odgovore (engl. response)
Posluitelj korisnikog agenta (engl. User Agent Server UAS) koji prima
zahtjeve i alje odgovore
UA koji je pokrenuo sesiju prilikom slanja zahtjeva za pokretanje sesije ima ulogu UAC-a,
a u sluaju prijema zahtjeva za raskidanjem sesije ponaat e se kao UAS.
Na slici postoje dva korisnika agenta koja pokuavaju komunicirati. Korisniki agent A
alje zahtjev za komunikaciju s korisnikim agentom B iju lokaciju ne znaju. Zahtjev alje
redirect posluitelju, koji pronalazi podatke o lokaciji i vraa ih korisniku A, koji odgovara
zahtjevom ACK kako bi potvrdio primanje podataka. Daljnja komunikacija odvija se
direktno izmeu korisnika A i B.
1.1.3.
SIP poruke
Zahtjevi su vrsta poruka koje korisniki agent koji eli zapoeti sesiju alje posluitelju ili
drugom korisnikom agentu kako bi ih obavijestio o zapoinjanju sesije.
Postoji 6 vrsta SIP zahtjeva:
Nakon to primi i protumai zahtjev, primatelj odgovara SIP porukom u kojoj se nalazi
status posluitelja: uspjeh ili neuspjeh. Odgovori mogu biti razliitih vrsta oznaenih
statusnim kodom. Prvi broj oznaava klasu odgovora dok ostala dva nemaju nikakvu
karakterizirajuu ulogu. SIP aplikacije ne moraju razumjeti znaenje svih registrovanih
odgovora, ali moraju razumjeti njegovu vrstu i smatrati neprepoznati odgovor kao x00
vrstu odgovora (vrsta odgovara "error"). Kod odgovora je cijeli broj od 100 do 699 i
ukazuje na vrstu odgovora.
Klasa
Opis
Komentar
1xx
Informaciona
Pokazuje status
zavretka.
2xx
Uspjeh
Zahtjev je uspio.
3xx
Redirekcija
4xx
Korisnika greka
Zahtjev je neuspjean
pogreke korisnika.
zbog
5xx
Posluiteljska greka
Zahtjev je neuspjean
pogreke servera.
zbog
6xx
Globalni ispad
poziva
prije
Zahtjev je neuspjean.
1.2. NS2-simulator
Ns-2 (Network Simulator version 2) je mreni simulator izgraen pomou dva programska
jezika: C++ i OTcl (Object-oriented Tool CommandLanguage). Jezgro simulatora i njegove
komponente su napisane u C++ programskom jeziku, a suelje koje omoguava korisniku
da upravlja simulatorom je napisano u OTcl jeziku. C++ hirerarhija nam omoguava
postizanje uinkovitosti u simulaciji i bre vrijeme izvravanja. To je posebno korisno za
detaljnije definisanje protokola i rada.
Ispitivanje performansi SIP signalizacije odnosno BYE poruke izvrili smo primjenom
metoda analitikog modeliranja i simulacije uz upotrebu mrenog simulatora NS-2 (engl.
Network Simulator version 2). Pravljenje konfiguracija, odnosno formiranje toplogija vri
se na nain, da se prave Tcl skrite. A poto je na zadatka bio analiza BYE poruke koja je
ve prehodno spomenuta, i koja je jedna od SIP poruka. A kako u standardnoj distribuciji
mrenog simulatora NS-2 nije implementiran protokol SIP. Stoga je za provedbu
ispitivanja potrebno koristiti SIP modul(patch) koji je neovisno razvijen u okviru doktorske
disertacije Rui Priora. Ovaj modul je kompatibilan sa verzijom NS-2.27 mrenog
simulatora, i korisitli smo tu verziju NS-a. SIP modul (patch) sadri sve potrebne skripte
koje nam omoguuju definisanje domena da moe biti uspostavljna SIP sesija.
1.3.1.
Analitiko modeliranje
U ovom dijelu je potrebno analitiki izraunati odgovarajue parametre koji su biti za opis
performansi na odredinom SIP serveru pri emu e se koristiti formule iz teorije
masovnog posluivanja koje daju vezu izmeu veliina od interesa (u naem sluaju to su
srednja duina reda ekanja i vjerovatnoa gubitka BYE poruke) i optereenja datog
sistema (iskazanog preko broja uspostavljenih istovremenih sesija u jedinici vremena).
Najbitniji parametri kod prorauna datih veliina su , i . Pri emu oni predstavljaju
sljedee:
srednji intenzitet dolazaka paketa na SIP server
- srednji intenzitet obrade paeta na SIP serveru (intenzitet odlazaka)
faktor optereenja posluitelja (SIP servera u ovom sluaju)
Prema datoj konfiguraciji u postavci zadatka, ovaj sistem se moe modelirati kao M/M/1/K
sistem posluivanja gdje gdje prve dvije oznake predstavljaju raspodjelu meudolaznih
vremena i raspodjelu vremena posluivanja.
Dati sistem se moe na predstaviti na sljedei nain:
1.3.2.
Ploss PK
(1)
Pn
n
K
,
i
n 0,1, 2,..., K ;
(2)
i 0
Gdje K predstavlja maksimalan broj paketa u buffer-u SIP servera, a n je trenutni broj
paketa u sistemu.
Za izraunavanje vjerovatnoe gubitka se u gornju formulu uvrtavaju odgovarajue
vrijednosti parametra (koje se dobiju iz smulacije) i n (koji treba da bude jednak
kapacitetu buffer-a, koji se mijenja za razliite sluajeve simulacije).
Treba naglasiti jo da se ovako dobije vjerovatnoa gubitka paketa koji u konkretnoj
simulaciji ne mora da nuno bude BYE poruka (jer se na SIP serveru mogu jo nalaziti
INVITE, REGISTER, OK ili neke statusne SIP poruke), tako da je jo potrebno datu
vjerovatnou pomnoiti sa odnosnom broja BYE poruka i ukupnog broja poruka na SIP
serveru, tako da na kraju imamo sljedeu formulu za vjerovatnou gubitka BYE poruke:
(3)
Gdje su NBYE broj BYE poruka na SIP serveru, a N total je ukupan broj svih poruka na SIP
serveru.
1.3.3.
1 ( K 1) K K K 1
, za
1
K
(1
(1
)
N
K
za 1
2 ,
Poto ovaj izraz ukljuuje i pakete koji se nalaze na obradi u SIP serveru, potrebno je
koristiti sljedei izraz sa pronalaenje srednjeg broja korisnika u sistemu (pri emu se
gornji izraz koristi kao ulazni parametar za pronalaenje eljene veliine):
(4)
Gdje je P0 vjerovatnoa da u sistemu nema niti jednog paketa.
11
Treba napomenuti da u ovom sluaju raunamo srednju duinu reda za ekanje pri emu u
redu mogu biti bilo kakve poruke (a ne samo BYE poruke za razliku od druge veliine koju
smo raunali sa tano odreenu poruku).
1.3.4.
Simulacijsko modeliranje
1.3.5.
Za izradu dijela projekta koji se odnosio na simulacije bilo je potrebno koritenjem Tcl
skripti napraviti sistem koji se sastoji od n domena sa brojem korisnika kao to je navedeno
u postavci zadatka te od po jednog rutera i po jednog proxy servera u svakoj domeni. Prva
Tcl skripta nosi naziv 2_domene, kako bi bilo lake zapamtiti da je rije o skripti za
kreiranje dvije domene (izvorine i odredine). Ova skripta kao i ostale Tcl skripte slui za
modeliranje mree koja se izmeu ostalog sastoji od n rutera. Ope poznato je da ruteri za
obavljane svoje osnovne funkcije koriste tabele rutiranja. S ciljem da se omogui bre
pretraivanje tabela rutiranja i da u vezi s tim iste budu to manje potrebno je koristiti
hijerarhijsko rutiranje. Sutina ovakvog tipa rutiranja je u injenici da primjenom
hijerarhijskog rutiranja ruter ne mora znati informacije o cijeloj mrei, nego svaki ruter zna
detalje samo svog domene i izvrava isti algoritam rutiranja. Domene koje su zapravo
autonomni sistemi su meusobno povezane preko jednog ili vie rutera. Konkretno, u
naem zadatku svaka izvorina domena je povezana jednim ruterom sa odredinom
domenom. Obzirom na to da je Tcl skripta napravljena na nain da svaka domena sadri po
jedan ruter, taj jedan ruter je zaduen i za komunikaciju sa drugim domenama pa se naziva
gateway router-om.
U svrhu to boljeg razumijevanja formiranja simulacijskog modela, u ovom dijelu rada e
biti prezentovani i objanjeni najbitniji dijelovi koda koji se tiu formiranja najvee mree
koja se sastoji od 11 domena. Bitno je pojasniti kreiranje ove skripte jer se na analogan
nain kreiraju i ostale Tcl skripte za manji broj domena.
Primijenjena je hijerarhija sa tri nivoa, odnosno svaki vor u mrei ima jedinstvenu oznaku
datu sa x.y.z. X govori o tome u kojoj domeni se vor nalazi, y je oznaka clustera a z redni
broj vora u posmatranom clusteru. Najprije e biti objanjena sama sintaksa koja se koristi
za hijerarhijsko rutiranje.
$ns set-address-format hierarchical
12
U kodu gore navedenom ukljuili smo hijerarhijski format adresiranja, definisali broj
domena koji razmatramo i definisanje klastera za svaki domen, broj vorova se unutar
clastera se dodjeljuje vrijednosti na koju pokazuje $eilastlevel. U ovom sluaju
vrijednost eilastlevel iznosi 52 imajui u vidu da je kreirano 50 korisnikih vorova, jedan
ruter i jedan proxy server unutar razmatrane domene.
set tf [open out_sip_test11.tr w]
$ns trace-all $tf
Kod 1.2 Kreiranje trace file-a
Dio koda koji se odnosi na inicijalizaciju trace file-a pomou kojeg emo kasnije vriti
mjerenje metrika. U imenu trace file-a broj 11 oznaava ukupan broj domena (u skladu s
tim su data imena i ostalim trace file-ovima sa manjim brojem domena).
set r 0
while { $r < 11 } {
set rut($r) $r.0.0
set r [expr $r + 1]
}
# Routers
set r 0
while {$r < 11 } {
set ruter($r) [$ns node $rut($r)]
set r [expr $r + 1]
}
Kod 1.3 Definiranje rutera
Kreiranje adresa rutera (prva cifra adrese predstavlja broj domene) prikazano je na gornjem
dijelu koda, a donjim dijelom koda vri se kreiranje vorova koji predstavljaju rutere.
13
set p 0
while { $p < 11 } {
set prox($p) $p.0.1
set p [expr $p + 1]
}
# Proxies
set p 0
while {$p < 11 } {
set proxy($p) [$ns node $prox($p)]
set p [expr $p + 1]
}
Kod 1.4 Definisanje proxy servera
U gornjem djelu koda kreiraju se adrese proxy servera, a u drugom djelu koda se kreiraju
vorovi za proxy servere.
set i 2
while { $i < 52 } {
set adresa0($i) 0.0.$i
set adresa1($i) 1.0.$i
set adresa2($i) 2.0.$i
set adresa3($i) 3.0.$i
set adresa4($i) 4.0.$i
set adresa5($i) 5.0.$i
set adresa6($i) 6.0.$i
set adresa7($i) 7.0.$i
set adresa8($i) 8.0.$i
set adresa9($i) 9.0.$i
set i [expr $i + 1]
}
set j 2
while { $j < 502 } {
set adresa10($j) 10.0.$j
set j [expr $j + 1]
}
Kod 1.5 Definisanje UA-a na predaji i prijemu
U gornjem djelu prikazan je dio koda koji se odnosi na kreiranje adresa, gdje prvi dio koda
kreira adrese za sve UA(User Agent) izvorinog dijela, a drugi dio koda kreira adrese za
UA odredinog dijela. Prva cifra adrese predstavlja domenu, a trea vor unutar domene
(kree se od 2, jer je 0 rezervisana za rutere, a 1 za proxy).
14
# Terminals
set i 2
while {$i < 52 } {
set t0($i) [$ns node $adresa0($i)]
set t1($i) [$ns node $adresa1($i)]
set t2($i) [$ns node $adresa2($i)]
set t3($i) [$ns node $adresa3($i)]
set t4($i) [$ns node $adresa4($i)]
set t5($i) [$ns node $adresa5($i)]
set t6($i) [$ns node $adresa6($i)]
set t7($i) [$ns node $adresa7($i)]
set t8($i) [$ns node $adresa8($i)]
set t9($i) [$ns node $adresa9($i)]
set i [expr $i + 1]
}
set j 2
while { $j < 502 } {
set t10($j) [$ns node $adresa10($j)]
set j [expr $j + 1]
}
Kod 1.6 Dodjeljivanje adresa UA-tima
$ruter(0)
$ruter(1)
$ruter(2)
$ruter(3)
$ruter(4)
$ruter(5)
$ruter(6)
$ruter(7)
$ruter(8)
$ruter(9)
$ruter(10)
$ruter(10)
$ruter(10)
$ruter(10)
$ruter(10)
$ruter(10)
$ruter(10)
$ruter(10)
$ruter(10)
$ruter(10)
0.1Mb
0.1Mb
0.1Mb
0.1Mb
0.1Mb
0.1Mb
0.1Mb
0.1Mb
0.1Mb
0.1Mb
100ms
100ms
100ms
100ms
100ms
100ms
100ms
100ms
100ms
100ms
DropTail
DropTail
DropTail
DropTail
DropTail
DropTail
DropTail
DropTail
DropTail
DropTail
15
# Proxies
set p 0
while {$p<11} {
$ns duplex-link $proxy($p) $ruter($p) 0.1Mb 100ms DropTail
set p [expr $p + 1]
}
# Terminal
set k 2
while {$k<52} {
$ns duplex-link $t0($k) $ruter(0) 0.1Mb 100ms DropTail
$ns duplex-link $t1($k) $ruter(1) 0.1Mb 100ms DropTail
$ns duplex-link $t2($k) $ruter(2) 0.1Mb 100ms DropTail
$ns duplex-link $t3($k) $ruter(3) 0.1Mb 100ms DropTail
$ns duplex-link $t4($k) $ruter(4) 0.1Mb 100ms DropTail
$ns duplex-link $t5($k) $ruter(5) 0.1Mb 100ms DropTail
$ns duplex-link $t6($k) $ruter(6) 0.1Mb 100ms DropTail
$ns duplex-link $t7($k) $ruter(7) 0.1Mb 100ms DropTail
$ns duplex-link $t8($k) $ruter(8) 0.1Mb 100ms DropTail
$ns duplex-link $t9($k) $ruter(9) 0.1Mb 100ms DropTail
set k [expr $k + 1]
}
Kod 1.8 Ostvarivanje fizikih veza izmeu UA-ta i rutera
Na gornjem djelu koda prikazana je realizacija linka izmeu proxy-ja i rutera za sve
domene. Drugi dio koda vri povezivanje svih korisnikih agenata domena 0 do n-1 na
odgovarajue rutere.
$ns queue-limit $ruter(1) $proxy(1) 5
U prvom sluaju duina reda ekanja je bila K=5 u drugom K=20 te u teem K=50. Za
razliite duine reda ekanja, dobijali smo razliitu vjerovatnou gubitka BYE poruke.
set z 2
while {$z<502} {
$ns duplex-link $t10($z) $ruter(10) 0.1Mb 100ms DropTail
set z [expr $z + 1]
}
Kod 1.9 Povezivanje UA-ta i rutera na prijemnoj strani
#slucajna varijabla
16
U gornjem djelu koda je prikazan dio koda koji unosi sluajnost, tj. uvodi kanjenje na
proxy serverima pomou sluajne varijable slucajna koja ima uniformnu raspodjelu.
Kanjenje na proxy-jima je postavljno na,maksimalna vrijednost je postavljena na 0.0001,
a obzirom da su mjerene vrijednosti prikazane sa est decimalnih mjesta, najmanje
kaenjenje na proxy-jima je postavljeno na 0.000001.
# Proxy servers
set p 0
while {$p<11} {
$proxy($p) label "proxy.p$p.com"
set serveraddrp($p) [$proxy($p) node-addr]
set sip($p) [new Agent/SIPProxy p$p.com]
$ns attach-agent $proxy($p) $sip($p)
set p [expr $p + 1]
}
Kod 1.11 Definisanje proxy agenata
U gornjem djelu prikazuje se dio koda kojim se vri dodjela naziva voru koji predstavlja
proxy, te definisanje SIP Proxy agenta na adresi posmatranog vora i njegovo
dodjeljivanje odreenom voru za sve domene.
$ruter(10) set fid_ 1
# User agents
set u 2
while {$u < 52} {
$t0($u) label "t0$u@p0.com"
set sipt0($u) [new Agent/SIPUA t0($u) p0.com]
$ns attach-agent $t0($u) $sipt0($u)
$t1($u) label "t1$u@p1.com"
set sipt1($u) [new Agent/SIPUA t1($u) p1.com]
$ns attach-agent $t1($u) $sipt1($u)
$t2($u) label "t2$u@p2.com"
set sipt2($u) [new Agent/SIPUA t2($u) p2.com]
17
p3.com]
p4.com]
p5.com]
p6.com]
p7.com]
p8.com]
p9.com]
}
Kod 1.12 Definisanje UA-ta
U gornjem djelu je prikazan dio koda koji vri kreiranje SIP korisnikih agenata i njihovo
dodjeljivanje odgovarajuim vorovima izvorinih domena. Sljedea slika prikazuje isto,
samo je u pitanju odredina domena.
set z 2
while {$z < 502} {
$t10($z) label "t10$z@p10.com"
set sipt10($z) [new Agent/SIPUA t10($z) p10.com]
$ns attach-agent $t10($z) $sipt10($z)
set z [expr $z + 1]
}
# Setup outbound proxies
set u 2
while {$u < 52} {
$sipt0($u) set-proxy $serveraddrp(0)
$sipt1($u) set-proxy $serveraddrp(1)
$sipt2($u) set-proxy $serveraddrp(2)
18
$sipt3($u) set-proxy
$sipt4($u) set-proxy
$sipt5($u) set-proxy
$sipt6($u) set-proxy
$sipt7($u) set-proxy
$sipt8($u) set-proxy
$sipt9($u) set-proxy
set u [expr $u + 1]
$serveraddrp(3)
$serveraddrp(4)
$serveraddrp(5)
$serveraddrp(6)
$serveraddrp(7)
$serveraddrp(8)
$serveraddrp(9)
}
set z 2
while {$z < 502} {
$sipt10($z) set-proxy $serveraddrp(10)
set z [expr $z + 1]
}
Kod 1.13 Dodjeljivanje proxy servera pojedinim UA-ima
U gornjem djelu prikazan je dio koda koji vri dodjeljivanje proxy servera svakom
korisnikom agentu. Za snimanje ruta na proxy-jima i definisanje DNS servera na proxyjima koristi se sljedei dio koda koji je u skladu sa primjerom koji je dio dokumentacije u
okviru preuzetog patch-a.
U gornjem djelu, prikazana je procedura finish kojom se vri zatvaranje trace file-a i
ispisivanje na ekranu da je simulacija zavrena. Drugi dio koda definie vrijeme ekanja
prije nego to korisnik odgovori na poziv.
set slucajni_register [new RandomVariable/Exponential]
$slucajni_register set avg_ 2
set slucajni_invite [new RandomVariable/Exponential]
$slucajni_invite set avg_ 1
set slucajni_bye [new RandomVariable/Exponential]
$slucajni_bye set avg_ 2.5
Kod 1.15 Definisanje sluajnih varijabli meudolazaka poruka
20
Ali je bitno naglasiti prilikom definisanja poruka, svaku poruku neovisno od ostalih
generiemo, s tim da na narednu poruku dodajemo vrijeme od predhodne, da bi osigurali
da se INVITE poruka generie poslije REGISTER a BYE poslije INVITE poruke.
set brojac 2
while {$brojac<502} {
set prva [expr ([$slucajni_register value])]
set druga [expr ([$slucajni_invite value])]
set treca [expr ([$slucajni_bye value])]
$ns at [expr $prva] "$sipt10($brojac) register"
set domena [expr floor(($brojac - 2)/50)]
if {$domena==0} {
$ns at [expr $prva] "$sipt0($brojac) register"
$ns at [expr $prva + $druga] "$sipt10($brojac)
t0($brojac) p0.com bw 32kb 64kb"}
if {$domena==1} {
set broj [expr $brojac - 50]
$ns at [expr $prva] "$sipt1($broj) register"
$ns at [expr $prva + $druga] "$sipt10($brojac)
t1($broj) p1.com bw 32kb 64kb"}
if {$domena==2} {
set broj [expr $brojac - 100]
$ns at [expr $prva] "$sipt2($broj) register"
$ns at [expr $prva + $druga] "$sipt10($brojac)
t2($broj) p2.com bw 32kb 64kb"}
if {$domena==3} {
set broj [expr $brojac - 150]
$ns at [expr $prva] "$sipt3($broj) register"
$ns at [expr $prva + $druga] "$sipt10($brojac)
t3($broj) p3.com bw 32kb 64kb"}
if {$domena==4} {
set broj [expr $brojac - 200]
$ns at [expr $prva] "$sipt4($broj) register"
$ns at [expr $prva + $druga] "$sipt10($brojac)
t4($broj) p4.com bw 32kb 64kb"}
if {$domena==5} {
set broj [expr $brojac - 250]
$ns at [expr $prva] "$sipt5($broj) register"
$ns at [expr $prva + $druga] "$sipt10($brojac)
t5($broj) p5.com bw 32kb 64kb"}
if {$domena==6} {
set broj [expr $brojac - 300]
$ns at [expr $prva] "$sipt6($broj) register"
invite
invite
invite
invite
invite
invite
21
U gornjem djelu koda se vri se realizacija poruka, na nain definisanog dogaaja. Tcl
skripte skripte za ostale domene su pravljene analogno, pa zbog toga nema potrebe za
dodatnim objanjenjima ostalih skripti.
1.3.6.
Kada kreiramo nau SIP baziranu mreu na nain koji je objanjen u prethodnom
podpoglavlju, potrebno je definisati objekat od interesa te veliine od interesa koje emo
posmatrati. Gledajui primjer sa 11 domena, a analogno je i sa ostalim domenema, objekat
koji je nama od interesa je proxy server na prijemnoj strani, konkretno u naem sluaju
proxy(10) koji servisira najveu domenu mree. Poruka koju emo posmatrati i mjeriti e u
prvom sluaju biti BYE poruka, tj. fokusirat emo se samo na monitorisanje ovih poruka u
kombinaciji svih SIP poruka kako bi mogli uz odgovarajue alate proraunati veliinu od
interesa a to je vjerovatnoa gubitka BYE poruka. U drugom dijelu emo posmatrati cijeli
SIP saobraaj i raunati na istom proxy serveru srednju duinu reda ekanja. Bitno je ovdje
napomenuti da smo, u svrhu lakeg naina izolacije BYE poruka, izvrili modifikaciju
izvornog SIP patcha za NS2 simulator, na nain da smo svakoj pojedinoj request poruci
dodjelili jedinstvenu veliinu kako bi ista na laki nain (upravo putem veliine poruke)
mogli identificirati.
Da bismo na odreen nain izdvojili poruke i raunali veliine od interesa, potrebno je
prije svega da imamo osnovne informacije o tim porukama tipa: veliina poruke, tip,
22
izvorina i odredina adresa itd. U tu svrhu emo koristiti trace datoteke koje smo kreirali
prilikom formiranja simulacijskog modela a koje nam slue da pohrane sva deavanja koja
se deavaju u mrei tokom vremena simulacije.
1.3.7.
Nakon pokretanja ns-2 simulacijske skripte simulator e generisati dvije izlazne datoteke:
'out.nam' koja slui za vizualizaciju simulacije u Network Animator-u i 'out.tr' koja slui za
analizu dogaaja generisanih simulacijom. Slika 1 prikazuje format i jedan primjer trace
datoteke 'out.tr'.
23
Nakon to smjestimo saobraaj generisan unutar nae mree u odreeni trace file, potrebno
je na odreeni nain filtrirati saobraaj od interesa, u naem sluaju BYE poruke. U tu
svrhu emo koristiti awk skripte, skripte koje slue za obradu podataka generisanih unutar
trace datoteke.
1.3.8.
Dakle ve smo rekli da emo koristiti awk skripte kao alat za dobijanje konanih veliina
od interesa na nain da emo filtrirati dogaaje od interesa. Dogaaje moemo filtrirati po
parametrima koji ine trace datoteku a koji su opisani ranije. U svrhu dobijanja rezultata
simulacije neophodno je kreirati dvije awk skripte jer imamo dvije veliine od interesa te
se kreiraju:
1.3.9.
U dijelu koda koji slijedi, prikazan je metod za izraunavanje vjerovatnoe gubitka BYE
poruke. Unutar BEGIN strukture definiemo pomone varijable potrebne za raunaje
veliine id interesa: broj_bye, broj_drop, broj_ukup. U glavnom dijelu koda filtriramo
samo saobraaj koji se deava na voru 10 a koji predstavlja proxy server na prijemnoj
strani. Unutar saobraaja na voru 10 potrebno je da filtriramo samo saobraaj BYE
poruka koje su nam od interesa a to radimo na nain da izdvojimo samo pakete veliine
300 B koji jedinstveno odgovaraju BYE porukama. Vjerovatnou gubitka BYE poruke
emo dobiti na nain da emo brojati veliinu poruka koje su izgubljene na voru 10, taj
broj podijeliti sa ukupnim brojem poruka na tom voru, te taj iznos pomnoiti sa ukupnim
udjelom BYE poruka unutar kompletnog saobraaja na voru 10.
BEGIN {
broj_bye=0;
broj_drop=0;
broj_ukup=0;
}{
akcija = $1;
vrijeme = $2;
od = $3;
prema = $4;
tip = $5;
velicina_paketa = $6;
id_toka = $8;
24
izvor = $9;
odrediste = $10;
br_sekvence = $11;
id_paketa = $12;
if(od==10){
if(velicina_paketa==300){
broj_bye++;
}
if(akcija=="d"){
broj_drop++;
}
broj_ukup++;
}}
END {
print
"broj_bye",broj_bye,"broj_drop",broj_drop,"broj_ukup",broj_ukup;
print
"vjerovatnoca
Br_drop/Br_ukup*br_bye/br_ukup",broj_drop/broj_ukup*broj_bye/br
oj_ukup
}
Kod 1.17 Awk skripta za dobijanje vjerovatnoe gubitka BYE poruke
E (C ) xN x P(C x) ,
(5)
P(C x)
tN
td ( x, i)
t0
(6)
25
BEGIN {
pocetnoVrijeme = 0;
krajnjeVrijeme = 0;
ukupnoVrijeme = 72;
popunjenost = 0;
srDuzinaReda = 0;
for (i=1; i<=5; i++){
vrijemeStanje[i]=0;
}}
{
akcija = $1;
vrijeme = $2;
od = $3;
prema = $4;
tip = $5;
velicina_paketa = $6;
id_toka = $8;
izvor = $9;
odrediste = $10;
br_sekvence = $11;
id_paketa = $12;
if(akcija=="+" && prema==10){
if((vrijeme - pocetnoVrijeme) >= 0){
vrijemeStanje[popunjenost] += vrijeme - pocetnoVrijeme;
print(vrijeme,
vrijemeStanje[popunjenost],
popunjenost) >
"popunjenost.txt";
pocetnoVrijeme = vrijeme;
popunjenost++;
}
}else if(akcija=="-" && prema==10){
if((vrijeme - pocetnoVrijeme) >= 0){
vrijemeStanje[popunjenost] += vrijeme - pocetnoVrijeme;
print(vrijeme,
vrijemeStanje[popunjenost],
popunjenost) >
"popunjenost.txt";
pocetnoVrijeme = vrijeme;
popunjenost--;
}
}else if(akcija=="d" && prema==10){
if((vrijeme - pocetnoVrijeme) >= 0){
vrijemeStanje[popunjenost] += vrijeme - pocetnoVrijeme;
print(vrijeme,
vrijemeStanje[popunjenost],
popunjenost) >
"popunjenost.txt";
pocetnoVrijeme = vrijeme;
26
popunjenost--;
}}}
END {
for (i=1; i<=5; i++){
srDuzinaReda += vrijemeStanje[i]*i;
printf("Vjerovatnoca od %d je %f sr duzina reda je %f\n",
i,vrijemeStanje[i],srDuzinaReda);
}
printf("Srenja duzina reda je: %f \n",
srDuzinaReda/ukupnoVrijeme);
Kod 1.18 Awk skripta za raunanje srednje duine reda ekanja
mi = 0;
Todlazno = 0;
suma1=0;
suma2=0;
suma3=0;
}
{
akcija = $1;
vrijeme = $2;
od = $3;
prema = $4;
tip = $5;
velicina_paketa = $6;
id_toka = $8;
izvor = $9;
odrediste = $10;
br_sekvence = $11;
id_paketa = $12;
if (od==1) {
if (akcija=="-"){
minusi[id_paketa]=minusi[id_paketa]+1;
nesto[brojac2]=vrijeme;
if
((plusevi[id_paketa]-1)<(minusi[id_paketa]
+dropovi[id_paketa])){
brojac2=brojac2+1;
id[brojac6]=id_paketa;
print("+" " " pomocna[id_paketa] " " id_paketa " "
"\n")>"a.txt";
print(akcija
"
" vrijeme "
" id_paketa "
""\n")>"a.txt";
print((vrijeme-pomocna[id_paketa])
"\n")>"b.txt";
prava=prava+(vrijeme-pomocna[id_paketa]);
#if (minusi[id_paketa]%2==1){
#printf("Belaj je ovaj id: %d",id_paketa);
#}
suma2=suma2+pomocna[id_paketa];
brojac3=brojac3+1;
suma1=suma1+vrijeme;
}}
else if (akcija=="+"){
nesto2[brojac3]=vrijeme;
pomocna[id_paketa]=vrijeme;
plusevi[id_paketa]=plusevi[id_paketa]+1;
28
if
((plusevi[id_paketa]-1)<=(minusi[id_paketa]
+dropovi[id_paketa])){
#brojac3=brojac3+1;
}
else{
plusevi[id_paketa]=plusevi[id_paketa]-1;
}}
else if (akcija=="d"){
dropovi[id_paketa]=dropovi[id_paketa]+1;
if
((plusevi[id_paketa]-1)<(minusi[id_paketa]
+dropovi[id_paketa])){
print("+" " " pomocna[id_paketa] " " id_paketa " "
"\n")>"a.txt";
print(akcija
"
" vrijeme "
" id_paketa "
"
"\n")>"a.txt";
brojac3=brojac3+1;
suma3=suma3+vrijeme;
brojac5=brojac5+1;
suma2=suma2+pomocna[id_paketa];
}
}
}
if (prema==1){
if (akcija=="r"){
nesto1[brojac4]=vrijeme;
brojac4++;
}
}
}
END {
j=1;
for (i = 1; j< (brojac4-1); i++) {
j=i+1;
Tdolazno+= (nesto1[j]-nesto1[i]);
}
Tdolazno=nesto1[brojac4-1]-nesto1[1];
Tdolazno = Tdolazno/(brojac4-1);
lambda = 1/Tdolazno;
razlika=(suma1+suma3-suma2);
Todlazno = prava/(brojac2-1);
mi = 1/Todlazno;
29
30
2. Rezultati i diskusija
Cilj ove sekcije je da obradi rezultate dobijene simulacijskim i analitikim putem. Pokazat
e se naalost, primjenom odgovarajue awk skripte za raunanje parametara i
dobijene simulacijskim putem, da u svakoj iteraciji mjerenja (mijenjajui parametre K i
broj domena, tj. broj parova korisnika) vrijedi < tako da neemo moi dobiti analitike
rezultate sistema posluivanja M/M/1/K zbog toga to za primjenu istog mora biti
zadovoljen uslov (uslov stabilnosti sistema). Ipak emo u ovoj sekciji prikazati i
diskutovati rijeenja dobijena simulacijskim putem te emo izvriti njihovu statistiku
obradu.
Rezultati simulacijske studije, posmatrajui kao promjenjive veliine duinu reda ekanja
na voru od interesa, te optereenje mree su prikazani u sljedeim tabelama u kojim su
prikazane vjerovatnoa gubitka BYE poruke te srednja duina reda ekanja respektivno.
Tabela 2.1 Vjerovatnoa gubitka BYE poruke u ovisnosti od optereenja i parametra K
Optereenje
K=2
K=4
K=8
50
0.0019458749
0.0010422222
0.0017292126
100
0.0133157350
0.0134412423
0.0128506341
150
0.0265007377
0.0293342413
0.0273516117
200
0.0345927492
0.0320324289
0.0332939146
250
0.0352453121
0.0441119926
0.0396824723
300
0.0428021182
0.0456103093
0.0457771620
350
0.0459139931
0.0483097299
0.0512809605
400
0.0473862125
0.0505388011
0.0494170463
450
0.0511387122
0.0526195627
0.0513331130
500
0.0499949794
0.0519720861
0.0513256071
31
Optereenje
K=2
K=4
K=8
50
0.087704
0.320758
0.851433
100
0.136677
0.683648
1.498281
150
0.245623
0.927278
2.301144
200
0.269595
1.313100
2.742450
250
0.285618
1.122196
3.106806
300
0.267653
1.353786
3.724085
350
0.265144
1.374286
3.430049
400
0.313188
1.199658
3.254781
450
0.285658
1.383799
3.319556
500
0.319963
1.384985
3.218078
Analizom tabele 2.1 moe se doi do zakljuka, fiksirajui recimo promjenjivu K, da kako
poveavanjem optereenja mree, vjerovatnoa BYE greke se poveava to se moglo
zakljuiti i intuitivno, tj. Poveanjem optereenja, vea koliina saobraaja cirkulie
mreom te e prije doi do prekoraenja veliine reda ekanja, tj. Gubitka paketa.
Fiksirajui promjenjivu optereenja te posmatranjem vjerovatnoe greke u zavisnosti od
parametra K ne moe se doi do nekog globalnog zakljuka jer ne postoji neko striktno
pravilo po kojem se mijenjaju vrijednosti mada je, intuitivno gledajui, trebalo doi do
zakljuka da smanjenjem duine reda ekanja dolazi do poveanja izgubljenih paketa pa
samim tim i vjerovatnoe gubitka BYE poruke.
Analizom tabele 2.2 moe se zakljuiti da, fiksirajui recimo promjenjivu K,
poveavanjem optereenja mree, srednja duina reda ekanja se poveava do neke
vrijednosti nakon koje prestane rasti, te pone oscilirati (optereenje 400).Intuitivno
posmatrajui ovaj rezultat je logian, jer poveavajui optereenje mree, vea koliina
saobraaja se generie te je vie optereen vor od interesa. Fiksirajui promjenjivu
optereenja te posmatrajui srednju duinu reda ekanja u zavisnosti od parametra K,
dolazi se do zakljuka da poveanjem duine reda ekanja se poveava i srednja duina
reda ekanja to opet predstavlja oekivan rezultat. Naime ukoliko se poveava duina
reda ekanja, tada u razliitim vremenskim trenucima dati vor moe imati vei broj
razliitih stanja koliine paketa u redu ekanja, to dovodi do poveanja srednje duine
reda ekanja.
32
33
Tabela 2.3 Statistiki parametri korelacije krivulje i skupa taaka za sluaj sa prethodne
slike
SUMMARY OUTPUT
Regression Statistics
Multiple R
0,936971
694
R Square
0,877915
954
Adjusted R
Square
0,862655
449
Standard
Error
0,006119
363
Observatio
ns
10
34
Tabela 2.4 Statistiki parametri korelacije krivulje i skupa taaka za sluaj sa prethodne
slike
SUMMARY OUTPUT
Regression Statistics
Multiple R
0,919018
884
R Square
0,844595
71
Adjusted R
Square
0,825170
174
Standard
Error
0,007421
509
Observatio
ns
10
35
Tabela 2.5 Statistiki parametri korelacije krivulje i skupa taaka za sluaj sa prethodne
slike
SUMMARY OUTPUT
Regression Statistics
Multiple R
0,924575
106
R Square
0,854839
127
Adjusted R
Square
0,836694
018
Standard
Error
0,007106
848
Observatio
ns
10
36
Tabela 2.6 Statistiki parametri korelacije krivulje i skupa taaka za sluaj sa prethodne
slike
SUMMARY OUTPUT
Regression Statistics
Multiple R
0,834372
518
R Square
0,696177
499
Adjusted
Square
Standard
Error
Observations
0,658199
687
0,044225
139
10
37
Tabela 2.7 Statistiki parametri korelacije krivulje i skupa taaka za sluaj sa prethodne
slike
SUMMARY OUTPUT
Regression Statistics
Multiple R
0,828289
615
R Square
0,686063
686
Adjusted
Square
Standard
Error
Observations
0,646821
647
0,214019
942
10
38
Tabela 2.8. Statistiki parametri korelacije krivulje i skupa taaka za sluaj sa prethodne
slike
SUMMARY OUTPUT
Regression Statistics
Multiple R
0,822708
734
R Square
0,676849
661
Adjusted
Square
Standard
Error
0,636455
869
0,558047
084
39
Observations
10
40
3. Zakljuak
U ovom radu predstavljena je mrea bazirana na SIP protokolu, tj. na dva naina
predstavljanja i monitorisanja date mree: analitikom (predstavljanje mree sistemom
posluivanja tipa M/M/1/K) te simulacijskim (koritenjem SIP patcha u mrenom
simulatoru NS2). Cilj ovog rada je bio istraivanje vjerovatnoe gubitka BYE poruke te
raunanje srednje duine reda ekanja na voru od interesa. Ideja je bila obaviti prije svega
simuliranje date mree u NS2 simulatoru, te raunanje veliina od interesa u stohastikom
okruenju. Iz generisanog saobraaja smo trebali izraunati parametre i koji su nam
neophodni za primjenu analitikog modela. Naalost, mjereni rezultati dobijeni
simulacijom su nam onemoguili primjenu analitikog pristupa te njegovu usporedbu sa
simulacijskim pristupom, te smo bili ogranieni samo na obradu rezultata dobijenih
simulacijom. Analizom datih rezultata doli smo do zakljuka da se vjerovatnoa gubitka
BYE poruke poveava ukoliko poveavamo optereenje mree dok smo za duinu reda
ekanja zakljuili da poveanjem duine reda ekanja dolazi do poveanja srednje duine
reda ekanja, te da poveavanje optereenja mree ima za posljedicu poveanje srednje
duine reda ekanja do odreene vrijednosti nakon koje poinje ta vrijednost oscilirati
daljim poveavanjem optereenja. U posljednjem dijelu rada smo izvrili statistiku obradu
rezultata simulacije na nain da smo ureene parove taaka dobijenih simulacijom
aproksimirali odreenim krivuljama koje se ponaaju prema nekoj zakonitosti, sa
odreenom veliinom pouzdanou.
41