これまでに判明していたことは、自宅の asterisk 1.8.23.1 へ接続した場合に発生していて、NTT 西日本の PR-400NE へ SIP 接続したときには発生していませんでした。何か asterisk 1.8.23.1 と PR-400NE との違いがあるはずだと思っていました。
そこで思い腰をあげてパケットキャプチャを行ってみました。自宅にはもう15年ほど昔に購入したリピーターハブが残っていました。プラネット社(現プラネックス社)の EH-500 という4ポートハブです。これを VE-TA10 の手前に装着して、やりとりされるパケットをパソコンで観測してみました。使用したソフトウェアはパケットキャプチャで定評のある WireShark です。
パケットキャプチャで活躍した PLANET EH-500 です。 |
結果から発表しますと、 VE-TA10 が30分ごとに Contact-URI の更新のために asterisk サーバへ register(登録)を行うのですが、ここで Contact-URI の更新が上手く行っていないようです。
初回 register で内線番号(203)が登録されます。VE-TA10の IP は 192.168.24.65 です。
SIP:203@192.168.24.65すぐに Contact-URI の更新が行なわれて電話番号が乱数に置き換えられます。そして有効期限は3600秒(1時間)に設定されます。
SIP:乱数1@192.168.24.65 ; 3600asterisk サーバから乱数1 で登録したことを VE-TA10 の乱数 1 の Contact-URI へ返信してしています。
これから30分後に再度 Contact-URI の更新が始まります。このとき Contact-URI の電話番号部分が再度乱数2(有効期限3600秒)へ変更となります。そして乱数1の有効期限(expires)はゼロに変更され有効期限切れの状態となります。
SIP:乱数1@192.168.24.65 ; 0
SIP:乱数2@192.168.24.65 ; 3600
ここで本来であれば asterisk サーバからは、乱数2の Contact-URI を使用すべきところなのですが、なぜか乱数1のものを使い続けるのです。それもこれから更に30分後にある Contact-URI の更新が行われた後も乱数1を使い続けているのです。
このため VE-TA10 を乱数1の電話番号で呼び出そうとすると、乱数1 は存在しないと VE-TA10 が返答をして着信が出来なくなっていました。
さらにただ単純に asterisk サーバ側だけの問題ではなく、Contact-URI の更新で新しい乱数の電話番号になったにも関わらず相変わらず乱数1の設定を使い続けていることを Request : NOTIFY で VE-TA10 へ通知しているにも関わらず、404 とか 405 のエラーで返信しないで 200 OK で asterisk サーバへ返信しているのです。
もともと asterisk サーバがちゃんと Contact-URI の変更に対応して新しい Contact-URI を使っていれば問題ない現象です。
原因が判明したので、今後の対応をこれから考えて行きたいと思っています。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。