以下、本発明の実施の形態について説明する。
図1は、本発明の一実施の形態が適用されたIP電話システムの概略構成図である。
図示するように、本実施の形態のIP電話システム1は、WAN7を介してキャリア側のSIP(Session Initiation Protocol)サーバ5およびDHCP(Dynamic Host Configuration Protocol)サーバ6に接続されている。また、IP電話システム1は、複数のIP電話機2と、WAN7に接続されたルータ3と、複数のIP電話機2各々をルータ3に接続するためのLANケーブル4と、を有する。
IP電話システム1には、各IP電話機2に共通の外線番号が付与されている。
また、各IP電話機2には、ローカルアドレスおよび固有の内線番号が付与されている。IP電話機2は、IP電話機としての機能に加え、任意のプログラムを実行する機能を有する。このプログラムを実行する機能により、IP電話機2をSIPサーバとして機能させることができる。また、SIPゲートウェイとして機能させることもできる。
図2は、IP電話機2の概略図である。
図示するように、IP電話機2は、ネットワークインターフェース部201と、MM(MAN MACHINE)インターフェース部202と、TCP・UDP/IP処理部203と、SIP処理部204と、RTP処理部205と、プログラム実行部206と、プログラム格納部207と、起動制御部208と、動作状況監視部209と、を有する。
ネットワークインターフェース部201は、イーサネット(登録商標)のインターフェース制御機能を有し、LANケーブル4およびルータ3を介して、WAN7および他のIP電話機2とフレームを送受する。具体的には、LANケーブル4から受信したフレームを処理して、このフレームからIPパケットを抽出し、TCP・UDP/IP処理部203に渡す。また、TCP・UDP/IP処理部203から受け取ったIPパケットをフレームに格納して、LANケーブル4へ送出する。
MMインターフェース部202は、ユーザに情報を提示したり、ユーザから情報を受け付けたりするためのインターフェースであり、スピーカ、マイク等の音声入出力部、LCD表示、LED表示等の表示部、および入力キー等の操作部を有する。
TCP・UDP/IP処理部203は、IP(Internet Protocol)に従い、ネットワークインターフェース部201と送受するIPパケットを処理する。また、TCP(Transmission Control Protocol)に従い、ネットワークインターフェース部201から受信したIPパケットに格納されているTCPパケット、およびネットワークインターフェース部201に送信するIPパケットに格納するTCPパケットを処理する。また、UDP(User Datagram Protocol)に従い、ネットワークインターフェース部201から受信したIPパケットに格納されているUDPパケット、およびネットワークインターフェース部201に送信するIPパケットに格納するUDPパケットを処理する。
SIP処理部204は、SIPに従い、TCP・UDP/IP処理部203と送受するSIPパケットを処理する。
RTP処理部205は、RTP(Realtime Transport Protocol)に従い、TCP・UDP/IP処理部203と送受するRTPパケットを処理する。
プログラム実行部206は、起動制御部208の指示に従い、プログラム格納部207に格納されているプログラムを実行する。本実施の形態では、SIPサーバ機能を実現するためのSIPサーバプログラム2071、およびSIPゲートウェイ機能を実現するためのSIPゲートウェイプログラム2072をプログラム格納部207に格納している。
図3は、プログラム実行部206がSIPサーバプログラム2071を実行することにより実現されるSIPサーバ機能のブロック図である。
図示するように、SIPサーバプログラム2071を実行することで、プログラム実行部206は、SIPサーバ処理部2061と、動作状況取得部2062と、動作状況記憶部2063と、起動停止指示部2064と、アドレス通知部2065と、を有する。
SIPサーバ処理部2061は、SIPサーバとしてSIPパケットを処理する。
動作状況取得部2062は、定期的に、IP電話機2から動作状況を取得するための動作状況報告要求を格納した制御パケットを、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、各IP電話機2が所属するグループに対してマルチキャストで送信する。そして、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して各IP電話機2から受信した制御パケットに格納されている動作状況を、動作状況記憶部2063に登録する。
図4は、動作状況記憶部2063の登録内容を模式的に表した図である。図示するように、動作状況記憶部2063には、IP電話機2毎にレコード20630が登録される。レコード20630は、IP電話機2のローカルアドレスを登録するフィールド20631と、SIPサーバプログラム2071の実行状態を登録するフィールド20632と、SIPゲートウェイプログラム2072の実行状態の登録するフィールド20633と、SIPゲートウェイ機能の使用状態を登録するフィールド20634と、IP電話機2の負荷状態を登録するフィールド20635と、を有する。
なお、フィールド20632、20633において、「実行中」とは、対象のIP電話機2が自身のプログラム格納部207に格納されている対象のプログラムを実行中であることを示し、「未実行」とは、対象のIP電話機2が自身のプログラム格納部207に格納されている対象のプログラムを実行していないことを示し、そして、「未登録」とは、対象のIP電話機2のプログラム格納部207に対象のプログラムが格納されていないことを示している。また、フィールド20634において、「使用中」とは、対象のIP電話機2のSIPゲートウェイ機能が任意のIP電話機2とWAN7との通信(外線通信)に使用中であることを示し、「アイドル状態」とは、対象のIP電話機2のSIPゲートウェイ機能が外線通信に使用中でないことを示している。また、フィールド20635において、「正常」とは、対象のIP電話機2の負荷(例えばCPU利用率)が所定値未満であることを示しており、「過負荷」とは、対象のIP電話機2の負荷が所定値以上であることを示している。
起動停止指示部2064は、動作状況記憶部2063に登録されている各IP電話機2の動作状況に基づいて、SIPゲートウェイプログラム2072を新たに実行するIP電話機2、あるいはSIPゲートウェイプログラム2072の実行を停止するIP電話機2を決定する。そして、SIPゲートウェイプログラム2072の起動指示あるいは停止指示を格納した制御パケットを、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、この決定したIP電話機2に送信する。
アドレス通知部2065は、各IP電話機2のWAN7に対する発着信の処理毎に、IP電話機2がWAN7との通信(外線通信)に用いるSIPゲートウェイのローカルアドレスを、このIP電話機2に通知する。具体的には、あるIP電話機(発信元IP電話機)2がWAN7に対して発信した場合に、発信元IP電話機2が外線通信に用いるSIPゲートウェイのローカルアドレスを、この外線発信の処理においてSIPサーバ処理部2061が発信元IP電話機2に送信する100Tryingメッセージを用いて発信元IP電話機2に通知する。また、WAN7からあるIP電話機(着信先IP電話機)2に対して着信した場合に、着信先IP電話機2が外線通信に用いるSIPゲートウェイのローカルアドレスを、この外線着信の処理においてSIPサーバ処理部2061が着信先IP電話機2に送信するINVITEメッセージを用いて、着信先IP電話機2に通知する。
図5は、プログラム実行部206がSIPゲートウェイプログラム2072を実行することにより実現されるSIPゲートウェイ機能のブロック図である。
図示するように、SIPゲートウェイプログラム2072を実行することで、プログラム実行部206は、SIPゲートウェイ処理部2066と、グローバルアドレス取得部2067と、外線番号登録要求部2068と、を有する。
SIPゲートウェイ処理部2066は、SIPゲートウェイとしてIP電話機2とWAN7との間を中継する。グローバルアドレス取得部2067は、DHCPサーバ6からグローバルアドレスを取得する。そして、外線番号登録要求部2068は、SIPサーバ5に、グローバルアドレス取得部2067によって取得されたグローバルアドレスと、予め登録されている各IP電話機2に共通の外線番号とを含む外線番号登録要求を送信する。
図2に戻って説明を続ける。起動制御部208は、MMインターフェース部202より受け取った起動指示、あるいはTCP・UDP/IP処理部203から受け取った制御パケットに格納されている起動指示あるいは停止指示に従い、プログラム実行部206によるこの指示で指定されたプログラムの起動および停止を制御する。
動作状況監視部209は、自IP電話機2の動作状況を監視し、その監視結果を保持する。この監視結果には、SIPサーバプログラム2071の実行状態、SIPゲートウェイプログラム2072の実行状態、SIPゲートウェイ機能の使用状態、およびIP電話機2の負荷状態を含む。また、動作状況監視部209は、TCP・UDP/IP処理部203から受け取った制御パケットに格納されている動作状況報告要求に従い、保持している監視結果を含む動作状況報告を生成し、これを格納した制御パケットを、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、動作状況報告要求の送信元に返信する。
次に、IP電話機2の動作について説明する。
先ず、IP電話機2の基本動作を説明する。ここで、基本動作とは、SIPサーバ機能およびSIPゲートウェイ機能以外の電話機能の動作を意味する。
図6は、IP電話機2の基本動作を説明するためのフロー図である。
SIP処理部204は、MMインターフェース部202を介してユーザより発信指示を受け付けると(S201でYES)、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、IP電話システム1内に設けられた所定のSIPサーバ(ローカルサーバと呼ぶ)との間でSIPメッセージを送受することにより発信処理を行う。そして、通話相手とRTP処理部205との間に通話路を設定する。この際、SIP処理部204は、INVITEメッセージに対する応答としてローカルサーバから受信した100Tryingメッセージからゲートウェイアドレスを取得し、これをTCP・UDP/IP処理部203に通知する。TCP・UDP/IP処理部203は、SIP処理部204から受け取ったゲートウェイアドレスをデフォルトゲートウェイに設定する(S202)。
また、SIP処理部204は、ネットワークインターフェース部201およびTCP・UDP/IP処理部203を介して、ローカルサーバより自IP電話機2を宛先とするINVITEメッセージを受信すると(S203でYES)、ローカルサーバとの間でSIPメッセージを送受することにより着信処理を行う。そして、通話相手とRTP処理部205との間に通話路を設定する。この際、SIP処理部204は、受信したINVITEメッセージからゲートウェイアドレスを取得し、これをTCP・UDP/IP処理部203に通知する。TCP・UDP/IP処理部203は、SIP処理部204から受け取ったゲートウェイアドレスをデフォルトゲートウェイに設定する(S204)。
また、動作状況監視部209は、ネットワークインターフェース部201およびTCP・UDP/IP処理部203を介して、ローカルサーバより動作状況報告要求を受信すると(S205でYES)、自IP電話機2に関して、SIPサーバプログラム2071の実行状態、SIPゲートウェイプログラム2072の実行状態、SIPゲートウェイ機能の使用状態、およびIP電話機2の負荷状態を取得する(S206)。そして、取得した情報を含む動作状況報告を、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介してローカルサーバに通知する(S207)。
また、起動制御部208は、ネットワークインターフェース部201およびTCP・UDP/IP処理部203を介して、ローカルサーバよりSIPゲートウェイプログラム2072の起動指示を受信すると、または、MMインターフェース部202よりSIPゲートウェイプログラム2072の起動指示を受け付けると(S208でYES)、プログラム実行部206がSIPゲートウェイプログラム2072を実行中であるか否かを調べ(S209)、実行中でないならば(S209でNO)、プログラム実行部206に、プログラム格納部207に格納されているSIPゲートウェイプログラム2072の実行を指示する。プログラム格納部207にSIPゲートウェイプログラム2072が格納されていない場合、起動制御部208は、図示していない所定のサーバにアクセスして、このサーバからSIPゲートウェイプログラムをダウンロードし、プログラム格納部207に格納する。それから、プログラム実行部206にSIPゲートウェイプログラム2072の実行を指示する。
これを受けて、プログラム実行部206は、プログラム格納部207からSIPゲートウェイプログラム2072を読み出し実行する。これにより、SIPゲートウェイ機能(図5参照)を有効にする(S210)。
次に、グローバルアドレス取得部2067は、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介してDHCPサーバ6にアクセスし、このDHCPサーバ6からグローバルアドレスを取得する(S211)。また、ゲートウェイアドレスとして、自IP電話機2のローカルアドレスをローカルサーバに通知する(S212)。
それから、外線番号登録要求部2068は、取得したグローバルアドレスおよび予め登録されている各IP電話機2に共通の外線番号を含む外線番号登録要求を生成し、この外線番号登録要求を、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、SIPサーバ5に送信する(S213)。
次に、SIPサーバプログラム2071を実行中のIP電話機2の動作を説明する。
図7は、SIPサーバプログラム2071を実行中のIP電話機2の動作を説明するためのフロー図である。
動作状況取得部2062は、例えば定期的に到来する所定の監視タイミングになると(S221でYES)、起動停止指示部2064と連携して、後述するゲートウェイ増減処理を行い、SIPゲートウェイプログラム2072を実行するIP電話機2の数を調整する(S222)。
また、SIPサーバ処理部2061は、ネットワークインターフェース部201およびTCP・UDP/IP処理部203を介して、INVITEメッセージを受信すると(S223でYES)、このINVITEメッセージがルータ3を介してWAN7側(SIPゲートウェイ)から着信したならば(S224でYES)、後述するサーバ着信処理を行い(S226)、INVITEメッセージの送信元であるWAN7側の通話相手とIP電話機2との間に通話路を設定する。一方、このINVITEメッセージがルータ3を介してIP電話機2から着信したならば(S224でNO)、後述するサーバ発信処理を行い(S225)、このIP電話機2とINVITEメッセージの宛先であるWAN7側の通話相手との間に通話路を設定する。
また、SIPサーバプログラム2071を実行中のIP電話機2は、これらの動作(S221〜S226)に加え、図6を用いて説明したIP電話機2の基本動作を行う(S227)。
図8は、図7に示すゲートウェイ増減処理(S222)を説明するためのフロー図である。
先ず、動作状況取得部2062は、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、IP電話システム1の各IP電話機2に、動作状況報告要求をマルチキャストで送信する(S22201)。そして、IP電話機2から動作状況報告を受信したならば(S22202でYES)、この動作状況報告を用いて動作状況記憶部2063を更新する(S22203)。具体的には、動作状況報告の送信元アドレスをキーにして、動作状況記憶部2063からレコード20630を検索し、検索したレコード20630のフィールド20632〜20635の登録内容を、動作状況報告に含まれているSIPサーバプログラム2071の実行状態、SIPゲートウェイプログラム2072の実行状態、SIPゲートウェイ機能の使用状態、およびIP電話機2の負荷状態に更新する。レコード20630を検索できなかった場合は、動作状況記憶部2063に新たなレコード20630を追加し、このレコード20630のフィールド20631に動作状況報告の送信元アドレスを、そして、このレコード20630のフィールド20632〜20635に、動作状況報告に含まれているSIPサーバプログラム2071の実行状態、SIPゲートウェイプログラム2072の実行状態、SIPゲートウェイ機能の使用状態、およびIP電話機2の負荷状態を登録する。
動作状況取得部2062は、動作状況報告要求の送信後、所定時間を経過するまで、S22202〜S22203を繰り返す(S22204)。そして、所定時間を経過したならば(S22204でYES)、起動停止指示部2064に、起動停止の対象となるIP電話機2の検索を指示する。これを受けて、起動停止指示部2064は、SIPゲートウェイプログラム2072を実行中のIP電話機2の中に、負荷状態が「正常」のIP電話機2が存在しているか否かを調べる(S22205)。具体的には、動作状況記憶部2063を参照し、フィールド20633に登録されているSIPゲートウェイプログラム2072の実行状態が「実行中」であり、且つフィールド20635に登録されているIP電話機2の負荷状態が「正常」であるレコード20630があるか否か調べる。
SIPゲートウェイプログラム2072を実行中のIP電話機2の中に、負荷状態が「正常」のIP電話機2が存在しない場合(S22205でNO)、起動停止指示部2064は、SIPゲートウェイプログラム2072を実行するIP電話機2を増やす必要があると判断し、新たにSIPゲートウェイプログラム2072を実行するIP電話機2を決定する(S22206)。具体的には、動作状況記憶部2063を参照し、フィールド20633に登録されているSIPゲートウェイプログラム2072の実行状態が「未実行」であり、且つフィールド20635に登録されているIP電話機2の負荷状態が「正常」であるレコード20630を一つ検索する。このようなレコード20630が動作状況記憶部2063に登録されていない場合は、フィールド20633に登録されているSIPゲートウェイプログラム2072の実行状態が「未登録」であり、且つフィールド20635に登録されているIP電話機2の負荷状態が「正常」であるレコード20630を一つ検索する。そして、検索したレコード20630のフィールド20631に登録されているアドレスにより特定されるIP電話機2を、新たにSIPゲートウェイプログラム2072を実行するIP電話機2に決定する。
それから、起動停止指示部2064は、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、新たにSIPゲートウェイプログラム2072を実行するIP電話機2に、SIPゲートウェイプログラム2072の起動指示を送信する(S22207)。そして、ネットワークインターフェース部201およびTCP・UDP/IP処理部203を介して、このIP電話機2のアドレスをゲートウェイアドレスとして受信したならば(S22208でYES)、このIP電話機2のアドレスをキーにして、動作状況記憶部2063からレコード20630を検索し、検索したレコード20630のフィールド20633に登録されているSIPゲートウェイプログラム2072の実行状態を「実行中」に更新する(S22209)。
一方、SIPゲートウェイプログラム2072を実行中のIP電話機2の中に、負荷状態が「正常」のIP電話機2が存在する場合(S22205でYES)、起動停止指示部2064は、SIPゲートウェイプログラム2072を実行中のIP電話機2の中に、ゲートウェイ使用状態が「アイドル状態」のIP電話機2が複数存在しているか否かを調べる(S22210)。具体的には、動作状況記憶部2063を参照し、フィールド20633に登録されているSIPゲートウェイプログラム2072の実行状態が「実行中」であり、且つフィールド20634に登録されているゲートウェイ使用状態が「アイドル状態」であるレコード20630が複数あるか否か調べる。
SIPゲートウェイプログラム2072を実行中のIP電話機2の中に、ゲートウェイ使用状態が「アイドル状態」のIP電話機2が複数存在する場合(S22210でYES)、起動停止指示部2064は、SIPゲートウェイプログラム2072を実行するIP電話機2を減らせると判断し、SIPゲートウェイプログラム2072の実行を停止するIP電話機2を決定する(S22211)。具体的には、動作状況記憶部2063から、フィールド20633に登録されているSIPゲートウェイプログラム2072の実行状態が「実行中」であり、且つフィールド20634に登録されているゲートウェイ使用状態が「アイドル状態」であるレコード20630を一つ検索し、このレコード20630のフィールド20631に登録されているアドレスにより特定されるIP電話機2を、SIPゲートウェイプログラム2072の実行を停止するIP電話機2に決定する。
それから、起動停止指示部2064は、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、SIPゲートウェイプログラム2072の実行を停止するIP電話機2に、SIPゲートウェイプログラム2072の停止指示を送信する(S22212)。そして、ネットワークインターフェース部201およびTCP・UDP/IP処理部203を介して、このIP電話機2から完了通知を受信したならば(S22213でYES)、このIP電話機2のアドレスをキーにして、動作状況記憶部2063からレコード20630を検索し、検索したレコード20630のフィールド20633に登録されているSIPゲートウェイプログラム2072の実行状態を「未実行」に、そしてフィールド20634に登録されているゲートウェイ使用状態をヌルに更新する(S22214)。
図9は、図7に示すサーバ発信処理(S225)を説明するためのフロー図である。
先ず、SIPサーバ処理部2061は、発信元のIP電話機2がWAN7側の通話相手との通信に用いるSIPゲートウェイを選択する(S22501)。
具体的には、動作状況記憶部2063を参照し、フィールド20633に登録されているSIPゲートウェイプログラム2072の実行状態が「実行中」であるレコード20630を検索する。そして、検索したレコード20630の中から一つ選択し、この選択したレコード20630のフィールド20631に登録されているアドレスにより特定されるIP電話機2をSIPゲートウェイとする。ここで、負荷を分散するために、次のようにして、検索したレコード20630の中から一つ選択するようにしてもよい。すなわち、フィールド20634に登録されているゲートウェイ使用状態が「アイドル状態」であり、且つフィールド20635に登録されているIP電話機2の負荷状態が「正常」であるレコード20630があるならば、これらのレコード20630の中から一つ選択する。このようなレコード20630がない場合、フィールド20635に登録されているIP電話機2の負荷状態が「正常」であるレコード20630があるならば、これらのレコード20630の中から一つ選択する。
次に、SIPサーバ処理部2061は、選択したSIPゲートウェイに、IP電話機2から受信したINVITEメッセージを転送する(S22502)。そして、このSIPゲートウェイから応答が来るのを待ち(S22503、S22506)、この応答が100Tryingメッセージならば(S22503でYES)、INVITEメッセージの送信元であるIP電話機2に100Tryingメッセージを送信する。この際、アドレス通知部2065は、選択したSIPゲートウェイのアドレスをゲートウェイアドレスとして100Tryingメッセージに含める(S22504)。その後は、既存のSIPサーバと同様に、SIPに従いSIPメッセージを中継して、INVITEメッセージの送信元であるIP電話機2と、INVITEメッセージの宛先であるWAN7側の通話相手との間に通話路を設定する(S22505)。
一方、選択したSIPゲートウェイからの応答がCANCELメッセージである場合(S22506でYES)、SIPサーバ処理部2061は、選択したSIPゲートウェイに200OKメッセージ、487Request Terminetedメッセージを送信する(S22507)。そして、選択したSIPゲートウェイからACKメッセージを受信したならば(S22508でYES)、SIPサーバ処理部2061は、未選択のSIPゲートウェイがあるか否かを調べる(S22509)。
具体的には、動作状況記憶部2063を参照し、フィールド20633に登録されているSIPゲートウェイプログラム2072の実行状態が「実行中」であるレコード20630のうち、S22501で選択されていないレコード20630があるか否かを調べる。このようなレコード20630がある場合は(S22509でYES)、S22501に戻り、未選択のレコード20630の中からレコード20630を一つ選択し、処理を続ける。一方、このようなレコード20630がない場合は(S22509でNO)、INVITEメッセージの送信元であるIP電話機2に、CANCELメッセージを送信する等の所定のエラー処理を行う(S22510)。
図10は、図7に示すサーバ着信処理(S226)を説明するためのフロー図である。
先ず、SIPサーバ処理部2061は、WAN7側から着信したINVITEメッセージを中継したSIPゲートウェイのアドレスを保持する(S22601)。
それから、SIPサーバ処理部2061は、このINVITEメッセージと送信元(発番号)を同一にするINVITEメッセージが他のSIPゲートウェイから送られてくるのを待ち(S22602)、このSIPゲートウェイのアドレスを保持する(S22603)。この処理を、最初のINVITEメッセージが着信してから所定時間を経過するまで行う(S22604)。
次に、SIPサーバ処理部2061は、アドレスを保持したSIPゲートウェイの中から、これらのINVITEメッセージの送信元であるWAN7側の通話相手とIP電話機2との通信に利用するSIPゲートウェイを決定する(S22605)。例えば、最初にINVITEメッセージを転送したSIPゲートウェイを、利用するSIPゲートウェイに決定する。そして、SIPサーバ処理部2061は、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、この決定したSIPゲートウェイに100Tryingメッセージを返信する(S22606)。
それから、SIPサーバ処理部2061は、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、アドレスを保持したSIPゲートウェイであって、S22605での決定から外れたSIPゲートウェイに、CANCELメッセージを送信する(S22607)。それから、このSIPゲートウェイから200OKメッセージ、487Request Terminetedメッセージを受信したならば(S22608でYES)、このSIPゲートウェイにACKメッセージを返信する(S22609)。
さて、SIPサーバ処理部2061は、アドレスを保持したSIPゲートウェイであって、S22605での決定から外れた全てのSIPゲートウェイに対して、CANCELメッセージを送信したか否かを調べる(S22610)。送信していない場合(S22610でNO)、S22607に戻り、CANCELメッセージ未送信のSIPゲートウェイにCANCELメッセージを送信する。
一方、アドレスを保持したSIPゲートウェイであって、S22605での決定から外れた全てのSIPゲートウェイに対して、CANCELメッセージを送信したならば(S22610でYES)、SIPサーバ処理部2061は、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、各IP電話機2に、このINVITEメッセージを転送する。この際、アドレス通知部2065は、S22605で決定したSIPゲートウェイのアドレスをゲートウェイアドレスとしてINVITEメッセージに含める(S22611)。その後は、既存のSIPサーバと同様に、SIPに従いSIPメッセージを中継して、INVITEメッセージの送信元であるWAN7側の通話相手とIP電話機2との間に通話路を設定する(S22612)。
次に、SIPゲートウェイプログラム2072を実行中のIP電話機2の動作を説明する。
図11は、SIPゲートウェイプログラム2072を実行中のIP電話機2の動作を説明するためのフロー図である。
起動制御部208は、ネットワークインターフェース部201およびTCP・UDP/IP処理部203を介して、ローカルサーバよりSIPゲートウェイプログラム2072の停止指示を受信すると(S231でYES)、プログラム実行部206に、SIPゲートウェイプログラム2072の実行停止を指示する。これを受けて、プログラム実行部206は、SIPゲートウェイプログラム2072の実行を停止する。これにより、SIPゲートウェイ機能を無効にする(S232)。それから、起動制御部208は、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、ローカルサーバに起動停止の完了通知を送信して(S233)、このフローを終了する。
また、SIPゲートウェイ処理部2066は、ネットワークインターフェース部201およびTCP・UDP/IP処理部203を介して、INVITEメッセージを受信すると(S234でYES)、後述するSIP中継処理を行う(S235)。
また、SIPゲートウェイ処理部2066は、ネットワークインターフェース部201およびTCP・UDP/IP処理部203を介して、RTPパケットを受信すると(S236でYES)、このRTPパケットの宛先に従いWAN7側もしくはIP電話機2へ中継する(S237)。
また、SIPゲートウェイプログラム2072を実行中のIP電話機2は、これらの動作(S231〜S237)に加え、図6を用いて説明したIP電話機2の基本動作を行う(S238)。
図12は、図11に示すSIP中継処理(S235)を説明するためのフロー図である。
SIPゲートウェイ処理部2066は、動作状況監視部209に保持されている自IP電話機2の負荷状態が「過負荷」であるか否かを調べる(S23501)。過負荷状態でない場合は(S23501でNO)、既存のSIPゲートウェイと同様に、SIPに従いSIPメッセージを中継する(S23505)。
一方、自IP電話機2が過負荷状態にある場合(S23501でYES)、SIPゲートウェイ処理部2066は、TCP・UDP/IP処理部203およびネットワークインターフェース部201を介して、INVITEメッセージの送信元にCANCELメッセージを送信する(S23502)。それから、このINVITEメッセージの送信元から200OKメッセージ、487Request Terminetedメッセージを受信したならば(S23503でYES)、このINVITEメッセージの送信元にACKメッセージを返信する(S23504)。
次に、本実施の形態に係るIP電話システム1の動作例を説明する。
図13は、SIPゲートウェイプログラム2072を実行するIP電話機2を増加させる場合におけるメッセージの流れを示すシーケンス図である。なお、図13において、内線「01」のIP電話機2のみがSIPサーバプログラム2071を実行しており、各IP電話機2には、内線「01」のIP電話機2のローカルアドレスがローカルサーバのアドレスとして登録されているものとする。また、初期状態において、内線「02」のIP電話機2のみがSIPゲートウェイプログラム2072を実行しているものとする。
ローカルサーバ(SIPサーバプログラム2071を実行している内線「01」のIP電話機2)は、所定の監視タイミングになると、IP電話システム1内の各IP電話機2が所属するグループのマルチキャストアドレスを宛先として、動作状況報告要求を送信する(S101)。
各IP電話機2は、ローカルサーバから動作状況報告要求を受信すると、自IP電話機2の動作状況を取得し、取得した動作状況を含む動作状況報告をローカルサーバに返信する(S102)。図13に示す例では、内線「02」のIP電話機2がSIPゲートウェイプログラム2072の実行状態「実行中」およびIP電話機2の負荷状態「過負荷」を含む動作状況報告をローカルサーバに送信し、内線「03」のIP電話機2がSIPゲートウェイプログラム2072の実行状態「未登録」およびIP電話機2の負荷状態「正常」を含む動作状況報告をローカルサーバに送信し、そして、内線「04」のIP電話機2がSIPゲートウェイプログラム2072の実行状態「未実行」およびIP電話機2の負荷状態「正常」を含む動作状況報告をローカルサーバに送信している。
次に、ローカルサーバは、各IP電話機2から動作状況報告を受信すると、これらの動作状況報告に含まれていた、各IP電話機2の動作状況に基づいて、SIPゲートウェイプログラム2072の実行状態が「実行中」であり、且つIP電話機2の負荷状態が「正常」であるIP電話機2が存在しないことを確認し、SIPゲートウェイプログラム2072の実行状態が「未実行」であり、且つIP電話機2の負荷状態が「正常」である内線「04」のIP電話機2を、新たにSIPゲートウェイプログラム2072を実行するIP電話機2に決定する(S103)。そして、内線「04」のIP電話機2に、SIPゲートウェイプログラム2072の起動指示を送信する(S104)。
内線「04」のIP電話機2は、ローカルサーバからSIPゲートウェイプログラム2072の起動指示を受信すると、SIPゲートウェイプログラム2072を実行して、SIPゲートウェイ機能を有効にする(S105)。それから、内線「04」のIP電話機2は、DHCPサーバ6からグローバルアドレスを取得する(S106)。また、ローカルサーバに、自IP電話機2のローカルアドレスをゲートウェイアドレスとして通知する(S107)。これを受けて、ローカルサーバは、内線「04」のIP電話機2の動作状況に含まれるSIPゲートウェイプログラム2072の実行状態を「実行中」に更新する(S108)。また、内線「04」のIP電話機2は、取得したグローバルアドレス、および予め登録されている各IP電話機2に共通の外線番号を、SIPサーバ5に外線番号登録する(S109)。
図14は、SIPゲートウェイプログラム2072を実行するIP電話機2を減少させる場合におけるメッセージの流れを示すシーケンス図である。なお、図14において、内線「01」のIP電話機2のみがSIPサーバプログラム2071を実行しており、各IP電話機2には、内線「01」のIP電話機2のローカルアドレスがローカルサーバのアドレスとして登録されているものとする。また、初期状態において、内線「02」および内線「04」のIP電話機2がSIPゲートウェイプログラム2072を実行しているものとする。
ローカルサーバ(SIPサーバプログラム2071を実行している内線「01」のIP電話機2)は、所定の監視タイミングになると、IP電話システム1内の各IP電話機2が所属するグループのマルチキャストアドレスを宛先として、動作状況報告要求を送信する(S121)。
各IP電話機2は、ローカルサーバから動作状況報告要求を受信すると、自IP電話機2の動作状況を取得し、取得した動作状況を含む動作状況報告をローカルサーバに返信する(S122)。図14に示す例では、内線「02」のIP電話機2がSIPゲートウェイプログラム2072の実行状態「実行中」およびゲートウェイ使用状態「アイドル状態」を含む動作状況報告をローカルサーバに送信し、内線「03」のIP電話機2がSIPゲートウェイプログラム2072の実行状態「未登録」およびゲートウェイ使用状態「ヌル」を含む動作状況報告をローカルサーバに送信し、そして、内線「04」のIP電話機2がSIPゲートウェイプログラム2072の実行状態「実行中」およびゲートウェイ使用状態「アイドル状態」を含む動作状況報告をローカルサーバに送信している。
次に、ローカルサーバは、各IP電話機2から動作状況報告を受信すると、これらの動作状況報告に含まれていた、各IP電話機2の動作状況に基づいて、SIPゲートウェイプログラム2072の実行状態が「実行中」であり、且つゲートウェイ使用状態が「アイドル状態」であるIP電話機2が複数存在することを確認し、そのうちの一つである内線「04」のIP電話機2を、SIPゲートウェイプログラム2072の実行を停止するIP電話機2に決定する(S123)。そして、内線「04」のIP電話機2に、SIPゲートウェイプログラム2072の停止指示を送信する(S124)。
内線「04」のIP電話機2は、ローカルサーバからSIPゲートウェイプログラム2072の停止指示を受信すると、SIPゲートウェイプログラム2072の実行を停止して、SIPゲートウェイ機能を無効にする(S125)。それから、ローカルサーバに、完了通知を送信する(S126)。これを受けて、ローカルサーバは、内線「04」のIP電話機2の動作状況に含まれるSIPゲートウェイプログラム2072の実行状態を「未実行」に更新する(S127)。
図15は、IP電話機2が外線発信する場合におけるメッセージの流れを示すシーケンス図である。なお、図15において、内線「01」のIP電話機2のみがSIPサーバプログラム2071を実行しており、各IP電話機2には、内線「01」のIP電話機2のローカルアドレスがローカルサーバのアドレスとして登録されているものとする。また、内線「02」および内線「04」のIP電話機2がSIPゲートウェイプログラム2072を実行しているものとする。そして、内線「03」のIP電話機2が外線発信するものとする。
内線「03」のIP電話機2は、INVITEメッセージをローカルサーバ(SIPサーバプログラム2071を実行している内線「01」のIP電話機2)に送信する(S141)。これを受けて、ローカルサーバは、INVITEメッセージ送信元の外線通話に用いるSIPゲートウェイを選択する(S142)。ここでは、内線「02」のIP電話機2を、SIPゲートウェイ(以下、SIPゲートウェイA)として選択したものとする。
次に、ローカルサーバは、SIPゲートウェイAに、INVITEメッセージを転送する(S143)。ここで、SIPゲートウェイAの負荷状態が「過負荷」であるとする。この場合、SIPゲートウェイAは、ローカルサーバにCANCELメッセージを送信する(S144)。これを受けて、ローカルサーバは、200OKメッセージ、487Request TerminetedメッセージをSIPゲートウェイAに送信する(S145、S146)。さらに、その応答として、SIPゲートウェイAは、ACKメッセージをローカルサーバに返す(S147)。
さて、ローカルサーバは、SIPゲートウェイAからCANCELメッセージを受信したならば、新たなSIPゲートウェイを選択する(S148)。ここでは、内線「04」のIP電話機2を、SIPゲートウェイ(以下、SIPゲートウェイB)として選択したものとする。
次に、ローカルサーバは、新たに選択したSIPゲートウェイBに、INVITEメッセージを転送する(S149)。ここで、SIPゲートウェイBの負荷状態が「正常」であるとする。この場合、SIPゲートウェイBは、ローカルサーバに100Tryingメッセージを送信する(S150)。これを受けて、ローカルサーバは、INVITEメッセージの送信元(内線「03」のIP電話機2)に、100Tryingメッセージを返す。このとき、この100Tryingに、SIPゲートウェイBのアドレスをゲートウェイアドレスとして含める(S151)。これを受けて、INVITEメッセージの送信元は、デフォルトゲートウェイをSIPゲートウェイBに設定する。
また、SIPゲートウェイBは、ローカルサーバから受け取ったINVITEメッセージを、WAN7側のSIPサーバ5に転送する(S152)。そして、SIPゲートウェイBは、WAN7側のSIPサーバ5から100Tryingメッセージ、180Ringingメッセージを受信したならば(S153、S154)、180Ringingメッセージをローカルサーバに転送する(S155)。これを受けて、ローカルサーバは、180RingingメッセージをINVITEメッセージの送信元(内線「03」のIP電話機2)に転送する(S156)。
それから、SIPゲートウェイBは、WAN7側のSIPサーバ5から200OKメッセージを受信したならば(S157)、200OKメッセージをローカルサーバに転送する(S158)。これを受けて、ローカルサーバは、200OKメッセージをINVITEメッセージの送信元に転送する(S159)。
さて、内線「03」のIP電話機2は、ローカルサーバから200OKメッセージを受信したならば、ACKメッセージをローカルサーバに返す(S160)。これを受けて、ローカルサーバは、ACKメッセージをSIPゲートウェイBに転送する(S161)。さらに、SIPゲートウェイBがWAN7側のSIPサーバ5にACKメッセージを転送する(S162)。
これにより、SIPゲートウェイBを介して、内線「03」のIP電話機2とWAN7側の通話相手との間に、通話路が形成される(S163)。
図16は、IP電話機2に外線着信する場合におけるメッセージの流れを示すシーケンス図である。なお、図16において、内線「01」のIP電話機2のみがSIPサーバプログラム2071を実行しており、各IP電話機2には、内線「01」のIP電話機2のローカルアドレスがローカルサーバのアドレスとして登録されているものとする。また、内線「02」および内線「04」のIP電話機2がSIPゲートウェイプログラム2072を実行しているものとする。
それぞれSIPサーバプログラム2071を実行している内線「02」のIP電話機2(以下、SIPゲートウェイA)および内線「04」のIP電話機2(以下、SIPゲートウェイB)は、各IP電話機2に共通の外線番号でWAN7側のSIPサーバ5に外線番号登録している。したがって、SIPサーバ5は、この外線番号に対するINVITEメッセージを、SIPゲートウェイAおよびSIPゲートウェイBのそれぞれに送信する(S181)。
さて、SIPゲートウェイAは、WAN側のSIPサーバ5からINVITEメッセージを受信すると、100TryingメッセージをSIPサーバ5に返すと共に(S182)、INVITEメッセージをローカルサーバに転送する(S183)。同様に、SIPゲートウェイBは、WAN側のSIPサーバ5からINVITEメッセージを受信すると、100TryingメッセージをSIPサーバ5に返すと共に(S184)、INVITEメッセージをローカルサーバに転送する(S185)。
ローカルサーバは、所定時間内に、同じの発番号のINVITEメッセージを複数のSIPゲートウェイから受信すると、その中から取り次ぐSIPゲートウェイを選択する(S186)。ここでは、SIPゲートウェイAが選択されたものとする。
次に、ローカルサーバは、選択されたSIPゲートウェイAに100Tryingメッセージを送信する(S187)。一方、選択から漏れたSIPゲートウェイBにCANCELメッセージを送信する(S188)。
これを受けて、SIPゲートウェイBは、200OKメッセージ、487Request Terminetedメッセージをローカルサーバに送信する(S189、S190)。ローカルサーバは、ACKメッセージをSIPゲートウェイBに返す(S191)。その後、SIPゲートウェイBは、CANCELメッセージをWAN7側のSIPサーバ5に送信する(S192)。そして、SIPゲートウェイBは、SIPサーバ5から200OKメッセージ、487Request Terminetedメッセージを受信したならば(S193、S194)、ACKメッセージをSIPサーバ5に返す(S195)。
次に、ローカルサーバは、各IP電話機2にINVITEメッセージを転送する。このとき、このINVITEメッセージに、SIPゲートウェイAのアドレスをゲートウェイアドレスとして含める(S196)。これを受けて、各IP電話機2は、デフォルトゲートウェイをSIPゲートウェイAに設定すると共に、180Ringingメッセージをローカルサーバに送信する(S197)。
ローカルサーバは、各IP電話機2から180Ringingメッセージを受信すると、SIPゲートウェイAに180Ringingメッセージを転送する(S198)。そして、SIPゲートウェイAは、WAN7側のSIPサーバ5に180Ringingメッセージを転送する(S199)。
ここで、内線「03」のIP電話機2がオフフックされたものとする。これを受けて、内線「03」のIP電話機2は、200OKメッセージをローカルサーバに送信する(S200)。ローカルサーバは、内線「03」のIP電話機2から200OKメッセージを受信すると、このIP電話機2以外の各IP電話機2に対してCANCELメッセージを送信する(S201)。また、SIPゲートウェイAに200OKメッセージを転送する(S202)。これを受けて、SIPゲートウェイAは、200OKメッセージをWAN7側のSIPサーバ5に転送する(S203)。
それから、SIPゲートウェイAは、WAN7側のSIPサーバ5からACKメッセージを受信したならば(S204)、ACKメッセージをローカルサーバに転送する(S205)。これを受けて、ローカルサーバは、内線「03」のIP電話機2にACKメッセージを転送する(S206)。
これにより、SIPゲートウェイAを介して、内線「03」のIP電話機2とWAN7側の通話相手との間に、通話路が形成される(S207)。
以上、本発明の一実施の形態を説明した。
本実施の形態では、SIPゲートウェイの数をSIPゲートウェイ各々の負荷状態に基づいて増減する。また、各SIPゲートウェイのグローバルアドレスを、各IP電話機2に共通の外線番号と共に、WAN7側のSIPサーバ5に登録する。そして、IP電話機2の外線発着信の処理毎に、外線通信に用いるSIPゲートウェイのローカルアドレスを、このIP電話機2のデフォルトゲートウェイアドレスに設定する。したがって、本実施の形態によれば、SIPゲートウェイの処理に係る負荷を複数のIP電話機2に分散させることができ、個々のIP電話機2に要求される処理能力を低くすることができる。また、障害に強いIP電話システム1を構築することができる。
また、本実施の形態では、IP電話機2にSIPゲートウェイプログラム2072を実行させることにより、このIP電話機2にSIPゲートウェイの機能を持たせるようにしている。したがって、本実施の形態によれば、IP電話システム1内に専用のSIPゲートウェイを設ける必要がない。同様に、IP電話機2にSIPサーバプログラム2071を実行させることにより、このIP電話機2にSIPサーバ(ローカルサーバ)の機能を持たせるようにしている。したがって、本実施の形態によれば、IP電話システム1内に専用のSIPサーバを設ける必要がない。
また、本実施の形態では、ローカルサーバが、IP電話機2の外線発信の処理毎に、このIP電話機2が外線通信に用いるSIPゲートウェイのローカルアドレスを、このIP電話機2に送信する100Tryingメッセージを用いて、このIP電話機2に通知している。したがって、本実施の形態によれば、ローカルサーバは、IP電話機2の外線発信の処理毎に、専用のメッセージを用いることなく、SIPゲートウェイのローカルアドレスを、このIP電話機2に通知することができる。
また、本実施の形態では、ローカルサーバが、IP電話機2の外線着信の処理毎に、このIP電話機2が外線通信に用いるSIPゲートウェイのローカルアドレスを、このIP電話機2に送信するINVITEメッセージを用いて、このIP電話機2に通知している。したがって、本実施の形態によれば、ローカルサーバは、IP電話機2の外線着信の処理毎に、専用のメッセージを用いることなく、SIPゲートウェイのローカルアドレスを、このIP電話機2に通知することができる。
なお、本発明は上記の実施の形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。例えば、IP電話機2の上記構成は、CPU、メモリ、HDD、NIC等を備えたPCにおいて、CPUがHDDに格納された所定のプログラムをメモリにロードして実行することにより、ソフトウエア的に実現されるものでよい。
また、上記の実施の形態において、複数のIP電話機2にSIPサーバプログラム2071を実行させることにより、IP電話システム1内にローカルサーバを複数配置するようにしてもよい。この場合、各IP電話機2には、いずれか一つのローカルサーバのアドレスを登録しておくようにすればよい。
また、上記の実施の形態では、IP電話機2がローカルサーバを兼ねる場合を例にとり説明したが、IP電話機2とは別に、ローカルサーバをIP電話システム1内に配置してもよい。同様に、上記の実施の形態では、IP電話機2がSIPゲートウェイを兼ねる場合を例にとり説明したが、IP電話機2とは別に、SIPゲートウェイをIP電話システム1内に複数配置し、起動中の各SIPゲートウェイの負荷状態に応じて、SIPゲートウェイの起動数を増減するようにしても構わない。
1:IP電話システム、2:IP電話機、3:ルータ、4:LANケーブル、5:SIPサーバ、6:DHCPサーバ、7:WAN、201:ネットワークインターフェース部、202:MMインターフェース部、203:TCP・UDP/IP処理部、204:SIP処理部、205:RTP処理部、206:プログラム実行部、207:プログラム格納部、208:起動制御部、209:動作状況監視部、2061:SIPサーバ処理部、2062:動作状況取得部、2063:動作状況記憶部、2064:起動停止指示部、2065:アドレス通知部、2066:SIPゲートウェイ処理部、2067:グローバルアドレス取得部、2068:外線番号登録要求部、2071:SIPサーバプログラム、2072:SIPゲートウェイプログラム