VoIP ネットワーク

July 16, 2018

自社の内線 IP 電話網は IP-PBX に SIP サーバの役割を持たせることで構築できる。
公衆 IP 電話網と自社の内線 IP 電話網を接続するには、二つの SIP ネットワークを接続する VoIP ゲートウェイが必要となる。

VoIP GW の役割

VoIP GW は自社の内線 IP 電話網と公衆 IP 電話網との境界に位置している。
自社の内線 IP 電話網の中に SIP サーバ (IP-PBX) が存在し、通信事業者の公衆 IP 電話網の中にも SIP サーバが存在する。
それゆえ、VoIP GW は B2BUA (Back-to-Back User Agent) になる。B2BUA とは、一方の SIP ネットワーク側では着呼側、他方の SIP ネットワーク側では発呼側として振る舞う。
つまり、両方の SIP ネットワークに対して UA として振る舞う特殊な UA である。
VoIP GW は SIP ネットワークの境界に存在してセッション生成を仲介するとともに RTP パケットの中継も行う Session Border Controller (SBC) と呼ばれる機能を持つ。

自社電話機は起動後、IP-PBX に対し SIP URI と IP アドレスの対応付けを事前に登録しておく。
同様に B2BUA も 2 つの SIP ネットワークの SIP サーバに対し SIP URI とIP アドレスの対応付けを事前に登録しておく。
つまり、IP-PBX 及び公衆 IP 電話網の SIP サーバのそれぞれに対して行う。

シーケンスの具体例

例として、公衆 IP 電話網の VoIP 対応電話機から、自社電話機に電話をかける場面を取り上げる。
電話をかける以上、公衆 IP 電話網の利用者は着呼する相手の 050 電話番号を知っている。
この電話番号は通信事業者が自社に払い出したものなので、通信事業者は公衆 IP 電話網経由で自社の SIP ネットワークに接続すれば良いことを把握している。
公衆 IP 電話網の SIP サーバに対し、自社の SIP URI (自社に払い出された 050 電話番号) と IP アドレス (VoIP GW の IP アドレス) の対応付けを事前に登録しているので、公衆 IP 電話網から自社に電話をかけることができる。

自社電話機から社外に電話をかけるときは、逆にして考えれば良い。
内線 IP 電話網から見ると、公衆 IP 電話網の UA は VoIP GW になっている。IP-PBX には VoIP GW を UA として事前に登録してあるので、内線 IP 電話網から社外に電話をかけることができる。

f:id:shiro_kochi:2018××××××××:plain:w100:left

NAT に起因する問題

自社電話機 (VoIP 対応電話機) に割り当てられている IP アドレスはプライベート IP アドレスである。
インターネット網を経由して SIP を使った通話を行う場合、アドレス変換を行う必要がある。このとき、標準的な NAT 装置では通話セッションが生成できない。

着呼側 UA は INVITE リクエストを受信した際、SIP メッセージ (ボディ (SDP)) に記載された発信元 IP アドレスの情報から、発呼側 UA の IP アドレスを知ることができる。

f:id:shiro_kochi:2018××××××××:plain:w100:left

ここで、NAT ルータを経由した通信の動作シーケンスは以下のようになる。

f:id:shiro_kochi:2018××××××××:plain:w100:left

NAT は SIP メッセージに記載された発信元 IP アドレスは変換しないため、発呼側 UA の IP アドレスはプライベート IP のまま着呼側に通知されてしまい、結果として、着呼側 UA から送信した RTP パケットは、宛先がプライベート IP となるためインターネットを経由して到達させることができない。

NAT トラバーサル

上記で示した問題は、VoIP GW の NAT トラバーサルによる解決可能である。
VoIP GW は、内線 IP 電話網の側から受け取った 200 OK レスポンスの SIP メッセージをそのまま転送しているのではなく、SIP メッセージ内の発信元 IP アドレスを自分自身のグローバル IP アドレスに変換している。
このアドレスは、公衆 IP 電話網の側からは着呼側 UA のアドレスになっているので通話セッションには成功する。
つまり VoIP GW は SIP メッセージの変換も行なっており、結果として二つの SIP ネットワークにおいて通話セッションを成功させている。

f:id:shiro_kochi:2018××××××××:plain:w100:left


 © 2023, Dealing with Ambiguity