Отказ DNS SRV не работает в звездочке
Я добавил следующие две записи DNS SRV (с TTL 10 секунд) для тестирования:
_sip._udp.example.com. SRV 1 0 5060 sip101.example.com.
_sip._udp.example.com. SRV 2 0 5060 sip102.example.com.
И sip101.example.com, и sip102.example.com являются действительными записями A двух серверов Asterisk (версия 11.17.1).
Я отправляю вызов с другого сервера Asterisk (версия 11.17.1) с IP-адресом XXXX со следующим планом набора:
[default]
exten => 0900,1,NoOP(This is test call for checking DNS SRV example.com)
exten => 0900,n,Dial(SIP/XXXX@example.com)
Ниже приведена конфигурация добавочного номера, который отправляет вызовы:
[XXXX]
type=friend
username=XXXX
secret=temp
host=dynamic
context=default
canreinvite=no
srvlookup=yes
qualify=yes
nat=force_rport,comedia
Для тестирования отработки отказа DNS SRV я отключил Asterisk на sip101.example.com, который находится на первом этапе; поэтому после отсутствия ответа в течение 10 секунд на sip101.example.com он должен перейти на sip102.example.com.
Но это не переход на второй приоритет Asterisk, а время ожидания следующее:
== Using SIP RTP CoS mark 5
-- Executing [0900@default:1] NoOp("SIP/XXXX-0000014e", "This is test call for checking DNS SRV example.com") in new stack
-- Executing [0900@deafult:2] Dial("SIP/XXXX-0000014e", "SIP/XXXX@example.com") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/XXXX@example.com
-- SIP/example.com-0000014f is circuit-busy
== Everyone is busy/congested at this time (1:0/1/0)
-- Auto fallthrough, channel 'SIP/XXXX-0000014e' status is 'CONGESTION'
-- Executing [h@default:1] Hangup("SIP/XXXX-0000014e", "") in new stack
== Spawn extension (default, h, 1) exited non-zero on 'SIP/XXXX-0000014e'
[Jan 3 13:48:43] WARNING[3168]: chan_sip.c:4024 retrans_pkt: Retransmission timeout reached on transmission 18da7dbf6e671fc34a20b74a64cff9a8@X.X.X.X:5060 for seqno 102 (Critical Request) -- See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
Packet timed out after 32000ms with no response
Кто-нибудь может мне помочь с этим вопросом?
3 ответа
Спасибо, ребята, за отправку мне ответов.
Теперь ясно, что Asterisk 11.17.2 не способен разрешать несколько записей DNS SRV.
Для дальнейшего тестирования я переключаю клиента (Traffic Generator), который отправляет вызовы на звездочку DNS SRV с Asterisk 11.17 на Freeswitch 1.7, и он работает отлично.
Freeswitch успешно отправлял / переключал вызовы на DNS SRV, т.е. example.com. Но все же есть одна проблема, Freeswitch никогда не отправляет вызовы первичному узлу после его восстановления. Требуется перезапуск Freeswitch, чтобы снова выбрать основной узел для отправки вызовов.
Звездочка не пойдет вторым приоритетом. Это сделать только одну попытку. Если вам нужна вторая попытка (на другой ip), вам нужно сделать второй звонок в диалплане.
Если вы используете chan_sip, второй вызов также будет преобразован в первую запись SRV. С помощью pjsip он МОЖЕТ переключаться (но не предоставляется).
Если вам нужен гарантированный коммутатор, используйте разные имена DNS или ips и выполните аварийное переключение в плане набора (см., Например, extensions.conf.sample).