(57)【特許請求の範囲】
【請求項１】
ＳＩＰ（Session Initiation Protocol）クライアントから受信されるＳＩＰメッセージのヘッダに付加されたＳＩＰサーバ装置の識別子を取得する処理と、
前記ＳＩＰクライアントによるセッションを制御する複数のＳＩＰサーバ装置のうち、取得された前記識別子に対応するＳＩＰサーバ装置に、受信された前記ＳＩＰメッセージを振り分ける処理と、
前記複数のＳＩＰサーバ装置の台数の変化を検出する処理と、
前記ＳＩＰサーバ装置の台数の変化後に、前記ＳＩＰクライアントから受信するＳＩＰメッセージの振り分け先のＳＩＰサーバ装置を、変化前の前記ＳＩＰサーバ装置の台数に従い特定する処理と、を実行する制御部を備えるサーバ装置であって、
前記制御部は、
前記ＳＩＰクライアントからＳＩＰメッセージを受信するセッション毎に、変化前の前記ＳＩＰサーバ装置の台数に従って特定したＳＩＰサーバを指定するサーバ指定情報を、前記サーバ装置の記憶装置に格納する処理と、
前記ＳＩＰサーバ装置の台数の変化後の所定期間において、前記サーバ指定情報に従ってＳＩＰメッセージを振り分ける処理と、
前記所定期間の後に、前記サーバ指定情報を前記記憶装置から消去する処理と、
を実行することを特徴とするサーバ装置。
【請求項２】
前記制御部は、ＳＩＰメッセージを受信する前記ＳＩＰクライアントが、受信したＳＩＰメッセージのヘッダから送信するＳＩＰメッセージのヘッダに載せ替えた前記識別子を取得する処理を実行することを特徴とする、請求項１に記載のサーバ装置。
【請求項３】
前記制御部は、ＳＩＰメッセージを受信する前記ＳＩＰクライアントが、受信したＳＩＰメッセージのヘッダから送信するＳＩＰメッセージのヘッダに載せ替えた前記識別子を取得する処理を実行することを特徴とする請求項１に記載のサーバ装置。
【請求項４】
前記制御部は、前記ＳＩＰサーバ装置の台数の変化後にセッション確立リクエストメッセージを受信した場合に、前記セッション確立リクエストメッセージのセッションの前記サーバ指定情報を前記記憶装置に格納することを特徴とする請求項１又は３に記載のサーバ装置。
【請求項５】
前記制御部は、セッション確立リクエストメッセージの最終応答の確認応答メッセージを受信した場合に、前記確認応答メッセージのセッションの前記サーバ指定情報を前記記憶装置から消去する処理を実行することを特徴とする請求項１、３又は４のいずれか一項に記載のサーバ装置。
【請求項６】
請求項１に記載のサーバ装置において前記ＳＩＰクライアントによるセッションを制御するＳＩＰサーバ装置であって、前記ＳＩＰサーバ装置から前記ＳＩＰクライアントへ送信するＳＩＰメッセージのヘッダのうち、前記ＳＩＰクライアントから送信されるＳＩＰメッセージのヘッダに載せ替えられるヘッダに、前記ＳＩＰサーバ装置の識別子を付加する処理を実行する制御部を備えるＳＩＰサーバ装置。
【請求項７】
サーバ装置が備える制御部に、
ＳＩＰクライアントから受信されるＳＩＰメッセージのヘッダに付加されたＳＩＰサーバ装置の識別子を取得する処理と、
前記ＳＩＰクライアントによるセッションを制御する複数のＳＩＰサーバ装置のうち、取得された前記識別子に対応するＳＩＰサーバ装置に、受信された前記ＳＩＰメッセージを振り分ける処理と、
前記複数のＳＩＰサーバ装置の台数の変化を検出する処理と、
前記ＳＩＰサーバ装置の台数の変化後に、前記ＳＩＰクライアントから受信するＳＩＰメッセージの振り分け先のＳＩＰサーバ装置を、変化前の前記ＳＩＰサーバ装置の台数に従い特定する処理と、
前記ＳＩＰクライアントからＳＩＰメッセージを受信するセッション毎に、変化前の前記ＳＩＰサーバ装置の台数に従って特定したＳＩＰサーバ装置を指定するサーバ指定情報を、前記サーバ装置の記憶装置に格納する処理と、
前記ＳＩＰサーバ装置の台数の変化後の所定期間において、前記サーバ指定情報に従ってＳＩＰメッセージを振り分ける処理と、
前記所定期間の後に、前記サーバ指定情報を前記記憶装置から消去する処理と、を実行させることを特徴とするコンピュータプログラム。
【請求項８】
サーバ装置が備える制御部に、
ＳＩＰクライアントから受信されるＳＩＰメッセージのヘッダに付加されたＳＩＰサーバ装置の識別子を取得する処理と、
前記ＳＩＰクライアントによるセッションを制御する複数のＳＩＰサーバ装置のうち、取得された前記識別子に対応するＳＩＰサーバ装置に、受信された前記ＳＩＰメッセージを振り分ける処理と、
前記複数のＳＩＰサーバ装置の台数の変化を検出する処理と、
前記ＳＩＰサーバ装置の台数の変化後に、前記ＳＩＰクライアントから受信するＳＩＰメッセージの振り分け先のＳＩＰサーバ装置を、変化前の前記ＳＩＰサーバ装置の台数に従い特定する処理と、
前記ＳＩＰクライアントからＳＩＰメッセージを受信するセッション毎に、変化前の前記ＳＩＰサーバ装置の台数に従って特定したＳＩＰサーバ装置を指定するサーバ指定情報を、前記サーバ装置の記憶装置に格納する処理と、
前記ＳＩＰサーバ装置の台数の変化後の所定期間において、前記サーバ指定情報に従ってＳＩＰメッセージを振り分ける処理と、
前記所定期間の後に、前記サーバ指定情報を前記記憶装置から消去する処理と、を実行させることを特徴とするメッセージ振り分け方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で論じられる実施態様は、ＳＩＰ（Session Initiation Protocol：セッション開始プロトコル）メッセージを複数のＳＩＰサーバ装置に振り分ける負荷分散に関する。
【背景技術】
【０００２】
ＳＩＰメッセージを振り分けるＳＩＰメッセージ振分装置が知られている。ＳＩＰメッセージ振分装置は、ＳＩＰメッセージからこのＳＩＰメッセージが属するセッションに関する情報であるセッション情報を抽出する。そして、ＳＩＰメッセージ振分装置は、抽出されたセッション情報を用いて、ハッシュ演算を行ってハッシュ値を算出する。続いて、ＳＩＰメッセージ振分装置は、算出されたハッシュ値に応じてＳＩＰメッセージの振り分け先を決定する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−３２７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数のＳＩＰサーバ装置へＳＩＰメッセージを振り分けるプロキシサーバは、同じセッションのＳＩＰメッセージを同じＳＩＰサーバ装置へ振り分けることが要求される。開示の装置及び方法は、ＳＩＰメッセージを複数のＳＩＰサーバに振り分ける負荷分散において、同じセッションのＳＩＰメッセージを同じＳＩＰサーバ装置へ振り分けることを目的とする。
【課題を解決するための手段】
【０００５】
装置の一観点によれば、ＳＩＰクライアントから受信されるＳＩＰメッセージのヘッダに付加されたＳＩＰサーバの識別子を取得する処理と、ＳＩＰクライアントによるセッションを制御する複数のＳＩＰサーバのうち、取得された識別子に対応するＳＩＰサーバに、受信されたＳＩＰメッセージを振り分ける処理と、を実行する制御部を備えることを特徴とするサーバ装置が与えられる。
【０００６】
装置の他の一観点によれば、ＳＩＰクライアントによるセッションを制御するＳＩＰサーバ装置が与えられる。ＳＩＰサーバ装置は、ＳＩＰクライアントへ送信するＳＩＰメッセージのヘッダのうち、ＳＩＰクライアントから送信されるＳＩＰメッセージのヘッダに載せ替えられるヘッダに、ＳＩＰサーバ装置の識別子を付加する処理を実行する制御部を備える。
【０００７】
コンピュータプログラムの一観点によれば、サーバ装置が備える制御部に、ＳＩＰクライアントから受信されるＳＩＰメッセージのヘッダに付加されたＳＩＰサーバの識別子を取得する処理と、ＳＩＰクライアントによるセッションを制御する複数のＳＩＰサーバのうち、取得された識別子に対応するＳＩＰサーバに、受信されたＳＩＰメッセージを振り分ける処理を実行させることを特徴とするコンピュータプログラムが与えられる。
【０００８】
方法の一観点によれば、サーバ装置が備える制御部に、ＳＩＰクライアントから受信されるＳＩＰメッセージのヘッダに付加されたＳＩＰサーバの識別子を取得する処理と、ＳＩＰクライアントによるセッションを制御する複数のＳＩＰサーバのうち、取得された識別子に対応するＳＩＰサーバに、受信されたＳＩＰメッセージを振り分ける処理と、を実行させることを特徴とするメッセージ振り分け方法が与えられる。
【発明の効果】
【０００９】
本件開示のサーバ装置、ＳＩＰサーバ装置又はメッセージ振り分け方法によれば、ＳＩＰメッセージを複数のＳＩＰサーバに振り分ける負荷分散において、同じセッションのＳＩＰメッセージが同じＳＩＰサーバ装置へ振り分けられる。
【図面の簡単な説明】
【００１０】
【図１】通信システムの全体構成例を示す図である。
【図２】振り分けサーバ装置のハードウエア構成の一例を示す図である。
【図３】振り分けサーバ装置の一例の機能ブロック図である。
【図４】ハッシュ演算処理の一例の説明図である。
【図５】振り分け管理テーブルの一例を示す図である。
【図６】ＳＩＰサーバ装置のハードウエア構成の一例を示す図である。
【図７】ＳＩＰサーバ装置の一例の機能ブロック図である。
【図８】テーブル管理処理の一例の説明図である。
【図９】ＩＮＶＩＴＥメッセージ受信時の処理の一例の説明図である。
【図１０】ＡＣＫメッセージ受信時の処理の一例の説明図である。
【図１１】サーバ台数変更時に生じる処理の第１例の説明図である。
【図１２】（Ａ）〜（Ｃ）は、図１１における処理において作成される振り分け管理テーブルの説明図である。
【図１３】サーバ台数変更時に生じる処理の第２例の説明図である。
【図１４】図１３における処理において作成される振り分け管理テーブルの説明図である。
【図１５】サーバ台数変更時に生じる処理の第３例の説明図である。
【図１６】後続メッセージの振り分け処理の一例の説明図である。
【図１７】後続メッセージ受信時に生じる処理の一例の説明図である。
【発明を実施するための形態】
【００１１】
＜１．システム構成例＞
以下、添付する図面を参照して好ましい実施例について説明する。図１は、通信システムの全体構成例を示す図である。通信システム１は、ＩＰネットワーク２及び３と、ＳＩＰクライアント装置４−０〜４−３及び５と、振り分けサーバ装置６と、ＳＩＰサーバ装置７−０〜７−３及び８を有する。ＳＩＰクライアント装置４−０〜４−３及び５は、ＳＩＰを用いて、ＩＰネットワーク３を介して通信を行う。ＳＩＰクライアント装置４−０〜４−３は、ＩＰネットワーク２及び振り分けサーバ装置６を介してＳＩＰサーバ装置７−０〜７−３に接続される。以下の説明においてＳＩＰクライアント装置４−０〜４−３及びＳＩＰサーバ装置７−０〜７−３を、それぞれ総称して「ＳＩＰクライアント装置４」及び「ＳＩＰサーバ装置７」と表記することがある。また、ＳＩＰクライアント装置、振り分けサーバ装置及びＳＩＰサーバ装置を、それぞれ「ＳＩＰクライアント」、「振り分けサーバ」及び「ＳＩＰサーバ」と表記することがある。
【００１２】
振り分けサーバ６は、ＳＩＰクライアント４によるＳＩＰのセッション情報や呼状態を管理しないステートレスプロキシサーバとして動作する。振り分けサーバ６は、ＳＩＰクライアント４からＳＩＰメッセージを受信するプロトコルを終端し、ＳＩＰメッセージを複数のＳＩＰサーバ７間に振り分ける。また、振り分けサーバ６は、ＳＩＰサーバ７からＳＩＰメッセージを受信するプロトコルを終端し、ＳＩＰメッセージをＳＩＰクライアント４へ転送する。ＳＩＰサーバ７及び８は、それぞれＳＩＰクライアント４及び５によるセッションのセッション情報の管理やＳＩＰトランザクションの制御を行い、受信したＳＩＰリクエストに対する応答信号生成を行う。ある実施例において、振り分けサーバ６とＳＩＰサーバ７は、同一の筐体内に設けられてもよい。
【００１３】
＜２．振り分けサーバ装置＞
＜２．１．ハードウエア構成例＞
続いて、振り分けサーバ６の構成について説明する。図２は、振り分けサーバ６のハードウエア構成の一例を示す図である。振り分けサーバ６は、プロセッサ１０と、補助記憶装置１１と、メモリ１２と、記録媒体読取装置１３と、ネットワークインタフェース回路１４を備える。なお、添付する図面においてネットワークインタフェースを「ＮＩＦ」と表記することがある。図２に示すハードウエア構成は、あくまで振り分けサーバ６を実現するハードウエア構成の例示の１つである。本明細書において以下に記載される処理を実行するものであれば、他のどのようなハードウエア構成が採用されてもよい。
【００１４】
プロセッサ１０は、振り分けサーバ６の動作制御や、以下に説明するＳＩＰメッセージの振り分け処理を行う。補助記憶装置１１には、プロセッサ１０にこれらの処理を実行させるためのコンピュータプログラムが格納される。補助記憶装置１１は、コンピュータプログラムを記憶するための不揮発性記憶装置を備える。不揮発性記憶装置は、例えば、読み出し専用メモリ（ROM: Read Only Memory）や、フラッシュメモリ、ハードディスクであってよい。メモリ１２には、プロセッサ１０がコンピュータプログラムを実行する際に使用される各データ及び一時データが格納される。メモリ１２は、ランダムアクセスメモリ（RAM: Random Access Memory）を含んでいてよい。
【００１５】
記録媒体読取装置１３は、コンピュータに読み取り可能な可搬型記録媒体に記憶されたデータを読み取る。記録媒体読取装置１３は、例えばＣＤ（Compact Disc）−ＲＯＭドライブ装置やＤＶＤ（Digital Versatile Disk）−ＲＯＭドライブ装置、フレキシブルディスクドライブ装置、ＣＤ−Ｒ（Compact Disc Recordable）ドライブ装置であってよい。記録媒体読取装置１３は、ＤＶＤ−Ｒ（Digital Versatile Disk Recordable）ドライブ装置、ＭＯ（Magneto-Optical disk）ドライブ装置、フラッシュメモリ装置へのアクセス装置であってもよい。ある実施例では、以下に説明するＳＩＰメッセージの振り分け処理をプロセッサ１０に実行させるコンピュータプログラムは、コンピュータ読み取り可能な可搬型記録媒体に格納されて頒布される。コンピュータプログラムは、記録媒体読取装置１３により可搬型記録媒体から読み取られ、補助記憶装置１１にインストールされる。ネットワークインタフェース回路１４は、振り分けサーバ６とＳＩＰクライアント４との間、及び振り分けサーバ６とＳＩＰサーバ７との間でＳＩＰ信号を送受信するための通信インタフェース回路である。
【００１６】
＜２．２．機能構成＞
続いて、上記ハードウエア構成によって実現される振り分けサーバ６の機能について説明する。図３は、振り分けサーバ６の一例の機能ブロック図である。なお、図３は、以下の説明に関係する機能を中心として示している。振り分けサーバ６は、図示の構成要素以外の他の構成要素を含んでいてよい。
【００１７】
振り分けサーバ６は、ＳＩＰメッセージ受信部２０、ＳＩＰメッセージ送信部２１、ヘッダ取得部２２、ハッシュ演算部２３、サーバ特定部２４及びテーブル管理部２５を備える。ＳＩＰメッセージ受信部２０及びＳＩＰメッセージ送信部２１による下記動作は、図２に示すネットワークインタフェース回路１４が行う。ヘッダ取得部２２、ハッシュ演算部２３、サーバ特定部２４及びテーブル管理部２５の下記動作は、プロセッサ１０が行う。振り分け管理テーブル２６はメモリ１２に格納される。他の実施例では振り分け管理テーブル２６は書き込み可能な補助記憶装置１１に格納されてもよい。
【００１８】
ＳＩＰメッセージ受信部２０は、ＳＩＰクライアント４又はＳＩＰサーバ７からＳＩＰメッセージを受信する。ＳＩＰメッセージ受信部２０は、受信したＳＩＰメッセージの妥当性チェックを行い、振り分けサーバ６内部での処理に適したフォーマットにＳＩＰメッセージを変換するためのデコード処理を行う。ＳＩＰメッセージ送信部２１は、ＳＩＰクライアント４から受信したＳＩＰメッセージを、サーバ特定部２４により特定されたＳＩＰサーバ７に送信する。また、ＳＩＰサーバ７から受信したＳＩＰメッセージをＳＩＰクライアント４へ送信する。
【００１９】
ヘッダ取得部２２は、ＳＩＰメッセージ受信部２０から受け取った情報に基づいて、受信したＳＩＰメッセージの信号種別や、ＳＩＰセッション情報としてＳＩＰメッセージのＴｏヘッダ、Ｆｒｏｍヘッダ、及びＣａｌｌ−ＩＤヘッダに記述された情報を取得する。Ｔｏヘッダには、リクエストメッセージの着信者の識別子が記述される着信者指定ヘッダフィールドである。Ｆｒｏｍヘッダには、リクエストメッセージの生成元の識別子が記述される生成元指定ヘッダフィールドである。また、Ｃａｌｌ−ＩＤヘッダには、連続するセッションで発生するＳＩＰリクエスト及びレスポンスの識別子が記述される。以下の説明において、ＳＩＰメッセージのＣａｌｌ−ＩＤヘッダに指定される識別子を、単に「Ｃａｌｌ−ＩＤ」と表記することがある。
【００２０】
ハッシュ演算部２３は、ヘッダ取得部２２が取得したＣａｌｌ−ＩＤを用いてハッシュ演算を行う。図４は、ハッシュ演算処理の一例の説明図である。なお、以下、図４を参照して説明する一連の動作は複数の手順を含む方法と解釈してよい。この場合に「オペレーション」を「ステップ」と読み替えてもよい。図８〜図１１、図１３、図１５〜図１７の場合も同様である。
【００２１】
いま、Ｃａｌｌ−ＩＤは文字数Ｎの文字列であり、配列変数ｃａｌｌに第（ｉ＋１）番目の文字の文字コードが格納される場合を想定する。変数ｉは配列変数ｃａｌｌの各文字ｃａｌｌ[ｉ]を指定するインデックス変数である。αを、所定の係数とする。例えばαの値は「３１」であってよい。定数ＴＢＬは、ＳＩＰメッセージを振り分けるＳＩＰサーバ７の台数とする。
【００２２】
オペレーションＡＡにおいてハッシュ演算部２３は、変数ｉ及びＸの値をそれぞれ「０」に初期化する。オペレーションＡＢにおいてハッシュ演算部２３は、変数Ｘに、α×Ｘ＋ｃａｌｌ[ｉ]の値を代入する。オペレーションＡＣにおいてハッシュ演算部２３は、変数ｉの値を１つ増加する。
【００２３】
オペレーションＡＤにおいてハッシュ演算部２３は、変数ｉの値が文字数Ｎより小さいか否かを判定する。変数ｉの値が文字数Ｎより小さい場合には（オペレーションＡＤ：Ｙ）処理はオペレーションＡＢに戻る。変数ｉの値が文字数Ｎより小さくない場合には（オペレーションＡＤ：Ｎ）処理はオペレーションＡＤへ進む。オペレーションＡＥにおいてハッシュ演算部２３は、法ＴＢＬで変数Ｘの値を除した剰余（Ｘ  ｍｏｄ  ＴＢＬ）をハッシュ値Ｈとして計算する。
【００２４】
説明の簡単化のために、以下の説明では、Ｃａｌｌ−ＩＤが文字列でなく整数値である例により実施例の説明を行う。例えば、Ｃａｌｌ−ＩＤは、「６」、「７」、「８」、「９」などの整数値によってセッションを識別する。
【００２５】
テーブル管理部２５は、振分け管理テーブル２６の作成や削除、振分け管理テーブル２６へのエントリの登録、削除、検索処理を行う。振分け管理テーブル２６は、振り分けサーバ６がＳＩＰメッセージを振り分けるＳＩＰサーバ７のサーバ台数が変化した場合に、サーバ台数変化前から続くセッションのＳＩＰメッセージを振り分けるＳＩＰサーバ７を一時的に記憶するためのテーブルである。
【００２６】
図５は、振り分け管理テーブル２６の一例を示す図である。振り分け管理テーブル２６は、情報要素「セッション情報」及び「サーバ識別子」を含む。情報要素「セッション情報」は、ＳＩＰメッセージのセッションのＣａｌｌ−ＩＤを示し、情報要素「サーバ識別子」は、振り分けサーバ６がＳＩＰメッセージを振り分けるＳＩＰサーバ７の識別子を示す。例えば、図５に示す例では、Ｃａｌｌ−ＩＤ＝「８」のＳＩＰメッセージは、識別子「０２」のＳＩＰサーバ７に振り分けられることを示し、Ｃａｌｌ−ＩＤ＝「７」のＳＩＰメッセージは、識別子「０１」のＳＩＰサーバ７に振り分けられることを示す。
【００２７】
テーブル管理部２５は、ＳＩＰサーバ７のサーバ台数が変化した場合に、振り分け管理テーブル２６を作成する。テーブル管理部２５は、振り分け管理テーブル２６の生成後の所定長Ｔ１の期間中にのみ、振り分け管理テーブル２６へのエントリを行う。以下の説明において、テーブル管理部２５が振り分け管理テーブル２６へのエントリを行う期間を「エントリ期間Ｔ１」と表記する。
【００２８】
エントリ期間Ｔ１において振り分けサーバ６がＳＩＰクライアント４からセッション確立リクエストであるＩＮＶＩＴＥメッセージを受信した場合、テーブル管理部２５は、このメッセージのＣａｌｌ−ＩＤのエントリを振り分け管理テーブル２６に登録する。エントリの登録の際にテーブル管理部２５は、サーバ台数の変化前のＳＩＰサーバ７のサーバ台数に基づき計算されたハッシュ値により、情報要素「サーバ識別子」のＳＩＰサーバ７の識別子を定める。また、テーブル管理部２５は、サーバ台数の変化前のＳＩＰサーバ７のサーバ台数に基づき計算されたハッシュ値により定まるＳＩＰサーバ７の識別子を、ＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７の識別子として取得する。
【００２９】
エントリ期間Ｔ１は、例えば、ＩＮＶＩＴＥメッセージに対するレスポンスがない場合にＳＩＰクライアント４がＩＮＶＩＴＥメッセージを再送する最大再送間隔よりも長い期間であってよい。このようにエントリ期間Ｔ１を定めることにより、エントリ期間Ｔ１の直前に送信されたＩＮＶＩＴＥメッセージの再送が発生しても、再送されるＩＮＶＩＴＥメッセージのエントリを登録することができる。例えば、ＩＮＶＩＴＥメッセージの最大再送間隔が３２秒である場合にエントリ期間Ｔ１は４０秒であってよい。
【００３０】
テーブル管理部２５は、エントリ期間Ｔ１が経過後の所定長Ｔ２の期間が経過した後に、振り分け管理テーブル２６を削除する。以下の説明において、エントリ期間Ｔ１が経過後の振り分け管理テーブル２６が削除されるまでの期間を「保持期間Ｔ２」と表記する。テーブル管理部２５は、振り分けサーバ６が、保持期間Ｔ２経過前にＳＩＰクライアント４からＡＣＫメッセージを受信した場合に、このメッセージのＣａｌｌ−ＩＤのエントリを振り分け管理テーブル２６から検索する。
【００３１】
ＡＣＫメッセージは、ＩＮＶＩＴＥメッセージの最終応答の確認応答メッセージである。振り分け管理テーブル２６内にエントリが存在する場合には、テーブル管理部２５は、ＡＣＫメッセージのＣａｌｌ−ＩＤのエントリを削除する。エントリ期間Ｔ１経過後〜保持期間Ｔ２経過前に振り分け管理テーブル２６のエントリが空になった場合には、テーブル管理部２５は振り分け管理テーブル２６を削除する。
【００３２】
振り分け管理テーブル２６が存在する間に振り分けサーバ６がＳＩＰクライアント４から、ＩＮＶＩＴＥメッセージを受信した場合に、テーブル管理部２５は、このメッセージのＣａｌｌ−ＩＤのエントリを振り分け管理テーブル２６から検索する。エントリが振り分け管理テーブル２６内に存在する場合には、テーブル管理部２５は、エントリの情報要素「サーバ識別子」の値を、ＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７の識別子として取得する。
【００３３】
保持期間Ｔ２は、ＩＮＶＩＴＥメッセージの最大再送間隔よりも長い期間であってよい。このように保持期間Ｔ２を定めることにより、エントリ期間Ｔ１の満了直前に送信された最初のＩＮＶＩＴＥメッセージの再送が発生しても、前回の送信先のＳＩＰサーバ７の識別子が、ＩＮＶＩＴＥメッセージの再送まで保持される。例えば、ＩＮＶＩＴＥメッセージの最大再送間隔が３２秒である場合に、保持期間Ｔ２は４０秒であってよい。テーブル管理部２５は、振分け管理テーブルへのエントリ期間Ｔ１や保持期間Ｔ２を管理するためのタイマ制御を行う。
【００３４】
サーバ特定部２４は、エントリ期間Ｔ１に受信したＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７を、テーブル管理部２５が取得したＳＩＰサーバ７の識別子により特定する。保持期間Ｔ２に受信したＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤのエントリが振り分け管理テーブル２６にある場合、サーバ特定部２４は、テーブル管理部２５が取得したＳＩＰサーバ７の識別子によりＩＮＶＩＴＥメッセージの振り分け先を特定する。
【００３５】
サーバ特定部２４は、保持期間Ｔ２経過後に受信したＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７を、サーバ台数変更後のＳＩＰサーバ７の台数に基づいてハッシュ演算部２３が算出したハッシュ値Ｈにより特定する。保持期間Ｔ２に受信したＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤのエントリが振り分け管理テーブル２６にない場合や、保持期間Ｔ２に振り分け管理テーブル２６が削除された後も同様である。
【００３６】
サーバ特定部２４は、振り分けサーバ６が、ＩＮＶＩＴＥメッセージに対する最初のレスポンスよりも後に生じるメッセージをＳＩＰクライアント４から受信した場合に、このメッセージのヘッダから、ＳＩＰサーバ７の識別情報を取得する。以下の説明において、ＩＮＶＩＴＥメッセージに対する最初のレスポンスよりも後に生じるメッセージを「後続メッセージ」と表記する。ＩＮＶＩＴＥメッセージに対する最初のレスポンスは、例えば１８０Ｒｉｇｎｇｉｎｇメッセージや、１８１ＣａｌｌＩｓＢｅｉｎｇＦｏｒｗａｒｄメッセージや、１８２Ｑｕｅｕｅｄメッセージや、１８３ＳｅｓｉｏｎＰｒｏｇｒｅｓｓメッセージであってよい。
【００３７】
サーバ特定部２４は、後続メッセージのヘッダから取得したＳＩＰサーバ７の識別情報に基づいて、この後続メッセージを振り分けるＳＩＰサーバ７を特定する。サーバ特定部２４がＳＩＰサーバ７の識別情報を取得するヘッダについては、下記「３．ＳＩＰサーバ装置」の「３．２．機能構成」において説明する。
【００３８】
サーバ特定部２４は、特定されたＳＩＰサーバ７に対応するＩＰアドレスやポート情報を決定し、ＳＩＰメッセージ送信部２１を介してＳＩＰメッセージを、特定したＳＩＰサーバ７に送信する。
【００３９】
＜３．ＳＩＰサーバ装置＞
＜３．１．ハードウエア構成例＞
続いて、ＳＩＰサーバ７の構成について説明する。図６は、ＳＩＰサーバ７のハードウエア構成の一例を示す図である。ＳＩＰサーバ７は、プロセッサ３０と、補助記憶装置３１と、メモリ３２と、記録媒体読取装置３３と、ネットワークインタフェース回路３４を備える。なお、図６に示すハードウエア構成は、あくまでＳＩＰサーバ７を実現するハードウエア構成の例示の１つである。本明細書において以下に記載される処理を実行するものであれば、他のどのようなハードウエア構成が採用されてもよい。
【００４０】
プロセッサ３０は、ＳＩＰサーバ７の動作制御や、ＳＩＰセッション情報管理、ＳＩＰトランザクション制御、ＳＩＰリクエストに対する応答メッセージの作成、及び以下に説明するＳＩＰメッセージのヘッダ変更処理を行う。補助記憶装置３１には、プロセッサ３０にこれらの処理を実行させるためのコンピュータプログラムが格納される。補助記憶装置３１は、コンピュータプログラムを記憶するための不揮発性記憶装置を備える。不揮発性記憶装置は、例えば、読み出し専用メモリや、フラッシュメモリ、ハードディスクであってよい。メモリ３２には、プロセッサ３０がコンピュータプログラムを実行する際に使用される各データ及び一時データが格納される。メモリ３２は、ランダムアクセスメモリを含んでいてよい。
【００４１】
記録媒体読取装置３３は、コンピュータに読み取り可能な可搬型記録媒体に記憶されたデータを読み取る。記録媒体読取装置３３は、例えばＣＤ−ＲＯＭドライブ装置やＤＶＤ−ＲＯＭドライブ装置、フレキシブルディスクドライブ装置、ＣＤ−Ｒドライブ装置や、ＤＶＤ−Ｒドライブ装置、ＭＯドライブ装置、フラッシュメモリ装置へのアクセス装置であってよい。ある実施例では、以下に説明する以下に説明するＳＩＰメッセージのヘッダ変更処理をプロセッサ３０に実行させるコンピュータプログラムは、コンピュータ読み取り可能な可搬型記録媒体に格納されて頒布される。コンピュータプログラムは、記録媒体読取装置３３により可搬型記録媒体から読み取られ、補助記憶装置３１にインストールされる。ネットワークインタフェース回路３４は、ＳＩＰサーバ７と振り分けサーバ６との間、またＳＩＰサーバ７とＩＰネットネットワーク３との間でＳＩＰ信号を送受信するための通信インタフェース回路である。
【００４２】
＜３．２．機能構成＞
続いて、上記ハードウエア構成によって実現されるＳＩＰサーバ７の機能について説明する。図７は、ＳＩＰサーバ７の一例の機能ブロック図である。なお、図７は、以下の説明に関係する機能を中心として示している。ＳＩＰサーバ７は、図示の構成要素以外の他の構成要素を含んでいてよい。
【００４３】
ＳＩＰサーバ７は、ＳＩＰメッセージ受信部４０、ＳＩＰメッセージ送信部４１、呼処理制御４２、及びヘッダ処理部４４を備える。ＳＩＰメッセージ受信部４０及びＳＩＰメッセージ送信部４１による下記動作は、図６に示すネットワークインタフェース回路３４が行う。呼処理制御４２及びヘッダ処理部４４の下記動作は、プロセッサ３０が行う。セッション情報４３はメモリ３２に格納される。他の実施例ではセッション情報４３は書き込み可能な補助記憶装置３１に格納されてもよい。
【００４４】
ＳＩＰメッセージ受信部４０は、振り分けサーバ６又はＩＰネットネットワーク３からＳＩＰメッセージを受信する。ＳＩＰメッセージ受信部４０は、受信したＳＩＰメッセージの妥当性チェックを行い、ＳＩＰサーバ７内部での処理に適したフォーマットにＳＩＰメッセージを変換するためのデコード処理を行う。ＳＩＰメッセージ送信部４１は、呼処理制御４からの指示に応じて、振り分けサーバ６から受信したＳＩＰメッセージを、ＩＰネットネットワーク３へ送信する。また、ＳＩＰメッセージ送信部４１は、呼処理制御４からの指示に応じて、ＩＰネットネットワーク３から受信したＳＩＰメッセージを、振り分けサーバ６を介してＳＩＰクライアント４へ送信する。
【００４５】
呼処理制御４２は、ＳＩＰクライアント４によるＳＩＰのセッションのセッション情報の管理やＳＩＰトランザクションの制御を行い、受信したＳＩＰリクエストに対する応答信号生成を行う。
【００４６】
ヘッダ処理部４４は、ＳＩＰクライアント４へ転送されるＳＩＰメッセージをＳＩＰサーバ７が振り分けサーバ６へ送信する場合に、このＳＩＰメッセージのヘッダフィールドのタグにＳＩＰサーバ７の識別情報を付加する。ＳＩＰサーバ７の識別情報が付加されるヘッダは、ＳＩＰメッセージを受信したＳＩＰクライアント４が、このＳＩＰメッセージが送信されるセッション内のＳＩＰクライアント４からの送信メッセージへ載せ替えるヘッダである。
【００４７】
例えば、ＳＩＰクライアント４へ転送されるＳＩＰリクエストをＳＩＰサーバ７が振り分けサーバ６へ送信する場合に、ヘッダ処理部４４は、ＳＩＰメッセージのＦｒｏｍヘッダフィールドのタグに、ＳＩＰサーバ７の識別情報を付加してよい。ＳＩＰクライアント４は、ＳＩＰリクエストに続くＳＩＰメッセージを送信する際に、ＳＩＰリクエストのＦｒｏｍヘッダフィールドのタグを、送信メッセージのＦｒｏｍヘッダフィールドへ載せ替える。
【００４８】
また、例えば、ＳＩＰクライアント４へ転送されるＳＩＰレスポンスをＳＩＰサーバ７が振り分けサーバ６へ送信する場合に、ヘッダ処理部４４は、ＳＩＰメッセージのＴｏヘッダフィールドのタグに、ＳＩＰサーバ７の識別情報を付加してよい。ＳＩＰクライアント４は、ＳＩＰレスポンスに続くＳＩＰメッセージを送信する際に、ＳＩＰレスポンスのＴｏヘッダフィールドのタグを、送信メッセージのＴｏヘッダフィールドへ載せ替える。
【００４９】
また、PUBLISH(Initial)レスポンスの受信クライアントがSTP-ETagヘッダ情報を、PUBLISH(Modify)リクエストのSTP-IF-Matchヘッダに載せ替えるのと同様に、ＳＩＰクライアント４が載せ替えるヘッダを含むようにＳＩＰメッセージのヘッダを拡張してもよい。
【００５０】
ＳＩＰサーバ７から送信されたＳＩＰメッセージが他のＳＩＰサーバ８を介してＳＩＰクライアント５に受信されると、同じセッションで相手方のＳＩＰクライアント５からＳＩＰクライアント４へ送信されるＳＩＰメッセージは同じＳＩＰサーバ７を経由する。したがって、上述のようにＳＩＰサーバ７の識別情報の付加を、ＩＮＶＩＴＥメッセージへの最初のレスポンスから行うことにより、後続メッセージのヘッダに、最初のＩＮＶＩＴＥメッセージが振り分けられたＳＩＰサーバ７の識別情報を含めることができる。
【００５１】
振り分けサーバ６のサーバ特定部２４は、ＳＩＰサーバ７のヘッダ処理部４４がＳＩＰサーバ７の識別情報を付加したＳＩＰメッセージから後続メッセージに載せ替えられたＳＩＰサーバ７の識別情報を取得する。サーバ特定部２４は、取得した識別情報に基づいて、後続メッセージを振り分けるＳＩＰサーバ７を特定する。このようにして振り分けサーバ６は、最初のＩＮＶＩＴＥメッセージが振り分けられたＳＩＰサーバ７へ、後続メッセージを振り分けることができる。
【００５２】
＜４．セッション確立リクエストの振り分け処理＞
続いて、振り分けサーバ６によるＩＮＶＩＴＥメッセージの振り分け処理について説明する。
【００５３】
＜４．１．テーブル管理処理＞
図８は、テーブル管理部２５による振分け管理テーブル２６の管理処理の一例の説明図である。オペレーションＢＡにおいてテーブル管理部２５は、ＳＩＰサーバ７のサーバ台数が変化したか否かを判断する。サーバ台数が変化した場合には（オペレーションＢＡ：Ｙ）処理はオペレーションＢＢへ進む。サーバ台数が変化しない場合には（オペレーションＢＡ：Ｎ）処理はオペレーションＢＡへ戻る。
【００５４】
オペレーションＢＢにおいてテーブル管理部２５は、変更前の台数をメモリ１２に記憶する。オペレーションＢＣにおいてテーブル管理部２５は、振り分け管理テーブル２６を作成する。オペレーションＢＤにおいてテーブル管理部２５は、エントリ期間Ｔ１の経過を監視する第１監視タイマを起動する。
【００５５】
オペレーションＢＥにおいてテーブル管理部２５は、エントリ期間Ｔ１が経過したか否かを判断する。エントリ期間Ｔ１が経過した場合には（オペレーションＢＥ：Ｙ）テーブル管理部２５は、振り分け管理テーブル２６へのエントリを停止し、処理をオペレーションＢＦへ進める。エントリ期間Ｔ１が経過しない場合には（オペレーションＢＥ：Ｎ）処理はオペレーションＢＥへ戻る。オペレーションＢＦにおいてテーブル管理部２５は、保持期間Ｔ２の経過を監視する第１監視タイマを起動する。
【００５６】
オペレーションＢＧにおいてテーブル管理部２５は、保持期間Ｔ２が経過したか否かを判断する。保持期間Ｔ２が経過した場合には（オペレーションＢＧ：Ｙ）処理はオペレーションＢＩへ進む。エントリ期間Ｔ２が経過しない場合には（オペレーションＢＧ：Ｎ）処理はオペレーションＢＨへ進む。
【００５７】
オペレーションＢＨにおいてテーブル管理部２５は、振り分け管理テーブル２６にエントリが存在しているか否かを判断する。振り分け管理テーブル２６にエントリが存在している場合には（オペレーションＢＨ：Ｙ）処理はオペレーションＢＧへ戻る。振り分け管理テーブル２６にエントリが存在しない場合には（オペレーションＢＨ：Ｎ）処理はオペレーションＢＩへ進む。オペレーションＢＩにおいてテーブル管理部２５は、振り分け管理テーブル２６を削除する。
【００５８】
＜４．２．ＩＮＶＩＴＥメッセージ受信時の処理＞
次に、ＩＮＶＩＴＥメッセージを受信した際の振り分けサーバ６の処理について説明する。図９は、ＩＮＶＩＴＥメッセージ受信時の処理の一例の説明図である。オペレーションＣＡにおいてテーブル管理部２５は、振り分け管理テーブル２６が存在するか否かを判断する。振り分け管理テーブル２６が存在する場合には（オペレーションＣＡ：Ｙ）処理はオペレーションＣＢへ進む。振り分け管理テーブル２６が存在しない場合には（オペレーションＣＡ：Ｎ）処理はオペレーションＣＩへ進む。
【００５９】
オペレーションＣＢにおいてテーブル管理部２５は、ＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤのエントリが、振り分け管理テーブル２６に存在しているか否かを判断する。振り分け管理テーブル２６にエントリが存在している場合には（オペレーションＣＢ：Ｙ）処理はオペレーションＣＣへ進む。振り分け管理テーブル２６にエントリが存在しない場合には（オペレーションＣＢ：Ｎ）処理はオペレーションＣＤへ進む。
【００６０】
オペレーションＣＣにおいてテーブル管理部２５は、振り分け管理テーブル２６内にあるＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤのエントリから、ＩＮＶＩＴＥメッセージの送信先のＳＩＰサーバ７の識別子を取得する。サーバ特定部２４は、取得された識別子のＳＩＰサーバ７へＩＮＶＩＴＥメッセージを送信する。その後に処理はオペレーションＣＡに戻る。
【００６１】
オペレーションＣＤにおいてテーブル管理部２５は、エントリ期間Ｔ１が経過したか否かを判断する。エントリ期間Ｔ１が経過していない場合には（オペレーションＣＤ：Ｙ）処理はオペレーションＣＥへ進む。エントリ期間Ｔ１が経過していない場合には（オペレーションＣＤ：Ｎ）処理はオペレーションＣＩへ進む。
【００６２】
オペレーションＣＥにおいてハッシュ演算部２３は、サーバ台数の変化前のＳＩＰサーバ７のサーバ台数と受信したＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤに基づいてハッシュ値を計算する。オペレーションＣＦにおいてサーバ特定部２４は、オペレーションＣＥで計算されたハッシュ値に基づいて定まるＳＩＰサーバ７の識別子により、ＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７を特定する。
【００６３】
オペレーションＣＧにおいてサーバ特定部２４は、特定されたＳＩＰサーバ７にＩＮＶＩＴＥメッセージを送信する。オペレーションＣＨにおいてテーブル管理部２５は、ＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤと、オペレーションＣＥで計算されたハッシュ値に基づいて定まるＳＩＰサーバ７の識別子のエントリを、振り分け管理テーブル２６に登録する。その後に処理は終了する。なお、オペレーションＣＨは、オペレーションＣＦ及びＣＧのいずれかの処理よりも先に実行されてもよい。
【００６４】
オペレーションＣＩにおいてハッシュ演算部２３は、サーバ台数の変化後のＳＩＰサーバ７のサーバ台数と受信したＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤに基づいてハッシュ値を計算する。オペレーションＣＪにおいてサーバ特定部２４は、オペレーションＣＩで計算されたハッシュ値に基づいて定まるＳＩＰサーバ７の識別子により、ＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７を特定する。オペレーションＣＫにおいてサーバ特定部２４は、特定されたＳＩＰサーバ７にＩＮＶＩＴＥメッセージを送信する。その後に処理は終了する。
【００６５】
＜４．３．ＡＣＫメッセージ受信時の処理＞
次に、ＡＣＫメッセージを受信した際の振り分けサーバ６の処理について説明する。図１０は、ＡＣＫメッセージ受信時の処理の一例の説明図である。オペレーションＤＡにおいてテーブル管理部２５は、振り分け管理テーブル２６が存在するか否かを判断する。振り分け管理テーブル２６が存在する場合には（オペレーションＤＡ：Ｙ）処理はオペレーションＤＢへ進む。振り分け管理テーブル２６が存在しない場合には（オペレーションＤＡ：Ｎ）処理はオペレーションＤＤへ進む。
【００６６】
オペレーションＤＢにおいてテーブル管理部２５は、ＡＣＫメッセージのＣａｌｌ−ＩＤのエントリが、振り分け管理テーブル２６に存在しているか否かを判断する。振り分け管理テーブル２６にエントリが存在している場合には（オペレーションＤＢ：Ｙ）処理はオペレーションＤＣへ進む。振り分け管理テーブル２６にエントリが存在しない場合には（オペレーションＤＢ：Ｎ）処理はオペレーションＤＤへ進む。
【００６７】
オペレーションＤＣにおいてテーブル管理部２５は、ＡＣＫメッセージのＣａｌｌ−ＩＤのエントリを振り分け管理テーブル２６から削除する。その後に処理はオペレーションＤＤへ進む。オペレーションＤＤにおいてサーバ特定部２４は、下記「５．２．振り分けサーバ装置」に後述する後続メッセージの振り分け処理によって、ＡＣＫメッセージの振り分け処理を行う。
【００６８】
＜４．４．１．サーバ台数変更時に生じる処理の第１例＞
続いて、図１１〜１５を参照してサーバ台数変更時におけるＩＮＶＩＴＥメッセージの振り分け処理について説明する。いずれの例でも、ＳＩＰサーバ７の台数が３台から４台へ変化した場合を想定する。また、説明の簡単化のため、ＳＩＰメッセージを振り分けるＳＩＰサーバ７を識別するハッシュ値Ｈは、「Ｈ＝Ｃａｌｌ−ＩＤ  ｍｏｄ  サーバ台数」により定める。また、ＳＩＰサーバ７−０〜７−３の識別子は、それぞれ「００」、「０１」、「０２」及び「０３」であり、それぞれハッシュ値「０」、「１」、「２」及び「３」に対応する。
【００６９】
図１１は、サーバ台数変更時に生じる処理の第１例の説明図である。オペレーションＥＡにおいてＳＩＰクライアント４−０は、Ｃａｌｌ−ＩＤの値が「８」である最初のＩＮＶＩＴＥメッセージを振り分けサーバ６へ送信する。この時点で、ＳＩＰサーバ７の台数が３であるため、ハッシュ値は（Ｈ＝８  ｍｏｄ  ３＝２）となる。オペレーションＥＢにおいて振り分けサーバ６は、オペレーションＥＡで算出したハッシュ値２に対応するＳＩＰサーバ７−２へＩＮＶＩＴＥメッセージを送信する。
【００７０】
オペレーションＥＣにおいて、振り分けサーバ６がＳＩＰメッセージを振り分けるＳＩＰサーバ７の台数が３台から４台に変化する。サーバ台数の変化を検出した振り分けサーバ６は、オペレーションＥＤにおいて振り分け管理テーブル２６を作成する。この時点における振り分け管理テーブル２６の内容を図１２の（Ａ）に示す。この時点では、振り分け管理テーブル２６にはまだエントリが存在しない。また、振り分けサーバ６は、第１監視タイマを起動する。
【００７１】
オペレーションＥＥにおいてＳＩＰクライアント４−０は、最初のＩＮＶＩＴＥメッセージに対する再送のＩＮＶＩＴＥメッセージを振り分けサーバ６へ送信する。再送のＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤの値は、最初のＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤの値「８」と同じである。振り分けサーバ６は、受信した再送のＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤ「８」のエントリが振り分け管理テーブル２６に登録されているか否かを判断する。
【００７２】
この時点では、Ｃａｌｌ−ＩＤ「８」のエントリが振り分け管理テーブル２６に登録されておらず、且つエントリ期間Ｔ１内であるので、振り分けサーバ６は、Ｃａｌｌ−ＩＤ「８」のエントリを振り分け管理テーブル２６に登録する。その際、振り分けサーバ６は、サーバ台数の変化前のＳＩＰサーバ７のサーバ台数に基づき計算されたハッシュ値により、情報要素「サーバ識別子」のＳＩＰサーバ７の識別子を定める。登録されるＳＩＰサーバ７の識別子は、最初のＩＮＶＩＴＥメッセージを振り分けたＳＩＰサーバ７−２の識別子「０２」と同じになる。この時点における振り分け管理テーブル２６の内容を図１２の（Ｂ）に示す。振り分け管理テーブル２６には、セッション情報「８」及びサーバ識別子「０２」のエントリが登録される。オペレーションＥＦにおいて振り分けサーバ６は、登録した識別子「０２」のＳＩＰサーバ７−２へ再送のＩＮＶＩＴＥメッセージを送信する。このため、再送のＩＮＶＩＴＥメッセージは、最初のＩＮＶＩＴＥメッセージを振り分けたＳＩＰサーバ７−２に振り分けられる。
【００７３】
その後、オペレーションＥＧにおいてエントリ期間Ｔ１が満了し、振り分けサーバ６は、第２監視タイマを起動する。エントリ期間Ｔ１満了後は、振り分けサーバ６は、振り分け管理テーブル２６への新たなエントリの登録は行わない。オペレーションＥＨにおいてＳＩＰクライアント４−０は、最初のＩＮＶＩＴＥメッセージに対する再送のＩＮＶＩＴＥメッセージを振り分けサーバ６へ送信する。再送のＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤの値は、最初のＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤの値「８」と同じである。振り分けサーバ６は、再送のＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤ「８」のエントリが振り分け管理テーブル２６に登録されているか否かを判断する。
【００７４】
この時点では、Ｃａｌｌ−ＩＤ「８」のエントリが振り分け管理テーブル２６に登録されているため、振り分けサーバ６は再送のＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７−２の識別子「０２」を取得する。オペレーションＥＩにおいて振り分けサーバ６は、取得した識別子「０２」のＳＩＰサーバ７−２へ再送のＩＮＶＩＴＥメッセージを送信する。このため、再送のＩＮＶＩＴＥメッセージは、最初のＩＮＶＩＴＥメッセージを振り分けたＳＩＰサーバ７−２に振り分けられる。
【００７５】
オペレーションＥＪにおいてＳＩＰクライアント４−０は、最初のＩＮＶＩＴＥメッセージと同じセッション情報を持つＡＣＫメッセージを振り分けサーバ６へ送信する。ＡＣＫメッセージのＣａｌｌ−ＩＤの値は、最初のＩＮＶＩＴＥメッセージと同様に「８」である。振り分けサーバ６は、受信したＡＣＫメッセージのＣａｌｌ−ＩＤ「８」のエントリが振り分け管理テーブル２６に登録されているか否かを判断する。この時点では、Ｃａｌｌ−ＩＤ「８」のエントリが振り分け管理テーブル２６にあるため、振り分けサーバ６はＣａｌｌ−ＩＤ「８」のエントリを削除する。この時点における振り分け管理テーブル２６の内容を図１２の（Ｃ）に示す。この時点では、振り分け管理テーブル２６は空になる。
【００７６】
オペレーションＥＫにおいて振り分けサーバ６は、後続メッセージであるＡＣＫメッセージを、上記「３．ＳＩＰサーバ装置」の「３．２．機能構成」において説明した後続メッセージの振り分け処理によってＳＩＰサーバ７−２に振り分ける。オペレーションＥＬにおいて振り分けサーバ６は、振り分け管理テーブル２６が空になったことを検出したために、振り分け管理テーブル２６を削除する。オペレーションＥＭにおいて保持期間Ｔ２が満了する。以降は、振り分け管理テーブル２６が存在しないため、振り分けサーバ６は、受信したＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７を、変更後のサーバ台数「４」によるハッシュ値によって決定する。
【００７７】
＜４．４．２．サーバ台数変更時に生じる処理の第２例＞
図１３は、サーバ台数変更時に生じる処理の第２例の説明図である。このケースでは、サーバ台数変更後のエントリ期間Ｔ１の間に最初のＩＮＶＩＴＥメッセージが生じる。
【００７８】
オペレーションＦＡにおいて振り分けサーバ６がＳＩＰメッセージを振り分けるＳＩＰサーバ７の台数が３台から４台に変化する。サーバ台数の変化を検出した振り分けサーバ６は、オペレーションＦＢにおいて振り分け管理テーブル２６を作成する。振り分けサーバ６は、第１監視タイマを起動する。
【００７９】
オペレーションＦＣにおいてＳＩＰクライアント４−１は、Ｃａｌｌ−ＩＤの値が「７」である最初のＩＮＶＩＴＥメッセージを振り分けサーバ６へ送信する。この時点では、Ｃａｌｌ−ＩＤ「７」のエントリが振り分け管理テーブル２６に登録されておらず、且つエントリ期間Ｔ１内である。振り分けサーバ６は、最初のＩＮＶＩＴＥメッセージと再送のＩＮＶＩＴＥメッセージを区別せずに、Ｃａｌｌ−ＩＤ「７」のエントリを振り分け管理テーブル２６に登録する。その際、振り分けサーバ６は、サーバ台数の変化前のＳＩＰサーバ７のサーバ台数「３」に基づき計算されたハッシュ値により、情報要素「サーバ識別子」のＳＩＰサーバ７の識別子を定める。ハッシュ値は（Ｈ＝７  ｍｏｄ  ３＝１）となる。登録されるＳＩＰサーバ７の識別子は、ハッシュ値「１」に対応する「０１」である。振り分けサーバ６は、Ｃａｌｌ−ＩＤ「７」及びサーバ識別子「０１」のエントリを振り分け管理テーブル２６に登録する。この時点における振り分け管理テーブル２６の内容を図１４に示す。オペレーションＦＤにおいて振り分けサーバ６は、登録した識別子「０１」のＳＩＰサーバ７−１へ最初のＩＮＶＩＴＥメッセージを送信する。
【００８０】
その後、オペレーションＦＥにおいてエントリ期間Ｔ１が満了し、振り分けサーバ６は、第２監視タイマを起動する。エントリ期間Ｔ１満了後は、振り分けサーバ６は、振り分け管理テーブル２６への新たなエントリの登録は行わない。オペレーションＦＦにおいてＳＩＰクライアント４−１は、最初のＩＮＶＩＴＥメッセージに対する再送のＩＮＶＩＴＥメッセージを振り分けサーバ６へ送信する。再送のＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤの値は、最初のＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤの値「７」と同じである。振り分けサーバ６は、再送のＩＮＶＩＴＥメッセージのＣａｌｌ−ＩＤ「７」のエントリが振り分け管理テーブル２６に登録されているか否かを判断する。
【００８１】
この時点では、Ｃａｌｌ−ＩＤ「７」のエントリが振り分け管理テーブル２６に登録されているため、振り分けサーバ６は再送のＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７−１の識別子「０１」を取得する。オペレーションＦＧにおいて振り分けサーバ６は、取得した識別子「０１」のＳＩＰサーバ７−１へ再送のＩＮＶＩＴＥメッセージを送信する。このため、再送のＩＮＶＩＴＥメッセージは、最初のＩＮＶＩＴＥメッセージを振り分けたＳＩＰサーバ７−１に振り分けられる。
【００８２】
オペレーションＦＨにおいて保持期間Ｔ２が満了したことを検出した振り分けサーバ６は、振り分け管理テーブル２６を削除する。以降は、振り分け管理テーブル２６が存在しないため、振り分けサーバ６は、受信したＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７を、変更後のサーバ台数「４」によるハッシュ値によって決定する。
【００８３】
＜４．４．３．サーバ台数変更時に生じる処理の第３例＞
図１５は、サーバ台数変更時に生じる処理の第３例の説明図である。このケースでは、保持期間Ｔ２の間に最初のＩＮＶＩＴＥメッセージが生じる。
【００８４】
オペレーションＧＡにおいて振り分けサーバ６がＳＩＰメッセージを振り分けるＳＩＰサーバ７の台数が３台から４台に変化する。サーバ台数の変化を検出した振り分けサーバ６は、オペレーションＧＢにおいて振り分け管理テーブル２６を作成する。振り分けサーバ６は、第１監視タイマを起動する。その後、オペレーションＧＣにおいてエントリ期間Ｔ１が満了し、振り分けサーバ６は、第２監視タイマを起動する。エントリ期間Ｔ１満了後は、振り分けサーバ６は、振り分け管理テーブル２６への新たなエントリの登録は行わない。
【００８５】
オペレーションＧＤにおいてＳＩＰクライアント４−２は、Ｃａｌｌ−ＩＤの値が「９」である最初のＩＮＶＩＴＥメッセージを振り分けサーバ６へ送信する。この時点では、Ｃａｌｌ−ＩＤ「９」のエントリが振り分け管理テーブル２６に登録されておらず、且つエントリ期間Ｔ１は満了している。振り分けサーバ６は、サーバ台数の変化後のＳＩＰサーバ７のサーバ台数「４」に基づき計算されたハッシュ値により、ＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７を決定する。ハッシュ値は（Ｈ＝９  ｍｏｄ  ４＝１）となる。ＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７の識別子は、ハッシュ値「１」に対応する「０１」である。オペレーションＧＥにおいて振り分けサーバ６は、識別子「０１」のＳＩＰサーバ７−１へ最初のＩＮＶＩＴＥメッセージを送信する。
【００８６】
オペレーションＧＦにおいて振り分けサーバ６は、空の振り分け管理テーブル２６を削除する。オペレーションＧＧおいて保持期間Ｔ２が満了する。振り分け管理テーブル２６が存在しないため、振り分けサーバ６は、受信したＩＮＶＩＴＥメッセージを振り分けるＳＩＰサーバ７を、変更後のサーバ台数「４」によるハッシュ値によって決定する。
【００８７】
＜５．後続メッセージの振り分け処理＞
続いて、振り分けサーバ６及びＳＩＰサーバ７による後続メッセージの振り分け処理について説明する。
【００８８】
＜５．１．ＳＩＰサーバ装置における処理＞
上述のとおり、ＳＩＰサーバ７は、ＳＩＰクライアント４へ転送されるＳＩＰメッセージを振り分けサーバ６へ送信する際、このメッセージのヘッダのうち、ＳＩＰクライアント４からの送信メッセージに載せ替えられるタグにＳＩＰサーバ７の識別情報を加える。
【００８９】
本実施例では、ＳＩＰサーバ７は、ＳＩＰリクエストを振り分けサーバ６へ送信する場合に、ＳＩＰメッセージのＦｒｏｍヘッダフィールドのタグに、ＳＩＰサーバ７の識別情報を付加してよい。また、ＳＩＰサーバ７は、ＳＩＰレスポンスを振り分けサーバ６へ送信する場合に、ＳＩＰメッセージのＴｏヘッダフィールドのタグに、ＳＩＰサーバ７の識別情報を付加してよい。
【００９０】
ＳＩＰサーバ７−０によって、ＩＮＶＩＴＥメッセージのレスポンスの一例である１８０ＲｉｎｇｉｎｇメッセージのＴｏヘッダフィールドのタグに、ＳＩＰサーバ７−０の識別子「００」を加えられた例を以下に示す。
【００９１】
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@example.com>;tag=9fxced76sl
To: Bob <sip:bob@example.com>;tag=8321234300
Call-ID: 6
CSeq: 1 INVITE
Contact: <sip:bob@example.com;transport=udp>
Content-Length: 0
【００９２】
上記の例では、Ｔｏヘッダフィールドのタグ「tag=8321234300」の下２桁として、ＳＩＰサーバ７−０の識別子「００」が付加される。
【００９３】
ＳＩＰリクエストを受信したＳＩＰクライアント４は、ＳＩＰリクエストの後の後続メッセージを送信する際に、ＳＩＰリクエストのＦｒｏｍヘッダフィールドのタグを、ＳＩＰリクエストと同じセッションの後続メッセージのＦｒｏｍヘッダフィールドへ載せ替える。また、ＳＩＰレスポンスを受信したＳＩＰクライアント４は、ＳＩＰレスポンスと同じセッションの後続メッセージを送信する際に、ＳＩＰレスポンスのＴｏヘッダフィールドのタグを、後続メッセージのＴｏヘッダフィールドへ載せ替える。
【００９４】
ＳＩＰクライアント４とのセッションに接続する相手方のＳＩＰクライアントから送信されるＳＩＰメッセージは、ＳＩＰクライアント４から送信されるＳＩＰメッセージが経由するＳＩＰサーバ７を経由する。したがって、ＩＮＶＩＴＥメッセージへの最初のレスポンスからＳＩＰサーバ７の識別情報の付加を行うことにより、後続メッセージのヘッダに、最初のＩＮＶＩＴＥメッセージが振り分けられたＳＩＰサーバ７の識別情報を含めることができる。
【００９５】
ＳＩＰクライアント４によって、後続メッセージの一例であるＢｙｅメッセージのＴｏヘッダフィールドのタグに、ＳＩＰサーバ７−０の識別子「００」を加えられた例を以下に示す。
【００９６】
BYE sip:alice@example.com SIP/2.0
Via: SIP/2.0/UDP example.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=9fxced76sl
To: Bob <sip:bob@example.com>;tag=8321234300
Call-ID:6
CSeq: 1 BYE
Content-Length: 0
【００９７】
上記の例では、Ｔｏヘッダフィールドのタグとして、ＳＩＰサーバ７−０によってＳＩＰサーバ７−０の識別子「００」が下２桁に付加された「tag=8321234300」が載せ替えられている。
【００９８】
＜５．２．振り分けサーバ装置における処理＞
上記の通り、ＳＩＰクライアント４から振り分けサーバ６に送信される後続メッセージがＳＩＰリクエストである場合、そのＴｏヘッダフィールドのタグに最初のＩＮＶＩＴＥメッセージが振り分けられたＳＩＰサーバ７の識別情報が付加されている。また同様にＳＩＰクライアント４から振り分けサーバ６に送信される後続メッセージがＳＩＰレスポンスである場合、そのＦｒｏｍヘッダフィールドのタグに最初のＩＮＶＩＴＥメッセージが振り分けられたＳＩＰサーバ７の識別情報が付加されている。振り分けサーバ６のサーバ特定部２４は、これらのタグに付加されているＳＩＰサーバ７の識別情報に従って、後続メッセージを振り分けるＳＩＰサーバ７を決定する。
【００９９】
図１６は、後続メッセージの振り分け処理の一例の説明図である。オペレーションＨＡにおいてサーバ特定部２４は、受信した後続メッセージの方路を判断する。すなわち、サーバ特定部２４は、後続メッセージがＳＩＰサーバ７へ向かうメッセージであるか、後続メッセージがＳＩＰサーバ７から受信されるメッセージであるかを判断する。後続メッセージがＳＩＰサーバ７へ向かうメッセージである場合には（オペレーションＨＡ：Ｙ）処理はオペレーションＨＢへ進む。後続メッセージがＳＩＰサーバ７へ向かうメッセージでない場合には（オペレーションＨＡ：Ｎ）処理はオペレーションＨＦへ進む。
【０１００】
オペレーションＨＢにおいてサーバ特定部２４は、受信したメッセージの種別を判断する。受信したメッセージがリクエストである場合には（オペレーションＨＢ：Ｙ）処理はオペレーションＨＣへ進む。受信したメッセージがレスポンスである場合には（オペレーションＨＢ：Ｎ）処理はオペレーションＨＤへ進む。
【０１０１】
オペレーションＨＣにおいてサーバ特定部２４は、受信したメッセージのＴｏヘッダフィールドのタグから、受信したメッセージを振り分けるＳＩＰサーバ７の識別情報を取得する。その後処理はオペレーションＨＥへ進む。オペレーションＨＤにおいてサーバ特定部２４は、受信したメッセージのＦｒｏｍヘッダフィールドのタグから、受信したメッセージを振り分けるＳＩＰサーバ７の識別情報を取得する。その後処理はオペレーションＨＥへ進む。
【０１０２】
オペレーションＨＥにおいてサーバ特定部２４は、取得された識別情報によって特定されるＳＩＰサーバ７へ受信メッセージを振り分ける。その後処理は終了する。一方で、オペレーションＨＦにおいてＳＩＰメッセージ送信部２１は、受信したメッセージをＳＩＰクライアント４に送信する。その後に処理は終了する。
【０１０３】
続いて、図１７を参照して後続メッセージ受信時に生じる処理の例を説明する。オペレーションＩＡにおいてＳＩＰクライアント４−２は、Ｃａｌｌ−ＩＤの値が「６」であるＩＮＶＩＴＥメッセージを振り分けサーバ６へ送信する。この時点で、ＳＩＰサーバ７の台数が３であるため、ハッシュ値は（Ｈ＝６  ｍｏｄ  ３＝０）となる。オペレーションＩＢにおいて振り分けサーバ６は、オペレーションＩＡで算出したハッシュ値０に対応するＳＩＰサーバ７−０へＩＮＶＩＴＥメッセージを送信する。
【０１０４】
オペレーションＩＣにおいてＳＩＰサーバ７−０は、ＩＮＶＩＴＥに対するレスポンスメッセージである１８０ＲｉｎｇｉｎｇメッセージのＴｏヘッダフィールドのタグに、ＳＩＰサーバ７−０の識別子「００」を付加してから振り分けサーバ６へ送信する。オペレーションＩＤにおいて振り分けサーバ６は、ＳＩＰサーバ７から受信した１８０ＲｉｎｇｉｎｇメッセージをＳＩＰクライアント４−２へ送信する。
【０１０５】
その後、オペレーションＩＥにおいてＳＩＰクライアント４−２は、Ｃａｌｌ−ＩＤの値が「６」であるＢＹＥメッセージを振り分けサーバ６へ送信する。この際に、ＳＩＰクライアント４−２は、ＳＩＰサーバ７−０が、メッセージに付加したＳＩＰサーバ７−０の識別子「００」を、ＢＹＥメッセージのＴｏヘッダフィールドのタグに載せ替える。オペレーションＩＦにおいて振り分けサーバ６は、受信したＢＹＥメッセージのＴｏヘッダフィールドに設定されている識別子「００」に対応するＳＩＰサーバ７−０へＢＹＥメッセージを送信する。
【０１０６】
＜６．効果＞
本実施例の効果を以下に示す。
（１）振り分けサーバ６は、受信した後続メッセージのヘッダのタグに記述されたＳＩＰサーバ７の識別子によって、後続メッセージを振り分けるＳＩＰサーバ７を決定する。このため、参照することによって振分けサーバ６にて、セッション情報や振分け管理テーブルを保持することなく、ＩＮＶＩＴＥメッセージと同じセッションの後続メッセージを、ＩＮＶＩＴＥメッセージを振り分けたＳＩＰサーバ７に転送することができる。
【０１０７】
（２）振り分けサーバ６は、ハッシュ演算をすることなく後続メッセージを振り分けるサーバ装置７を特定することができるため、振り分けサーバ６の負荷が低減される。
【０１０８】
（３）振分けサーバ６は、ＳＩＰサーバ７の台数変更があった場合でも、セッション情報や振分け管理テーブルを保持することなく、再送のＩＮＶＩＴＥメッセージを最初のＩＮＶＩＴＥメッセージと同じＳＩＰサーバ７に振り分けることが可能となる。
【０１０９】
（４）このように振分けサーバ６は、セッション情報や振分け管理テーブルを保持しなくて済むため、メモリ領域へのデータ参照・更新処理やメモリアクセス時の排他処理などにより処理能力が減殺されることが低減される。また振分けサーバ６が冗長化されていても、セッション情報や振分け管理テーブルの同期処理が不要なため、このような同期処理によって処理能力が減殺されることが低減される。
【０１１０】
なお、振分けサーバ６は、一時的に振り分け管理テーブル２６を参照してＳＩＰメッセージの振り分け先を決定するが、振り分け管理テーブル２６の参照はＳＩＰサーバ７の台数変更後の所定期間に限定される。このため、メモリ領域へのデータ参照・更新処理やメモリアクセス時の排他処理や、メモリの同期処理を行う期間が限定されるため、振分けサーバ６の処理能力の減殺が低減される。
【０１１１】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
ＳＩＰ（Session Initiation Protocol）クライアントから受信されるＳＩＰメッセージのヘッダに付加されたＳＩＰサーバの識別子を取得する処理と、
前記ＳＩＰクライアントによるセッションを制御する複数のＳＩＰサーバのうち、取得された前記識別子に対応するＳＩＰサーバに、受信された前記ＳＩＰメッセージを振り分ける処理と、
を実行する制御部を備えることを特徴とするサーバ装置。
（付記２）
前記サーバ装置は、記憶装置を備え、
前記制御部は、
前記複数のＳＩＰサーバの数の変化を検出する処理と、
前記ＳＩＰサーバの数の変化後に、前記ＳＩＰクライアントから受信するＳＩＰメッセージの振り分け先のＳＩＰサーバを、変化前の前記ＳＩＰサーバの台数に従い特定する処理と、
前記ＳＩＰクライアントからＳＩＰメッセージを受信するセッション毎に、変化前の前記ＳＩＰサーバの台数に従って特定したＳＩＰサーバを指定するサーバ指定情報を、前記記憶装置に格納する処理と、
前記ＳＩＰサーバの数の変化後の所定期間において、前記サーバ指定情報に従ってＳＩＰメッセージを振り分ける処理と、
前記所定期間の後に、前記サーバ指定情報を前記記憶装置から消去する処理と、
を実行することを特徴とする付記１に記載のサーバ装置。
（付記３）
前記制御部は、ＳＩＰメッセージを受信する前記ＳＩＰクライアントが、受信したＳＩＰメッセージのヘッダから送信するＳＩＰメッセージのヘッダに載せ替えた前記識別子を取得する処理を実行することを特徴とする、付記１又は２に記載のサーバ装置。
（付記４）
前記制御部は、リクエストメッセージの着信者指定ヘッダフィールドから前記識別子を取得する処理を実行することを特徴とする、付記１〜３のいずれか一項に記載のサーバ装置。
（付記５）
前記制御部は、レスポンスメッセージの生成元指定ヘッダフィールドから前記識別子を取得する処理を実行することを特徴とする、付記１〜３のいずれか一項に記載のサーバ装置。
（付記６）
前記制御部は、前記ＳＩＰサーバの数の変化後にセッション確立リクエストメッセージを受信した場合に、前記セッション確立リクエストメッセージのセッションの前記サーバ指定情報を前記記憶装置に格納することを特徴とする付記２〜５のいずれか一項に記載のサーバ装置。
（付記７）
前記制御部は、セッション確立リクエストメッセージの最終応答の確認応答メッセージを受信した場合に、前記確認応答メッセージのセッションの前記サーバ指定情報を前記記憶装置から消去する処理を実行することを特徴とする付記２〜６のいずれか一項に記載のサーバ装置。
（付記８）
ＳＩＰクライアントによるセッションを制御するＳＩＰサーバ装置であって、
前記ＳＩＰサーバ装置から前記ＳＩＰクライアントへ送信するＳＩＰメッセージのヘッダのうち、前記ＳＩＰクライアントから送信されるＳＩＰメッセージのヘッダに載せ替えられるヘッダに、前記ＳＩＰサーバ装置の前記識別子を付加する処理を実行する制御部を備えるＳＩＰサーバ装置。
（付記９）
サーバ装置が備える制御部に、
ＳＩＰクライアントから受信されるＳＩＰメッセージのヘッダに付加されたＳＩＰサーバの識別子を取得する処理と、
前記ＳＩＰクライアントによるセッションを制御する複数のＳＩＰサーバのうち、取得された前記識別子に対応するＳＩＰサーバに、受信された前記ＳＩＰメッセージを振り分ける処理と、を実行させることを特徴とするコンピュータプログラム。
（付記１０）
サーバ装置が備える制御部に、
ＳＩＰクライアントから受信されるＳＩＰメッセージのヘッダに付加されたＳＩＰサーバの識別子を取得する処理と、
前記ＳＩＰクライアントによるセッションを制御する複数のＳＩＰサーバのうち、取得された前記識別子に対応するＳＩＰサーバに、受信された前記ＳＩＰメッセージを振り分ける処理と、を実行させることを特徴とするメッセージ振り分け方法。
【符号の説明】
【０１１２】
１    ネットワーク
４、４−０〜４−３    ＳＩＰクライアント装置
６    振り分けサーバ装置
７、７−０〜７−３    ＳＩＰサーバ装置
【図１】
0005834864.tif 000002
【図２】
0005834864.tif 000003
【図３】
0005834864.tif 000004
【図４】
0005834864.tif 000005
【図５】
0005834864.tif 000006
【図６】
0005834864.tif 000007
【図７】
0005834864.tif 000008
【図８】
0005834864.tif 000009
【図９】
0005834864.tif 000010
【図１０】
0005834864.tif 000011
【図１１】
0005834864.tif 000012
【図１２】
0005834864.tif 000013
【図１３】
0005834864.tif 000014
【図１４】
0005834864.tif 000015
【図１５】
0005834864.tif 000016
【図１６】
0005834864.tif 000017
【図１７】
0005834864.tif 000018