1

テスト用に、次の 2 つの 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 の両方が、2 つのアスタリスク サーバー (バージョン 11.17.1) の有効な A レコードです。

別のアスタリスク サーバー (バージョン 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 のフェールオーバーをテストするために、優先順位が高い sip101.example.com でアスタリスクを無効にしました。そのため、sip101.example.com で 10 秒間応答がない場合、sip102.example.com にフェールオーバーする必要があります。

ただし、優先順位が 2 番目のアスタリスクにフェールオーバーするのではなく、次のようにタイムアウトします。

== 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

誰でもこの問題で私を助けることができますか?

4

3 に答える 3

0

返信を送ってくれてありがとう。

Asterisk 11.17.2 には、複数の DNS SRV レコードを解決する能力がないことが明らかになりました。

さらにテストするために、DNS SRV asterisk への呼び出しを送信するクライアント (Traffic Generator) を Asterisk 11.17 から Freeswitch 1.7 に切り替えたところ、完全に動作しました。

Freeswitch は、DNS SRV、つまり example.com への呼び出しを正常に送信/フェイルオーバーしていました。ただし、まだ 1 つの問題があります。Freeswitch は、回復後にプライマリ ノードにコールを送り返しません。通話を送信するプライマリ ノードを再度選択するには、Freeswitch の再起動が必要です。

于 2017-01-09T12:00:38.353 に答える