Mikä on NS2
NS2 on tapahtumapohjainen simulaatio-ohjelmisto, joka on tarkoitettu
IP-pohjaisen tietoliikenteen tarkasteluun. NS2:n on rakennettu varsin
kattavasti kaikki keskeiset IP-maailman protokollat. NS on vapaasti
levitettävä ohjelmisto, johon saa sekä valmiita binäärejä, että
lähdekoodeja. Et siis ole rajoitettu käyttämään valmiita
ohjelmalohkoja, vaan voit luoda uusia 'helposti'.
NS2 perustuu C++ kirjoitettuun ytimeen. Ytimestä löytyy
luokkakirjastoja erilaisille tietoliikenneverkkojen
komponenteille. Komponentit on kuvattu algoritmeina ja protokollina,
joita yhdistelemällä varsinaiset järjestelmät rakentuvat. Varsinainen
simulaatio suoritetaan TCL-kielellä tehdyn 'reseptin'
pohjalta. Resepti sisältää ohjeet kuinka C++ luokista rakennetaan
todellisia järjestelmiä sekä näiden järjestelmien
parametrisoinnin. TCL:n käyttö mahdollistaa helpon muunneltavuuden,
koska varsinaista koodia ei tarvitse kääntää uudestaan.
NS2:n lähdekoodi, asennusohjeet ja muu materiaali löytyy www.isi.edu/nsnam/ns/index.html
Missä TKK:lla
NS2 on asennettu Sähkö- ja tietoliikennetekniikan osaston
työasemaluokassa B215 oleviin SUN-työasemiin. Niihin pääsee verkon
kautta käsiksi nimillä:
- erlang.ee.hut.fi
- forney.ee.hut.fi
- gallagher.ee.hut.fi
- golay.ee.hut.fi
- hamming.ee.hut.fi
- reed.ee.hut.fi
- shannon.ee.hut.fi
- solomon.ee.hut.fi
- viterbi.ee.hut.fi
- wiener.ee.hut.fi
Työasemien käyttö edellyttää voimassaolevaa ATK-lupaa TKK:n
opiskelijakoneisiin sekä sitä, että olet ST-osaston opiskelija. Mikäli
et ole ST-osaston opiskelija, ota yhteyttä ATK-lupiin ja osoita heille
olevasi kurssin opiskelija, näin saat lisäyksen lupaasi, joka
mahdollistaa työasemien käytön.
Kuinka saa käyttöön
NS2:n saa käyttöön /proj/bones/ns2/ns-allinone-2.1b8/
hakemistosta löytyvällä use komennolla.
/proj/bones/ns2/ns-allinone-2.1b8/use
Komento palauttaa shell-riippuvan variantin varsinaisesta
alustuskomennosta
/proj/bones/ns2/ns-allinone-2.1b8/use.csh
tai
/proj/bones/ns2/ns-allinone-2.1b8/use.sh
use komento asettaa ympäristömuuttujat, joita tarvitaan NS2:n
käyttämiseen. Voit verifioida toiminnan kirjoittamalla komentoriville
ns, jonka seurauksena ns käynnistyy tulostaen ruudulle
komentokehotteen
%
Voit poistua NS2:n komentorivitulkista kirjoittamalla
exit. Varsinainen simulaatio suoritetaan antamalla komento
ns ohjelmapohjanimi - esimerkiksi ns Harjoitus2.tcl
HUOM!!! Varsinaisten simulaatioden suorittaminen usein vaatii
runsaasti levytilaa. Levytilaa kuluu erilaisten tulostiedostojen
muodossa. Koska käyttäjien levytilaa on rajoitettu, joudut
suorittamaan simulaatiot jaetulla väliaikaislevyllä /tmp. Tee
oma hakemisto /tmp/NiiloNimeton/, johon kopioit ohjelmapohjan
suoritusta varten. Suorita simulaatio ja esikäsittele
tulostiedostot. Kun olet esikäsitellyt tulokset, kopioi ne omaan
kotihakemistoosi ja tuhoa väliaikaishakemisto.
Mistä lähteä liikkeelle
Voit tutustua NS2:n käyttöön tutorialin pohjalta, joka löytyy verkosta
osoitteesta: http://www.isi.edu/nsnam/ns/tutorial/index.html.
Kehoitan käymään läpi kappaleet I (Introduction) - V (Making it more
interesting). Niistä löydät tarvitsemasi lähtötiedot NS2:n käytöstä
yksinkertaisten simulaatioiden suorittamiseen. Mikäli tunnet tarvetta
syvällisempään katsaukseen kehoitan käymään tutorialin läpi ja
tutustumaan NS2:n käyttöoppaaseen osoitteessa: http://www.isi.edu/nsnam/ns/ns-documentation.html.
NS2:n käyttöopas kuvaa C++:lla kirjoitetun sovellusrajapinnan
siltäosin kuin se on dokumentoitu. Dokumentaation taso on
heikohko. Syy tähän on ohjelmiston luonne - kehitystyö tapahtuu meidän
kaikkien käyttäjien toimesta.
Harjoitus
Tehtävänäsi on miettiä ja simuloida vaihtoehtoisia tapoja tarjota
eriytettyä palvelun laatua seuraaville sovelluksille
mallitopologiassa
- Sovellus 1: Vakionopeuksinen CBR-lähde (64kbps). Tämä lähde
mallintaa normaalia VoIP-sovellusta. Tyypillisesti ne perustuvat joko
pelkkään UDP-protokollaan tai UDP/RTP-protokollan käyttöön.
- Sovellus 2: Vaihtelevannopeuksinen CBR-lähde (keskiarvo
256kps). Tämä lähde mallintaa kompressoidun pieniresoluutioisen
videokuvan levitystä (esimerkiksi luennon välittäminen verkon
yli). Tyypillisesti nämäkin sovellukset käyttävät UDP-protokollaa.
- Sovellus 3: Ahne FTP-yhteys. Tämä lähde mallintaa ahnetta
(tiedoston koko ääretön) FTP-sovellusta.
- Sovellus 4: Vakionopeuksinen CBR-lähde (64kps). Tämä lähde
mallintaa videokuvan siirtoa TCP:n päällä.
- Sovellus 5: Telnet-yhteys. Tämä mallintaa yleisesti ottaen kaikkia
terminaaliyhteyksiä.
Lähtökohtaisesti sinun tulee pohtia, mitä ominaisuuksia sovellukset
vaativat (pientä viivettä, pientä pakettihukka tms) ja pyrkiä sitten
toteuttamaan nämä vaatimukset simulaattorissa. Suorituksessa saat
käyttää kahta jonoa ja kummassakin jonossa korkeintaa kolmea
pudotustodennäköisyys tasoa. Sinun tulee pyrkiä mahdollisimman suureen
verkon käyttöasteeseen sekä mahdollisimman ideaaliseen palveluun eri
sovelluksille.
Kohtia joita voit modifioida ovat siis:
- Jonojen lukumäärä
- Pudotustasojen lukumäärä per jono
- RED-parametrit per taso
- Käytettävä valvonta-algoritmi per sovellus
- Sovellusten sopimusarvot (cir,pir jne)
- Jonojen väliseen skedulointiin käytettävä algoritmi
- Jonojen väliset painoarvot
- Sovellusten ryhmittely eri jonoihin ja pudotustasoihin
Tehtävä raportoidaan palauttamalla kirjallinen raportti viimeistään
1.4 klo 16 kurssin lokerikkoon G-siiven toisessa
kerroksessa. Raportista tulee ilmetä ratkaisusi, miksi se on parempi
kuin jokin muu. Simulaatiotulokset viiveiden, kapasiteettien ja
pakettihukkien osalta per sovellus, jolle niillä on
merkitystä. Vertailukohtana tee simulaatio, jossa kaikki sovellukset
ovat yhdessä jonossa ja niiden nopeuksia ei rajoiteta mitenkään
(BestEffort).
Näiden lisäksi sinun tulee palauttaa samaan päivään mennessä tekemäsi
simulaatio scriptit ja mahdolliset apuohjelmat sähköpostilla. Palautuksen tulee olla sellaisenaan ajokelpoinen,
jotta tulokset voidaan verifioida helposti.