Kurssikokeen 13.12.2002 arvostelusta ====================================== Yleisesti: ---------- _ osatehtävien arvostelussa käytettiin myös puolikkaita pisteitä (1/2) ja plussia (+ = 1/4) ja miinuksia (- = 1/4). - kunkin tehtävän osatehtävien pisteet laskettiin yhteen ja tehtävän lopulliset pisteet pyöristettiin niin, että + ja - ei ollut merkitystä ja 1/2 nosti seuraavaan kokonaislukuun. Jos ratkaisuissa tai ratkaisuhahmotelmissaon mielestäsi omituisuuksia, niin ota yhteyttä Liisa Marttiseen (liisa.marttinen@cs.helsinki.fi). ================================================================================================== 1. Opiskelija lähettää Helsingin yliopiston verkkoon liitetyltä päätteeltä joulutervehdyksen sähköpostina ystävälleen, joka opiskelee Marburgin yliopistossa Saksassa. Molemmat yliopistoverkot ovat keskittimillä (hub) ja silloilla (bridge) yhdistettyjä eetteriverkkoja (Ethernet), jotka reitittimet (router) yhdistävät muuhun Internetiin eli toisiin reitittimiin ja niiden välisiin runkolinjoihin (trunk line). a) Piirrä hyvin yksinkertaistettu kuva näistä yliopistoverkoista ja niiden laitteista sekä niitä yhdistävistä reitittimistä ja runkolinjoista. (2 p) Piirroksessa piti osata laittaa reitittimet, sillat, keskittimet ja päätelaitteet oikeisiin paikkoihin suhteessa toisiinsa eikä kertoa Helsingin yliopiston verkon todellista rakenteesta. Yleisesti tämä oli osattu tehdä oikein ja suurin osa sai tästä tehtävästä täydet 2 pistettä. Joillakin oli ongelmia lähinnä siltojen ja keskittimien sijoittelun kanssa tai verkkosta puuttui joitain laitteita kokonaan tai sitten laitteita ei oltu lainkaan nimetty. Ongelmien laadusta riippuen tällöin pisteitä tuli 1/2 - 2-. b) Esitä Internet-protokollapino ja nimeä sen eri kerrokset. (2 p) Internetin kerrokset: Sovelluskerros (Application Layer) Kuljetuskerros (Transport Layer) Verkkokerros (Network Layer) Linkkikerros (Link Layer) (Myös siirtoyhteyskerros kelpuutettiin) Fyysinen kerros (Physical Layer) (Myös peruskerros kelpasi tässä) Täydet 2 pistettä sai, jos osasi sijoittaa kerrokset kohdalleen ja antaa niille oikeat nimet. Yleensä tämä oli osattu tehdä. Väärä kerroksen nimi vähensi 1/2 pistettä, puuttuva tai väärässä järjestyksessä annettu kerros => -1 pistettä. c) Mitkä Internet-protokollapinon kerrokset on toteutettava Internet-verkon eri laitteissa? (4 p) Nyt piti tietää, mitä kerroksia Internet-verkon eri laitteissa tarvitaan. Laitteiksi riittivät a)-kohdan laitteet, mutta voi siinä toistimen ja kytkimenkin mainita. Tätä ei tosin vaadittu. Isäntäkoneissa (asiakaskoneissa ja palvelimissa) tarvitaan kaikki 5 kerrosta. Reitittimissä verkkokerros, linkkikerros ja fyysinen kerros silloissa ja kytkimissä linkkikerros ja fyysinen kerros keskittimissä ja toistimissa riittää pelkkä fyysinen kerros Pisteitä oli jaossa 4 kappaletta ja laitteita samoin neljä. Jokaisesta laitteesta sai yhden pisteen, jos laitteen kerrokset olivat oikein. Täysin väärä laitteen sijoittelu tuotti 0 pistettä, yksi väärä kerros vei 1/2 pistettä ja jos vääriä oli enemmän, mutta laitteen kerroksista oli j otain oikeaa, niin sai +-pisteen. Joissakin vastauksissa annettiin vain laitteiden ylin tai ylimmät kerrokset tai vastauksista ei selkeästi käynyt ilmi, mitkä kerrokset kuhunkin laitteeseen tulee toteuttaa. Näistä systemaattisista puutteista rokotettiin hieman lievemmin. d) Mitä kaikkia protokollia tarvitaan, jotta opiskelijan sähköposti saadaan siirrettyä Helsingin yliopiston postipalvelimelta Marburgin yliopiston verkkoon ja ystävän luettavaksi? Mainitse kunkin protokollan nimi ja kerro lyhyesti, missä tai miksi sitä tarvitaan sekä minkä minkä kerroksen protokollasta on kyse. (10 p) Tässä piti osata luetella tarvittavia protokollia ja lyhyesti selvittää niiden käyttöä sekä sijoittaa ne oikeille protokolakerroksille. Ainakin seuraavat protokollat kelpuutettiin oikeiden selostuksen kera SMTP DNS IMAP POP3 HTTP TCP UDP IP ARP CSMA/CD, MAC-protokolla, Ethernet-protokolla PPP myös reititysprotokollat (RIP, OSPF, BGP) ja kontrolliprotokollat (ICMP) kelpasivat, vaikka niitä ei varsinaisesti kurssilla käsiteltykään. Pisteitä oli jaossa 10 kappaletta ja jokaisesta mainitusta jokseenkin oikeaan toimintaan liitetystä protokollasta sai yhden pisteen. Virheet toiminnassa tai protokollan väärä sijoitus protokollapinoon vei pois puolikkaan tai miinuksen. Tässä monet olivat kirjoittaneet aivan turhan pitkiä selostuksia protokollien toiminnasta, mutta tästä ei kuitenkaan rangaistu pisteitä vähentämällä. ============================================================================================================ 2. TCP-protokolla lähettää 60 KB dataa. Oletetaan, etta segmentit lähetetään maksimikokoisina (MSS = 2 KB) ja kynnysarvo on 32 KB. Vastaanottajan ikkunan koko 20 KB ja edestakainen viive (round trip time) on 100 ms. Tehtävässä selviteltiin TCP:n ruuhkanvalvontaa.(Tosin tehtävässä oli kahteen kertaan harmittava painovirhe: ruuhkanvalvonnan tilalla oli puhuttu vuonvalvonnasta, mutta se ei näytä haitanneen tehtävän tekoa. Kukaan ei tätä kokeessa ihmetellyt eikä tästä mainittu kenenkään koepaperissa. Jos olisi mainittu, siitä olisi saanut lisäpisteitä. Itse huomasin sen vasta kokeen loppupuolella, jolloin osa oli jo ehtinyt poistua.) a) Miten datan lähetys tapahtuu, kun ruuhkanvalvontaan käytetään hidasta aloitusta (slow start) ja kuittaukset saapuvat ajoissa? (6 p) Tarkoituksena oli piirtää kaaviokuva tai selittää riittävän tarkasti, miten hidasta aloitusta käyttävä TCP-protokolla lähettää 60 KB dataa verkkoon, kun segmentin maksimikoko = 2 KB ja kynnysarvo = 32 KB ja vastaanottajan ikkunankoko = 20 KB. Hitaassa aloituksessa lähetetään ensin yksi maksimikokoinen segmentti ja kun tähän on saatu kuittaus 2 segmenttiä ja taas kuittauksen tultua neljä, kahdeksan jne. Lähetyksen määrä kasvaa aluksi eli kynnysarvoon saakka eksponentiaalisesti ja sen jälkeen lineaarisesti eli yhden segmentin joka 'kierroksella'. Kuitenkaan lähettäjä ei saa koskaan lähettää enempää kuin vastaanottajan ikkunaan mahtuu eli tässä suurin mahdollinen lähetysmäärä on 20 KB = 10 segmenttiä. Kun kuittaukset saapuvat ajallaan, lähettäminen tapahtuu seuraavasti: lähetysmäärä vastaanotettu kaikkiaan 1 segmentti a' 2 KB 2 KB 2 segmenttiä = 4 KB 6 KB 4 segmenttiä = 8 KB 14 KB 8 segmenttiä = 16 KB 30 KB tässä kasvatetaan ruuhkaikkunaa 32 KB:een, lähettää saa vain 10 segmenttiä = 20 KB 50 KB tässä voisi lähettää taas 20 KB, mutta jäljellä on vain 10 KB 5 segmenttiä = 10 KB 60 KB Tähän voi halutessaan piirtää myös kuittaukset, mutta tällöin kuviosta tulee paljon sekavampi. Täydet 6 pistettä sai, jos esitti ylläolevan asian joko piirroksena tai riittävän selkeänä ja tarkkana sanallisena selostuksena. Vastaanottajan ikkunan vaikutuksen poisjättäminen tai sen sekoittaminen johonkin muuhun =>-2 pistettä ja lisäksi kynnysarvon unohtaminen => -1 Jos suuria virheitä lähetysmäärissä => -2 p, pieniä virheitä lähetysmäärissä => -1 p Vastauksessa edellytettiin tämän konkreetisen tilanteen käsittelyä. Pelkkä sanallinen selvitys hitaan aloituksen yleisperiaatteista antoi korkeintaan 2-3 pistettä ja sekava selostus => korkeintaan 1 p. Vastaanottajan ikkunan vaikutuksen lisääminen selostukseen toi yhden pisteen lisää, jos se oli hyvin esitetty. b) Oletetaan, että lähetettyyn segmenttiin numero 10 ei tulekaan kuittausta. Miten lähetys jatkuu, kun ruuhkanvalvontaan käytetään hidasta aloitusta? (4 p) Jos kuittausta ei tule ajoissa, ajastin laukeaa ja aloitetaan uudestaan hitaalla aloituksella. Uusi kynnysarvo = puolet lähetyksen määrästä. Segmentti 10 kuuluu lähetykseen, jossa lähetettiin segmentit 8-15 eli lähetyksen koko oli 16 KB = 8 segmenttiä. Siis kynnysarvo = 4 segmenttiä = 8 KB. Lähetetään uudestaan segmentti 10 ja kaikki sen jälkeen lähetetyt segmentit (osa näistä 11, 12, .., korkeintaan 15 uudestaan). Lähetys menee seuraavasti: lähetysmäärä vastaanotettu kaikkiaan 1 segmentti (10) a' 2 KB 20 KB 2 segmenttiä (11, 12) = 4 KB 24 KB 4 segmenttiä (13-16) = 8 KB 32 KB 5 segmenttiä (17-21) = 10 KB 42 KB 6 segmenttiä (22-27) = 12 KB 54 KB 3 segmenttiä (28-30) = 6 KB 60 KB Täydet 4 pistettä on saanut, kun on esittänyt tämän joko kaaviona tai riittävän selkeästi sanallisesti. 1 p hidas aloitus 1 p oikea toiminta hitaassa aloituksessa 1 p uusi kynnysarvo, 1 p oikea toiminta kynnysarvon saavuttamisen jälkeen Tämä tarkka pistejako on lähinnä suuntaa antavaa. Puutteet ja virheet vastauksessa ovat vähentäneet pisteitä. c) Miten toiminta jatkuisi, jos käytössä olisikin nopea toipuminen (fast recovery) ja nopea uudelleenlähetys (fast retransmit)? (4 p) Jos käytössä on nopea toipuminen, ei odoteta uudelleenlähetysajastimen laukeamista, vaan segmentti 10 voidaan lähettää uudestaan, kun on saatu 3 toistokuittausta segmentille 9 eli 'negatiiviset' kuittaukset segmenteistä 11-13. Nopeassa uudelleenlähetyksessä uudeksi kynnysarvoksi tulee b)-kohdan tavoin puolet lähetysmäärästä. Koska todennäköisesti kyseessä ei olekaan ruuhka (muut segmentit ovat päätyneet vastaanottajalle ajoissa), vaan vain virheellinen tai muuten hävinnyt segmentti, niin aloitetaan rohkeammin eli kynnysarvon määrällä (eli puolitetaan puuttuvan segmentin aiheuttanut lähetysmäärä). Lähetys menee seuraavasti: lähetysmäärä vastaanotettu kaikkiaan 4 segmentti (10-13) = 8 KB 26 KB 5 segmenttiä (14-18 ) = 10 KB 36 KB 6 segmenttiä (19-24) = 12 KB 48 KB 6 segmenttiä (25-30) = 12 KB 60 KB (Koska TCP saattaa säilyttää väärässä järjestyksesä saamansa virheettömät segmentit (käytössä ei siis välttämättä ole täysin Go-Back- N -tyyppinen vuonvalvonta), niin lähetys voi mennä vielä hieman tätäkin nopeammin. Puuttuvan segmentin 10 kuittaus voi kuitata samalla segmentit 11-15, jolloin niitä ei enää tarvitse lähettää uudestaan.) Jaossa oli 4 pistettä. Yksi piste nopeasta toipumisesta eli toistokuittausten käytöstä uudelleenlähetysajastimen sijaan ja 3 pistettä nopeasta uudelleenlähetyksestä: 1 p kynnysarvonasettamisesta, 1 p oikeasta ensimmäisestä lähetysmäärästä (4 segmentiä eli 8 KB) ja 1 p lähetysmäärän oikeasta kasvattamisesta. Tämä pistejako on melkolailla vain suuntaa antava. Pistemäärä on enemminkin tullut siitä, kuinka paljon oikeaa asiaa vastauksessa on ollut: 1 p = jotain oikeaa, 2 p = pari oikeaa asiaa, 3 p = lähes oikein, 4 p = kaikki oikein eli asiat esitetty melko täydellisesti. d) Miksi uudellenlähetysajastimen oikea arvo on niin tärkeää? Mitä ongelmia virheellisestä arvosta seuraa? Miten arvo saadaan? (2 p) Virheellinen ajastimen arvo vaikuttaa sekä uudelleenlähetyksiin että ruuhkanvalvonnan kautta lähetysmäärään. Liian pieni arvo => Lähetetään kyllä segmentti turhaan uudelleen, vaikka lähetys tai sen kuittaus on vasta matkalla ja todennäköisesti kaikki onkin OK. Tärkeämpi on vaikutus on kuitenkin ruuhkanvalvontaan: liian pieni arvo aiheuttaa 'turhia' ajastimen laukeamisia ja tämä puolestaan lähetysmäärän pienentämistä. Pahimmassa tapauksessa ollaan koko ajan hitaan aloituksen alussa eli lähetetään vain muutama segmentti kerrallaan. Toimitaan ruuhkatilanteen tavoin, vaikka mitään ruuhkaa ei olekaan, jolloin verkko ennemmin alikuormittuu kuin ylikuormittuu! Liian suuri arvo => Ei huomata ruuhkaa, vaikka sellainen on jo olemassa. Vaarana on, että verkko ehtii ruuhkautua pahastikin, ennenkuin ruuhkaan aletaan reagoida vähentämällä lähettämistä. Vaikka on jo ruuhkaa, toimitaan kuin ruuhkaa ei olisi ja näin ylikuormitetaan verkkoa ja voidaan todella ajautua pahaan ruuhkatilanteeseen. Ajastimen oikea arvo saadaan koko ajan lähetysten kiertoviivettä tarkkailemalla eli laskemalla RTT:tä (round-trip-time). Lasketaan jokaisen segmentin kiertoviive lähettämisestä kuittauksen saapumiseen ja otetaan tästä sopivasti painotettu liukuva keskiarvo. Ajastimen arvo asetetaan riittävän suureksi eli otetaan huomioon kiertoviiveiden vaihtelu (poikkeama odotusarvosta). Sopivat kertoimien arvot on löydetty tutkimalla ja kokeilemalla. Maksimi oli kaksi pistettä ja siitä yhden pisteen sai ajastimen oikean arvon merkityksestä ja virheellisten arvojen seurauksista ja toisen ajastimen arvon laskemisesta. Jos selvitys oli osin puutteellinen sai 1-, 1/2 tai +. Jos oli kertonut vain ajastimen merkityksestä uudelleenlähetyksiin eikä lainkaan maininnut sen vaikutusta ruuhkanvalvontaa, menetti 1/2 pistettä. Ajastimen arvon laskemisessa täyteen yhteen pisteeseen riitti jonkinlainen selvitys siitä, että koko ajan tarkkaillaan segmenttien kiertoviivettä ja että ajastimen arvo saadaan tästä kiertoviiveestä sopivasti laskemalla. Kaavoja ei tarvinnut tarkkaan muistaa. ======================================================================================================= 3) Virheistä ja tarkistuksista a) Mitkä tekijät aiheuttavat virheellisiä paketteja tai pakettien katoamisia? (4p) Tässä kysyttiin tekijöitä, jotka aiheuttavat virheellisiä paketteja tai pakettien katoamisia. virheellisiä paketteja syntyy lähinnä bittivirheistä, jotka puolestaan johtuvat häiriöistä siirtomediassa (sade --- salamanisku, vaimeneminen yms) laitevirheistä ajoitusongelmista kadonneita paketteja aiheuttavat ruuhka ja reitittimen puskureiden ylivuoto vastaanottaja puskureiden ylivuoto sopivat bittivirheet, jotka muuttavat osoitetta tai muuta otsakkeen tärkeää kenttää huono reititys ja liian lyhyt elinaika Jaossa 4 pistettä. Mitä useampia oikeita tekijöitä => sitä enemmän pisteitä. b) Miten Internet-protokollat IP, UDP ja TCP suhtautuvat virheisiin ja virhetilanteesta toipumiseen? (6p) IP tarkistus (checksum) lasketaan vain otsakkeelle, jotta huomataan virheelliset datasähkeet. Virheellinen datasähke hylätään. Myös välissä olevat reitittimet tarkistavat ja uudellenlaskevat tarkistussumman sekä virheen havaitessaan eivät siirrä virheellisiä enää eteenpäin, vaan yksinkertaisesti pudottavat sen pois. UDP-otsakkeessa on myös kenttä tarkistussumman laskemista varten. Virheellinen segmentti joko vain hylätään tai se annetaan vastaanottajalle varoituksen kera. TCP-protokolla paitsi havaitsee, niin myös pyrkii toipumaan virheistä. * tarkistussumma yli koko segmentin ja lisäksi yli pseudo-otsakkeen * segmenttien numerointi ja numeroinnista sopiminen kolmenkertaisella kättelyllä * kuittaukset * virheellisten ja puuttuvien sanomien uudelleenlähetykset * uudelleenlähetysajastin TCP pyrkii myös ennalta ehkäisemään segmenttien turhia katoamisia vuonvalvonnalla ja ruuhkanvalvonnalla. Kaikkiaan voi saada 6 pistettä: 3 pistettä TCP-protokollasta ja 2 pistettä IP-protokollasta ja 1 piste UDP-protokollasta. Mitä täydellismmät vastaukset, sitä enemmän pisteitä. c) Käytössä on CRC-tarkistus ja virittäjäpolynomi on X**3 + X + 1. Lähetettävä varsinainen data on 110101. Mitä saadaan CRC-tarkisteeksi ja mitä siis lähetetään linjalle? (6 p) CRC-tarkistus ja virittäjäpolynomi = X**3 + X + 1 => virittäjä = 1011. Koska virittäjä eli jakaja on neljän bitin mittainen, niin CRC-tarkiste on yhtä lyhyempi eli kolme bittiä. Kun suoritetaan jakolasku, niin varsinaisen datan perään laitetaan jo valmiiksi kolme nollaa => 110101000 ja sitten suoritetaan modulo-2-jakolasku. 1011 110101000 1011 ==== 1100 1011 ==== 1111 1011 ==== 1000 1011 ==== 1100 1011 ===== 111 = CRC-tarkiste Eli linjalle lähetään bitit 110101111. Maksimi pistemäärä on 6 pistettä eli suurinpiirtein yksi piste jokaisesta allaolevasta kohdasta - oikea virittäjä - nollat perään ennen jakolaskua - jakolasku modulo 2 -aritmetiikalla - jakolasku oikein (virheet => -, - 1/2 tai -1 pistettä) - oikea määrä tarkistusbittejä - jakojäännäs lisätään databittien perään Jos on pelkästään sanallisesti selvittänyt CRC-tarkistussumman toimintaa, on voinut saada tästä 1-3 p selityksen tasokkuudesta riippuen.