У клиента установлена 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
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
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
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()
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()
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 - - -
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, поэтому для сиповых абонентов данные кодеки убирать нельзя.