în slujba mea, trebuie să învețe o mulțime de lucruri despre mai multe subiecte de ea. Mai ales pe piața virtualizării, mulți oameni sunt de obicei bine pregătiți atunci când vine vorba de infrastructură, servere și stocare, dar am aflat că cel mai slab punct este de multe ori rețeaua. Există câteva subiecte care sunt obscure pentru mulți, cum ar fi Layer2 vs Layer3, BGP, Spanning Tree, dar există un subiect care este cu adevărat important chiar și pentru băieții de infrastructură, dar este aproape necunoscut pentru ei: latența.
ce este latența?
cât de repede poate fi, chiar și viteza luminii nu este infinită. Este nevoie de timp pentru ca un foton să treacă de la punctul A la punctul B și, de exemplu, lumina generată de soare durează 8 minute pentru a ajunge pe Pământ. Rețelele noastre de calculatoare nu sunt nici măcar apropiate de această viteză, deoarece în primul rând conexiunile noastre nu sunt realizate cu fibră optică (care ar fi în cele din urmă la fel de rapide ca lumina), ci cu cabluri electrice și astfel transmisiile pe aceste suporturi sunt mai lente, dar și pentru că există multe aparate între sursă și destinație care trebuie să manipuleze pachetul. Gazda sursă, comutatoare, routere, firewall-uri, gazda țintă; fiecare „hop” adaugă timp la timpul total de care are nevoie un pachet pentru a ajunge la destinație. Putem proiecta această situație astfel:
(sursa: https://stackoverflow.com/questions/8682702/how-to-calculate-packet-time-from-latency-and-bandwidth )
deci, pur și simplu spus, latența este timpul necesar unui pachet pentru a merge de la sursă la destinație.
într-o rețea locală este ușor să aplicați o anumită aproximare și să declarați că întârzierea procesării este 0 și, de asemenea, că comutatoarele multiple între două gazde nu adaugă latență suplimentară. La urma urmei, când rulăm o comandă ping pentru a verifica dacă o gazdă este conectată, latența este întotdeauna „sub 1 ms” :
din acest motiv, nu este neobișnuit să calculați viteza maximă de transfer prin simpla examinare a lățimii de bandă disponibile:
– 1 Gb ethernet link , împărțit la 8, îmi dă 125 MBps
– 10 Gb ethernet link înseamnă 1250 MBps
și așa mai departe. Și dacă lățimea mea de bandă este de 125 Mbps, înseamnă că pot transfera 125 MB în fiecare secundă.
de ce este importantă latența?
pentru că a-l ignora, împreună cu alți parametri, duce la rezultate false!
uitați-vă la exemplul anterior. Chiar și într-o rețea locală, unde latența este aproape de zero, există și alți parametri care pot afecta viteza finală. Unul mai presus de toate: dimensiunea ferestrei TCP. Nu voi repeta ceea ce a fost deja scris într-un mod perfect de alții, așa că, dacă doriți să aflați mai multe, citiți această postare de Brad Hedlund. Care-i șmecheria? Viteza legăturii despre care vorbim de obicei este viteza pură a legăturii prin cablu. Dar, pe deasupra, trebuie să rulăm mai multe protocoale, unul deasupra celuilalt, cum ar fi TCP over IP. TCP împarte datele în pachete, iar dimensiunea pachetelor este dictată de dimensiunea ferestrei TCP: mai mare această valoare, mai multe date pot fi transferate într-o singură transmisie. Apoi, o sarcină utilă este ambalată în interiorul unui pachet, deci există octeți suplimentari pentru fiecare pachet care naos să fie transmis, chiar dacă nu conțin date (există, de asemenea, unele aeriene pentru cadrul ethernet de bază, gândiți-vă la toate discuțiile în ceea ce privește cadrele Jumbo). În cele din urmă, latența TCP își joacă rolul, deoarece pot transmite următorul pachet doar după ce precedentul a ajuns la destinație, deoarece linkul este altfel ocupat transferând celelalte pachete.
latența și dimensiunea ferestrei devin primordiale atunci când trecem de la rețelele locale la rețelele publice. Aici, valoarea < 1ms dispare și avem valori mai mari de luat în considerare. Mai mare este latența, mai mică este lățimea maximă de bandă „reală” pe care o voi vedea. Să luăm un exemplu simplu: un client are 100 Mbps link către Internet și trebuie să transfere un fișier 1TB furnizorului său de servicii.
calculele teoretice obișnuite ar fi simple:
100 Mbps = 12,5 MBps
1 TB = 1000 GB = 1000000 MB
1000000 MB / 12,5 MBps = 80000 secunde = 1333,33 minute = 22,22 ore sau (d:h:m:S): 22h:13m:20s
dar dacă încercați să trimiteți acest fișier furnizorului dvs., nu va dura niciodată acest timp pentru a finaliza, cu excepția cazului în care dvs. și furnizorul dvs. de servicii sunteți conectați la același link ethernet; ceea ce înseamnă că nu utilizați deloc internetul!
cum se calculează corect viteza de transfer
am calculat valoarea anterioară până la secundele exacte folosind acest instrument frumos:
http://wintelguy.com/transfertimecalc.pl
dacă te uiți la ea, totuși, veți vedea aceeași „eroare de aproximare” despre care am vorbit anterior: numai dimensiunea și lățimea de bandă sunt luate în considerare. Nici o dimensiune fereastră, și nici o latență. Dar site-ul WintelGuy are instrumente mai uimitoare, iar unul este exact ceea ce avem nevoie:
http://wintelguy.com/wanperf.pl
în aceasta, puteți vedea că fiecare parametru important este listat și utilizat pentru calcule. Să repetăm același calcul pe care l-am făcut înainte, dar acum cu câteva informații noi:
am adăugat 40ms latență, și a acceptat celelalte două valori implicite (pierdere de pachete și MTU). Nu avem nicio șansă să schimbăm MTU printr-o legătură de Internet, deoarece există multe aparate între noi și furnizorii noștri de servicii care nu sunt sub controlul nostru. Acesta este unul dintre motivele pentru care multe Telco oferă clienților lor legături private MPLS în loc de legături VPN prin internet public, deoarece setările conexiunii pot fi controlate și reglate de furnizor (bine, există și un pic de blocare, dar aceasta este o altă poveste…). Aici, vedeți că TCP overhead și latența afectează deja debitul maxim real, care scade până la 94,9 MBps. Aș spune totuși că aceasta este o situație foarte bună și ar putea fi mai rău: să păstrăm orice alt parametru ca înainte și să creștem latența la 150ms:
debitul este redus la 77,8 Mbps, o pierdere de 22% din viteza teoretică. Și poate fi și mai rău: o conexiune ADSL, de exemplu, are mai multe pierderi de pachete, deci dacă păstrăm 150ms de latență, dar creștem pierderea pachetelor de 10 ori, obținem acest lucru (ignorăm faptul că niciun ADSL nu poate merge la 100 Mbps, este făcut pentru a menține aceeași viteză în toate exemplele):
pierderea de pachete a fost crescută de la 0,0001 (1 pachet pierdut pentru fiecare 10000 transmis) la 0.001 (1 pachet pierdut pentru fiecare 1000 transmis), iar această valoare singură a scăzut viteza noastră maximă cu 75%!!!
Deci, data viitoare când vedeți noua linie de internet strălucitoare care nu funcționează așa cum era de așteptat, înainte de a da vina pe furnizorul de servicii sau pe software-ul pe care îl utilizați pentru a transfera aceste date, aruncați o privire mai bună asupra rețelei dvs. Puteți găsi că aceste 25Mbps este cea mai rapidă viteză puteți obține.