Tehtäviä voi tehdä ryhmissä, tällöinkin jokainen tekee oman palautussivunsa ja lisäksi listaa ryhmän jäsenet sivulla.
Vastaukset kaikkiin tehtäviin sijoitetaan Internetiin yhdelle www-sivulle, jolle tulee linkit palautettuihin tiedostoihin ja kuviin. Kuvat voi myös esittää suoraan www-sivulla. Esimerkki palautussivusta.
Jokaisessa palautetussa kuvaruutukaappauksessa tulee näkyä tekijän nimi, tai jos tehty ryhmässä, niin kaikkien ryhmäläisten nimet.
Suodatettu pakettikaappaus tarkoittaa sitä että kaikki liikenne joka ei ole tehtävän tekemisen aiheuttamaa liikennettä tulee suodattaa pois. Suodatuksen voi tehdä eri ohjelmalla (esim. Wireshark) jos kaappausohjelmalla ei voi, muista tai osaa suodattaa (esim. tcpdump, RawCap).
Ohjelmointiosuuden Multicast chat asiakas tehtävään saa vapaasti valita ohjelmointikielen
Pisteisiin vaikuttavia asioitaProtokollien analysointi ja implementointi 70 pistettä
RTP/RTSP 12 pistettä
Palauta kuvaruutukaappaus, jossa näkyy asiakkaan ja palvelimen välinen tiedonsiirto sekä pakettikaappaus liikenteestä tai muokatut koodit jos et saa toimimaan.
Asiakkaasi testaamiseen voit kokeilla RTSPServer.jar tiedostoa. Käynnistys komentoriviltä, jotta voi antaa palvelimelle RTSP portin jota kuunnella, esim. java -jar RTSPServer.jar 554.
Videotiedosto pitää olla samassa kansiossa palvelimen kanssa.
Kun RTSP kommunikaatio toimii, joudut vielä toteuttaa RTPPacket.java tiedoston muutokset että RTP pakettien lähetyksen toimimaan Server.java tiedoston kanssa, eli ilman jar palvelinta.
Asiakkaalla testatessa huomaa välilyönti -merkit
Transport: RTP/UDP; client_port= 25000. Palvelin kaatuu poikkeukseen jos väli puuttuu. Jätin
jar tiedostoon tuon ominaisuuden, koska se on alkuperäisessä palvelimessa. Huom: välilyönnin
vaatiminen on vastoin RTSP protokollan määrityksiä RFC 2326 sivu 60.
Multicast liikenteen analysointi 12 pistettä
Palauta suodatettu pakettikaappaus ensimmäiseen kohtaan, sekä sanalliset vastaukset muihin kohtiin.
Multicast chat asiakas 24 pistettä
Toteuta oma asiakas joka osaa liittyä Multicast ryhmään ja käyttää MulticastChat Protokollaa
Arvosteluun vaikuttaa
Palauta pakettikaappaus liikenteestä jossa sinun sovelluksesi "keskustelee" kurssin sovelluksen kanssa.Palauta linkki koodeihin.
Multicast chat asiakkaaseen ryhmän jäsenten päivitys 12 pistettä
MulticastChat protokollan versiossa 1 uusi käyttäjä ei tiedä ketä muita on chat ryhmässä. Kurssin asiakas päivittää käyttäjiä näkemiensä viestien perusteella, eli vain ne käyttäjät, jotka lähettävät jotain. Versioon 1 ei tarvitse tehdä käyttäjien päivitystä. Päivitetään protokolla versioon 2, jossa lisätään protokollaan yksinkertainen käyttäjien hallinta. Jokainen asiakas ylläpitää omaa listaa sen hetkisistä käyttäjistä. Kun uusi käyttäjä liittyy ryhmään, joku vanhoista käyttäjistä lähettää koko ryhmälle oman version jäsenlistasta
Protokollaan lisättävä toiminnallisuus (versio numero 2)
Palauta linkki koodeihin sekä pakettikaappaus liikenteestä jossa ainakin viisi asiakasta liittyy ryhmään parin minuutin aikana, yksi asiakas käyttää versiota 1.
Huomaa että protokolla säilyttää kaikilla ryhmän jäsenillä saman tilan listasta, olettaen ettei tapahdu virheitä tiedonsiirrossa eikä paketteja katoa. Sitten syventävillä kursseilla lisätään sovelluksen ja soketin väliin virheitä ja pyritään korjaamaan protokollaa virheistä toipuvaksi :)
Vastaava jäsenten lisääminen ja jäsenien ylläpito ongelma on esim. pilvi-ympäristöissä, missä laskentaa ja tiedon tallennusta hajautetaan usealle palvelimelle. Isoissa datakeskuksissa, joissa on kymmeniä tuhansia palvelimia, kaatuu palvelin keskimäärin muutaman tunnin välein, joten täytyy olla protokollia jotka ylläpitävät listaa käytössä olevista palvelimista. Meidän yksinkertainen protokolla ei esim. selviä siitä jos joku asiakas kaatuu.
Reititystaulun toiminta 10 pistettä
Toteuta sovellus valitsemallasi ohjelmointikielellä. Sovellukselle annetaan parametrina kaksi tiedostoa. Ensimmäinen
tiedosto on reititystaulu, jossa on reititystaulun rivit omilla riveillään muodossa Aliverkko/Maski Next_Hop_Osoite.
Esimerkkinä routingtable.txt, välilyönti, 1 tai enemmän toimii erottimena. Toisena tiedostona on omilla riveillään IP-osoitteita, joita forwartoidaan.
Esimerkkinä iposoitelista.txt. Sovelluksen tulee osata käsitellä mielivaltaisia reititystauluja sekä IP-osoitelistoja.
Sovelluksen tulee tulostaa osoitteille se minne ne välitetään, esim. 130.234.107.10 --> 0.0.0.0/0 via 192.168.0.14. Apuna
voi käyttää esim. TIM-sivua.
Palauta linkki tiedostoihin.
Reitityksen konfigurointi ja emulointi 60+? pistettä
PSimulator2 30 pistettä
Palauta kaikki ao. ohjeiden mukaan tallentamasi Omanimi*.xml tiedostot, joiden perusteella tehdään arvostelu.
java -jar psimulator2_frontend.jar ja muodosta topologian mukainen verkko.
palauta tiedosto nimellä OmanimiTopologia.xml.java -jar psimulator2_backend.jar OmanimiTopologia.xml. Frontend: vaihda simulaatioon ja yhdistä (connect) backend serveriin.
Ota telnet yhteys Ciscon reitittimeen (esimerkkejä käytössä olevista kommennoista) ja käynnistä liitännät, sekä lisää staattiset reitit edellisen kohdan (ali)verkoille. Vihje: enable -> configure terminal -> interface FastEthernet 0/x -> no shutdown -> (end/exit) -> ip route x.x.x.x (verkko) z.z.z.z (maski) y.y.y.y (next hop address). Huom: aseta Linux reitittimistä ip forwardointi päälle # editor /proc/sys/net/ipv4/ip_forward, ja vaihda arvo 0 arvoon 1.ping pc.pc.pc.pc). Pysäytä kaappaus ja tallenna tapahtumat (save events) OmanimiEvents1.xml tiedostoon ja palauta tiedosto.telnet yhteys Linux reitittimeen joka on 'eri puolella' Ciscon reititintä, kuin pingattava PC/Notebook. Kokeile nyt pingata (ping pc.pc.pc.pc -c 4) samaa laitetta kuin aiemmin, ei onnistu. Lisää Linux reitittimen reititystauluun oletusreitti Ciscon reitittimen kautta.OmanimiEvents2.xml tiedostoon ja palauta tiedosto.ping pc.pc.pc.pc -c 1) kuhunkin laitteeseen ja kaappaa ne kaikki, tallenna tapahtumat OmanimiEvents3.xml tiedostoon ja palauta tiedosto.Reititin 4. Kannattaa vaikka ensin piirtää paperille verkko ja tietokoneiden sijoittuminen verkossa, sekä valita kaikille verkoille ja liitynnöille osoitteet. Huomaa että reitittimien välisille liitynnöille ei ole tehtävänannossa määritelty
osoitteita, reititystaulussa näkyvät verkot ovat reitittimien takana. Reititystaulussa Next hop sarakkeen reitittimien liitynnöille, jotka on kytketty reitittimeen 4, täytyy siis määrittää IP osoite (ja verkko) ja nämä IP osoitteet toimii Next hop osoitteena reititystauluun asetettaviin reitteihin.
Reitittimen 0 takana saa olla myös verkkoja sekä reitittimiä joita tehtävässä ei ole määritelty, koska se on oletusreitti. Huomaa myös että yksi aliverkoista 135.46.56.0/22 on osa toista isompaa aliverkkoa 135.46.56.0/21. Reititystaulujen määritysten lisäksi voit joko lisätä yhteyden reitittimien 1 ja 2 välille, välittää liikenteen reitittimen 4 kautta tai lisätä reitittimiä ja verkkoja
reitittimeen 2 ja niistä yhteyden reitittimeen 1.
Kun topologia on valmis, tallenna se nimellä OmanimiTopologia2.xml.
Muodosta staattiset tai oletusreitit siten että kaikki tietokoneet voivat kommunikoida toistensa kanssa.
Pingaa (ping pc.pc.pc.pc -c 1) kaikilta tietokoneelta kaikkia muita tietokoneita, kaappaa liikenne ja tallenna kaappaus nimellä OmanimiEvents4.xml.
Palauta muodostamasi verkkotopologia OmanimiTopologia2.xml sekä pakettikaappaus OmanimiEvents4.xml.
NetKit 30 pistettä
palautetaan kuvaruutukaappaukset ja/tai (suodatetut) pakettikaappaukset ao. ohjeiden mukaan.
palauta kuvakaappaus jossa näkyy route tulostepalauta kuvakaappaus jossa näkyy ping sekä pakettikaappauspalauta kuvakaappaus jossa näkyy kaikkien laitteiden viimeisimmät tulosteetpalauta vastaava kuvaruutukaappaus.palauta pakettikaappaus jokaisen törmäysalueen ARP liikenteestäpalauta kuvakaappaus sen jälkeen kun olet vtysh shellistä tulostanut RIP reititystaulun näkyviin.palauta pakettikaappaus RIP viesteistä jotka interface down komento aiheuttaa.palauta kuvakaappaus (tai pakettikaappaus) tilanteista missä liikenne (a) suodattuu ja (b) ei suodatu pc1:lle, STP voi laittaa off liikenteen vähentämiseksi tai suodattaa pois pakettikaappauksesta.palauta pakettikaappaukset tai kuvaruutukaappaukset
Palauta kuvaruutukaappaus jossa näkyy pakettikaappauksen Spanning Tree Protocol:n kentät ja niiden arvot (vastaava informaatio kuin ohjekalvoilla on esitetty).Palauta labran generoima kaappaus, mutta suodata pakettikaappauksesta pois kaikki muu liikenne paitsi topology change viestit ja niihin liittyvät kuittausviestitPalauta labran generoimat kaksi pakettikaappausta, mutta suodata niistä pois kaikki muu liikenne paitsi topology change viestit ja niihin liittyvät kuittausviestitroot bridge vaihtuu. Palauta kuvaruutukaappaus, jossa näkyy kaikkien siltojen showstp kommennon tulosteesta mahdollisimman paljon.Palauta kuvakaappaus jossa näkyy vastaavat pingit kuin PSimulator2 tehtävän kohdassa 10.Palauta kuvakaappaus jossa näkyy kaikkien reitittimien reititystaulut sekä vastaavat pingit kuin PSimulator2 tehtävän kohdassa 11 suoritetaan. Jos kaikki ei mahdu kuvaruutukaappaukseen, niin ainakin mahdollisimman monta reititystaulua tulisi nakyä.Cisco reititin 10? pistettä
Johdanto protokolla- ja verkkosimulaattoreihin 70 pistettä
Näiden harjoitusten tarkoituksena on tutustua ns-3 verkkosimulaattoriin ja oppia yksinkertaisten verkkojen sekä protokollien simulointia. Tehtävien tukena käytetään ns-3 tutoriaalia. Uusimman ns-3 version esimerkki -scriptien tulosteet saattavat poiketa tutoriaalissa esitetyistä.
ns-3 harjoitus 1 20 pistettä
gcc, g++ ja python)
sudo apt-get install gcc g++ pythonHello Simulator, ota ja palauta kuvaruutukaappaus.
palauta kuvaruutukaappaus..first.cc on valmiiksi lisätty komentoriviparametrien syöttömahdollisuus. Tehtävänä on ajaa skripti kuten ao. kailtaisella komennolla
$ ./waf --run "scratch/myfirst --ns3::PointToPointNetDevice::DataRate=5Mbps --ns3::PointToPointChannel::Delay=24ms --ns3::UdpEchoClient::MaxPackets=11"mutta muuta Delayn arvoksi syntymäaikasi päivä (DD), ja MaxPackets arvoksi syntymäaikasi kuukausi (MM), yllä luennoitsijan esimerkkiarvot. Muista kommentoida pois rivit joiden sijaan annat komentoriviparametrit. Kasvata tarvittaessa simulaation kestoa (tai pienennä packet intervallia) jotta kaikki MM pakettia ehditään kaiuttaa. Ota ja
palauta kuvaruutukaappaus, jossa näkyy mahdollisimman paljon simulaation tulostetta.palauta simuloinnin ASCII ja PCAP tulostetiedostot. Tiedostojen nimissä tulee näkyä etu- ja sukunimesi.Palauta lisäksi kuvaruutukaappaus jossa tulostat PCAP tiedostojen sisällön näyttöön tcpdump -ohjelmalla.Topologia node 0 node 1 node 2 +----------------+ +----------------+ +----------------+ | Echo client *2 | | Echo Server | | Echo Server | +----------------+ +----------------+ +----------------+ | IP address | | IP address * 2 | | IP address | +----------------+ +----------------+ +----------------+ | point-to-point | |point-to-point*2| | point-to-point | +----------------+ +----------------+ +----------------+ | | | | +--------------------+ +--------------------+ MM Mbps, DD ms MM Mbps, DD ms
Ipv4GlobalRoutingHelper::PopulateRoutingTables();
Laita yo. rivi ennen riviä
Simulator::Run()
Palauta
Ipv4GlobalRoutingHelper::PopulateRoutingTables(); avustajan sijaan määrittelet staattiset reitit solmuihin käyttämällä esim. ipv4RoutingHelper avustajaa. Vinkkejä voit katsoa esim. https://www.nsnam.org/doxygen/static-routing-slash32_8cc_source.html koodista. Palauta muokkaamasi tiedosto sekä tiedosto jossa on laitteiden reititystaulut. Reititystaulujen tulostukseen löytyy esimerkki https://www.nsnam.org/doxygen/dynamic-global-routing_8cc_source.html koodista Trace routing tables kohdasta.ns-3 harjoitus 2 20 pistettä
second.cc mukainen simulaatio (ei langatonta verkkoa), siten että verkon csma väylä-osuudessa on ikäsi verran solmuja, eli aja komento
$ ./waf --run "scratch/mysecond --nCsma=100"
missä luku 100 korvataan iälläsi. Lisäksi muuta skriptin oletuksena käyttämät IP osoitteet itse valitsemiisi. Palauta kuvaruutukaappaus jossa olet tulostanut tcpdump ohjelmalla näyttöön vastaavat pcap tiedostot kuin tutoriaalissa (muuta luvut 100 ja 101 sinun lukusi mukaiseksi)
tcpdump -nn -tt -r second-100-0.pcap
tcpdump -nn -tt -r second-101-0.pcap
csma väylää (joissa ainakin 5 solmua molemmissa), toinen csma väylä liitetään solmuun 0 ja toinen johonkin laitteeseen alkuperäisessä csma väylässä. Siirrä alkuperäisen topologian UdpEchoClient toiseen uuteen csma väylään ja UdpEchoServer toiseen. Aja skripti kuten edellisessä tehtävässä ja palauta kuvaruurukaappaus jossa näkyy promiscuous moodin tcpdump tulosteet jokaisesta väylästä.Palauta linkki kuvaan, kuvakaappaukseen, skannaukseen, tms. Eli toteutus vapaa kunhan palautus on sähköisessä muodossa.
Palauta linkki kuvaan, kuvakaappaukseen, skannaukseen, tms. Eli toteutus vapaa kunhan palautus on sähköisessä muodossa.csma väylään mielivaltaiseen laitteeseen PacketSink sovellus (ks. PacketSinkHelper) vastaanottamaan UDP datapaketteja. Käynnistä PacketSink sovellus ajanhetkellä 0. Aseta PacketSink:lle LOG_LEVEL_ALL, muuta EchoClient:n vastaanottajaksi PacketSink, aja skripti. Palauta kuvaruutukaappaus skriptin tulosteesta tai muokkaamasi xxx.cc tiedosto jos et saa skriptiä toimimaancsma väylään (eri väylä kuin mihin PacketSink on asennettu) mielivaltaiseen solmuun OnOffApplication (ks. OnOffHelper), joka lähettää UDP datapaketteja PacketSink sovellukselle. Käynnistä OnOffApplication sovellus kaksi sekuntia simulaation alkamisen jälkeen. Voit poistaa EchoClient:in ja EchoServer:in (kokonaan) sekä PacketSinkin tapahtumien näyttöön tulostamisen. Aseta toiseen lisäämistäsi uusista väylistä mielivaltaiseen solmuun PCAP tracer joka on promiscuous moodissa. Palauta pcap tiedosto tai muokkaamasi xxx.cc tiedosto jos et saa simulaatiota toimimaanIpv4GlobalRoutingHelper::PopulateRoutingTables();
Tutustu reitityksen toteutukseen erityisesti RIP osioon. Käytä
apuna myös RIP ja RIPng esimerkkikoodeja.
IPv4 koodi on todennäköisesti tehty IPv6 koodin pohjalta, joten osa IPv4 koodin kommenteista puhuu IPv6:een liittyviä asioita. Huomioitavaa toteutuksessa:
nodeContainer:it reitittimille ja muille solmuille Internet protokollapinon asennusta varten.Palauta (I) pcap -tiedosto, jossa näkyy sekä RIP liikennettä että OnOff sovelluksen generoimaa liikennettä,
(II) tekstitiedosto, jossa on tulostettuna reitittimien reititystaulut kahdella eri ajanhetkellä (i) kun reititystaulut eivät vielä ole valmiit ja (ii) kun reititystaulut ovat valmiit.
Jos et saa simulaatiota toimimaan, voit palauttaa toimimattoman tiedoston korjausvinkkejä tai arvostelua varten.
ns-3 harjoitus 3 30 pistettä
TcpNewReno, TcpHybla, TcpHighSpeed, TcpVegas, TcpScalable, TcpVeno, TcpBic, TcpWestwood, TcpWestwoodPlus. Aiemmin oli toteutettuna
myös TcpTahoe ja TcpReno, mutta ne on päätetty poistaa, koska ne eroavat TcpNewReno:sta vain
fast retransmit ja fast recovery vaiheiden osalta. Tosin niillä olisi ollut hyvä havainnollistaa fast retransmit ja fast recovery
käyttäytymisen eroja. TCP:stä on tällä hetkellä käytössä Windows käyttöjärjestelmissä Microsoftin kehittämä
Compound TCP, jonka voi myös ottaa pois päältä
jolloin käytetään jotain muuta, todennäköisesti Renoon pohjautuvaa algoritmia, mutta siitä en ole löytänyt enempää tietoa.
Linux käyttöjärjestelmissä tuetaan eri määrää erilaisia ruuhkanhallinta algoritmeja, joita voi vaihtaa halutessaan. Oletuksena käytettävä ruuhkanhallintamenetelmä
riippuu kernelin versiosta ja linux distrosta. Mac OS käyttää TCP SACK:ia, toisin kuin liukuvaan ikkunaan perustuvat ruuhkanhallintamenetelmät, joita ns-3:een on toteutettu.
p2pDevices.Get (0)
Ptr<RateErrorModel> em = CreateObject<RateErrorModel> ();
em->SetAttribute ("ErrorRate", DoubleValue (0.000001));
p2pDevices.Get (0)->SetAttribute ("ReceiveErrorModel", PointerValue (em));
OnOffApplication) aloittaa lähetyksen ajanhetkellä 5 sekuntia ja
lopettaa ajanhetkellä 15 sekuntia. Aseta tiedonsiirtonopeus arvoon 10 Mbps ja paketin koko arvoon 1440 tavua
(arvot on asetettava ennenkuin sovellus asennetaan (install) solmuun).PacketSink) sijoitetaan samaan verkkoon (väylään) UDP PacketSink sovelluksen kanssaOnOffApplication sovelluksen kanssa.MyApp luokkaa, jonka voit "lainata" tutoriaalin fifth.cc skriptistä. Sovellusta varten täytyy luoda TCP soketti
Ptr<Socket> ns3TcpSocket = Socket::CreateSocket (xxx.Get(n), TcpSocketFactory::GetTypeId ());
missä n on n:s laite csma väylässä xxx, eli laite johonka sijoitat on TCP lähteen.Ptr<MyApp> app = CreateObject<MyApp> ();
app->Setup (ns3TcpSocket, sinkAddress, 1440, 100000, DataRate ("10Mbps"));
sinkAddress on TCP kohteen osoite (sisältäen IP osoitteen ja porttinumeron)
Address sinkAddress (InetSocketAddress(yyy.GetAddress (m), sinkPort));
missä m on m:s laite csma väylässä yyy, eli laite johonka sijoitat on TCP kohteen.
xxx.Get(n)->AddApplication (app);
fifth.cc esimerkissä lisäämällä rivi
ns3TcpSocket->TraceConnectWithoutContext ("CongestionWindow", MakeCallback (&CwndChange));
heti sen rivin jälkeen, missä luodaan TCP soketti ja ohjaamalla skriptin ajonaikaiset näyttöön tulostukset tiedostoon > cwnd.dat 2>&1.
Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue(1440));
Config::SetDefault("ns3::TcpL4Protocol::SocketType",TypeIdValue(TypeId::LookupByName("ns3::TcpNewReno")));
LogComponentEnable rivit sekä PCAP tallennukset.
cwnd.dat tiedosto ja poista tiedoston alusta waf build:iin liittyvät tulosteet.
Jos et saa skritiä toimimaan (tai et saa tehtyä seuraavien kohtien kuvia), palauta toimimaton .cc tiedosto, joka arvostellaan sen mukaan kuinka
paljon yo. kohdista on toteutettu oikein. Jos kaikki toimii palautukseksi riittää kuvaajat (sekä sanallinen arviointi).gnuplot ja tee EtunimiSukunimiTcpNewReno.png tiedosto ruuhkanhallintaikkunan käyttäytymisestä. Aseta myös kuvaajan otsikkoon oma nimesi. Palauta kuva.TcpBic versiolla ja palauta EtunimiSukunimiTcpBic.pngset yrange [0:120000]