NAT B208 17. December 2003 Aalborg Universitet

Relaterede dokumenter
Infrastruktur i hjemmet og begreber

M A D S L A R S E N, A S G E R B A L L E G A A R D & J O N A S K R O N B O R G R O S K I L D E T E K N I S K E G Y M N A S I U M.

Datapakke. Data. Afsender. Modtager

NETVÆRKSKURSUS Oktober November jmt

Internet Protokollen. - IP er arbejdshesten på næsten alle netværk! Netteknik 1

Basal TCP/IP fejlfinding

TCP & UDP. - de transportansvarlige på lag 4. Netteknik 1

Internet Protocol (IP)

Hub & Lag 2 Switch. - Ethernet-enhederne fra lag 2! Netteknik 1

VLAN - Virtual Local Area Network

Route-tabellen. Routertabel R2. Routertabel R3. Routertabel R1. Routertabel R4 NETVÆRK SENDES TIL

Introduktion til computernetværk

Internettet Netværk. Hvad er netværk?

VLAN. - mange logiske net på ét fysisk! Netteknik 1

Netværkslaget Rutning og sammenkobling

Routeren. - og lag 3 switchen! Netteknik 1

PNI/GRN - 1. kursusgang

VLAN. - mange logiske net på ét fysisk! Netteknik 1

ARP og ICMP. - service protokoller, som vi ikke kan undvære! Netteknik 1

OMKnet trådløs. Overblik. Gode ting ved trådløs. Dårlige ting ved trådløs 3/12/2012

Her kan du læse om OSI modellen, og de 7 forskellige lag. Der er en mindre detaljeret beskrivelse udfra hvert lag.

IPv6 sameksistens med IPv4. af Laurent Flindt Muller & Jakob Pedersen

VLAN, Trunk & VTP. VLAN: Virtual Local Area Network

Workshops om netværk

Gode råd til netbankbrugere - sikring af en typisk hjemme-pc med adgang til netbank

Ethernet HUB s og Switche

Introduktion til BGP 4 Border Gateway Protocol version 4

IP routing. - flytter pakkerne effektivt på lag 3! Netteknik 1

IP routing. Netteknik 1. Routere er de enheder på netværket som kan flytte IP datapakker mellem forskellige logiske netværk (IP net) Router

Netværksmålinger. - en introduktion! Netteknik. TCP - IP - Ethernet

Forår Firewalls

Datanet Obligatorisk opgave 3: IP og ICMP. René Hardi Hansen Michael Falcke Nilou Anders Bjerg Pedersen Hold september 2007

Bilag 1a. Produktspecifikation for Adgang BSA Kabel-tv net

IP version 6. Kapitel 3: IPv6 in Depth Baseret på bogen: Cisco Self-study: Implementing Cisco IPv6 Networks Henrik Thomsen V1.0.

IT og økonomi. Lektionens emner. Hvorfor netværk? Lektion: N: Netværk

Datanet Obligatorisk opgave 2: TCP. René Hansen Michael Nilou Anders Bjerg Pedersen Hold september 2007

Hvis du ønsker at tilgå Internet trådløst, skal du selv anskaffe dette udstyr. Det kaldes ofte et access point eller en trådløs router.!

IP adresser. En ip adresse består af en 32bit adresse (dec.) En oktet består af 8 bit. Eller en Byte.

IP version 6. Kapitel 1:Introduktion til IPv6. Ikke flere IP adresser?

VoIP. Voice over IP & IP-Telefoni. Lars Christensen & René Truelsen, Dec. 2004

IT Support Guide. Opsætning af netværksinformationer i printere

Computer netværk og TCP/IP protokoller. dcomnet 1

Ethernets placering i OSI modellen

Kaminsky DNS exploit

Netværkstopologi. Netteknik 1. Netteknik 1 (AMU 44947) Mercantec Den logiske og den fysiske! Netværkstopologi

Netværksmålinger. - en introduktion! Netteknik

Grundlæggende hardware- & netværkskendskab

Indholdsfortegnelse: Firewall Erhvervsakademi Midtjylland

QoS. - prioritering af pakketransporten! Netteknik 1

Sydfyns Intranet A/S Fåborgvej 64 Svendborg 5700 fax tlf web

Statens strategi for overgang til IPv6

beskrivelse af netværket på NOVI

Computer netværk og TCP/IP protokoller. dcomnet 1

Netteknik 1. AMU kursus nr Netteknik 1 (AMU 44947) - anvendelse af teknologier og begreber. Formålet med kursus

Application Note: AN-Z05

Introduktion til Quality of Service

Netværkstopologi. - dvs. hvordan ser netværket ud? Netteknik 1

Sydfyns Intranet A/S Fåborgvej Svendborg cvr Tlf Fax

Synkron kommunikation

«Lejekontrakt_Selskab» BRUGERVEJLEDNING OPSÆTNING AF INTERNET

Indhold Kapitel 1 Computernetværk og internettet

Network. Grundlæggende netværk. Region Syd Grundlæggende netværk

Netteknik 1 Byg et netværk med SO-HO router Øvelse

Ethernet & OSI modellen

Netværk, WAN teknik. Introduktion til VPN. Afdeling A Odense. WAN kredsløb. Hovedkontor Viborg. Afdeling B Roskilde

Netværkstopologi. - Den logiske og den fysiske! Netteknik 1

Grundopsætning af router.

SIP. Session Initiation Protocol. TDC IP telefoni Scale


I denne øvelse vil du få vist hvordan opsætningen af netværket foregår. Målet er at du selv kan konfigurere en IP adresse på din lokal maskine.

Netteknik 1. AMU kursus nr Netværk grundlæggende ( AMU Netteknik 1 ) - anvendelse af teknologier og begreber. Formålet med kursus

Revision af firewall. Jesper B. S. Christensen. Sikkerhed og Revision 6/7 September 2018

WAN s. - langdistance netværk! Netteknik 1

OSI modellen TCP/IP protokol arkitekturen IP adresser. DHCP DNS Fysiske netværks enheder. Operativsystemer og netværk Lektion 4

SIP. Session Initiation Protocol TDC IP telefoni Scale. SIP design mål

Multiguide til C903IP

Guide til din computer

Bilag 1c. Infrastruktur & Kapacitet

Et netværk bliver til

Ethernet teknologi. - hvordan fungerer det? Netteknik 1

Bilag 1c. Infrastruktur & Kapacitet

Teknisk beskrivelse til TDC Managed Firewall

Installationsguide Svendborg Erhvervsskole kollegie A.P. Møller kollegie

Quality of Service. - en introduktion! IP telefoni kursus

Managed LAN: Produktspecifikationer Version: 2.1

Projektopgave Operativsystemer I

Network. Grundlæggende netværk. Region Syd Grundlæggende netværk

Computer Networks Specielt om Infrastrukturer og Teknologi

VLAN. VLAN og Trunks. Region Syd Grundlæggende netværk

IP Telefoni. Modul 3

Sikker netværkskommunikation

Bilag 1b Infrastruktur & Kapacitet

Netteknik 1. - anvendelse af teknologier og begreber. AMU kursus nr

Industriel Ethernet, profinet

Bredbånd. Vejledning til opsætning af bredbåndsmodem Pace V5500

Pakkens indhold. Ordliste. Powerline Adapter

Ruko SmartAir. Updater installation

SIG FARVEL TIL DÅRLIGT WIFI.

Kom godt i gang DRG 703 med mediekonverter Fordelerboks

Transkript:

NAT B208 17. December 2003 Aalborg Universitet

Det Teknisk-Naturvidenskabelige Basisår Aalborg Universitet Basisuddannelsen TITEL: ROUTING PROJEKTPERIODE: P1, 6. Oktober 17. December, 2003 PROJEKT GRUPPE: NAT B208 GRUPPEMEDLEMMER: Johnny Jakobsen Ole Toft Jensen Martin Toft Thavarajah Sabanathan Kenneth Blanner Holleufer Rune Mosbæk VEJLEDERE: Michael Rune Jensen Lars Bo Henriksen ANTAL KOPIER: 14 RAPPORT SIDEANTAL: 67 APPENDIKS SIDEANTAL: 5 SYNOPSIS: Dette projekt omhandler routing i netværk, altså hvordan datapakker routes i computernetværk. For at finde ud af, hvordan routing fungerer, samt hvilke problemer, der kan opstå i forbindelse med routing, er der indledningsvist en gennemgang af de vigtigste begreber og den teoretiske viden bag netværk og routing. Derefter tages der fat på grafteori for at give et godt indblik i de metoder og algoritmer, der bruges til modellering af netværk. Den forudgående teori danner hermed basis for at undersøge de enkelte routing-algoritmer. Det undersøges, hvordan og hvorfor, de virker som de gør, hvorefter der forklares om de protokoller, de er implementeret i. Efter at have opnået kendskab til en mængde routing-algoritmer, kommer vi ind på tidskompleksitet og forklarer kort om algoritmers effektivitet algoritmesammenligning. Projektet afsluttes med en implementation af Dijkstras shortest-path algoritme i SML. TOTAL SIDEANTAL: 74 UNDERSKRIFTER:

Indhold 1 Indledning 3 1.1 Problemanalyse............................... 3 1.2 Problemafgrænsning............................ 7 1.3 Problemformulering............................. 8 2 Netværksopbygning 10 2.1 Anvendelse af netværk i praksis...................... 10 2.2 Protokoller.................................. 12 2.2.1 IP-adresser............................. 12 2.2.2 TCP/IP-protokollen........................ 16 2.2.3 UDP - User Datagram Protokol.................. 18 2.3 OSI-modellen................................ 19 2.3.1 Det fysiske lag............................ 21 2.3.2 Datalinklaget............................ 22 2.3.3 Netværkslaget............................ 25 2.3.4 Transportlaget........................... 32 2.3.5 Sessionslaget............................ 33 2.3.6 Præsentationslaget......................... 33 2.3.7 Applikationslaget.......................... 34 3 Modellering af et netværk 36 3.1 Generel notation til grafteori........................ 37 3.2 Step-by-step eksempel af Kruskals minimum udspændte træ algoritme. 40 3.3 Dijkstras algoritme............................. 42 4 Routing 44 4.1 Routing-algoritmer............................. 44 4.1.1 Shortest-path routing........................ 44 4.1.2 Flooding............................... 44 1

4.1.3 Selective flooding.......................... 45 4.1.4 Distance-vector routing....................... 45 4.1.5 Link-state routing.......................... 48 4.1.6 Hierarkisk Routing......................... 51 4.1.7 Broadcast routing.......................... 52 4.1.8 Multicast routing.......................... 52 4.2 Routing-protokoller............................. 54 4.2.1 RIP - Router Information Protocol................ 54 4.2.2 OSPF - Open Shortest Path First................. 55 4.2.3 BGP - The Exterior Gateway Routing Protocol......... 55 5 Implementering af Dijkstras routing algoritme i SML 58 5.1 Step-by-step forklaring af vores implementation............. 59 5.2 Programstruktur.............................. 62 5.3 Test/debugging............................... 64 6 Konklusion 68 A SML kildekode til implementation af dijkstras routing algoritme 69 2

1 Indledning Da internettet og computernetværk har udbredt sig i høj grad gennem de sidste årtier, er der stillet en masse krav til, og opstået en kæmpe efterspørgsel på, hvordan man løser problemer vedrørende hastighed og stabilitet på netværk. Firmaer er blevet afhængige af store netværk, der skal sende oplysninger til og fra de forskellige afdelinger og til samarbejdspartnere. Flere og flere private brugere benytter sig af internettes mange muligheder. Film, musik og programmel er nogle af de mest kendte ting, brugere henter ned. Online computerspil er for alvor kommet frem, og vil i stigende grad blive mere og mere udbredt. For nyligt blev der afholdt verdensmesterskab i spillet Counter-strike[26], hvor man kunne se gigantfirmaer som Intel, Nvidia og Logitech blandt mange på sponsorlisten [27]. Stabile linier og lave responstider er et must, da spillet fungerer i realtime og med hold af spillere. Ovenstående afsnit har ledt os ind på vores initierende problem, som lyder: Hvordan sikrer man sig optimal transmission af data fra computer A til computer B igennem et netværk af computere? Routing i netværk er i dag en udbredt metode til at stabilisere og effektivisere netværkstrafik. I nedenstående afsnit vil vi belyse de områder, routing omfatter, og til sidst foretage en afgrænsning ned til de emner, vi vil behandle i vores projekt. 1.1 Problemanalyse Det er interessant, hvordan den optimale løsning på et problem findes - hvis den i det hele taget kan findes. I dette tilfælde med routing, hvor optimal transmission af data ønskes, kan vi forsøge at sætte en mere præcis definition på, hvad det optimale indebærer. Transmissionshastigheden er en meget vigtig faktor, og det ses f.eks., at de fleste internetudbydere sælger forbindelser til internettet, hvis priser bl.a. er afhængig af den ønskede hastighed. En optimal datatransmission kræver derudover, at transmissionen foregår relativt billigt, hvilket afhænger af det anvendte udstyr. For igen at drage et eksempel møntet på internetudbydere, så må en internetforbindelses pris også afhænge af den givne internetudbyders forudgående investering i bl.a. elektronisk udstyr til at udføre den egentlige service. Endnu mangler vi stabilitet for tilnærmelsesvis at have defineret det optimale. Især erhvervslivet kræver stabile netværk, hvor man med sikkerhed kan vide, at transmitteret data når den rette destination uden at være blevet ændret undervejs. Stabilitet vurderes også på baggrund af svartider mellem tilsluttede computere, og det er oftest her, forbrugere køber katten i sækken, når de vil have en internetopkobling. Eksempelvis marketing af bredbåndsforbindelser fokuserer mest på den teoretiske transmissionshastighed frem for forsinkelsen på de transmitterede datapakker, hvor kvaliteten af f.eks. spil og internettelefoni (Voice-over-IP), der ikke transmitterer store datamængder, afhænger meget af denne forsinkelse. Administrationsmæssigt fungerer ekstern adgang til servere også mest optimalt, hvis svartiden er lav. [1] 3

Den ultimative løsning på et problem kan være svær at finde og til tider uopnåelig. Der er visse ting, som det er mere smart at fokusere på end andre, når vi vil sikre optimal transmission af data igennem et computernetværk. Det er indtægten fra kunderne, der holder en internetudbyder kørende, så brugernes oplevelse af den udbudte service skal være positiv. Det ville være nærliggende blot at forsyne det danske land med superhurtige forbindelser, f.eks. i form af lyslederkabler, og udelukkende anvende kvalitetsudstyr, men her sætter økonomien en begrænsning, idet der er grænser for, hvor meget en gennemsnitsdansker vil betale for servicen. I forbindelse med opsætning, drift og brug af et netværk, er der tilknyttet visse interessenter, der har forskellige forventninger og ønsker. Det er mest aktuelt at starte med brugeren, der generelt ikke har teknisk indsigt og derfor ønsker f.eks. muligheder og ydeevne af netværket, som ikke altid er muligt, og der må derfor indgås kompromis. Et ukorrekt postulat ville være at påstå, at brugere kun forlanger, at en given service virker - dermed er det jo ikke præcist defineret, hvordan servicen forventes at virke. Brugeren kan godt have nogle krav, f.eks. at bredbåndslinjen til hjemmet er nem at bruge, transmitterer med den lovede hastighed, har en forholdsvis lav svartid og ikke er nede for ofte. I et vist omfang har internetudbyderen samme interesser som brugeren, da internetudbyderens eksistensgrundlag, som tidligere nævnt, er tilfredse brugere. Netværket skal fungere - og dermed være hurtigt og stabilt - men det er også væsentligt, at netværksudstyret er nemt at servicere, har gode muligheder for løbende opgradering og alligevel ikke koster for meget. Lige præcis internetudbyderen er en elementær interessent, når man har at gøre med routing i netværk, idet denne aktør formentlig er den største forbruger af netværksudstyr til routing. Det tekniske problem, internetudbydere får løst af avanceret netværksudstyr, er hovedsageligt hastighedsbegrænsningen af brugereres internetforbindelser til netop de hastigheder, der betales for. De fleste internetudbydere er forbundet til DIX en (Danish Internet exchange point), der er samlingspunktet for al dansk internetstruktur og forbindelsen til udlandet. Forbindelsesprisen til DIX en takseres bl.a. efter trafikforbrug, så derfor har mange internetudbydere direkte forbindelser mellem hinanden - se figur 1. Udover fastsættelsen af brugernes forbindelseshastigheder kontrollerer netværksudstyr i form af routere også de kraftige forbindelser mellem internetudbyderne, DIX en og udlandet samt internetudbydernes store, interne netværk. [2, 3] 4

Figur 1: Illustration af forbindelserne mellem internetudbydere, DIX en og udlandet Netop fordi routere spiller en så afgørende rolle i internettets infrastruktur, er optimale routere en forudsætning for at opnå optimal transmission af data. Optimal datatransmission er mest aktuelt på internettet, fordi det er det største eksisterende netværk og dækker stort set hele jordens overflade. Internettets udbredelse kan belyses med f.eks. statistik - i løbet af 2002 steg antallet af xdsl-forbindelser (Digital Subscriber Line) verden over fra 18,8 til 36,3 million, hvilket tydeligt viser, at rigtig mange mennesker er kommet i kontakt med nettet. [4] Netværksudstyr kan kun udføre en given opgave optimalt, hvis de anvendte teknologier og algoritmer fungerer optimalt - og her introduceres producenterne af netværksudstyret. For at blive ved med at eksistere, skal producenterne hele tiden tænke i nye baner og opfinde bedre og bedre udstyr, så en situation, hvor markedet er mættet, hindres. Producenterne er den store drivkraft, der til evig tid vil presse transmissionshastighederne i vejret, selv om markedet ikke altid kan udnytte det. Basis for at drive et netværk optimalt fås gennem holdbare, optimerede matematiske algoritmer, hvilket f.eks. ses på routing, hvor den hurtigste vej gennem et netværk skal kalkuleres, og på sikringen af dataintegritet, hvor pålidelige cheksumsalgoritmer er påkrævede. [5] Den verdensomspændende producent af netværksudstyr, Cisco Systems, er det absolut 5

førende selskab indenfor samme. Eksempelvis består størstedelen af TDC s netværk af udstyr fra Cisco. Cisco er også pioneer indenfor den nyeste 10 Gbps netværksteknologi og har leveret højhastighedsnet til f.eks. SUNET (Swedish University Computer Network). [6, 7, 8] De tekniske udfordringer, producenter af netværksudstyr, i stigende grad udsættes for, er at kunne udføre avanceret routing, der kan styre båndbredden og route med forskellig prioritet. Historisk set, havde internetudbyderne for blot nogle år siden ikke behov for at begrænse brugerens båndbredde til bestemte datamængder pr. tidsendhed. Almindelige mennesker havde kun modem- eller ISDN-opkoblinger, hvis hastighed automatisk begrænsedes af udstyrets formåen. I dag sidder mange i stedet med bredbåndsforbindelser, der ikke er fysisk begrænsede til de 256 kbit/s, 512 kbit/s m.f., som der betales månedligt abonnement for. Opgaven med at låse brugerens hastighed fast er dermed overgivet til internetudbyderens routerudstyr. Prioriteret routing handler om at route bestemte former for trafik før andet, så f.eks. realtidsapplikationer som førnævnte spil og internettelefoni slipper hurtigere igennem end f.eks. langvarige dowloads - en mekanisme, mange virksomheder og institutioner ser fordele ved. Netop ved at implementere køteori i routere er denne kontrol af hastighed og prioriteret routing mulig. [9, 10] Den sidste, men ikke mindre betydningsfulde, interessent er softwareudviklerne. Man kan tale om tre typer softwareudviklere, dem der laver firmware (programmel) til netværksudstyr, dem der udvikler operativsystemer, og dem der blot udvikler programmer til operativsystemer. Der findes også softwareudviklere, som både udvikler deres egne operativsystemer og programmer dertil. Vi regner med, at producenterne af netværksudstyr selv har afdelelinger til udvikling af firmware, så vi fokuserer her på de andre typer. Udviklere af operativsystemer ønsker standardiseringer mht. anvendte protokoller til at kommunikere over netværk, så deres systemer kan samarbejde med andre systemer. Derudover er det af stor betydning for overlevelsen af softwareudviklerne, at producenterne af netværksudstyr udvikler drivere til netop deres operativsystemer. Ligeledes er operativsystemernes udbredelse afhængig af mængden af software, der findes til dem - f.eks. udvikles der næsten udelukkende spil til Windows, da spilproducenterne udmærket ved, at de fleste af deres potentielle kunder bruger Windows som operativsystem. Microsoft er en af de helt store spillere pga. den store udbredelse af deres operativsystemer, men der findes også forskellige andre systemer, hvoraf mange er baseret på Unix. Nogle af Unix-systemerne er udviklet af store firmaer og koster penge, mens andre er resultatet af mange frivillige menneskers arbejdskraft og er derfor gratis. Optimal transmission af data kan trues af, at crackere udnytter forskellige protokollers usikre opbygning til enten at få et netværk til at gå ned, sænke transmissionshastigheden på det eller opsnappe andre brugeres data. Crackere er personer med stor teknisk viden om netværk, der udnytter denne viden på en kriminel og forstyrrende måde, hvorimod den korrekte beskrivelse af en hacker er en person, der også har stor teknisk viden om netværk, men kun udnytter denne til at bryde ind i computersystemer for selv at egne sig mere teknisk viden uden at ødelægge noget på de hackede systemer. 6

Hacking er også ulovligt, da der foretages uautoriserede indbrud og indbrudsforsøg på computersystemer, og der foregår en stor debat i samfundet om, hvorvidt hackere er gavnlige eller ej. Oprindeligt blev mange protokoller ikke designet optimalt med hensyn til sikkerhed, da problemet med hacking og cracking ikke var nær så udbredt før tiden, som det er i dag. [15] 1.2 Problemafgrænsning Vi har ud fra interesse og tid afgrænset emnet routing til de viste emner på figur 2. For at danne grundlag for routing, er det nødvendigt at kende til generel netværksteori. Vi vil komme ind på opbygningen af netværk, men kun i mindre omfang, da det ikke er essentielt for løsning af det initierende problem, men blot skal medvirke til baggrundsviden. Mere væsentlige er protokoller, som bruges til kommunikation på netværk, da de er afgørende for et netværks virkemåde. Vi ønsker at give et eksempel på en meget anvendt protokol, og TCP/IP-protokollen (Transport Control Protocol/Internet Protocol) er da nærliggende, idet den er samtidig er dominerende på internettet. Da vi har en beskrivelse af en specifik protokol, vil vi også komme ind på protokolstakke og modeller, hvor vi f.eks. gennemgår OSI-modellen, og anvender denne til at komme omkring vigtige emner inden for netværk. Det er nødvendigt at kunne beskrive et netværk på en matematisk korrekt måde i et projekt om routing, så derfor vil vi medtage grafteori, som kan bruges til at modellere et netværk. Grafteori definerer grafer og deres opbygning af mindre elementer, som f.eks. knuder og kanter. Vi vil komme ind på alle de definitioner, der er nødvendige, for at grafteori kan bruges til netværksmodellering. Routing-algoritmer er det mest centrale i et projekt om routing, og vi vil gennemgå nogle af de mest anvendte routing-protokoller og -algoritmer i nutidens routere. Gennemgangen vil være dybdegående og komme ind på alle grene af de implicerede teknikker, igen fordi emnet er meget vigtigt for projektet. Som eksempel vil vi implementere Dijkstras algoritme, der finder den korteste vej i en graf, fordi den bruges i nogle af nutidens routing-algoritmer, i Standard ML (SML). Vi vil gerne være i stand til at afgøre, hvorvidt en algoritme er effektiv eller ej, eller hvilken af flere algoritmer, der er mest effektiv, og derfor medtager vi tidskompleksitet. Tidskompleksitet er et stort emne, hvoraf vi kun indfører de overordnede termer og notationer. Algoritmer kan også sammenlignes ved at analysere deres pladskompleksitet, altså deres forbrug af hukommelse, men dette har vi valgt ikke at tage med. 7

Figur 2: Afgrænsning af vores projekt Optimal transmission af data kan skades af angreb på bl.a. de anvendte protokoller, men en beskrivelse af disse angrebsmetoder og beskyttelsesteknikker ville kunne præstere et helt projekt om sikkerhed, så vi har valgt helt at se bort fra dette. 1.3 Problemformulering Vi er ud fra overstående problemanalyse og afgrænsning kommet frem til, at vil beskæftige os med: Hvordan routes pakker i et netværk?, Hvilke routing-algoritmer findes der?, Hvilke fejl kan opstå i forbindelse med routing?, Hvilke funktionelle krav stilles der til en routing-protokol?, Hvordan findes den mest optimale algoritme, med hensyn til afviklingstid, udfra en algoritmesammenligning? Og Hvordan kan Dijkstras algoritme implementeres i SML? I introduktion til emnet routing er vi kommet med et initierende problem, analyserede problemet og foretaget en afgrænsning af det. Vi har dermed fået bestemt projektets omfang, og endt ud med en problemformulering i form af en række spørgsmål. I næste afsnit om netværksteori vil vi dykke ned i opbygningen af netværk, protokollen TCP/IP og alle lagene i OSI-modellen. Routing foregår på netværk, så derfor er netværksopbygning grundlæggende viden for at kunne læse resten af rapporten. Viden 8

om, hvad protokoller er og hvilken rolle, de spiller, er også grundlæggende viden, der skal give basis for at forstå mange terminologier senere i rapporten. Vi vil føre læseren ind i protokollernes verden gennem en beskrivelse af TCP/IP-protokollen, fordi den er mest udbredt og anvendes bl.a. på internettet, hvor routing bruges utrolig meget. OSImodellen er en, for folk i databranchen, kendt referencemodel, hvis lag der tit refereres til, når man skal angive, hvilket teknisk abstraktionsniveau, et stykke hardware virker på. Med en gennemgang af OSI-modellen bliver læseren bekendt med, hvordan data kommer fra brugerens indtastning i et computerprogram, gennem operativsystemet, pakket ind på forskellig vis, for til sidst at ende hos hardwaren, hvor dataene sendes ud på netværket. Netværkslaget i modellen er mest aktuel for emnet routing og er derfor vægtet højest, mens gennemgangen af de andre lag mest tjener til at sætte tingene i sammenhæng - en undtagelse er nok datalinklaget, der ligger tæt op af netværkslaget, og kommer med meget nødvendig basisviden. Afsnit 3 modellering af et netværk handler om, hvordan netværk kan beskrives vha. grafer, og grafer er opbygget. Her tænkes ikke på almindelige grafer, der er afbildninger af matematiske funktioner, men på grafer med knuder og kanter, der i vores tilfælde symboliserer hhv. routere og forbindelser mellem disse. Afsnittet er væsentligt, idet der i forbindelse med routing-algoritmer i afsnit 4 tages udgangspunkt i grundlæggende viden om grafer. Netværk kan med fordel betragtes som grafer, når man gennem matematikken ønsker at optimere visse rutiner, og der i afsnit 3 forsøgt medtaget alle relevante, matematiske definitioner på de implicerede termer. Hvor afsnit 2 og 3 har introduceret læseren til grundlæggende teori og nødvendig basisviden, handler afsnit 4 og 5 om kernen i emnet, nemlig routing-algoritmerne og -protokollerne. Her anvendes den tilegnede viden fra de forrige afsnit til at gennemgå de mest udbredte teknikker til routing og dertilhørende problematikker. Teknikkerne er mange, og de er endda delt op i flere kategorier, alt efter hvilke grundlæggende ideer, de er baseret på. Routing-algoritmerne gennemgås hver for sig og de problemer, der melder sig ved brugen af dem, har vi søgt at finde løsninger på. Routing-protokollerne indeholder den funktionalitet, der kører i routere, og har hver især inkluderet de forskellige typer routing-algoritmer til at varetage de matematiske operationer på netværket, set som en graf. Efter at have hørt været rundt i de forskellige algoritmer og protokoller, er det meget aktuelt at kunne sammenligne deres effektivitet. I afsnit 5, omhandlende tidskompleksitet, indføres tidskompleksitetsanalysen af algoritmer, så det er muligt at undersøge, hvilken af de to algoritmer, der bruger mest tid på en opgave. I afsnit 6 beskrives implementeringen af Dijkstras algoritme i SML. I forbindelse med P1-projektperioden har vi fået undervisning i SML og fandt det smart at eksemplificere implementationen af en algoritme i et funktionelt programmeringssprog. Dijkstras algoritme har ikke direkte noget at gøre med netværk, men den kan finde de korteste veje mellem knuder i en graf. Kildekoden til vores program findes i bilaget. 9

2 Netværksopbygning Et computernetværk består af et x antal computere med forbindelse mellem hinanden. Forbindelsen mellem dem behøves ikke nødvendigvis at være ved hjælp af kabler, men kan f.eks. også være ved hjælp af en trådløs forbindelse. Computernetværk kan forekomme i mange størrelser, her kunne være tale om små hjemmenetværk, hvor man sjældent ser mere end 10 computere forbundet, større firmaer og institutters netværk, hvor man kan finde flere hundrede maskiner eller der kunne være tale om internettet, som er et netværk sammenkædet af utallige mindre netværk. 2.1 Anvendelse af netværk i praksis I alle større netværk vil der indimellem blive tilkoblet nye computere og ligeledes frakoblet nogle. Her vil det blive svært at holde styr på hvordan hele netværket er forbundet, specielt hvis der tænkes på et sammenkædet netværk på størrelse med internettet. Heldigvis er det heller ikke nødvendigt at have en oversigt for hele netværket, for at være i stand til at sende data mellem to computere forbundet dertil. Der bliver i følgende eksempel taget udgangspunkt i en bruger, der skal besøge en hjemmeside. Herudfra forklares den grundlægende opbygningen af Internettet, samt hvordan det er muligt at lede mængder af data rundt på et netværk, så de når til en valgt destination. Op til flere computere tilkoblet til Internettet kører i døgndrift fungerende som servere. De kan have mange forskellige formål, nogle sørger for at videresende elektronisk post, mens andre f.eks. bruges til at sende hjemmesider af sted ved efterspørgsel fra en bruger. Vi kan se på situationen, hvor en bruger vil besøge siden www.gnu.org. Her vil en DNS (Domain Name Server, fortolker navne til IP-adresser) blive kontaktet med formål at finde en IP-adresse (Internet Protocol, en slags tildelt numerisk repræsentation af en computers adresse på et netværk) ud fra domain navnet. Herefter vil der ud fra den fundne IP-addresse kunne bestemmes i hvilken retning ens datapakker skal sendes. Den sendte mængde data indeholder en http-get-efterspørgsel med formål at få tilbagesendt en kopi af hjemmesiden på www.gnu.org. Inden efterspørgselen når HTTP-serveren (Hyper Text Transfer Protocol) bliver datapakkerne sendt gennem en masse knudepunkter (også kaldet nodes) i netværket. Alle disse knudepunkter kan evt. bestå af hubbe, switche, routere og computere. Der er ofte flere ruter at tage for at nå ens destination, hvordan disse ruter bliver fastlagt, og ligeledes hvordan den mest optimale af flere mulige bliver fundet, er bestemt af nogle implementerede routing-algoritmer. Hvert enkelt knudepunkt, som ens datapakker sendes igennem, finder altså ved hjælp af disse routing algoritmer ud af hvilket knudepunkt, der skal sendes videre til herefter. 10

Figur 3: Simpel netværksstruktur Både hubbe og switche anvendes til at sammenkæde lokale netværk f.eks. i hjemmet, på et institut eller i et firma. Forskellen mellem en hub og en switch, består i at en hub broadcaster dens signaler ud til alle opkoblede computere eller routere. En switch danner derimod en direkte forbindelse mellem de relevante porte, og sikrer på denne måde at der ingen kollisioner opstår mellem mange broadcastede signaler. Routere kan som tidligere nævnt også bruges til at sammenkæde et netværk. Stedet routere er koblet til et netværk kalder man for en gateway. En routers primære funktion går ud på at videresende datapakker mellem flere netværk. Altså sammenkæder en router to eller flere mindre netværk til en større enhed. Når datapakker skal sendes fra en kilde til en destination, tjekker ens computer om destinationen er på det lokale netværk. Dette kan en routing algoritme tjekke ud fra destinationens IP. Hvis dette er tilfældet sendes datapakkerne bare direkte gennem en switch eller hub. Findes destinationen derimod ikke på det lokale netværk, transporteres datapakkerne over til en router, hvor de kan blive sendt videre. Man kan nærmest vælge at se en IP adresse som et slags telefonnummer. Her har man ligeledes et slags områdenummer. Ved forsendelse af data mellem hvert enkelte af disse knudepunkter, kontakter hardwaren hinanden ved hjælp af en MAC-adresse (Media Access Control). Denne egentlige dataoverførsel foregår på et dybere plan i OSI (Open Systems Interconnection) modellen, der vil blive forklaret nærmere i et senere kapitel. Men umiddelbart kan man klassificere en MAC-adresse som en hardware adresse, der identificerer hvert knudepunkt ved hjælp af en unik værdi. Helt unik er den dog ikke, da der kan snydes med dette, uddybet i 2.3.2. [11, 12] 11

2.2 Protokoller Det er i dag blevet meget almindeligt, også for private brugere, at koble flere computere sammen i et netværk. For at computerne kan tale sammen, kræves en standard for, hvorledes kommunikationen skal foregå. En sådan standard kaldes en protokol. En protokol består basalt set af nogle regler, som blandt andet forhindrer computerne i at sende på et fælles netværkskabel samtidigt. Det er også defineret, hvor store portioner af data, som skal sendes ad gangen, hvor lang tid computeren skal vente på, at modparten svarer og lignende. Gennem tiden er forskellige standarder inden for datakommunikation blevet udviklet. En dominerende teknologi, som er kompatibel med flertallet af computersystemer, har dog ikke eksisteret før internettet for alvor brød igennem i 1990 erne. For at muliggøre kommunikation mellem vidt forskellige computersystemer er talrige standarder blevet vedtaget - og bliver løbende vedtaget. Kommunikation over internettet er bygget op omkring protokollen TCP/IP (Transmission Control Protocol/Internet Protocol). Vi har derfor valgt at undersøge, hvad en protokol er, ved at gennemgå TCP/IP-protokollen. [16] For at få alle computerne på internettet til at kunne kommunikere, eksisterer forskellige organisationer, som hver har deres ansvarsområde. Disse består af frivillige teknikerer og ingeniører, som tager stilling til forskellige forslag og diskuterer fremtiden for internettet. Før en standard bliver vedtaget, kommer forslaget ud til internettets brugere, hvor enhver har mulighed for at kommentere. Herefter kan forslaget blive vedtaget og gjort til en endelig standard, som de individuelle firmaer kan implementere i deres systemer. IANA (Internet Assigned Number Authority) er en frivillig organisation og en vigtig del af ISOC (Internet Society). IANA vedligeholder et komplet register over alle numre, den anvendes, i TCP/IP sammenhæng. Udover over IANA findes der en række regionale organisationer, der står for koordineringen af tildeling af IP-adesser. Det er følgende: [15] - RIPE (Reseaux IP Europeens) dækker Europa - APNIC (Asia Pacific Network Information Centre) dækker Asien og Afrika - ARIN (American Registry for Internet Numbers) dækker Amerika 2.2.1 IP-adresser For at kunne kommunikere på Internettet eller i et netværk er det nødvendigt, at man får tildelt en IP-adresse. I dag er flere millioner computere koblet sammen i flere større netværk, og tallet bliver større hvert år. Behovet for IP-adresser blivers som følge deraf hele tiden større. For at undgå adressekonflikter kontrollerer ICANN (Internet Corporation for Assigned Names and Numbers) brugen af IP-adresser på internettet. En IP-adresse i IPv4 består af et 32 bit binært tal, som angives ved 4 oktetter, enten decimalt eller hexadecimalt (se figur 4). De fire oktetter består hver af 8 bit, der angiver et decimalt tal i intervallet 0-255. 12

Figur 4: Beskrivelse af et IP-nummer med binær og decimal notation IP-adresser inddeles i fem Klasser, kaldet A, B, C, D og E. Ved at kigge nærmere på de 4 oktetter i en IP-adresse, kan man afgøre, i hvilken klasse, den enkelte adresse hører til. Adressering af IP-adresser Sammenhængen mellem binære tal og decimaltal er givet ved: [16] - Klasse A begynder med 0xxx binære tal eller 1-126 Decimaltal - Klasse B Begynder med 10xx binære tal eller 128-191 Decimaltal - Klasse C Begynder med 110x binære tal eller 192-223 Decimaltal - Klasse D Begynder med 1110 binære tal eller 224-239 Decimaltal - Klasse E Begynder med 1111 binære tal eller 240-254 Decimaltal En IP-adresse er inddelt i to grupper, hhv. netværk- og hostdel (givet ved N og H) efter denne opskrift: - Klasse A - NNNNNNNN.HHHHHHHH.HHHHHHHH.HHHHHHHH - Klasse B - NNNNNNNN.NNNNNNNN.HHHHHHHH.HHHHHHHH - Klasse C - NNNNNNNN.NNNNNNNN.NNNNNNNN.HHHHHHHH - Klasse D og E har andre funktioner end klasse A, B og C og er derfor ikke med her. Netværksdelen af IP-nummeret beskriver et bestemt antal hosts, hvor hver host repræsenter computer eller anden netværksenhed med IP-adresse. Som eksempel kan man sige, at netværket er gadeadressen, og at en host er et af de huse, som ligger på den pågældende gade. Hvis vi vil sende post til et hus, er det ikke nok at kende husets nummer, men gadens navn også er nødvendig. Man specificerer ved systemopsætningen IP-adresser som 4 decimale tal med punktummer i mellem, fordi det er enklere at 13

have med at gøre for mennesker end tal i 2-tals- eller 16-tals-systemet. Hvis situation opstår, hvor der i netværket findes to eller flere computere med samme IP-adresse, har operativsystemer forskellige måder at reagere på dette. De fleste Unix-systemer er ligeglade, og som bruger af systemet kan man blot ikke komme i kontakt med de andre computere, der har samme IP-adresse. Microft Windows har tradition for at vise et vindue med en fejlbesked, hvorefter den afgiver sin IP-adresse og lukker for brugen af netværket, indtil en ny og anderledes IP-adresse tildeles. [16] Adresser, som begynder med 127.x.x.x, peger på computeren selv, dvs. man kan forsøge at forbinde til en af disse adresser, hvis man vil teste, om en given service svarer. Gruppe D er reserveret til multicast, gruppe E er reserveret til fremtids brug, og er altså ikke defineret på nuværende tidspunkt I en klasse A adresse, beskriver den første oktet netværksdelen af adressen, mens 2., 3. og 4. oktet angiver hostdelen. Klasse A adresser benyttes, hvis ens netværk har mere end 65.536 hosts, og kan rumme op til 16.777.216 hosts. [16] I klasse B er det de to første oktetter, der angiver netværksdelen, og de sidste to angiver hostdelen. Klasse B adresser er bruges til netværk, der har mere end 256 og mindre end 65.536 hosts. I klasse C er det de tre første oktetter, der angiver netværksdelen, og kun den sidste angiver hostdelen. Klasse C adresser bruges til netværk med mindre end 256 hosts, og ses derfor tit anvendt i små lokalnet hos private og mindre virksomheder. Klasse D benyttes til IP-multicasting. Et multicast er en pakke, der har en gruppe af hosts som destination i stedet for en enkelt host. Ved at bruge multicast sparer man båndbredde ved transmissioner af ens data til mange hosts, da man sender een pakke til samtlige hosts på netværket på samme tid. En multicast klasse kan f.eks. beskrive modtagerne af datapakker i forbindelse med en videokonference. Klasse E er reserveret til fremtidigt brug. Som ny bruger på netværket skal man have en IP-adresse tildelt. Denne IP-adresse kan tildeles på to måder, enten som en fast eller dynamisk IP-adresse. Den faste IP-adresse får hosten tildelt og sat permanent. Den dynamiske IP-adresse tildeles en vilkårlig, ledig IP-adresse under opstart af netværket. Den dynamisk IP-adresse bliver tildelt af en DHCP-server (Dynamic Host Configuration Protocol), som er en server, der udover at komme med en IP-adresse også fortæller den enkelte host om andre væsentlige netværksopsætninger, f.eks. subnet-adressen, adressen på en evt. gateway og navneserver (DNS-server). Samtidig er det nødvendigt for automatisk uddeling af IP-adresser, at computerne er i stand til at hente disse informationer, en funktion som de fleste styresystemer i dag har. [16] Subnet-adresser Disse adresser er indført for at gøre IP-adresserne mere hierarkiske. Hvis en organi- 14

IP-adresse: 10000000 00000111 00000000 00000011 (128.7.0.3) Subnet-maske: 11111111 11111111 11111100 00000000 (255.255.252.0) Figur 5: Eksempel på en IP-adresse og tilhørende subnet-maske i et klasse B netværk sation, der er tilsluttet internettet, bruges som eksempel, har subnet-adresserne kun betydning lokalt for IP-adresserne i den enkelte organisation. Subnet-adresserne tjener som hjælpemiddel til at adressere mellem organisationens netværk, så disse kan deles op i mindre dele. Med et eksempel forklares subnet-adresser og -masker bedst: en administrator har fået til opgave at dele et klasse B netværk op i subnets (mindre dele af et netværk), så han skal bestemme, hvor mange bit i IP-adresserne på netværket, der skal gå til subnet-id og host-id. Da der i et klasse B netværk er reserveret de første 16 bit til netværksdelen, har administratoren altså ret til at bestemme, hvorledes de resterende 16 bit skal fordeles til hhv. subnet-id og host-id. Han kan f.eks. vælge at bruge 6 bit på subnet-id og 10 bit på host-id, hvilket giver ham 64 subnet med hver 1024 host-id. Subnet-ID er et tal, der identificerer det enkelte subnet ud fra de andre, ligesom host-id er unikke tal for hver host i et subnet. En subnet-maske angiver splitningen mellem host-id og subnet-id, og er lige så lang som IP-adressen. På de bitpladser i IP-adressen, hvor netværksdelen (net-iden) og subnet-id er anført, skal der i subnet-masken være 1 er. De resterende bit, hvor der i IP-adressen er angivet host-id, skal der i subnet-masken være 0 er. I det omtalte tilfælde, hvor der går 16 bit til net-id, 6 bit til subnet-id og 10 bit til host-id, skrives subnet-masken som 255.255.252.0 i notationen med fire decimale oktetter. På figur 5 ses et eksempel på et IP-adresse i et af nævnte subnet og den tilhørende subnet-maske skrevet som bit og decimaltal. [16] IP version 6 I dag er IP-adresserne kun 32-bit lange, svarende til at der er i den nuværende protokol eksisterer 2 32 adressekombinationsmulighedder. 2 32 er mere end 4 milliarder, der allerede i dag anses for en lille mængde IP-adresser, da internettet udvikler sig meget drastisk. Af denne årsag, er man kommet i en situation, hvor der begynder at være mangel på IP-adresser, og man regner med at de sidste adresser vil være brugt mellem 2005 og 2015. Af denne grund har ISOC (The Internet Society) fundet det nødvendigt at videreudvikle IP-protokollen. Videreudviklingen har fundet sted siden 1992 og er foreløbig resulteret i en række specifikationer for en ny version af IP-protokollen, version 6, der benævnes IPv6. Den nye version kaldes også IPNG (Internet Protocol Next Generation). Fremover ønskes IPv6 udbredt, men det er en meget langvarrig proces. [16] I august 1998 blev IPv6 erklæret for draft standard, dvs. en færdig specifikation - sidste trin før en standard. I juli 1999 uddelte IANA (The Internet Assigned Numbers Authority) de første IPv6-adresseintervaller til sine regionale repræsentanter. Efter IPv6 blev vedtaget som standard, kunne organisationer som f.eks. RIPE (Reseaux IP 15

Europeens) begynde at delegere den nye type adresser. Den største nyhed i IPv6 er, at IP-adresserne udvides fra de nuværende 32-bit til 128-bit. Det har forøget mængden af mulige adresser eksponentielt, og nu, hvor antallet af IP-adresser er eksploderet, er det målet at tildele mange andre typer elektrisk udstyr, end blot computere, adresser. Med IPv6 er kommet nye notationer på adresseklasser. Adresser, der identificerer enkelte netkort, kaldes unicast-adresser, multicast-adresser er afskaffet og erstattet af et mere fleksibelt system, hvor adresserne kaldes anycast-adresser. Fleksibiliteten ligger i, at pakker, der sendes til anycast-adresser, styres mere kontrolleret, men vi vil ikke komme nærmere ind på nyheder i IPv6. [16] 2.2.2 TCP/IP-protokollen TCP/IP har rødder helt tilbage til slutningen af 1960 erne, hvor den amerikanske militær-organisation DARPA (Defense Advanced Research Projects Agency) startede et forskningsprojekt. Målet var at udvikle en teknologi til sikker datakommunikation, som ikke var afhængig af en central enhed, og som kunne fungere, selvom en stor del af netværket var destrueret af fjender. Samtidig skulle teknologien kunne fungere på vidt forskellige computersystemer og styresystemer. Teknologien kom til at hedde ARPANET. ARPANET ekspanderede kraftigt, og delte sig i flere uafhængige, men forbundne netværk. Inden længe havde ARPANET bredt sig til mange amerikanske universiteter og senere ud over USA s grænser, det blev herefter til det som vi i dag kalder internettet. [15] TCP/IP-protokollen karakteriseres ved at stå for følgende opgaver: - Opdele udgående data i segmenter - Forsyne segmenterne med afsender- og modtagerport - Etablere et virtuelt kredsløb og sikre at data når korrekt frem til modtager - Sørge for flow kontrol I mange af de bøger, vi har anvendt i forbindelse med projektet, er der stor uenighed om, hvorvidt TCP/IP-protokollen skal benævnes som TCP/IP eller TCP. Det er vigtigt at huske på, at IP og TCP er adskilte protokoller, der fungerer på hhv. OSI-modellens netværkslag og transportlag. De to protokoller benævnes tit med notationen TCP/IP, da de hænger utrolig meget sammen. Vi har erfaret, at der med TCP/IP ofte blot menes TCP-protokollen, mens der i andre, og færre, tilfælde menes den overordnede sammenhæng mellem TCP- og IP-protokollen. Vi vil ikke holde os til nogen fast notation, men i stedet bruge begge benævnelser, TCP/IP og TCP, som betegnelse for TCP. I mindre omfang vil TCP/IP kunne ses i forbindelse med afsnit, hvor både IP-adresser og portnumre i TCP-protokollen omtales, mens TCP alene forsøges anvendt, når afsnit mest omhandler specifikke egenskaber for TCP-protokollen, f.eks. three-way handshake. 16

TCP-portnumre Headeren i enhver TCP-pakke, der er blok med kontroldata før den indpakkede data, inkluderer bl.a. to portnumre, en kildeport og en destinationsport. Numrene er begge to angivet med 16 bit, der giver 65535 (2 16 1) forskellige porte, da port 0 er reserveret og ikke brugt. Portene kan sammenlignes med små døre, som TCP-pakker sendes ind og ud af. Der menes ikke fysiske porte i form af stik, men logiske indgange defineret af operativsystemets TCP/IP-protokolstak (implementeringen af IPog TCP-protokollerne som en samarbejdende enhed). Portene bruges til adressering, så man kan sende en TCP-pakke fra en kildeport på en host til destinationsport på en anden host. TCP-baserede serverprogrammer lytter på en eller flere porte efter pakkerne, som de behandler og sender svar tilbage på. Hvis et serverprogram lytter på en given port, kaldes denne port for åben, og i modsatte tilfælde for lukket. RFC 1700 (Request For Comments, dokumenter vedrørende standarder på internettet) lister de mest velkendte porte, der er tildelt forskellige services. Et kort udsnit er: [15] - TCP port 21, File Transfer Protocol (FTP) - TCP port 22, Secure Shell (SSH) - TCP port 23, Telnet - TCP port 25, Simple Mail Transfer Protocol (SMTP) - TCP port 80, World Wide Web (HTTP) - TCP port 110, (POP3) Three-way Handshake TCP bruger et sekvensnummer (datapakkens identitet) i hver pakke, for at sikre, at alle pakker ankommer hos modtageren og i den rigtige rækkefølge. Formålet med TCP s three-way handshake er at de to sider af forbindelsen, afsender og modtager, er enige om hvilket nummer man starter med. [15] Når A vil snakke med B, vælger A i et tilfældigt ISN(A) (initielt sekvensnummer) og sender dette til B i en pakke med SYN-flaget sat. Hvis B accepterer A s ønske om en forbindelse, vælger han et ISN(B) og sender det til A i en pakke, hvor både SYN- og ACK-flagene er sat. A svarer med en pakke, hvor ACK flaget er sat, og forbindelsen er nu etableret. Herefter kan der sendes data. Processen med det trevejs håndtryk ses på figur 6. Pakker fra A til B (eller modsat) indeholder det næste sekvensnummer, som A forventer at få fra B. Når B modtager pakken, kan han således se om der er nogle pakker, der skal re-transmitteres (hvis A ikke har modtaget alle de pakker, som B ved at han har sendt). [15] 17

Figur 6: Three-way handshake [15] Datatransport i TCP/IP Når en applikation ønsker at kommunikere med en tilsvarende applikation, et andet sted i nettet vha. TCP/IP-protokollen, foregår det ved at dataen deles op i mindre portioner, der deles ud på et antal datapakker. Mængden af data i hver pakke kan variere, men hovedsagen er, at data skal sendes i pakker for at kunne sendes gennem netværket. TCP er den protokol, der fortager af- og påklistring af TCP-headers og -tails (kontroldata indeholdende bl.a. det nævnte sekvensnummer hhv. før og efter den indpakkede data) på datapakker, som kommer fra eller er på vej til IP-protokollen. [16] 2.2.3 UDP - User Datagram Protokol UDP er en protokol på lige fod med TCP, der bruges til datatransmission. Hvor TCP lavede forbindelse vha. af et trevejs håndtryk i form af nogle initierende pakkeudvekslinger mellem modtager og afsender, inkluderer UDP data fra første pakke - den er ikke afhængig af den forudgående forbindelsesetablering. Der foretages ingen kontrol af, om datapakker når målet, men der beregnes som en checksum af dataindholdet, så modtageren kan tjekke, om modtagne pakkers er i orden. UDP-protokollen er anvendelig til dataudveksling i bl.a. spil, da spil godt kan leve med enkelte pakketab. TCP-protokollen bruges ikke til spils dataudvekling af netop den grund, at pakketab i denne protokol vil medføre re-transmittering af pakker, hvilket giver mærkbare ophold i spillene. [16] 18

2.3 OSI-modellen Målet med dette afsnit er at indføre OSI-modellen og dens lag, da der senere i rapporten refereres til lagene, når protokollers og apparaters virkemåde ønskes beskrevet. Modellen er også god, fordi den giver en forståelse for, hvordan data vandrer gennem et hiarki af indpakninger og andre operationer, når de skal overføres fra en computer til en anden. Derudover forklares en del baggrundsviden om bl.a. netværkskomponenter og adressering af datapakker på forskellig vis, der er nødvendig viden for læsning af resten af rapporten. Datalink- og netværkslaget indeholder de væsentligste forudsætninger for routing, og er derfor mest aktuelle, mens de andre lag overvejende er med for at skabe sammenhæng. OSI er en forkortelse for Open Systems Interconnection, som er en model, der i 1977 blev præsenteret af ISO (International Organisation of Standardization. Det er en forholdvis gammel model, som blev udviklet med henblik på at skabe en standard, som alle fremover skulle følge. Imidlertid er det ikke helt gået sådan, og OSI-modellen anvendes i dag mere som en referencemodel. Når man f.eks. snakker om layer-3 switching, bruger man OSI-modellen som reference for, hvilke oplysninger en given switch har til at afgøre, hvilken fysisk port, en mængde data skal sendes videre til. Vi vil bl.a. komme ind på flere detaljer omkring netværkshardware i de følgende underafsnit. [13, 14] OSI-modellen er opdelt i syv lag, der hver tager sig af en bestemt gruppe opgaver, når computere kommunikerer over netværk. Når OSI-modellen implementeres i enten et stykke hardware eller software, er det ikke nødvendigt at alle lag repræsenteres - det ses bl.a. ved at netværksudstyr kan arbejde på forskellige lag. Det smarte ved denne opdeling af en stor, kompleks opgave, er at opgaven bliver mere håndterbar. De forskellige lag i OSI-modellen illustreres på figur 7, der også viser at det eneste lag, der kan kommunikere direkte med en anden netværksenhed, er det nederste, fysiske lag: [13] 19

Figur 7: Adressering og påklistring af headers og tails [13] Disse lag har hver deres veldefinerede opgave i forbindelse med kommunikationen - hvordan softwaren eller processen, der varetager et lags opgaver, er programmeret eller på anden vis udformet, er ikke afgørende for kommunikationens virke. OSI-modellen stiller blot det krav, at lagene samarbejder, hvilket er en forudsætning for at underliggende lag kan sørge for, at højere liggende lag kan kommunikere ned igennem modellen og til sidst gennem netværket til en anden computer. Samlet set benævnes disse moduler også som en protokolstak. Figur 7 viser to computeres implementation af OSI-modellens lag. Hvis f.eks. computerenes applikationslag ønsker at kommunikere, bliver dataen sendt ned gennem de andre lag, og bliver i den forbindelse pakket ind med headers, tails og andre kontroltal, før de sendes via netværket til den anden computer og på omvendt vis tager vejen op gennem dennes lag. [15] Når data rejser ned gennem lagene bliver de pakket ind og påklistret headers og tails. Headers er en samling kontroldata, der bliver sendt inden datablokken, som f.eks. kan beskrive længden af datapakken, checksummer eller lignende, alt afhængig af hvilken protokol man har med at gøre. En tail bliver sendt efter datablokken og indeholder som regel ikke kontroldata, der fortæller noget om den indkapslede data, men blot en markering af at pakken slutter her. [13] Kommunikation mellem lagene foregår vha. Service Access Points (SAPs). Man taler da om servicebrugere (Service Requesters), der er de lag, som gerne vil have en service udført af et andet lag. Lagene, som udbyder disse services, benævnes serviceudbydere (Service Providers). Flere servicebrugere kan anvende tjenester fra en serviceudbyder samtidigt, og det er derfor nødvendigt at kunne skelne datastrømmene fra hinanden. Det fungerer ved at servicen udbydes i flere punkter, kaldt Service Access Points. SAPs har adresser tilknyttet for at gøre det muligt, at skelne udbydningen af services i flere punkter vha. adresser kan sammenlignes med porte i TCP/IP-protokollen. På figur 8 ses det, hvorledes to lag kommunikerer vha. SAPs. [16] 20

Figur 8: Service Access Points [16] 2.3.1 Det fysiske lag Her er vi så langt nede i protokolstakken, som overhovedet muligt, og man kan med rette synes, at dette lag er lidt primitivt. Lagets arbejdsopgave er i sin enkelthed at få datapakkerne fra de øvrige lag sendt ud på netværket - om det så er til en hub eller switch eller direkte til modtageren. Ved denne transmission af rå data er man ikke fri for at tale om netværkstopologier og signalteori, men vi vil dog holde os på et mere generelt stadie i fortællingen om disse emner, da de ikke har direkte relevans for projektet. Indledningsvis kan computere kobles sammen på flere måder, også kaldt punkt-tilpunkt og multipunktopkobling. Den vigtigste forskel på disse to former er, at multipunktopkobling har brug for adressering, så datapakkerne kan nå frem til den rigtige modtager, mens punkt-til-punkt opkobling ikke har brug for dette - her er der jo kun én modtager. Netop adressering er et af nøgleordene for datalinklaget, så det beskrives nærmere i afsnit 2.3.3. Med netværkstopologi menes arkitekturen eller organiseringen af et fysik netværk. Det findes der mange eksempler på, hvoraf der på figur 9 kan ses nogle af de mest udbredte. Hver topologi gør brug af forskelligt hardware, som f.eks. stjernetopologien, hvor de tilsluttede computere forbindes i en hub eller switch. [13] 21

Figur 9: Fysiske topologier [13] Af relevans for det fysiske lag er båndbredde, der angiver, hvor hurtigt data kan sendes over netværk, elektriske signaleringsmetoder og opbygningen af netværkskabler, som er mediummet for datatransmissioner. Specielt signaleringsmetoden har indflydelse på, hvor meget af en elektrisk leders teoretiske båndbredde, der kan udnyttes, og derfor også, hvor optimal datatransmission, man kan opnå. Selv om der findes en masse forskellige båndbredder, signaleringsmetoder og kabeltyper, vil vi i denne rapport ikke komme nærmere ind på nogle af dem - det ligger for langt fra det overordnede emne og tjener ikke meget til den videre forståelse af routing. [13] 2.3.2 Datalinklaget Hvor det fysiske lag mest handlede om netværkstopologier, repræsentation af bits på fysiske ledere, transmissionsteknikker og ledertyper, så er det datalinklagets opgave at håndtere disse bits - at holde styr på dem. Datalinklagets pakker de rå bitstrømme ind i datapakker, som kaldes rammer (frames). På figur 10 ses en model af en ramme. Headeren (hovedet) indeholder bl.a. en afsender- og en modtageradresse, så vi kan med rette slå fast, at datalinklaget er det nederste lag i OSI-modellen, der indbygger adressering i datastrømmene og kan identificere andre computere i et netværk. Der sættes også en tail (hale) på bitstrømmen, som indeholder en CRC-tjeksum (Cyclic Redundancy Check), der er en stort set unik værdi beregnet ud fra bitstrømmen. Derved kan modtageren af rammen detektere eventuelle fejl i transmissionen ved på ny at udregne tjeksummen af de modtagne bits og sammenligne med ved vedhæftede tjeksum. Et interessant aspekt i forhold til datalinklagets indflydelse på datasikkerhed i netværk er, at de fleste mennesker tror, at hacking udelukkende går ud på at knække services på netværks- og transportlaget, hvor det faktisk tit er svagheder i netop datalinklaget, en hacker udnytter for at komme videre i sin færden. [13, 14] 22

Figur 10: En ramme, hvor længderne af blokkene er angivet [18] Afsender- og modtageradresserne er såkaldte MAC-adresser (Media Access Control), der er hver er på 6 byte. Et eksempel kan f.eks. være 00-00-D1-9D-85-16, hvis man beskriver adressen vha. hexadecimale tal adskilt af bindestreger. De første tre hextal tildeles af IEEE (the Institute of Electrical and Electronics Engineers) til producenterne af netværksudstyr, der selv får lov at bestemme, hvordan de sidste tre hextals kombinationer skal tildeles deres produkter. Det giver kun mening at tale om MACadressering på et LAN (Local Area Network), da en router vil pakke Ethernet-rammen op, snuppe datablokken, der består af en IP-pakke, og route denne videre på basis af IP-adressen. [13, 19] Det høres ofte i folkemunde, at datalinklaget i OSI-modellen, fremfor det fysiske lag, beskæftiger sig med funktionaliteten af hubber og switches. Angående hubber er dette dog en forkert betragtning, idet hubber faktisk ikke på nogen måde adresserer, hvor den videresender data til. En hub ved ikke, hvem modtageren er, så den sender den indkommende data videre til alle fysiske porte. Netop fordi en hub kun arbejder med elektriske strømme og spændinger, hører den faktisk hjemme på det fysiske lag, men vi har alligevel valgt at medtage den her for at belyse forskellen mellem hubber og switches. En switch har som regel samme udseende som en hub - en boks af enten plast eller metal med et antal porte (stik til netkablerne), en masse statuslamper og en strømforsyning. En switch er dog umådelig mere smart, idet den analyserer datatrafikken og opbygger en tabel over sammenhængen mellem MAC-adresser og fysiske porte, så den kan nøjes med at videresende data til en bestemt port i stedet for dem alle. En switch er i stand til at videresende data mellem flere forskellige porte samtidigt, hvilket naturligvis giver meget mere båndbredde - den opretter lynhurtigt midlertidige, fysiske forbindelser mellem portene. Hvor man med en hub havde et kollisionsdomæne, hvor pakker fra alle tilsluttede maskiner kunne kollidere, taler man, ved inførslen af en switch, om en opdeling af kollisionsdomænet. Når to computere kommunikerer gennem en switch, ser det for computerne ud som om de er forbundet direkte, og de kan kun have eventuelle indbyrdes pakkekollisioner. Den mest udbredte metode at switche datapakker på er Store-and-forward (lagre og videresende), hvor switchen indlæser hele den indkommende ramme, laver et CRC-tjek på den og videresender den. Modsætningen er cut-through (lige igennem), hvor switchen ikke udfører noget fejltjek men begynder at videresende til den fysiske destinationsport, lige så snart den har læst rammens header, hvor den finder modtagerens MAC-adresse. Nogle switche understøtter trunkering, dvs. at man kan forbinde to switche med to eller flere parallelle kabler og derved fordoble eller flerdoble hastigheden mellem dem. Man kan forestille 23

sig, at disse må have en mere kompleks tabel over MAC-adresserne, idet datapakkerne nu kan tage flere forskellige veje til samme destination. Kompleksiteten fremkommer ved at kapaciteten naturligvis kun udnyttes, hvis strømmen af datapakker balanceres ligeligt ud på de implicerede porte. [13, 18] Når en computer skal sende data data til en anden computer over et LAN, bliver den nødt til at kende modtagerens MAC-adresse. Normalt tænker vi på IP-adresser, når vi skal identificere en anden computer på et netværk, men vi kan ikke bare sende en IP-pakke afsted på den fysiske linje, da IP-protokollen ikke er indbygget i et netværkskort og derfor ikke lytter direkte med på netværkstrafikken. Der findes en protokol til netop at få fat på en maskines MAC-adresse udfra dens IP-adresse, kaldet ARP (Address Resolution Protocol). Metoden er at broadcaste en ARP-anmodning (udsende en såkaldt ARP Query til alle computere i LAN et), derefter vil den computer, som er konfigureret med den IP-adresse, der er anført i ARP-anmodningen, svare tilbage med sin MAC-adresse i et ARP-svar (ARP Response) til den spørgende computer. På figur 11 er procedurerne i forbindelse med ARP illustreret. Magien ligger dernæst i, hvordan den uvidende computer sørger for at dens forespørgsel når ud til hele det lokale netværk. I en hub er det en selvfølge, at alle modtager de udsendte datapakker, men hvad sker i en switch? For at slippe om ved dette er en speciel MAC-adresse opfundet, broadcastadressen FF:FF:FF:FF:FF:FF, der påhæftes datapakker, som skal broadcastes. En switch sender derfor datapakker, der har denne specielle modtageradresse, ud på alle fysiske porte. For at en computer ikke skal spilde tid på at efterspørge andre computeres MAC-adresser hvert øjeblik, lagres de fundne adresser et kort tidsrum i hukommelsen - som regel i intervallet fra nogle minutter til en halv times tid, afhængig af operativsystemet. Modsat ARP kan det naturligvis også forekomme, at man gerne vil have oversat en MAC-adresse til en IP-adresse, hvilket også foregår ved at broadcaste og få et svar tilbage. Protokollen til denne opgave kaldes RARP (Reverse Address Resolution Protocol). [15] Figur 11: Eksempel på ARP-protokollen [15] 24