Страница 1 из 2

Односторонняя слышимость при звонке по H.323 на сотовые

Добавлено: 30 мар 2012, 16:28
$+ep@
Добрый день. Столкнулся с о следующей проблемой:
У клиента установлена asterisk 1.6.2.22 и asterisk-addons-1.6.2.4, ОС Debian 2.6.32-5-amd64. Имеется 2 сетевые карточки, одна смотрит в сеть другая на внешку.
Установлены софтфоны X-Lite 4 release 4.1 stamp 63214 и Zoiper rev.11137 находящиеся в локальной сети. Привожу конфиг sip учетки одного из них, а так же параметры sip.conf:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: sip.conf+абонент
[general]
context=custom-from-pstn
allowoverlap=yes
allowguest=yes
alwaysauthreject=yes
bindport=5060
bindaddr=0.0.0.0
srvlookup=no
nat=yes
canreinvite=no
tos_sip=cs3
tos_audio=ef
tos_video=af41
disallow=all
allow=ulaw
allow=alaw
allow=g729
t38pt_udptl=yes
language=ru
externip=80.76.XXX.XXX
localnet = 192.168.1.0/0

[100]
type=friend
defaultuser=100
secret=XXXXXXXXX
host=dynamic
context=from-internal
callerid="100" <100>
nat=yes
callgroup=1
pickupgroup=1
dtmfmode=rfc2833
insecure=invite
call-limit=0
canreinvite=no
mailbox=100@default
disallow=all
allow=alaw,ulaw,g729
qualify=yes
deny=0.0.0.0/0.0.0.0
permit=192.168.1.0/255.255.255.0
setvar=virtnum=100
setvar=recording=1
setvar=trunkdial=0
setvar=dial=SIP/100
На сервер подключен поток H.323. Использую ooh323, привожу конфиг:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: ooh323.conf
[general]
port=1720
bindaddr=80.76.XXX.XXX - адрес сервера клиента
gateway=no
faststart=yes
h245tunneling=yes
gatekeeper = DISABLE
disallow=all
allow=g729
allow=ulaw ; когда выключаю односторонняя слышимость появляется на всех звонках на сотовые.
;alaw не поддерживается
dtmfmode=h245signal
dtmfcodec=97
h323id=ObjSysAsterisk
tos=lowdelay
rtptimeout=60
context=from-pstn
logfile=/var/log/asterisk/ooh323logfile.log
Звоню так:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
[custom-h323]
exten => _XX.,1,Set(CALLERID(all)="84XXXXXXXXX" <84XXXXXXXXX>)
exten => _XX.,n,Dial(OOH323/${EXTEN:1}@80.76.3X.XXX,60,) - 80.76.3X.XXX IP адрес сервера оператора
exten => _XX.,n,Hangup()
Кодек g729 установлен. Вывод команды core show translation
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: core show translation
g723 gsm ulaw alaw g726aal2 adpcm slin lpc10 g729 speex ilbc g726 g722 siren7 siren14 slin16
g723 - - - - - - - - - - - - - - - -
gsm - - 2 2 4001 2 1 2 2 - - 2 2 - - 3
ulaw - 4001 - 1 4001 2 1 2 2 - - 2 2 - - 3
alaw - 4001 1 - 4001 2 1 2 2 - - 2 2 - - 3
g726aal2 - 4001 2 2 - 2 1 2 2 - - 2 2 - - 3
adpcm - 4001 2 2 4001 - 1 2 2 - - 2 2 - - 3
slin - 4000 1 1 4000 1 - 1 1 - - 1 1 - - 2
lpc10 - 4001 2 2 4001 2 1 - 2 - - 2 2 - - 3
g729 - 4001 2 2 4001 2 1 2 - - - 2 2 - - 3
speex - - - - - - - - - - - - - - - -
ilbc - - - - - - - - - - - - - - - -
g726 - 4001 2 2 4001 2 1 2 2 - - - 2 - - 3
g722 - 4001 2 2 4001 2 1 2 2 - - 2 - - - 1
siren7 - - - - - - - - - - - - - - - -
siren14 - - - - - - - - - - - - - - - -
slin16 - 4002 3 3 4002 3 2 3 3 - - 3 1 - - -
Теперь суть проблемы:
При звонке с софтфона на сотовые телефоны на некоторых из номеров есть односторонняя слышимость, причем данная проблема есть в обе стороны(бывает не слышит клиент, бывает клиента). Пришел к выводу, что проблема в кодеках. Снял tcpdump.
При неудавшихся вызовах софтфон звонит с кодеком alaw, asterisk с сервером пытаются договориться кто мастер а кто слейв, после чего asterisk отправляет запрос facility на передачу по ulaw, но на сервере оператора поддерживается только кодек g729(так заявляет сам оператор). Сервер отвечает что хочет передавать по g729, астериск соглашается и сервер отправляет RTP пакеты с g729. В итоге в трубке слышны сигналы только со стороны вызываемого абонента, а то что говорит клиент на той стороне не слышно.
Подскажите как это можно разрулить средствами asterisk не трогая оператора и софтфоны, и вообще можно ли это сделать? Если необходимо могу снять свежий дамп.
P.S. У клиента так же заведены несколько SIP операторов, которые используют как alaw так и ulaw, поэтому для сиповых абонентов данные кодеки убирать нельзя.

Re: Односторонняя слышимость при звонке по H.323 на сотовые

Добавлено: 30 мар 2012, 17:43
ded
Кроме секции
[general]
у вас в ooh323.conf должен быть пир провайдера, где, собственно, и прописывать приоритеты кодеков, и такие важные параметры как fast start & h225 tunneling
Вот они и определяют передачу медиа параметров.
P.S> там у вас
bindaddr=80.76.XXX.XXX - это всё же должен быть ИП адрес одной из ваших сетевых карт на сервере.

Re: Односторонняя слышимость при звонке по H.323 на сотовые

Добавлено: 30 мар 2012, 20:53
amateur
Давайте запись трафика поглядим. Может быть станет понятней.

Re: Односторонняя слышимость при звонке по H.323 на сотовые

Добавлено: 03 апр 2012, 14:25
$+ep@
Пробовал менять параметры тунелинга и фасстарта, разницы никакой абсолютно, точнее разница есть, но результат по итогу тот же.
Так же связался с оператором связи и мы вместе сняли дамп. Выяснили закономерность, что при звонке через астериск доступно два кодека g729A и g729, но используется кодек g729А, и при этом слышимость односторонняя.
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: дебаг ooh323
--- onNewCallCreated ooh323c_9
+++ onNewCallCreated ooh323c_9
--- ooh323_onReceivedSetup ooh323c_9
--- ooh323_alloc
== Using ooh323 TOS bits 16
+++ ooh323_alloc
--- find_user
+++ find_user
Adding capabilities to call(incoming, ooh323c_9)
Adding g729A capability to call(incoming, ooh323c_9)
Adding g729 capability to call(incoming, ooh323c_9)
--- configure_local_rtp
+++ configure_local_rtp
+++ ooh323_onReceivedSetup - Determined context from-pstn, extension 84862402016
--- setup_rtp_connection
--- find_call
+++ find_call
+++ setup_rtp_connection
--- onAlerting ooh323c_9
--- find_call
+++ find_call
--- ooh323_new - (null)
+++ h323_new
В процессе беседы с оператором выяснил что он использует MVTS. После гугления на предмет интеграции asterisk + MVTS по ooh323 наткнулся на обсуждение http://www.asteriskforum.ru/viewtopic.p ... rel=-10000. Из всего описанного не пробовал только предложенное ToxaP, а именно поковырять настройки учетки на MVTS. Уговорил оператора пробно переключить в gateway.cfg параметр codec_allow=g729,g729A,g729B только на codec_allow=g729, но результата это не дало. Слышимость так же односторонняя.

Подскажите, может есть еще какие нибудь варианты?
P.S. Если нужно выложу дамп на обменник и дам ссылку на него в ЛС, дабы не светить адреса и номера.

Re: Односторонняя слышимость при звонке по H.323 на сотовые

Добавлено: 03 апр 2012, 16:28
tma
Проблема может быть в том, что asterisk на практике поддерживает только g729A - это g729 с упрощенным алгоритмом.
Например укртелекомовский SBC вообще не понимает g729A, поэтому его подменяют на g729. В том же Linksys есть настройка для этого.

Re: Односторонняя слышимость при звонке по H.323 на сотовые

Добавлено: 04 апр 2012, 13:51
amateur
$+ep@ писал(а):P.S. Если нужно выложу дамп на обменник и дам ссылку на него в ЛС, дабы не светить адреса и номера.
Выкладывайте. Иначе не разобраться.

Re: Односторонняя слышимость при звонке по H.323 на сотовые

Добавлено: 06 апр 2012, 13:57
$+ep@
Итак, оно заработало! Описываю что потребовалось сделать и какая по итогу должна быть настройка.
Я ранее писал, что по совету ded менял параметры h245tunneling и faststart, но это не дало результатов. Собственно так оно и было. Затем наткнулся на пост ToxaP про изменение доступных кодеков в gateway.cfg для пользователя на MVTS, а в частности codec_allow=g729. После этого работать так же не начало.
И тут меня дернуло снова поиграться с faststart и h245tunneling после изменения настроек на MVTS. Голос пошел в обе стороны как на городских, так и на мобильных.
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: Рабочий ooh323.conf
[general]
port=1720
bindaddr=80.76.XXX.XXX - адрес одной из сетевых карт сервера.
gateway=no
h245tunneling=yes
faststart=no
gatekeeper = DISABLE
disallow=all
allow=g729
dtmfmode=h245signal
dtmfcodec=97
h323id=ObjSysAsterisk
tos=lowdelay
rtptimeout=60
context=from-pstn
logfile=/var/log/asterisk/ooh323logfile.log
По сути от первоначального конфига новый отличается только изменением параметра faststart с yes на no и выключением allow=ulaw. Ну и конечно же изменения на MVTS.
P.S. Надеюсь кому нибудь в будущем пригодится.

Re: Односторонняя слышимость при звонке по H.323 на сотовые

Добавлено: 06 апр 2012, 14:36
ded
Хм, а Вы же из CallSoft.ru? Что же noize не помогает в проблеме?

Re: Односторонняя слышимость при звонке по H.323 на сотовые

Добавлено: 06 апр 2012, 14:54
amateur
$+ep@ писал(а):P.S. Надеюсь кому нибудь в будущем пригодится.
Не пригодится, т.к. непонятно в чем конкретно была проблема. Надо все-таки было выложить запись трафика.

Re: Односторонняя слышимость при звонке по H.323 на сотовые

Добавлено: 06 апр 2012, 17:11
$+ep@
ded писал(а):Хм, а Вы же из CallSoft.ru?
Все верно.
ded писал(а):Что же noize не помогает в проблеме?
Нет, у него свои задачи.
amateur писал(а):т.к. непонятно в чем конкретно была проблема.
Проблема была в параметре faststart, из-за чего RTP от MVTS шел раньше чем успевали договориться о способе передачи. Так же проблема была в кодеке g729A. В asterisk я к сожалению не нашел как выключить g729A, поэтому пришлось на MVTS убирать из доступных кодеков для клиента g729A и g729B. Насколько я знаю, ooh323 поддерживает g729 и g729A, но в данном случае корректно начал работать только без использования дополнительных алгоритмов сжатия т.е. с "чистым" g729. Дамп выкладывать не буду из соображений безопасности и поскольку уже не требуется.