Föreläsning 7/5: Nätlagret: ip, dhcp, nat och icmp samt introduktion till routning Slides are modified from J.F Kurose and K.W. Ross Network Layer 4-1 Källa: Deering/IETF, 2001 IP-adressering: introduktion IP-adress: 32-bitars-id för gränssnitt (eng. interface) gränssnitt: koppling mellan värd (eng. Host) eller router och den en Router vanligen flera gränssnitt Värd vanligen ett gränssnitt En ip-adress per gränssnitt skrivsätt: 223.1.1.1 223.1.2.1 223.1.1.2 223.1.1.4 223.1.2.9 223.1.1.3 223.1.3.1 223.1.3.27 223.1.2.2 223.1.3.2 223.1.1.1 = 11011111 00000001 00000001 00000001 223 1 1 1 3 IP-datagramformatet fragmentposition checksumma för huvudet IP-protokollversionsnummer på huvud (byte) typ av data max antal återstående hopp (minskas med minst ett i varje router) protokollet ovanför ip som ska ha datat Hur mkt pålägg (eng. overhead) tillsammans med TCP? 20 byte tpc-huvud 20 byte ip-huvud = 40 byte + app.- lagerpålägg ver 16-bitars-id 32 bitar övre lager flgr tid-attleva hvd.- tjänstetyp 32 bitar käll-ip-adress 32 bitar destinations-ip-adr. Tillval (om några) data (variabel, vanligtvis ett tcpsegm. eller udp-datagr.) total på datagr. (byte) för fragmentering/ihopsättning T.ex. tidsstämpel, spara tagen rutt, specificera lista med routrar som ska besökas 5 1
Nätlagret transportera transportlagersegment från A till B: A: kapsla in segment i datagram (ip-paket) B: leverera segment till transportlagret lagerprotokoll i varje värd och router routern undersöker iphuvudfälten A applikation transport applikation transport B Två nyckelfunktioner i lagret vidareförmedling (eng. forwarding): förflytta paket från en routers ingång till lämplig utgång routning: bestämma rutt för paket från källa till destination analogi: vidareförmedling: processen att ta sig igenom en enskild knutpunkt under resan routning: processen att planera en resa från A till B routningsalgoritmer Nätlagret 4-6 Nätlagret 4-7 Samspelet mellan routning och vidareförmedling värde i huvud på anländande paket routningsalgoritm lokal vf-tabell värde i huvud utg. 0100 0101 0111 1001 0111 3 2 2 1 3 2 1 Nätlagrets tjänstemodell Q: Vilken tjänstemodell för kanalen som transporterar datagram från A till B? Exempel, enskilt datagram: garanterad leverans garanterad leverans med mindre än 40 ms fördröjning Vad har Internet? Exempel, flöde av flera datagram: leverans av datagram i ordning garanterad minsta bandbredd till flödet krav på max intervall mellan paketen Nätlagret 4-8 Nätlagret 4-9 2
Paketförmedling (eng. Packet-switching) ingen uppkopplingsfas routrar: ingen information om tillståndet för ändpunkternas uppkoppling begreppet uppkoppling saknas i lagret paket vidareförmedlas med hjälp av destinationsadressen paket mellan samma källa-destination-par kan ta olika vägar applikation transport applikation transport 1. Sända data 2. Ta emot data Nätlagret 4-11 IP-fragmentering och ihopsättning MTU (maximum transfer size) största möjliga lagerram olika typer, olika MTU:er stora ip-datagram fragmenteras ett datagram blir flera datagram sätts ihop hos mottagaren ip-huvudets bitar identifierar och ordnar fragmenten ihopsättning (eng. reassembly) fragmentering: in: stort datagram ut: 3 små datagram 12 IP-fragmentering och ihopsättning Exempel datagram 4000 byte MTU = 1500 byte 1480 byte i datafältet position (eng. offset) = 1480/8 =4000 ID =x =1500 fragflag =0 ID =x ID =x position =0 Ett stort datagram blir flera små datagram =1500 =1040 ID =x fragflag =1 fragflag =1 fragflag =0 position =0 position =185 position =370 En naiv tabell för vidareförmedling Destination (adressintervall) ip-adress 32 bitar (2^32) 1 = = 4 294 967 295 möjliga rader Länkgränssnitt 11001000 00010111 00010000 00000000 t.o.m. 0 11001000 00010111 00010111 11111111 11001000 00010111 00011000 00000000 t.o.m. 1 11001000 00010111 00011000 11111111 11001000 00010111 00011001 00000000 t.o.m. 2 11001000 00010111 00011111 11111111 annars 3 13 Nätlagret 4-14 3
Bättre/krympt tabell: Längsta prefixmatchning Matchat prefix Länkgränssnitt 11001000 00010111 00010 0 11001000 00010111 00011000 1 11001000 00010111 00011 2 annars 3 Exempel: DA: 11001000 00010111 00010110 10100001 Vilket gränssnitt? Sub IP-adressens delar: subdel (höga bitar) värddel (låga bitar) Vad är ett sub? enheters gränssnitt med samma subdel i ipadressen kan fysiskt nå varandra utan en router emellan 223.1.1.1 223.1.2.1 223.1.1.2 223.1.1.4 223.1.2.9 223.1.1.3 223.1.3.1 223.1.2.2 223.1.3.27 sub 223.1.3.2 DA: 11001000 00010111 00011000 10101010 Vilket gränssnitt? ett verk med 3 sub Nätlagret 4-15 16 Sub 223.1.1.0/24 223.1.2.0/24 Sub, exempel 223.1.1.2 Tips för att hitta suben: koppla loss varje gränssnitt från dess värd eller router öarna som detta skapar är suben Hur många? 223.1.1.1 223.1.1.4 223.1.1.3 223.1.9.2 223.1.7.0 223.1.9.1 223.1.8.1 223.1.8.0 223.1.7.1 223.1.3.0/24 submask: /24 223.1.2.1 223.1.2.6 223.1.2.2 223.1.3.1 223.1.3.27 223.1.3.2 17 18 4
IP-adressering: CIDR CIDR: Classless InterDomain Routing subdelen av adressen kan variera i format: a.b.c.d/x, där x är antal bitar i adressens subdel subdel värddel 11001000 00010111 00010000 00000000 IP-adresser: Hur får man tag i en? Q: Hur får en värd (eng. host) en ip-adress? hårdkodad av systemadmin i en fil Wintel: control-panel->network->configuration->tcp/ip- >properties UNIX: /etc/rc.config DHCP: Dynamic Host Configuration Protocol: erhålla adress dynamiskt från en server inpluggningsbart (eng. plug-and-play ) 200.23.16.0/23 19 20 DHCP: Dynamic Host Configuration Protocol DHCP: Klient-server-scenario Mål: tillåta värd att dynamiskt erhålla sin ip-adress från en server när den ansluter sig till verket kan förlänga hyrtiden för en adress den använder tillåter återanvändning av adresser (en adress upptagen bara när man är uppkopplad och använder adr.) stöd för mobila användare som vill ansluta sig till verket. A B 223.1.1.1 223.1.1.2 223.1.1.4 223.1.2.9 223.1.1.3 223.1.3.1 DHCPserver 223.1.3.27 223.1.2.2 223.1.3.2 223.1.2.1 E en DHCP-klient som behöver en ip-adress i et 21 22 5
DHCP: klient-server-scenario DHCP-server: 223.1.2.5 tid DHCP request källa: 0.0.0.0, 68 dest:: 255.255.255.255, 67 diadr: 223.1.2.4 transaktions-id: 655 Levnadstid: 3600 s. DHCP discover källa : 0.0.0.0, 68 dest.: 255.255.255.255,67 diadr: 0.0.0.0 transaktions-id: 654 DHCP offer källa: 223.1.2.5, 67 dest: 255.255.255.255, 68 diadr: 223.1.2.4 transaktions-id: 654 Levnadstid: 3600 s. anländande klient IP-adresser: Hur får man tag i en? Q: Hur får verket sin subdel i ip-adressen? A: Får sitt block med adresser från internetleverantörens (ISP:ns) adressrymd. ISP:ns block 11001000 00010111 00010000 00000000 200.23.16.0/20 Organisation 0 11001000 00010111 00010000 00000000 200.23.16.0/23 Organisation 1 11001000 00010111 00010010 00000000 200.23.18.0/23 Organisation 2 11001000 00010111 00010100 00000000 200.23.20.0/23....... Organisation 7 11001000 00010111 00011110 00000000 200.23.30.0/23 DHCP ACK src: 223.1.2.5, 67 dest: 255.255.255.255, 68 diadr: 223.1.2.4 transaktions-id: 655 Levnadstid: 3600 s. 23 24 Hierarkisk adressering: ruttaggregation Hierarkisk adressering möjliggör effektiv annonsering av routningsinformation: Organisation 0 200.23.16.0/23 Organisation 1 200.23.18.0/23 Organisation 2 200.23.20.0/23 Organisation 7. 200.23.30.0/23. Fly-By-Night-ISP ISPs-R-Us Skicka mig allt med adresser som börjar på 200.23.16.0/20 Skicka mig allt med adresser som börjar på 199.31.0.0/16 Internet Hierarkisk adressering: mer specifika rutter ISPs-R-Us har mer specifik rutt till Organisation 1 Organisation 0 200.23.16.0/23 Organisation 2 200.23.20.0/23.... Organisation 7 200.23.30.0/23 Organisation 1 200.23.18.0/23 Fly-By-Night-ISP ISPs-R-Us Skicka mig allt med adresser som börjar på 200.23.16.0/20 Internet Skicka mig allt med adresser som börjar på 199.31.0.0/16 eller 200.23.18.0/23 25 26 6
IP-adressering: sista ordet... Q: Hur får en ISP ett block med adresser? A: ICANN: Internet Corporation for Assigned Names and Numbers allockerar adresser hanterar DNS tilldelar domännamn, löser dispyter NAT: Network Address Translation resten av Internet 138.76.29.7 lokalt verk (t.ex., hemmaverk, SOHO) 10.0.0/24 10.0.0.4 10.0.0.2 10.0.0.3 Utåt sett samma ip-adress (NAT:ens): 138.76.29.7, men olika portnummer Inom et adressrymd 10.0.0/24 27 28 NAT: Network Address Translation Motivering: det lokala verket använder bara en ipadress, sett från utsidan det behövs inte ett block med ip-adresser från ISP:n, endast en ip-adress för alla enheter man kan ändra adresserna på enheterna i det lokala verket utan att behöva meddela omvärlden man kan byta ISP utan att ändra adresserna i det lokala verket enheter i det lokala verket går ej att adressera direkt utifrån (bra säkerhet) NAT: Network Address Translation Implementation av NAT-routern: utgående datagram: ersätt (käll-ip-adress, portnr) i varje datagram med (NAT-IP-adress, nytt portnr)... fjärrklient/server kommer att svara med (NAT-IPadress, nytt portnr) som destinationsadr. mappningstabell för varje par av (käll-ip-adress, portnr) och (NAT-IP-adress, nytt portnr) inkommande datagram: ersätt (NAT-IP-adress, nytt portnr) i destinationsfältet med motsvarande (käll-ipadress, portnr) lagrat i NAT:ens tabell 29 30 7
NAT: Network Address Translation NAT: Network Address Translation, diskussion 2: NAT-routern ändrar datagrammets källadr. från, 3345 till 138.76.29.7, 5001, uppdat. tabellen 2 NAT-mappningstabell WAN-sidans adr. LAN-sidans adr. K: 138.76.29.7, 5001 D: 128.119.40.186, 80 K: 128.119.40.186, 80 D: 138.76.29.7, 5001 138.76.29.7 3: Svar inkommer fr. dest.adress: 138.76.29.7, 5001 138.76.29.7, 5001, 3345 3 10.0.0.4 K:, 3345 D: 128.119.40.186, 80 K: 128.119.40.186, 80 D:, 3345 1 1: Värden skickar datagram t. 128.119.40.186, 80 4 10.0.0.2 10.0.0.3 4: NAT-routern ändrar datagrammets dest.adr från 138.76.29.7, 5001 till, 3345 31 använder portnumret, 16 bitar: 60 000 samtidiga uppkopplingar möjliga med en enda adress till ett LAN NAT kontroversiellt: routrar bör endast arbeta med lager 1-3 inkräktar på resonemanget om att kommunikation endast ska ske mellan ändpunkterna (eng. end-to-end argument) man måste ofta ta hänsyn till NAT:en när en applikation designas, t.ex. p2p och skype bristen på ip-adresser borde istället lösas med ipv6 32 Problem vid passering av NAT Problem vid passering av NAT Klient utifrån vill koppla upp sig mot servern på adress serveradressen lokal för LANet endast en NAT:ad adress är synlig externt: 138.76.29.7 lösning 1: konfigurera NAT:en statiskt så att den vidareförmedlar inkommande uppkopplingsförfrågningar från specifik port till viss server t.ex., (123.76.29.7, port 2500) vidarefömedlas alltid till port 25000 Client? 138.76.29.7 10.0.0.4 NATrouter 33 lösning 2: protokollet Universal Plug and Play (UPnP) Internet Gateway Device (IGD). Möjligt för NAT:ade värdar att: lära sig den offentliga IPadressen (138.76.29.7) numrera tillgängliga portmappningar lägga till/ta bort portmappningar (med leasingtider) 138.76.29.7 IGD 10.0.0.4 d.v.s. automatisera statisk konfigurering av NATportmappningar NATrouter 34 8
Problem vid passering av NAT lösning 3: användning av reläer (används i Skype) Klient den NAT:ade servern skapar uppkoppling till ett relä den externa klienten kopplar upp sig mot samma relä relät skapar en brygga mellan uppkopplingarna. 2. uppkoppling till relä skapas av klienten 3. reläns brygga skapas 1. uppkoppling till relä skapas av den NAT:ade värden 138.76.29.7 NAT router 35 ICMP: Internet Control Message Protocol används av värdar och routrar för att informera om lagertillstånd rapportera fel: onåbar värd eller port, onåbart protokoll utföra echo-förfrågningar och svar (används av ping) ett litet lager ovanpå ip: ICMP-medd transporteras i ip-datagram ICMP-meddelande: typ, kod plus första 8 byte av ipdatagrammet som gav felet Typ Kod Beskrivning 0 0 echo-svar (ping) 3 0 dest.et onåbart 3 1 dest,värden onåbar 3 2 dest-protokollet onåbart 3 3 dest.porten onåbar 3 6 dest-et okänt 4 7 dest-värden okänd 4 0 stryp källa (stockningskontroll; används ej 8 0 echo-förfrågan (ping) 9 0 routerannonsering 10 0 routerupptäckt/begäran 11 0 TTL utgången 12 0 dåligt IP-huvud 36 Traceroute och ICMP Källan skickar serie med udpdatagram till slutdestination det första har TTL=1 det andra har TTL=2, o.s.v. det n:te har TTL=n plus osannolikt portnummer När n:te datagrammet anländer till n:te routern: Routern kastar datagrammet... och skickar ett icmpmeddelande (typ 11, kod 0) Icmp-meddelandet inkluderar namnet på routern och dess ip-adress När icmp-meddelandet inkommer så beräknar källan RTT-värdet Traceroute gör detta 3 ggr Avslutningskriterium UDP-datagrammet kommer till slut fram till destinationsvärden Destination returnerar icmpmeddelandet värden onåbar (typ 3, kod 3) När källan får icmpmeddelandet så avslutar den traceerouteprogrammet. Routning på Internet statisk och dynamisk routning hierarkisk routning autonoma system två typer av routningsprotokoll 3 prober 3 prober 3 prober 2009-01-19 TDTS09 Fö. 1: Introduktion 1-37 9
Statisk routning Dynamisk routning Källa: Comer (2001), Computer networks and Internets. 3rd Ed. Prentice Hall. Källa: Comer (2001), Computer networks and Internets. 3rd Ed. Prentice Hall. Global routning Routningsprotokoll IGP Interior Gateway Protocol OSPF, RIP EGP Exterior Gateway Protocol BGP Optimal väg? Kostnad? Källa: Comer (2001), Computer networks and Internets. 3rd Ed. Prentice Hall. 10
BGP Border Gateway Protocol RIPv2 Routing Information Protocol BGP-4 Routning mellan AS:er Stöd för policys Stöd för transitroutning Pålitlig överföring Routing Arbiter System, http://www.radb.net/ OSPF Open Shortest-Path First Källa: Comer (2001), Computer networks and Internets. 3rd Ed. Prentice Hall. 11