De fleste har prøvet det: ‘klumper i strømmen’ som tilsyneladende helt uden grund får internetforbindelsen til at virke langsom, så man føler sig hensat til 90’ernes larmende modem-æra.
Sekunder senere virker alting igen, men så er det for sent – man er blevet fragget, eller venindens ansigt på videochatten er blevet til små hakkende blokke, og stemmen lyder som en robot med alvorlig halsbetændelse.
Hvorfor kan det ikke bare virke? Det kan vel ikke være så svært? Lige præcis sådan tænker en gruppe internationale forskere, som arbejder på at udvikle en teknik, der kan få internettet til at virke – hele tiden, altid.
Blandt andet arbejder forskerne med at gøre de routere, der styrer trafikken på internettet, mere intelligente. Dermed kan man undgå en hyppig årsag til problemer: noget så simpelt og dagligdags som kødannelse.
Hastighed er mere end båndbredde
Når en internetudbyder reklamerer for ‘hurtigt internet’, er den primære målestok for hastigheden båndbredde, dvs. hvor meget data der kan sendes per sekund, typisk målt i megabit.
Men i praksis er der et andet tal, der også har stor betydelse, nemlig forsinkelsen, eller den tid det tager for et signal at nå frem til modtageren.
Tænk på et vandrør: Båndbredden svarer til, hvor meget vand der kan komme igennem per sekund (som afgøres af rørets diameter), mens forsinkelsen er den tid, det tager en dråbe vand at løbe igennem røret (som afgøres af, hvor hurtigt vandet bevæger sig).
Forsinkelsen er især afgørende for ting, der er interaktive, dvs. som mennesker skal vente på, for eksempel en telefonsamtale, et computerspil eller almindelig surfen på nettet.
Data sendes i små pakker
Når data sendes over internettet, bliver det splittet op i små pakker, som sendes hver for sig. Ind i mellem kan der opstå en flaskehals et sted på nettet, og pakkerne er derfor tvunget til at stå i kø.
Hvis denne kø bliver for lang, skaber det ekstra forsinkelse, som er det, vi oplever som mystiske udfald i forbindelsen.
Kødannelsen opstår altså, når der sendes mere data, end der er båndbredde til. På den måde kan båndbredde og forsinkelse påvirke hinanden, og det gælder derfor om at få alle computere, der er koblet til nettet til at sende data med lige præcis den båndbredde, der er tilgængelig på det givne tidspunkt.
Dette besværliggøres af, at internettet består af en række forskellige netværk, der i princippet er helt uafhængige af hinanden, og som deles af mange brugere. Det betyder, at en computer, som skal sende data gennem nettet, ikke på forhånd kan vide, hvor stor båndbredde der faktisk er til rådighed, og dermed med hvilken hastighed den skal sende.
Derfor er de protokoller, der styrer trafikken på nettet, programmeret til at prøve sig frem. Ved at starte langsomt, og derefter eksponentielt øge hastigheden, kan en afsender meget hurtigt finde ud af, hvor meget båndbredde der faktisk er til rådighed.
Mekanismen er effektiv i praksis
Men hvordan finder en afsender så ud af, at den har fundet frem til den tilgængelige båndbredde? Ganske simpelt ved at antage, at hvis man sender data hurtigere, end der er båndbredde til, er der nogle af de afsendte pakker, som ikke når frem. Modtageren sender en bekræftelse tilbage for hver pakke, der når frem, så hvis en bekræftelse udebliver, kan afsenderen registrere det.
Så hvis for eksempel pakkerne med nummer 1, 3 og 4 bliver bekræftet, men pakke nummer 2 ikke gør, kan afsenderen gå ud fra, at den er gået tabt på vejen. Dette fortolkes som, at den tilgængelige båndbredde er overskredet, og afsenderen sætter hastigheden ned – og sender derefter den tabte pakke igen.

Denne fremgangsmåde betyder, at en lille smule data skal sendes flere gange. Men i praksis er mekanismen ganske effektiv, så længe den centrale antagelse holder: At pakker går tabt, så snart den tilgængelige båndbredde overskrides.
Og det er her, kødannelse kan give problemer. For hvis der et sted på vejen opstår en lang kø, går der længere tid fra båndbredden overskrides, til der går data tabt, og afsenderen kan derfor ikke reagere i tide og sætte hastigheden ned.
Når køen så endelig er fuld, og pakkerne går tabt, er det allerede for sent: De efterfølgende pakker er nødt til at vente på, at køen bliver afviklet, og det kan tage adskillige sekunder – nok til at skabe de irriterende udfald.
Man kan ikke undgå køer
Men hvis det er lange køer, der er problemet, kan man så ikke bare gøre dem mindre? Desværre er det ikke så simpelt. For hvor stor skal køen egentlig være? Det, der kan være en passende kø for en transatlantisk forbindelse, er alt for stor for en almindelig forbrugers internetforbindelse.
Og man kan ikke helt undgå køer: På samme måde som en tragt gør det nemmere at hælde vand fra en stor beholder ned i en lille flaskehals, kan en midlertidig kø hjælpe, når datapakker skal fra en hurtig til en langsommere forbindelse. Det er, når køen bliver for lang, eller ikke forsvinder igen, at problemet opstår.
Man må altså skelne mellem den ‘gode kø’, som fungerer som en tragt, og den ‘dårlige kø’ som giver forsinkelser. Og eftersom køen opstår inde i internettets routere, er det dem, der skal gøres mere intelligente.
Problemet kan gribes an på flere måder
En sådan intelligent router holder hele tiden øje med, hvordan køen udvikler sig, og reagerer ved at smide en pakke ud, så snart køen begynder at vokse. Herefter holder routeren øje med, om det faktisk får afsenderen til at sætte farten ned, og køen dermed holder op med at vokse.
Hvis ikke, smider routeren flere pakker ud med kortere og kortere mellemrum – indtil afsenderen opfatter signalet og sætter farten ned.
Denne teknik hedder aktiv køstyring (forkortet AQM for Active Queue Management på engelsk). Teknikken kan kombineres med andre metoder til smart kø-styring, som tilsammen kan forbedre netværkets ydelse markant – og i mange tilfælde stort set eliminere problemet med unødig kødannelse.
I løbet af de sidste par år har forskere fra hele verden foreslået en række forskellige fremgangsmåder, eller algoritmer, der forsøger at løse problemet. De virker alle efter nogenlunde det princip, der er beskrevet ovenfor, men har forskellige måder at gribe det an på.
På vej mod det pålidelige internet
Selvom de nye metoder giver lovende resultater, kan der desværre gå noget tid, inden visionen om et pålideligt internet, der altid virker, bliver til virkelighed. For de nye algoritmer skal installeres alle steder i netværket, hvor der kan opstå kø – og det er stort set overalt. Det drejer sig om i hundredevis af millioner af enheder. Nogle af dem kan opgraderes, mens andre skal skiftes ud. Og det tager tid.
For at gøre teknologien tilgængelig for flest mulige har udviklerne af algoritmerne gjort dem frit tilgængelige for alle, og de indgår i open source-operativsystemet Linux, som også har dannet base for en stor del af forskningen i køstyring i nettet.
Er man teknisk indstillet, kan man allerede nu downloade softwaren med de nye algoritmer og installere den på sin router derhjemme. Men de fleste vil nok vente på, at deres internetudbyder skifter routeren ud, og der kan altså gå noget tid, inden det sker.
Derudover er der andre faktorer, der kan bidrage til forsinkelse i netværket. Internettet er formentlig den mest komplekse maskine, menneskeheden nogensinde har bygget, og det ændrer sig konstant, i takt med at teknologien udvikles, og mere og mere foregår via nettet. I løbet af de seneste år er der kommet et øget fokus på at sikre pålidelighed og forhindre forsinkelser.
Arbejdet med at forhindre kødannelse har været en del af dette, og forskere og udviklere fra hele verden arbejder intensivt på at skabe teknologi, der kan understøtte fremtidens krævende interaktive applikationer. Målet er klart: Et internet som altid virker.