Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / udptl и directrtpsetup

udptl и directrtpsetup

Откуда: Ставрополь
Сообщений: 6

udptl и directrtpsetup

На Asterisk 1.6.2.15 аткнулся на такую проблему - если установлен directrtpsetup=yes, то Т.38 passthrough не проходит по интересной причине.
Есть 2 VoIP шлюза, которые умеют T.38 - Dlink DVG-7022S и LinkSYS SPA-2102
192.168.1.112/16 - ip asterisk
192.168.1.188/16 - ip linksys
192.168.204.253/16 - ip dlink
совершаем звонок с dlink на linksys факсом в автомате:

192.168.204.253 192.168.1.112 SIP/SDP Request: INVITE sip:360@192.168.1.112:5060;user=phone, with session description
v=0
o=343 1797696970 1797696970 IN IP4 192.168.204.253
s=Session SDP
c=IN IP4 192.168.204.253
t=0 0
m=audio 10000 RTP/AVP 18 0 8
a=rtpmap:18 G729/8000/1
a=fmtp:18 annexb=no
a=rtpmap:0 PCMU/8000/1
a=rtpmap:8 PCMA/8000/1
192.168.1.112 192.168.204.253 SIP Status: 100 Trying
192.168.1.112 192.168.1.188 SIP/SDP Request: INVITE sip:360@192.168.1.188:5060, with session description
v=0
o=root 1378692627 1378692627 IN IP4 192.168.204.253
s=Asterisk PBX 1.6.2.15
c=IN IP4 192.168.204.253
t=0 0
m=audio 10000 RTP/AVP 18 8 0 101
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
192.168.1.188 192.168.1.112 SIP/SDP Status: 200 OK, with session description
v=0
o=- 17475 17475 IN IP4 192.168.1.188
s=-
c=IN IP4 192.168.1.188
t=0 0
m=audio 11568 RTP/AVP 18 100 101
a=rtpmap:18 G729a/8000
a=fmtp:18 annexb=no
a=rtpmap:100 NSE/8000
a=fmtp:100 192-193
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:30
a=sendrecv
192.168.1.112 192.168.204.253 SIP/SDP Status: 200 OK, with session description
v=0
o=root 342983111 342983111 IN IP4 192.168.1.188
s=Asterisk PBX 1.6.2.15
c=IN IP4 192.168.1.188
t=0 0
m=audio 11568 RTP/AVP 18 8 0
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=ptime:20
a=sendrecv

в этом месте голос прошел нормально(пакеты ACK я не копировал), в SDP всё указано правильно, RTP получился 192.168.204.253:10000 <-> 192.168.1.118:11568
дальше приходит ReINVITE на T.38 от LinkSYS:
192.168.1.188 192.168.1.112 SIP/SDP Request: INVITE sip:343@192.168.1.112, in-dialog, with session description
v=0
o=- 17812 17812 IN IP4 192.168.1.188
s=-
c=IN IP4 192.168.1.188
t=0 0
m=image 11568 udptl t38
a=T38FaxVersion:0
a=T38MaxBitRate:14400
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxBuffer:200
a=T38FaxMaxDatagram:200
a=T38FaxUdpEC:t38UDPRedundancy

asterisk отвечает 100 Trying и шлет ReINVITE Dlink:
192.168.1.112 192.168.204.253 SIP/SDP Request: INVITE sip:343@192.168.204.253:5060, in-dialog, with session description
v=0
o=root 342983111 342983112 IN IP4 192.168.1.188
s=Asterisk PBX 1.6.2.15
c=IN IP4 192.168.1.188
t=0 0
m=image 4488 udptl t38
a=T38FaxVersion:0
a=T38MaxBitRate:14400
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxDatagram:397
a=T38FaxUdpEC:t38UDPRedundancy

и вот тут начинается фигня - linksys сказал, что ждет UDPTL по адресу 192.168.1.188:11568, а вот asterisk передал в реинвайте - 192.168.1.118:4488
далее от Dlink приходит:
192.168.204.253 192.168.1.112 SIP/SDP Status: 200 OK, with session description
v=0
o=343 1797700720 1797700720 IN IP4 192.168.204.253
s=Session SDP
c=IN IP4 192.168.204.253
t=0 0
m=image 10000 udptl t38
a=T38FaxVersion:0
a=T38FaxMaxDatagram:397

а астер в свою очередь отдает в сторону LinkSYS:
192.168.1.112 192.168.1.188 SIP/SDP Status: 200 OK, with session description
v=0
o=root 1378692627 1378692628 IN IP4 192.168.204.253
s=Asterisk PBX 1.6.2.15
c=IN IP4 192.168.204.253
t=0 0
m=image 4451 udptl t38
a=T38FaxVersion:0
a=T38MaxBitRate:14400
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxDatagram:397
a=T38FaxUdpEC:t38UDPRedundancy
и получается, что для LinkSYS RTP 192.168.1.188:11568 <-> 192.168.204.253:4451, а для DLink - 192.168.1.118:4488 <-> 192.168.204.253:10000
Естественно факсы не ходят.
Подскажите, как полечить это дело? directrtpsetup отключить нельзя по другим соображениям.
2010-12-16 21:18

Откуда: Ставрополь
Сообщений: 6

Re: udptl и directrtpsetup

выяснил. оказывается официально direct T.38 не работает, выглядит это всё именно так, что астер не убирает NativeBridge, хотя порты для этого создаёт.

пока что создал патчик для chan_sip.c для 1.6.2.15, который позволяет сделать Т.38 без проксирования, правда есть ограничение - работает только в случае, когда rtp порты для начального голоса и Т.38 совпадают. на моих железяках это правило работает, так что буду ждать официально и чуть-по-чуть смотреть, как можно самостоятельно исправить ситуацию
2010-12-17 13:40

Откуда: Киев
Сообщений: 749

Re: udptl и directrtpsetup

к сожалению на большинстве новых железок порты отличаются..
поэтому вероятность принятия патча низкая ((
2010-12-21 02:14

Откуда: Киев
Сообщений: 749

Re: udptl и directrtpsetup

линк на патч выложите, может пригодиться кому.
2010-12-21 02:14

Откуда: Ставрополь
Сообщений: 6

Re: udptl и directrtpsetup

патчик из одной строки, выложу сюда:
--- chan_sip.c.orig 2010-11-12 00:57:22.000000000 +0300
+++ chan_sip.c 2010-12-21 14:08:14.000000000 +0300
@@ -10435,6 +10435,9 @@
udptldest.sin_port = udptlsin.sin_port;
}

+ //fvv: trying use old rtp ports
+ if (p->redirip.sin_addr.s_addr) udptldest.sin_port = dest.sin_port;
+
if (debug)
ast_debug(1, "T.38 UDPTL is at %s port %d\n", ast_inet_ntoa(p->ourip.sin_addr), ntohs(udptlsin.sin_port));

2010-12-21 17:06

Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru