Усунення затримки мережі за допомогою Wireshark

Затримка в мережі – це часова затримка, яка виникає при передачі даних або запитів від відправника до отримувача в межах мережевої інфраструктури. Розгляньмо, як можна виявити та усунути ці затримки.

Кожна операція, що використовує мережу, наприклад, завантаження веб-сторінки, перехід за посиланням або запуск програми, включаючи онлайн-ігри, вважається мережевою активністю. Діяльність користувача є запитом, а час реакції веб-застосунку – це період, потрібний для обробки цього запиту.

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

Поняття “низька затримка” вказує на невеликі часові проміжки при передачі даних. І навпаки, значні затримки або надмірна латентність є небажаними, оскільки вони негативно впливають на користувацький досвід.

Як оптимізувати мережеву затримку?

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

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

Які чинники спричиняють мережеву затримку?

Існує ряд основних причин повільного з’єднання з мережею, серед яких:

  • Значна затримка
  • Залежності програмного забезпечення
  • Втрата пакетів
  • Проміжні пристрої
  • Неоптимальні розміри вікон

У цій статті ми розглянемо кожну з цих причин та методи їх вирішення за допомогою Wireshark.

Аналіз за допомогою Wireshark

Значна затримка

Значна затримка вказує на тривалий час передачі даних між двома кінцевими точками. Вплив високої затримки на мережеву комунікацію може бути значним. На прикладі, наведеному нижче, ми розглянемо час кругової затримки при завантаженні файлу при високій затримці. Час затримки в обидві сторони часто перевищує одну секунду, що є неприйнятним.

  • Відкрийте статистику в Wireshark.
  • Виберіть опцію “Графік потоку TCP”.
  • Для визначення часу завантаження файлу, оберіть часовий графік “Час кругового проходження”.

Wireshark застосовується для обчислення часу кругового проходження, щоб визначити, чи є він причиною неправильної роботи мережі зв’язку з протоколом TCP. Протокол TCP використовується в багатьох програмах, включаючи інтернет-серфінг, передачу даних, протокол передачі файлів та багато інших. Часто операційну систему можна налаштувати для ефективнішої роботи на каналах зі значною затримкою, особливо коли хости використовують Windows XP.

Залежності програмного забезпечення

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

Наприклад, при перегляді веб-сторінки, цільовий сервер може посилатися на декілька інших веб-сайтів. Наприклад, для завантаження головної сторінки сайту www.espn.com, необхідно відвідати 16 хостів, що надають рекламу та контент для цієї сторінки.

На наведеному вище зображенні, вікно “Розподіл навантаження HTTP” в Wireshark демонструє перелік всіх серверів, які використовуються головною сторінкою www.espn.com.

Втрата пакетів

Однією з поширених проблем у мережах є втрата пакетів. Вона виникає, коли пакети даних не доставляються правильно від відправника до отримувача через інтернет. Коли користувач відвідує веб-сайт і починає завантажувати його елементи, пропущені пакети викликають повторну передачу, що збільшує час завантаження веб-файлів та сповільнює процес завантаження в цілому.

Особливо негативний вплив має втрата пакетів, коли програма використовує TCP. Коли з’єднання TCP виявляє втрачений пакет, пропускна здатність автоматично знижується для компенсації проблем з мережею.

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

Як виглядає втрата пакета? Вона може проявлятися по-різному, коли програма працює через TCP. В одному сценарії, отримувач відстежує пакети за їхніми порядковими номерами і виявляє відсутній пакет. Клієнт робить три запити на відсутній пакет (дублікати підтвердження), що призводить до повторного надсилання. Коли відправник помічає, що отримувач не підтвердив отримання пакета, відправник закінчує час очікування і повторно передає пакет.

Wireshark вказує на виникнення перевантаження мережі, а багаторазові підтвердження призводять до повторного передавання проблемного трафіку, позначаючи його кольором. Велика кількість дублікатів підтвердження сигналізує про втрату пакетів і значну затримку в мережі.

Для підвищення швидкості мережі, важливо визначити точне місце втрати пакетів. У випадку втрати пакетів, ми використовуємо Wireshark для відстеження їх проходження, поки втрачені пакети не перестануть бути видимими. В цей момент ми перебуваємо “вище” місця, де пакети з’являються, отже ми знаємо, на чому зосередити наші зусилля з налагодження.

Проміжні пристрої

Мережеві “поліцейські” – це пристрої, які здійснюють перенаправлення трафіку, наприклад, комутатори, маршрутизатори та брандмауери. У випадку втрати пакетів, ці пристрої слід дослідити як ймовірну причину.

Затримка може бути додана до шляху цими проміжними пристроями. Наприклад, якщо ввімкнено пріоритезацію трафіку, ми можемо спостерігати додаткову затримку, внесену в потік з низьким пріоритетом.

Неоптимальні розміри вікон

Крім операційної системи Microsoft, у мережі TCP/IP існують й інші “вікна”.

  • Ковзне вікно
  • Вікно приймача
  • Вікно контролю заторів

Ці вікна разом впливають на ефективність мережевого зв’язку на базі TCP. Розглянемо кожне з цих вікон та їхній вплив на пропускну здатність мережі.

Ковзне вікно

Ковзне вікно використовується для передачі наступних сегментів TCP через мережу, після підтвердження отримання даних. Відправник отримує підтвердження про передані фрагменти даних, і ковзне вікно розширюється. Якщо в мережі немає втрачених передач, можна передавати більші обсяги даних. У випадку втрати пакета, ковзне вікно зменшується, оскільки мережа не може впоратися зі збільшенням об’єму даних у лінії.

Вікно приймача

Вікно приймача в стеку TCP – це буферний простір. Коли дані отримано, вони зберігаються в цьому буфері, доки їх не обробить програма. Вікно приймача заповнюється, коли програма не встигає за швидкістю отримання, що призводить до сценарію “нульового вікна”. Передача даних до хоста повинна бути припинена, коли приймач оголошує про умову нульового вікна. Швидкість пропускної здатності падає до нуля. Метод, відомий як масштабування вікна (RFC 1323), дозволяє хосту збільшити розмір вікна приймача та зменшити ймовірність сценарію нульового вікна.

На зображенні вище показано 32-секундну затримку мережевого з’єднання через сценарій нульового вікна.

Вікно заторів

Вікно перевантаження визначає максимальний обсяг даних, який може обробити мережа. Швидкість передачі пакетів відправника, швидкість втрати пакетів у мережі та розмір вікна отримувача впливають на цей показник. Вікно перевантаження постійно збільшується під час справного мережевого з’єднання, доки передача не завершиться або не досягне “стелі”, встановленої пропускною здатністю мережі, можливостями передачі відправника або розміром вікна одержувача. Кожне нове підключення запускає процедуру узгодження розміру вікна заново.

Поради для ефективної мережі

  • Навчіться використовувати Wireshark для швидкого і точного визначення першопричини низької продуктивності.
  • Визначте джерело затримки в мережевому шляху та, якщо це можливо, зменште її до прийнятного рівня.
  • Знайдіть і усуньте причину втрати пакетів.
  • Перевірте розмір вікна передачі даних і, якщо це можливо, зменште його.
  • Проаналізуйте продуктивність проміжних пристроїв, щоб переконатися, що вони не додають затримку або не пропускають пакети.
  • Оптимізуйте програми для передачі більших обсягів даних і, якщо можливо, своєчасного отримання даних з вікна приймача.

Висновок 👨‍🏫

Ми розглянули основні причини проблем з продуктивністю мережі, але один аспект, який не можна ігнорувати, – це відсутність розуміння поведінки мережевих комунікацій. Wireshark забезпечує “рентгенівське” бачення мережі, подібно до того, як рентген та комп’ютерна томографія дозволяють точно і швидко діагностувати стан людського тіла. Цей інструмент став незамінним для виявлення та усунення проблем у мережах.

Тепер ви можете перевіряти і аналізувати продуктивність мережі, використовуючи різноманітні фільтри та інструменти Wireshark. 👍