Статья о двух разных бедах: звука нет вовсе и звук есть, но плохой. Причины у них разные, поэтому и разбирать их нужно по-разному.
Звука нет совсем
Сначала определите направление
Откройте Офис → Статистика АТС и прослушайте запись разговора. Она сразу указывает на участок:
- Слышно оператора, не слышно внешнего абонента — проблема между провайдером телефонии и сервером Октелл. Проверяйте входящий трафик на сервере.
- Слышно внешнего абонента, не слышно оператора — проблема между телефоном оператора и сервером. Проверяйте исходящий трафик у оператора.
- Слышно обоих, но оператор жалуется, что плохо слышит — проблема во входящем трафике у оператора.
Медиа-трафик не поступает на сервер
- Проверьте, что порт 5060 на сетевом интерфейсе слушает процесс
oktell.HALRemoteApp.exe:netstat -anopb udp - Убедитесь, что нужные порты проброшены на NAT-устройстве — см. статью о настройке сервера за NAT.
- Проверьте брандмауэр. Панель управления → Брандмауэр Windows → «Разрешить запуск программы или компонента» → «Разрешить другую программу» → «Обзор», и добавьте оба процесса:
\oktell\server\oktell.ServerService.exe \oktell\server\oktell.HALRemoteApp.exe - Перезагрузите сервер Октелл.
Провайдер не отправляет медиа-трафик
Проверяется сниффером Wireshark. Если трафика от провайдера нет, возможно, коммутация не установилась на уровне сигнализации: посмотрите в логе trn (каталог \Server\Log\Hardware\SIP\) наличие SIP-пакета 200 OK по этой коммутации.
Трафик дошёл до сервера, но не дошёл до оператора
- Если оператор работает в клиентском приложении — проверьте в настройках локальных устройств, выбраны ли действующие динамики и микрофон.
- Если оператор в другой локальной сети за NAT, в удалённом офисе, — порты там пробрасывать не нужно. Проверьте настройки роутера, например установленный DMZ.
- В настройках IP-телефона или софтфона размер звукового пакета (packet time) должен быть 20 мс.
Конфигурация сервера
Откройте Администрирование → Параметры аппаратуры → Настройки потока:
- Адрес назначения для RTP-трафика — меняйте, если абонент не слышит оператора, то есть звук идёт от Октелл наружу.
- Размер звукового пакета для кодека G.711 — 20 мс.
- Разрешить изменять параметры связи во время коммутации — рекомендуется «Нет». Часть шлюзов и провайдеров плохо переносит инструкции REINVITE от сервера. При запрете Октелл включает транскодинг у себя, иначе пытается заставить внешний шлюз сменить кодек.
На время поиска неисправности имеет смысл установить единый кодек G.711a или G.711u во всех шлюзах и телефонах в карте сети — это убирает из уравнения согласование кодеков.
ping и tracert.
Диагностика сравнением
Быстрый способ понять, чья сторона виновата, — подменить одно звено:
- Подозрение на провайдера. Подключите другого SIP-провайдера и позвоните. Звук появился — дело в провайдере или в настройке соединения с ним.
- Проверка учётных данных. Подключите любой софтфон с теми же учётными данными, что и на сервере. Линии в Администрирование → Карта сети предварительно отключите. Позвоните на софтфон: если звук есть, проблема в настройке Октелл, если нет — у провайдера.
- Подозрение на телефон оператора. Подключите другой IP-телефон или софтфон. Звук появился — дело в телефоне.
Звук плохой
В подавляющем большинстве случаев плохое качество — это сетевая проблема. Любое искажение звука сводится либо к потере пакетов, либо к задержке.
Типичные причины
- Интернет-канал. Нагрузка, плавающий пинг, нестабильность провайдера. Решения: выделенный канал, смена провайдера или переход на кодек с меньшим размером пакета — G.729 вместо G.711.
- NAT-устройство. Роутер или маршрутизатор начал сбоить — перезагрузите его.
- Нагрузка на сервер. Идёт резервное копирование или на той же машине работает что-то ещё, например сервер 1С. Проверьте загрузку процессора и памяти в диспетчере задач.
- Брандмауэр или антивирус счёл поток пакетов подозрительным и придержал его. Проверьте настройки.
- Виртуальная машина. Используйте сетевой интерфейс Virtio, а не эмуляцию Intel. Настраивается в интерфейсе KVM.
Канальный лог — главный инструмент
Октелл пишет статистику по каждой коммутации в канальные логи:
Server\Log\Hardware\Sip\[дата]\[номер канала].log
Например: Server\Log\Hardware\Sip\2014-01-30\13003.log
В конце каждой коммутации приводится статистика RTP-сессии. Значения читаются так:
| Показатель | Что означает |
|---|---|
IN / OUT | Входящий трафик от устройства на сервер и исходящий от сервера к устройству |
packets received, bytes received | Количество и объём принятых пакетов |
out of order | Пакеты, пришедшие вне очереди. Много — проблемы в сети |
invalid | Неверные пакеты |
lost | Потерянные пакеты. Много — проблемы в сети |
delays | Количество задержек за коммутацию. Слышится как «заикание» голоса |
max delay | Максимальная задержка. Чем больше, тем сильнее заикание |
average delays | Средний период поступления RTP-пакетов. Должен совпадать с размером звукового пакета кодека — для G.711 это 20 мс |
Логи ведутся и по внешним, и по внутренним линиям, и это сразу локализует проблему: неполадки на внешней линии — между провайдером и сервером, на внутренней — между сервером и телефоном или гарнитурой оператора.
Wireshark
Запустите захват до звонка, выбрав нужный интерфейс и указав в фильтре захвата udp. Совершите тестовый звонок и остановите захват. Дальше пользуйтесь фильтром отображения:
rtp — все RTP-пакеты
ip.addr==192.168.0.81 — все пакеты с участием адреса
ip.src==192.168.0.81 — пакеты, отправленные с адреса
ip.dst==192.168.0.81 — пакеты, адресованные на адрес
Быстрее нагляднее другой путь: меню Telephony → VoIP Calls, выбрать коммутацию и нажать Flow. Две стрелки RTP означают, что трафик шёл в обе стороны; одна — сразу показывает, в какую сторону его не было.
Для оценки потерь: Telephony → RTP → Show all streams. В столбце Lost видны потери, до 5% считаются допустимыми. Столбцы Src IP addr и Dst IP addr покажут, в какую сторону идут потери.
Если операторы работают с гарнитурой, Wireshark имеет смысл поставить на рабочее место сотрудника и посмотреть RTP-трафик уже там.
Проверка канала между двумя точками
- NetTester ставится на два компьютера, между которыми нужно проверить канал, и настраивается друг на друга. Можно оставить на неделю и потом посмотреть, сколько пакетов потерялось в каждую сторону, где были задержки, сколько было серий потерь и какой длины. Запускать сначала на сервере, потом на клиенте — иначе часть пакетов потеряется из-за асинхронного старта.
- WinMTR трассирует маршрут до точки назначения, показывая по каждому узлу процент потерь и задержки. Перед запуском задайте в Options интервал отправки
0.1секунды.
Эхо
Эхо стоит особняком: источников у него два, и природа у них разная.
Акустическое эхо
Возникает у удалённого абонента: он не держит трубку у уха, пользуется громкой связью или у него неудачно спроектирована трубка. Микрофон улавливает звук из динамика и отправляет его обратно в линию.
Что делать: уменьшить громкость исходящего голосового канала, если оборудование это позволяет.
Гибридное эхо
Возникает в точках перехода с цифровых транков на аналоговые двухпроводные линии. В самом Октелл звук передаётся в цифровом виде и не модифицируется, поэтому в сервере такое эхо появиться не может — ищите его на шлюзах.
Борются с ним эхокомпенсатором, который на шлюзах обычно уже включён. Важная особенность: эхокомпенсатор работает корректно только при небольшой задержке — примерно от 30 до 200 мс. При значительных задержках он не только бесполезен, но и добавляет собственную задержку.