RTPパケットという音声パケット(メディアパケット)を調べると解決のヒントになるかもしれない。
たとえば、ある特殊な環境での「公衆電話網上にいる相手に音声が届かない」問題では、
AsteriskからのRTPパケットのルーティングがネットワーク上でうまくできていなかったために、
相手側へ音声が届いていないのだとわかった。
Register先アドレスとは異なる宛先のRTPパケットが、対向からの要求によってAsteriskで作られている場合、
この宛先についても正しくルーティングできなければ、相手に音声は届かない。
RTPパケットが向かうアドレスはRegister先ネットワークアドレスと必ずしも同じであるとは限らない。
そしてデフォルトゲートウェイ一本だけで通用しない特殊な環境では、
SIPパケットとRTPパケットそれぞれについてルーティング設定を考慮しなければならない。
このような問題に対処するためには、
Asteriskから送出されているRTPパケットの宛先アドレスを調べればよい。
そして正しくルーティングできるように各ルーターにゲートウェイを設定する。
どのようなRTPパケットがAsteriskから送出されようとしているか、あるいは、
どこからRTPパケットがAsteriskにやってきているかは、次のコマンドで調べる。
◆使用したバージョン
Asterisk 1.8.20.1
○次のようにして、RTPデバッグをオンにしてから、
localhost*CLI> rtp set debug onそうして、通常通り、Asterisk電話端末から電話を掛ける。
RTP Debugging Enabled
○すると、次のようなメッセージが通話中に延々とコンソール上に流れる。
メッセージは、Got RTP(Asteriskが受け取ったRTP)と、Sent RTP(Asteriskが送り出したRTP)に分けられる。
この例ではAsteriskが電話機とVOIPゲートウェイの間で中継器として機能している。、
一方からRTPを受け取って、他方へとRTPを流している様子と、
他方からRTPを受け取って、一方へとRTPを流している様子がわかる。
Got RTP packet from 192.168.1.10:50248 (type 00, seq 019709, ts 224768732, len 000160)たとえば、この情報から、192.168.2.11というアドレスに、RTPパケットが送出されていることがわかる。
Sent RTP packet to 192.168.2.11:5968 (type 00, seq 055566, ts 224768728, len 000160)
Got RTP packet from 192.168.2.11:5968 (type 00, seq 014666, ts 090720, len 000160)
Sent RTP packet to 192.168.1.10:50248 (type 00, seq 033646, ts 090720, len 000160)
Got RTP packet from 192.168.1.10:50248 (type 00, seq 019710, ts 224768892, len 000160)
Sent RTP packet to 192.168.2.11:5968 (type 00, seq 055567, ts 224768888, len 000160)
Got RTP packet from 192.168.2.11:5968 (type 00, seq 014667, ts 090880, len 000160)
Sent RTP packet to 192.168.1.10:50248 (type 00, seq 033647, ts 090880, len 000160)
Got RTP packet from 192.168.1.10:50248 (type 00, seq 019711, ts 224769052, len 000160)
Sent RTP packet to 192.168.2.11:5968 (type 00, seq 055568, ts 224769048, len 000160)
もしこの192.168.2.11がPSTN-VOIPゲートウェイだとして、そこへ正しくルーティングされないなら、
公衆電話網上の相手先に音声が届かないことになる。
この場合なら、192.168.2.11へのゲートウェイをルーターに正しく設定する必要がある。
Asteriskは、このようにデバッグ機能が充実しているので、便利だと思った。