Kapittel 4a · Nettverkslaget

Rutere og videresending

Dataplanet vs. kontrollplanet, ruterarkitektur, longest prefix match og køer — alt som skjer når en pakke treffer en router.

01 · Oversikt

Hva nettverkslaget gjør

Transportlaget gir deg en illusjon av en direkte forbindelse mellom to prosesser. Nettverkslaget er den som faktisk må flytte pakkene over et mylder av forskjellige nettverk for å opprettholde den illusjonen.

Nettverkslaget kjører i hvert eneste Internett-tilkoblet apparat — ikke bare i routere, men også i endesystemer. På sendersiden tar det imot segmenter fra transportlaget, kapsler dem inn i datagrammer, og leverer dem til lenkelaget under. På mottakersiden gjør det det motsatte: trekker ut segmentet fra datagrammet og leverer det opp til transportlaget.

Men den virkelige jobben skjer i routerne. En router undersøker headerfelter i hvert eneste datagram som passerer gjennom den, og bestemmer — på nanosekunder — hvilken utport pakken skal sendes videre på. Denne prosessen gjentas i router etter router helt til pakken når målet.

★ Everything over IP, IP everywhere

Nettverkslaget har bare én protokoll: IP. Alle transportprotokoller (TCP, UDP, QUIC) kjører over IP, og IP kjører over alle lenkelag-teknologier (Ethernet, WiFi, 5G). Denne enkelheten — én smal midje — er Internetts viktigste designbeslutning.

02 · Forwarding vs. Routing

To helt forskjellige jobber

Forwarding er det du gjør i hvert veikryss: «gitt at målet er Roma, tar jeg høyre.» Routing er å planlegge hele turen fra Trondheim til Roma før du setter deg i bilen.

Forskjellen mellom forwarding og routing er det første virkelige innsiktet i dette kapittelet, og hele resten av stoffet organiseres rundt det.

Forwarding er den lokale, per-pakke-operasjonen: en router mottar et datagram på en innport, slår opp destinasjonsadressen i en forwarding-tabell, og sender pakken videre ut på riktig utport. Dette må skje ekstremt raskt — på nanosekunder — fordi en 100 Gbps-lenke ikke venter på noen.

Routing er den nettverksglobale prosessen som bestemmer hvilke ruter som eksisterer i nettverket, og som fyller forwarding-tabellen med oppføringer. Rutingalgoritmer (OSPF, BGP) kjører i bakgrunnen og oppdaterer tabellene når topologien endres. Routing er langsomt — millisekunder til sekunder — men det er greit, fordi det skjer sjelden sammenlignet med forwarding.

EgenskapForwardingRouting
OmfangLokal (i én router)Global (hele nettverket)
TidsskalaNanosekunderMillisekunder – sekunder
ImplementasjonMaskinvare (ASIC, TCAM)Programvare (protokoller)
AnalogiKrysse étt veikryssPlanlegge hele reiseruten
03 · Data plane & Control plane

To plan i en router

Det samme forwarding/routing-skillet manifesterer seg som en arkitektonisk deling inne i enhver moderne router: data plane for rask pakkeflytting, control plane for rutinglogikk.

Data plane er maskinvaren som faktisk flytter pakker fra innport til utport. Det opererer på nanosekunder, med dedikerte kretser som gjør tabelloppslag og switching uten å involvere routerens CPU.

Control plane er programvaren som bestemmer hva som skal stå i forwarding-tabellen. To modeller finnes:

  • Per-router kontroll — Hver router kjører sin egen rutingalgoritme og snakker med naboene via protokoller som OSPF og BGP. Den tradisjonelle modellen.
  • SDN (sentralisert) — En fjernkontroller beregner rutene for hele nettverket og pusher forwarding-tabeller ned til routerne. Dominerer i datasentre.
CONTROL PLANE · MILLISEKUNDER · PROGRAMVARE Rutingalgoritmer, protokoller (OSPF, BGP), SDN-controller Beregner ruter og skriver forwarding-tabeller DATA PLANE · NANOSEKUNDER · MASKINVARE Forwarding-tabell, switching fabric, tabelloppslag Flytter hver enkelt pakke fra innport til utport skriver tabeller
De to planene i en router. Control plane bestemmer rutene; data plane flytter pakkene.
04 · Tjenestemodell

Hvorfor Internett er så «dumt»

Man kunne tenkt seg et nettverk som garanterer levering, båndbredde og lav forsinkelse. Internett gjør ingen av delene. Det er «best effort» — og det er med vilje.

Internetts nettverkslag lover ingenting. Ingen garanti for at pakken kommer fram. Ingen garanti for rekkefølge, timing, eller båndbredde. IP-modellen er best effort: vi prøver å levere pakken din, men vi lover ingenting.

Dette stod i skarp kontrast til ATM-nettverkene som ble utviklet på 1990-tallet, som forsøkte å gi rike garantier. Men historien ga Internett rett:

ArkitekturBåndbreddeTapRekkefølgeTiming
Internet best effortingeningen garantiingeningen
ATM CBRkonstant rategarantijaja
ATM ABRgarantert minneijanei
Intserv Guaranteedjajajaja
Diffservmuligmuligmulignei

Tre ting forklarer hvorfor best effort fungerer:

  • Enkelhet skalerer. Routere som bare slår opp en destinasjon og sender videre kan bygges billig og raskt av hvem som helst.
  • Overprovisjonering fungerer. Båndbredde har blitt billig nok til at real-time-applikasjoner som video og tale fungerer «godt nok, mesteparten av tiden.»
  • CDN-er og congestion control hjelper. Innhold replikeres nær brukerne, og TCP forhindrer nettverket fra å kollapse.

Hvorfor valgte Internett «best effort» framfor en rikere tjenestemodell som ATM CBR?

Riktig! Enkelheten er kjernen. En router som bare trenger å slå opp en destinasjonsadresse og sende pakken videre kan bygges billig av hvem som helst. Garantier krever per-flow-tilstand og ressursreservering i hver router, noe som hindrer vekst.
05 · Inni en router

Anatomien til en router

En router består av fire hoveddeler: innporter, en switching fabric, utporter, og en routing-prosessor. De tre første er data plane; den fjerde er control plane.

En innport gjør tre ting før en pakke går videre. Først linjeavslutning (mottak av bits fra fiberen). Så link-lag-prosessering (pakke bits ut som Ethernet-rammer). Til slutt det viktige: oppslag i forwarding-tabellen for å bestemme utport. Dette siste skjer lokalt i innporten, uten å involvere CPU-en.

Routing Processor Switching Fabric in 1 in 2 in N innporter out 1 out 2 out N utporter CONTROL PLANE (programvare, ms) DATA PLANE (maskinvare, ns)
Generisk router-arkitektur. Data plane (innporter, fabric, utporter) gjør den raske jobben; control plane (routing-prosessor) oppdaterer tabellene.

Oppslaget følger et mønster som er fundamentalt for hele nettverkslaget: match plus action. Se på felt i headeren, finn en matchende rad i tabellen, utfør handlingen (typisk «send ut på interface 3»). Denne strukturen finnes overalt — fra enkel destinasjonsbasert forwarding til mer avanserte regler i SDN.

06 · Longest Prefix Match

Hvilken oppføring vinner?

Forwarding-tabellen inneholder prefikser, ikke enkeltadresser. Når flere prefikser matcher, vinner det lengste — fordi et lengre prefiks er mer spesifikt.

En forwarding-tabell har typisk en kvart million oppføringer. Hver oppføring er et prefiks — for eksempel 200.23.16.0/20 — som dekker alle adresser der de første 20 bitene matcher. Det store spørsmålet er: hva gjør routeren hvis en destinasjonsadresse matcher flere oppføringer?

Svaret: velg oppføringen med lengst prefiks. En /24 gjelder 256 adresser; en /28 gjelder bare 16. Hvis begge matcher, er /28 mer presis og vinner. Dette er longest prefix matching (LPM), og det er det som gjør hierarkisk adressering og rute-aggregering mulig.

Prøv selv — Longest prefix matching

Klikk på en destinasjonsadresse og se hvilken oppføring som vinner:

11001000 00010111 00010*** ********→ 0
11001000 00010111 00011000 ********→ 1
11001000 00010111 00011*** ********→ 2
(ellers — default)→ 3
Velg en adresse for å se hvilken linje som matcher.

I praksis gjøres LPM i maskinvare, i ternary content-addressable memory (TCAM). En TCAM slår opp en adresse på én klokkesyklus uansett tabellstørrelse, fordi alle oppføringer sammenlignes parallelt. Cisco Catalyst-svitsjer har rundt 1 million oppføringer i TCAM.

En router har oppføringene 10.0.0.0/8 → port 0 og 10.1.0.0/16 → port 1. Hvor sendes en pakke til 10.1.5.3?

Riktig! Begge prefikser matcher adressen, men /16 er mer spesifikk enn /8. Longest prefix matching velger alltid den mest spesifikke matchen.
Hvorfor er forwarding implementert i maskinvare (ASIC/TCAM) i stedet for programvare?
En 100 Gbps-lenke leverer en 64-byte-pakke omtrent hvert 5. nanosekund. Programvare på en generell CPU klarer ikke å gjøre et tabelloppslag så raskt. Derfor brukes spesialbygde kretser (ASIC-er) og TCAM som kan slå opp blant hundretusenvis av prefikser på én klokkesyklus — uavhengig av tabellstørrelsen. Uten maskinvareakselerasjon ville routerne blitt flaskehalsen i Internett.
07 · Switching fabric

De tre generasjonene

Når innporten har bestemt utporten, må pakken fysisk flyttes dit. Switching fabric-en gjør dette, og det finnes tre hoveddesign — en evolusjon fra tregt til ekstremt raskt.

Generasjon 1: via minne. Pakken kopieres fra innport til systemminnet, CPU-en slår opp, og pakken kopieres til utporten. To busskrysninger per pakke — hastigheten begrenses av minnebåndbredden. Fungerte for noen få megabit i sekundet.

Generasjon 2: via buss. Pakker overføres direkte fra innport-minne til utport-minne over en delt buss, uten CPU-involvering. Men bussen er delt — bus contention — så bare én pakke kan krysse om gangen. Cisco 5600 bruker en 32 Gbps-buss.

Generasjon 3: sammenkoblingsnettverk. En crossbar eller flerstegs-svitsj lar flere pakker krysse parallelt, så lenge de går til forskjellige utporter. For enda høyere ytelse deler moderne routere pakker opp i celler og sender dem over flere parallelle fabric planes samtidig. Cisco CRS: 8 planes, hundrevis av Tbps.

GEN 1: MINNE CPU 2 busskrysninger tregt GEN 2: BUSS 1 pakke om gangen bus contention GEN 3: CROSSBAR parallell overføring hundrevis av Tbps
Tre generasjoner switching fabric. Hver generasjon fjerner en flaskehals fra den forrige.
08 · Kø, buffere & scheduling

Når pakker må vente

Selv med en perfekt switching fabric oppstår køer. Det som skjer i køene — hvem som droppes og hvem som går først — er der nettverksnøytralitet får teknisk innhold.

Input-køer og HOL-blokkering

Hvis switching fabric er tregere enn summen av innportene, kan køer bygge seg opp ved innportene. Det verste som da skjer er Head-of-Line (HOL) blocking: pakken først i køen venter på en opptatt utport, og blokkerer dermed pakkene bak seg — selv om deres utporter er ledige.

Output-køer

Den vanligste køtypen er ved utporten. Når tre innporter på 10 Gbps alle vil sende til samme utport, må noe vente. Her oppstår to spørsmål: (1) hva droppes når køen er full? (2) hvilken pakke sendes først?

Bufferstørrelse

En gammel tommelfingerregel (RFC 3439) sier at bufferen bør være omtrent RTT × C (for eksempel 250 ms × 10 Gbps = 2,5 Gbit). Nyere forskning anbefaler RTT·C / √N der N er antall flows — fordi for store buffere skaper bufferbloat og ødelegger latens for real-time-trafikk.

Buffer management

Tail drop: dropp pakken som nettopp ankom. RED (Random Early Detection): dropp pakker tilfeldig før køen er full for å signalisere congestion. ECN: marker pakker uten å droppe dem.

Scheduling — hvem går først?

Schedulerene, steg for steg

FCFS / FIFO

1 / 4

Weighted Fair Queueing (WFQ) generaliserer round robin ved å gi hver klasse en vekt wi, slik at klasse i får andelen wi / Σwj av lenkekapasiteten. Det er slik du kan garantere minimum båndbredde til en gitt trafikktype uten å sulte de andre.

Nettverksnøytralitet — teknisk sett

FCFS er «nøytralt». Priority scheduling basert på betalende kunder er «paid prioritization» — det 2015 FCC-regelverket forbydde. Scheduling- og buffer-regler er mekanismene der nettnøytralitetspolitikk får teknisk innhold.

Hva skjer med latens hvis bufferene i en router er for store?
Bufferbloat. Med for store buffere droppes færre pakker, så tap-raten ser bra ut — men pakkene står lenge i kø før de sendes videre. Resultatet er høy og variabel latens som ødelegger interaktive applikasjoner (VoIP, spill, videokonferanser). TCP tolker ikke tapet tidsnok og reduserer ikke vinduet, så køene forblir fulle. Nyere forskning anbefaler RTT·C / √N i stedet for den gamle RTT·C-regelen, nettopp for å unngå bufferbloat.