以下に、本発明の実施の形態について説明する。
図1は、本発明の一実施の形態に係るIP電話システムの概略図である。
図示するように、本実施の形態に係るIP電話システムは、少なくとも一台のIP電話端末2と、IP電話端末2を収容するSIPサーバ3と、LAN4をWAN5に接続する2台のVoIP(Voice over Internet Protocol)ゲートウェイ1と、を有する。ここで、IP電話端末2、SIPサーバ3には、既存のIP電話端末、SIPサーバを利用できるので、その詳細な説明を省略する。なお、SIPサーバ3は、WAN5側に設けられていてもよい。
2台のVoIPゲートウェイ1は、現用系モードおよび予備系モードのいずれかの動作モードで動作する。そして、2台のVoIPゲートウェイ1の一方が現用系モードで動作し、他方が予備系モードで動作する。
ここで、現用系モードで動作するVoIPゲートウェイ1(以下、プライマリゲートウェイ1)は、LAN4側のIP電話端末2とWAN5側のIP電話端末6との間に確立されたセッションを中継する。一方、予備系モードで動作するVoIPゲートウェイ1(以下、セカンダリゲートウェイ1)は、プライマリゲートウェイ1のバックアップとして機能し、プライマリゲートウェイ1が故障等により停止した場合に、プライマリゲートウェイ1で停止直前まで中継中であったセッションをすべて引き継ぐ。また、セカンダリゲートウェイ1は、プライマリゲートウェイ1が過負荷となった場合に、プライマリゲートウェイ1で中継中のセッションの一部を引き継ぐ。
図2は、VoIPゲートウェイ1の概略構成図である。
図示するように、VoIPゲートウェイ1は、LANインターフェース部101と、WANインターフェース部102と、動作モード設定部103と、セッション情報記憶部104と、VoIPゲートウェイ処理部105と、キープアライブ生成・送信部106と、キープアライブ受信部107と、セッション情報抽出部108と、キープアライブタイマ部109と、SIPメッセージ生成・送信部110と、引継要求生成・送信部111と、引継要求受信部112と、を有する。
LANインターフェース部101は、LAN4に接続するためのインターフェースである。
WANインターフェース部102は、WAN5に接続するためのインターフェースである。
動作モード設定部103は、LANインターフェース部101を介してIP電話端末2から、あるいは図示していないマンマシンインターフェースを介してユーザから受け付けた指示に従い、自VoIPゲートウェイ1の動作モードを、現用系モードおよび予備系モードのいずれか一方に設定する。
セッション情報記憶部104には、LAN4側のIP電話端末2とWAN5側のIP電話端末6との間に確立されているセッションの情報が記憶される。図3は、セッション情報記憶部104の登録内容例を模式的に表した図である。
図示するように、セッション情報記憶部104には、LAN4側のIP電話端末2とWAN5側のIP電話端末6との間に確立されているセッション毎にレコード1040が記憶される。レコード1040は、対象のセッションに接続するWAN5側のIP電話端末6のアドレス(WAN側端末アドレス)を登録するためのフィールド1041と、対象のセッションを中継するVoIPゲートウェイ1のWAN5側のアドレス(WAN側ゲートウェイアドレス)を登録するためのフィールド1042と、対象のセッションを中継するVoIPゲートウェイ1のLAN4側のアドレス(LAN側ゲートウェイアドレス)を登録するためのフィールド1043と、対象のセッションに接続するLAN4側のIP電話端末2のアドレス(LAN側端末アドレス)を登録するためのフィールド1044と、対象のセッションの確立日時を登録するためのフィールド1045と、を有する。
VoIPゲートウェイ処理部105は、VoIPゲートウェイ機能を実現するために必要な処理を実施する。
具体的には、VoIPゲートウェイ処理部105は、自VoIPゲートウェイ1経由でやり取りされるINVITEメッセージおよび200OKメッセージによって新たなセッションが確立されると、このセッションに関するレコード1040をセッション情報記憶部104に追加する。
また、VoIPゲートウェイ処理部105は、自VoIPゲートウェイ1経由でやり取りされるBYEメッセージおよび200OKメッセージによってセッションが切断されると、このセッションに関するレコード1040をセッション情報記憶部104から削除する。
また、VoIPゲートウェイ処理部105は、セッション情報記憶部104を参照して、自VoIPゲートウェイ1経由のセッションを介してやり取りされるRTP(Real−time Transport Protocol)パケット、SIPパケットを中継する。
キープアライブ生成・送信部106は、自VoIPゲートウェイ1がプライマリゲートウェイ1である場合(自VoIPゲートウェイ1の動作モードが現用系モードに設定されている場合)に動作する。キープアライブ生成・送信部106は、定期的に、セッション情報記憶部104に記憶されているすべてのレコード1040を含むキープアライブメッセージを生成し、LANインターフェース部101を介して、予め設定された他のVoIPゲートウェイ1(セカンダリゲートウェイ1)に、このキープアライブメッセージを送信する。そして、LANインターフェース部101を介してキープアライブメッセージの送信先(セカンダリゲートウェイ1)から応答メッセージを受信する。
キープアライブ受信部107は、自VoIPゲートウェイ1がセカンダリゲートウェイ1である場合(自VoIPゲートウェイ1の動作モードが予備系モードに設定されている場合)に動作する。キープアライブ受信部107は、LANインターフェース部101を介してプライマリゲートウェイ1からキープアライブメッセージを受信する。そして、LANインターフェース部101を介してプライマリゲートウェイ1に応答メッセージを返信する。
セッション情報抽出部108は、自VoIPゲートウェイ1がセカンダリゲートウェイ1である場合に動作する。セッション情報抽出部108は、キープアライブ受信部107が受信したキープアライブメッセージからレコード1040を抽出する。そして、セッション情報記憶部104に記憶されているレコード1040のうち、プライマリゲートウェイ1経由のセッションに関するレコード1040を、このキープアライブメッセージから抽出したレコード1040で更新する。
キープアライブタイマ部109は、自VoIPゲートウェイ1がセカンダリゲートウェイ1である場合に動作する。キープアライブタイマ部109は、キープアライブ受信部107がキープアライブメッセージを最後に受信してからの経過時間を計測する。そして、最後のキープアライブメッセージの受信から所定時間を経過した場合に、SIPメッセージ生成・送信部110にタイムアウトを通知する。
SIPメッセージ生成・送信部110は、自VoIPゲートウェイ1がセカンダリゲートウェイ1である場合に動作する。SIPメッセージ生成・送信部110は、キープアライブタイマ部109からタイムアウトの通知を受けると、ゲートウェイのアドレスがプライマリゲートウェイ1のアドレスから自VoIPゲートウェイ1(セカンダリゲートウェイ1)のアドレスに変更されたことを通知するためのUPDATEメッセージを生成する。そして、このUPDATEメッセージを、LANインターフェース部101およびWANインターフェース部102のそれぞれから同報送信する。
また、SIPメッセージ生成・送信部110は、キープアライブタイマ部109からタイムアウトの通知を受けると、利用中のセッションを中継するゲートウェイのアドレスがプライマリゲートウェイ1のアドレスから自VoIPゲートウェイ1(セカンダリゲートウェイ1)のアドレスに変更されたことを通知するためのRE−INVITEメッセージを生成する。そして、セッション情報記憶部104を参照し、プライマリゲートウェイ1経由のセッションを利用するLAN4側のIP電話端末2、WAN5側のIP電話端末6に、それぞれLANインターフェース部101、WANインターフェース部102を介して、このRE−INVITEメッセージを送信する。また、セッション情報記憶部104に記憶されているレコード1040のうち、プライマリゲートウェイ1経由のセッションに関するレコード1040のLAN側ゲートウェイアドレス、WAN側ゲートウェイアドレスを、プライマリゲートウェイ1のLAN側ゲートウェイアドレス、WAN側ゲートウェイアドレスから、自VoIPゲートウェイ1のLAN側ゲートウェイアドレス、WAN側ゲートウェイアドレスに変更する。
また、SIPメッセージ生成・送信部110は、プライマリゲートウェイ1経由のセッションに関するレコード1040を引継要求受信部112から受け取ると、利用中のセッションを中継するゲートウェイのアドレスがプライマリゲートウェイ1のアドレスから自VoIPゲートウェイ1(セカンダリゲートウェイ1)のアドレスに変更されたことを通知するためのRE−INVITEメッセージを生成する。そして、このセッションを利用するLAN4側のIP電話端末2、WAN5側のIP電話端末6に、それぞれLANインターフェース部101、WANインターフェース部102を介して、このRE−INVITEメッセージを送信する。また、このレコード1040のLAN側ゲートウェイアドレス、WAN側ゲートウェイアドレスを、プライマリゲートウェイ1のLAN側ゲートウェイアドレス、WAN側ゲートウェイアドレスから、自VoIPゲートウェイ1のLAN側ゲートウェイアドレス、WAN側ゲートウェイアドレスに変更する。
引継要求生成・送信部111は、自VoIPゲートウェイ1がプライマリゲートウェイ1である場合に動作する。引継要求生成・送信部111は、セッション情報記憶部104を参照して、自VoIPゲートウェイ1経由のセッション数を監視する。自VoIPゲートウェイ1経由のセッション数が所定数に達したならば、セッション情報記憶部104から、自VoIPゲートウェイ1経由のセッションに関するレコード1040を少なくとも一つ読み出して、このレコード1040を含む引継要求メッセージを生成する。そして、LANインターフェース部101を介して、予め設定された他のVoIPゲートウェイ1(セカンダリゲートウェイ1)に、この引継要求メッセージを送信する。その後、LANインターフェース部101を介して引継要求メッセージの送信先(セカンダリゲートウェイ1)から応答メッセージを受信したならば、この引継要求メッセージに格納したレコード1040をセッション情報記憶部104から削除する。
引継要求受信部112は、自VoIPゲートウェイ1がセカンダリゲートウェイ1である場合に動作する。引継要求受信部112は、LANインターフェース部101を介してプライマリゲートウェイ1から引継要求メッセージを受信すると、応答メッセージを返信するとともに、プライマリゲートウェイ1経由のセッションに関するレコード1040を引継要求メッセージから読み出して、このレコード1040をSIPメッセージ生成・送信部110に通知する。
つぎに、VoIPゲートウェイ1の動作について、プライマリゲートウェイ1の場合とセカンダリゲートウェイ1の場合とに分けて説明する。
図4は、VoIPゲートウェイ1がプライマリゲートウェイ1である場合の動作を説明するためのフロー図である。
キープアライブ生成・送信部106は、定期的に到来するキープアライブ送信タイミングになると(S100でYES)、セッション情報記憶部104からすべてのレコード1040を読み出し、これらのレコード1040を含むキープアライブメッセージを生成する(S101)。そして、LANインターフェース部101を介してセカンダリゲートウェイ1に、このキープアライブメッセージを送信する(S102)。
それから、キープアライブ生成・送信部106は、キープアライブメッセージの送信から所定時間内にLANインターフェース部101を介してセカンダリゲートウェイ1から応答メッセージが届くのを待つ(S103)。セカンダリゲートウェイ1からの応答メッセージを所定時間内に受信したならば(S103でYES)、S100に戻る。一方、セカンダリゲートウェイ1からの応答メッセージを所定時間内に受信しなかったならば(S103でNO)、LANインターフェース部101を介して所定のIP電話端末2に、あるいは図示していない表示パネルに、セカンダリゲートウェイ1のダウンを通知し(S104)、それから、S100に戻る。
また、VoIPゲートウェイ処理部105は、LANインターフェース部101あるいはWANインターフェース部102を介してINVITEメッセージを受信したならば(S110でYES)、このINVITEメッセージからセッションの発信元端末および発信先端末のアドレスを特定する(S111)。具体的には、LANインターフェース部101を介してLAN4側からINVITEメッセージを受信した場合には、INVITEメッセージ発信元であるIP電話端末2のLAN側端末アドレスおよびINVITEメッセージ発信先であるIP電話端末6のWAN側端末アドレスを特定する。一方、WANインターフェース部102を介してWAN5側からINVITEメッセージを受信した場合には、INVITEメッセージ発信元であるIP電話端末6のWAN側端末アドレスおよびINVITEメッセージ発信先であるIP電話端末2のLAN側端末アドレスを特定する。
それから、VoIPゲートウェイ処理部105は、このINVITEメッセージを中継する(S112)。具体的には、LANインターフェース部101を介してLAN4側からINVITEメッセージを受信したならば、WANインターフェース部102を介してWAN5へ、このINVITEメッセージを中継する。一方、WANインターフェース部102を介してWAN5側からINVITEメッセージを受信したならば、LANインターフェース部101を介してLAN4へ、このINVITEメッセージを中継する。
つぎに、VoIPゲートウェイ処理部105は、LANインターフェース部101あるいはWANインターフェース部102を介して、このINVITEメッセージに対する200OKメッセージを受信したならば(S113でYES)、この200OKメッセージを中継する(S114)。具体的には、LANインターフェース部101を介してLAN4側から200OKメッセージを受信したならば、WANインターフェース部102を介してWAN5へ、この200OKメッセージを中継する。一方、WANインターフェース部102を介してWAN5側から200OKメッセージを受信したならば、LANインターフェース部101を介してLAN4へ、この200OKメッセージを中継する。
その後、VoIPゲートウェイ処理部105は、セッション情報記憶部104に新たなレコード1040を追加する。そして、このレコード1040に対して、フィールド1041に、S111で特定した発信元端末および発信先端末のアドレスのうちのWAN側端末アドレスを登録し、フィールド1042に、自VoIPゲートウェイ1のWAN側ゲートウェイアドレスを登録し、フィールド1043に、自VoIPゲートウェイ1のLAN側ゲートウェイアドレスを登録し、フィールド1044に、S111で特定した発信元端末および発信先端末のアドレスのうちのLAN側端末アドレスを登録し、そして、フィールド1045に、現在日時を登録する(S115)。それから、S100に戻る。
また、VoIPゲートウェイ処理部105は、LANインターフェース部101あるいはWANインターフェース部102を介してBYEメッセージを受信したならば(S120でYES)、このBYEメッセージからセッションの発信元端末および発信先端末のアドレスを特定する(S121)。
それから、VoIPゲートウェイ処理部105は、このBYEメッセージを中継する(S122)。具体的には、LANインターフェース部101を介してLAN4側からBYEメッセージを受信したならば、WANインターフェース部102を介してWAN5へ、このBYEメッセージを中継する。一方、WANインターフェース部102を介してWAN5側からBYEメッセージを受信したならば、LANインターフェース部101を介してLAN4へ、このBYEメッセージを中継する。
つぎに、VoIPゲートウェイ処理部105は、LANインターフェース部101あるいはWANインターフェース部102を介して、このBYEメッセージに対する200OKメッセージを受信したならば(S123でYES)、この200OKメッセージを中継する(S124)。具体的には、LANインターフェース部101を介してLAN4側から200OKメッセージを受信したならば、WANインターフェース部102を介してWAN5へ、この200OKメッセージを中継する。一方、WANインターフェース部102を介してWAN5側から200OKメッセージを受信したならば、LANインターフェース部101を介してLAN4へ、この200OKメッセージを中継する。
その後、VoIPゲートウェイ処理部105は、S121で特定した発信元端末および発信先端末のアドレスのうち、WAN側端末アドレスがフィールド1041に登録され、LAN側端末アドレスがフィールド1044に登録されているレコード1040を、セッション情報記憶部104から検索して削除する(S125)。それから、S100に戻る。
また、引継要求生成・送信部111は、自VoIPゲートウェイ1経由で確立されているセッション数を監視する。具体的には、セッション情報記憶部104を参照し、自VoIPゲートウェイ1のWAN側ゲートウェイアドレスがフィールド1042に登録され、かつ自VoIPゲートウェイ1のLAN側ゲートウェイアドレスがフィールド1043に登録されているレコード1040の数を計測する。
そして、自VoIPゲートウェイ1経由で確立されているセッション数が所定数N1以上となったならば(S130でYES)、引継要求生成・送信部111は、自VoIPゲートウェイ1経由で確立されているセッションのなかから、引継対象セッションを所定数N2(ただしN2<N1)だけ選択する(S131)。例えば、セッション情報記憶部104において、自VoIPゲートウェイ1のWAN側ゲートウェイアドレスがフィールド1042に登録され、かつ自VoIPゲートウェイ1のLAN側ゲートウェイアドレスがフィールド1043に登録されているレコード1040のなかから、フィールド1045に登録された確立日時が古いものから順に所定数N2のレコード1040を選択する。
つぎに、引継要求生成・送信部111は、選択した引継対象セッションに関するレコード1040を含む引継要求メッセージを生成し(S132)、LANインターフェース部101を介してセカンダリゲートウェイ1に、この引継要求メッセージを送信する(S133)。
それから、引継要求生成・送信部111は、LANインターフェース部101を介してセカンダリゲートウェイ1から応答メッセージが届くのを待つ(S134)。引継要求メッセージの送信から所定時間内にセカンダリゲートウェイ1から応答メッセージを受信したならば(S134でYES)、引継要求メッセージに含めたレコード1040をセッション情報記憶部104から削除して(S135)、S100に戻る。一方、セカンダリゲートウェイ1から応答メッセージを所定時間内に受信しなかったならば(S134でNO)、引継要求メッセージに含めたレコード1040をセッション情報記憶部104から削除することなく、S100に戻る。
また、VoIPゲートウェイ処理部105は、LANインターフェース部101あるいはWANインターフェース部102を介して、INVITEメッセージ、BYEメッセージ、およびこれらに対する200OKメッセージ以外のシグナリングメッセージを格納したSIPパケット、あるいはRTPパケットを受信したならば(S140でYES)、この受信パケットの送信元を接続先とするセッションが、自VoIPゲートウェイ1経由で確立されているセッションのなかに存在するか否かを確認する(S141)。具体的には、自VoIPゲートウェイ1のWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスがフィールド1042、1043に登録され、かつ受信パケットの送信元アドレスがフィールド1041またはフィールド1044に登録されているレコード1040をセッション情報記憶部104から検索する。
自VoIPゲートウェイ1経由で確立されているセッションのなかに、受信パケットの送信元を接続先とするセッションが存在する場合(S141でYES)、VoIPゲートウェイ処理部105は、この受信パケットを中継する(S142)。具体的には、LANインターフェース部101を介してLAN4側からパケットを受信した場合には、WANインターフェース部102を介してWAN5へ、このパケットを中継する。一方、WANインターフェース部102を介してWAN5側からパケットを受信した場合には、LANインターフェース部101を介してLAN4へ、このパケットを中継する。その後、S100に戻る。
一方、自VoIPゲートウェイ1経由で確立されているセッションのなかに、受信パケットの送信元を接続先とするセッションが存在しない場合(S141でNO)、この受信パケットを破棄して(S143)、S100に戻る。
図5は、VoIPゲートウェイ1がセカンダリゲートウェイ1である場合の動作を説明するためのフロー図である。
キープアライブ受信部107は、LANインターフェース部101を介してプライマリゲートウェイ1からキープアライブメッセージを受信すると(S150でYES)、このキープアライブメッセージをセッション情報抽出部108に渡す。これを受けて、セッション情報抽出部108は、キープアライブメッセージから、プライマリゲートウェイ1経由で確立しているセッションに関するレコード1040を抽出する(S151)。そして、抽出したレコード1040に基づいてセッション情報記憶部104を更新する(S152)。具体的には、自VoIPゲートウェイ1のWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスがフィールド1042、1043に登録されているレコード1040以外のレコード1040をセッション情報記憶部104から削除し、キープアライブメッセージから抽出したレコード1040をセッション情報記憶部104に追加する。
つぎに、キープアライブ受信部107は、LANインターフェース部101を介してプライマリゲートウェイ1に、キープアライブメッセージに対する応答メッセージを送信する(S153)。それから、キープアライブタイマ部109の計測時間をリセットして(S154)、S150に戻る。
また、キープアライブタイマ部109は、計測時間が所定時間に到達すると(S160でYES)、SIPメッセージ生成・送信部110にタイムアウトを通知する。これを受けて、SIPメッセージ生成・送信部110は、ゲートウェイのアドレスがプライマリゲートウェイ1のアドレスから自VoIPゲートウェイ1のアドレスに変更されたことを通知するためのUPDATEメッセージを生成し、このUPDATEメッセージを、LANインターフェース部101およびWANインターフェース部102のそれぞれから同報送信する(S161)。
つぎに、SIPメッセージ生成・送信部110は、セッション情報記憶部104を参照し、フィールド1042、1043にプライマリゲートウェイ1のWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスが登録されているレコード1040、つまりプライマリゲートウェイ1経由で確立しているセッションに関するレコード1040であって、未選択のレコード1040が存在するか否かを調べる(S162)。
セッション情報記憶部104にプライマリゲートウェイ1経由で確立しているセッションに関するレコード1040が存在しない場合、あるいはセッション情報記憶部104に記憶されている、プライマリゲートウェイ1経由で確立しているセッションに関するレコード1040がすべて選択済みの場合は(S162でNO)、S150に戻る。
一方、セッション情報記憶部104に、プライマリゲートウェイ1経由で確立しているセッションに関する未選択のレコード1040が存在するならば(S162でYES)、SIPメッセージ生成・送信部110は、未選択のレコード1040を一つ選択する(S163)。
それから、SIPメッセージ生成・送信部110は、利用中のセッションを中継するゲートウェイのアドレスがプライマリゲートウェイ1のアドレスから自VoIPゲートウェイ1のアドレスに変更されたことを通知するためのRE−INVITEメッセージを生成する(S164)。そして、SIPメッセージ生成・送信部110は、選択したレコード1040のフィールド1044に登録されているLAN側端末アドレスより特定されるIP電話端末2へ、LANインターフェース部101を介してRE−INVITEメッセージを送信するとともに、このレコード1040のフィールド1041に登録されているWAN側端末アドレスより特定されるIP電話端末6へ、WANインターフェース部102を介してRE−INVITEメッセージを送信する(S165)。
つぎに、SIPメッセージ生成・送信部110は、RE−INVITEメッセージの送信先であるIP電話端末2、IP電話端末6のそれぞれから、LANインターフェース部101およびWANインターフェース部102を介して、RE−INVITEメッセージに対する200OKメッセージを受信したならば(S166でYES)、セッション情報記憶部104に記憶されているこの選択したレコード1040のフィールド1042、1043のWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスを、プライマリゲートウェイ1のWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスから、自VoIPゲートウェイ1のWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスに変更し(S167)、S162に戻る。
また、引継要求受信部112は、LANインターフェース部101を介してプライマリゲートウェイ1から引継要求メッセージを受信すると(S170でYES)、この引継要求メッセージに格納されている、引継対象セッションに関するレコード1040をSIPメッセージ生成・送信部110に渡す。これを受けて、SIPメッセージ生成・送信部110は、引継要求受信部112より渡された引継対象セッションのレコード1040のなかから未選択のレコード1040を選択する(S171)。
それから、SIPメッセージ生成・送信部110は、利用中のセッションを中継するゲートウェイのアドレスがプライマリゲートウェイ1のアドレスから自VoIPゲートウェイ1のアドレスに変更されたことを通知するためのRE−INVITEメッセージを生成する(S172)。そして、SIPメッセージ生成・送信部110は、選択したレコード1040のフィールド1044に登録されているLAN側端末アドレスより特定されるIP電話端末2へ、LANインターフェース部101を介してRE−INVITEメッセージを送信するとともに、選択したレコード1040のフィールド1041に登録されているWAN側端末アドレスより特定されるIP電話端末6へ、WANインターフェース部102を介してRE−INVITEメッセージを送信する(S173)。
つぎに、SIPメッセージ生成・送信部110は、LANインターフェース部101およびWANインターフェース部102を介して、RE−INVITEメッセージの送信先であるIP電話端末2、IP電話端末6のそれぞれから、RE−INVITEメッセージに対する200OKメッセージを受信したならば(S174でYES)、選択したレコード1040と一致するレコード1040をセッション情報記憶部104から検索し、検索したレコード1040のフィールド1042、1043に登録されているWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスを、プライマリゲートウェイ1のWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスから、自VoIPゲートウェイ1のWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスに変更する(S175)。なお、選択したレコード1040と一致するレコード1040をセッション情報記憶部104から検索できなかった場合は、選択したレコード1040をセッション情報記憶部104に追加し、追加したレコード1040のフィールド1042、1043に登録されているWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスを、プライマリゲートウェイ1のWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスから、自VoIPゲートウェイ1のWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスに変更する。
その後、SIPメッセージ生成・送信部110は、引継要求受信部112より渡された引継対象セッションのレコード1040のなかに未選択のレコード1040があるか否かを調べる(S176)。未選択のレコード1040があるならば(S176でYES)、S171に戻る。一方、引継要求受信部112より渡された引継対象セッションのレコード1040がすべて選択済みの場合(S176でNO)、SIPメッセージ生成・送信部110は引継要求受信部112に引継完了を通知し、引継要求受信部112は、LANインターフェース部101を介してプライマリゲートウェイ1に、引継要求メッセージに対する応答メッセージを送信する(S177)。その後、S150に戻る。
また、VoIPゲートウェイ処理部105は、LANインターフェース部101あるいはWANインターフェース部102を介して、RTPパケット、あるいはRE−INVITEメッセージに対する200OKメッセージ以外のシグナリングメッセージを格納したSIPパケットを受信したならば(S180でYES)、この受信パケットの送信元を接続先とするセッションが、自VoIPゲートウェイ1経由で確立されているセッションのなかに存在するか否かを確認する(S181)。具体的には、自VoIPゲートウェイ1のWAN側ゲートウェイアドレス、LAN側ゲートウェイアドレスがフィールド1042、1043に登録され、かつ受信パケットの送信元アドレスがフィールド1041またはフィールド1044に登録されているレコード1040をセッション情報記憶部104から検索する。
自VoIPゲートウェイ1経由で確立されているセッションのなかに、受信パケットの送信元を接続先とするセッションが存在する場合(S181でYES)、VoIPゲートウェイ処理部105は、この受信パケットを中継する(S182)。具体的には、LANインターフェース部101を介してLAN4側からパケットを受信した場合には、WANインターフェース部102を介してWAN5へ、このパケットを中継する。一方、WANインターフェース部102を介してWAN5側からパケットを受信した場合には、LANインターフェース部101を介してLAN4へ、このパケットを中継する。その後、S150に戻る。
一方、自VoIPゲートウェイ1経由で確立されているセッションのなかに、受信パケットの送信元を接続先とするセッションが存在しない場合(S181でNO)、この受信パケットを破棄して(S183)、S150に戻る。
つぎに、本実施の形態に係るIP電話システムの動作例を説明する。
図6は、本発明の一実施の形態に係るIP電話システムにおいて、プライマリゲートウェイ1がダウンした場合の動作を説明するためのシーケンス図である。ここで、プライマリゲートウェイ1として機能するVoIPゲートウェイ1と、セカンダリゲートウェイ1として機能するVoIPゲートウェイ1とを区別するため、符号に枝番を付している。
プライマリゲートウェイ1−1は、セカンダリゲートウェイ1−2に対してキープアライブメッセージを定期的に送信する(S201)。ここで、プライマリゲートウェイ1−1経由で確立しているセッションが存在していないため、キープアライブメッセージにはセッション情報が格納されていない。
セカンダリゲートウェイ1−2は、キープアライブメッセージを受信する毎に、キープアライブメッセージに格納されているセッション情報に基づいて、自身のセッション情報記憶部104を更新する(S202)。ここでは、キープアライブメッセージにセッション情報が格納されていないので、プライマリゲートウェイ経由のセッションに関するレコード1040はセッション情報記憶部104に追加されない。また、セカンダリゲートウェイ1−2は、キープアライブメッセージに対する応答メッセージをプライマリゲートウェイ1−1に送信する(S203)。
さて、プライマリゲートウェイ1−1は、WAN5を介してIP電話端末6からINVITEメッセージを受信すると(S204)、これをLAN4側に中継する(S205)。このINVITEメッセージは、SIPサーバ3を介してIP電話端末2へ送信される(S206)。そして、IP電話端末2は、ユーザよりオフフック等の応答操作を受け付けると、200OKメッセージを送信する。
プライマリゲートウェイ1−1は、SIPサーバ3を介して、この200OKメッセージを受信すると(S207)、これをWAN5側に中継する(S208)。この200OKメッセージは、IP電話端末6へ送信される(S209)。これにより、IP電話端末6とIP電話端末2との間にセッションが確立される。
つぎに、プライマリゲートウェイ1−1は、このINVITEメッセージおよび200OKメッセージのやり取りを介して確立されたセッションに関するレコード1040を自身のセッション情報記憶部104に追加する(S210)。これにより、IP電話端末6とIP電話端末2との間に確立されたセッションがプライマリゲートウェイ1−1によって中継される(S211、S212)。
その後、プライマリゲートウェイ1−1は、セカンダリゲートウェイ1−2に対して定期的に送信するキープアライブメッセージに、このセッションに関するレコード1040を格納する(S213)。
そして、セカンダリゲートウェイ1−2は、キープアライブメッセージに格納されているレコード1040を自身のセッション情報記憶部104に追加する(S214)。これにより、プライマリゲートウェイ1−1経由でIP電話端末2とIP電話端末6との間に確立されているセッションに関する情報がセカンダリゲートウェイ1−2に登録される。また、セカンダリゲートウェイ1−2は、キープアライブメッセージに対する応答メッセージをプライマリゲートウェイ1−1に送信する(S215)。
その後、プライマリゲートウェイ1−1が故障等によりダウンしたものとする(S216)。その結果、セカンダリゲートウェイ1−2において、キープアライブメッセージを最後に受信してからの経過時間が所定時間に到達し、キープアライブタイマがタイムアウトする(S217)。
キープアライブタイマのタイムアウトを受けて、セカンダリゲートウェイ1−2は、ゲートウェイのアドレスがプライマリゲートウェイ1−1のアドレスからセカンダリゲートウェイ1−2のアドレスに変更されたことを通知するためのUPDATEメッセージを生成し、このUPDATEメッセージを、WAN5側およびLAN4側のそれぞれへ同報送信する(S218、S219)。
それから、セカンダリゲートウェイ1−2は、利用中のセッションを中継するゲートウェイのアドレスがプライマリゲートウェイ1−1のアドレスからセカンダリゲートウェイ1−2のアドレスに変更されたことを通知するためのRE−INVITEメッセージを生成する。そして、このRE−INVITEメッセージを、自身のセッション情報記憶部104に記憶されている、プライマリゲートウェイ1−1経由のセッションに関するレコード1040により特定されるIP電話端末6およびIP電話端末2へ送信する(S220、S221)。
つぎに、セカンダリゲートウェイ1−2は、RE−INBVITEメッセージの送信先であるIP電話端末6およびIP電話端末2のそれぞれから200OKメッセージを受信したならば(S222、S223)、自身のセッション情報記憶部104に記憶されている、プライマリゲートウェイ1−1経由のセッションに関するレコード1040を更新して、IP電話端末6とIP電話端末2との間のセッションを、プライマリゲートウェイ1−1経由からセカンダリゲートウェイ1−2経由に変更する(S224)。これにより、プライマリゲートウェイ1−1によって中継されていたIP電話端末6とIP電話端末2との間のセッションが、セカンダリゲートウェイ1−2によって中継される(S225、S226)。
図7は、本実施の形態に係るIP電話システムにおいて、プライマリゲートウェイ1が中継するセッション数が所定数以上となった場合の動作を説明するためのシーケンス図である。図6と同様に、プライマリゲートウェイ1−1として機能するVoIPゲートウェイ1と、セカンダリゲートウェイ1−2として機能するVoIPゲートウェイ1とを区別するため、符号に枝番を付している。
セッションA−Cがプライマリゲートウェイ1−1によって中継されているものとする(S250)。プライマリゲートウェイ1−1は、セカンダリゲートウェイ1−2に対してキープアライブメッセージを定期的に送信する(S251)。ここで、キープアライブメッセージには、プライマリゲートウェイ1−1経由のセッションA−Cに関するレコード1040が格納される。
セカンダリゲートウェイ1−2は、キープアライブメッセージを受信する毎に、キープアライブメッセージに格納されているレコード1040に基づいて、自身のセッション情報記憶部104を更新する(S252)。これにより、プライマリゲートウェイ1−1経由のセッションA−Cに関するレコード1040がセカンダリゲートウェイ1−2に登録される。また、セカンダリゲートウェイ1−2は、キープアライブメッセージに対する応答メッセージをプライマリゲートウェイ1−1に送信する(S253)。
さて、プライマリゲートウェイ1−1は、WAN5を介してIP電話端末6からINVITEメッセージを受信すると(S254)、これをLAN4側に中継する(S255)。このINVITEメッセージは、SIPサーバ3を介してIP電話端末2へ送信される(S256)。そして、IP電話端末2は、ユーザよりオフフック等の応答操作を受け付けると、200OKメッセージを送信する。
プライマリゲートウェイ1−1は、この200OKメッセージを、SIPサーバ3を介して受信すると(S257)、これをWAN5側に中継する(S258)。この200OKメッセージは、IP電話端末6へ送信される(S259)。これにより、IP電話端末6とIP電話端末2との間にセッションDが確立される。
つぎに、プライマリゲートウェイ1−1は、INVITEメッセージおよび200OKメッセージのやり取りを介して確立されたセッションDに関するレコード1040を自身のセッション情報記憶部104に追加する(S260)。これにより、IP電話端末6とIP電話端末2との間に確立されたセッションDがプライマリゲートウェイ1−1によって中継される(S261、S262)。
ここで、セッションDの確立により、プライマリゲートウェイ1−1経由のセッション数が所定数を超過すると(S263)、プライマリゲートウェイ1−1は、プライマリゲートウェイ1−1経由のセッションA−Dのなかから引継対象セッションを少なくとも一つ選択する。ここでは、引継対象セッションとしてセッションAが選択されたものとする。プライマリゲートウェイ1−1は、セッションAに関するレコード1040を格納した引継要求メッセージを生成し、この引継要求メッセージをセカンダリゲートウェイ1−2に送信する(S264)。
セカンダリゲートウェイ1−2は、プライマリゲートウェイ1−1から引継要求メッセージを受信すると、セッションAを中継するゲートウェイのアドレスがプライマリゲートウェイ1−1のアドレスからセカンダリゲートウェイ1−2のアドレスに変更されたことを通知するためのRE−INVITEメッセージを生成する。そして、このRE−INBVITEメッセージを、引継要求メッセージに格納されているセッションAのレコード1040のWAN側端末アドレスおよびLAN側端末アドレスにより特定されるWAN5側のセッション接続先およびLAN4側のセッション接続先のそれぞれへ送信する(S265、S266)。
つぎに、セカンダリゲートウェイ1−2は、RE−INBVITEメッセージの送信先のそれぞれから200OKメッセージを受信したならば(S267、S268)、自身のセッション情報記憶部104に記憶されているセッションAのレコード1040を更新して、セッションAを、プライマリゲートウェイ1−1経由からセカンダリゲートウェイ1−2経由に変更する(S269)。これにより、プライマリゲートウェイ1−1によって中継されていたセッションAが、セカンダリゲートウェイ1−2によって中継される(S270、S271)。
その後、セカンダリゲートウェイ1−2は、プライマリゲートウェイ1−1に、引継要求メッセージに対する応答メッセージを送信する(S272)。これを受けて、プライマリゲートウェイ1−1は、自身のセッション情報記憶部104から、セッションAに関するレコード1040を削除する(S273)。
以上、本発明の一実施の形態を説明した。
本実施の形態において、プライマリゲートウェイ1は、定期的に、セッション情報記憶部104に記憶されているすべてのレコード1040を含むキープアライブメッセージを生成して、セカンダリゲートウェイ1に、このキープアライブメッセージを送信する。したがって、本実施の形態によれば、プライマリゲートウェイ1は、セカンダリゲートウェイ1と、プライマリゲートウェイ1が中継しているセッションの情報を共有することができる。
また、本実施の形態において、セカンダリゲートウェイ1は、プライマリゲートウェイ1からキープアライブメッセージを定期的に受信し、このキープアライブメッセージからレコード1040を抽出して、セッション情報記憶部104に、抽出したレコード1040を登録・更新する。また、セカンダリゲートウェイ1は、キープアライブメッセージを最後に受信してからの経過時間を計測し、最後のキープアライブメッセージの受信から所定時間を経過した場合に、セッション情報記憶部104を参照し、プライマリゲートウェイ1経由のセッションを利用するLAN4側のIP電話端末2、WAN5側のIP電話端末6に、利用中のセッションを中継するゲートウェイのアドレスがプライマリゲートウェイ1のアドレスから自VoIPゲートウェイ1(セカンダリゲートウェイ1)のアドレスに変更されたことを通知するためのRE−INVITEメッセージを送信する。したがって、本実施の形態によれば、セッション中のLAN4側のIP電話端末2、WAN5側のIP電話端末6が利用するVoIPゲートウェイをプライマリゲートウェイ1からセカンダリゲートウェイ1へ変更させることができる。
また、本実施の形態において、セカンダリゲートウェイ1は、プライマリゲートウェイ1の動作状態、およびプライマリゲートウェイ1が中継しているセッションを監視する。そして、プライマリゲートウェイ1が停止した場合に、セカンダリゲートウェイ1は、プライマリゲートウェイ1が中継していたセッションを利用中のIP電話端末2、6それぞれに、利用中のセッションを中継するゲートウェイのアドレスがプライマリゲートウェイ1のアドレスからセカンダリゲートウェイ1のアドレスに変更されたことを通知するRE−INVITEメッセージを送信し、これまでプライマリゲートウェイによって中継されていたセッションを中継する。したがって、本実施の形態によれば、セッション中にプライマリゲートウェイ1がダウンした場合でも、このセッションを、切断することなく、セカンダリゲートウェイ1に引き継がせることができる。
また、本実施の形態において、セカンダリゲートウェイ1は、プライマリゲートウェイ1が停止した場合に、ゲートウェイのアドレスがプライマリゲートウェイ1のアドレスからセカンダリゲートウェイ1のアドレスに変更されたことを通知するUPDATEメッセージを同報送信する。したがって、本実施の形態によれば、プライマリゲートウェイ1がダウンした場合に、IP電話端末2、6に設定するゲートウェイをプライマリゲートウェイ1からセカンダリゲートウェイ1へ自動的に変更できる。
また、本実施の形態において、プライマリゲートウェイ1は、中継中のセッション数が所定数以上となった場合、これらのセッションのなかから少なくとも一つのセッションを引継対象セッションとして選択し、セカンダリゲートウェイ1に引継対象セッションの引継を要求する。これを受けて、セカンダリゲートウェイ1は、引継対象セッションを利用中のIP電話端末2、6それぞれに、利用中のセッションを中継するゲートウェイのアドレスがプライマリゲートウェイ1のアドレスからセカンダリゲートウェイ1のアドレスに変更されたことを通知するRE−INVITEメッセージを送信し、引継対象セッションを中継する。したがって、本実施の形態によれば、プライマリゲートウェイ1が過負荷となった場合に、中継中のセッションを切断することなく、プライマリゲートウェイ1およびセカンダリゲートウェイ1の両方に負荷を分散させることができる。
なお、本発明は上記の実施の形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
例えば、上記の実施の形態では、2台のVoIPゲートウェイ1の一方をプライマリゲートウェイ1とし、他方をセカンダリゲートウェイ1とした場合について説明した。しかし、3台以上のVoIPゲートウェイ1を用意して、それぞれに優先順位を付け、優先順位nのVoIPゲートウェイ1と優先順位n+1のVoIPゲートウェイ1とが、プライマリゲートウェイ1とセカンダリゲートウェイ1との関係となるようにしてもよい。つまり、セカンダリゲートウェイ1として動作している優先順位n+1のVoIPゲートウェイ1は、プライマリゲートウェイ1として動作している優先順位nのVoIPゲートウェイ1の動作状態およびセッションを監視する。そして、優先順位nのVoIPゲートウェイ1が停止した場合に、優先順位n+1のVoIPゲートウェイ1は、ゲートウェイのアドレスが優先順位nのVoIPゲートウェイ1のアドレスから優先順位n+1のVoIPゲートウェイ1のアドレスへ変更されたことを同報送信するとともに、優先順位nのVoIPゲートウェイ1が中継していたセッションを引き継いで、プライマリゲートウェイ1としての動作を開始する。また、ゲートウェイのアドレスが優先順位n+1のVoIPゲートウェイ1に変更されたことを受けて、優先順位n+2のVoIPゲートウェイ1は、セカンダリゲートウェイ1としての動作を開始し、プライマリゲートウェイ1として動作している優先順位n+1のVoIPゲートウェイ1の動作状態およびセッションを監視する。このようにすることで、IP電話システムの可用性をさらに向上させることができる。
また、上記の実施の形態では、動作モード(現用系モード、運用系モード)を切り替えることで、プライマリゲートウェイ1およびセカンダリゲートウェイ1のいずれでも動作可能なVoIPゲートウェイ1を例にとり説明した。しかし、プライマリゲートウェイ1およびセカンダリゲートウェイ1を、それぞれ専用のVoIPゲートウェイとしてもよい。なお、プライマリゲートウェイ専用のVoIPゲートウェイでは、図2に示すVoIPゲートウェイ1から、動作モード設定部103、キープアライブ受信部107、セッション情報抽出部108、キープアライブタイマ部109、SIPメッセージ生成・送信部110、および引継要求受信部112を省略できる。セカンダリゲートウェイ専用のVoIPゲートウェイでは、図2に示すVoIPゲートウェイ1から、動作モード設定部103、キープアライブ生成・送信部106、および引継要求生成・送信部111を省略できる。
また、上記の実施の形態では、プライマリゲートウェイ1およびセカンダリゲートウェイ1間でのセッション情報の共有にキープアライブメッセージを利用している。しかし、本発明は、プライマリゲートウェイ1が、データ中継処理を実行していることを示す実行中信号に、データ送信側に係る情報を少なくとも含む中継情報を格納して、セカンダリゲートウェイ1へ定期的に送信することにより、中継情報を共有するものであればよい。
また、上記の実施の形態では、セカンダリゲートウェイ1が、プライマリゲートウェイ1経由のセッションを利用するIP電話端末2、6に、RE−INVITEメッセージを送信することにより、セッション中のIP電話端末2、6が利用するVoIPゲートウェイをプライマリゲートウェイ1からセカンダリゲートウェイ1へ変更させる。しかし、本発明は、セカンダリゲートウェイ1が、プライマリゲートウェイ1と共有する中継情報により特定されるIP電話端末2、6に、VoIPゲートウェイをプライマリゲートウェイ1からセカンダリゲートウェイ1へ変更させるための中継装置アドレス変更要求を送信するものであればよい。
また、上記の実施の形態において、図2に示すVoIPゲートウェイ1の機能構成は、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などの集積ロジックICによりハード的に実現されるものでもよいし、あるいはDSP(Digital Signal Processor)などの計算機によりソフトウエア的に実現されるものでもよい。または、CPU、メモリ、HDD、DVD−ROM等の補助記憶装置、およびNIC(Network Interface Card)、モデム等の通信インターフェースを備えたPC(Personal Computer)等の汎用コンピュータにおいて、CPUが所定のプログラムを補助記憶装置からメモリ上にロードして実行することで実現されるものでもよい。
また、上記の実施の形態では、本発明をVoIPゲートウェイ1に適用した場合を例にとり説明したが、本発明は、SIPメッセージの中継を行うSIPゲートウェイに適用できる。さらに、本発明は、SIPに限らず、通信データを送信する送信側通信端末と通信データを受信する受信側通信端末との間で通信データを中継処理するデータ中継装置に広く適用できる。