Et lite kurs i IP-nettverk – del 1

I en serie poster fremover vil jeg skrive noen notater for dem som er interessert i lære litt om datanettverk og IP-teknologi. Jeg har lagt merke til at nettressurser på feltet har ett av to nivåer: Profesjonelt eller “Privatbruker”. Det er lite å finne for dem som i sitt yrke trenger å forstå IP og nettverk på et noe dypere nivå enn en privatbruker, men allikevel ikke ønsker å ta fatt på en akademisk lærebok på området. Så for denne gruppen, kalt “Yrkesinteressert”, har jeg laget noen sider her på denne webadressen. Jeg har også noen forslag til nettverkseksperimenter som har som mål å gi leseren praktisk erfaring med temaet, og disse egner seg godt for å gjennomføres i en gruppe.

Jeg tar gjerne innspill og forbedringsforslag fra leserne. Skriv en kommentar i bloggen eller send meg en e-mail på anders@fongen.no.

Innledning

Takk for at du er interessert i datanettverk, det er et fagfelt som har vært i eventyrlig utvikling siden det startet på 1960-tallet. Selv startet jeg min karriere med å programmere Norges første lokalnett på starten av 1980-tallet, så i skrivende stund i 2021 har jeg holdt på med kommunikasjon og nettverk i 40 år. De som er unge i fagfeltet i dag har også mye å se frem til, den eventyrlige utviklingen fortsetter, kanskje i enda større tempo enn hva jeg selv har opplevd.

Jeg har brukt en del av mitt yrkesliv på undervisning og formidling av fagfeltet, som førsteamanuensis på (dengang) Norges Informasjonsteknologiske Høgskole (NITH), siden på Forsvarets Høgskole.

Siden jeg har fulgt fagfeltet fra såpass langt bak i tid ønsker jeg å sette dagens IP-teknologi og nettverksbruk også i et visst historisk perspektiv. Mange av de fenomenene og problemene som vi observerer i dagens nettverk skyldes historiske forhold, og forklares best ved å titte litt tilbake på fagfeltets barndom.

Hvorfor datakommunikasjon?

Tilbake på 1960- og 1970-tallet var datamaskiner sterkt sentraliserte ressurser som man måtte oppsøke for å få utnyttet. Man leverte inn sine magnetbånd og hullkortbunker med programkode og datasett til driftspersonellet, og hentet papirutskriften dagen etter. Samarbeid i grupper av fysisk adskilte personer baserte seg da på postsendinger. Derfor kunne det ta dagesvis før et datasett ble oppdatert til alle deltagerne hadde tilgang til dette.

Det var den gang sikkert lett å forestille seg at dataene, i form av 0- og 1-bits, kunne egne seg for å flyttes mellom datamaskiner. Datamaskiner kunne allerede sende og motta data med enheter som hullkortlesere, magnetbåndstasjoner og papirskrivere, så noen av forutsetningene var allerede på plass.

Infrastruktur: medium, signal, overføringsregler

For å overføre en 0/1-bit fra ett sted til et annet må tre forutsetninger være oppfylt:

  1. Det må finnes et medium som biten kan overføres gjennom: En kobberledning, en radiofrekvens, en fiberkabel el.lign.
  2. Biten må representeres av et signal i en egnet form som mediet kan overføre: En elektrisk puls, et lysglimt, en radiobølge, en lydpuls osv.
  3. Sender og mottager må være enige om regler for hvordan biten skal overføres: Hvordan 0/1-biten skal representeres på mediet, hvor raskt bitene som skal komme i rekkefølge, hvordan overføringsfeil skal oppdages og behandles osv. Slike sett av regler kaller vi innen fagfeltet for protokoller.

Den gangen man startet arbeidet med å la datamaskiner kommunisere seg i mellom fantes det allerede et teleks-nett (den gang kalt fjernskiver) og et telefonnett som var vidt utbygget og tillot kommunikasjon over hele verden. Man valgte å utnytte telefonnettet, som jo er utbygget for å overføre tale, ikke data. Hva kjennetegner en telefontjeneste?

  • Overføring av lydsignaler i frekvensområdet 3000-3000 Hz
  • En lydforvrengning og støynivå ikke verre enn at taleforståelsen ble opprettholdt, dvs. at lytteren oppfatter informasjonen fra taleren.

Det er fullt mulig å bli enige om f.eks. at et lydsignal skal representere verdien 0 ved én frekvens, og verdien 1 ved en annen. Partene må også bli enige om hvor ofte signalet kan skifte frekvens, altså hvor hurtig en serie biter kan overføres. Slik konvertering mellom bitverdier og analoge signaler blir kalt modulasjon og demodulasjon, og utstyret som ble konstruert for å konvertere biter mellom elektriske signaler (digital representasjon) og lydsignaler (analog representasjon) blir kalt et modem. Med tiden ble det forsket mye på hvordan overføringshastigheten kunne økes og feilraten kunne reduseres ved modulasjonsregler med signaler som var egnet for overføring gjennom telefontjeneste.

Nå retter vi ryggen litt og ser igjen litt på det store bildet:

Hva oppnår vi med et datanettverk?

Dersom datamaskiner kan utveksle data med hverandre kan vi oppnå en rekke fordeler fremfor å gjøre all lagring og behandling av data i samme maskin. Her er noen eksempler:

  • Data og dokumenter som er felles for en gruppe av deltagere kan ligge lagret på ett sted. Oppdateringer skjer ved at deltagere knyttet til andre datamaskiner kan sende endringer via nettverket. Alle andre som bruker dataene vil straks få tilgang til den seneste versjonen.
  • Deltagerne kan etablere personlig kommunikasjon gjennom e-post eller lynmeldinger. Slik kommunikasjon sendes til den datamaskinen som “hører til” mottageren og leses der.
  • Mange datamaskiner kan danne en “dugnad” og slå sammen sine regneressurser for å øke den samlede kapasiteten. Et stor beregningsoppgave som egner seg for oppdeling i mindre oppgaver (søking i store datamangder, visse kombinatoriske oppgaver som gjetting av passord og krypteringsnøkler) kan løses ved at hver datamaskin bearbeider sin deloppgave og rapporterer resultatet til en sentral datamaskin.
  • Noen oppgaver egner seg best for mindre og spesialiserte maskiner (f.eks. styring av en røntgenmaskin), men resultatene den skaper egner seg for deling og behandling på store datamaskiner (pasientjournal).

Som et resultat av disse betraktningene så vi på 80-tallet at et nytt fagfelt vokste frem, kalt distribuerte systemer. Dette fagfeltet bygger på datanettverk som kan overføre informasjon mellom maskiner, og studerer metoder for hvordan maskinene kan kommunisere og koordineres på best mulig måte.

Telefonnettet er linjesvitsjet. Hva betyr det?

Alle har erfaring med telefon. Her slår den ene parten et nummer, motparten må besvare samtalen, forbindelsen holdes oppe inntil en av partene kobler ned, og man betaler til telefonselskapet etter varigheten av forbindelsen. En “samtale” koster det samme uansett om man snakker eller ikke, fordi man i denne tiden bruker ressurser i telefonnettet: Mellom partene er det telefonlinjer som i denne perioden er reservert for denne samtalen og som ikke kan benyttes av noen andre. Dersom mange samtaler er oppkoplet samtidig vil nye forsøk på å sette opp en samtale resultere i et opptattsignal. Ikke fordi motparten er opptatt i en annen samtale, men av mangel på ledige linjer i selve telefonnettet (linjene mellom telefonsentralene).

Et nettverk som brukes på denne måten kalles et linjesvitsjet nettverk, fordi vi reserverer linjer i hele samtaleperioden, og ingen andre kan bruke telefonlinjene i denne perioden.

Figur 1: Et linjesvitsjet telefonnett som kopler sammen to telefonsetntraler, og brukes både av telefoner og modemer. Enhetene på venstre og høyre side må konkurrere om kapasiteten til linken mellom sentralene, og får opptattsignal om det er ikke er ledige linjer å ta i bruk

Telefonnettet er linjesvitsjet og utgjorde den tidligste infrastrukturen for datanettverk. Med modemer kan binære data overføres mellom datamaskiner, og oppkall til ulike numre kunne en datamaskin kommunisere med mange andre datamaskiner, dog ikke samtidig.

Pakkesvitsjet nettverk

En annen måte å utforme nettverket på er som et postvesen. I et postvesen vet vi at det ikke forekommer opptattsignal, men derimot kan posten komme senere frem i perioder med mye postgang. Dette er kjennetegn for en posttjeneste:

  • Alle sendinger legges i en konvolutt, og påføres en adresse.
  • Konvolutten vil aldri åpnes av posttjenesten, alle nødvendige opplysninger knyttet til leveringen er påført konvolutten.
  • Sendingen foregår i mange transportstrekninger, fra lokal postkasse til diverse omfordelingspunkter hvor sendingen legges i nye sekker og kasser, og transporteres sammen med sendinger som skal i “samme retning”.
  • Sendingene vil ikke videresendes fra hopp til hopp bit for bit, men i form av komplette sendinger. Hele sendingen vil mottas og lagres en stund i et omfordelingspunkt før videresending kan påbegynne.

Som kjent betaler vi for postsendinger i form av frimerker med en verdi som svarer til sendingens vekt og mål. Det betales altså i form av volum, i motsetning til linjesvitsjing som betales for en varighet. Til en privat postkasse kommer postmannen regelmessig og legger postsendinger fra mange avsendere.

Prinsippene som ligner på et postvesen kaller vi pakkesvitsjing. Pakke- og linjesvitsjing har ulike fordeler:

  • Linjesvitsjing gir lav forsinkelse og stabil overføringskapasitet så lenge forbindelsen er oppkoplet. Ved stor pågang oppstår det opptattsignal ved forsøk på oppkopling.
  • Pakkesvitsjing gir ikke “opptattsignal”, men større forsinkelse og pakketap ved stor trafikk. Flere forbindelser kan være i bruk samtidig på samme fysiske linje. Nettverkets kapasitet blir bedre utnyttet ved at flere kunder kan sende og motta data samtidig. En sending (pakke) kan velge ulike veier mellom fordelingspunktene dersom slike finnes.
Figur 2: Et pakkesvitsjet nettverk kjennetegnes ved at det transporterer adresserte data i pakker, og at pakkene kan ta ulike veier mot mottakeren. Her reserveres ikke linjene for forbindelser, men linjene befrakter urelaterte pakker i blanding.

Pakkesvitsjing kalles av og til for store-and-forward nettverk, grunnet det forhold at pakker lagres i et omfordelingspunkt en kort stund før den videresendes. Om mange pakker skal sendes ut langs den samme linjen vil pakkene danne en kø og må vente lenger. Dersom køen vokser seg stor kan svitsjen velge å kaste innkommende pakker. Derfor vil et pakkesvitsjet nettverk gi større forsinkelse og pakketap når trafikkmengden er stor.

En vesentlig egenskap ved et pakkesvitsjet nettverk er at kjeden av transportstrekninger fra avsender til mottaker består av uavhengige ledd. I likhet med et postvesen kan transportmetoden i ett ledd skje helt uavhengig av de andre leddene. Derfor kan ledd endres, legges til og fjernes uten å påvirke nettverkets samlede funksjon. I et linjesvitsjet nettverk, derimot, vil alle ledd (vist på Figur 1) måtte ha den nødvendige kapasitet for å overføres data i en uavbrutt strøm, siden ingen mellomlagring finner sted i omfordelingspunktene.

Eksempler på transportstrekninger i et pakkesvitsjet nettverk er alle teknikker som kan overføres data mellom to nettverksadaptre: Bluetooth, WiFi, Ethernet, 4G, Satellittlinker, Fiberoptisk kabel.

Selv om vi gjerne kan tenke oss å ha en linjesvitsjet tjeneste tilgjengelig for de programmene som har nytte av det, finnes det knapt noen slik tjeneste. Internet er nå den dominerende infrastrukturen i verden, og den baserer seg på pakkesvitsjing. De fordelene som knytter seg til linjesvitsjing vist i listen ovenfor blir nå forsøkt levert ved hjelp av egne protokoller som skal gi stabil forsinkelse og tilstrekkelig overføringskapasitet.

Internet – ARPANET

ARPANET var et eksperimentelt datanettverk basert på pakkesvitsjing, og er forløperen til dagens Internet. Forskningen på ARPANET resulterte i mange av de protokollene som danner fundamentet for Internet i dag, ikke minst protokollene IP, TCP og UDP. En tegning av strukturen fra 1977 er vist nedenfor.

Figur 3: ARPANETs struktur i 1977. Kilde: By ARPANET – The Computer History Museum, Public Domain, https://commons.wikimedia.org/w/index.php?curid=9990864

Det som er verd å merke seg ved denne tegningen er antallet maskiner (vist om firkanter) til sammenligning med dagens antall, som telles i milliarder. Den gang i 1977 fantes det ikke kjeltringer på nettet, alle med adgang til å bruke nettet var ansatt i det amerikanske forsvaret eller knyttet til industri eller forskning med oppdrag for forsvaret. I dag (2021) har 65% av jordas befolkning tilgang til Internet.

Det bemerkelsesverdige er da at den teknologien som ble utviklet i 1977 har vist seg å la seg skalere til dagens proposjoner, riktig nok med noen tilpasninger og videreutvikling. Ved siden av å vekke beundring for de fagfolkene som designet nettverket den gang, er det også med på å forklare hvorfor Internet plages av så mange sikkerhetsproblemer: hacking, avlytting, forfalskede maskiner og meldinger, svindel e-post og spam. Disse problemene skyldes neppe dårlig design, men at nettet ble utformet for et relativt lite nettverk uten kjeltringer.

Forsinkeler, jitter og pakketap

Figur 4: En ruter som vidersender datapakker vil skape en kø.

I et pakkesvitsjet nettverk vil et fordelingspunkt kalles en ruter (eng. router). Den har et antall porter som er koplet til transportstrekninger, heretter kalt linker. Porter og linker kan normalt overføre data i begge retninger, men av hensyn til forenkling av eksemplene fremgår ikke dette av figurene.

Figur 4 viser hvordan en ruter mottar datatrafikk fra tre linker som skal samles og sendes videre på en fjerde link. Uavhengig av kapasiteten (overføringshastigheten målt i biter/sekund) til disse linkene vil det oppstå en kø i ruteren av pakker som venter på å sendes på ut-porten til høyre. Desto større samlet trafikk inn og lavere kapasitet ut, desto lengre blir den gjennomsnittlige kølengden.

Datatrafikk er aldri en jevn strøm av pakker til faste tider, men pakker har en tendens til å komme i “skurer” blant perioder med lite trafikk. Dette forholdet forklarer hvorfor det alltid vil være kødannelse i en ruter, og at lengden på køen vil variere. Kølengden er også en kilde til forsinkelsen i nettverket.

Dersom køen blir så lang at den ikke kan lagres i ruterens minne, eller at den skaper en uhensiktsmessig forsinkelse, kan ruteren kaste pakker som ligger i kø. Dette betegner vi som pakketap.

Jitter er et mål for hvordan forsinkelsen varierer i et nettverk. Mye jitter vil medføre at data som sendes i en jevn strøm vil mottas i ujevn takt i form av skurer. Dersom nettverket skal brukes til anvendelser som er sensitive for slike variasjoner, f.eks. overføring av lyd og video, er graden av jitter en størrelse som må tas i betraktning.

Tjenestekvalitet – QoS

Og nettopp fordi ulike anvendelser krever ulike egenskaper fra nettet, i form av overføringshastighet, pakketap, forsinkelse og jitter, er det hensiktsmessig å klassifisere kvaliteten til tjenesten i henhold til disse størrelsene. Dette begrepet kalles Quality of Service (QoS).

Tanken med QoS er at en kunde kan spresifisere kvalitetskravet til en nettverksforbindelse og betale for tjenestene deretter. Ved å differensiere nettverkstjenesten på denne måten kan ressursene unyttes bedre og kanaliseres dit behovet er reelt.

QoS-prinsipper benyttes ikke i Internet. Det skyldes at IP-protokollen har ganske mangelfulle muligheter for å signalisere kvalitetskrav til nettet, og det mangler en forretningsmodell som lar internet-leverandørene tjene penger på slik differensiering. Derimot kan private IP-nettverk velge å differensiere QoS for ulike anvendelser, og nettverket kan i slike tilfelles selv gjenkjenne anvendelser og knytte kvalitetsegenskaper til forbindelsene som brukes.

Teknikker for å øke tjenestekvalitet

Vi har teknikker å ty til for å kompensere for manglende kvalitetsegenskaper i nettverket. La oss for enkelthets skyld fokusere på egenskapene overføringshastighet, pakketap, forsinkelse og jitter.

Overføringshastighet – den maksimale overføringshastigheten mellom to endepunkter vil bestemmes av den svakeste linken, altså flaskehalsen. Hastigheten vil ytterligere reduseres av kødannelse i ruterne. Det er mulig å spre trafikken på flere forbindelser og på den måten oppnå en aggregert overføringskapasitet. Slike løsninger kan tilbys av rutere som er tilpasset for formålet. Den typiske bruken av slike rutere er i mobilt utstyr der en enkelt 4G-forbindelse ikke har den nødvendige kapasiteten, men hvor mange 4G-forbindelser i parallell har det.

Mangelfull overføringshastighet kan kompenseres ved å overføre en sterkere komprimert versjon av lyd- eller video-innhold. Denne teknikken kalles DASH, se videolink i listen på slutten av dette dokumentet.

Pakketap – dette fenomenet skyldes en av flere mulige årsaker. Normalt detekteres pakketap ved at mottakeren kvitterer for mottatt data, og dersom ikke avsenderen mottar en slik kvittering innen en tidsgrense vil pakken sendes på nytt. Dette er et vel etablert prinsipp som brukes i TCP-protokollen.

Slike retransmisjoner tar naturligvis ekstra tid, og for en del anvendelser er lav forsinkelse og jitter viktigere enn å unngå pakketap. Man kan faktisk redusere jitter i en nettverksoverføring ved å øke pakketapet, som beskrevet senere.

Forsinkelse – forsinkelse i en nettverksforbindelse er en sum av enkeltfaktorer, som overføringsforsinkelse og signalforsinkelse på linkene, og køforsinkelse i ruterne. Køforsinkelse i ruterne kan reduseres ved å redusere påtrykket av annen trafikk, men dette er neppe en løsing som er mulig å benytte seg av i det offentlige Internet. Forsinkelsen vil derimot variere over tid etter en forutsigbart mønster, og overføringen kan skje i perioder med lav forsinkelse, der dette er akseptabel begrensning i anvendelsen.

Jitter – variabel leveringtakt kan kompenseres med en buffer, tilsvarende en cisterne for regnvann som står utenfor hytteveggen og samler opp regnvann. Selv om det regner med ujevne mellomrom, sørger cisternen for at det vann tilgjengelig for et jevnt daglig forbruk. Gjennomsnitt vannforbuk kan selvfølgelig ikke være større enn gjennomsnittlig regnmengde. Tilsvarende kan en buffer, altså et minneområde som samler opp mottatte data en stund før de spilles av på mottakerutstyret, jevne ut variasjoner i leveringtakten. Slik bufring introduserer en ekstra forsinkelse før data kan spilles av (eller presenteres på annen måte), så man bruker ikke denne teknikken i anvendelser som krever lav forsinkelse (f.eks. lyd- og videosamtaler).

En annen metode for å redusere jitter, men som ikke øker forsinkelsen, er å merke hver pakke med et tidsstempel når den sendes. Mottageren kan da anslå forsinkelsen i overføringen ved å studere verdien på dette stempelet. Pakker skal spilles av på et bestemt tidspunkt etter at de er sendt, og de pakkene som ikke når frem til mottakeren i tide blir kastet. Kastede pakker blir erstattet med andre pakker med lignende innhold, f.eks. forrige pakke i strømmen. Pakker blir dermed spilt av i jevnt tempo, og med en fast forsinkelse som er lavere enn hva en buffer vil skape. Praktisk testing med slike teknikker viser at de kastede pakkene ikke forringer lytte-/seer-opplevelsen i nevneverdig grad.

Verktøy for å studere nettverkstrafikk

For utdanning, eksperimentering og feilsøking er det svært nyttig å bruke et verktøy som kan studere nettverkstrafikken som går inn og ut over et nettverksadapter. Å observere virkelig datatrafikk er for en student verdifull anskueliggjøring av teknologien, og et supplement til å lese tekstbeskrivelser og spesifikasjoner. Et populært verktøy for å studere nettverkstrafikk er Wireshark, lastes gratis ned fra wireshark.org. Nedenfor vises et bilde av programmet under kjøring.

Figur 5: Eksempel på Wireshark-programmet under kjøring

Fra øverst til nederst viser programvinduet følgende informasjon:

  • Tittellinjen viser at programmet lytter på WiFi-adapteret
  • Linjen på grønn bakgrunn viser at vi filtrerer bort alt unntatt trafikk knyttet til UDP-protokoll.
  • Delvinduet med blå bakgrunn viser en løpende oversikt over observerte pakker, én pr linje og som viser et utdrag av innholdet i pakken.
  • Vinduet nedenfor viser detaljer om en pakke som er valgt i listen over, og gir full informasjon om denne.
  • Det nederste vinduet viser innholdet i pakken i “råformat”, vist i heksadesimal representasjon.

Wireshark har et rekke funksjoner knyttet til filtrering av pakker, statistikkfunksjoner o.l., som ikke vil beskrives her. Mye informasjon om bruken av Wireshark finnes på nettet.

Oppsummering

Denne innledende teksten har ikke gått i detalj på IP-teknologi, men hatt som mål å gi en forståelse av

  • noen grunnleggende prinsipper for nettverk (linje- og pakkesvitsjing, forsinkelse, pakketap m.m.),
  • hvilke muligheter og fordeler nettverkskommunikasjon fører med seg,
  • at anvendelser har ulike krav til kvaliteten på nettverksoverføringen,
  • betydningen av å bruke programmer for nettverksanalyse

I neste blogg vil IP-adresser bli presentert i noe dypere detaljering, sammen med regler for hvordan adresser blir organisert i et nettverk og hvordan IP-adressene inngår i veivalg i ruterne.

Forslag til praktiske oppgaver

  1. Last ned programmet wireshark fra wireshark.org (Linux/Mac/Windows). Sjekk at det lar seg starte, og hvordan man samler trafikk på et bestemt adapter (f.eks. WiFi). Nærmere forklaring på bruken av programmet finnes på Internet.
  2. Med wireshark, start innsamling av data på Wifi-adapteret. Finn så frem webleseren og hent en webside. Legg merke til at wireshark samler masse trafikk selv om det kun er en enkel webside som hentes. Sett inn filteret “http” i wireshark for kun å se web-trafikk. Hva får du ut av trafikklisten i wireshark nå?
  3. Finn frem websiden nettfart.no og start en måling av nettverkshastigheten. Sammenlign resultatet med sidemannen. Hva tror du påvirker resultatet av slike målinger?
  4. Hent frem et kommandokonsoll (programmet cmd i Windows). Med kommandoen ipconfig (Mac/linux: ifconfig) får du opplysninger om nettverksadaptrene i maskinen din. Finner du ut hvilken ip-adresse du bruker mot det trådløse nettverket på skolen (vi skal snakke mye om ip-adresser i neste samling)?

Foreslått egenlesning

Foreslått lesing fra denne samlingen:

Generelt bakgrunnsstoff: http://www.cs.uccs.edu/~xzhou/teaching/CS522/LNCS/LEC1-Introduction.pdf

Pakkesvitsjing vs Linjesvitsjing: https://www.youtube.com/watch?v=B1tElYnFqL8

DASH: https://www.youtube.com/watch?v=nfjr_AbxogM

Forsinkelse og pakketap: https://www.tpx.com/blog/latency-jitter-and-packet-loss/

Store-and-Forward: https://www.youtube.com/watch?v=aAxzCYW_4p0

Leave a Reply

Your email address will not be published. Required fields are marked *

2 × four =