Другое

Падение качества VoIP звонков: причины и решение

Устраните потерю пакетов при исходящих VoIP звонках с Yealink и Mikrotik. Настройка NAT traversal, приоритизация трафика и SIP ALG для качественной связи.

Почему падает качество голоса при исходящих звонках VoIP?

У меня есть базовая станция Yealink W52P, Mikrotik для обеспечения доступа в интернет и трубки Yealink разных моделей, которые работают вместе с Yealink W52P.

При входящих звонках качество голоса хорошее, но при исходящих звонках (когда я набираю номер на трубке и звоню сам) происходит потеря пакетов. Техническая поддержка Ростелеком подтвердила наличие потерь пакетов при обращении.

Я предпринял следующие действия на Mikrotik, связанные с IP телефонией:

  1. Правило для srcnat:

    • chain: srcnat
    • src. addrs: 192.168.x.y
    • dst. addrs: IP адрес ВАТС (от Ростелекома)
    • protocol: 17 (udp)
    • action: masquerade
  2. Правила для dstnat (в настоящее время отключены):

    • chain: dstnat
    • src. addrs: -
    • dst. addrs: -
    • protocol: 17 (udp)
    • dst. port: 5060, 5061
    • action: dst-nat
    • to addresses: 192.168.x.y
  3. Аналогичное правило для RTP с диапазоном портов:

    • dst. port: 16384-23767
  4. Настройки Simple Queues:

    • Name: SIP
    • Target: 192.168.x.y
    • Dst: IP адрес ВАТС
    • Max Limit: 5M (для Target Upload/Download)
    • Вкладка Advanced:
      • Limit At: 3M (для Target Upload/Download)
      • Priority: 1/1

Проблема с потерей пакетов при исходящих звонках остается. В чем может быть причина и как это исправить?

Падение качества голоса при исходящих звонках VoIP с оборудованием Yealink и Mikrotik чаще всего связано с проблемами NAT traversal, неправильной маршрутизацией RTP-потоков или недостаточной приоритизацией сетевого трафика. Наиболее вероятные причины включают асимметричное NAT, блокировку портов RTP на Mikrotik при исходящих соединениях, а также отсутствие правильной маркировки и приоритизации VoIP-трафика.

Содержание

Основные причины потери пакетов при исходящих звонках

Проблемы с качеством исходящих звонков на Mikrotik часто связаны с несколькими основными факторами:

Асимметричное NAT - когда SIP-сообщения уходят через один IP-адрес, а RTP-пакеты с голосом - через другой. Это происходит из-за того, что Mikrotik использует разные правила для разных типов трафика, что нарушает установление соединения [source].

Блокировка RTP-портов - при исходящих звонках RTP-поток инициируется от внутреннего устройства (192.168.x.y) к внешнему серверу, но Mikrotik может не правильно обрабатывать возвращающиеся пакеты, особенно если правила dstnat отключены [source].

Отсутствие SIP ALG - Mikrotik имеет встроенный SIP ALG (Application Layer Gateway), который помогает с NAT traversal. Если он отключен, SIP устройства могут правильно регистрироваться, но иметь проблемы с медиа-потоками [source].

Важно: Согласно исследованиям, 90% проблем качества VoIP происходят на стороне клиента из-за неправильной настройки сети [source].

Настройка NAT traversal на Yealink W52P

Для решения проблем NAT traversal на Yealink W52P необходимо правильно настроить следующие параметры:

Включение NAT traversal

  1. Зайдите в веб-интерфейс W52P или используйте меню телефона
  2. Найдите раздел “Network” → “NAT Traversal”
  3. Установите значение NAT=YES вместо использования STUN серверов
  4. Сохраните настройки и перезагрузите базовую станцию

Преимущество NAT=YES: Отказ от зависимости от внешних STUN-серверов, которые могут быть недоступны, и более надежная работа при изменении сетевой конфигурации [source].

Проверка SIP registration

Убедитесь, что базовая станция правильно регистрируется у провайдера:

  • Статус регистрации должен быть “Registered”
  • В логах не должно быть ошибок таймаутов
  • Контактный адрес должен соответствовать реальному IP-адресу

Правильная настройка Mikrotik для VoIP

Корректировка NAT правил

Ваша текущая настройка srcnat может быть недостаточной. Рекомендуется следующая конфигурация:

bash
# Для исходящих SIP-соединений
/ip firewall nat
add chain=srcnat protocol=udp dst-port=5060,5061 action=masquerade comment="SIP Traversal"
add chain=srcnat protocol=udp dst-port=16384-23767 action=masquerade comment="RTP Traversal"

Важно: Убедитесь, что все правила masquerade имеют правильные протокол и порты. Проблема может быть в том, что RTP-пакеты исходящих звонков проходят через разные цепочки NAT [source].

Включение SIP ALG

На Mikrotik необходимо включить SIP ALG для правильной обработки SIP-сообщений:

bash
/ip service
set sip disabled=no

Это позволит Mikrotik правильно модифицировать SIP-заголовки для обхода NAT [source].

Настройка防火墙 правил

Добавьте явные разрешения для VoIP трафика:

bash
/ip firewall filter
add chain=input protocol=udp dst-port=5060,5061 action=accept comment="Allow SIP"
add chain=forward protocol=udp dst-port=16384-23767 action=accept comment="Allow RTP"
add chain=forward src-address=192.168.x.y protocol=udp action=accept comment="Allow Yealink traffic"

Приоритизация VoIP-трафика

Ваша текущая настройка Simple Queues может быть неэффективной. Рекомендуется использовать более продвинутые методы:

Маркировка VoIP-трафика

bash
/ip firewall mangle
add chain=prerouting dst-port=5060,5061 protocol=udp action=mark-connection new-connection-mark=sip_conn
add chain=prerouting connection-mark=sip_conn protocol=udp action=mark-packet new-packet-mark=sip_packets
add chain=prerouting dst-port=16384-23767 protocol=udp action=mark-packet new-packet-mark=rtp_packets

Настройка Queue Tree

bash
/queue tree
add name=SIP_Priority parent=global packet-mark=sip_packets priority=8
add name=RTP_Priority parent=global packet-mark=rtp_packets priority=8

Преимущество: Такой подход обеспечивает более точную приоритизацию в реальном времени по сравнению с Simple Queues [source].

Диагностика и мониторинг

Проверка потерь пакетов

Используйте следующие команды на Mikrotik для диагностики:

bash
# Мониторинг потерь пакетов
/tool netwatch
add host=8.8.8.8 interval=10s timeout=200ms down-script="log warning \"Packet loss detected\""

# Тестирование подключения к SIP серверу
/tool ping count=10 size=1000 address=IP_ВАТС

Анализ логов

Проверьте логи Mikrotik на предмет блокировки VoIP трафика:

/log print follow

Ищите сообщения о блокировке UDP-пакетов или отклонении соединений.

Рекомендации по устранению проблем

Пошаговый план решения

  1. Включите SIP ALG на Mikrotik для правильной обработки SIP-сообщений
  2. Настройте NAT traversal на Yealink W52P как NAT=YES
  3. Добавьте явные разрешения для RTP-портов в firewall
  4. Реализуйте приоритизацию с помощью mangle и queue tree
  5. Проверьте сетевую инфраструктуру на наличие задержек и потерь
  6. Обратитесь к провайдеру для проверки качества линии

Дополнительные настройки

Если проблема остается, попробуйте:

  • Изменить статический NAT вместо masquerade для Yealink W52P
  • Настроить STUN сервер на Mikrotik как запасной вариант
  • Проверить версию прошивки на всех устройствах Yealink
  • Рассмотреть возможность использования SBC (Session Border Controller) от провайдера

Источники

  1. MikroTik Forum - VOIP and NAT problems
  2. MikroTik Forum - VoIP / SIP big problems
  3. Penny Tone LLC - Common VoIP problems
  4. Reddit - MikroTik VoIP configuration
  5. VoIP-info.org - NAT Traversal and Yealink
  6. MikroTik Forum - SIP client re-registration issues

Заключение

Основные проблемы с качеством исходящих звонков на вашем оборудовании Yealink и Mikrotik можно решить путем комплексной настройки NAT traversal и приоритизации трафика. Ключевые шаги включают включение SIP ALG на Mikrotik, правильную настройку NAT правил для RTP-потоков, а также реализацию приоритизации VoIP-трафика с помощью mangle и queue tree. Большинство подобных проблем решаются именно на уровне сетевого оборудования Mikrotik путем корректной обработки SIP и RTP протоколов. Если после всех настроек проблема сохраняется, рекомендуется проверить качество связи от провайдера и обратиться за дополнительной технической поддержкой к Ростелекому.

Авторы
Проверено модерацией
Модерация