Онлайн ping

З нашого сервера йдуть справжні ICMP-запити, по одному пакету на секунду. Відповіді з'являються тут у міру надходження.

Що ping вимірює і чого не вимірює

Ping надсилає вузлу невеликий ICMP Echo Request і засікає, скільки часу йде відповідь Echo Reply. Це весь механізм. Його описали 1981 року в RFC 792, а сам інструмент написали за вечір у грудні 1983-го — що дещо каже про те, як мало відтоді довелося міняти.

Число, яке він дає, — це час обігу: туди й назад, разом із часом, який дальній бік витратив на те, щоб помітити пакет і відповісти. Це не час завантаження сторінки, не міра пропускної здатності і не затримка в один бік — просто поділити навпіл не можна, бо шлях назад часто не збігається зі шляхом туди.

Одне варто розуміти до того, як читати будь-який результат на цій сторінці: перевірка йде з нашого сервера, а не з вашого комп'ютера. Вона вимірює маршрут між нашою мережею і вузлом, який ви назвали. Це саме те, що потрібно, коли питання звучить «чи доступний цей вузол з інтернету взагалі», і саме не те, коли питання звучить «чому в мене погане з'єднання»: для другого єдиний осмислений ping — той, який ви запустите самі, з машини, на якій проблема.

Як читати числа

Важать чотири значення, і люди зазвичай дивляться спершу не на те.

Затримка (мінімум і середнє)
Наскільки вузол далекий у мережевому сенсі. Беріть мінімум як чесну підлогу маршруту — це та спроба, у якій ніде нічого не стояло в черзі. Середнє показує, чого чекати на практиці.
Втрати пакетів
Найшкідливіше число з усіх. Будь-що більше за нуль до нормально утримуваного вузла потребує пояснення; кількох відсотків досить, щоб відеодзвінки затиналися, а передача файлів не виходила на швидкість, — бо втрати змушують TCP різко пригальмувати.
Джитер — розкид між мінімумом і максимумом
Для всього інтерактивного мінливість важить більше за саму затримку. Рівні 90 мс для голосового дзвінка комфортні; середні 40 мс, які стрибають від 10 до 300, — ні, бо приймальний бік мусить буферизувати під найгірший випадок.
TTL у відповіді
Узагалі не про час — і тихо корисний; про нього нижче.

Яка затримка нормальна

Тут є жорстка фізична підлога, і знати про неї варто, щоб перестати чекати неможливого. Світло в оптичному волокні йде приблизно на дві третини швидкості у вакуумі — близько 200 000 км за секунду, — тобто приблизно 1 мс затримки в один бік на кожні 100 км кабелю. А кабель ніколи не лежить по прямій.

Якщо вузол у вашому ж місті відповідає за 120 мс, відстань цього не пояснює. Або трафік іде кругом — маршрути між сусідніми мережами інколи сходяться лише в іншій країні, — або десь на шляху затор.

Немає відповіді ≠ вузол лежить

Це найпоширеніше хибне прочитання результату, і воно коштує людям годин. Тайм-аут означає одну з кількох речей, і лише одна з них — «машина вимкнена»:

Практичне правило: ping доводить досяжність, коли відповідає, і не доводить нічого, коли не відповідає. Якщо треба знати, чи служба працює, питайте службу — перевірте, чи приймає з'єднання її порт, або подивіться, що насправді віддає вебсервер. Вузол, який ігнорує ping і при цьому спокійно завершує TCP-рукостискання, не зламаний; він звичайний.

Поле TTL і що воно видає

Кожен пакет несе лічильник часу життя, який кожен маршрутизатор зменшує на одиницю, — тому пакет, що потрапив у петлю, зрештою вмирає, а не кружляє вічно. Операційні системи стартують із передбачуваних значень: 64 в Linux, macOS і більшості Unix-систем, 128 у Windows, 255 у чималої частини мережевого обладнання.

Відніміть побачений TTL від найближчого більшого стартового значення — і матимете кількість маршрутизаторів, які перетнула відповідь. TTL 57 означає старт із 64 і сім хопів. Це груба оцінка кількості хопів і груба підказка про операційну систему дальнього боку, отримані задарма, — і це подеколи найшвидший спосіб помітити, що трафік, який ви вважали місцевим, долає п'ятнадцять маршрутизаторів дорогою.

Затримка, пропускна здатність і те, що плутають

Затримка й пропускна здатність незалежні, а їхнє змішування стоїть за більшістю історій «ми збільшили канал, і це не допомогло». Пропускна здатність — скільки влазить у трубу за секунду; затримка — скільки часу йде одна річ. Супутниковий канал із величезною ємністю все одно має 600 мс затримки, а скромне з'єднання до близького сервера все одно відчувається миттєвим.

Що з двох вам важливе, залежить винятково від задачі. Завантажити великий файл — задача пропускної здатності. Голосовий дзвінок, віддалений робочий стіл, гра або сторінка, яка послідовно тягне сорок дрібних файлів, — усе це задачі затримки, бо кожен крок чекає на обіг, перш ніж рушити далі. Саме тому подвоєння швидкості каналу часто ніяк не змінює того, наскільки швидким відчувається сайт.

Є ще випадок, коли високий ping — узагалі не поломка: bufferbloat, роздуті черги. Коли канал зайнятий повністю — велике вивантаження, чиясь резервна копія, — пакети стоять у завеликих буферах, затримка йде в сотні мілісекунд, а пропускна здатність лишається чудовою. Якщо ping нормальний на вільній лінії й жахливий на завантаженій, це саме воно, і лікується воно керуванням чергами на вашому ж маршрутизаторі, а не чимось на тому боці.

Робочий порядок діагностики

  1. Пінгуйте пункт призначення. Відповідь із притомною затримкою і без втрат означає, що мережевий шлях справний, а проблема вища за нього — у застосунку.
  2. Пінгуйте щось свідомо справне поруч — великий публічний сайт. Якщо й до нього повільно або з втратами, справа у вашому боці, а не в пункті призначення.
  3. Порівняйте звідкись іще. Запустіть перевірку на цій сторінці, з нашої мережі, до того самого вузла. Якщо в нас чисто, а у вас ні — різниця лежить на вашому шляху: провайдер, лінія, обладнання.
  4. Перевіряйте службу, а не лише вузол. Вузол, що відповідає, з мертвою службою виглядає для ping точнісінько як здоровий.
  5. Подивіться, у що розв'язується ім'я. Повільні або хибні відповіді часто є проблемою DNS, яку діагностували як мережеву, — а адреса, яку ви пінгуєте, може бути не тією, якою користується застосунок.

Чому ця перевірка обмежена навмисно

Ми надсилаємо невелику кількість пакетів, по одному на секунду, і зупиняємось. Цього досить, щоб побачити затримку, джитер і втрати, і цього свідомо недосить, щоб бути корисним тому, хто хоче спрямувати трафік на когось іншого. Приватні й зарезервовані діапазони відхиляються одразу: адреса всередині вашої мережі з нашої недосяжна за визначенням, тож перевірка до неї могла б дати лише оманливий результат.

Часті запитання

Який ping вважати хорошим?

Це майже цілком питання відстані. Менше за 10 мс означає вузол у вашому місті чи регіоні, 10–40 мс — та сама країна, 70–120 мс — нормально через океан, а 500 мс і більше — геостаціонарний супутниковий канал. Світло у волокні долає близько 100 км за мілісекунду в один бік, тому трансатлантичний обіг фізично не може бути значно меншим за 60 мс, хоч би що вам продавали.

Вузол не відповідає на ping. Він лежить?

Найімовірніше ні. Дуже багато серверів і фаєрволів відкидають ехо-запити за політикою, бездоганно обслуговуючи при цьому справжній трафік, а маршрутизатори навмисно обмежують кількість відповідей, бо обробляють ping програмно. Мовчання не доводить нічого. Якщо треба знати, чи працює служба, перевірте, чи приймає з'єднання її порт, або що насправді віддає вебсервер.

Чи вимірює це моє власне з'єднання?

Ні. Пакети йдуть із нашого сервера, тож ви бачите шлях між нашою мережею і названим вузлом. Це правильна перевірка для питання «чи доступний вузол з інтернету» і неправильна для питання «чому в мене повільно». Для власного з'єднання пінгуйте з машини, на якій проблема, а потім порівняйте два результати: різниця між ними і є та частина шляху, яка належить вам.

Чим затримка відрізняється від пропускної здатності?

Пропускна здатність — скільки даних проходить за секунду; затримка — скільки часу займає один обмін. Вони незалежні. Супутниковий канал може нести величезний обсяг даних і мати при цьому 600 мс затримки — тому збільшення каналу часто прискорює завантаження й нічого не змінює у відчутті швидкості сайту. Дзвінки, віддалений робочий стіл і ігри — це задачі затримки; великі завантаження — задачі пропускної здатності.

Чому втрати пакетів важливіші за високий ping?

Бо TCP сприймає втрату як ознаку затору й різко зменшує швидкість передачі. Рівні 200 мс без втрат придатні для більшості задач; 30 мс із двома відсотками втрат дають затинання дзвінків і передачу, яка ніколи не виходить на повну швидкість. А от втрати на проміжному хопі часто безпечні: багато маршрутизаторів обробляють пакети, адресовані їм самим, за залишковим принципом, бездоганно пересилаючи решту.

Ping нормальний, але стає жахливим, коли хтось щось вивантажує. Чому?

Це bufferbloat, роздуті черги. Коли канал зайнятий повністю, пакети стоять у завеликих чергах на вашому ж маршрутизаторі чи модемі — затримка йде в сотні мілісекунд, а пропускна здатність лишається чудовою. З віддаленим вузлом і провайдером усе гаразд, а лікується це керуванням чергами (сучасні алгоритми зазвичай позначені як fq_codel або cake) на пристрої з вашого боку лінії.

Що каже значення TTL у результаті?

Кожен маршрутизатор, який пересилає пакет, зменшує його час життя на одиницю, а операційні системи стартують із передбачуваних чисел: 64 в Linux і macOS, 128 у Windows, 255 у більшості мережевого обладнання. Різниця між найближчим стартовим значенням і тим, що прийшло, дає кількість маршрутизаторів, які перетнула відповідь, плюс непогану підказку про операційну систему дальнього боку.

Чи можна звідси пінгувати адресу в моїй домашній мережі?

Ні, і жоден сайт не може. Приватні діапазони на кшталт 192.168.x.x і 10.x.x.x існують незалежно всередині мільйонів окремих мереж і не маршрутизуються через інтернет, тому запит із нашого сервера ніколи не дійшов би до вашого пристрою. Ми відхиляємо їх явно, а не віддаємо тайм-аут, який виглядав би як справжній результат.

Пов'язані перевірки