我已添加以下两个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均为两个Asterisk服务器的有效A记录(版本11.17.1)。
我正在使用IP X.X.X.X从另一个Asterisk服务器(版本11.17.1)发送呼叫,并带有以下拨号方案:
[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的故障转移,我在第一个priroty上的sip101.example.com上禁用了Asterisk;所以在sip101.example.com上没有响应直到10秒后,它应该故障转移到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
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
Asterisk不会成为第二优先。它只做一次尝试。如果您需要第二次尝试(到其他IP),您可以在拨号方案中进行第二次呼叫。
如果使用chan_sip,第二次调用将被解析为第一次SRV记录。使用pjsip,它可以切换(但不允许)。
如果您需要garanted switch,请使用不同的dns名称或ips,并在dialplan中进行故障转移(例如,请查看extensions.conf.sample)。
答案 2 :(得分:0)
感谢伙计们给我回复。
现在很清楚,Asterisk 11.17.2无法解析多个DNS SRV记录。
为了进一步测试,我切换了客户端(流量生成器),它将来自Asterisk 11.17的DNS SRV星号的呼叫发送到Freeswitch 1.7,它运行良好。
Freeswitch成功向DNS SRV发送/故障转移呼叫,即example.com。但仍然有一个问题,Freeswitch在恢复后永远不会将呼叫发送回主节点。它需要重新启动Freeswitch以再次选择主节点来发送呼叫。