Løsningsforslag Gruppeoppgaver 24. - 28.mars 2003 1. Fragmentering a) Forklar prinsippet for fragmentering og reassemblering. Anta at maskinen som tar initiativet til kommunikasjonen benytter maksimale pakkestørrelser på (opp til) 4000 bytes og at disse kan transporteres i det nettet maskinen er koplet til. Neste nett kan bare transportere pakker med maksimal lengde på 1000 bytes. Hvordan vil fragmenterings/reassemblerings parameterne se ut for hvert av fragmentene? Vi må fragmentere en melding når den skal sendes ut på pakkeswitchet nett fordi, det er hele prinsippet at pakkene skal være av en viss størrelse. På den måten er det mulig å oppnå ressursfordeling av linja. En annen viktig grunn til fragmentering er at forskjellige nett har forskjellig kapasitet. Ethernet har f.eks. maks. pakkestørrelse på 1500 bytes. MTU = Maximum Transmission Unit beskriver hva som er maks. pakkestørrelse. Fragmenteringsparameterne vil se ut som i figur 1. For enkelhets skyld er ikke størrelsen på headeren regnet med, men vi har latt pakkestørrelsen være lik data størrelsen. Forklaring til figur 1: Alle fragmenter fra det originale datagrammet vil ha samme identifikator i Ident feltet i headeren. Dette feltet er unikt blant alle datagrammer. I dette eksempelet vil pakken på 4000bytes måtte splittes opp i 4 pakker av 1000 bytes for å komme videre. Når den splitter det opprinnelige datagrammet må den sette en offsett verdi som viser hvor mye av det opprinnelige datagrammet den har sendt over. I tillegg bruker den et M bit, som settes til enten 1 eller 0. Alle fragmenter skal ha M = 1 bortsett fra det som inneholder den siste delen av det opprinnelige datagrammet, der skal det stå M = 0 som viser at det er siste fragment. Fragmentene blir ikke satt sammen igjen før de kommer frem til mottaker. b) Hvor vil det være naturlig å reassemblere fragmentene dersom vi har flere alternativer? Man kunne kanskje tenke seg at det var naturlig å reassemblere fragmentene i neste nett pakken er innom som har en større MTU enn nettet der pakken kom fra, men i praksis blir ikke pakkene reassemblert før de når mottaker, for å spare ressurser underveis. c) Dersom et fragment blir ødelagt av støy, vil vi få et "hull" i den reassemblerte pakken. Hvordan takler vi denne situasjonen? Kommer ikke alle fragmentene frem, gir mottaker opp å reassemblere. Mottaker prøver ikke å rette feil, bare glemmer alle pakkende tilhørende det ødelagte/mistede fragmentet.
Opprinnelig datagram: Fragmenter: Figur 1; Fragmenterte pakker 2. Framsending. Skisser alle de operasjoner en ruter må gjøre med en pakke fra det tidspunkt den mottar pakken på et grensesnitt til den sender den ut på et nytt. Beskriv også evt feilsituasjoner som kan oppstå. Først sjekker ruteren nettverksnummeret på mottakeradressen mot nettverksnummeret på alle sine nettverksadaptere. Hvis et av dem stemmer blir pakken sendt ut på den riktige linken. Hvis ikke, sjekker den om nettverksnummeret finnes i forwardingtabellen. Hvis så, sendes til den ruteren som står oppført der. Hvis den har en default ruter sendes pakken dit. Hvis ikke sendes det en ICMP-melding tilbake. I alle tilfelle må pakken fragmenteres hvis utlinken ikke støtter store nok pakker, og hvis pakken ikke kan fragmenteres sendes det en ICMP-melding tilbake.
3. IP-protokollen. a) En IP adresse er på 32 bit og det eksisterer således 2*32 = 4.3 millarder unike adresser innenfor Internett. Det tallet er i størelsesorden jordens befolkning, og helt sikkert mye større enn tallet på alle datamaskiner på kloden. Likevel snakker man om at adressereommet til Internet er for lite. Hvordan forklarer du dette? IP adressene er hierarkisk bygget opp, med en nettverks del og en verts (maskin) del. Videre er adressene delt opp i klasse A, B og C nett. A = 7 bit nettverksdel B = 14 bit nettverks del C = 21 bit nettverks del Fordi vi i utgangspunktet må tildele ett nettverksnummer pr potensielle nettverk, vil dette bruke opp alle adressene svært raskt. Vi vil få en rekke nett som ikke bruker alle verts adressene sine. (Vi kan f.eks bare ha 16.000 B-nett, og er det 256 maskiner pr B-nett blir det ca 4 mill maskiner, ikke 4 billioner som det er adresser til. Dette gir en adresse utnyttelse på 256/65535=0.39). Den dårlige utnyttelsen oppstår fordi vi blir tvunget til å gi ut nettverks adresser i faste størrelser, som er svært forskjellige. b) Hva er CIDR og hvilke problemer løser det? CIDR (Classless Internet Domain Routing) - Klasseløs ruting, er en metode for å aggregere ruter som behandles som en blokk med kontinuerlige klasse C IP adresser som ett nettverk. CIDR prøver å løse to skalerbarhets problemer til Internet: 1. At forwarding tabellene blir for store. 2. At adresserommet blir brukt opp lenge før vi har 4 billioner maskiner på Internett. CIDR prøver å balansere ønsket om å minimalisere antall ruter som en ruter må kjenne til mot effektiv adresse utnyttelse. CIDR aggregerer ruter. Dvs en enkelt entry i forwarding tabellen forteller oss hvordan vi kan nå mange nettverk. For at dette skal fungere må vi dele ut blokker av klasse C adresser som deler prefix. Vi lager på en måte nettverksnummer av varierende størrelser. c) Forklar hva ICMP er og hva slags oppgaver ICMP skal ta hånd om. Nevn eksempel på minst en "applikasjon" som bruker funksjonalitet i ICMP. ICMP (Internet Control Message Protocol) brukes av rutere for å rapportere uventede hendelser og til å teste nettet. ICMP definerer tretten meldinger, og hver ICMP-melding blir innkapslet i en IP-pakke. De viktigste typene: Destination unreachable betyr at at en ruter ikke kunne nå mottakeren. Dette betyr typisk at den ikke kan lokalisere mottakeren eller at en pakke med DF satt ikke kunne leveres fordi den må gjennom et nettverk som bare takler små pakker. (DF er Don t fragment bitet i IP-headeren)
Time exceeded betyr at TTL ble null. Typisk fordi en pakke går i løkke, det er enorm metning eller TTL er satt for lavt i utgangspunktet. Parameter problem betyr at det er en ulovlig verdi i et headerfelt. Typisk feil i programvaren til avsender eller en ruter på veien. Source quench betyr at ruteren ønsker av avsenderen skal bremse utsendingshastigheten. Brukes ikke ofte i våre dager. Redirect betyr at ruteren mener at pakken har blitt rutet feil. Echo request er et spørsmål om en maskin er i live. Echo reply Oh ja, jeg lever! Timestamp request, timestamp reply; Som echo, men med informasjon om transmisjonstid. I tillegg er det flere andre typer. Se RFC 792 for detaljer. ping og traceroute benytter ICMP. d) Gi en kort forklaring på hensikten til de forskjellige feltene i en IPv4 header. Er noen av disse etter din mening overflødige/mangler det noen? Figur 2; IP-hodet
Figur 2 viser IPv4-hode. Version inneholder versjonen av protokollen (typisk 4 eller 6). Dette gjør det mulig å bruke lang tid med transisjonen fra IPv4 til IPv6. Siden hodet kan ha variabel lengde viser HLength hvor mange ord (32-bit) hodet er på. Minimum er 5 og maksimum er 15. Type of service angir hvilken tjenestetype pakken ønsker. I praksis vil de fleste nåværende rutere ignorere denne. Total length angir lengden i bytes på hele pakken (hode og data), maksverdi 65535. Identication brukes slik at mottakeren skal vite hvilket datagram et fragment tilhører. DF sier at pakken ikke kan fragmenteres. MF angir om det er flere etterfølgende fragmenter i datagrammet. Fragment offset sier hvor langt inn i datagrammet dette fragmentet skal stå. TTL er en teller. Når den kommer ned på null blir pakken kastet. TTL blir typisk dekrementert ved hvert hopp, selv om det egentlig er meningen at den skal dekrementeres flere ganger hvis den ligger lenge i kø. Protocol sier hvilken protokoll pakken har (f.eks UDP eller TCP). De mulige protokollene (og deres nummere) finnes i RFC 1700. Header checksum verifiserer bare hodet. Adressene er vanlige IP-adresser. Det er fem offisielle opsjoner (Security, Strict source routing, Loose source routing, Record route og Timestamp). Ingen av disse brukes i stor grad. Oveflødigheter og mangler blir litt opp til hva man ønsker seg. Jamnfør f.eks med IPv6 og se hva som har blitt tatt bort og lagt til. e) Hva er DHCP og hva brukes protokollen til? Dynamic Host Configuration Protocol. Brukes til å tildele IP-adresser til maskiner uten manuell inngripen.