You are on page 1of 43

UNIVERZITET U SARAJEVU

ELEKTROTEHNIKI FAKULTET U SARAJEVU

Adnan Hadiahmetovi
Admir Hui
Faruk Zaimovi
Amila Begovi
Haris Karahoda

PROJEKTNI ZADATAK 6

ISPITIVANJE VJEROVATNOE GUBITKA BYE


PORUKA I ISPITIVANJE SREDNJE DUINE
REDA EKANJA

Sarajevo, Januar 2014.

Sadraj
Uvod.......................................................................................................................................1
1.

Opis metodologije..........................................................................................................2
1.1.

2.

1.1.1.

Struktura protokola.........................................................................................3

1.1.2.

Osnovne funkcije SIP protokola.....................................................................4

1.1.3.

SIP poruke......................................................................................................7

1.2.

NS2-simulator........................................................................................................8

1.3.

Analitiko i simulacijsko modeliranje...................................................................9

1.3.1.

Analitiko modeliranje.................................................................................10

1.3.2.

Vjerovatnoa gubitka BYE poruke..............................................................11

1.3.3.

Srednja duina reda za ekanje....................................................................12

1.3.4.

Simulacijsko modeliranje.............................................................................12

1.3.5.

Formiranje simulacijskog modela pomou tcl skripti..................................12

1.3.6.

Metrike i kriteriji usporedbe.........................................................................23

1.3.7.

Trace datoteke NS2 simulatora....................................................................23

1.3.8.

Koritenje awk skripti za obradu podataka..................................................24

1.3.9.

Awk skripta za izraunavanje vjerovatnoe gubitka BYE poruke...............24

1.3.10.

Awk skripta za izraunavanje srednje duine reda ekanja.........................26

1.3.11.

Dodatak- awk skripta za raunanje parametara i ...................................27

Rezultati i diskusija......................................................................................................31
2.1.

3.

SIP (Session Initiation Protocol)............................................................................2

Statistika obrada rezultata simulacije.................................................................33

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.

Slika 0.1 Prikaz razmjene poruka kod SIP protokola


* Radi jednostavnosti i pravljenja Awk skriti za proraun vjerovatnoe greke, odnosno prepoznavnje BYE
poruke, izvrili smo promjenu izvornog koda. Gdje smo BYE poruku postavili na 450B.

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.

1.1. SIP (Session Initiation Protocol)


SIP je kontrolni protokol aplikacijskog sloja koji je razvijen unutar IETF-a. Dizajniran je
tako da omoguava jednostavnu implementaciju, dobru skalabilnost i fleksibilnost. SIP se
koristi za kreiranje, modificiranje i raskidanje sesija.
Sesije oznaavaju skupinu poiljatelja i primatelja koji komuniciraju te stanje poiljatelja i
primatelja za vrijeme komuniciranja. Primjeri sesije su telefonski razgovori putem
Interneta, distribucija multimedije, multimedijske konferencije, distribuirane raunalne igre
itd.
SIP nije zamiljen da bude sveobuhvatan, pa e za komunikaciju meu ureajima biti
potrebni i drugi protokoli. Njegova je namjena da omogui komunikaciju koja se nakon
toga odvija na razliite naine, pa i pomou nekog drugog protokola. Uz SIP se
najee koriste protokoli RTP i SDP. Real-time Transport Protocol je IETF-ov protokol
za prijenos multimedijskih podataka u realnom vremenu, ukljuujui audio, video i
tekstualne podatke. Omoguava kodiranje i enkapsuliranje podataka u pakete i prijenos tih
paketa putem Interneta.
Session Description Protocol koristi se za opisivanje i kodiranje mogunosti, odnosno
sposobnosti sudionika sesije. Opis se koristi za pregovaranje karakteristika sesije kako bi
svi ureaji mogli ravnopravno sudjelovati. To ukljuuje, na primjer, pregovaranje o
kodecima, tako da svi sudionici mogu dekodirati sadraj paketa, pregovaranje o
prijenosnom protokolu i tako dalje. SIP je dizajniran u skladu s Internet modelom. To je
end-to-end tip signalnog protokola to znai da je logika, osim usmjeravanja SIP poruka,
spremljena na krajnjim ureajima. Stanje sesije je takoer spremljeno na krajnjim
ureajima, ne postoji jedinstvena taka ispada. Mree koje su dizajnirane na taj nain
dobro skaliraju. Cijena koju za to moramo platiti je vee zaglavlje. End-to-end koncept SIP
protokola bitno je razliit od koncepta uobiajene PSTN (Public Switched Telephone
Network) mree kod koje su sva stanja i logika koji se spremaju u mreu i krajnje ureaje
(telefone) vrlo primitivni.
2

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

Sloj korisnika transakcije


Transakcijski
Transportni
Sintaksa i kodiranje

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.

Osnovne funkcije SIP protokola

Osnovne funkcije SIP protokola su:


3

Lociranje korisnika odreivanje krajnjeg sistema koji e se koristiti za


komunikaciju
Raspoloivost korisnika odreuje da li krajnji sistem eli ili ne eli da uestvuje u
toj sesiji
Karakteristike korisnika odreuje medij i parametre medija koji su bitni za
komunikaciju
Uspostava sesije razmjena parametara za uspostavu sesije
Uspravljanje sesijama razmjena podataka vezanih za uspostavu, prekid i
odravanje sesija

Prethodno nabrojane funkcije su omoguene koristei sljedee komponente koje ine


temelj svake SIP arhitekture.

Slika 1.1 Grafiki prikaz SIP arhitekture

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.

Slika 1.2 Direktna komunikacija bez proxy servera

Proxy posluitelj (engl. Proxy Server) Obrauje SIP poruke, modifikuje ih


ukoliko je potrebno, te ih prosljeuje ka sljedeem serveru. Prema promjeni stanja
proxy posluitelje dijelimo na:
Stateless proxy koji ne pamte stanja transakcije prilikom prosljeivanja
zahtjeva
Statefull proxy koji za vrijeme trajanja transakcije uva stanje transakcije
Call statefull koji uva sva stanja koja se odnose na sesiju

Slika 1.3 Komunikacija UA-ta preko proxy servera

Registracijski posluitelj (Registration Server) je poseban tip UAS jedinice. Njegova


uloga je prikupljanje i spremanje podataka o korisnicima te pruanje tih podataka
posluitelju redirect. Podaci koje skuplja su registracije korisnika kojima se dodaju
informacije o trenutnoj lokaciji korisnika (korisniko ime, IP adresa i vrata). Tako
popunjeni podaci spremaju se u lokacijsku bazu podataka.

Slika 1.4 Registracija UA-ta

Posluitelj za preusmjeravanje (Redirection Server) je UAS koji prihvaa zahtjeve,


te u odgovorima alje lokaciju odreenog korisnika. Kada zaprimi zahtjev on
pretrauje lokacijsku bazu podataka, koju podacima puni registration, kako bi
pronaao primatelja kojem je zahtjev namijenjen. Zatim lokaciju primatelja alje
kao odgovor poiljatelju, koji onda sve sljedee zahtjeve alje direktno na dobivenu
lokaciju.

Slika 1.5 Komunikacija sa redirect serverom

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

Signalizacija SIP protokola odvija se porukama. Korisniki agenti meusobno


razmjenjuju poruke koje se mogu podijeliti u dvije grupe: zahtjevi i odgovori. Zahtjevi se
koriste za iniciranje neke akcije ili za obavjetavanje primatelja zahtjeva o neemu.
Odgovori slue za potvrivanje da je zahtjev primljen i obraen te u sebi sadre status
obrade (procesiranja). Svaka poruka ima tano definisanu strukturu: sastoji se od zaglavlja
(poetne linije) koja oznaava vrstu poruke i tijela 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:

INVITE Oznaava pozivanje korisnika da sudjeluje u nekoj sesiji. Pozivatelj alje


i podatke o vrsti medija koje moe primiti, kao i ostale parametre koji opisuju
sesiju, a pozvani korisnik alje odgovor koji u svom zaglavlju sadri podatke o vrsti
medija koju primatelj eli primiti
ACK Potvruje da je klijent primio odgovor na INVITE zahtjev i moe
sadravati zaglavlje sa svim podacima o vezi, a ako ih ne sadri onda se koriste
podaci iz INVITE zahtjeva
BYE Korisnik alje poruku posluitelju da eli prekinuti komunikaciju
CANCEL ponitava posljednji zahtjev (ne odnosi se na BYE), ali ne utjee na ve
izvrene zahtjeve
OPTIONS sadri informacije o mogunostima posluitelja
REGISTER prenosi informacije o lokaciji korisnika do SIP posluitelja

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.

Tabela 1.2 Oznake i vrste SIP 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

Server je vratio mogue lokacije.

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.

U Otcl skrpti od strane korisnika, moemo definirati mrenu topologiju, specificiramo


protkole, i aplikacije koje elimo da simuliramo (ije ponaanje je definirano u sastavu
hirarhije) i oblik izlaza koji elimo dobiti od simulatora. OTcl moe korisiti objekat
sastvljen u C++, misli se na OTcL povezanost, koji stvara podudaranje OTcL objekata za
svaki C++. NS je simulator, gdje budue vrijeme ovisi od vremena dogaaja koji su
sadrani u scheduler-u. Dogaaj je objakat u C++ hirarhiji sa jedinstvenim ID,
vremenom i pokazivaem (pointer) na objekte koji obrauju taj dogaaj. Scheduler uva
strukturu podata (Tu su etri, ali po defoltu korisiti linkovnu listu) sa dogaajima.

Korisnik pomou Tcl skripti defnie mrenu topologiju, odgovarajue protokole,


generatore saobraaja, izvore, odredita, itd. Simulacijska skripta generalno sadri sljedee
elemente:
Kreiranje rasporeivaa dogaaja,
8

Ukljuivanje trace procesa,


Kreiranje mrene topologije (ina, beina ili kombinacija)
Uspostavljanje rutiranja (statiko ili dinamiko),
Kreiranje transportnih agenata
Kreiranje izvora i odredita saobraaja,
Postavljanje generatora saobraaja na aplikacijskom sloju (CBR, statistika
raspodjela ili aplikacija),
Postavljanje scenarija simulacije.

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. Analitiko i simulacijsko modeliranje


U ovom podpoglavlju emo se pozabaviti detaljnijim opisom analitikog i simulacijskog
modeliranja, tj. modelima kojima emo reprezentovati nau SIP baziranu mreu. Sa
aspekta analitikog modeliranja, nau mreu emo predstaviti sistemom posluivanja
M/M/1/K dok emo sa aspekta simulacijskog modeliranja dati uvid u kreiranje date mree
u NS2 simulatoru uz koritenje odgovarajuih tcl skripti.

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)

Faktor optereenja se moe izraunati na sljedei nain:

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:

Slika 1.6 Sistem M/M/1/K

U ovom sluaju se radi o eksponencijalnoj raspodjeli ove dvije veliine. Takoer je


prisutan samo jedan posluiva, dakle samo jedan paket moe biti na obradi, dok ostali
paketi ekaju. Posljednja oznaka predstavlja kaacitet buffer-a datog SIP servera.
Treba naglasiti da veliine i nisu predpostavljene ve su izmjerene putem simulacije
kako bi se analitiki rezultati izraunali pod istim uslovima pod kojima je i vrena
simulacija.

1.3.2.

Vjerovatnoa gubitka BYE poruke

Da bi se izraunala vjerovatnoa gubitka odreenog paketa u sistemu za ekanje, potrebno


je odrediti vjerovatnou da je red za ekanje popunjen. To e ujedno biti i vjerovatnoa
gubitka dolaznog paketa, jer u sluaju popunjenog boffer-a, sljedei paket koji doe na SIP
server e se odbaciti. Dakle:

Ploss PK

(1)

Vjerovatnoa da se u sistemu za posluivanje nae n paketa je data sljedeom formulom:


10

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.

Srednja duina reda za ekanje

Za raunanje srednjeg broja korisnika u sistemu za posluivanje se koristi sljedei izraz:

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

Ve smo ranije naglasili da emo sa aspekta simulacijskog modeliranja koristiti mreni


simulator NS2. Kao sastavni dio ovog simulatora koristit emo Tcl skripte koje slue za
definisanje mree i mrenih elemenata o emu e biti govora u nastavku.

1.3.5.

Formiranje simulacijskog modela pomou tcl skripti

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

AddrParams set domain_num_ 11


lappend cluster_num 1 1 1 1 1 1 1 1 1 1 1
AddrParams set cluster_num_ $cluster_num
lappend eilastlevel 52 52 52 52 52 52 52 52 52 52 502
AddrParams set nodes_num_ $eilastlevel
Kod 1.1 Definisanje tipa adresiranja i klastera

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

U dornjem djelu koda, prikazano je kreiranje svih korisnikih agenata sa prethodno


kreiranim adresama. Prvi dio se odnosi na domene 0 do n-1, a drugi na domenu n.
# Routers
$ns duplex-link
$ns duplex-link
$ns duplex-link
$ns duplex-link
$ns duplex-link
$ns duplex-link
$ns duplex-link
$ns duplex-link
$ns duplex-link
$ns duplex-link

$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

Kod 1.7 Ostvarivanje fizikih veza izmeu rutera

U gornjem djelu koda je prikazano je povezivanje svih izvorinih rutera sa odredinim


ruterom. Parametri linka postavljeni su kao u projektnom zadatku (kapacitet linka 0.1
Mbps i propagaciono kanjenje 100 ms).

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

U gornjem djelu kod je prikazano povezivanje agenata domene n sa njegovim ruterom.

#slucajna varijabla
16

set MyRng [new RNG]


$MyRng seed 0
set slucajna [new RandomVariable/Uniform]
$slucajna use-rng $MyRng
$slucajna set min_ 0.000001
$slucajna set max_ 0.0001
Agent/SIPProxy set sipdelay_ [$slucajna value]
Kod 1.10 Definisanje sluajne varijable kanjenja proxy servera

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

$ns attach-agent $t2($u) $sipt2($u)


$t3($u) label "t3$u@p3.com"
set sipt3($u) [new Agent/SIPUA t3($u)
$ns attach-agent $t3($u) $sipt3($u)
$t4($u) label "t4$u@p4.com"
set sipt4($u) [new Agent/SIPUA t4($u)
$ns attach-agent $t4($u) $sipt4($u)
$t5($u) label "t5$u@p5.com"
set sipt5($u) [new Agent/SIPUA t5($u)
$ns attach-agent $t5($u) $sipt5($u)
$t6($u) label "t6$u@p6.com"
set sipt6($u) [new Agent/SIPUA t6($u)
$ns attach-agent $t6($u) $sipt6($u)
$t7($u) label "t7$u@p7.com"
set sipt7($u) [new Agent/SIPUA t7($u)
$ns attach-agent $t7($u) $sipt7($u)
$t8($u) label "t8$u@p8.com"
set sipt8($u) [new Agent/SIPUA t8($u)
$ns attach-agent $t8($u) $sipt8($u)
$t9($u) label "t9$u@p9.com"
set sipt9($u) [new Agent/SIPUA t9($u)
$ns attach-agent $t9($u) $sipt9($u)
set u [expr $u + 1]

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.

# Set Record-Route on proxies


$sip(0) set recordRoute_ 1
$sip(1) set recordRoute_ 1
$sip(2) set recordRoute_ 1
$sip(3) set recordRoute_ 1
$sip(4) set recordRoute_ 1
$sip(5) set recordRoute_ 1
$sip(6) set recordRoute_ 1
$sip(7) set recordRoute_ 1
$sip(8) set recordRoute_ 1
$sip(9) set recordRoute_ 1
$sip(10) set recordRoute_ 1
# Register proxies with DNS "God"
DNSGod register proxy p0.com $serveraddrp(0)
DNSGod register proxy p1.com $serveraddrp(1)
DNSGod register proxy p2.com $serveraddrp(2)
DNSGod register proxy p3.com $serveraddrp(3)
DNSGod register proxy p4.com $serveraddrp(4)
DNSGod register proxy p5.com $serveraddrp(5)
DNSGod register proxy p6.com $serveraddrp(6)
DNSGod register proxy p7.com $serveraddrp(7)
19

DNSGod register proxy p8.com $serveraddrp(8)


DNSGod register proxy p9.com $serveraddrp(9)
DNSGod register proxy p10.com $serveraddrp(10)
#finish procedure
proc finish {} {
global ns tf nf
$ns flush-trace
close $tf
close $nf
puts "NS-simulation finished!"
exit 0}
# Configure one terminal for complex response, waiting
between 1 and 3
# seconds after ringing to pick up the phone
set u 2
while {$u < 502} {
$sipt10($u) set simple_ 0
$sipt10($u) set minAnsDel_ 1.0
$sipt10($u) set maxAnsDel_ 3.0
set u [expr $u + 1]
}
Kod 1.14 Definisanje finish procedure i vremena odziva korisnika

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

U gornjem djelu je prikazan kod za generisanje poruke REGISTER po exponencijalnoj


raspodjeli sa srednjem vrmenom 2, generisanje INVITE poruke po exponencijalnoj
raspodjeli sa srednjim vremenom 1. generisanje BYE poruke po exponencijalnoj raspodjeli
sa srednjim vremenom 2.5.

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

$ns at [expr $prva + $druga] "$sipt10($brojac) invite


t6($broj) p6.com bw 32kb 64kb"}
if {$domena==7} {
set broj [expr $brojac - 350]
$ns at [expr $prva] "$sipt7($broj) register"
$ns at [expr $prva + $druga] "$sipt10($brojac) invite
t7($broj) p7.com bw 32kb 64kb"}
if {$domena==8} {
set broj [expr $brojac - 400]
$ns at [expr $prva] "$sipt8($broj) register"
$ns at [expr $prva + $druga] "$sipt10($brojac) invite
t8($broj) p8.com bw 32kb 64kb"}
if {$domena==9} {
set broj [expr $brojac - 450]
$ns at [expr $prva] "$sipt9($broj) register"
$ns at [expr $prva + $druga] "$sipt10($brojac) invite
t9($broj) p9.com bw 32kb 64kb"}
$ns at [expr $prva + $druga + $treca] "$sipt10($brojac) bye"
set brojac [expr $brojac + 1]}
Kod 1.16 Definisanje vremena pojave pojedinih poruka

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.

Metrike i kriteriji usporedbe

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.

Trace datoteke NS2 simulatora

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'.

Slika 1.7 Format i primjer trace datoteke

Znaenje pojedinih polja u trace datoteci:

event = oznaka dogaaja (r = prijem paketa, + = ulazak paketa u red ekanja, - =


izlazak paketa iz reda ekanja, d = odbacivanje paketa iz reda ekanja),
time = vremenski ig, sadri informaciju o trenutku u kojem se dogaaj desio,
from node = izvorni vor,
to node = odredini vor,
pkt type = tip paketa,
pkt size = veliina paketa (u bajtima),
flags = zastavice,
fid = oznaka toka (engl. flow id) kojeg je mogue podesiti za svaki pojedini tok u
OTcl skripti. Iako se oznaka toka ne mora koristiti u simulaciji, moe biti korisna za
analizu. Oznaka toka se takoer koristi za specifciranje boje toka za prikaz u NAMu.
src addr = izvorna adresa (u obliku: vor.port),
dst addr = odredina adresa (u obliku: vor.port),
seq num = redni broj paketske sekvence,
pkt id = jedinstvena oznaka paketa.

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.

Koritenje awk skripti za obradu podataka

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.

Awk skripta za izraunavanje vjerovatnoe gubitka BYE poruke


Awk skripta za izraunavanje srednje duine reda ekanja

Awk skripta za izraunavanje vjerovatnoe gubitka BYE


poruke

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

1.3.10. Awk skripta za izraunavanje srednje duine reda ekanja


Kod koji je naveden u nastavku slui nam da izraunamo srednju duinu reda ekanja. Ovu
veliinu smo raunali prema formuli sa tutorijala 2 (str5) gdje je potrebna vjerovatnoa da
se u redu za cekanje nae odgovarajui broj paketa i sam taj broj paketa.
Data awk skripta u biti rauna sljedei izraz:

E (C ) xN x P(C x) ,

(5)

Gdje je P(C = x) vjerovatnoa da se u redu za ekanje nalazi x paketa, a rauna se kao


vrijeme za koje u redu za cekanje imamo x jedinica podjeljeno sa ukupnim vremenom
simulacije:

P(C x)

tN

td ( x, i)
t0

(6)

Gdje x predstavlja broj paketa u redu za ekanje.

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

1.3.11. Dodatak- awk skripta za raunanje parametara i


U smisli poreenja analitikih rezultata i rezultata simulacije, potrebno je imati jednake
uslove pod kojim se rezultati mogu porediti. U tu svrhu smo napravili awk skriptu koja e
nam raunati primarne parametre sistema posluivanja a to su srednja brzina dolazaka
korisnika , te srednja brzina posluivanja korisnika . Ideja je da proraunamo
pomenute parametre dobijene simulacijskim modelom, te za tako dobijene vrijednosti
parametara proraunamo veliine od interesa na analitiki nain. Data skripta opet filtrira
samo saobraaj koji se deava na voru 10, voru od interesa. Parametar emo izraunati
na nain da emo izraunati vremena meudolazaka paketa na vor 10, sumirati ih,
podijeliti sa ukupnim brojema paketa minus 1 (ili fitovati meudolazna vremena
odreenom raspodjelom u Matlabu). Nakon izraunatog prosjenog vremena
meudolazaka paketa, emo dobiti kao recipronu vrijednost ove vrijednosti. Parametar
emo izraunati na slian nain. Raunat emo prosjeno vrijeme obrade paketa, te
dobiti kao recipronu vrijednost te vrijednosti.
BEGIN {
plusici=0;
minusici=0;
brojac1=0;
brojac2=1;
br_odbacenih = 0;
br_dropanih = 0;
br=0;
max=0;
brojac3=1;
brojac4=1;
brojac5=1;
najmanji_id_paketa=100000000000000000;
lambda = 0;
Tdolazno = 0;
27

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

printf("Srednja brzina odlaska je: %.10f \nSrednja brzina dol.


korisnika: %.10f \n Plusevi: %d \n Minusi: %d \n Dropovi: %d \n Razlika
je: %d",mi,lambda,brojac3,brojac2,brojac5,razlika);
}
Kod 1.19 Awk skripta za dobijanje parametara i

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

Tabela 2.2 Srednja duina reda ekanja u zavisnosti od optereenja i parametra K

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

2.1. Statistika obrada rezultata simulacije


Cilj ovog dijela rada je grupisati izmjerene veliine od interesa te ih prikazati u funkciji
zavisne promjenjive u ovom sluaju optereenja mree. Dakle u programskom okruenju
Microsoft Excel-u e se izvriti statistika obrada rezultata simulacije koji su prikazani u
prethodnom poglavlju. Cilj je prikazati za svaku duinu reda ekanja (K=2, K=4 i K=8)
grafike zavisnosti vjerovatnoe gubitka/srednje duine reda ekanja od optereenja.
Oigledno e to biti ureeni par taaka jer imamo konano mnogo tih vrijednosti uzetih iz
prethodnih tabela. Dalji cilj je pokuati opisati ponaanje skupa taaka nekom
kontinualnom krivom koja se ponaa u skladu sa unaprijed definisanom pravilu. Dakle na
samim graficima e biti analitiki opisana kriva (opisana u gornjem lijevom uglu grafova
kao y=f(x)) koja najbolje opisuje dati ureeni skup taaka (ureeni skup taaka je
predstavljen kruiima a funkcija y=f(x) je predstavljena linijom). Ispod svake tabele su
prikazane bazine statistike vrijednosti koje povezuju datu krivu i ureeni skup taaka.
Moda i najbitniji parametar meu tim parametrima je Multiple R parametar koji nam daje
mjeru statistike korelacije izmeu krivulje i skupa taaka i to je blii broju jedan to
imamo bolju podudarnost krivulje i skupa taaka. Ukoliko pak imamo bolju podudarnost
onda sa manjom vjerovatnoom greke moemo ponaanje mjerene veliine prikazane
ureenim parom taaka zamijeniti krivuljom y=f(x) to je i cilj ove metode. Dakle, u
nastavku je dato est grafova i tabela koje respektivno odgovaraju vjerovatnoama gubitka
BYE poruka (za K=2, K=4, K=8) te srednjoj duini reda ekanja (za K=2, K=4, K=8).

Slika 2.8 Vjerovatnoa gubitka BYE poruke u zavisnosti od optereenja za K=2

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

Slika 2.9 Vjerovatnoa gubitka BYE poruke u zavisnosti od optereenja za K=4

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

Slika 2.10 Vjerovatnoa gubitka BYE poruke u zavisnosti od optereenja za K=8

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

Slika 2.11 Srednja duina reda ekanja u zavisnosti od optereenja za K=2

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

Slika 2.12 Srednja duina reda ekanja u zavisnosti od optereenja za K=4

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

Slika 2.13 Srednja duina reda ekanja u zavisnosti od optereenja za K=8

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

You might also like