Glöm inte latens när du beräknar nätverksprestanda

0 Flares Twitter 0 Facebook 0 LinkedIn 0 e-post-0 Flares Bisexuell

i mitt jobb måste jag lära mig mycket om flera ämnen av det. Särskilt på virtualiseringsmarknaden är många människor vanligtvis väl förberedda när det gäller infrastruktur, servrar och lagring, men jag fick reda på att den svagaste punkten är många gånger nätverk. Det finns några ämnen som är obskyra för många, som Layer2 vs Layer3, BGP, Spanning Tree, men det finns ett ämne som är väldigt viktigt även för infrastruktur killar, men det är nästan okänt för dem: latens.

vad är latens?

så fort det kan vara, även ljushastigheten är inte oändlig. Det tar tid för en foton att gå från punkt A till punkt B, och till exempel tar ljuset som genereras av solen 8 minuter att nå jorden. Våra datanätverk är inte ens nära den hastigheten, för först och främst är våra anslutningar inte gjorda med optisk fiber (som så småningom skulle vara lika snabb som ljus) utan med elektriska kablar och så överföringar över dessa medier är långsammare, men också för att det finns många apparater mellan källa och destination som behöver manipulera paketet. Källvärd, switchar, routrar, brandväggar, målvärd; varje ”hop” lägger tid till den totala tiden som ett paket behöver för att nå sin destination. Vi kan utforma denna situation så här:

(källa: https://stackoverflow.com/questions/8682702/how-to-calculate-packet-time-from-latency-and-bandwidth )

så, enkelt sagt, latens är den tid det tar för ett paket att gå från källa till destination.

i ett lokalt nätverk är det lätt att tillämpa en viss approximation och förklara att behandlingsfördröjningen är 0, och att flera växlar mellan två värdar inte lägger till ytterligare latens. När allt kommer omkring, när vi kör ett ping-kommando för att kontrollera om en värd är ansluten, är latensen alltid ”under 1 fröken” :

av denna anledning är det inte ovanligt att beräkna den maximala överföringshastigheten genom att helt enkelt titta på den tillgängliga bandbredden:

– 10 Gb ethernet-länk betyder 1250 MBps

och så vidare. Och om min bandbredd är 125mbps betyder det att jag kan överföra 125mb varje sekund.

varför latens är viktigt?

för att ignorera det, tillsammans med andra parametrar, leder till falska resultat!

titta på föregående exempel. Även i ett lokalt nätverk, där latensen är nära noll, finns det andra parametrar som kan påverka sluthastigheten. En framför allt: TCP-fönsterstorlek. Jag kommer inte att upprepa det som redan har skrivits på ett perfekt sätt av andra, så om du vill lära dig mer, Läs det här inlägget av Brad Hedlund. Vad är haken? Länkhastigheten vi brukar prata om är den rena kabellänk hastighet. Men på toppen av det måste vi köra flera protokoll, en över den andra, som TCP över IP. TCP delar upp data i paket, och storleken på paketen dikteras av TCP-fönsterstorleken: större detta värde, mer data kan överföras i en enda överföring. Sedan packas en nyttolast inuti ett paket, så det finns ytterligare byte för varje paket som ska överföras, även om de inte innehåller några data (det finns också en del overhead för den underliggande ethernet-ramen, tänk på all diskussion när det gäller Jumbo-ramar). Slutligen spelar TCP-latens sin roll, för jag kan bara överföra nästa paket när den föregående har nått sin destination, eftersom länken annars är upptagen med att överföra de andra paketen.

latens och fönsterstorlek blir avgörande när vi flyttar från lokala nätverk till offentliga nätverk. Här försvinner värdet < 1ms, och vi har högre värden att ta hänsyn till. Högre är latensen, mindre är den maximala” riktiga ” bandbredden jag kommer att se. Låt oss ta ett enkelt exempel: en kund har 100 Mbps länk till Internet och behöver överföra en 1TB-fil till sin tjänsteleverantör.

de vanliga teoretiska beräkningarna skulle vara enkla:

100 Mbps = 12,5 MBps

1 TB = 1000 GB = 1000000 MB

1000000 MB / 12,5 MBps = 80000 sekunder = 1333,33 minuter = 22,22 timmar eller (d:h:m:S): 22h:13m:20s

men om du försöker skicka den här filen till din leverantör kommer det aldrig att ta den här tiden att slutföra, om du inte och din tjänsteleverantör är anslutna till samma ethernet-länk; vilket innebär att du inte använder Internet alls!

hur man korrekt beräknar överföringshastighet

jag beräknade föregående värde ner till exakta sekunder med det här fina verktyget:

http://wintelguy.com/transfertimecalc.pl

om du tittar på det ser du dock samma ”approximationsfel” som jag pratade om tidigare: endast storlek och bandbredd beaktas. Ingen fönsterstorlek och ingen latens. Men WintelGuy-webbplatsen har mer fantastiska verktyg, och en är precis vad vi behöver:

http://wintelguy.com/wanperf.pl

i den här kan du se att alla viktiga parametrar listas och används för beräkningarna. Låt oss upprepa samma beräkning som vi gjorde tidigare, men nu med lite ny information:

vi lade till 40ms latens och accepterade de andra två standardvärdena (paketförlust och MTU). Vi har ingen chans att byta MTU via en internetlänk, eftersom det finns många apparater mellan oss och våra tjänsteleverantörer som inte är under vår kontroll. Detta är en av anledningarna till att många Telco erbjuder sina kunder MPLS privata länkar istället för VPN-länkar över offentligt internet, eftersom anslutningsinställningarna kan styras och ställas in av leverantören (ja, det finns lite inlåsning också, men det här är en annan historia…). Här ser du att TCP-overhead och latens redan påverkar den verkliga maximala genomströmningen, som faller ner till 94,9 MBps. Jag skulle dock säga att det här är en riktigt bra situation, och det kan vara värre: låt oss behålla alla andra parametrar som tidigare och öka latensen till 150ms:

genomströmningen minskas till 77,8 Mbps, en förlust på 22% av den teoretiska hastigheten. Och det kan vara ännu värre: en ADSL-anslutning har till exempel mer paketförlust, så om vi håller 150 ms latens, men vi ökar paketförlusten med 10 gånger, får vi detta (ignorera det faktum att ingen ADSL kan gå till 100 Mbps, det är gjort för att hålla samma hastighet över alla exempel):

Paketförlusten har ökats från 0.0001 (1 förlorat paket för varje 10000 överförd) till 0.001 (1 förlorat paket för varje 1000 överförd), och detta värde ensamt har minskat vår maximala hastighet med 75%!!!

så, nästa gång du ser din nya glänsande Internetlinje inte fungerar som förväntat, innan du skyller på din tjänsteleverantör eller programvaran du använder för att överföra dessa data, ta en bättre titt på ditt nätverk. Du kanske upptäcker att dessa 25Mbps är den snabbaste hastigheten du kan få.

Write a Comment

Din e-postadress kommer inte publiceras.