Pre mnohé úlohy sú oneskorenia medzi klientom a serverom kritické, napríklad pri online hrách, video/hlasových konferenciách, IP telefónii, VPN atď. Ak je server príliš ďaleko od klienta na úrovni siete IP, oneskorenia (populárne nazývané „ping“, „lag“) budú prekážať pri práci.
Geografická blízkosť servera sa nie vždy rovná blízkosti na úrovni smerovania IP. Napríklad server v inej krajine vám môže byť „bližší“ ako server vo vašom meste. Všetko kvôli zvláštnostiam smerovania a výstavby siete.
Ako si vybrať server, ktorý je čo najbližšie všetkým potenciálnym klientom? Čo je sieťové pripojenie IP? Ako nasmerovať klienta na najbližší server? Dozvieme sa v článku.
Meranie oneskorení
Najprv sa naučme merať oneskorenia. Táto úloha nie je taká jednoduchá, ako sa môže zdať, pretože oneskorenia sa môžu líšiť pre rôzne protokoly a veľkosti paketov. Môžete tiež zmeškať krátkodobé udalosti, ako sú poklesy trvajúce niekoľko milisekúnd.
ICMP - pravidelný ping
Použijeme unixovú utilitu ping, ktorá umožňuje manuálne nastaviť intervaly medzi odosielaním paketov, čo verzia ping pre Windows nedokáže. Je to dôležité, pretože ak sú medzi paketmi dlhé prestávky, možno jednoducho nevidíte, čo sa medzi nimi deje.
Veľkosť balíka (možnosť -s) - utilita ping štandardne odosiela pakety s veľkosťou 64 bajtov. Pri takýchto malých paketoch nemusia byť javy vyskytujúce sa pri väčších paketoch badateľné, preto nastavíme veľkosť paketu na 1300 bajtov.
Interval medzi paketmi (možnosť -i) — čas medzi odoslaním údajov. Štandardne sa pakety posielajú raz za sekundu, je to veľmi dlhé, skutočné programy posielajú stovky a tisíce paketov za sekundu, takže interval nastavíme na 0.1 sekundy. Menej si program jednoducho nedovolí.
V dôsledku toho príkaz vyzerá takto:
ping -s 1300 -i 0.1 yandex.ru
Tento dizajn vám umožňuje vidieť realistickejší obraz oneskorení.
Ping cez UDP a TCP
V niektorých prípadoch sa pripojenia TCP spracovávajú inak ako pakety ICMP, a preto sa merania môžu líšiť v závislosti od protokolu. Často sa tiež stáva, že hostiteľ jednoducho nereaguje na ICMP a bežný ping nefunguje. To robí napríklad hostiteľ celý život. microsoft.com.
Užitočnosť
Keďže UDP a TCP fungujú na konkrétnych portoch, musíme „pingnúť“ konkrétny port. Skúsme ping na TCP 80, teda port webového servera:
$ sudo nping --tcp -p 80 --delay 0.1 -c 0 microsoft.com
Starting Nping 0.7.80 ( https://nmap.org/nping ) at 2020-04-30 13:07 MSK
SENT (0.0078s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40 seq=3401731188 win=1480
SENT (0.1099s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40 seq=3401731188 win=1480
RCVD (0.2068s) TCP 13.77.161.179:80 > 10.0.0.1:63236 SA ttl=43 id=0 iplen=44 seq=1480267007 win=64240 <mss 1440>
SENT (0.2107s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40 seq=3401731188 win=1480
RCVD (0.3046s) TCP 13.77.161.179:80 > 10.0.0.1:63236 SA ttl=43 id=0 iplen=44 seq=1480267007 win=64240 <mss 1440>
SENT (0.3122s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40 seq=3401731188 win=1480
RCVD (0.4247s) TCP 13.77.161.179:80 > 10.0.0.1:63236 SA ttl=42 id=0 iplen=44 seq=2876862274 win=64240 <mss 1398>
Max rtt: 112.572ms | Min rtt: 93.866ms | Avg rtt: 101.093ms
Raw packets sent: 4 (160B) | Rcvd: 3 (132B) | Lost: 1 (25.00%)
Nping done: 1 IP address pinged in 0.43 seconds
Štandardne nping odošle 4 pakety a zastaví sa. Možnosť -c 0 umožňuje nekonečné odosielanie paketov, na zastavenie programu je potrebné stlačiť Ctrl+C. Na konci sa zobrazia štatistiky. Vidíme, že priemerná hodnota rtt (obojsmerný čas) je 101 ms.
MTR - traceroute na steroidoch
Program
$ sudo mtr microsoft.com
Rozhranie programu MTR (na kliknutie). Sledovanie trasy na microsoft.com sa začalo
MTR okamžite zobrazí ping každému hostiteľovi v reťazci a údaje sa počas behu programu neustále aktualizujú a je možné vidieť krátkodobé zmeny.
Snímka obrazovky ukazuje, že uzol #6 má straty paketov, ale v skutočnosti to nie je úplne pravda, pretože niektoré smerovače môžu jednoducho zahodiť pakety s vypršaným TTL a nevrátiť chybovú odpoveď, takže údaje o strate paketov tu môžu byť ignorované.
WiFi vs kábel
Táto téma nie je celkom relevantná k článku, ale podľa mňa je v kontexte meškania veľmi dôležitá. WiFi naozaj milujem, no ak budem mať čo i len najmenšiu možnosť pripojiť sa na internet káblom, využijem ju. Tiež vždy odrádzam ľudí od používania WiFi kamier.
Ak hráte vážne online strieľačky, streamujete video alebo obchodujete na burze: použite internet cez kábel.
Tu je vizuálny test na porovnanie pripojení WiFi a káblov. Ide o ping na WiFi router, teda ešte ani na internet.
(Kliknuteľné) Porovnanie pingu s WiFi routerom cez kábel a cez WiFi
Je vidieť, že cez WiFi je oneskorenie o 1 ms dlhšie a niekedy sú pakety s oneskorením desaťkrát dlhšie! A to je len krátky časový úsek. Ten istý smerovač zároveň vytvára stabilné oneskorenia <1 ms.
Vo vyššie uvedenom príklade sa používa WiFi 802.11n na 2.4 GHz, k prístupovému bodu WiFi je pripojený iba notebook a telefón. Ak by bolo na prístupovom bode viac klientov, výsledky by boli oveľa horšie. To je dôvod, prečo som tak proti prepínaniu všetkých kancelárskych počítačov na WiFi, ak je možné ich dosiahnuť pomocou kábla.
IP pripojenie
Takže sme sa naučili merať oneskorenia na serveri, skúsme nájsť najbližší server k nám. Aby sme to dosiahli, môžeme sa pozrieť na to, ako funguje smerovanie nášho poskytovateľa. Na to je vhodné využiť službu
Keď vstúpime na stránku, vidíme, že naša IP adresa patrí do autonómneho systému
Pri pohľade na graf konektivity autonómnych systémov vidíme, prostredníctvom ktorých poskytovateľov vyššej úrovne je náš poskytovateľ prepojený so zvyškom sveta. Na každú z bodiek sa dá kliknúť, môžete vojsť a prečítať si, o akého poskytovateľa ide.
Graf konektivity autonómnych systémov poskytovateľa
Pomocou tohto nástroja môžete študovať, ako sú štruktúrované kanály akéhokoľvek poskytovateľa vrátane hostingu. Pozrite sa, s ktorými poskytovateľmi je priamo prepojený. Ak to chcete urobiť, musíte zadať IP adresu servera do vyhľadávania bgp.he.net a pozrieť sa na graf jeho autonómneho systému. Môžete tiež pochopiť, ako je jedno dátové centrum alebo poskytovateľ hostingu prepojené s iným.
Väčšina dopravných výmenných bodov poskytuje špeciálny nástroj nazývaný zrkadlo, ktorý vám umožňuje ping a traceroute z konkrétneho smerovača v mieste výmeny.
Tu, napríklad,
Takže pri výbere servera môžeme vopred vidieť, ako bude vyzerať z rôznych bodov výmeny návštevnosti. A ak sa naši potenciálni klienti nachádzajú v určitej geografickej oblasti, vieme nájsť optimálne miesto pre server.
Vyberte najbližší server
Rozhodli sme sa zjednodušiť postup pri hľadaní optimálneho servera pre našich klientov a vytvorili sme stránku s automatickým testovaním miest v okolí:
Keď navštívite stránku, skript meria oneskorenia z vášho prehliadača na každý server a zobrazuje ich na interaktívnej mape. Po kliknutí na dátové centrum sa zobrazia informácie s výsledkami testov.
Tlačidlo vás prenesie na stránku testovania latencie pre všetky naše dátové centrá. Ak chcete zobraziť výsledky testu, kliknite na bod dátového centra na mape
Zdroj: hab.com