Ганна Сергєєва
Швидко виявити та усунути проблеми зі зв'язком у мережах SIP адміністратору допоможе знання принципів роботи протоколу SIP та грамотне застосування Wireshark.
І все це доведеться локалізувати та усувати інженеру служби технічної підтримки чи адміністратору мережі. Причому, як завжди, від нього чекають блискавичної реакції та стовідсоткових результатів.
Звідки виникають проблеми

Мал. 1. Приклад мережі SIP
Багаторічний досвід показує, що для виявлення, аналізу та усунення тієї чи іншої проблеми зв'язку, що виникла, часто потрібно розглянути і оцінити безпосередньо сам SIP-трафік, що приходить від VoIP-клієнта.
Зрозуміло, для грамотного аналізу проблем із викликами в SIP мережах необхідно дотримуватися двох важливих умов. Потрібно вибрати та застосувати відповідний інструмент для збирання та аналізу трафіку. А також, що набагато важливіше, під час аналізу потрібно добре орієнтуватися у механізмах роботи даного протоколу.
Структура повідомлень SIP
У протоколі SIP структура повідомлень наступна (Рис. 2).

Рис.2. Структура повідомлень протоколу SIP
Заголовки повідомлення містять дані, важливі передачі пакетів. Ось найчастіше використовувані.
Також може містити ім'я користувача, наприклад, якщо його потрібно візуально відобразити на дисплеї.
Від використовується для ідентифікації відправника запиту. Структура аналогічна до поля То.
Call-ID — це унікальний ідентифікатор сеансу зв'язку або всіх реєстрацій окремого клієнта. Його значення задається стороною, яка ініціює виклик. Містить літерно-числове значення, символ-розділювач (@) та ім'я робочої станції, яка надала це значення (наприклад, 123 [email protected]) . Слід зазначити, що якщо з однією мультимедійною конференцією пов'язано кільказ'єднань, то кожне з них матиме власний Call-ID.
CSeq – унікальний ідентифікатор запиту, пов'язаного з одним з'єднанням. Використовується для кореляції запитів та відповідей. Містить числове значення (від 1 до 232) та текстову вказівку типу запиту (наприклад, 2 INVITE).
Content-Type визначає формат, в якому описано сеанс зв'язку (наприклад, SDP). Саме опис сеансу міститься у тілі повідомлення.
Content-Length вказує довжину тіла повідомлення.
Алгоритми встановлення з'єднання SIP
У стандарті сигналізації за протоколом SIP передбачено три базові сценарії процедури встановлення з'єднання:
безпосередньо між користувачами мережі;
за участю проксі-сервера.
Цей сценарій передбачає наступну послідовність операцій (рис. 3).

Далі викликаючий користувач має можливість зв'язку безпосередньо з користувачем, що викликається. Він посилає новий запит INVITE (6), з тим самим ідентифікатором виклику Call - ID , але з іншим номером послідовності Cseq .
Саме повідомлення містить SDP-інформацію про функціональні можливості обладнання сторони, що викликає. Викликана сторона повертає відповідь 100 Trying (7), за допомогою якого сигналізує про прийом INVITE і початок його обробки. При прийомі цієї відповіді таймери сторони, що викликає, перезапускаються. Після того, як обладнання сторони, що викликається, завершило обробку надійшов запиту, воно сповіщає свого користувача про вхідний виклик і разом з тим повертає відповідь 180 Ringing (8) зустрічній стороні. Як тільки абонент, що викликається, прийняв вхідний виклик, у напрямку до зухвалої сторони надсилається повідомлення 200 OK (9). Воно містить SDP-інформацію про функціональні можливості обладнання, що викликаєтьсякористувача. Викликаюча сторона надсилає повідомлення ACK (10), за допомогою чого підтверджує прийом відповіді. Тепер фаза встановлення з'єднання вважається завершеною, і дзвінок переходить у розмовну фазу. Після завершення розмови будь-яка із сторін може передати завершальне повідомлення BYE (11), яке буде підтверджено відповіддю 200 OK (12).
З'єднання SIP за участю проксі-сервера
Цей сценарій передбачає наступну послідовність операцій (рис. 4).

Мал. 4. Встановлення з'єднання SIP через проксі-сервер
Як тільки абонент прийняв дзвінок, зустрічній стороні надсилається повідомлення 200 OK (6). Воно містить SDP-інформацію про функціональні можливості обладнання абонента, що викликається. Користувач підтверджує прийом відповіді повідомленням ACK (7). Фаза встановлення з'єднання вважається завершеною, і дзвінок переходить у розмовну фазу. Після завершення розмови кожна зі сторін передає завершальне повідомлення BYE (8), яке буде підтверджено відповіддю 200 OK (9). Всі запити та відгуки передаються через проксі-сервер, який, у свою чергу, може змінювати деякі поля.
Тепер, вже добре орієнтуючись в основних процедурах роботи протоколу SIP, можна перейти до вибору програмних засобів для збору трафіку та подальшого аналізу.
Які завдання потрібно вирішувати
Для виявлення проблем зв'язку в мережах SIP, фахівцю, який забезпечує обслуговування мережі, потрібно вирішувати такі завдання:
Виконувати перевірку SIP-трафіку, який надходить на сервер. Таким чином, можна переконатися, що трафік не заблокований брандмауером між VoIP-провайдером і сервером або що трафік не заблокований брандмауером на стороні клієнта.
Перевірити формат різних повідомлень протоколу SIP (таких якINVITE та інші), які були надіслані VoIP-шлюзом або VoIP-провайдером.
Здійснювати перевірку запитів, які виконуються за протоколом STUN.
Прослуховувати виявлені голосові дзвінки та оцінювати якість обслуговування.
Вибір інструменту. Wireshark
Існує ціла низка програмних засобів, більш менш підходящих для збору мережного трафіку. Однак вони використовуються обмеженим колом технічних фахівців. І серед них можна знайти такі інструменти, які дійсно будуть ефективними та допоможуть у щоденній роботі, пов'язаній з обслуговуванням мереж.
Автор пропонує зупинити вибір на програмі Wireshark, яку і сам успішно використовує.
Програма Wireshark (раніше відома під назвою Ethereal), серед додатків з відкритим кодом є загальноприйнятим фактичним стандартом для дослідження мереж, а також аналізу протоколів. Вона дає можливість виконувати низькорівневу фільтрацію пакетів та проводити їх аналіз. Wireshark дозволяє відкривати та працювати з файлами, що містять захоплені мережеві дані (trace files), та детально розглядати їх аж до кожного пакета.
Програма Wireshark знаходить широке застосування серед дослідників мереж. Адміністратори мереж з її допомогою виявляють причини проблем, що виникають у мережах. Фахівцям у галузі мережної безпеки програма допомагає у пошуку проблем із безпекою мереж. Розробники реалізацій протоколів застосовують Wireshark у налагоджувальних цілях, а користувачі - у процесі вивчення принципів функціонування мережевих протоколів.
До очевидних переваг програми відносяться вільне поширення, наявність регулярних оновлень, широке коло користувачів. Велика кількість важливих налаштувань і функцій, а також зручний іЗрозумілий інтерфейс мають важливе значення у ситуаціях, коли потрібен терміновий аналіз та оперативне усунення виникаючих критичних технічних проблем зі зв'язком.
Отже, зупинимося та докладніше розглянемо дії, які необхідно виконати для збору SIP-трафіку за допомогою програми Wireshark.
Насамперед, необхідно завантажити [5] та інсталювати сам Wireshark.
Далі, запустивши програму, потрібно увімкнути в меню інтерфейси для збору трафіку. Для цього потрібно скористатися командою меню Capture > Interface» (рис. 5).
Рис.5. Увімкнення інтерфейсів для збирання трафіку за допомогою програми Wireshark
Тут необхідно вибрати той чи інший мережний інтерфейс, для якого Wireshark буде виконувати відстеження трафіку. Після натискання на кнопку "Start" відстежуватиметься і відображатиметься вся інформація про пакети, що проходять через даний інтерфейс.
Щоб Wireshark відстежував лише SIP-трафік, необхідно задати відповідний фільтр (у головному вікні програми у полі Filter вказати sip).
Тепер, коли всі налаштування задані, адміністратору потрібно відтворити (повторити) ту саму дію, яку він бажає проаналізувати (це може бути, наприклад, вихідний дзвінок або реєстрація на VoIP-провайдері).
Головне вікно програми відображатиме лише SIP-пакети (рис.6). Після завершення роботи всі дані можуть бути збережені для подальшого аналізу (за допомогою меню File).

Рис.6. Відображення SIP-пакетів у Wireshark
Тут усі дані представлені у зручному вигляді: можна швидко переміщатися за списком послідовних запитів та відгуків або ж переглядати детальну інформацію щодо кожного повідомлення.
Таблиця 1. Зручні фільтри для відображення SIP-пакетів