図1は、無線通信システムの一例を示す構成図である。無線通信システムは、複数の無線通信端末90a,90b、複数の基地局91a,91b、及び電話網NW内の複数の交換機システム92a,92bを含む。以下の説明では、無線通信端末90a、基地局91a、及び交換機システム92aを発呼側とし、無線通信端末90b、基地局91b、及び交換機システム92bを着呼側とするが、発呼側と着呼側を反対とした場合でも同様の動作が行われる。
無線通信端末90a,90bとしては、スマートフォンや携帯電話機などが挙げられる。無線通信端末90a,90bは、所在のエリアに応じた基地局91a,91bと無線を介して、それぞれ回線接続される。複数の基地局91aは交換機システム92aに接続され、複数の基地局91bは交換機システム92bに接続されている。また、交換機システム92a,92bは電話網NW内でルータ(不図示)などを介して互いに接続されている。
発呼側の基地局91aと着呼側の基地局91bの間では、交換機システム92a,92bを介して、呼に関する呼信号Sが送受信される。交換機システム92a,92bは、呼信号Sを処理して呼接続を行う。
交換機システム92a,92bは、呼制御システムの一例であり、呼制御装置1及び複数の呼処理サーバ(#1,#2,・・・,#M,#N(M,Nは3以上の整数))2とを有する。呼制御装置1及び複数の呼処理サーバ2は、バス3を介して通信する。呼制御装置1は、基地局91a,91bまたは交換機システム92a,92bから受信した呼信号Sを呼処理サーバ2に送信する。
各呼処理サーバ2は、呼処理装置の一例であり、呼制御装置1から受信した呼信号Sを処理して、基地局91a,91bまたは交換機システム92a,92bに送信する。つまり、呼処理サーバ2は、発呼側の無線通信端末90aと着呼側の無線通信端末90bの間の通信セッションを処理する。
複数の呼処理サーバ2は、例えばN−ACT構成で構成され、それぞれ、自装置に割り当てられた呼処理を行うだけでなく、他の呼処理サーバ2に障害が発生した場合、その障害の呼処理サーバ2が行っていた呼処理を引き継ぐ。つまり、呼処理サーバ2は、呼信号Sを処理するプライマリサーバ(第1呼処理装置)と、プライマリサーバが呼信号Sの処理を停止した場合に呼信号Sを処理するセカンダリサーバ(第2呼処理装置)として動作する。呼制御装置1は、複数の呼処理サーバ2からプライマリサーバ及びセカンダリサーバを決定して、以下に述べるように割当テーブルに呼処理サーバ2の識別子(#1,#2,・・・,#M,#N)を登録する。
図2(a)には、比較例の割当テーブルの一例が示されている。割当テーブルには、プライマリサーバの識別子であるプライマリIDと、セカンダリサーバの識別子であるセカンダリIDとが対応付けられて登録されている。本例では、プライマリID「#1」とセカンダリID「#M」とが対応付けられている。このため、呼処理サーバ(#1)2に障害が発生した場合、呼処理サーバ(#1)2が行っていた全ての呼処理を呼処理サーバ(#M)2が引き継ぐ。
また、プライマリID「#M」は、セカンダリID「#N」と対応付けられている。このため、呼処理サーバ(#M)2に障害が発生した場合、呼処理サーバ(#M)2が行っていた全ての呼処理を呼処理サーバ(#N)2が引き継ぐ。これと同様に、呼処理サーバ(#N)2に障害が発生した場合、呼処理サーバ(#N)2が行っていた全ての呼処理を呼処理サーバ(#1)2が引き継ぐ。
図2(b)には、比較例の呼処理サーバ2の動作が示されている。図2(b)は、一例として、3つの呼処理サーバ(#1,#M,#N)2からなるN−ACT構成を示す。
呼処理サーバ(#1,#M,#N)2は、呼制御装置1から受信した呼信号Sから、呼信号Sの処理情報である呼情報#1,#M,#Nを生成して自装置内に格納する(「プライマリ」参照)。なお、呼制御装置1は、各呼処理サーバ2に、できるだけ負荷が均等になるように呼処理を割り当てる。
また、呼処理サーバ(#1,#M,#N)2は、割当テーブルに従って、自装置に対応するセカンダリサーバに呼情報#1,#M,#Nをコピーする(「セカンダリ」参照)。例えば、プライマリサーバである呼処理サーバ(#1)は、セカンダリサーバである呼処理サーバ(#M)に対応するため、呼処理サーバ(#M)に呼情報#1を送信することでコピーする。また、プライマリサーバである呼処理サーバ(#M)は、セカンダリサーバである呼処理サーバ(#N)に対応するため、呼処理サーバ(#N)に呼情報#Mを送信することでコピーする。さらに、プライマリサーバである呼処理サーバ(#N)は、セカンダリサーバである呼処理サーバ(#1)に対応するため、呼処理サーバ(#1)に呼情報#Nを送信することでコピーする。
これにより、何れの呼処理サーバ(#1,#M,#N)2に障害が発生しても、障害の呼処理サーバ(#1,#M,#N)2に対応する他の呼処理サーバ(#1,#M,#N)2が、障害の呼処理サーバ(#1,#M,#N)2が行っていた呼処理を引き継ぐことができる。例えば、呼処理サーバ(#1)2に障害が発生した場合、呼処理サーバ(#1)2に対応する呼処理サーバ(#M)2が、障害の呼処理サーバ(#1)2が行っていた呼処理を引き継ぐことができる。
しかし、この場合、呼処理サーバ(#1)2が行っていた全ての呼処理が呼処理サーバ(#M)2に引き継がれるため、呼処理サーバ(#M)2が過負荷状態になるおそれがある。これと同様に、他の呼処理サーバ(#1,#N)2も、呼処理を引き継いだ場合、過負荷状態になるおそれがある。
そこで、実施例の呼制御装置1は、比較例とは異なり、複数の呼処理サーバ2からプライマリサーバ及びセカンダリサーバを呼ごとに決定する。これにより、1台のプライマリサーバの処理対象の複数の呼が複数台のセカンダリサーバに割り当てられるため、負荷の集中が防止される。
図3(a)には、実施例の割当テーブルの一例が示されている。割当テーブルには、呼の識別子であるCall−ID、プライマリID、及びセカンダリIDが対応付けられて登録されている。すなわち、割当テーブルには、呼ごとにプライマリID及びセカンダリIDが登録されている。なお、図3(a)では、簡単化のため、Call−IDを「A1」、「A2」、「B1」、「B2」、「C1」、「C2」と記載している。
例えば、Call−ID「A1」の呼には、プライマリサーバとして呼処理サーバ(#1)2が割り当てられ、セカンダリサーバとして呼処理サーバ(#M)2が割り当てられている。また、Call−ID「A2」の呼には、プライマリサーバとして呼処理サーバ(#1)2が割り当てられ、セカンダリサーバとして呼処理サーバ(#N)2が割り当てられている。
このため、呼処理サーバ(#1)2に障害が発生した場合、Call−ID「A1」の呼に関する呼処理は呼処理サーバ(#M)2に引き継がれ、Call−ID「A2」の呼に関する呼処理は呼処理サーバ(#N)2に引き継がれる。したがって、呼処理サーバ(#1)2が行っていた呼処理の負荷が、2台の呼処理サーバ(#M,#N)2に分散されるため、負荷の集中が防止される。
他の例を挙げると、Call−ID「B1」の呼には、プライマリサーバとして呼処理サーバ(#M)2が割り当てられ、セカンダリサーバとして呼処理サーバ(#N)2が割り当てられている。また、Call−ID「B2」の呼には、プライマリサーバとして呼処理サーバ(#M)2が割り当てられ、セカンダリサーバとして呼処理サーバ(#1)2が割り当てられている。
このため、呼処理サーバ(#M)2に障害が発生した場合、Call−ID「B1」の呼に関する呼処理は呼処理サーバ(#N)2に引き継がれ、Call−ID「B2」の呼に関する呼処理は呼処理サーバ(#1)2に引き継がれる。したがって、呼処理サーバ(#M)2が行っていた呼処理の負荷が、2台の呼処理サーバ(#1,#N)2に分散されるため、負荷の集中が防止される。なお、これと同様に、呼処理サーバ(#N)に障害が発生した場合も、他の2台の呼処理サーバ(#1,#M)2に負荷が分散される。
図3(b)には、実施例の呼処理サーバ2の動作が示されている。図3(b)は、一例として、3つの呼処理サーバ(#1,#M,#N)2からなるN−ACT構成を示す。
呼制御装置1は、図3(a)に示された割当テーブルに従って、呼信号Sを呼ごとに呼処理サーバ(#1,#M,#N)2に分配する。呼処理サーバ(#1,#M,#N)2は、呼制御装置1から受信した呼信号Sから、呼信号Sの処理情報である呼情報を生成して自装置内に格納する(「プライマリ」参照)。
呼処理サーバ(#1)2は、Call−ID「A1」及び「A2」の呼に関する呼信号Sを受信して、その呼情報(A1,A2)を自装置内に格納する。また、呼処理サーバ(#M)2は、Call−ID「B1」及び「B2」の呼に関する呼信号Sを受信して、その呼情報(B1,B2)を自装置内に格納する。呼処理サーバ(#N)2は、Call−ID「C1」及び「C2」の呼に関する呼信号Sを受信して、その呼情報(C1,C2)を自装置内に格納する。
また、呼処理サーバ(#1,#M,#N)2は、それぞれ、割当テーブルに従って、呼情報を呼ごとに、自装置に対応するセカンダリサーバである他の呼処理サーバ(#1,#M,#N)2にコピーする(「セカンダリ」参照)。つまり、プライマリサーバの呼情報が、呼ごとにセカンダリサーバにバックアップされる。このため、呼処理サーバ(#1,#M,#N)2は、セカンダリサーバとして、障害が発生した他の呼処理サーバ(#1,#M,#N)2の呼処理を引き継ぐことができる。
例えば、呼処理サーバ(#1)2は、Call−ID「A1」の呼の呼情報(A1)を呼処理サーバ(#M)2に送信することでコピーし、Call−ID「A2」の呼の呼情報(A2)を呼処理サーバ(#N)2に送信することでコピーする。このため、呼処理サーバ(#1)2に障害が発生した場合、呼処理サーバ(#M)2は、Call−ID「A1」の呼に関する呼処理を引き継ぎ、呼処理サーバ(#N)2は、Call−ID「A2」の呼に関する呼処理を引き継ぐことができる。これにより、障害の呼処理サーバ(#1)2が行っていた呼処理の負荷が、2台の呼処理サーバ(#M,#N)2に分散される。
次に、呼制御装置1の構成について説明する。図4は、呼制御装置1の一例を示す構成図である。呼制御装置1は、CPU(Central Processing Unit)10、ROM(Read Only Memory)11、RAM(Random Access Memory)12、HDD(Hard Disk Drive)13、複数の通信ポート14、及びインターフェース部15を有する。
CPU10は、互いに信号の入出力ができるように、ROM11、RAM12、HDD13、通信ポート14、及びインターフェース部15と、データバス16を介して接続されている。ROM11は、CPU10を駆動するプログラムが格納されている。RAM12は、CPU10のワーキングメモリとして機能する。
インターフェース部15は、交換機システム92a,92b内のバス3と接続され、複数の呼処理サーバ2との通信を処理する。通信ポート14は、例えばPHY(Physical layer)チップを含み、基地局91a,91bや他の交換機システム92a,92bとの間で呼信号Sを送受信する。なお、呼信号Sは、例えばATM(Asynchronous Transfer Mode)セルやIP(Internet Protocol)パケットなどの形態で構成されている。
HDD13は、記憶部の一例であり、テーブルの一例である割当テーブル130と、呼処理サーバ2に関するサーバ管理テーブル131とを記憶する。なお、割当テーブル130については、図3(a)を参照して述べた通りである。
図5には、サーバ管理テーブル131の一例が示されている。サーバ管理テーブル131には、呼処理サーバ2のサーバID(#1,#2,・・・,#M,#N)ごとに、呼処理サーバ2の状態及びIPアドレスが登録されている。呼処理サーバ2の状態は、呼処理を実行している運用状態である場合、「運用」を示し、障害が発生した場合、つまり呼処理を停止した状態である場合、「障害」を示す。サーバ管理テーブル131は、呼処理サーバ2のヘルスチェックの結果に応じて更新され、プライマリサーバ及びセカンダリサーバの決定や障害通知に用いられる。
CPU10は、ROM11からプログラムを読み込むと、機能として、呼処理割当部100、呼信号処理部101、サーバ監視部102、及び障害通知部103が形成される。なお、呼制御装置1は、このようにソフトウェアで動作するものに限定されず、ハードウェアのみで動作するものであってもよい。
呼処理割当部100は、各呼処理サーバ2に呼ごとに呼処理を割り当て、割り当て結果として割当テーブル130を生成する。つまり、呼処理割当部100は、決定部の一例であり、複数の呼処理サーバ2からプライマリサーバ及びセカンダリサーバを呼ごとに決定する。呼処理割当部100は、決定に従ってCall−ID、プライマリID、及びセカンダリIDを互いに対応付けて割当テーブル130に登録する。
このため、呼処理割当部100は、図3(a)に示されるように、1台のプライマリサーバに対して複数台のセカンダリサーバを割り当てることができる。つまり、1台のプライマリサーバの処理対象の複数の呼が、複数台のセカンダリサーバに割り当てられる。したがって、プライマリサーバに障害が発生しても、そのプライマリサーバに対応する複数台のセカンダリサーバが、プライマリサーバが行っていた呼処理を呼ごとに分担することで、負荷を分散させることができる。これにより、負荷の集中が防止される。
呼処理割当部100は、例えばラウンドロビン方式に従ってプライマリサーバ及びセカンダリサーバを決定する。つまり、呼処理割当部100は、呼処理サーバ(#1,#2,・・・,#M,#N)2から所定の順番(例えばサーバIDの昇順)でプライマリサーバを選択し、プライマリサーバを除く呼処理サーバ(#1,#2,・・・,#M,#N)2から所定の順番でセカンダリサーバを決定する。これにより、複数の呼処理サーバ2に呼処理の負荷を容易に分散させることができる。
また、呼処理割当部100は、呼処理サーバ2に障害が発生した場合、割当テーブル130を更新する。より具体的には、呼処理割当部100は、障害の呼処理サーバ2に代えて、その呼処理サーバ2に対応するセカンダリサーバを新たなプライマリサーバに変更し、他の呼処理サーバ2からセカンダリサーバを決定しなおす。
すなわち、呼処理割当部100は、呼処理サーバ2の障害が検出されたとき、障害のプライマリサーバに対応するセカンダリサーバを新たなプライマリサーバとして決定し、その新たなプライマリサーバに対応するセカンダリサーバを決定する。さらに、呼処理割当部100は、障害の呼処理サーバ2に代えて、他の呼処理サーバ2を新たなセカンダリサーバとして決定しなおす。これにより、さらなる呼処理サーバ2の障害発生に備えることができる。
呼信号処理部101は、通信ポート14を介して基地局91a,91bや他の交換機システム92a,92bから呼信号Sを受信し、インターフェース部15を介し割当テーブル130に従って呼処理サーバ2に転送する。つまり、呼信号処理部101は、呼処理割当部100の決定に従って、呼信号Sを呼に応じたプライマリサーバに送信する。図3(a)の割当テーブル130を例に挙げると、Call−ID「A1」の呼信号Sは呼処理サーバ(#1)2に送信され、Call−ID「B1」の呼信号Sは呼処理サーバ(#M)2に送信される。
また、呼信号処理部101は、呼処理割当部100の決定に従って、プライマリサーバから呼に応じたセカンダリサーバに呼信号Sの呼情報を送信させる。このため、プライマリサーバからセカンダリサーバに呼情報がコピーされる。図3(b)の場合、Call−ID「A1」の呼情報は、呼処理サーバ(#1)2から呼処理サーバ(#M)2に送信され、Call−ID「A2」の呼情報は、呼処理サーバ(#1)2から呼処理サーバ(#N)2に送信される。
また、Call−ID「B1」の呼情報は、呼処理サーバ(#M)2から呼処理サーバ(#N)2に送信され、Call−ID「B2」の呼情報は、呼処理サーバ(#M)2から呼処理サーバ(#1)2に送信される。さらに、Call−ID「C1」の呼情報は、呼処理サーバ(#N)2から呼処理サーバ(#1)2に送信され、Call−ID「C2」の呼情報は、呼処理サーバ(#N)2から呼処理サーバ(#M)2に送信される。これにより、セカンダリサーバは、プライマリサーバの障害に備えて、そのプライマリサーバと同じ呼情報を保持しておくことができる。
より具体的には、呼信号処理部101は、呼信号SにセカンダリサーバのIPアドレスを付与してプライマリサーバに送信し、そのプライマリサーバにIPアドレスに基づいて呼信号Sの呼情報をセカンダリサーバに送信させる。以下に呼信号Sの送信動作を説明する。
図6には、呼信号Sの送信動作の一例が示されている。呼制御装置1は、Call−ID「A1」の呼に関する呼信号Sを受信した場合、呼信号処理部101により、呼信号Sに、セカンダリサーバである呼処理サーバ(#M)2のIPアドレスを付与して、プライマリサーバである呼処理サーバ(#1)2に送信する。呼処理サーバ(#1)2は、呼信号Sから呼情報(A1)を生成または更新し、その呼情報を、呼信号Sに付与されたIPアドレスに基づいて呼処理サーバ(#M)2に送信する。
このため、呼制御装置1は、呼処理サーバ(#1)2から呼情報を取得することなく、呼処理サーバ(#1)2から呼処理サーバ(#M)2に呼情報をコピーさせることができるため、呼制御装置1の処理の負荷が低減される。もっとも、呼制御装置1は、呼処理サーバ(#1)2から呼情報を取得して、呼処理サーバ(#M)2に転送してもよい。なお、呼信号Sに付与されるIPアドレスはアドレスの一例であり、これに代えて、例えばMAC(Media Access Control)アドレスが付与されてもよい。
また、呼信号処理部101は、割当テーブル130を参照することにより呼信号Sの送信先のプライマリサーバ及び呼情報の送信先のセカンダリサーバを識別する。このため、呼信号処理部101は、呼に応じたプライマリサーバ及びセカンダリサーバを容易に検索することができる。
図7(a)には呼信号S(通常)の構成例が示され、図7(b)には呼信号S(IPアドレス付与)の構成例が示されている。呼信号Sは、スタートライン(リクエストライン)、ヘッダ、及びボディを含む。
スタートラインは、発呼側の無線通信端末90aから着呼側の無線通信端末90bへの呼び出しを示す「INVITE」、及び無線通信端末90a,90b間の通信終了の要求を示す「BYE」などの呼の状態に関するコードが格納されている。
ヘッダには「From」領域、「To」領域、「Via」領域、「Call−ID」領域、及び「Cseq」領域などが含まれる。また、呼信号Sに付与されたIPアドレスは、ヘッダに格納される。
「From」領域には発呼側の無線通信端末90aの識別情報(例えば電話番号)が格納され、「To」領域には着呼側の無線通信端末90bの識別情報(例えば電話番号)が格納される。「Via」領域には、リクエスト信号の呼信号Sが経由した通信経路の情報が格納される。レスポンス信号の呼信号Sは、「Via」領域の情報が示す通信経路に沿って返信される。
「Call−ID」領域には呼信号SのCall−IDが格納される。呼制御装置1及び呼処理サーバ2は、「Call−ID」領域からCall−IDを取得する。
「Cseq」領域には呼信号Sのトランザンクション番号が格納される。なお、呼情報には上記のヘッダの各領域の内容が含まれる。また、ボディには、マルチメディアセッションに関するSDP(Session Description Protocol)のパラメータなどが格納されている。
再び図4を参照すると、サーバ監視部102は、複数の呼処理サーバ2の状態を監視し、監視結果に応じてサーバ管理テーブル131を更新する。より具体的には、サーバ監視部102は、各呼処理サーバ2のヘルスチェックを行う。ヘルスチェックは、例えば、サーバ監視部102から各呼処理サーバ2にチェック信号を送信し、呼処理サーバ2から応答の有無を判定することにより行われる。
サーバ監視部102は、応答信号を受信した場合、呼処理サーバ2が正常であると判定し、サーバ管理テーブル131の該当サーバIDの状態を「運用」とする。一方、応答信号を受信できない場合、サーバ監視部102は、サーバ管理テーブル131の該当サーバIDの状態を「障害」とする。図5の例では、呼処理サーバ(#2)2の応答信号がないために、サーバID「#2」の状態が「障害」となっている。
もっとも、サーバ監視部102は、障害に限らず、呼処理サーバ2が呼処理を停止した状態であることを検出してもよい。このような状態としては、例えば、呼処理サーバ2の設置時の初期状態や設定変更時のメンテナンス状態が挙げられる。このように、サーバ監視部102は、検出部の一例として、プライマリサーバが呼信号Sの処理を停止したことを検出する。
障害通知部103は、呼処理サーバ2に障害が発生したとき、他の呼処理サーバ2に障害の発生を通知する。より具体的には、障害通知部103は、例えば、周期的にサーバ管理テーブル131を参照し、障害状態の呼処理サーバ2のIPアドレスを検出する。そして、障害通知部103は、検出したIPアドレスを含む障害通知を生成して、インターフェース部15を介し、生成した障害通知を障害の呼処理サーバ2以外の全ての呼処理サーバ2に送信する。これにより、障害のプライマリサーバに対応する全てのセカンダリサーバに障害の発生が通知される。
各呼処理サーバ2は、後述するように、障害通知を受信すると、セカンダリサーバとして、障害通知が示すIPアドレスのプライマリサーバの呼処理を引き継ぐ。もっとも、障害通知部103は、障害に限らず、プライマリサーバが呼処理を停止した状態であることを通知してもよい。このように、障害通知部103は、指示部の一例として、サーバ監視部102が呼信号Sの処理の停止を検出したとき、セカンダリサーバに、プライマリサーバから送信された呼情報の処理を指示する。セカンダリサーバは、呼制御装置1からの指示に従い、プライマリサーバから送信された呼情報を処理する。
次に、呼処理サーバ2の構成を説明する。図8は、呼処理サーバ2の一例を示す構成図である。呼処理サーバ2は、CPU20、ROM21、RAM22、HDD23、複数の通信ポート24、及びインターフェース部25を有する。
CPU20は、互いに信号の入出力ができるように、ROM21、RAM22、HDD23、通信ポート24、及びインターフェース部25と、データバス26を介して接続されている。ROM21は、CPU20を駆動するプログラムが格納されている。RAM22は、CPU20のワーキングメモリとして機能する。
インターフェース部25は、交換機システム92a,92b内のバス3と接続され、呼制御装置1との通信を処理する。通信ポート24は、例えばPHYチップを含み、基地局91a,91bや他の交換機システム92a,92bとの間で呼信号Sを送受信する。
HDD23には、第1呼情報データベース(DB)230、第2呼情報データベース(DB)231、及び呼情報管理テーブル232が記憶されている。第1呼情報DB230には、プライマリサーバとして呼信号Sを処理することで生成した呼情報が呼ごとに格納されており、第2呼情報DB231には、セカンダリサーバとして他のプライマリサーバから受信した呼情報が呼ごとに格納されている。
呼情報管理テーブル232には、第2呼情報DB231に格納された呼情報のCall−IDとプライマリサーバの対応関係が登録されている。図9には、呼情報管理テーブル232の一例が示されている。本例では、図3(b)の呼処理サーバ(#M)2の呼情報管理テーブル232が挙げられている。
呼情報管理テーブル232は、自装置に対応するプライマリサーバから受信した呼情報を管理するための情報が格納されている。呼情報管理テーブル232には、プライマリサーバのIPアドレス及び1以上のCall−IDが対応付けられて登録されている。呼処理サーバ2は、プライマリサーバから受信した呼情報からIPアドレス及びCall−IDを抽出して呼情報管理テーブル232に登録する。
例えば、プライマリサーバである呼処理サーバ(#1)2のIPアドレス「192.168.1.10」に対しては、Call−ID「A1」,「A4」,・・・が登録されている。このため、呼処理サーバ2は、呼処理サーバ(#1)2に障害が発生した旨の障害通知を受けると、セカンダリサーバとして、呼処理サーバ(#1)2が処理していたCall−ID「A1」,「A4」,・・・の呼処理を引き継ぐ。
また、プライマリサーバである呼処理サーバ(#N)2のIPアドレス「192.168.1.32」に対しては、Call−ID「C2」,「C5」,・・・が登録されている。このため、呼処理サーバ2は、呼処理サーバ(#N)2に障害が発生した旨の障害通知を受けると、セカンダリサーバとして、呼処理サーバ(#N)2が処理していたCall−ID「C2」,「C5」,・・・の呼処理を引き継ぐ。
CPU20は、ROM21からプログラムを読み込むと、機能として、呼処理部200、呼情報管理部201、監視応答部202、及び障害通知処理部203が形成される。なお、呼処理サーバ2は、このようにソフトウェアで動作するものに限定されず、ハードウェアのみで動作するものであってもよい。
呼処理部200は、呼制御装置1からインターフェース部25を介して、呼信号Sを受信して処理する。呼処理部200は、新規の呼の場合、呼信号Sに基づいて呼情報を生成して第1呼情報DB230に格納し、既登録の呼の場合、呼信号Sに基づいて第1呼情報DB230の呼情報を更新する。なお、呼処理部200は、呼情報の生成時、呼情報からインスタンスと呼ばれるデータ群を生成し、インスタンスに呼情報の格納アドレスを対応付けておく。
また、呼処理部200は、呼制御装置1から受信した呼信号Sを処理した後、通信ポート24を介して、基地局91a,91bまたは他の交換機システム92a,92bに呼信号Sを送信する。
呼情報管理部201は、呼制御装置1から受信した呼信号Sに付与されたIPアドレスを取得し、取得したIPアドレスに基づいて、該当する呼情報をセカンダリサーバに送信する。つまり、呼情報管理部201は、呼信号Sに付与されたIPアドレスを宛先として、インターフェース部25を介して呼情報を送信することで、呼情報をセカンダリサーバにコピーする。
図6の例の場合、呼情報管理部201は、呼信号Sから呼処理サーバ(#M)2のIPアドレスを取得して、呼処理サーバ(#M)2に呼情報を送信する。これにより、プライマリサーバである呼処理サーバ(#1)2の呼処理情報が、呼処理サーバ(#M)2にコピーされる。
また、呼情報管理部201は、インターフェース部25を介して、他の呼処理サーバ2から呼情報を受信し、呼情報からIPアドレス及びCall−IDを抽出して呼情報管理テーブル232に登録する。つまり、呼情報管理部201は、プライマリサーバから受信した呼情報に基づき、IPアドレス及びCall−IDを呼情報管理テーブル232に登録する。
監視応答部202は、呼処理サーバ2に異常がない場合、呼制御装置1のヘルスチェックに応答する。より具体的には、監視応答部202は、インターフェース部25を介して、呼制御装置1からチェック信号を受信し、異常がなければ、呼制御装置1に応答を返す。
障害通知処理部203は、プライマリサーバに障害が発生した場合、プライマリサーバからの呼処理の引き継ぎ処理を行う。より具体的には、障害通知処理部203は、インターフェース部25を介して、呼制御装置1から障害通知を受信した場合、呼情報管理テーブル232から、障害のプライマリサーバに対応する全てのCall−IDを検索する。
障害通知処理部203は、検索された各Call−IDの呼情報を第2呼情報DB231から取り出して、第1呼情報DB230に格納する。つまり、障害通知処理部203は、障害のプライマリサーバの呼情報を第2呼情報DB231から第1呼情報DB230に移動させる。これにより、呼処理部200は、障害のプライマリサーバが行っていた呼処理を継続できる。つまり、セカンダリサーバは、呼制御装置1からの指示に従い、プライマリサーバから送信され呼情報を処理する。
また、障害通知処理部203は、呼情報管理テーブル232から障害のプライマリサーバに関するCall−IDの登録を抹消する。
図10には、呼処理サーバの障害発生時の動作の一例が示されている。呼制御装置1のサーバ監視部102は、呼処理サーバ(#1)2にチェック信号CHKを送信し、応答がない場合(「NG」参照)、呼処理サーバ(#1)2の障害を検出する。サーバ監視部102は、障害の検出結果に応じてサーバ管理テーブル131を更新する。
図11(a)は、障害発生時の更新後のサーバ管理テーブル131の一例を示す。サーバ監視部102は、呼処理サーバ(#1)2の障害を検出した場合、サーバID「#1」の状態を「運用」から「障害」に変更する。
また、呼制御装置1の呼処理割当部100は、呼処理サーバ(#1)2の障害の検出に応じて割当テーブル130を更新する。図11(b)には、障害発生時の更新後の割当テーブル130の一例を示す。
呼処理割当部100は、障害の呼処理サーバ(#1)2の処理対象であったCall−ID「A1」,「A2」のプライマリID及びセカンダリIDを更新する。呼処理割当部100は、Call−ID「A1」のプライマリIDを「#1」から「#M」に変更し、Call−ID「A2」のプライマリIDを「#1」から「#N」に変更する。つまり、呼処理割当部100は、Call−ID「A1」,「A2」について、セカンダリサーバを新たなプライマリサーバに決定する。
また、呼処理割当部100は、Call−ID「A1」のセカンダリIDを「#M」から「#J」(J:正の整数)に変更し、Call−ID「A2」のプライマリIDを「#N」から「#J」に変更する。つまり、呼処理割当部100は、Call−ID「A1」,「A2」について、呼処理サーバ(#J)2(不図示)を新たなセカンダリサーバに決定する。
呼制御装置1の障害通知部103は、更新後のサーバ管理テーブル131に基づき、呼処理サーバ(#1)2のIPアドレスを含む障害通知NTFを他の呼処理サーバ(#M,#N)2に送信する。呼処理サーバ(#M,#N)2は、障害通知NTFを受信すると、障害の呼処理サーバ(#1)2が行っていた呼処理を引き継ぐ。
より具体的には、呼処理サーバ(#M)2の呼情報管理部201は、Call−ID「A1」の呼情報を第2呼情報DB231から第1呼情報DB230に移動させ、Call−ID「A2」の呼情報を第2呼情報DB231から第1呼情報DB230に移動させる。また、呼情報管理部201は、障害通知NTFに応じて呼情報管理テーブル232を更新する。
図11(c)は、障害発生時の更新後の呼情報管理テーブル232の一例である。呼情報管理部201は、呼情報管理テーブル232から、障害通知NTFが示す障害の呼処理サーバ(#1)2のIPアドレスの登録を抹消する。
次に、呼制御装置1及び呼処理サーバ2の動作をフローチャートにより説明する。図12は、呼制御装置1の呼信号Sの処理の一例を示すフローチャートである。なお、本処理は、例えば周期的に繰り返し実行される。
まず、呼処理割当部100は、基地局91a,91b及び他の交換機システム92a,92bから呼信号Sを受信したか否かを判定する(ステップSt1)。呼信号Sを受信していない場合(ステップSt1のNo)、処理は終了する。
呼処理割当部100は、呼信号Sを受信している場合(ステップSt1のYes)、受信した呼信号Sが新規の呼に関するものであるか否かを判定する(ステップSt2)。より具体的には、呼処理割当部100は、例えば、呼信号Sに含まれるスタートライン(図7(a)参照)が「INVITE」である場合、新規の呼に関する呼信号Sであると判定する。なお、呼処理割当部100は、受信した呼信号SのCall−IDを割当テーブル130から検索し、該当するCall−IDが無い場合に新規の呼に関する呼信号Sであると判定してもよい。
新規の呼に関する呼信号Sである場合(ステップSt2のYes)、呼処理割当部100は、例えばラウンドロビン方式に従ってプライマリサーバを決定する(ステップSt3)。次に、呼処理割当部100は、例えばラウンドロビン方式に従ってセカンダリサーバを決定する(ステップSt4)。
次に、呼処理割当部100は、決定されたプライマリサーバ及びセカンダリサーバに応じたプライマリID及びセカンダリIDを割当テーブル130に登録する(ステップSt5)。次に、呼信号処理部101は、図7(b)に示されるように、決定されたセカンダリサーバのIPアドレスを呼信号Sに付与する(ステップSt6)。次に、呼信号処理部101は、IPアドレスが付与された呼信号Sを、決定されたプライマリサーバに送信して(ステップSt7)、処理を終了する。
一方、新規の呼に関する呼信号Sではない場合(ステップSt2のNo)、呼処理割当部100は、割当テーブル130から呼信号SのCall−IDに応じたプライマリID及びセカンダリIDを検索する(ステップSt8)。次に、呼信号処理部101は、検索したセカンダリIDが示すセカンダリサーバのIPアドレスを呼信号Sに付与する(ステップSt9)。次に、呼信号処理部101は、IPアドレスが付与された呼信号Sを、検索したプライマリIDが示すプライマリサーバに送信する(ステップSt10)。
次に、呼処理割当部100は、受信した呼信号Sに基づいて、通信が終了するか否かを判定する(ステップSt11)。より具体的には、呼処理割当部100は、例えば、呼信号Sに含まれるスタートライン(図7(a)参照)が「200」である場合、通信が終了すると判定する。
通信が継続すると判定された場合(ステップSt11のNo)、処理は終了する。また、通信が終了すると判定された場合(ステップSt11のYes)、呼処理割当部100は、割当テーブル130から呼信号SのCall−IDに応じたプライマリID及びセカンダリIDの登録を抹消して(ステップSt12)、処理を終了する。このようにして、呼制御装置1は呼信号Sを処理する。
図13は、プライマリサーバの呼信号の処理の一例を示すフローチャートである。なお、本処理は、例えば周期的に繰り返し実行される。
まず、呼処理部200は、呼制御装置1から呼信号Sを受信したか否かを判定する(ステップSt21)。呼信号Sを受信していない場合(ステップSt21のNo)、処理は終了する。
呼処理部200は、呼信号Sを受信している場合(ステップSt21のYes)、受信した呼信号Sが新規の呼に関するものであるか否かを判定する(ステップSt22)。より具体的には、呼処理部200は、例えば、呼信号Sに含まれるスタートライン(図7(a)参照)が「INVITE」である場合、新規の呼に関する呼信号Sであると判定する。なお、呼処理部200は、受信した呼信号SのCall−IDを第1呼情報DB230から検索し、該当するCall−IDが無い場合に新規の呼に関する呼信号Sであると判定してもよい。
新規の呼に関する呼信号Sである場合(ステップSt22のYes)、呼処理部200は、受信した呼信号Sから呼情報を生成する(ステップSt23)。生成された呼情報は、第1呼情報DB230に格納される。このとき、呼処理部200は、呼情報からインスタンスを生成し、インスタンスに呼情報のアドレスを対応付ける。
次に、呼処理部200は、呼情報に基づいて呼処理を行う(ステップSt24)。次に、呼処理部200は、通信ポート24を介して呼信号Sを基地局91a,91bまたは他の交換機システム92a,92bに送信する(ステップSt25)。
次に、呼情報管理部201は、生成した呼情報を自装置に対応するセカンダリサーバにコピーして(ステップSt26)、処理を終了する。より具体的には、呼情報管理部201は、呼信号Sに付与されたIPアドレスを宛先として呼情報を送信する。
一方、新規の呼に関する呼信号Sではない場合(ステップSt22のNo)、呼処理部200は、呼情報に基づいて呼処理を行う(ステップSt27)。このとき、呼処理部200は、該当するインスタンスを特定して、第1呼情報DB230内の呼情報にアクセスする。次に、呼処理部200は、呼信号Sに基づいて呼情報を更新する(ステップSt28)。次に、呼処理部200は、通信ポート24を介して呼信号Sを基地局91a,91bまたは他の交換機システム92a,92bに送信する(ステップSt29)。
次に、呼情報管理部201は、受信した呼信号Sに基づいて、通信が終了するか否かを判定する(ステップSt30)。より具体的には呼情報管理部201は、例えば、呼信号Sに含まれるスタートライン(図7(a)参照)が「200」である場合、通信が終了すると判定する。
呼情報管理部201は、通信が継続すると判定された場合(ステップSt30のNo)、該当する呼情報を自装置に対応するセカンダリサーバにコピーして(ステップSt31)、処理を終了する。また、呼情報管理部201は、通信が終了すると判定された場合(ステップSt30のYes)、自装置に対応するセカンダリサーバに呼情報の削除を要求する(ステップSt32)。次に、呼情報管理部201は、第1呼情報DB230から該当する呼情報を削除し(ステップSt33)、処理を終了する。このようにして、プライマリサーバは呼信号Sの処理を行う。
図14は、セカンダリサーバの呼情報の処理の一例を示すフローチャートである。なお、本処理は、例えば周期的に繰り返し実行される。
まず、呼情報管理部201は、自装置に対応するプライマリサーバから呼情報を受信したか否かを判定する(ステップSt41)。呼情報管理部201は、呼情報を受信した場合(ステップSt41のYes)、受信した呼情報が新規の呼に関するものであるか否かを判定する(ステップSt42)。呼情報管理部201は、受信した呼情報が新規の呼に関するものではない場合(ステップSt42のNo)、第2呼情報DB231に格納された当該呼情報を更新して(ステップSt48)、処理を終了する。
また、受信した呼情報が新規の呼に関するものである場合(ステップSt43のYes)、呼情報管理部201は、呼情報を第2呼情報DB231に格納する(ステップSt43)。次に、呼情報管理部201は、該当するCall−IDを送信元のプライマリサーバのIPアドレスに対応付けて呼情報管理テーブル232に登録して(ステップSt44)、処理を終了する。
一方、呼情報管理部201は、呼情報を受信していない場合(ステップSt41のNo)、プライマリサーバから呼情報の削除を要求されたか否かを判定する(ステップSt45)。要求が無い場合(ステップSt45のNo)、処理は終了する。要求が有る場合(ステップSt45のYes)、呼情報管理部201は、第1呼情報DB230から呼情報を削除する(ステップSt46)。次に、呼情報管理部201は、呼情報管理テーブル232から、該当するCall−IDの登録を抹消し(ステップSt47)、処理を終了する。このようにして、セカンダリサーバは呼情報を処理する。
図15は、呼制御装置1における呼処理サーバの監視処理の一例を示すフローチャートである。なお、本処理は、例えば周期的に繰り返し実行される。
まず、サーバ監視部102は、呼処理サーバ2にチェック信号CHKを送信する(ステップSt51)。チェック信号CHKの送信先の呼処理サーバ2は、例えばラウンドロビン方式に従って選択される。
次に、サーバ監視部102は、送信先の呼処理サーバ2からの応答の有無を判定する(ステップSt52)。サーバ監視部102は、例えば、所定時間内に呼処理サーバ2から応答信号が受信されない場合、応答がないと判定する。
サーバ監視部102は、応答があった場合(ステップSt52のYes)、処理を終了する。また、サーバ監視部102は、応答がない場合(ステップSt52のNo)、送信先の呼処理サーバ2において障害が発生したことを検出する(ステップSt53)。次に、サーバ監視部102は、図11(a)に例示されるように、検出結果に応じてサーバ管理テーブル131を更新する(ステップSt54)。
次に、障害通知部103は、障害発生が検出された呼処理サーバ2のIPアドレスを含む障害通知を生成して他の各呼処理サーバ2に送信する(ステップSt55)。次に、呼処理割当部100は、図11(b)に例示されるように、割当テーブル130を更新し(ステップSt56)、処理を終了する。このようにして、呼制御装置1は、呼処理サーバ2の監視処理を行う。
図16は、呼処理サーバ2における障害通知NTFの受信処理の一例を示すフローチャートである。なお、本処理は、例えば周期的に繰り返し実行される。
まず、障害通知処理部203は、障害通知NTFを受信したか否かを判定する(ステップSt61)。障害通知NTFが受信されていない場合(ステップSt61のNo)、処理は終了する。障害通知処理部203は、障害通知NTFを受信した場合(ステップSt61のYes)、呼情報管理テーブル232から、障害通知NTFが示すIPアドレスに該当する全てのCall−IDを検索する(ステップSt62)。
次に、障害通知処理部203は、検索された全てのCall−IDの呼情報を第1呼情報DB230から第2呼情報DB231へ移動させる(ステップSt63)。より具体的には、障害通知処理部203は、例えば、該当する呼情報を第1呼情報DB230から第2呼情報DB231にコピーし、コピー元の呼情報を第1呼情報DB230から削除する。また、障害通知処理部203は、該当する呼情報に基づいてインスタンスを生成する。
次に、呼情報管理部201は、呼情報管理テーブル232から、該当するCall−IDの登録を抹消し(ステップSt64)、処理を終了する。このようにして、呼処理サーバ2は、障害通知NTFの受信処理を行う。
次に、交換機システム92a,92bの動作をシーケンス図により説明する。図17及び図18は、交換機システム92aにおける呼処理の一例を示すシーケンス図である。本例では、発呼側の交換機システム92aが、発呼側の基地局91aと着呼側の交換機システム92bの間で呼信号Sを送受信する場合の動作を挙げるが、着呼側の交換機システム92bについても同様の動作が行われる。また、本例では、図3(a)及び図3(b)と同様の条件下でCall−ID「A1」の呼に関する呼信号Sを処理する場合を挙げる。
図17及び図18は、発呼から通信終了までの一連のシーケンスを示す。まず、図17を参照して説明する。
発呼側の基地局91aは、スタートライン(図7(a)参照)に「INVITE」が格納された呼信号Sを呼制御装置1に送信する。呼信号SのCall−IDは、一例として「A1」とする。
次に、呼制御装置1の呼処理割当部100は、複数の呼処理サーバ2からCall−ID「A1」についてのプライマリサーバ及びセカンダリサーバを決定する(符号SQ1参照)。プライマリサーバ及びセカンダリサーバの決定は、複数の呼処理サーバ2間で負荷が容易に分散されるように、例えばラウンドロビン方式に従って行われる。本例では、呼処理サーバ(#1)2がプライマリサーバに決定され、呼処理サーバ(#M)2がセカンダリサーバに決定される。
次に、呼処理割当部100は、図3(a)に示されるように、決定したプライマリサーバのプライマリID(「#1」)及び決定したセカンダリサーバのセカンダリID(「#M」)をCall−ID「A1」に対応付けて割当テーブル130に登録する(符号SQ2参照)。つまり、呼処理割当部100は、決定に従ってCall−ID「A1」、プライマリID、及びセカンダリIDを互いに対応付けて割当テーブル130に登録する。
次に、呼信号処理部101は、受信した呼信号Sに、決定したセカンダリサーバのIPアドレス「192.168.1.31」を付与して、プライマリサーバである呼処理サーバ(#1)2に送信する。次に、呼信号処理部101は、スタートラインに「100trying」が格納された呼信号Sを基地局91aに送信する。
呼処理サーバ(#1)2の呼処理部200は、呼制御装置1から受信した呼信号Sから呼情報を生成する(符号SQ3参照)。生成された呼情報は、第1呼情報DB230に格納される。また、呼処理部200は、呼情報からインスタンスを生成する。
次に、呼処理部200は、受信した呼信号Sを着呼側の交換機システム92bに送信する。次に、呼情報管理部201は、呼信号Sに付与されたIPアドレスを宛先として呼情報を送信する。つまり、呼情報管理部201は、呼情報をセカンダリサーバである呼処理サーバ(#M)2にコピーする。セカンダリサーバである呼処理サーバ(#M)2において、呼情報管理部201は、受信した呼情報を第2呼情報DB231に格納し、呼情報管理テーブルにCall−ID「A1」を、呼情報の送信元(プライマリサーバ)のIPアドレスに対応付けて登録する(符号SQ4参照)。
このように、呼信号処理部101は、呼処理割当部100の決定に従って、呼信号Sを呼に応じたプライマリサーバに送信し、プライマリサーバから呼に応じたセカンダリサーバに呼情報を送信させる。これにより、セカンダリサーバは、プライマリサーバの障害に備えて、そのプライマリサーバと同じ呼情報を保持しておくことができる。
また、呼信号処理部101は、呼信号SにセカンダリサーバのIPアドレスを付与してプライマリサーバに送信し、そのプライマリサーバにIPアドレスに基づいて呼情報をセカンダリサーバに送信させる。このため、呼制御装置1は、プライマリサーバから呼情報を取得することなく、プライマリサーバからセカンダリサーバに呼情報をコピーさせることができるため、呼制御装置1の処理の負荷が低減される。
次に、着呼側の交換機システム92bは、スタートラインに「200」が格納された呼信号Sを呼制御装置1に送信する。呼処理割当部100は、呼信号SのCall−ID「A1」に基づいて、割当テーブル130からプライマリID及びセカンダリIDを検索する(符号SQ5参照)。次に、呼信号処理部101は、受信した呼信号Sに、検索されたセカンダリIDに対応するセカンダリサーバのIPアドレス「192.168.1.31」を付与して、検索されたプライマリIDに対応するプライマリサーバである呼処理サーバ(#1)2に送信する。
このように、呼信号処理部101は、割当テーブル130を参照することにより呼信号Sの送信先のプライマリサーバ及び呼情報の送信先のセカンダリサーバを識別する。このため、呼信号処理部101は、Call−ID「A1」の呼に応じたプライマリサーバ及びセカンダリサーバを容易に検索することができる。
プライマリサーバである呼処理サーバ(#1)2では、呼処理部200が、受信した呼信号Sに基づいて、Call−ID「A1」に応じた呼情報を更新する(符号SQ6参照)。次に、呼処理部200は、受信した呼信号Sを発呼側の基地局91aに送信する。次に、呼情報管理部201は、呼信号Sに付与されたIPアドレスを宛先として、更新後の呼情報を送信する。つまり、呼情報管理部201は、更新後の呼情報をセカンダリサーバである呼処理サーバ(#M)2にコピーする。
セカンダリサーバである呼処理サーバ(#M)2では、呼情報管理部201が、受信した呼情報に基づいて、Call−ID「A1」に応じた呼情報を更新する(符号SQ7参照)。このため、セカンダリサーバに格納された呼情報は、最新の状態に維持される。
次に、発呼側の基地局91aは、スタートラインに「ACK」が格納された呼信号Sを呼制御装置1に送信する。呼処理割当部100は、呼信号SのCall−ID「A1」に基づいて、割当テーブル130からプライマリID及びセカンダリIDを検索する(符号SQ8参照)。次に、呼信号処理部101は、受信した呼信号Sに、検索されたセカンダリIDに対応するセカンダリサーバのIPアドレス「192.168.1.31」を付与して、検索されたプライマリIDに対応するプライマリサーバである呼処理サーバ(#1)2に送信する。
呼処理サーバ(#1)2では、呼処理部200が、受信した呼信号Sに基づいて、Call−ID「A1」に応じた呼情報を更新する(符号SQ9参照)。次に、呼処理部200は、受信した呼信号Sを着呼側の交換機システム92bに送信する。次に、呼情報管理部201は、呼信号Sに付与されたIPアドレスを宛先として、更新後の呼情報を送信する。つまり、呼情報管理部201は、更新後の呼情報をセカンダリサーバである呼処理サーバ(#M)2にコピーする。
セカンダリサーバである呼処理サーバ(#M)2では、呼情報管理部201が、受信した呼情報に基づいて、Call−ID「A1」に応じた呼情報を更新する(符号SQ10参照)。ここまでのシーケンスによって、発呼側の無線通信端末90aと着呼側の無線通信端末90bの間で通信(通話)が開始される。
次に、図18を参照して説明する。図18には、通信終了の要求(「BYE」)が行われた場合のシーケンスが示されている。
発呼側の基地局91aは、スタートラインに「BYE」が格納された呼信号Sを呼制御装置1に送信する。呼処理割当部100は、呼信号SのCall−ID「A1」に基づいて、割当テーブル130からプライマリID及びセカンダリIDを検索する(符号SQ11参照)。次に、呼信号処理部101は、受信した呼信号Sに、検索されたセカンダリIDに対応するセカンダリサーバのIPアドレス「192.168.1.31」を付与して、検索されたプライマリIDに対応するプライマリサーバである呼処理サーバ(#1)2に送信する。
呼処理サーバ(#1)2では、呼処理部200が、受信した呼信号Sに基づいて、Call−ID「A1」に応じた呼情報を更新する(符号SQ12参照)。次に、呼処理部200は、受信した呼信号Sを着呼側の交換機システム92bに送信する。次に、呼情報管理部201は、呼信号Sに付与されたIPアドレスを宛先として、更新後の呼情報を送信する。つまり、呼情報管理部201は、更新後の呼情報をセカンダリサーバである呼処理サーバ(#M)2にコピーする。
セカンダリサーバである呼処理サーバ(#M)2では、呼情報管理部201が、受信した呼情報に基づいて、Call−ID「A1」に応じた呼情報を更新する(符号SQ13参照)。
次に、着呼側の交換機システム92bは、スタートラインに「200」が格納された呼信号Sを呼制御装置1に送信する。呼処理割当部100は、呼信号SのCall−ID「A1」に基づいて、割当テーブル130からプライマリID及びセカンダリIDを検索する(符号SQ14参照)。次に、呼信号処理部101は、受信した呼信号Sに、検索されたセカンダリIDに対応するセカンダリサーバのIPアドレス「192.168.1.31」を付与して、検索されたプライマリIDに対応するプライマリサーバである呼処理サーバ(#1)2に送信する。
次に、呼処理割当部100は、通信終了に伴い、割当テーブル130からプライマリID及びセカンダリIDの登録を抹消する(符号SQ16参照)。これにより、割当テーブル130からCall−ID「A1」に関する登録が抹消される。
プライマリサーバである呼処理サーバ(#1)2では、呼処理部200が、受信した呼信号Sに基づいて、Call−ID「A1」に応じた呼情報を更新する(符号SQ15参照)。次に、呼処理部200は、受信した呼信号Sを発呼側の基地局91aに送信する。次に、呼情報管理部201は、呼信号Sに付与されたIPアドレスを宛先として、呼情報の削除要求を送信する。つまり、呼情報管理部201は、通信終了に伴って、セカンダリサーバである呼処理サーバ(#M)2に呼情報の削除を要求する。次に、呼情報管理部201は、第1呼情報DB230から呼情報を削除する(符号SQ17参照)。
セカンダリサーバである呼処理サーバ(#M)2では、呼情報管理部201が、呼情報の削除要求に応じて、第2呼情報DB231から呼情報を削除する(符号SQ18参照)。次に、呼情報管理部201は、呼情報管理テーブル232からCall−ID「A1」の登録を抹消する(符号SQ19参照)。このようにして、交換機システム92aにおける呼処理のシーケンスは実行される。
次に、上述したシーケンスにおいて、プライマリサーバである呼処理サーバ(#1)2に障害が発生した場合の処理について説明する。
図19は、障害発生時の交換機システム92aにおける呼処理の一例を示すシーケンス図である。本例では、プライマリサーバが呼信号Sの処理を停止する場合の一例として障害の発生を挙げるが、保守などの他の要因により呼信号Sの処理が停止する場合も本例と同様のシーケンスが実行される。
呼処理サーバ(#1)2において障害が発生する(符号SQ21参照)。なお、障害は、図17のシーケンスにおいて、スタートラインに「200」が格納された呼信号Sが呼処理サーバ(#1)2から送信され、さらに、呼情報が呼処理サーバ(#1)2から呼処理サーバ(#M)2に送信された後に発生したものとする。
呼制御装置1のサーバ監視部102は、呼処理サーバ(#1)2にチェック信号CHKを送信する。しかし、呼処理サーバ(#1)2は、障害状態であるために応答できないので、サーバ監視部102は、呼処理サーバ(#1)2の障害を検出する(符号SQ22参照)。これにより、呼処理サーバ(#1)2への呼信号Sの送信は停止する。
次に、サーバ監視部102は、図11(a)に示されるようにサーバ管理テーブル131を更新し、障害の呼処理サーバ(#1)2のIPアドレス「192.168.1.10」を含む障害通知NTFを他の呼処理サーバ(#M,#N)2に送信する。次に、呼処理割当部100は、図11(b)に示されるように割当テーブル130を更新する(符号SQ23参照)。
より具体的には、呼処理割当部100は、Call−ID「A1」について、障害の呼処理サーバ(#1)2に対応するセカンダリサーバである呼処理サーバ(#M)2を新たなプライマリサーバとして決定する。また、呼処理割当部100は、その新たなプライマリサーバに対応するセカンダリサーバとして、他の呼処理サーバ(#J)2を選択する。これにより、さらなる呼処理サーバ2の障害発生に備えることができる。
呼処理サーバ(#M,#N)2の障害通知処理部203は、障害通知NTFを受信すると、呼情報管理テーブル232から、障害通知NTFが示すIPアドレスに対応する全てのCall−IDを検索する(符号SQ24,SQ25参照)。検索されたCall−IDには「A1」が含まれる(図9参照)。
次に、障害通知処理部203は、検索されたCall−IDの呼情報を第2呼情報DB231から第1呼情報DB230に移動させる(符号SQ26,SQ27参照)。これにより、呼処理サーバ(#M)2では、Call−ID「A1」の呼情報が第1呼情報DB230に格納され、呼処理サーバ(#N)2では、Call−ID「A2」の呼情報が第1呼情報DB230に格納される。また、呼情報管理部201は、Call−ID「A1」,「A2」の呼情報に基づいてインスタンスを生成する。
次に、障害通知処理部203は、図11(c)に示されるように呼情報管理テーブル232を更新する(符号SQ28,SQ29参照)。より具体的には、呼情報管理テーブル232から、障害通知NTFが示すIPアドレス「192.168.1.10」の登録が抹消される。
以上のシーケンスにより、Call−ID「A1」の呼について、プライマリサーバが呼処理サーバ(#1)2から呼処理サーバ(#M)2に切り替えられ、セカンダリサーバが呼処理サーバ(#M)2から呼処理サーバ(#J)2に切り替えられる。また、Call−ID「A2」の呼について、プライマリサーバが呼処理サーバ(#1)2から呼処理サーバ(#N)2に切り替えられ、セカンダリサーバが呼処理サーバ(#N)2から呼処理サーバ(#J)2に切り替えられる。このため、各Call−ID「A1」,「A2」の呼信号Sは、以下のシーケンスで処理される。
発呼側の基地局91aは、スタートラインに「ACK」が格納された呼信号S(Call−ID「A1」)を呼制御装置1に送信する。呼処理割当部100は、呼信号SのCall−ID「A1」に基づいて、割当テーブル130からプライマリID及びセカンダリIDを検索する(符号SQ30参照)。これにより、プライマリID「#M」及びセカンダリID「#J」が検索される。
次に、呼信号処理部101は、受信した呼信号Sに、セカンダリサーバである呼処理サーバ(#J)2のIPアドレスを付与して、プライマリサーバである呼処理サーバ(#M)2に送信する。
呼処理サーバ(#M)2では、呼処理部200が、受信した呼信号Sに基づいて、Call−ID「A1」に応じた呼情報を更新する(符号SQ31参照)。次に、呼処理部200は、受信した呼信号Sを着呼側の交換機システム92bに送信する。次に、呼情報管理部201は、呼信号Sに付与されたIPアドレスを宛先として、更新後の呼情報を送信する。つまり、呼情報管理部201は、更新後の呼情報をセカンダリサーバである呼処理サーバ(#J)2にコピーする。なお、Call−ID「A1」に関し、以降の呼信号Sも同様のシーケンスで処理される。
また、発呼側の基地局91aは、スタートラインに「ACK」が格納された呼信号S(Call−ID「A2」)を呼制御装置1に送信する。呼処理割当部100は、呼信号SのCall−ID「A2」に基づいて、割当テーブル130からプライマリID及びセカンダリIDを検索する(符号SQ32参照)。これにより、プライマリID「#N」及びセカンダリID「#J」が検索される。
呼処理サーバ(#N)2では、呼処理部200が、受信した呼信号Sに基づいて、Call−ID「A2」に応じた呼情報を更新する(符号SQ33参照)。次に、呼処理部200は、受信した呼信号Sを着呼側の交換機システム92bに送信する。次に、呼情報管理部201は、呼信号Sに付与されたIPアドレスを宛先として、更新後の呼情報を送信する。つまり、呼情報管理部201は、更新後の呼情報をセカンダリサーバである呼処理サーバ(#J)2にコピーする。なお、Call−ID「A2」に関し、以降の呼信号Sも同様のシーケンスで処理される。
このように、Call−ID「A1」,「A2」の呼信号Sを処理する呼処理サーバ(#1)2に障害が発生した場合、呼処理サーバ(#M)2がCall−ID「A1」の呼信号Sを処理し、呼処理サーバ(#N)2がCall−ID「A2」の呼信号Sを処理する。つまり、障害の呼処理サーバ(#1)2が行っていた呼処理は、2台の呼処理サーバ(#M,#N)2に引き継がれる。このため、負荷の集中が防止される。
これまで述べたように、実施例に係る呼制御装置1は、呼処理割当部100と、呼信号処理部101と、サーバ監視部102と、障害通知部103とを有する。呼処理割当部100は、複数の呼処理サーバ2から、呼に関する呼信号Sを処理するプライマリサーバと、プライマリサーバが呼信号Sの処理を停止した場合に呼信号Sを処理するセカンダリサーバとを、呼ごとに決定する。
呼信号処理部101は、呼処理割当部100の決定に従って、呼信号Sを呼に応じたプライマリサーバに送信し、プライマリサーバから呼に応じたセカンダリサーバに呼信号Sの呼情報を送信させる。サーバ監視部102は、プライマリサーバが呼信号Sの処理を停止したことを検出する。障害通知部103は、サーバ監視部102が呼信号Sの処理の停止を検出したとき、セカンダリサーバに呼情報の処理を指示する。
上記の構成によると、呼処理割当部100は、プライマリサーバ及びセカンダリサーバを呼ごとに決定するため、1台のプライマリサーバに対して複数台のセカンダリサーバを割り当てることができる。つまり、1台のプライマリサーバの処理対象の複数の呼が、複数台のセカンダリサーバに割り当てられる。
また、呼信号処理部101は、呼処理割当部100の決定に従って、呼に応じ、呼信号Sをプライマリサーバに送信し、そのプライマリサーバの呼情報をセカンダリサーバに送信させる。そして、障害通知部103は、サーバ監視部102が呼信号Sの処理の停止を検出したとき、セカンダリサーバに呼情報の処理を指示する。このため、プライマリサーバに障害が発生すると、そのプライマリサーバに対応する複数台のセカンダリサーバが呼信号Sの処理を引き継ぐことができる。
したがって、プライマリサーバに障害が発生しても、そのプライマリサーバに対応する複数台のセカンダリサーバが、プライマリサーバが行っていた呼処理を呼ごとに分担することで、負荷を分散させることができる。これにより、負荷の集中が防止される。
また、実施例に係る呼制御システムは、呼制御装置1と、複数の呼処理サーバ2とを有する。呼制御装置1は、複数の呼処理サーバ2から、呼に関する呼信号Sを処理するプライマリサーバと、プライマリサーバが呼信号Sの処理を停止した場合に呼信号Sを処理するセカンダリサーバとを、呼ごとに決定する。
呼制御装置1は、その決定に従って、呼信号Sを呼に応じたプライマリサーバに送信し、プライマリサーバから呼に応じたセカンダリサーバに呼信号Sの呼情報を送信させる。呼制御装置1は、プライマリサーバにおける呼信号Sの処理の停止を検出したとき、セカンダリサーバに呼情報の処理を指示する。
プライマリサーバは、呼信号Sを処理し、セカンダリサーバは、呼制御装置1からの指示に従い、プライマリサーバから送信された呼情報を処理する。
実施例に係る呼制御システムは、上記の呼制御装置1と同様の構成を含むため、上述した内容と同様の作用効果を奏する。
また、実施例に係る呼制御方法は、以下のステップを含む。
ステップ(1):複数の呼処理サーバ2から、呼に関する呼信号Sを処理するプライマリサーバと、プライマリサーバが呼信号Sの処理を停止した場合に呼信号Sを処理するセカンダリサーバとを、呼ごとに決定する。
ステップ(2):該決定に従って、呼信号Sを呼に応じたプライマリサーバに送信し、プライマリサーバから呼に応じたセカンダリサーバに呼信号Sの呼情報を送信する。
ステップ(3):プライマリサーバにおける呼信号Sの処理の停止を検出したとき、セカンダリサーバに呼情報の処理を指示する。
実施例に係る呼制御方法は、上記の呼制御装置1と同様の構成を含むため、上述した内容と同様の作用効果を奏する。
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
なお、以上の説明に関して更に以下の付記を開示する。
(付記1) 複数の呼処理装置から、呼に関する呼信号を処理する第1呼処理装置と、前記第1呼処理装置が前記呼信号の処理を停止した場合に前記呼信号を処理する第2呼処理装置とを、前記呼ごとに決定する決定部と、
前記決定部の決定に従って、前記呼信号を前記呼に応じた前記第1呼処理装置に送信し、前記第1呼処理装置から前記呼に応じた前記第2呼処理装置に前記呼信号の処理情報を送信させる呼信号処理部と、
前記第1呼処理装置が前記呼信号の処理を停止したことを検出する検出部と、
前記検出部が前記呼信号の処理の停止を検出したとき、前記第2呼処理装置に前記処理情報の処理を指示する指示部とを有することを特徴とする呼制御装置。
(付記2) テーブルを記憶する記憶部を、さらに有し、
前記決定部は、決定に従って前記呼の識別子、前記第1呼処理装置の識別子、及び前記第2呼処理装置の識別子を互いに対応付けて前記テーブルに登録し、
前記呼信号処理部は、前記テーブルを参照することにより前記呼信号の送信先の前記第1呼処理装置及び前記呼信号の処理情報の送信先の前記第2呼処理装置を識別することを特徴とする付記1に記載の呼制御装置。
(付記3) 前記決定部は、ラウンドロビン方式に従って前記複数の呼処理装置から前記第2呼処理装置を決定することを特徴とする付記1または2に記載の呼制御装置。
(付記4) 前記決定部は、前記検出部が前記呼信号の処理の停止を検出したとき、前記呼信号の処理を停止した前記第1呼処理装置に対応する前記第2呼処理装置を新たな前記第1呼処理装置として決定し、前記複数の呼処理装置から、該新たな前記第1呼処理装置に対応する前記第2呼処理装置を決定することを特徴とする付記1乃至3の何れかに記載の呼制御装置。
(付記5) 前記呼信号処理部は、前記呼信号に前記第2呼処理装置のアドレスを付与して前記第1呼処理装置に送信し、前記第1呼処理装置に前記アドレスに基づいて前記呼信号の処理情報を前記第2呼処理装置に送信させることを特徴とする付記1乃至4の何れかに記載の呼制御装置。
(付記6) 呼制御装置と、複数の呼処理装置とを有し、
前記呼制御装置は、
前記複数の呼処理装置から、呼に関する呼信号を処理する第1呼処理装置と、前記第1呼処理装置が前記呼信号の処理を停止した場合に前記呼信号を処理する第2呼処理装置とを、前記呼ごとに決定し、
該決定に従って、前記呼信号を前記呼に応じた前記第1呼処理装置に送信し、前記第1呼処理装置から前記呼に応じた前記第2呼処理装置に前記呼信号の処理情報を送信させ、
前記第1呼処理装置における前記呼信号の処理の停止を検出したとき、前記第2呼処理装置に前記処理情報の処理を指示し、
前記第1呼処理装置は、前記呼信号を処理し、
前記第2呼処理装置は、前記呼制御装置からの指示に従い、前記第1呼処理装置から送信された前記処理情報を処理することを特徴とする呼制御システム。
(付記7) 前記呼制御装置は、
前記決定に従って前記呼の識別子、前記第1呼処理装置の識別子、及び前記第2呼処理装置の識別子を互いに対応付けてテーブルに登録し、
前記テーブルを参照することにより前記呼信号の送信先の前記第1呼処理装置及び前記呼信号の処理情報の送信先の前記第2呼処理装置を識別することを特徴とする付記6に記載の呼制御システム。
(付記8) 前記呼制御装置は、ラウンドロビン方式に従って前記複数の呼処理装置から前記第2呼処理装置を決定することを特徴とする付記6または7に記載の呼制御システム。
(付記9) 前記呼制御装置は、前記第1呼処理装置における前記呼信号の処理の停止を検出したとき、前記呼信号の処理を停止した前記第1呼処理装置に対応する前記第2呼処理装置を新たな前記第1呼処理装置として決定し、前記複数の呼処理装置から、該新たな前記第1呼処理装置に対応する前記第2呼処理装置を決定することを特徴とする付記6乃至8の何れかに記載の呼制御システム。
(付記10) 前記呼制御装置は、前記呼信号に前記第2呼処理装置のアドレスを付与して前記第1呼処理装置に送信し、前記第1呼処理装置に前記アドレスに基づいて前記呼信号の処理情報を前記第2呼処理装置に送信させることを特徴とする付記6乃至9の何れかに記載の呼制御システム。
(付記11) 複数の呼処理装置から、呼に関する呼信号を処理する第1呼処理装置と、前記第1呼処理装置が前記呼信号の処理を停止した場合に前記呼信号を処理する第2呼処理装置とを、前記呼ごとに決定し、
該決定に従って、前記呼信号を前記呼に応じた前記第1呼処理装置に送信し、前記第1呼処理装置から前記呼に応じた前記第2呼処理装置に前記呼信号の処理情報を送信し、
前記第1呼処理装置における前記呼信号の処理の停止を検出したとき、前記第2呼処理装置に前記処理情報の処理を指示することを特徴とする呼制御方法。
(付記12) 前記決定に従って前記呼の識別子、前記第1呼処理装置の識別子、及び前記第2呼処理装置の識別子を互いに対応付けてテーブルに登録し、
前記テーブルを参照することにより前記呼信号の送信先の前記第1呼処理装置及び前記呼信号の処理情報の送信先の前記第2呼処理装置を識別することを特徴とする付記11に記載の呼制御方法。
(付記13) ラウンドロビン方式に従って前記複数の呼処理装置から前記第2呼処理装置を決定することを特徴とする付記11または12に記載の呼制御方法。
(付記14) 前記第1呼処理装置における前記呼信号の処理の停止を検出したとき、前記呼信号の処理を停止した前記第1呼処理装置に対応する前記第2呼処理装置を新たな前記第1呼処理装置として決定し、前記複数の呼処理装置から、該新たな前記第1呼処理装置に対応する前記第2呼処理装置を決定することを特徴とする付記11乃至13の何れかに記載の呼制御方法。
(付記15) 前記呼信号に前記第2呼処理装置のアドレスを付与して前記第1呼処理装置に送信し、前記第1呼処理装置に前記アドレスに基づいて前記呼信号の処理情報を前記第2呼処理装置に送信させることを特徴とする付記11乃至14の何れかに記載の呼制御方法。