Односторонняя слышимость Asterisk при использовании телефонов Cisco 7911

Задача: в офисе установлен сервер Asterisk за NAT, но роутере настроен проброс портов на сервер. При звонке снаружи наблюдается проблема одностронней слышимости: абонент снаружи не слышит абонента изнутри офисной сети. В офисе используются телефоны Cisco 7911

1. Включаем отладку RTP

Для начала хорошо бы посмотреть уходят ли RTP-пакеты. Для этого в консоли Asterisk включим отладку:

rtp set debug on

Делаем тестовый звонок. Тут 172.16.1.93 - адрес IP-телефона внутри сети, 46.133.77.181 - IP-адрес абонента снаружи сети. Вот часть лога:

Got  RTP packet from    46.133.77.181:8004 (type 03, seq 008196, ts 3251733987, len 000033)
Sent RTP packet to      172.16.1.93:21900 (type 97, seq 021899, ts 3251733992, len 000038)
Got  RTP packet from    172.16.1.93:21900 (type 97, seq 000298, ts 3613731501, len 000038)
[2020-09-11 12:24:40] WARNING[13581][C-00007c22]: codec_ilbc.c:125 ilbctolin_framein: Huh?  An ilbc frame that isn't a multiple of 50 bytes long from RTP (38)?
Got  RTP packet from    46.133.77.181:8004 (type 03, seq 008197, ts 3251734147, len 000033)
Sent RTP packet to      172.16.1.93:21900 (type 97, seq 021900, ts 3251734152, len 000038)
Got  RTP packet from    172.16.1.93:21900 (type 97, seq 000299, ts 3613731661, len 000038)
[2020-09-11 12:24:40] WARNING[13581][C-00007c22]: codec_ilbc.c:125 ilbctolin_framein: Huh?  An ilbc frame that isn't a multiple of 50 bytes long from RTP (38)?
Got  RTP packet from    46.133.77.181:8004 (type 03, seq 008198, ts 3251734307, len 000033)
Sent RTP packet to      172.16.1.93:21900 (type 97, seq 021901, ts 3251734312, len 000038)
Got  RTP packet from    172.16.1.93:21900 (type 97, seq 000300, ts 3613731821, len 000038)

Из лога понятно, что RTP-пакеты не отправляются в сторону внешнего абонента (нет исходящих пакетов на IP 46.133.77.181) и есть некоторый warning от кодека ilbc (https://ru.wikipedia.org/wiki/ILBC), который судя по всему использует IP-телефон Cisco.

2. Переключаем кодек

Самое простое решение, которое приходит в голову - заставить IP-телефон использовать другой кодек. Посмотрим, какие он поддерживает:

sip show peer 103 
...
Codecs       : (ilbc|g729|gsm|g723|ulaw)

Эти IP-телефоны в момент загрузки получают свои настройки c TFTP-сервера, IP-адрес которого он получает с помощью DHCP-опции. Файл настройки представляет собой обычный XML-файл, с именем SEP<MAC>.cnf.xml

После гугления проблемы была найдена статья на Хабре (https://habr.com/ru/post/121140/) в которой в конфиге присутствует такая строка:

<preferredCodec>g711alaw</preferredCodec> - кодек G711 alaw у нас будет предпочтительным.

В нашем конфиге эта строка была такой:

<preferredCodec>none</preferredCodec>

Следовательно, телефон сам выбирал кодек.

3. Решение

После принудительной установки кодека в файле конфигурации телефона и его перезагрузки, проблема односторонней слышимости пропала, а если включить отладку по RTP, то увидим что warning пропал:

Got  RTP packet from    172.16.1.93:30426 (type 00, seq 000688, ts 2124278981, len 000160)
Sent RTP packet to      46.133.77.181:8052 (type 03, seq 013574, ts 2124278976, len 000033)
Sent RTP packet to      172.16.1.93:30426 (type 00, seq 026787, ts 1392488464, len 000160)
Got  RTP packet from    172.16.1.93:30426 (type 00, seq 000689, ts 2124279141, len 000160)
Got  RTP packet from    46.133.77.181:8052 (type 03, seq 030574, ts 1392488631, len 000033)
Sent RTP packet to      172.16.1.93:30426 (type 00, seq 026788, ts 1392488624, len 000160)
Sent RTP packet to      46.133.77.181:8052 (type 03, seq 013575, ts 2124279136, len 000033)
Got  RTP packet from    172.16.1.93:30426 (type 00, seq 000690, ts 2124279301, len 000160)
Sent RTP packet to      46.133.77.181:8052 (type 03, seq 013576, ts 2124279296, len 000033)
Got  RTP packet from    46.133.77.181:8052 (type 03, seq 030575, ts 1392488791, len 000033)
Sent RTP packet to      172.16.1.93:30426 (type 00, seq 026789, ts 1392488784, len 000160)
Got  RTP packet from    46.133.77.181:8052 (type 03, seq 030576, ts 1392488951, len 000033)
Got  RTP packet from    172.16.1.93:30426 (type 00, seq 000691, ts 2124279461, len 000160)
Sent RTP packet to      46.133.77.181:8052 (type 03, seq 013577, ts 2124279456, len 000033)
Sent RTP packet to      172.16.1.93:30426 (type 00, seq 026790, ts 1392488944, len 000160)

 


Похожие материалы

Комментарии