Stockholm Waterfront 19-20 november 2018

Köp nu – 1250 kr/dag

Överföringshastigheter på Internet

Diskussionen om hur man ska mäta tillgänglig bandbredd på Internetanslutningar har pågått under längre tid och det finns många åsikter om vad som är viktigt och rätt för att kunna presentera en siffra som beskriver bredbandshastighet.

Som i så många andra fall påverkas hastigheten av en mängd faktorer. Jag tänkte försöka förklara en del av dem och i vissa fall kommer jag att förenkla verkligheten eller inte ha med alla detaljer vilket gör att denna text inte kommer att bli 100% tekniskt korrekt. Se den dock som mer principiell än teknisk och ett försök att påvisa olika faktorer som påverkar och varför det kanske inte ens finns ett ”rätt” sätt.

Överföringen är inte komplett förrän båda ändar har bekräftat att all data är mottaget

Väldigt ofta när man överför data på Internet (t ex web-surfning eller filöverföringar) används TCP, Transmission Control Protocol. TCP tar en dataström (t ex en fil) och delar upp den i mindre delar och skickar dessa var för sig över IP-paket mellan två datorer på Internet och ser till att datat kommer fram korrekt i andra änden. Överföringen är inte komplett förrän båda ändar bekräftat att all data är mottaget och har meddelat detta till varandra.

Hastigheten som TCP lyckas överföra datat med (det vill säga dataströmmens storlek delat med tiden det tog för överföringen att gå färdig) är beroende på flera faktorer, de viktigaste är:

  • tillgänglig bandbredd/kapacitet
  • fördröjningen mellan noderna
  • paketförluster
  • TCP-fönstrets maxstorlek

Den tillgängliga bandbredden kan mätas på olika sätt. För en ADSL2+-förbindelse är max-hastigheten enligt standard 24 megabit/s, men detta är på ATM-nivå (IP-paketet delas upp och stoppas in i ATM-celler). En ATM-cell är 53 bytes lång och kan innehålla upp till 48 bytes nyttodata. I de flesta ADSL-anslutningar kör man IP-paketen i både ATM- samt Ethernet-baserade nät så över ADSL-anslutningen går alltså TCP över IP över Ethernet över ATM. Ethernet-headern är 14 bytes. Detta ger en hel del förluster och de 24 megabit/s som operatören (åtminstone tidigare) angav är nu nere i omkring 20-21 megabit/s (För att överföra ett 1460 bytes TCP-segment krävs 1500 bytes IP-paket som blir ett 1518 bytes Ethernet-paket som blir 32 ATM-celler vilket är 1696 bytes). Detta ger alltså ca 15% förlust om man räknar på allting från ATM-lager till det som faktiskt är nytto-genomströmning för TCP, vilket förklarar varför operatören kallade det 24 megabit/s (vilket är korrekt) men man bara kunde köra 20 megabit/s i en filöverföring (vilket också är korrekt). Det är ungefär som att väga köttet när det är rått i disken i affären mot att väga den efter stekning när den ligger färdigtillagad på fatet, dessa två vägningar kommer att ge olika resultat men inget av dem är egentligen mer rätt eller fel än det andra.

Ljus i fiber färdas med 2/3 av ljushastigheten i vakuum – 200.000 km/s

Fördröjningen mellan noderna påverkas av flera faktorer, dels finns det fördröjning på access-förbindelsen, dels fördröjning när paketen ska färdas längre sträckor i fiberoptiska kablar, dels om paketen fördröjs pga att är fullt på en förbindelse (tänk en påfartsramp till en motorväg där det blir kö). Nätverksutrustningar har en buffert, en kö som den stoppar in paket i när det redan finns ett paket som håller på att skickas på förbindelsen. Fördröjningen i access-förbindelsen skiljer vitt mellan olika access-tekniker, allt ifrån under 1 millisekund för 100 megabit/s Ethernet, till över 20 millisekunder för ADSL2+ (kan skilja beroende på inställningar hos leverantören) till 1 sekund i fördröjning för GPRS över 2G-nät. Fördröjningen i de fiberoptiska kablarna är dock konstant med avståndet, ljus i fiber färdas med 2/3 av ljushastigheten i vakuum, dvs ca 200.000 km/s. Om man räknar att paketet ska både fram och tillbaka (alla siffor i denna text är RTT, Round Trip Time, om inget annat anges) ger detta en ungefärlig siffra på 1 ms (millisekund) per 100 kilometer fiberväg.

Paketförluster uppstår antingen när en nätverksutrustningens buffert är full och då har routern inget annat alternativ än att slänga paketet eller så kan ett paket slängas pga fel i överföringen på en förbindelse pga någon sorts störning.

TCP-fönster är enkelt hur många bytes data som TCP kan ha utestående (på väg) till andra änden utan att andra änden har bekräftat att att dessa är korrekt mottagna. TCP-fönstrets storlek är en inställning/egenskap i operativsystemet på ändsystemen som kommunicerar. På en Windows XP-maskin är detta 64 kilobyte, i nyare operativsystem är detta betydligt större. TCP-fönstret börjar litet och växer allt eftersom överföringen fungerar felfritt, och justeras sedan allt eftersom under överföringens gång (man kan säga att det är gaspedalen).

Ett exempel på ett trafiköverföringsfall och hur dessa olika faktorer samverkar:

Kan vara att en server som sitter på 1 gigabit/s i Malmö som har 1 megabyte i TCP-fönsterstorlek. En bredbandskund på ADSL2+ 24 megabit/s i Luleå vill ladda ner en fil från servern. Fördröjningen mellan dessa två punkter i nätet blir ca 40 ms (räknat på lite under 20ms fördröjning i fiberväg och lite över 20ms i ADSL2+-accessen). Med en standard Windows XP-maskin med 64 kilobyte TCP-fönsterstorlek innebär detta att hastigheten kommer att vara begränsad av fönsterstorleken och inte av bandbredden, då det blir 64 kilobyte/s var 40:e ms, dvs 25*64=1600 kilobyte/s vilket är ca 13 megabit/s. Även om ADSL2+-accessen klarar 20 megabit/s så kommer denna filöverföring bara att gå i 13 megabit/s på grund av interaktionen mellan TCP-fönsterstorlek och fördröjning i nät/access. Om båda ändpunkter haft 1 gigabit/s så hade fördröjningen i ADSL2+-accessen eliminerats men överföringshastigheten skulle ändå bara blivit ca 25 megabit/s (räknat på ca 20 ms RTT mellan punkterna). Om båda ändarna kör ett operativsystem med betydligt större TCP-fönster så kan full bandbredd utnyttjas trots fördröjningen dem emellan.

I ovanstående exempel har jag räknat ISPns (Internet-operatören) nät som perfekt och utan paketförluster och/eller fördröjningar förutom det ljusets hastighet i fiber över detta avstånd innebär. Ifall ISPn har fullt i sitt nät kommer paket fördröjas eller tappas i viss utsträckning och detta påverkar hastigheten negativt då det blir omsändningar och TCP anpassar fönsterstorleken vid varje sådan händelse (man kallar att paketförluster och förändringar i fördröjning är ”congestion signals” (congestion betyder ungefär trafikstockning), TCP använder det för att bedöma om nätet mellan punkterna är fullt och sänker då hastigheten för att minska detta fast fortfarande använda den tillgängliga nätkapaciteten i såg hög utsträckning den kan. Vid en paketförlust justeras fönstret nedåt till hälften, vid flera i rad börjar TCP om ”från början” med s k ”slow start”, dvs då är fönstret bara en eller fåtal paketstorlekar (i TCP kallas MSS, maximum segment size).

Tillverkarna av konsumentroutrar skulle kunna införa mer avancerad bufferhantering

På ADSL2+ har man relativt hög nedströmshastighet jämfört med uppströmshastighet. Om man fyller sin uppströmskapacitet kommer ADSL-modemet att buffra paket (i vissa fall flera hundra millisekunder) och de flesta konsumentmodem/routrar gör FIFO (first in, first out) vilket gör att ytterligare TCP-sessioner kommer att uppleva att fördröjningen är flera hundra millisekunder vilket då försämrar nedströmshastigheten rejält trots att nedströmskapaciteten inte är fullt utnyttjad. Här finns stor potential för tillverkarna av modem/routrar att införa mer avancerad bufferhantering som låter TCP ACK (TCPs bekräftelsepaket på mottagen data) gå före stora datapaket i kön (tänk olika filer för olika viktiga fordon på vägen). Detta finns bara på de mer avancerade företagsroutrarna från t ex Cisco och saknas oftast på de enklare konsumentroutrarna.

Att fördröjningen mellan två punkter påverkar upplevd ”hastighet” återkommer även i andra sammanhang än rena filöverföringar, till exempel när man tittar på en websida med många små objekt (t ex bilder). Då varje objekt måste begäras av webläsaren tar varje sådan begäran åtminstone en fördröjning och ju större fördröjning desto större väntetid som inte beror på bandbredd utan på just fördröjningen. För en websida med många objekt (kan vara hundratals) kan detta påverka rejält, då varje begäran åtminstone tar en RTT att genomföra. Med hundra objekt och varje objekt får en fördröjning på minst en RTT och denna är 100 ms så kommer websidan att ta åtminstone 10 sekunder att ladda bara pga fördröjningen mellan webservern och klienten. Modernare webläsare försöker strömma dessa mer effektivt så man alltid har utestående begäran vilket förbättrar men eliminerar inte påverkan av fördröjning.

Trådlöst nät (Wifi) kan också ha stora variationer i fördröjningen

Olika access-tekniker har olika egenskaper vilket gör det svårt för TCP att fungera väl i alla sammanhang. Ethernet (LAN) levereras ofta via nätverksutrustning med små buffrar vilket gör att när det går fullt så blir det snabbt paketförluster vilket medför att TCP minskar fönstret och därmed hastigheten. Detta kan ses som en sågtandsgraf om man jämför hastigheten över tid, det vill säga att hastigheten går ner till hälften eller ännu mindre, och sedan accelererar upp till max, för att sen falla ner till hälften. För mobilt bredband är fördröjningen relativt hög (för vanlig 3G kan den vara 200 ms) med stor varians vilket då även detta påverkas TCP negativt. Trådlöst nät (Wifi) kan också ha stora variationer i fördröjningen vilket även detta påverkar negativt TCPs förmåga att korrekt bedöma tillgänglig bandbredd eftersom fördröjningen är en faktor i hur den tittar på tillgänglig kapacitet.

Man ska undvika att ha trådlöst LAN hemma

För bästa upplevelse av nätet bör man välja accessteknik som har låg och konsekvent fördröjning och samtidigt hög bandbredd. Eftersom detta faktum uppvärderats över tid ska man helst välja någon nyare accessteknik, min privata rankinglista är att de bästa är LAN (ETTH), VDSL2 (i princip ETTH fast över telefonlina) och de nyare varianterna av kabeltv-Internet (DOCSIS3). Man ska undvika att ha trådlöst LAN hemma, åtminstone om man har många grannar som kör på samma frekvens för det innebär att man ofta stör varandra vilket gör att WiFi-lagret måste göra omsändningar vilket ger varians i fördröjningen vilket enligt ovan gör TCPs jobb svårare. LTE (4G mobildata) ska enligt uppgift vara designad för mycket lägre fördröjning i radiogränssnittet än 3G/HSDPA, så lågt som 5 ms.

Så nästa gång du funderar på Internet-access tänk inte bara bandbredd utan även vilken fördröjning den har och vilket operativsystem du har på datorn och hur den är inställd, samt hur ditt lokala nät inom hemmet ser ut. Det kan påverka din Internetupplevelse rejält, både positivt och negativt.