Chapter 4 Network Layer A note on the use of these ppt slides: We re making these slides freely available to all (faculty, students, readers). They re in PowerPoint form so you can add, modify, and delete slides (including this one) and slide content to suit your needs. They obviously represent a lot of work on our part. In return for use, we only ask the following: If you use these slides (e.g., in a class) in substantially unaltered form, that you mention their source (after all, we d like people to use our book!) If you post any slides in substantially unaltered form on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material. Thanks and enjoy! JFK/KWR All material copyright 996-004 J.F Kurose and K.W. Ross, All Rights Reserved Computer Networking: A Top Down Approach Featuring the Internet, rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 004. Verkkokerros (/) Verkkokerros Verkkokerroksen palvelut Virtuaalipiiri- ja datagrammiverkot Reitittimen toiminta IP: Internet Protocol datagrammin rakenne IPv4-osoitteistus ICMP IPv6 Reititysalgoritmit yhteystila etäisyysvektori hierarkkinen reititys Reititys Internetissä RIP OSPF BGP Broadcast ja multicast Mobiliteetti Verkkokerros (/)
ICMP: Internet Control Message Protocol Päätelaitteet ja reitittimet käyttävät kommunikoidessaan verkkotason informaatiota virheiden raportointi: ei tavoiteta päätelaitetta, verkkoa, protokollaa, porttia echo request/reply (pingsovellus käyttää) Verkkotaso IP:n yläpuolella : ICMP-viestit kuljetetaan IPdatagrammeissa ICMP-viesti: tyyppi, koodi sekä ensimmäiset 8 tavua virheen aiheuttaneesta IPdatagrammista Type Code description 0 0 echo reply (ping) 0 dest network unreachable dest host unreachable dest protocol unreachable dest port unreachable 6 dest network unknown 7 dest host unknown 4 0 source quench (congestion control - not used) 8 0 echo request (ping) 9 0 route advertisement 0 0 router discovery 0 TTL expired 0 bad IP header Verkkokerros (/) Traceroute ja ICMP Lähde lähettää sarjan UDPsegmenttejä kohteeseen: ensimmäisessä on TTL= toisessa on TTL=, jne. porttinumero yleensä 44-54 Kun n:s datagrammi saapuu n:lle reitittimelle: reititin hylkää datagrammin lähettää lähteelle ICMPviestin (tyyppi, koodi 0: TTL expired) viesti sisältää reitittimen nimen ja IP-osoitteen Kun ICMP-viesti saapuu lähteelle, se laskee RTT:n Traceroute toistaa tämän kertaa Lopetuskriteeri UDP-segmentti saapuu lopulta kohdelaitteelle: kohde palauttaa ICMPviestin (tyyppi, koodi : port unreachable) Kun lähde saa tämän ICMPviestin, lopetetaan Verkkokerros (/) 4
Verkkokerros Verkkokerroksen palvelut Virtuaalipiiri- ja datagrammiverkot Reitittimen toiminta IP: Internet Protocol datagrammin rakenne IPv4-osoitteistus ICMP IPv6 Reititysalgoritmit yhteystila etäisyysvektori hierarkkinen reititys Reititys Internetissä RIP OSPF BGP Broadcast ja multicast Mobiliteetti Verkkokerros (/) 5 IPv6 Alkuperäinen motivaatio: bitin osoiteavaruus on kohta käytetty kokonaan Lisämotivaatioita: otsikon uusi muoto nopeuttaa prosessointia ja jatkolähetystä muutokset otsikossa helpottavat palvelun laatuun (QoS) liittyviä toteutuksia IPv6-datagrammin muoto: kiinteän pituinen 40 tavun otsikko fragmentointia ei sallita Verkkokerros (/) 6
IPv6-otsikko Traffic class: datagrammin luokka tai prioriteetti Flow label: voidaan tunnistaa samaan vuohon kuuluvat datagrammit ( vuon käsite ei hyvin määritelty) Next header: ylemmän kerroksen protokolla data-kentässä pri -> traffic class (8 bittiä) vastaa IPv4:n TTL-kenttää Verkkokerros (/) 7 Muita muutoksia IPv4:stä Checksum: poistettu kokonaan, pienentää prosessointiaikaa jokaisella hypyllä Options: mahdollisia, mutta eivät otsikossa; ilmaistaan next header -kentällä ICMPv6: uusi versio ICMP:stä uusia viestityyppejä, esim. packet too big multicast-ryhmien hallintatoimintoja Verkkokerros (/) 8 4
Siirtyminen IPv4:stä IPv6:een Kaikkia reitittimiä ei voi päivittää samanaikaisesti Ei voida järjestää flag days Miten verkko toimii, kun siellä on sekä IPv4- että IPv6-reitittimiä? Tunnelointi: IPv6-datagrammit kuljetetaan hyötykuormana IPv4-datagrammeissa IPv4- reitittimien välillä Verkkokerros (/) 9 Tunnelointi Logical view: A B tunnel E F IPv6 IPv6 IPv6 IPv6 Physical view: A B C D E F IPv6 IPv6 IPv4 IPv4 IPv6 IPv6 Flow: X Src: A Dest: F data Src:B Dest: E Flow: X Src: A Dest: F Src:B Dest: E Flow: X Src: A Dest: F Flow: X Src: A Dest: F data data data A-to-B: IPv6 B-to-C: IPv6 inside IPv4 D-to-E: IPv6 inside IPv4 E-to-F: IPv6 Verkkokerros (/) 0 5
Verkkokerros Verkkokerroksen palvelut Virtuaalipiiri- ja datagrammiverkot Reitittimen toiminta IP: Internet Protocol datagrammin rakenne IPv4-osoitteistus ICMP IPv6 Reititysalgoritmit yhteystila etäisyysvektori hierarkkinen reititys Reititys Internetissä RIP OSPF BGP Broadcast ja multicast Mobiliteetti Verkkokerros (/) Reititys ja jatkolähetys routing algorithm local forwarding table header value output link 000 00 0 00 value in arriving packet s header 0 Verkkokerros (/) 6
Graafit Verkon kuvaus graafina: Graafi: G = (N,E) u v x w y z N = reitittimien joukko = { u, v, w, x, y, z } E = linkkien joukko ={ (u,v), (u,w), (u,x), (v,w), (v,x), (w,x), (w,y), (w,z), (x,y), (y,z) } Huom: Graafit ovat hyödyllisiä myös muissa verkkokonteksteissa Esimerkki: PP, missä N on vertaiskäyttäjien joukko ja E on TCP-yhteyksien joukko Verkkokerros (/) Graafit: hinnat u 5 v x w y 5 z c(x,x ) = linkin (x,x ) hinta - esim. c(w,z) = 5 Hinta voi olla: aina, tai kääntäen verrannollinen kaistanleveyteen, tai kääntäen verrannollinen ruuhkan määrään Polun (x, x, x,, x p ) hinta = c(x,x ) + c(x,x ) + + c(x p-,x p ) Q: Millä solmujen u ja z välisellä polulla on pienin hinta? Reititysalgoritmi: algoritmi, joka etsii pienimmän hinnan polun Verkkokerros (/) 4 7
Reititysalgoritmien luokittelua Globaali vai hajautettu informaatio? Globaali: jokaisella reitittimellä on tiedossaan täydellinen verkon topologia ja linkkien hinnat yhteystila-algoritmit (link state) Hajautettu: reititin tietää fyysisesti kytketyt naapurit ja linkkien hinnat naapureihin iteratiivinen laskentaprosessi, tiedonvaihto naapureiden kanssa etäisyysvektorialgoritmit (distance vector) Staattinen vai dynaaminen algoritmi? Staattinen: reitit muuttuvat vain hitaasti ajan kuluessa Dynaaminen: reitit muuttuvat nopeammin säännöllinen päivitys tietyin aikavälein päivitys myös, kun linkin hinta muuttuu Verkkokerros (/) 5 Verkkokerros Verkkokerroksen palvelut Virtuaalipiiri- ja datagrammiverkot Reitittimen toiminta IP: Internet Protocol datagrammin rakenne IPv4-osoitteistus ICMP IPv6 Reititysalgoritmit yhteystila etäisyysvektori hierarkkinen reititys Reititys Internetissä RIP OSPF BGP Broadcast ja multicast Mobiliteetti Verkkokerros (/) 6 8
Yhteystila-algoritmit Dijkstran algoritmi Solmut tietävät verkon topologian ja linkkien hinnat saavutetaan linkin tilan yleislähetyksillä kaikilla solmuilla on sama informaatio Laskee pienimmän hinnan polut yhdestä solmusta ( lähde ) kaikkiin muihin solmuihin saadaan ko. solmun forwardointitaulukko Iteratiivinen: k:n iteraation jälkeen tiedetään k:n kohdesolmun pienimmän hinnan polut Merkintöjä: c(x,y): linkin hinta solmusta x solmuun y; = jos eivät ole naapureita D(v): polun nykyinen hinta lähteestä solmuun v p(v): edeltäjäsolmu polulla lähteestä solmuun v N': niiden solmujen joukko, joiden pienimmän hinnan polku tiedetään varmasti Verkkokerros (/) 7 Dijkstran algoritmi Initialization: N' = {u} for all nodes v 4 if v adjacent to u 5 then D(v) = c(u,v) 6 else D(v) = 7 8 Loop 9 find w not in N' such that D(w) is a minimum 0 add w to N' update D(v) for all v adjacent to w and not in N' : D(v) = min( D(v), D(w) + c(w,v) ) /* new v is either old v or known 4 shortest path w plus cost from w to v */ 5 until all nodes in N' Verkkokerros (/) 8 9
Dijkstran algoritmi: esimerkki Step 0 4 5 N' u ux uxy uxyv uxyvw uxyvwz D(v),p(v),u,u,u D(w),p(w) 5,u 4,x,y,y D(x),p(x),u D(y),p(y),x D(z),p(z) 4,y 4,y 4,y 5 u v x w y 5 z Verkkokerros (/) 9 Dijkstran algoritmi: kommentteja Algoritmin kompleksisuus: n solmua jokaisella iteraatiolla: täytyy tarkistaa kaikki solmut w, jotka eivät ole joukossa N n(n+)/ vertailua: O(n ) tehokkaammat toteutukset mahdollisia: O(n log n) Oskillaatiot mahdollisia: esim. linkin hinta = siirretyn liikenteen määrä A +e D B 0 0 0 C e e aluksi A +e 0 D B 0 +e C 0 lasketaan uudestaan A 0 +e D B 0 0 C +e lasketaan uudestaan A +e 0 D B 0 +e C e lasketaan uudestaan Verkkokerros (/) 0 0
Verkkokerros Verkkokerroksen palvelut Virtuaalipiiri- ja datagrammiverkot Reitittimen toiminta IP: Internet Protocol datagrammin rakenne IPv4-osoitteistus ICMP IPv6 Reititysalgoritmit yhteystila etäisyysvektori hierarkkinen reititys Reititys Internetissä RIP OSPF BGP Broadcast ja multicast Mobiliteetti Verkkokerros (/) Etäisyysvektorialgoritmit Bellman-Ford-yhtälö (dynaaminen optimointi) Määritellään d x (y) := pienimmän hinnan polun hinta solmusta x solmuun y Silloin d x (y) = min v { c(x,v) + d v (y) } missä min otetaan kaikkien x:n naapureiden v yli Verkkokerros (/)
Bellman-Ford: esimerkki Selvästi, d v (z) = 5, d x (z) =, d w (z) = u 5 v x w y 5 z Bellman-Ford-yhtälön mukaan: d u (z) = min { c(u,v) + d v (z), c(u,x) + d x (z), c(u,w) + d w (z) } = min { + 5, +, 5 + } = 4 Solmu, jolla minimi saavutetaan, on seuraava solmu lyhimmän hinnan polulla forwardointitaulukkoon Verkkokerros (/) Etäisyysvektorialgoritmi () D x (y) = arvio pienimmälle hinnalle solmusta x solmuun y Etäisyysvektori: D x = [ D x (y) : y є N ] Solmu x tietää hinnan jokaiseen naapuriin v: c(x,v) Solmu x ylläpitää etäisyysvektoriaan D x = [ D x (y) : y є N ] Solmu x ylläpitää myös naapureidensa etäisyysvektoreita: jokaiselle naapurille v, solmu x ylläpitää D v = [ D v (y) : y є N ] Verkkokerros (/) 4
Etäisyysvektorialgoritmi () Perusidea: Jokainen solmu lähettää säännöllisesti oman arvionsa etäisyysvektoristaan naapureilleen Kun solmu x vastaanottaa uuden etäisyysvektoriarvion naapuriltaan, se päivittää oman etäisyysvektorinsa käyttäen Bellman-Ford-yhtälöä: D x (y) min v { c(x,v) + D v (y) } jokaiselle y N Normaalissa olosuhteissa arvio D x (y) suppenee kohti todellista hintaa d x (y) Verkkokerros (/) 5 Etäisyysvektorialgoritmi () Iteratiivinen, asynkroninen: jokaisen paikallisen iteraation aiheuttaa paikallisen linkin hinnan muutos etäisyysvektorin päivitysviesti naapurilta Hajautettu: jokainen solmu ilmoittaa vain naapureilleen etäisyysvektorinsa muutoksista naapurit ilmoittavat sitten omille naapureilleen, jos tarpeen Jokainen solmu: wait for (change in local link cost or msg from neighbor) recompute estimates if DV to any destination has changed, notify neighbors Verkkokerros (/) 6
from from from from from from from from from D x (y) = min{c(x,y) + D y (y), c(x,z) + D z (y)} D x (z) = min{c(x,y) + D y (z), = min{+0,7+} = c(x,z) + D z (z)} node x table = min{+,7+0} = x 0 7 x 0 x 0 y y 0 y 0 z z 7 0 z 0 node y table y x x 0 7 x 0 x z y 0 y 0 y 0 7 z z 7 0 z 0 node z table x x 0 7 x 0 y y 0 y 0 z 7 0 z 0 z 0 time Verkkokerros (/) 7 Etäisyysvektori: linkin hinnan muutokset () Linkin hinta muuttuu: Solmu havaitsee paikallisen linkin hinnan muutoksen Päivittää reititysinformaation, laskee etäisyysvektorin uudestaan Jos etäisyysvektori muuttuu, ilmoittaa naapureilleen 4 x y 50 z hyvät uutiset kulkevat lentäen kautta x z x z x z x z D y (x) 4 6 6 6 kautta x y x y x y x y D z (x) 50 5 50 5 50 50 Verkkokerros (/) 8 4
Etäisyysvektori: linkin hinnan muutokset () Linkin hinta muuttuu: Kuvan esimerkki: montako iteraatiota tarvitaan ennen kuin algoritmi stabiloituu? Count to infinity -ongelma! 60 4 x y 50 z huonot uutiset matelevat kautta x z x z x z x z x z D y (x) 4 6 60 6 60 6 60 8 60 8 kautta x y x y x y x y x y D z (x) 50 5 50 5 50 7 50 7 50 9 Verkkokerros (/) 9 Etäisyysvektori: linkin hinnan muutokset () Poisoned reverse: Jos z reitittää y:n kautta kohteeseen x: z kertoo y:lle, että sen etäisyys x:ään on ääretön (jotta y ei reititä x:ään z:n kautta) Ratkaiseeko tämä täydellisesti count to infinity -ongelman? 60 4 x y 50 z kautta x z x z x z x z x z D y (x) 4 60 60 60 5 60 5 kautta x y x y x y x y x y D z (x) 50 5 50 5 50 6 50 6 50 Verkkokerros (/) 0 5
Algoritmien vertailua LS = yhteystila (link state) DV = etäisyysvektori (distance vector) Viestityksen kompleksisuus LS: kun n solmua ja E linkkiä, lähetetään O(nE) viestiä DV: viestien vaihtoa vain naapureiden kanssa suppenemisaika vaihtelee Suppenemisen nopeus LS: O(n )-algoritmi vaatii O(nE) viestiä voi oskilloida DV: suppenemisaika vaihtelee voi tulla reitityssilmukoita count to infinity -ongelma Robustisuus: mitä tapahtuu, jos reitittimeen tulee toimintahäiriö? LS: solmu voi mainostaa väärää linkin hintaa jokainen solmu laskee vain oman taulukkonsa DV: solmu voi mainostaa väärää polun hintaa jokaisen solmun taulukko on kaikkien muiden käytössä: virheet leviävät läpi verkon Verkkokerros (/) 6