Задать вопрос
Haotik
@Haotik
PHP мидл без фреймворков

Как избавиться от заиканий Астериск?

День добрый.
Провели на предприятие ip телефонию. Подняли свой сервер и через него раздаем внутренних абонентов.
server - Ubuntu 20.04.2 LTS
Версия астериск - Asterisk 16.2.1 - астериск чистый

Проблем со связью две:
1 Эхо на городские номера, но провайдер упорно говорит что это нормально и зависит от оборудования через которое создается канал.
2 - ОСНОВНАЯ - заикание на канале. Не всегда, но очень часто абонент начинает заикаться, случится может как прямо с первой секунды так и через несколько минут.
Проблема двусторонняя т.е. заикаемся и мы и абонент.

Проверял на потерю пакетов с провайдером через mtr -
за пол часа потеряно 100 пакетов, средний пинг 20ms максимальный 120ms

схема подключения: 603de9595db39270969310.png
конфиги :
sip conf :
[general]
deny=0.0.0.0/0.0.0.0
permit=192.168.0.44/255.255.255.0
permit=****/255.255.255.0
allowsubscribe=yes
callcounter=yes
subscribecontext=BLF

[authentication]

[20111]
type=friend
host=dynamic
secret=*****
nat=force_rport,comedia
canreinvite=no
context=internal
qualify=yes
call-limit=2
disallow=all
allow=alaw
deny=0.0.0.0/0.0.0.0
permit=192.168.0.0/255.255.255.0
allowsubscribe=yes
callcounter=yes
subscribecontext=BLF


extensions.conf
[general]
static=yes
writeprotect=no
[globals]
DBHost = localhost
DBuser = ********
DBpass = ********
DBname = asterisk
DBowners = owners

[default]

;Вешаем трубку
[handup-sip]
exten => _X!,1,HangUp()

; Busy Lamp Functionality
[BLF]
exten => _1XX,hint,SIP/20${EXTEN}

[internal]
;исходящие звонки с внутренних аппаратов попадают сюда

exten => _[123]XX,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d-%H%M)}-${CALLERID(number)}-${EXTEN})
same => n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
same => n,Monitor(wav,/home/asterisk/records/inner/${fname},mb)
same => n,Dial(SIP/20${EXTEN},30)

[rset] ;входящие звонки с транка попадают сюда

exten => _201[123]X,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d-%H%M)}-${CALLERID(number)}-${EXTEN})
same => n,Monitor(wav,/home/asterisk/records/in/${fname},mb)
same => n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
same => n,Playback(/home/asterisk/records/service/allRecord)
same => n,Dial(SIP/${EXTEN},30,rTt)
  • Вопрос задан
  • 1039 просмотров
Подписаться 3 Простой 4 комментария
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
Собственно достаточно предсказуемая беда с доставкой пакетов через каналы общего пользования с негарантированной доставкой/задержкой.
Типичная ситуация: толпа народа с web-броузингом, астериски и т.п. Юзер болтает по телефону и открывает страничку с кучей фоток -> броузер в кучу потоков начинает тащить картинки. Канал провайдера - не резиновый и в какой-то момент переполняется - пакеты встают в очередь и ждут... Для подгрузки картинок это максимум чуть притормозит отображение фотки котика, для голоса - произойдет заикание.

Методы частичного устранения такой проблемы существуют:
- можно зарезервировать часть полосы под голос
- можно как минимум в рамках до своего шлюза включительно приоретизировать трафик
- использовать отдельный канал/шлюз/сеть для телефонии

Гораздо проблемнее устранять сходные заторы на стороне провайдера. Ну а гарантированные потоки (те же E1) нынче дороги...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы