Как устранить нестабильность связи и «кваканье» в SIP-телефонии на базе Asterisk и Mikrotik?

Системный администратор IT и автоматизация бизнеса
← На главную

Проблемы с качеством голоса в IP-телефонии — одна из самых сложных задач для системного администратора. Ситуация, когда внутренняя связь работает идеально, а внешние звонки «заикаются» или обрываются, часто списывается провайдерами на «проблемы в вашей локальной сети». В этой статье мы подробно разберем, как провести комплексную диагностику инфраструктуры, выявить узкие места в настройках Mikrotik и устранить потери пакетов, мешающие нормальной работе Asterisk.

Анализ исходной ситуации и первичная диагностика

Рассмотрим типовой сценарий: в офисе установлено более 10 IP-телефонов (например, Yealink), сервер Asterisk (FreePBX) и гигабитная сеть на неуправляемых коммутаторах. При этом наблюдаются задержки голоса и «кваканье» именно на внешних линиях. Первым делом нам необходимо разграничить зоны ответственности: локальная сеть, шлюз (Mikrotik) и канал провайдера.

Проанализируем результаты пинга. Если при проверке связи внутри сети пакеты проходят стабильно, а при пинге внешних ресурсов (например, шлюза провайдера или ya.ru) наблюдаются потери даже в 1-4%, это критично для UDP-трафика, который использует SIP. Для голоса потери пакетов более 0.5-1% уже становятся заметны на слух.

Проверка пропускной способности и размера пакетов

Выясним причину странного поведения сети при передаче больших пакетов. Проведем тест: попробуем «пропинговать» оборудование пакетами разного размера. В процессе диагностики часто выясняется, что пакеты стандартного размера проходят, а пакеты более 500-1000 байт — нет.

Для проверки в консоли Windows или Mikrotik используем команду:

ping [IP-адрес] -l 1500 -f

Если пакеты фрагментируются или теряются на неуправляемых коммутаторах (например, старых моделях D-Link), это может свидетельствовать о проблемах с Flow Control или переполнением буферов при одновременной работе тяжелых приложений (например, файловый обмен 1С) и телефонии.

Настройка Mikrotik: манглы, очереди и FastTrack

Одной из главных причин проблем в сетях на базе Mikrotik является конфликт механизмов приоритизации трафика и ускорения обработки пакетов. Разберем по шагам, на что обратить внимание:

  1. Отключение SIP ALG: Перейдем в IP -> Firewall -> Service Ports. Найдем пункт sip и отключим его. В большинстве случаев встроенный «помощник» Mikrotik только мешает корректной передаче заголовков SIP, вызывая обрывы через 30 секунд разговора или отсутствие односторонней слышимости.
  2. Конфликт FastTrack и Mangle: Если у вас настроена маркировка пакетов (Mangle) для QoS (Quality of Service), убедитесь, что правило fasttrack-connection в Firewall Filter не перехватывает этот трафик. Пакеты, попавшие в FastTrack, идут в обход очередей (Queues), и ваша приоритизация перестает работать.

    Для решения добавим разрешающее правило для IP-адреса Asterisk выше правила FastTrack:

    /ip firewall filter add action=accept chain=forward src-address=[IP_Asterisk] place-before=[номер_правила_fasttrack]
  3. Настройка очередей (Queue Tree): Недостаточно просто выделить «2 Мегабита» под телефонию. Важно гарантировать минимальную задержку (Limit At) и задать приоритет (Priority 1 для RTP и SIP).

Оптимизация Asterisk и работа с кодеками

Посмотрим на ситуацию со стороны сервера телефонии. Если проблемы возникают только на межгороде, проанализируем используемые кодеки. Часто внутри сети телефоны используют широкополосный кодек G.722, а провайдер требует G.711 (alaw/ulaw). Процесс транскодинга (перекодирования) на лету может вносить задержки.

Рекомендуем придерживаться следующей стратегии настройки в FreePBX:

Борьба с сетевым «мусором» и широковещательным штормом

Рассмотрим влияние других приложений. Если в сети используется внутренний чат или специфическое ПО, рассылающее UDP-бродкасты (широковещательные пакеты), это может «забивать» очередь на портах неуправляемых коммутаторов. Поскольку телефоны и компьютеры находятся в одной подсети (0/24), любой всплеск трафика от 1С или копирования файлов создает микро-задержки для RTP-пакетов.

Идеальным решением будет разделение сети на VLAN:

  1. Выделим телефоны в отдельный VLAN (Voice VLAN).
  2. Настроим маршрутизацию между VLAN на Mikrotik, обеспечив прямой путь трафика до Asterisk.
  3. Это изолирует чувствительный к задержкам голос от широковещательного трафика компьютеров и принтеров.

Итоги диагностики

Проанализировав ситуацию, мы пришли к выводу, что основная проблема часто кроется не в «слабом интернете», а в обработке трафика роутером. Как показал опыт, отключение правил Mangle или корректная настройка MSS Clamping (изменение размера сегмента TCP) могут моментально стабилизировать пинги.

Помните, что для SIP-телефонии стабильность (отсутствие джиттера и потерь) гораздо важнее ширины канала. Даже на канале в 7 Мбит/с можно комфортно проводить десятки одновременных разговоров, если пакеты доставляются вовремя и без искажений со стороны сетевого экрана.

← На главную