基礎から始めるIP-PBX [ 第2回 シグナリングにおけるIP-PBXの仕組み]
目次
前回のおさらい
まずは第一回のおさらいから。前回はIP-PBXについて、以下の2点について紹介しました。まだ第1回(基礎から始めるIP-PBX[第1回 IP-PBXのイメージを掴もう])を見ていない人はそちらを先に見ることをおススメします。
- IP-PBXはいわゆるサーバーであり、IPネットワーク(WANやLAN)経由でIP電話端末やソフトフォンと接続。
- 従来の電話システムではPBXが行っていた回線交換処理をIP-PBXはIPネットワーク上で行う。
今回の話
前回で掴んだこれらIP-PBXのイメージをふまえ、今回は一歩踏み込んで次の2点について紹介します。
- SIPサーバの機能とIP-PBXサーバの機能は何が違う?棲み分けは?
- 具体的にIP-PBXを実現しているVoIP技術とは?
それでは早速、見ていきましょう。
IP-PBXはSIPサーバをベースとして、その上で付加機能を提供する。
一口にIP-PBXと言っていますが、そのIP-PBXの中の仕組みは大きく2つに分けられます。
- SIPサーバ機能(SIPレジスター,SIPプロキシ,セキュリティ機能等)
- 呼制御、ダイヤリング,コーデック変換、転送,保留,留守番電話,IVR,オートアテンダント、電話会議機能など。(どちらかというと狭義のIP-PBX機能)
また、一般にコールセンターシステムの機能の一部として位置付けられている、全通話録音、高性能ダイヤラー、スケジュール機能、IVRデザイン、ACDなどについてもIP-PBXのオプション機能として提供されている場合があります。
このため、広義の意味でのIP-PBXとは「基本的に内部に1のSIPサーバの機能がバンドルされており、この機能の上で2のような付加機能が稼働している」と考えてよいでしょう。 この1と2の機能は製品によっては一つのアプリケーションとして提供されているものもあれば、別プロセス(別アプリケーション)として稼働している製品もあります。
IP-PBXは普通の言語でコーディングされている。
「PBX」というと、何か特殊な古臭い言語で書かれているイメージがありますが、現在のIP-PBXは普通の言語で書かれています。オープンソースで有名なAsteriskはC言語ベースです。また、どのようなプラットフォームでも稼働できるようにJavaでコーディングされているものもあります。(Brekekeなど。)
IP-PBXはSIPの視点で見るとUA(ユーザエージェント)として働く。
現在のIP-PBXはその電話のシグナリング用のプロトコルとしてSIP(Session Initiation Protocol)を採用しています。
SIPのプロトコル自体はRFC3261(SIP: Session Initiation Protocol)で詳しく定義されています。今回はプロトコルの話ではありませんので詳細は別の回に譲ります。興味のある方はRFC3261とこちらの記事(VoIP技術者のための実践講座 [第2回WireSharkでSIPシグナリングを見る])をご参照ください。
話を戻します。SIPサーバーのみでIP電話機同士が通信している構成が、IP-PBXが入るとどのように変わるのでしょうか。わかりやすくするため、まずはSIPサーバとSIP電話機だけの場合を見ていきましょう。以下の図をご参照ください。
この場合、各UAであるSIP端末は相手へコールする場合、相手のSIPアドレスを事前に知っておく必要があります。SIPサーバはこのアドレスを元にコール先のSIP端末Bの実アドレスへメッセージを送ります。
ここでIP-PBXが入ると以下のようになります。
IP-PBXは仮想のUAとしてSIP端末からのコールを受け、さらに仮想のUAとしてコール先のSIP端末をコールします。この時、IP-PBXは自身の持つ「内線番号とSIPアドレス(uri)の対応表」を元に回線交換を行っています。このため、SIP端末AはSIPアドレスではなく、電話番号を指定することで端末Bをコールすることができます。
いかがでしたでしょうか。今回はシグナリングにおけるIP-PBXの仕組みを中心としてお話ししましたが、セッション確立後においてもIP-PBXは重要な役割を果たしています。その点についてはまた次回以降ご紹介します。
わかりやすいーー。次回も楽しみにしてます。
非常に分かりやすかったです。
ありがとうございます!
もやもやしていたところが晴れました!なるほど!