(57)【特許請求の範囲】
【請求項１】
情報処理端末と情報処理装置との間の通信を中継する中継装置であって、
前記情報処理端末からの初回の要求情報に対する応答情報が前記情報処理装置から受信し、該応答情報から、前記情報処理端末と前記情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、前記情報処理装置のアドレスを抽出して第１格納部に格納する第１抽出部と、
前記応答情報を前記情報処理端末へ送信した後、抽出した前記第１のセッション識別情報と前記情報処理装置のアドレスとを含むセッション対応アドレス情報を、グループに分類された複数の中継装置のうち、各グループのいずれかの中継装置に送信する送信部と、
前記情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出する第２抽出部と、
抽出した前記第２のセッション識別情報に対応するセッション対応アドレス情報が前記第１格納部に格納されていない場合、前記第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを、自身が属するグループにおいて前記セッション対応アドレス情報が送信された中継装置に対して行う問合せ部と、
を備えることを特徴とする中継装置。
【請求項２】
前記複数の中継装置のそれぞれに、連続する番号が順に付与されており、
前記送信部は、ハッシュ関数を用いて前記第１のセッション識別情報のハッシュ値を算出し、前記ハッシュ値を前記中継装置数で除算して得られた余りの値ｋ（ｋ：任意の整数）と一致する前記番号が付与された中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せ部は、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、前記ハッシュ値を前記中継装置数で除算して得られた余りの値と一致する前記番号が付与された中継装置に対して、前記問合せを行う
ことを特徴とする請求項１に記載の中継装置。
【請求項３】
前記送信部は、ｋからｋ＋ｎ（ｎ：任意の整数）までの値と一致する前記番号が付与された中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せ部は、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ｋからｋ＋ｎ（ｎ：任意の整数）までの値と一致する前記番号が付与された中継装置に対して、前記問合せを行う
ことを特徴とする請求項２に記載の中継装置。
【請求項４】
情報処理端末と情報処理装置との間の通信を中継する中継装置であって、
前記情報処理端末からの初回の要求情報に対する応答情報が前記情報処理装置から受信し、該応答情報から、前記情報処理端末と前記情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、前記情報処理装置のアドレスを抽出して第１格納部に格納する第１抽出部と、
前記応答情報を前記情報処理端末へ送信した後、抽出した前記第１のセッション識別情報と前記情報処理装置のアドレスとを含むセッション対応アドレス情報を、前記中継装置とは別の１つ以上の中継装置に送信する送信部と、
前記情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出する第２抽出部と、
抽出した前記第２のセッション識別情報に対応するセッション対応アドレス情報が前記第１格納部に格納されていない場合、前記第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを前記別の１つ以上の中継装置に行う問合せ部と、
複数の前記中継装置がグループに分類され、該グループのそれぞれには連続する番号が順に付与される該グループに付与された番号と、該番号に対応するグループに属する前記中継装置に付与された番号とが格納される第３格納部と、
を備え、
前記送信部は、ハッシュ関数を用いて前記第１のセッション識別情報のハッシュ値を算出し、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を前記第３格納部から検索し、該検索した中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せ部は、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を前記第３格納部から検索し、該検索された中継装置に対して、前記問合せを行う
ことを特徴とする中継装置。
【請求項５】
前記問合せ部は、さらに、前記算出されたハッシュ値ｇと一致する前記番号が付与されたグループに属する中継装置数で除算して得られた余りの値ｈ（ｈ：任意の整数）を算出し、前記第３格納部において該グループに属する中継装置のうちｈ番目に登録された中継装置から昇順または降順で、該中継装置に対して、前記問合せを行う
ことを特徴とする請求項４に記載の中継装置。
【請求項６】
情報処理端末と情報処理装置の間の通信を中継する中継装置に実行させる中継プログラムであって、
前記情報処理端末からの初回の要求情報に対する応答情報が前記情報処理装置から受信し、該応答情報から、前記情報処理端末と前記情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、前記情報処理装置のアドレスを抽出して第１格納部に格納し、
前記応答情報を一つの前記情報処理端末へ送信した後、抽出した前記第１のセッション識別情報と前記情報処理装置のアドレスとを含むセッション対応アドレス情報を、グループに分類された複数の中継装置のうち、各グループのいずれかの中継装置に送信し、
前記情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出し、
抽出した前記第２のセッション識別情報に対応するセッション対応アドレス情報が前記第１格納部に格納されていない場合、前記第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを、自身が属するグループにおいて前記セッション対応アドレス情報が送信された中継装置に対して行う、
処理を実行させる中継プログラム。
【請求項７】
情報処理端末と情報処理装置の間の通信を中継する中継装置に実行させる中継プログラムであって、
前記情報処理端末からの初回の要求情報に対する応答情報が前記情報処理装置から受信し、該応答情報から、前記情報処理端末と前記情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、前記情報処理装置のアドレスを抽出して第１格納部に格納し、
前記応答情報を一つの前記情報処理端末へ送信した後、抽出した前記第１のセッション識別情報と前記情報処理装置のアドレスとを含むセッション対応アドレス情報を、前記中継装置とは別の１つ以上の中継装置に送信し、
前記情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出し、
抽出した前記第２のセッション識別情報に対応するセッション対応アドレス情報が前記第１格納部に格納されていない場合、前記第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを前記別の１つ以上の中継装置に行い、
複数の前記中継装置がグループに分類され、該グループのそれぞれには連続する番号が順に付与され、
前記セッション対応アドレス情報の送信において、ハッシュ関数を用いて前記第１のセッション識別情報のハッシュ値を算出し、前記グループに付与された番号と、該番号に対応するグループに属する前記中継装置に付与された番号とが格納された第３格納部から、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を取得し、該取得した中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せにおいて、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を前記第３格納部から検索し、該検索された中継装置に対して、前記問合せを行う
処理を実行させる中継プログラム。
【請求項８】
情報処理端末と情報処理装置との間の通信を中継する中継装置に実行させる中継方法であって、
前記中継装置は、
前記情報処理端末からの初回の要求情報に対する応答情報が前記情報処理装置から受信し、該応答情報から、前記情報処理端末と前記情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、前記情報処理装置のアドレスを抽出して第１格納部に格納し、
前記応答情報を前記情報処理端末へ送信した後、抽出した前記第１のセッション識別情報と前記情報処理装置のアドレスとを含むセッション対応アドレス情報を、グループに分類された複数の中継装置のうち、各グループのいずれかの中継装置に送信し、
前記情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出し、
抽出した前記第２のセッション識別情報に対応するセッション対応アドレス情報が前記第１格納部に格納されていない場合、前記第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを、自身が属するグループにおいて前記セッション対応アドレス情報が送信された中継装置に対して行う、
ことを特徴とする中継方法。
【請求項９】
情報処理端末と情報処理装置との間の通信を中継する中継装置に実行させる中継方法であって、
前記中継装置は、
前記情報処理端末からの初回の要求情報に対する応答情報が前記情報処理装置から受信し、該応答情報から、前記情報処理端末と前記情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、前記情報処理装置のアドレスを抽出して第１格納部に格納し、
前記応答情報を前記情報処理端末へ送信した後、抽出した前記第１のセッション識別情報と前記情報処理装置のアドレスとを含むセッション対応アドレス情報を、前記中継装置とは別の１つ以上の中継装置に送信し、
前記情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出し、
抽出した前記第２のセッション識別情報に対応するセッション対応アドレス情報が前記第１格納部に格納されていない場合、前記第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを前記別の１つ以上の中継装置に行い、
複数の前記中継装置がグループに分類され、該グループのそれぞれには連続する番号が順に付与され、
前記セッション対応アドレス情報の送信において、ハッシュ関数を用いて前記第１のセッション識別情報のハッシュ値を算出し、前記グループに付与された番号と、該番号に対応するグループに属する前記中継装置に付与された番号とが格納された第３格納部から、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を取得し、該取得した中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せにおいて、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を前記第３格納部から検索し、該検索された中継装置に対して、前記問合せを行う
ことを特徴とする中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、情報処理装置と情報処理端末との間の通信の中継技術に関する。
【背景技術】
【０００２】
現在、インターネットに代表される通信ネットワークは広く社会に普及している。それにより、情報処理装置（以下、「サーバ」という）を用いて、通信ネットワークと接続された端末である情報処理端末（以下、「端末」という）のユーザを対象にした様々なサービスが提供されるようになっている。
【０００３】
サービスを提供するサーバは、端末から受信したリクエストメッセージによりセッションを生成し、その端末のユーザを対象にしたサービスを提供する。このセッションは、サーバが１端末にサービスを提供するうえでの単位に相当する。このセッションを生成したサーバは、端末に応答（レスポンス）するメッセージに、生成したセッションを識別する識別子であるセッションＩＤを挿入して送信する。セッションＩＤが挿入されたメッセージを受信した端末は以降、そのセッションＩＤを挿入したメッセージをサーバ宛てに送信する。それによりサーバは、端末から受信したメッセージ中のセッションＩＤにより、サービスの提供を継続することができる。
【０００４】
メッセージのコンテンツを用いて端末−サーバ間の通信の中継処理を行う場合、中継装置の処理負荷が高くなる。中継処理のスループットの向上を図るために利用される方法の一例に、スケールアウト方式がある。スケールアウト方式とは、ＣＰＵを複数並べて並列処理させることにより中継システムの処理能力を向上させる方式である。
【０００５】
図１は、スケールアウト方式を採用した中継システムを説明するための図である。中継システムは、複数の中継装置３（３−１，・・・，３−ｎ）を含む。図１では、並列に配置された中継装置３（３−１，・・・，３−ｎ）の前段に、Ｌ４−負荷分散装置（L4-server load balancer（L4-SLB））５が配置されている。Ｌ４−負荷分散装置５は、パケットのＬ３ヘッダまたはＬ４ヘッダを参照して、パケットを中継装置３に振り分ける処理を行う。中継装置３は、そのパケットをメッセージに組み立てて、セッションＩＤを参照してメッセージの転送先を決定・送信する処理を行う。
【０００６】
パケットの振り分けに際して、Ｌ４−負荷分散装置５はセッションＩＤを参照しないため、同じセッションＩＤを含むリクエストメッセージが前回と同じ中継装置３に到達するとは限らない。
【０００７】
初回のリクエストメッセージ及び応答メッセージを中継した中継装置３には、セッションＩＤとそのセッションＩＤに対応するメッセージ転送先のサーバアドレスとを含む情報（転送先情報）が存在する。
【０００８】
一方、他の中継装置３にはその転送先情報が存在しない、という状態に陥る。すると、中継装置３は、セッションデータのあるサーバ２に、端末１からのリクエストメッセージを届けることができない。そのため、並列化された中継システムは、転送先管理テーブル４を同期する機構を具備している。そして、セッションが確立した際に、中継装置３間で転送先情報が同期されている。これにより、後続リクエストメッセージがどの中継装置に振り分けられたとしても、対応するサーバへ正常にメッセージを転送することができる。転送先管理テーブルの同期の方法としては、例えば、図２、図３に示すように、以下の２種類が考えられる。
【０００９】
図２は、転送先管理テーブルの第１の同期方式を示す。転送先管理テーブルの第１の同期方式は、転送先管理テーブル４（４−１，４−２，・・・，４−ｎ）の内容（転送先情報）を中継装置３（３−１，３−２，・・・，３−ｎ）間で同期させる方式である。この方法では、ある特定のセッションＩＤを含む初回リクエストメッセージ及び応答メッセージを中継した中継装置３から、他の中継装置３に対して、転送先情報が配布される。
【００１０】
図３は、転送先管理テーブルの第２の同期方式を示す。転送先管理テーブルの第２の同期方式は、転送先設定機構７を、中継装置３群の外部に設ける方式である。転送先設定機構７は、各中継装置３に転送先情報を配布する。転送先設定機構７は、セッション確立時にサーバ２から、セッションＩＤ及びセッションデータを保持するサーバアドレスの情報を収集する。転送先設定機構７は、その収集した情報に基づいて、転送先情報を生成し、各中継装置３に配布する。
【００１１】
このようにして、各中継装置の転送先情報を同期させることができるので、中継装置３は、セッションが継続する間は同じ端末１からのリクエストを同じサーバ２−１に振り分けることができる（一意性保証）。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特表２００１−５２６８１４号公報
【特許文献２】特開２０１０−１０８４７９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
あるセッションＩＤを含むメッセージを確実にそのセッションＩＤで特定されるセッションデータを保持しているサーバへ届けて、サービスの一意性を確保するためには、次のことが要求される。すなわち、他の全ての中継装置への転送先情報の設定が完了したことを確認した後に、後続のリクエストメッセージについての処理を行う必要がある。
【００１４】
しかしながら、中継装置の並列度が増加するに従って、転送先情報の配布回数は増加する。上述の通り、一意性を保証するため、すべての中継装置への転送先情報の配布が完了するまで端末側へは応答を返さない。そのため、中継装置の並列度が上がるにつれて、端末への応答遅延が増大する。
【００１５】
そこで、本明細書では、情報処理端末から要求情報が送信されてから、その要求情報に対する情報処理装置からの応答情報が返信されるまでの遅延時間を低減する中継技術を提供する。
【課題を解決するための手段】
【００１６】
情報処理端末と情報処理装置との間の通信を中継する中継装置は、前記情報処理端末からの初回の要求情報に対する応答情報が前記情報処理装置から受信し、該応答情報から、前記情報処理端末と前記情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、前記情報処理装置のアドレスを抽出して第１格納部に格納する第１抽出部と、前記応答情報を前記情報処理端末へ送信した後、抽出した前記第１のセッション識別情報と前記情報処理装置のアドレスとを含むセッション対応アドレス情報を、グループに分類された複数の中継装置のうち、各グループのいずれかの中継装置に送信する送信部と、前記情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出する第２抽出部と、抽出した前記第２のセッション識別情報に対応するセッション対応アドレス情報が前記第１格納部に格納されていない場合、前記第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを、自身が属するグループにおいて前記セッション対応アドレス情報が送信された中継装置に対して行う問合せ部と、を備えることを特徴とする。
情報処理端末と情報処理装置との間の通信を中継する中継装置は、前記情報処理端末からの初回の要求情報に対する応答情報が前記情報処理装置から受信し、該応答情報から、前記情報処理端末と前記情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、前記情報処理装置のアドレスを抽出して第１格納部に格納する第１抽出部と、前記応答情報を前記情報処理端末へ送信した後、抽出した前記第１のセッション識別情報と前記情報処理装置のアドレスとを含むセッション対応アドレス情報を、前記中継装置とは別の１つ以上の中継装置に送信する送信部と、前記情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出する第２抽出部と、抽出した前記第２のセッション識別情報に対応するセッション対応アドレス情報が前記第１格納部に格納されていない場合、前記第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを前記別の１つ以上の中継装置に行う問合せ部と、複数の前記中継装置がグループに分類され、該グループのそれぞれには連続する番号が順に付与される該グループに付与された番号と、該番号に対応するグループに属する前記中継装置に付与された番号とが格納される第３格納部と、を備え、前記送信部は、ハッシュ関数を用いて前記第１のセッション識別情報のハッシュ値を算出し、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を前記第３格納部から検索し、該検索した中継装置に対して、前記セッション対応アドレス情報を送信し、前記問合せ部は、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を前記第３格納部から検索し、該検索された中継装置に対して、前記問合せを行うことを特徴とする。
【発明の効果】
【００１７】
本明細書に記載の技術によれば、情報処理端末から要求情報が送信されてから、その要求情報に対する情報処理装置からの応答情報が返信されるまでの遅延時間を低減することができる。
【図面の簡単な説明】
【００１８】
【図１】スケールアウト方式を採用した中継システムを説明するための図である。
【図２】転送先管理テーブルの第１の同期方式を示す。
【図３】転送先管理テーブルの第２の同期方式を示す。
【図４】本実施形態における端末−サーバ間の通信を行う通信システムの一例を示す。
【図５】本実施形態における中継装置の一例を示す。
【図６】問合せ先リスト２２の一例を示す。
【図７】最優先配布先リスト２３の一例を示す。
【図８】中継装置リスト２１の一例を示す。
【図９】転送先管理テーブル２０の一例を示す。
【図１０】本実施形態におけるリクエストメッセージの中継処理フローを示す。
【図１１】図１０のＳ４８の処理の詳細を示す。
【図１２】負荷分散装置から中継装置へ転送されたリクエストメッセージ（ｍｓｇ（１））（セッション確立前）のデータ構造の一例を示す。
【図１３】負荷分散装置から中継装置へ転送されたリクエストメッセージ（ｍｓｇ（１））（セッション確立後）のデータ構造の一例を示す。
【図１４】問合せ元の中継装置から問合せ先の中継装置へ送信される問合せメッセージ（ｍｓｇ（２））のデータ構造の一例を示す。
【図１５】問合せ先の中継装置から問合せ元の中継装置へ送信される問合せ回答メッセージ（ｍｓｇ（３））のデータ構造の一例を示す。
【図１６】中継装置からサーバへ転送されるリクエストメッセージ（ｍｓｇ（４））（セッション確立前）のデータ構造の一例を示す。
【図１７】中継装置からサーバへ転送されるリクエストメッセージ（ｍｓｇ（４））（セッション確立後）のデータ構造の一例を示す。
【図１８】本実施形態における応答メッセージの中継処理フローを示す。
【図１９】図１８のＳ６８またはＳ６９の処理の詳細を示す。
【図２０】サーバから中継装置へ送信される応答メッセージ（ｍｓｇ（５））のデータ構造の一例を示す。
【図２１】中継装置から負荷分散装置へ転送される応答メッセージ（ｍｓｇ（６））のデータ構造の一例を示す。
【図２２】配布元の中継装置から配布先の中継装置へ配布される通知メッセージ（ｍｓｇ（７））のデータ構造の一例を示す。
【図２３】実施例１におけるメッセージ中継システムの構成の一例を示す。
【図２４】実施例１における（Ａ）最優先配布先リスト、（Ｂ）問合せ先リストの一例を示す。
【図２５】実施例２におけるメッセージ中継システムの構成の一例を示す。
【図２６】実施例２における各グループの各中継装置に設定された最優先配布先リスト、問合せ先リストの一例を示す。
【図２７】実施例３におけるメッセージ中継システムの構成の一例を示す。
【図２８】実施例３における最優先配布先の中継装置の一例を示す。
【図２９】実施例３におけるグループ内装置リストの一例を示す。
【図３０】実施例３における応答メッセージの中継処理フローを示す。
【図３１】実施例３における最優先配布先の中継装置によるグループ内の中継装置への転送先情報の配布処理を示す。
【図３２】実施例４における中継装置の一例を示す。
【図３３】実施例４におけるリクエストメッセージの中継処理フローを示す。
【図３４】実施例４における応答メッセージの中継処理フローを示す。
【図３５】実施例５におけるリクエストメッセージの中継処理フローを示す。
【図３６】実施例５における応答メッセージの中継処理フローを示す。
【図３７】実施例６におけるリクエストメッセージの中継処理フローを示す。
【図３８】実施例７における中継装置の一例を示す。
【図３９】実施例７におけるグループ定義テーブル２６の一例を示す。
【図４０】実施例７におけるリクエストメッセージの中継処理フローを示す。
【図４１】実施例７における応答メッセージの中継処理フローを示す。
【図４２】実施例８におけるリクエストメッセージの中継処理フローを示す。
【図４３】各リクエストへの応答時間（期待値）と１つのサービスセッション（１０メッセージで構成されると仮定）完了までにかかる時間を示したグラフ（その１）を示す。
【図４４】各リクエストへの応答時間（期待値）と１つのサービスセッション（１０メッセージで構成されると仮定）完了までにかかる時間を示したグラフ（その２）を示す。
【図４５】各リクエストへの応答時間（期待値）と１つのサービスセッション（１０メッセージで構成されると仮定）完了までにかかる時間を示したグラフ（その３）を示す。
【図４６】本実施形態を適用可能なコンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１９】
本実施形態では以下のことを実現する。すなわち、（Ａ）サーバ側から端末側へ応答メッセージを送る場合、セッション確立時に並列化された中継装置への転送先情報の配布は行わずに、サーバ側からの応答を端末へ返す。このとき、応答時にはメッセージが通過した中継装置だけがメッセージ転送先情報を保持している。
【００２０】
次に、（Ｂ）メッセージを中継した中継装置は他の中継装置に向けて転送先情報を配布する。これにより、最終的には全中継装置が転送先情報を共有する。
さらに、（Ｃ）確立済セッションのＩＤを含む後続メッセージを受信した中継装置は、後続メッセージに含まれるセッションＩＤで特定される転送先情報を保有している場合は、その転送先情報に従ってその継続メッセージを転送先へ転送する。セッションＩＤによって特定される転送先情報を保有していない場合、中継装置は、他の中継装置に対して問合せを行い、その回答によって転送先情報を取得し、その継続メッセージを転送先へ転送する。
【００２１】
また、（Ｂ）における転送先情報の配布先と、（Ｃ）における転送先情報の問合せ先との選択を完全に独立にしてしまうと、全ての中継装置に対して問合せを実施しないと、転送先が分からないという事態が生じる可能性がある。その場合には（Ａ）の仕組みによる遅延削減効果が打ち消されてしまう。そこで、（Ｄ）転送先情報の配布先及び問合せ先のリストを並列化された全ての中継装置に予め設定しておく。転送先情報の配布先及び問合せ先リストは、配布時には転送先情報を優先的に配布する中継装置のリストとして用い、問合せ時には転送先情報についての問合せ先の中継装置のリストとして用いる。なお、そのリストに記載する装置は１台でも良いし、また負荷の拡散や冗長性確保の目的で複数台としても良い。
【００２２】
図４は、本実施形態における端末−サーバ間の通信を行う通信システムの一例を示す。通信システムは、複数の端末１（１−１，１−２，・・・，２−ｐ）、ネットワーク９、負荷分散装置５、中継システム１０、複数のサーバ２（２−１，２−２，・・・，２−ｒ）を含む。中継システム１０は、複数の中継装置を含む。以下では、複数の中継装置のうちのいずれかの中継装置を符号１１で表し、その他の中継装置を符号１１，１１−１，１１−２，・・・，１１−ｑ）で表す。ここで、ｐ、ｑ、ｒは任意の整数である。
【００２３】
中継システム１０の前段に、負荷分散装置５が配置されている。負荷分散装置５は、ネットワーク９を介して端末１−１から送信されたパケットを受信する。それから、負荷分散装置５は、そのパケットのＬ３ヘッダまたはＬ４ヘッダを参照して、パケットをいずれかの中継装置、例えば中継装置１１に振り分ける。
【００２４】
中継装置１１は、そのパケットをメッセージに組み立てて、セッションＩＤを参照してメッセージの転送先、例えばサーバ２−１を決定し、そのメッセージをそのサーバ２−１へ送信する。
【００２５】
サーバ２−１は、リクエストメッセージに対するレスポンスメッセージを、そのリクエストメッセージを送信した中継装置１１に返信する。
中継装置１１は、初回のリクエストメッセージに対するレスポンスメッセージをサーバ２から受信した場合、そのレスポンスメッセージからセッションＩＤを抽出する。ここで、セッションＩＤは、リクエストメッセージを送信した端末１−１とリクエストメッセージを受信したサーバ２−１との間で設定されるセッションを識別する情報である。
【００２６】
中継装置１１は、レスポンスメッセージを、負荷分散装置５を介して端末１−１へ送信する。
中継装置１１は、レスポンスメッセージを端末１−１へ送信した後、他の中継装置１１−２〜１１−ｑに対して、セッションＩＤとそのセッションＩＤに対応するメッセージ転送先のサーバアドレスとを含む情報（転送先情報）を配布する。
【００２７】
転送先情報が配布される前に、例えば中継装置１１−１が端末１から２回目以降のリクエストメッセージを受信した場合、中継装置１１−１は、後述する問合せ処理を行って、転送先情報が配布された他の中継装置から転送先情報を取得する。これにより、中継装置１１−１は、転送先情報の示すサーバ２−１に対して、後続のリクエストメッセージを転送することができる。
【００２８】
図５は、本実施形態における中継装置の一例を示す。中継装置１１は、受信部１２、リクエスト中継部１３、送信部１４、問合せ部１５、回答部１６、応答中継部１７、配布部１８、通知受信部１９を含む。中継装置１１の記憶装置には、転送先管理テーブル２０、中継装置リスト２１、問合せ先リスト２２、最優先配布先リスト２３が格納されている。他の中継装置１１−１，１・・・、１１−ｑも同様に、受信部１２、リクエスト中継部１３、送信部１４、問合せ部１５、回答部１６、応答中継部１７、配布部１８、通知受信部１９を含む。以下、説明の便宜上、中継装置１１について説明する。
【００２９】
受信部１２は、中継装置１１外部からのメッセージを受信する。リクエスト中継部１３は、端末１から発行されるリクエストメッセージを処理する。送信部１４は、中継装置１１外部へメッセージを送信する。応答中継部１７は、サーバ２から発行される応答メッセージを処理する。
【００３０】
問合せ部１５は、転送先管理テーブル２０に転送先情報が無い場合に、リクエスト中継部１３からの依頼を受けて、他の中継装置１１−１に対して転送先情報について問い合わせる問合せメッセージを生成する。問合せ部１５は、その生成した問合せメッセージを他の中継装置１１−１に送信する。また、問合せ部１５は、他の中継装置１１−１から問合せ回答メッセージを受けて、その問合せ結果をリクエスト中継部１３に通知する。回答部１６は、中継装置１１外部からの問合せに対して転送先情報を回答する。
【００３１】
配布部１８は、転送先情報を他の中継装置に対して配布する。通知受信部１９は、他の中継装置からの、転送先情報を含む通知メッセージを受信し、転送先情報を転送先管理テーブルに記録する。
【００３２】
転送先管理テーブル２０は、セッションＩＤに基づいてメッセージの転送先となるサーバを決定するためのテーブルである。最優先配布先リスト２３は、セッションが確立し、その応答メッセージを端末へ返した後に、最優先で転送先情報を配布されるべき中継装置のアドレスを格納したリストである。中継装置リスト２１は、中継システムに存在する中継装置のアドレスを格納したリストである。問合せ先リスト２２は、メッセージの転送先情報の問合せ先となる中継装置のアドレスを格納したリストである。
【００３３】
図６は、問合せ先リスト２２の一例を示す。問合せ先リスト２２には、転送先情報の問合せ先となる中継装置のアドレスがリスト化されている。
図７は、最優先配布先リスト２３の一例を示す。最優先配布先リスト２３には、転送先情報の配布先となる中継装置のアドレスがリスト化されている。
【００３４】
図８は、中継装置リスト２１の一例を示す。中継装置リスト２１には、中継システムに存在する中継装置１１のアドレスがリスト化されている。
図９は、転送先管理テーブル２０の一例を示す。転送先管理テーブル２０は、セッションＩＤに対応するサーバアドレス（転送先情報）を管理するためのものである。転送先管理テーブル２０は、「セッションＩＤ」２０ａ、「転送先アドレス」２０ｂのデータ項目を含む。「セッションＩＤ」２０ａには、セッションＩＤが格納される。セッションＩＤは、サーバ２が端末１からのリクエストを一意に特定し、セッションデータを取り出すために利用する識別子であって、メッセージに付与されて送受信される。「転送先アドレス」２０ｂには、「セッションＩＤ」２０ａで特定されるセッションデータが保持されているサーバ２のＩＰアドレス（またはホスト名）およびポート番号が格納される。中継装置１１は、「セッションＩＤ」２０ａのセッションＩＤを含むメッセージを転送先のサーバアドレスに向けて転送する。これにより、中継装置１１は、端末１−サーバ２間のサービス継続を保証する。
【００３５】
図１０は、本実施形態におけるリクエストメッセージの中継処理フローを示す。受信部１２は、端末１からリクエストメッセージ（ｍｓｇ（１））を受信する（Ｓ４１）。ｍｓｇ（１）については、図１２、図１３で説明する。リクエスト中継部１３は、端末１からのリクエストメッセージのレイヤ７プロトコルヘッダ、またはメッセージコンテンツからセッションＩＤの抽出を試みる（Ｓ４２）。Ｓ４１で受信したリクエストがサービス利用者にとっての初回リクエストである場合、まだサーバへその利用者のリクエストメッセージが一度も届いておらず、セッションＩＤも端末１へ送信されていない。そのため、図１２に示すように、リクエストメッセージにはセッションＩＤは含まれていない。一方、Ｓ４１で受信したリクエストが一度サーバ２にアクセスしたことのある利用者からのリクエスト（後続のリクエスト）の場合、図１３に示すように、リクエストメッセージにセッションＩＤが含まれている。このようにセッションＩＤの有無から、リクエスト中継部１３は、受信したメッセージが初回リクエストであるか、後続のリクエストであるかを判別し、次の処理を選択する（Ｓ４３）。
【００３６】
Ｓ４３において初回リクエストであると判定された場合（Ｓ４３で「Ｎｏ」）、 リクエスト中継部１３は、負荷分散アルゴリズムに従った宛先決定処理を行う（Ｓ４７）。Ｓ４７では、リクエスト中継部１３は、ラウンドロビン、サーバ負荷監視結果等を用いた負荷分散アルゴリズムに従ってメッセージの転送先を、サーバ群の中から選択し、メッセージの転送先として決定する。
【００３７】
Ｓ４３において後続リクエストであると判定された場合（Ｓ４３で「Ｙｅｓ」）、リクエスト中継部１３は、転送先管理テーブル２０に従った宛先決定処理を行う。ここでは、リクエスト中継部１３は、Ｓ４２で抽出したセッションＩＤをキーに転送先管理テーブル２０を検索する（Ｓ４４）。
【００３８】
Ｓ４４の検索の結果、転送先管理テーブル２０中にＨｉｔするエントリが見つかった場合（Ｓ４５で「Ｙｅｓ」）、リクエスト中継部１３は、そのエントリに設定されている転送先アドレスをメッセージの転送先と決定する（Ｓ４６）。
【００３９】
Ｓ４４の検索の結果、転送先管理テーブル２０中にＨｉｔするエントリが見つからなかった場合（Miss Ｈｉｔの場合）（Ｓ４５で「Ｎｏ」）、リクエスト中継部１３は、次の処理を行う。すなわち、リクエスト中継部１３は、問合せ部１５に、他の中継装置１１−１に転送先情報を問合せるように依頼する。
【００４０】
問合せ部１５は、Ｓ４２で抽出したセッションＩＤを含んだ問合せメッセージ（ｍｓｇ（２））を発行して、他の中継装置１１−１に対して問合せ処理を行う（Ｓ４８）。ここで、各中継装置１１は、問合せ先リスト２２を保持する。問合せ部１５は、問合せ先リスト２２に基づいて問合せ先のアドレスを特定し、その問合せ先のアドレスに向けて問合せメッセージ（ｍｓｇ（２））を発行する。これにより、問合せ部１５は、他の中継装置１１−１に対して、転送先情報の問合せを順次実施する。
【００４１】
ここで、問合せ先リスト２２のどのエントリに設定された中継装置１１から問合せを開始するかについては、例えば、次の方法が考えられる。一例として、他の中継装置１１への問合せの一例としては、問合せ先リスト２２の先頭の中継装置１１から順に問合せを開始しても良い。また、他の例としては、適当なランダム選択アルゴリズムに従って問合せ先リスト２２から中継装置１１を選択し、その選択した中継装置１１に問い合わせても良い。Ｓ４８の処理については、図１１で説明する。
【００４２】
問合せ元の中継装置１１の問合せ部１５は、問合せ先の中継装置１１−１から、問合せ回答メッセージ（ｍｓｇ（３））を受信する。問合せの結果、問合せ先から転送先情報が取得できなかった場合、問合せ部１５は、次の中継装置に転送先情報の問合せを行う。
【００４３】
問合せ部１５は、問合せ先から転送先情報が取得できた時点で問合せ（Ｓ４８）を終了する。問合せ部１５は、取得した転送先情報に基づいて、転送先アドレスとセッションＩＤとを関係付けて、転送先管理テーブル２０へ登録する（Ｓ４９）。リクエスト中継部１３は、取得した転送先情報から、メッセージの転送先のサーバアドレスを決定する（Ｓ５０）。
【００４４】
Ｓ４６、Ｓ４７またはＳ５０の処理終了後、送信部１４は、端末１からのリクエストメッセージ（ｍｓｇ（４））を、Ｓ４６、Ｓ４７またはＳ５０で決定したサーバアドレスへ向けて送信する（Ｓ５１）。これにより、リクエストメッセージの中継処理フローは終了する。
【００４５】
図１１は、図１０のＳ４８の処理の詳細を示す。問合せ先の中継装置１１−１は、問合せ元の中継装置１１から発行された転送先情報についての問合せメッセージ（ｍｓｇ（２））を受信する（Ｓ４８−１）。
【００４６】
問合せ先の中継装置１１−１の回答部１６は、問合せメッセージ（ｍｓｇ（２））からセッションＩＤを抽出し（Ｓ４８−２）、そのセッションＩＤをキーに転送先管理テーブル２０を検索する（Ｓ４８−３）。
【００４７】
Ｓ４８−３の検索の結果、転送先管理テーブル２０中にＨｉｔするエントリが見つかった場合（Ｓ４８−４で「Ｙｅｓ」）、回答部１６は、そのエントリから転送先のサーバアドレスを取得する。回答部１６は、その転送先のサーバアドレスとセッションＩＤを問合せ回答メッセージに設定し、その問合せ回答メッセージを問合せ元の中継装置１１へ送信する（Ｓ４８−５）。
【００４８】
Ｓ４８−３の検索の結果、転送先管理テーブル２０中にＨｉｔするエントリが見つからなかった場合（Ｍｉｓｓ  Ｈｉｔの場合）（Ｓ４８−４で「Ｎｏ」）、回答部１６は、次の処理を行う。すなわち、回答部１６は、転送先が不明である旨の問合せ回答メッセージを問合せ元の中継装置１１へ送信する（Ｓ４８−６）。転送先が不明である旨の問合せ回答メッセージとは、例えば、問合せ回答メッセージ（ｍｓｇ（３））に転送先アドレスが含まれていないものでもよい。なお、問合せ元の中継装置１１では、転送先が不明である旨の問合せ回答メッセージを受け取った場合には、再度同一の中継装置に問い合わせてもよいし、他の中継装置へ問い合わせるようにしてもよい。
【００４９】
図１２は、負荷分散装置から中継装置へ転送されたリクエストメッセージ（ｍｓｇ（１））（セッション確立前）のデータ構造の一例を示す。図１３は、負荷分散装置から中継装置へ転送されたリクエストメッセージ（ｍｓｇ（１））（セッション確立後）のデータ構造の一例を示す。
【００５０】
図１２、図１３及び後述する他のメッセージの構成要素には、図２で説明したように、パケットヘッダ（Ｌ３ヘッダ／Ｌ４ヘッダ）、ＨＴＴＰプロトコルヘッダ（レイヤ７プロトコルヘッダに相当する）、メッセージコンテンツの他に、Ｌ２ヘッダが含まれる。
【００５１】
図１２に示すセッション確立前のリクエストメッセージ（ｍｓｇ（１））は、初回のリクエストメッセージに相当する。図１２に示すように、「Ｓｏｕｒｃｅ  ＭＡＣ」には、負荷分散装置のＭＡＣアドレス（Media Access Control address）が設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＭＡＣ」には、中継装置１１のＭＡＣアドレスが設定されている。
【００５２】
「Ｓｏｕｒｃｅ  ＩＰ：Ｐｏｒｔ」には、送信元端末のＩＰアドレスおよびポート番号が設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ：Ｐｏｒｔ」には、中継装置１１に付与されたＩＰアドレスおよびポート番号が設定されている。「ＨＴＴＰプロトコルヘッダ」、「メッセージコンテンツ」については、省略する。
【００５３】
図１３に示すリクエストメッセージ（ｍｓｇ（１））（セッション確立後）は、後続のリクエストメッセージに相当する。図１２に示すセッション確立前のリクエストメッセージ（ｍｓｇ（１））と比べ、図１３では、「ＨＴＴＰプロトコルヘッダ」に「Ｃｏｏｋｉｅ」フィールドが追加されている。そして、その「Ｃｏｏｋｉｅ」フィールドにセッションＩＤが設定されている。
【００５４】
図１４は、問合せ元の中継装置から問合せ先の中継装置へ送信される問合せメッセージ（ｍｓｇ（２））のデータ構造の一例を示す。問合せメッセージ（ｍｓｇ（２））は、中継装置１１間で送受信される制御用メッセージである。
【００５５】
図１４において、「Ｓｏｕｒｃｅ  ＭＡＣ」には、メッセージの転送先情報の問合せ元となる中継装置１１のＭＡＣアドレスが設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＭＡＣ」には、メッセージの転送先情報の問合せ先となる中継装置のＭＡＣアドレスが設定されている。「Ｓｏｕｒｃｅ  ＩＰ：Ｐｏｒｔ」には、メッセージの転送先情報の問合せ元となる中継装置のＩＰアドレス及びポート番号が設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ：Ｐｏｒｔ」には、メッセージの転送先情報の問合せ先となる中継装置の問合せ受付用ＩＰアドレス及びポート番号が設定されている。「メッセージコンテンツ」には「セッションＩＤ」フィールドが追加され、そのフィールドにセッションＩＤが設定されている。
【００５６】
図１５は、問合せ先の中継装置から問合せ元の中継装置へ送信される問合せ回答メッセージ（ｍｓｇ（３））のデータ構造の一例を示す。問合せ回答メッセージ（ｍｓｇ（３））は、中継装置１１間で送受信される制御用メッセージである。
【００５７】
「Ｓｏｕｒｃｅ  ＭＡＣ」には、転送先情報の問合せ先となる中継装置のＭＡＣアドレスが設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＭＡＣ」には、転送先情報の問合せ元となる中継装置のＭＡＣアドレスが設定されている。「Ｓｏｕｒｃｅ  ＩＰ：Ｐｏｒｔ」には、転送先情報の問合せ先となる中継装置の問合せ受付用のＩＰアドレス及びポート番号が設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ：Ｐｏｒｔ」には、メッセージの転送先情報の問合せ元となる中継装置のＩＰアドレス及びポート番号が設定されている。「メッセージコンテンツ」には、「セッションＩＤ」フィールドと「転送先サーバアドレス」フィールドが追加されている。「セッションＩＤ」フィールドには、セッションＩＤが設定されている。「転送先サーバアドレス」には、「セッションＩＤ」フィールドに設定されたセッションＩＤで特定されるセッションデータを保持するサーバのＩＰアドレスが設定されている。
【００５８】
図１６は、中継装置からサーバへ転送されるリクエストメッセージ（ｍｓｇ（４））（セッション確立前）のデータ構造の一例を示す。図１７は、中継装置からサーバへ転送されるリクエストメッセージ（ｍｓｇ（４））（セッション確立後）のデータ構造の一例を示す。
【００５９】
図１６及び図１７では、「Ｓｏｕｒｃｅ  ＭＡＣ」には、中継装置のＭＡＣアドレスが設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＭＡＣ」には、サーバのＭＡＣアドレスが設定されている。「Ｓｏｕｒｃｅ  ＩＰ：Ｐｏｒｔ」には、中継装置のＩＰアドレス及びポート番号が設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ：Ｐｏｒｔ」には、サーバのＩＰアドレス及びポート番号が設定されている。
【００６０】
図１６に示すセッション確立前のリクエストメッセージ（ｍｓｇ（１））と比べ、図１７では、「ＨＴＴＰプロトコルヘッダ」に「Ｃｏｏｋｉｅ」フィールドが追加されている。そして、その「Ｃｏｏｋｉｅ」フィールドにセッションＩＤが設定されている。
【００６１】
図１８は、本実施形態における応答メッセージの中継処理フローを示す。受信部１２は、サーバ２から応答メッセージ（ｍｓｇ（５））を受信する（Ｓ６１）。応答中継部１７は、その応答メッセージ（ｍｓｇ（５））のレイヤ７プロトコルヘッダ、またはメッセージコンテンツからセッションＩＤの抽出を試みる（Ｓ６２）。サーバ２は、サービス継続が必要であると判断した場合は、セッションＩＤを含めた応答メッセージを送信する。
【００６２】
応答中継部１７は、応答メッセージ（ｍｓｇ（５））にセッションＩＤが含まれているか判定する（Ｓ６３）。応答メッセージ（ｍｓｇ（５））にセッションＩＤが含まれている場合（Ｓ６３で「Ｙｅｓ」）、Ｓ６４の処理へ進む。応答メッセージ（ｍｓｇ（５））にセッションＩＤが含まれていない場合（Ｓ６３で「Ｎｏ」）、Ｓ７０の処理に進む。
【００６３】
Ｓ７０において、応答中継部１７は、応答メッセージ（ｍｓｇ（５））のＬ２ヘッダ、パケットヘッダ（Ｌ３ヘッダ／Ｌ４ヘッダ）の内容を書き換えた応答メッセージ（ｍｓｇ（６））を生成する。送信部１４は、応答メッセージ（ｍｓｇ（６））を端末１へ送信する。
【００６４】
応答メッセージ（ｍｓｇ（５））にセッションＩＤが含まれている場合（Ｓ６３で「Ｙｅｓ」）、応答中継部１７は、Ｓ６２で抽出したセッションＩＤをキーに転送先管理テーブル２０を検索する（Ｓ６４）。転送先管理テーブル２０にそのセッションＩＤに対応するエントリが無い場合、応答中継部１７はＭｉｓｓ  Ｈｉｔと判定する。また、転送先管理テーブル２０にそのセッションＩＤに対応するエントリがあったとしても、応答メッセージの送信元サーバのアドレスがそのエントリに設定されたメッセージの転送先アドレスと異なる場合、応答中継部１７はＭｉｓｓ  Ｈｉｔと判定する。転送先管理テーブル２０にそのセッションＩＤに対応するエントリがあり、かつ転送先アドレスと応答メッセージの送信元のアドレスとが一致した場合のみ、応答中継部１７はＨｉｔと判定する。
【００６５】
Ｓ６５の検索の結果、転送先管理テーブル２０にＨｉｔするエントリが見つかった場合（Ｓ６５で「Ｙｅｓ」）、Ｓ６７の処理へ進む。Ｓ６５の検索の結果、転送先管理テーブル２０にＨｉｔするエントリが見つからなかった場合（Ｍｉｓｓ  Ｈｉｔの場合）（Ｓ６５で「Ｎｏ」）、Ｓ６６の処理へ進む。
【００６６】
Ｓ６６において、応答中継部１７は、Ｓ６２で抽出したセッションＩＤと応答メッセージの送信元アドレスを関連付けた転送先情報を用いて、転送先管理テーブル２０の更新処理を行う。すなわち、応答中継部１７は、Ｓ６２で抽出したセッションＩＤを、転送先管理テーブル２０のセッションＩＤの列に登録し、応答メッセージの送信元アドレスを転送先管理テーブル２０の転送先アドレスの列に登録する。
【００６７】
その後、応答中継部１７は、応答メッセージ（ｍｓｇ（５））のＬ２ヘッダ、パケットヘッダ（Ｌ３ヘッダ／Ｌ４ヘッダ）の内容を書き換えた応答メッセージ（ｍｓｇ（６））を生成する。送信部１４は、応答メッセージ（ｍｓｇ（６））を端末１へ送信する（Ｓ６７）。
【００６８】
Ｓ６７の処理後、配布部１８は、Ｓ６６で登録した転送先情報と最優先配布先リスト２３を用いて、転送先情報を通知するための通知メッセージ（ｍｓｇ（７））を作成する。配布部１８は、作成した通知メッセージ（ｍｓｇ（７））を他の中継装置へ配布する（Ｓ６８）。配布部１８は、配布時には最優先配布先リスト２３を参照し、最優先配布先リスト２３に登録されている中継装置１１全てに通知メッセージ（ｍｓｇ（７））の配布を行い、その配布が完了した時点で、Ｓ６８の処理を終了する。
【００６９】
それから、配布部１８は、Ｓ６６で登録した転送先情報を他の中継装置１１へ配布する（Ｓ６９）。配布部１８は、最優先配布先リスト２３及び中継装置リスト２１を参照し、中継装置リスト２１に登録された中継装置のうち、最優先配布先リスト２３に登録されていなかった残りの中継装置すべてに通知メッセージ（ｍｓｇ（７））を配布する。
【００７０】
図１９は、図１８のＳ６８またはＳ６９の処理の詳細を示す。配布先の中継装置１１−１は、配布元の中継装置１１から配布された通知メッセージ（ｍｓｇ（７））を受信する（Ｓ７１）。通知受信部１９は、通知メッセージ（ｍｓｇ（７））からセッションＩＤ及び転送先サーバアドレスを抽出する（Ｓ７２）。通知受信部１９は、そのセッションＩＤをキーに転送先管理テーブル２０を検索する（Ｓ７３）。
【００７１】
Ｓ７３の検索の結果、転送先管理テーブル２０にＨｉｔするエントリが見つからなかった場合（Ｓ７４で「Ｎｏ」）、通知受信部１９は、転送先管理テーブル２０に新たにエントリを追加する。そして、通知受信部１９は、そのエントリにＳ７２で抽出したセッションＩＤと転送先サーバアドレスを登録する（Ｓ７５）。
【００７２】
Ｓ７３の検索の結果、転送先管理テーブル２０中にＨｉｔするエントリが見つかった場合（Ｓ７４で「Ｙｅｓ」）、通知受信部１９は、そのエントリの転送先サーバアドレスを更新する（Ｓ７６）。
【００７３】
図２０は、サーバから中継装置へ送信される応答メッセージ（ｍｓｇ（５））のデータ構造の一例を示す。「Ｓｏｕｒｃｅ  ＭＡＣ」には、サーバのＭＡＣアドレスが設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＭＡＣ」には、中継装置のＭＡＣアドレスが設定されている。「Ｓｏｕｒｃｅ  ＩＰ：Ｐｏｒｔ」には、サーバのＩＰアドレス及びポート番号が設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ：Ｐｏｒｔ」には、中継装置のＩＰアドレス及びポート番号が設定されている。「ＨＴＴＰプロトコルヘッダ」に「Ｓｅｔ−Ｃｏｏｋｉｅ」フィールドが追加されている。そして、その「Ｓｅｔ−Ｃｏｏｋｉｅ」フィールドにセッションＩＤが設定されている。
【００７４】
図２１は、中継装置から負荷分散装置へ転送される応答メッセージ（ｍｓｇ（６））のデータ構造の一例を示す。「Ｓｏｕｒｃｅ  ＭＡＣ」には、中継装置のＭＡＣアドレスが設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＭＡＣ」には、負荷分散装置のＭＡＣアドレスが設定されている。「Ｓｏｕｒｃｅ  ＩＰ：Ｐｏｒｔ」には、中継装置のＩＰアドレス及びポート番号が設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ：Ｐｏｒｔ」には、端末のＩＰアドレス及びポート番号が設定されている。「ＨＴＴＰプロトコルヘッダ」に「Ｓｅｔ−Ｃｏｏｋｉｅ」フィールドが追加されている。そして、その「Ｓｅｔ−Ｃｏｏｋｉｅ」フィールドにセッションＩＤが設定されている。
【００７５】
図２２は、配布元の中継装置から配布先の中継装置へ配布される通知メッセージ（ｍｓｇ（７））のデータ構造の一例を示す。通知メッセージ（ｍｓｇ（７））は、中継装置１１間で送受信される制御用メッセージである。
【００７６】
「Ｓｏｕｒｃｅ  ＭＡＣ」には、メッセージの転送先情報の配布元となる中継装置のMACアドレスが設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＭＡＣ」には、メッセージの転送先情報の配布先となる中継装置のMACアドレスが設定されている。「Ｓｏｕｒｃｅ  ＩＰ：Ｐｏｒｔ」には、メッセージの転送先情報の配布元となる中継装置のIPアドレス及びポート番号が設定されている。「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ：Ｐｏｒｔ」には、メッセージの転送先情報の配布先となる中継装置の配布受付用ＩＰアドレス及びポート番号が設定されている。
【００７７】
「メッセージコンテンツ」には、「セッションＩＤ」フィールドと「転送先サーバアドレス」フィールドが追加されている。「セッションＩＤ」フィールドには、セッションＩＤが設定されている。「転送先サーバアドレス」には、「セッションＩＤ」フィールドに設定されたセッションＩＤで特定されるセッションデータを保持するサーバのＩＰアドレスが設定されている。
【００７８】
なお、図１２−図１７及び図２０−図２２ではレイヤ７プロトコルとしてＨＴＴＰを想定しているが、ＨＴＴＰ以外のレイヤ７プロトコルを用いても良いし、ＴＣＰ層の直上にメッセージコンテンツを載せても良い。また、メッセージは、ＴＣＰ以外の通信プロトコルを用いて送信することができる。その通信プロトコルとしては、例えばＵＤＰ（User Datagram Protocol）を挙げることができる。
【００７９】
本実施形態によれば、並列化されたＮ台の中継装置すべてに転送先情報を配布する方式と比較して、端末側への応答メッセージ送信前の設定配布先が１カ所になるため、配布のための処理遅延を1／Ｎに削減できる。この効果は、中継装置の並列度、Ｎが増すほど大きくなる。
【００８０】
また、応答メッセージ送信前に転送先情報を有する中継装置が１箇所であるため、中継に際し、転送先情報を有しない中継装置が後続メッセージを受信した場合、他の中継装置への問合せ処理による遅延が発生する可能性がある。しかし、本実施形態において、転送先情報の配布と問合せの制御を行うことにより、その問合せ処理に伴う遅延を最小限に抑えることができる。そのため、本実施形態では、全体として中継処理に伴って発生する遅延時間を短縮できる。
【００８１】
以下に、配布先・問合せ先の中継装置の選択方法についての実施例のバリエーションを示す。なお、以下で説明する処理において、特に言及しない限りは、上述した内容と同様のものとする。
【００８２】
（実施例１）
実施例１では、転送先情報の配布先及び問合せ先となる中継装置が予め決まっている場合の実施例について説明する。なお、実施例１において、上述した構成または機能と同一のものについては、同一の符号を付して、その説明を省略する。
【００８３】
図２３は、実施例１におけるメッセージ中継システムの構成の一例を示す。図２４は、実施例１における（Ａ）最優先配布先リスト、（Ｂ）問合せ先リストの一例を示す。メッセージ中継システム中の各中継装置には、図２４に示す共通の最優先配布先リスト２３及び問合せ先リスト２２が予め設定されている。図２３の中継装置（＃１）〜（＃１２）の構成は、図５と同じである。
【００８４】
図２３において、中継装置（＃５）は、セッション確立時における端末１からの初回リクエスト及びその応答メッセージ（セッションＩＤを含む）の中継処理を担当したとする。この場合、中継装置（♯５）は、まず、その初回リクエストに対する応答メッセージを端末１側へ返す（図１８のＳ６７）。その後、中継装置（♯５）は、矢印（太線）で示すように、最優先配布先リスト２３に設定された中継装置（＃１〜＃４）に対して、転送先情報を配布する（図１８のＳ６８）。
【００８５】
その後、中継装置（♯５）は、矢印（通常）で示すように、最優先配布先リスト２３に設定された中継装置（＃１〜＃４）以外の中継装置（低優先配布先）（＃６〜＃１２）に対して転送先情報を配布する（図１８のＳ６９）。なお、低優先配布先への転送先情報の配布は、中継装置（♯５）が他のより優先度の高い処理を実施していないときに実行される。
【００８６】
ここで、転送先情報が低優先配布先に配布される前に、低優先配布先の中継装置（図２３の場合、＃１１）がセッションＩＤを含む後続のリクエストメッセージを受信したとする。すると、中継装置（＃１１）は、図１０のリクエストメッセージ中継処理フローを実行する。中継装置（＃１１）は、そのセッションＩＤについてのメッセージの転送先情報を転送先管理テーブルに有していない。この場合、中継装置（＃１１）は、問合せリスト２２に基づいて、矢印（点線）で示すように、中継装置（＃１〜＃４）に順次、その転送先情報について問合せを行う（図１０のＳ４８）。
【００８７】
これにより、中継装置（＃１１）は、そのセッションＩＤに対応する転送先情報を取得し、転送先情報の示すサーバに対して、後続のリクエストメッセージを転送することができる（図１０のＳ４９−５１）。
【００８８】
なお、通信トラフィックが非常に多い場合、中継装置（♯５）が優先度の高い処理を実施し、優先度の低い処理を実行することができない状態が想定される。この場合、中継装置（♯５）は、優先度の高い処理と優先度の低い処理とを一定の比率で実施するようにしてもよい。例えば、中継装置（♯５）は、優先度の高い処理を１０回実施したら、優先度の低い処理を１回実施するようにしてもよい。
【００８９】
なお、図１８では、１２台の中継装置で構成されるメッセージ中継システムにおいて、優先的に配布する中継装置を＃１〜＃４の４台としているが、この台数は１台でも良いし、４台より多い台数に設定しても良い。
【００９０】
（実施例２）
実施例２では、転送先情報の配布先及び問合せ先となる中継装置が予め決まっている場合で、問合せ先がメッセージ中継装置の属するグループごとに異なる場合の実施例を説明する。なお、実施例２において、上述した構成または機能と同一のものについては、同一の符号を付して、その説明を省略する。
【００９１】
実施例１の場合、問合せ先リストに設定された中継装置に対して、どのような順番で問合せるかについては、図１０のＳ４８で説明したように、各中継装置の問い合わせアルゴリズムで実施する。そのため、特定の中継装置に問い合わせが集中する可能性がある。
【００９２】
そこで実施例２では、中継システムに含まれる中継装置をグループに分割し、それぞれのグループに少なくとも１つ最優先配布先となる中継装置を設ける。また、各グループの中継装置の問合せ先リストには、同グループに１つある最優先配布先の中継装置を記載しておく。これにより、問合せ負荷が複数の中継装置に分散される。
【００９３】
図２５は、実施例２におけるメッセージ中継システムの構成の一例を示す。図２６は、実施例２における各グループの各中継装置に設定された最優先配布先リスト、問合せ先リストの一例を示す。図２５の中継装置（＃１）〜（＃１２）の構成は、図５と同じである。なお、実施例２において、上述した構成または機能と同一のものについては、同一の符号を付して、その説明を省略する。
【００９４】
図２５において、メッセージ中継システム中の中継装置は、グループ＃Ａ，＃Ｂ、＃Ｃに分類されている。グループ＃Ａには、中継装置（＃１〜＃４）が属している。グループ＃Ｂには、中継装置（＃５〜＃８）が属している。グループ＃Ｃには、中継装置（＃９〜＃１２）が属している。
【００９５】
グループ＃Ａに属する各中継装置（＃１〜＃４）には、図２６（Ａ）に示す最優先配布先リスト２３ａ及び問合せ先リスト２２ａが予め設定されている。グループ＃Ｂに属する各中継装置（＃５〜＃８）には、図２６（Ｂ）に示す最優先配布先リスト２３ｂ及び問合せ先リスト２２ｂが予め設定されている。グループ＃Ｃに属する各中継装置（＃９〜＃１２）には、図２６（Ｃ）に示す最優先配布先リスト２３ｃ及び問合せ先リスト２２ｃが予め設定されている。
【００９６】
図２５において、中継装置（＃３）は、セッション確立時における端末１からの初回リクエスト及びその応答メッセージ（セッションＩＤを含む）の中継処理を担当したとする。この場合、中継装置（♯３）は、まず、その初回リクエストに対する応答メッセージを端末１側へ返す（図１８のＳ６７）。その後、中継装置（♯３）は、矢印（太線）で示すように、最優先配布先リスト２３ａに設定された中継装置（＃１，＃５，＃９）に対して、転送先情報を配布する（図１８のＳ６８）。その後、中継装置（♯３）は、矢印（通常）で示すように、最優先配布先リスト２３に設定された中継装置（＃１，＃５，＃９）以外の中継装置（低優先配布先の中継装置）に対して、転送先情報を含む通知メッセージを配布する（図１８のＳ６９）。なお、低優先配布先への転送先情報の配布は、中継装置（♯３）が他のより優先度の高い処理を実施していないときに実行される。
【００９７】
ここで、転送先情報が配布される前に、低優先配布先の中継装置（図２３の場合、＃１１）がそのセッションＩＤを含む後続のリクエストメッセージを受信したとする。すると、中継装置（＃１１）は、図１０のリクエストメッセージ中継処理フローを実行する。中継装置（＃１１）は、そのセッションＩＤについての転送先情報を転送先管理テーブルに有していない。この場合、中継装置（＃１１）は、矢印（点線）で示すように、問合せリスト２２ｃに基づいて、中継装置（＃９）に、そのメッセージの転送先情報について問合せを行う（図１０のＳ４８）。
【００９８】
これにより、中継装置（＃１１）は、そのセッションＩＤに対応する転送先情報を取得し、転送先情報の示すサーバに対して、後続のリクエストメッセージを転送することができる（図１０のＳ４９−５１）。
【００９９】
なお、通信トラフィックが非常に多い場合、中継装置（♯３）が優先度の高い処理を実施し、優先度の低い処理を実行することができない状態が想定される。この場合、中継装置（♯３）は、優先度の高い処理と優先度の低い処理とを一定の比率で実施するようにしてもよい。例えば、中継装置（♯３）は、優先度の高い処理を１０回実施したら、優先度の低い処理を１回実施するようにしてもよい。
【０１００】
（実施例３）
実施例２においては、最優先配布先の中継装置への転送先情報の配布および、残りの中継装置への転送先情報の配布を、セッション確立時のリクエスト・応答メッセージを処理した中継装置１台が実施する。この方式の場合、メッセージ中継システム内の全中継装置に転送先情報が配布されるまでに時間がかかる。そのため、後続リクエストメッセージがいずれかの中継装置に到達した際に、他の中継装置への問合せが発生する確立が高くなる。その結果として全体の平均応答遅延が低下してしまう。
【０１０１】
そこで、実施例３では、各グループ内において、最優先配布先の中継装置以外の中継装置への転送先情報の配布を最優先配布先の中継装置が担うことで、配布処理を分散実施する。なお、実施例３において、上述した構成または機能と同一のものについては、同一の符号を付して、その説明を省略する。
【０１０２】
図２７は、実施例３におけるメッセージ中継システムの構成の一例を示す。図２５と異なり、図２７では、最優先配布先の中継装置（＃１，＃５，＃９）はそれぞれ、自身の属するグループ内の他の中継装置に転送先情報を配布している。図２７では、最優先配布先の中継装置（＃１，＃５，＃９）には、グループ内装置リスト２４が設定されていることである。
【０１０３】
図２８は、実施例３における最優先配布先の中継装置の一例を示す。図２８の中継装置は、図５の中継装置に、グループ内装置リスト２４を追加したものである。なお、実施例３において、各グループの各中継装置に設定された最優先配布先リスト２３、問合せ先リスト２２は、図２６と同様である。また、最優先配布先の中継装置以外の中継装置は、図５の構成と同様である。
【０１０４】
図２９は、実施例３におけるグループ内装置リストの一例を示す。グループ内装置リスト２４は、そのグループに属する中継装置のアドレスをリスト化したものである。
図３０は、実施例３における応答メッセージの中継処理フローを示す。図３０のフローは、図１８のフローからＳ６９のループ処理を除いたものである。図２７において、中継装置（＃３）は、セッション確立時における端末１からの初回リクエスト及びその応答メッセージ（セッションＩＤを含む）の中継処理を担当したとする。この場合、中継装置（♯３）は、その初回リクエストに対する応答メッセージを端末１側へ返す（図１８のＳ６７）。その後、中継装置（♯３）は、最優先配布先リスト２３ａに設定された中継装置（＃１，＃５，＃９）に対して、転送先情報を配布する（図１８のＳ６８）。
【０１０５】
図３１は、実施例３における最優先配布先の中継装置によるグループ内の中継装置への転送先情報の配布処理を示す。図３１のフローは、図１９のフローに、Ｓ７７のループ処理を追加したものである。
【０１０６】
各グループの最優先配布先の中継装置（＃１，＃５，＃９）は、中継装置（＃３）から配布された通知メッセージ（ｍｓｇ（７））を受信する（Ｓ７１）。中継装置（＃１，＃５，＃９）の通知受信部１９は、通知メッセージ（ｍｓｇ（７））からセッションＩＤ及び転送先サーバアドレスを抽出する（Ｓ７２）。通知受信部１９は、そのセッションＩＤをキーに転送先管理テーブル２０を検索する（Ｓ７３）。
【０１０７】
Ｓ７３の検索の結果、転送先管理テーブル２０中にＨｉｔするエントリが見つからなかった場合（Ｓ７４で「Ｙｅｓ」）、通知受信部１９は、転送先管理テーブル２０に新たにエントリを追加する。そして、通知受信部１９は、そのエントリにＳ７２で抽出したセッションＩＤと転送先サーバアドレスを登録する（Ｓ７５）。
【０１０８】
Ｓ７３の検索の結果、転送先管理テーブル２０中にＨｉｔするエントリが見つかった場合、通知受信部１９は、そのエントリの転送先サーバアドレスを更新する（Ｓ７６）。
Ｓ７５またはＳ７６の終了後、中継装置（＃１，＃５，＃９）の配布部１８は、グループ内装置リストに設定されているグループ名の中継装置に宛てて、転送先情報を含む通知メッセージを配布する（Ｓ７７）。
【０１０９】
低優先配布先への転送先情報の配布は、中継装置（♯１，♯５，♯９）が他のより優先度の高い処理を実施していないときに実行される。なお、通信トラフィックが非常に多い場合、中継装置（♯１，♯５，♯９）が優先度の高い処理を実施していないことがないことが想定される。この場合、優先度の高い処理と優先度の低い処理とを一定の比率で実施してもよい（例えば、優先度の高い処理を１０回実施したら、優先度の低い処理を１回実施する）。
【０１１０】
（実施例４）
実施例１〜３では、優先配布先・問合せ先となる中継装置の処理負荷が高くなる可能性がある。そのため、優先配布先・問合せ先となる中継装置での処理がシステムの処理性能のボトルネックとなる可能性がある。そこで、実施例４では、配布・問合せ先となる中継装置をすべての中継装置まで広げ、セッションＩＤごとに優先配布先・問合せ先となる中継装置を決定する。なお、実施例４において、上述した構成または機能と同一のものについては、同一の符号を付して、その説明を省略する。
【０１１１】
図３２は、実施例４における中継装置の一例を示す。図３２の中継装置は、図５の中継装置に、計算部２５を追加したものである。
中継装置１１の台数をＮとして、それぞれに０〜Ｎ−１の装置番号が振られているものとする。セッション確立の初回リクエスト・応答メッセージを処理した中継装置１１では、計算部２５は、以下の処理を行う。転送先情報の配布時において、計算部２５は、セッションＩＤをＨａｓｈ関数に入力することにより、そのセッションＩＤを代表するハッシュ値Ｈを得る。それから、計算部２５は、Ｈ  ｍｏｄ  Ｎの演算を行い、その結果得られた数値k （０≦ｋ＜Ｎ）を装置番号に持つ中継装置を最優先配布先として、転送先情報を配布する。
【０１１２】
転送先情報の問合せ時には、リクエストメッセージにセッションＩＤが付与されてくるので、計算部２５は、配布時と同様にセッションＩＤをＨａｓｈ関数に入力し、ハッシュ値Hを得る。それから、計算部２５は、Ｈ  ｍｏｄ  Ｎの演算を行い、その結果得られた数値ｋ（０≦ｋ＜Ｎ）を装置番号に持つ中継装置に対して問合せを行う。
【０１１３】
セッションＩＤが同一のデータである限り、同データをＨａｓｈ関数に入力して得られるハッシュ値Ｈは同じであり、Ｈ  ｍｏｄ  Ｎ演算を施した結果得られる数値kも同じになる。そのため、同一セッションＩＤに対する最優先配布先の中継装置と問合せ先の中継装置とが一致する。
【０１１４】
図３３は、実施例４におけるリクエストメッセージの中継処理フローを示す。図３３のフローは、図１０のＳ４８のループ処理を、Ｓ８１〜Ｓ８３の処理に置き換えたものである。
【０１１５】
Ｓ４４の検索の結果、転送先管理テーブル２０中にＨｉｔするエントリが見つからなかった場合（Ｓ４５で「Ｎｏ」）、計算部２５は、上述したように、Ｈａｓｈ関数を用いて問合せ先となる中継装置を決定する（Ｓ８１）。すなわち、計算部２５は、Ｓ４２で抽出したセッションＩＤをＨａｓｈ関数に入力し、ハッシュ値Ｈを得る。それから、計算部２５は、Ｈ  ｍｏｄ  Ｎの演算を行い、その結果得られた数値ｋ（０≦ｋ＜Ｎ）を装置番号に持つ中継装置を問合せ先として決定する。
【０１１６】
問合せ部１５は、問合せ先として決定された中継装置に対して、Ｓ４２で抽出したセッションＩＤを含んだ問合せメッセージ（ｍｓｇ（２））を発行して問合せ処理を行う（Ｓ８２）。
【０１１７】
問合せの結果、問合せ先から転送先情報が取得できなかった場合（Ｓ８３で「Ｎｏ」）、問合せ部１５は、再度、問合せ先として決定された中継装置に対して問合せを行う。
問合せの結果、問合せ先から転送先情報が取得できた場合（Ｓ８３で「Ｙｅｓ」）、問合せ部１５は、取得した転送先情報とセッションＩＤとを関係付けて、転送先管理テーブル２０へ登録する（Ｓ４９）。リクエスト中継部１３は、取得した転送先情報を、メッセージの転送先のサーバアドレスとして決定する（Ｓ５０）。これ以降は、図１０と同じなのでその説明を省略する。
【０１１８】
図３４は、実施例４における応答メッセージの中継処理フローを示す。図３４のフローは、図１８のＳ６８のループ処理を、Ｓ９１〜Ｓ９２の処理に置き換えたものである。
Ｓ６７の処理後、計算部２５は、上述したように、Ｈａｓｈ関数を用いて配布先となる中継装置を決定する（Ｓ９１）。すなわち、計算部２５は、Ｓ６２で抽出したセッションＩＤをＨａｓｈ関数に入力し、ハッシュ値Ｈを得る。それから、計算部２５は、Ｈ  ｍｏｄ  Ｎの演算を行い、その結果得られた数値ｋ（０≦ｋ＜Ｎ）を装置番号に持つ中継装置を配布先として決定する。
【０１１９】
配布部１８は、Ｓ６６で登録した転送先情報と、決定した配布先のアドレス情報を用いて通知メッセージ（ｍｓｇ（７））を作成し、通知メッセージ（ｍｓｇ（７））を配布先となる中継装置へ配布する（Ｓ９２）。これ以降は、図１８と同じなのでその説明を省略する。
【０１２０】
（実施例５）
実施例４において、同一セッションＩＤについての問合せが一つのメッセージ中継装置（装置番号ｋ）に集中するため、その装置の負荷が問題となる可能性がある。そこで、Ｈａｓｈ関数を用いて、セッションＩＤに基づいて決定された最優先配布先となる中継装置ｋに加えて、ｋ＋１，ｋ＋２，・・・，ｋ＋ｎの装置番号を持つメッセージ中継装置を最優先配布先および問合せ先に加える。問合せ時には、セッションＩＤに基づいて作成した問合せ先リストから任意の中継装置が選択され、その選択された中継装置に対して転送先情報の問合せが行われるようにする。なお、実施例５において、上述した構成または機能と同一のものについては、同一の符号を付して、その説明を省略する。
【０１２１】
図３５は、実施例５におけるリクエストメッセージの中継処理フローを示す。図３５のフローは、図１０のＳ４８のループ処理を、Ｓ１０１〜Ｓ１０３の処理に置き換えたものである。なお、実施例５では、初期段階で、問合せ先リスト２２には問合せ先の中継装置のアドレスが格納されていない。
【０１２２】
Ｓ４４の検索の結果、転送先管理テーブル２０中にＨｉｔするエントリが見つからなかった場合（Ｓ４５で「Ｎｏ」）、計算部２５は、上述したように、Ｈａｓｈ関数を用いて問合せ先となる中継装置群を決定する（Ｓ１０１）。すなわち、計算部２５は、Ｓ４２で抽出したセッションＩＤをＨａｓｈ関数に入力し、ハッシュ値Ｈを得る。それから、計算部２５は、Ｈ  ｍｏｄ  Ｎの演算を行い、その結果得られたハッシュ値（０≦ｋ＜Ｎ）を装置番号に持つ中継装置を問合せ先として決定する。さらに、計算部２５は、ｋ＋１，ｋ＋２，・・・，ｋ＋ｎを装置番号に持つ中継装置を問合せ先として決定する。
【０１２３】
計算部２５は、ｋ，ｋ＋１，ｋ＋２，・・・，ｋ＋ｎを装置番号に持つ中継装置のアドレスを問合せ先リスト２２へ登録する（Ｓ１０２）。
問合せ部１５は、問合せ先リスト２２に登録された中継装置に対して、Ｓ４２で抽出したセッションＩＤを含んだ問合せメッセージ（ｍｓｇ（２））を発行して問合せ処理を行う（Ｓ１０３）。Ｓ１０３の処理は、図１０のＳ４８の処理と同じである。これ以降は、図１０と同じなのでその説明を省略する。
【０１２４】
図３６は、実施例５における応答メッセージの中継処理フローを示す。図３６のフローは、図１８のＳ６８のループ処理の前に、Ｓ１１１〜Ｓ１１２の処理を追加したものである。なお、実施例５では、初期段階で、最優先配布先リスト２３には配布先の中継装置のアドレスが格納されていない。
【０１２５】
Ｓ６７の処理後、計算部２５は、上述したように、Ｈａｓｈ関数を用いて配布先となる中継装置群を決定する（Ｓ１１１）。すなわち、計算部２５は、Ｓ６２で抽出したセッションＩＤをＨａｓｈ関数に入力し、ハッシュ値Ｈを得る。それから、計算部２５は、Ｈ  ｍｏｄ  Ｎの演算を行い、その結果得られた数値ｋ（０≦ｋ＜Ｎ）を装置番号に持つ中継装置を配布先として決定する。さらに、計算部２５は、ｋ＋１，ｋ＋２，・・・，ｋ＋ｎを装置番号に持つ中継装置を配布先として決定する。
【０１２６】
計算部２５は、ｋ，ｋ＋１，ｋ＋２，・・・，ｋ＋ｎを装置番号に持つ中継装置のアドレスを最優先配布先リスト２３へ登録する（Ｓ１１２）。
Ｓ６１１２の処理後、配布部１８は、Ｓ６６で登録した転送先情報と最優先配布先リスト２３を用いて通知メッセージ（ｍｓｇ（７））を作成し、通知メッセージ（ｍｓｇ（７））を他の中継装置へ配布する（Ｓ６８）。これ以降は、図１８と同じなのでその説明を省略する。
【０１２７】
（実施例６）
実施例５の問合せ時において、問合せ先リストから実際に問合せの対象となる中継装置の選択する処理は、各中継装置が独立に実施する。そのため、例えば、問合せを行うすべての中継装置がリストの先頭から問合せを実施した場合には、一つの中継装置に問合せ負荷が集中することになる。
【０１２８】
そこで、実施例６では、問合せ先への問合せがある程度分散するように、問合せ先選択ロジックを規定しておく。例えば、問合せ先リスト２２に登録された中継装置数がｎ（ｎは任意の整数）であるとする。この場合、問合せ元の中継装置は自身の装置番号m（ｍは任意の整数）に対して（ｍ  ｍｏｄ  ｎ）＋１の演算を行い、数値ｑ（１≦ｑ≦ｎ）を得る。それから、問合せ元の中継装置は、問合せ先リスト２２のｑ番目に登録された中継装置から開始してリストの登録順に転送先情報の問合せを行う。なお、リストの最後尾に登録されたアドレスに対して問合せが終わった後は、リストの先頭から問合せを行う。
【０１２９】
なお、実施例６において、上述した構成または機能と同一のものについては、同一の符号を付して、その説明を省略する。
【０１３０】
図３７は、実施例６におけるリクエストメッセージの中継処理フローを示す。図３７のフローは、図３５のＳ１０２とＳ１０３とを、Ｓ１２１、Ｓ１２２の処理に置き換えたものである。
【０１３１】
計算部２５は、ｋ，k＋１，ｋ＋２，・・・，ｋ＋ｎを装置番号に持つ中継装置のアドレスを問合せ先リスト２２へ登録する（Ｓ１０２）。
その後、計算部２５は、Ｈａｓｈ計算を用いて問合せ先リスト２２から問合せ開始となるリスト番号を決定する（Ｓ１２１）。ここで、リスト番号とは、問合せ先リスト２２に登録されたエントリに対して、問合せ先リスト２２の上から順に付した番号である。
【０１３２】
問合せ部１５は、問合せ先リスト２２に登録された中継装置に対して、決定したリスト番号の中継装置から順に、Ｓ４２で抽出したセッションＩＤを含んだ問合せメッセージ（ｍｓｇ（２））を発行して問合せ処理を行う（Ｓ１２２）。例えば、問合せ先リスト２２に登録された中継装置数がn、決定したリスト番号がｑの場合、問合せ部１５は、例えば、ｑ，ｑ＋１，ｑ＋２，・・・，ｎ，１，２，・・・，ｑ−１のリスト番号順（昇順）で、そのリスト番号に対応する中継装置に対して問合せを行う。なお、問合せは、リスト番号ｑから開始して、リスト番号順（降順）で、そのリスト番号に対応する中継装置に対して問合せを行うようにしてもよい。Ｓ１２２の処理は、図１０のＳ４８の処理と同じである。これ以降は、図１０と同じなのでその説明を省略する。
応答メッセージの中継処理については、図３６と同じである。
【０１３３】
（実施例７）
実施例７では、最優先配布先・問合せ先中継装置の選択に、実施例４のＨａｓｈ関数と事前設定のグループ定義を利用する方法を示す。なお、実施例７において、上述した構成または機能と同一のものについては、同一の符号を付して、その説明を省略する。
【０１３４】
図３８は、実施例７における中継装置の一例を示す。図３８の中継装置は、図３２の中継装置に、グループ定義テーブル２６を追加したものである。グループ定義テーブル２６は、各中継装置に配備されている。計算部２５は、セッション確立時の応答メッセージ中継処理時に、グループ定義テーブルを用いて最優先配布先リストを作成する。
【０１３５】
図３９は、実施例７におけるグループ定義テーブル２６の一例を示す。グループ定義テーブル２６は、「グループ番号」２６ａ、「中継装置」２６ｂのデータ項目を含む。「グループ番号」２６ａには、グループを識別する番号が格納される。「中継装置」２６ｂには、グループ番号で特定されるグループに属する中継装置の識別番号が格納される。
【０１３６】
ここで、中継装置の台数をＮとして、それぞれに０~Ｎ−１の装置番号が振られているものとする。中継装置は、図３９に示すように、Ｎ／ｎ個のメンバを持つｎ個のグループに分けられている。
【０１３７】
ｎ個のグループには1からｎまでのグループ番号が振られている。セッション確立の初回リクエスト・応答メッセージを処理した中継装置では、計算部２５は、以下の処理を行う。転送先情報の配布時において、計算部２５は、セッションＩＤをＨａｓｈ関数に入力ことにより、そのセッションＩＤを代表するハッシュ値Ｈを得る。それから、計算部２５は、Ｈ  ｍｏｄ  ｎの演算を行い、その結果得られた数値（０≦ｇ＜ｎ）をグループ番号に持つグループに属する中継装置を最優先配布先リストに登録する。配布部１８は、最優先配布先リストに登録された中継装置に対して転送先情報を配布する。
【０１３８】
転送先情報の問合せ時には、リクエストメッセージにセッションＩＤが付与されてくるので、計算部２５は、配布時と同様にセッションＩＤをＨａｓｈ関数に入力し、ハッシュ値Ｈを得る。それから、計算部２５は、Ｈ  ｍｏｄ  ｎの演算を行い、その結果得られた数値ｇ（０≦ｇ＜Ｎ）をグループ番号に持つグループに属する中継装置に対して問合せを行う。
【０１３９】
セッションＩＤが同一のデータである限り、同データをＨａｓｈ関数に入力して得られるハッシュ値Ｈは同じであり、Ｈ  ｍｏｄ  ｎ演算を施した結果得られる数値ｇも同じになる。そのため、同一セッションＩＤに対する最優先配布先の中継装置群と問合せ先の中継装置群とが一致する。
【０１４０】
図４０は、実施例７におけるリクエストメッセージの中継処理フローを示す。図４０のフローは、図１０のＳ４８のループ処理を、Ｓ１３１〜Ｓ１３３の処理に置き換えたものである。
【０１４１】
Ｓ４４の検索の結果、転送先管理テーブル２０中にＨｉｔするエントリが見つからなかった場合（Ｓ４５で「Ｎｏ」）、計算部２５は、上述したように、Ｈａｓｈ関数を用いて問合せ先のグループを決定する（Ｓ１３１）。すなわち、計算部２５は、Ｓ４２で抽出したセッションＩＤをHash関数に入力し、ハッシュ値Ｈを得る。それから、計算部２５は、Ｈ  ｍｏｄ  ｎの演算を行い、その結果得られた数値ｇ（０≦ｇ＜ｎ）を問合せ先のグループ番号として決定する。
【０１４２】
計算部２５は、グループ定義テーブル２６から、そのグループに属する中継装置番号を取得する。計算部２５は、その取得した中継装置番号で特定される中継装置のアドレスを問合せ先リスト２２へ登録する（Ｓ１３２）。
【０１４３】
問合せ部１５は、問合せ先リスト２２に登録された中継装置に対して、Ｓ４２で抽出したセッションＩＤを含んだ問合せメッセージ（ｍｓｇ（２））を発行して問合せ処理を行う（Ｓ１３３）。これ以降は、図１０と同じなのでその説明を省略する。
【０１４４】
図４１は、実施例７における応答メッセージの中継処理フローを示す。図４１のフローは、図１８のＳ６８のループ処理の前に、Ｓ１４１〜Ｓ１４２の処理を追加したものである。
【０１４５】
Ｓ６７の処理後、計算部２５は、上述したように、Hash関数を用いて配布先となるグループを決定する（Ｓ１４１）。すなわち、計算部２５は、Ｓ６２で抽出したセッションＩＤをＨａｓｈ関数に入力し、ハッシュ値Ｈを得る。それから、計算部２５は、Ｈ  ｍｏｄ  ｎの演算を行い、その結果得られた数値ｇ（０≦ｇ＜ｎ） を配布先のグループ番号として決定する。
【０１４６】
計算部２５は、グループ定義テーブル２６から、そのグループに属する中継装置番号を取得する。計算部２５は、その取得した中継装置番号で特定される中継装置のアドレスを最優先配布先リスト２２へ登録する（Ｓ１４２）。これ以降は、図１８と同じなのでその説明を省略する。
【０１４７】
（実施例８）
実施例８は、実施例６と実施例７との組み合わせである。なお、実施例８において、上述した構成または機能と同一のものについては、同一の符号を付して、その説明を省略する。
【０１４８】
図４２は、実施例８におけるリクエストメッセージの中継処理フローを示す。図４２のフローは、図４０のＳ１３２とＳ１３３との間に、図３７のＳ１２１の処理を追加したものである。
【０１４９】
計算部２５は、グループ定義テーブル２６を参照し、決定したグループ番号に属する装置群を問合せ先リスト２２へ登録する（Ｓ１３２）。その後、計算部２５は、Ｈａｓｈ計算を用いて問合せ先リスト２２から問合せ開始となるリスト番号を決定する（Ｓ１２１）。これ以降は、図３７と同じなのでその説明を省略する。
【０１５０】
図４３−図４５は、各リクエストへの応答時間（期待値）と１つのサービスセッション（１０メッセージで構成されると仮定）完了までにかかる時間を示したグラフを示す。図４３−図４５は、実施例７をモデルにしたものである。以下では、図４３−図４５を用いて、リクエストメッセージに対する応答メッセージの遅延時間の削減効果を説明する。
【０１５１】
図４３−図４５において、横軸は、初回のリクエストメッセージに対する応答メッセージを受信してからの経過時間［ｍｓｅｃ］を示す。縦軸は、端末がリクエストメッセージを送ってから、それに対応する応答メッセージを受信するまでの時間の期待値（リクエスト応答遅延期待値［ｍｓｅｃ］）である。
【０１５２】
図４３では、以下の条件で測定が行われた。
中継処理遅延：１０［ｍｓｅｃ］
設定処理遅延：２０［ｍｓｅｃ］
問合せ遅延：２０［ｍｓｅｃ］
中継装置数：１０
グループ内装置数：２
リクエスト発行間隔（前のメッセージを受信してから次のメッセージを発行するまでの時間）：１００［ｍｓｅｃ］、
１セッション当たりのメッセージ数：１０
なお、比較例として、図２の構成を用いた。
【０１５３】
各リクエストメッセージに対して応答メッセージが送られてくるまでの時間の期待値は、比較例が約３０［ｍｓｅｃ］であるのに対して、実施例７では約１１［ｍｓｅｃ］であり、実施例７の方が遅延時間が短い。
【０１５４】
また、比較例では、１回目のリクエストメッセージに対して応答メッセージが送られてくるまでの時間の期待値は、約２１０［ｍｓｅｃ］である。それに対して、実施例７の場合、１回目のリクエストメッセージに対して応答メッセージが送られてくるまでの時間の期待値は、約１０［ｍｓｅｃ］であり、応答までの時間のばらつきが少ない。また、実施例７では、リクエスト発行間隔は一定であるが、比較例では、１回目のメッセージを受信してから次のメッセージを発行するまでの時間が２５０［ｍｓｅｃ］以上かかっており、実施例７の方が短い。また、１セッションの最後のメッセージを受信するまでの時間は、実施例７が１００９［ｍｓｅｃ］であるのに対し、比較例は約１２００［ｍｓｅｃ］であり、実施例７の方が１セッション当たりの時間が短い。
【０１５５】
また、図４４では、以下の条件で測定が行われた。
中継処理遅延：１０［ｍｓｅｃ］
設定処理遅延：２０［ｍｓｅｃ］
問合せ遅延：２０［ｍｓｅｃ］
中継装置数：１００
グループ内装置数：１０
リクエスト発行間隔（前のメッセージを受信してから次のメッセージを発行するまでの時間）：１００［ｍｓｅｃ］、
１セッション当たりのメッセージ数：１０
なお、比較例として、図２の構成を用いた。
【０１５６】
各リクエストメッセージに対して応答メッセージが送られてくるまでの時間の期待値は、比較例が約２１０［ｍｓｅｃ］であるのに対して、実施例７では約２３［ｍｓｅｃ］であり、実施例７の方が遅延時間が短い。
【０１５７】
また、比較例と比べて、１回目のリクエストメッセージに対して応答メッセージが送られてくるまでの時間の期待値、リクエスト発行間隔、１セッション当たりの時間のいずれも実施例７の方が短い。
【０１５８】
また、図４５では、以下の条件で測定が行われた。
中継処理遅延：１０［ｍｓｅｃ］
設定処理遅延：２０［ｍｓｅｃ］
問合せ遅延：２０［ｍｓｅｃ］
中継装置数：１０
グループ内装置数：２
リクエスト発行間隔（前のメッセージを受信してから次のメッセージを発行するまでの時間）：１００［ｍｓｅｃ］、
１セッション当たりのメッセージ数：５
なお、比較例として、図２の構成を用いた。
【０１５９】
各リクエストメッセージに対して応答メッセージが送られてくるまでの時間の期待値は、比較例が約３０［ｍｓｅｃ］であるのに対して、実施例７では約１７［ｍｓｅｃ］であり、実施例７の方が遅延時間が短い。
【０１６０】
また、比較例と比べて、１回目のリクエストメッセージに対して応答メッセージが送られてくるまでの時間の期待値、リクエスト発行間隔、１セッション当たりの時間のいずれも実施例７の方が短い。
【０１６１】
いずれの条件を用いた場合も、転送先情報の配布および問合せに伴う遅延時間の削減により、端末への平均応答時間が、数分の１〜１０分の１に短縮されている。
また、実施例１−６，８に関しても、同様の効果を得ることができる。すなわち、比較例と比べて、１回目のリクエストメッセージに対して応答メッセージが送られてくるまでの時間の期待値、リクエスト発行間隔、１セッション当たりの時間のいずれも実施例１−６，８の方が短くなることが期待できる。
【０１６２】
図４６は、本実施形態を適用可能なコンピュータのハードウェア構成の一例を示す図である。端末装置１、サーバ２、中継装置１１、負荷分散装置５は何れも、コンピュータに専用のプログラムを実行させることで動作する。端末装置１は、クライアントアプリケーション１２をコンピュータに実行させることにより実現される。サーバ３はサーバアプリケーション３１をコンピュータに実行させることにより実現される。中継装置２はメッセージの中継を可能とさせるプログラムをコンピュータに実行させることにより実現される。負荷分散装置５は負荷分散させるプログラムをコンピュータに実行させることにより実現される。ここで図４６を参照して、端末装置１、サーバ２、中継装置１１、負荷分散装置５として使用可能なコンピュータについて具体的に説明する。
【０１６３】
図４６に示すコンピュータは、ＣＰＵ３１、メモリ３２、入力装置３３、出力装置３４、外部記憶装置３５、媒体駆動装置３６、及びネットワーク接続装置３７を含む。これらはバス３８によって互いに接続されている。図１８に示す構成は一例であり、これに限定されるものではない。
【０１６４】
ＣＰＵ（Central Processing Unit）３１は、当該コンピュータ全体の制御を行う。メモリ３２は、プログラムの実行、データ更新等の際に、外部記憶装置３５（または可搬型の記録媒体３９）に記憶されているプログラムまたはデータを一時的に格納するＲＡＭ等の半導体メモリである。ＣＰＵ３１は、プログラムをメモリ３２に読み出して実行することにより、全体の制御を行う。また、本実施形態において、中継装置１１のＣＰＵ３１は、本実施形態で説明した処理を実行するプログラムを読み込んで、リクエスト中継部１３、問合せ部１５、回答部１６、応答中継部１７、配布部１８、通知受信部１９、計算部２５として機能する。
【０１６５】
入力装置３３は、例えば、キーボード、マウス等の操作装置を介したデータ入力を可能とするものである。入力装置３３は、操作装置と接続可能なインターフェース、または操作装置とインターフェースを含むものである。入力装置３３は、操作装置に対するユーザの操作を検出し、その検出結果をＣＰＵ３１に通知する。この操作装置はコンソール等であっても良い。
【０１６６】
出力装置３４は、例えば表示装置、または表示装置と接続された表示制御装置である。外部記憶装置３５は、例えばハードディスク装置、フラッシュメモリ装置等である。主に各種データやプログラムの保存に用いられる。外部記憶装置３５には、例えば、転送先管理テーブル２０、中継装置リスト２１、問合せ先リスト２２、最優先配布先リスト２３、グループ内装置リスト２４、グループ定義テーブル２６が格納されている。
【０１６７】
媒体駆動装置３６は、光ディスク、光磁気ディスク、ＵＳＢ（Universal Serial Bus）メモリ装置またはメモリカード等の可搬型の記録媒体３９にアクセスするものである。ネットワーク接続装置３７は、通信ネットワークを介して外部装置と通信を行うためのものである。中継装置１１のネットワーク接続装置３７は、本実施形態で説明した受信部１２、送信部１４として機能する。
【０１６８】
本実施形態で説明した処理を実行するプログラムは、外部記憶装置３５、若しくは記録媒体３９に記録されているか、または通信ネットワークを介してネットワーク接続装置３７により取得される。そのプログラムが外部記憶装置３５に格納されていると想定する場合、端末装置１、中継装置１１、サーバ２及び負荷分散装置５の各構成要素は、上記コンピュータの以下のような構成要素の組み合わせによって実現される。その組み合わせは、更に、端末装置１、中継装置１１、サーバ２及び負荷分散装置５は全て同じ通信ネットワーク（例えば、ＬＡＮ（Local Area Network）、インターネット等）に接続されていると想定した場合のものである。
【０１６９】
上記実施形態によれば、情報処理端末と情報処理装置との間の通信を中継する中継装置は、第１抽出部と、送信部と、第２抽出部、問合せ部を含む。情報処理端末の一例は、端末１である。情報処理装置の一例は、情報処理端末から送信された要求情報に応じて応答情報を情報処理端末へ返信するサーバ２である。中継装置の一例は、中継装置１１である。
【０１７０】
第１抽出部は、情報処理端末からの初回の要求情報に対する応答情報が情報処理装置から受信された場合、次の処理を行う。第１抽出部は、受信した応答情報から、情報処理端末と情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、情報処理装置のアドレスを抽出して第１格納部に格納する。ここで、セッション識別情報は、前記要求情報を送信した情報処理端末と該要求情報を受信した情報処理装置との間で設定されるセッションを識別する情報である。セッション識別情報の一例には、セッションＩＤが含まれる。第１抽出部の一例には、応答中継部１７が含まれる。第１格納部の一例には、転送先管理テーブル２０が含まれる。
【０１７１】
送信部は、応答情報を情報処理端末へ送信する。送信部は、抽出した第１のセッション識別情報と情報処理装置のアドレスとを含むセッション対応アドレス情報を、中継装置とは別の１つ以上の中継装置に送信する。送信部の一例には、応答中継部１７及び配布部１８が含まれる。セッション対応アドレス情報の一例には、図２２の通知メッセージ（ｍｓｇ（７））に含まれる転送先情報（セッションＩＤ、転送先サーバアドレス）が含まれる。
【０１７２】
第２抽出部は、情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出する。第２抽出部の一例には、リクエスト中継部１３が含まれる。
問合せ部は、抽出した第２のセッション識別情報に対応するセッション対応アドレス情報が第１格納部に格納されていない場合、第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを別の１つ以上の中継装置に行う。問合せ部の一例には、問合せ部１５が含まれる。
【０１７３】
このように構成することにより、情報処理端末から要求情報が送信されてから、その要求情報に対する情報処理装置からの応答情報が返信されるまでの遅延時間を低減することができる。また、セッションを維持（一意性保証）しつつ、１回目のリクエストメッセージに対して応答メッセージが送られてくるまでの時間の期待値、リクエスト発行間隔、１セッション当たりの時間の短縮を図ることができる。このような構成のバリエーションには、例えば、次のものがある。
【０１７４】
複数の中継装置がグループに分類されている。送信部は、グループ毎に、いずれかの中継装置にセッション対応アドレス情報を送信する。問合せ部は、抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、自身が属するグループにおいてセッション対応アドレス情報が送信された中継装置に対して、前記問合せを行う。
【０１７５】
また、複数の中継装置のそれぞれに、連続する番号が順に付与されている。送信部は、ハッシュ関数を用いて前記第１のセッション識別情報のハッシュ値を算出する。さらに、送信部は、ハッシュ値を前記中継装置数で除算して得られた余りの値ｋ（ｋ：任意の整数）と一致する前記番号が付与された中継装置に対して、セッション対応アドレス情報を送信する。この場合、送信部の一例には、送信部１８だけでなく、計算部２５も含まれる。
【０１７６】
問合せ部は、抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出する。さらに、問合せ部は、ハッシュ値を中継装置数で除算して得られた余りの値と一致する番号が付与された中継装置に対して、問合せを行う。この場合、問合せ部の一例には、問合せ部１５だけでなく、計算部２５も含まれる。
【０１７７】
また、送信部は、ｋからｋ＋ｎ（ｎ：任意の整数）までの値と一致する前記番号が付与された中継装置に対して、セッション対応アドレス情報を送信する。この場合、送信部の一例には、送信部１８だけでなく、計算部２５も含まれる。
【０１７８】
問合せ部は、抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ｋからｋ＋ｎ（ｎ：任意の整数）までの値と一致する前記番号が付与された中継装置に対して、前記問合せを行う。この場合、問合せ部の一例には、問合せ部１５だけでなく、計算部２５も含まれる。
【０１７９】
中継装置は、さらに、第２格納部を含む。第２格納部には、セッション対応アドレス情報の送信先の中継装置のアドレス情報が登録される。第２格納部の一例には、最優先送信先リスト２３が含まれる。
【０１８０】
問合せ部は、抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて第２のセッション識別情報のハッシュ値を算出する。それから、問合せ部は、ハッシュ値を第２格納部に登録されたアドレス数で除算して得られた余りの値ｋ（ｋ：任意の整数）を算出する。さらに、問合せ部は、第２格納部のｋ番目に登録されたアドレスに対応する中継装置から昇順または降順で、第２格納部に登録されたアドレス情報に対応する中継装置に対して、前記問合せを行う。この場合、問合せ部の一例には、問合せ部１５だけでなく、計算部２５も含まれる。
【０１８１】
また、複数の中継装置がグループに分類されている。グループのそれぞれには連続する番号が順に付与されている。中継装置は、さらに、第３格納部を含む。
第３格納部には、グループに付与された番号と、該番号に対応するグループに属する中継装置に付与された番号とが格納される。第３格納部の一例には、グループ定義テーブル２６が含まれる。
【０１８２】
送信部は、ハッシュ関数を用いて第１のセッション識別情報のハッシュ値を算出する。それから、送信部は、ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を第３格納部から取得する。さらに、送信部は、取得した中継装置に対して、セッション対応アドレス情報を送信する。この場合、送信部の一例には、送信部１８だけでなく、計算部２５も含まれる。
【０１８３】
問合せ部は、抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて第２のセッション識別情報のハッシュ値を算出する。それから、問合せ部は、ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を第３格納部から検索する。さらに、前記問合せ部は、検索した中継装置に対して、前記問合せを行う。この場合、問合せ部の一例には、問合せ部１５だけでなく、計算部２５も含まれる。
【０１８４】
また、問合せ部は、さらに、算出されたハッシュ値ｇと一致する前記番号が付与されたグループに属する中継装置数で除算して得られた余りの値ｈ（ｈ：任意の整数）を算出する。問合せ部は、第３格納部において該グループに属する中継装置のうちｈ番目に登録された中継装置から昇順または降順で、該中継装置に対して、前記問合せを行う。
【０１８５】
また、送信部は、セッション対応アドレス情報の送信先の中継装置にセッション対応アドレス情報を送信した後に、送信した中継装置以外の中継装置に対して、セッション対応アドレス情報を送信する。
【０１８６】
また、各グループで前記セッション対応アドレス情報が送信された中継装置の送信部は、自身の属するグループに属する中継装置に対して、セッション対応アドレス情報を送信する。
【０１８７】
なお、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。また、当業者にとって実施可能な範囲において、実施例１〜実施例８のうち２以上を組み合わせてもよい。
【０１８８】
上記実施形態に関し、更に以下の付記を開示する。
（付記１）
情報処理端末と情報処理装置との間の通信を中継する中継装置であって、
前記情報処理端末からの初回の要求情報に対する応答情報が前記情報処理装置から受信された場合、受信した該応答情報から、前記情報処理端末と前記情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、前記情報処理装置のアドレスを抽出して第１格納部に格納する第１抽出部と、
前記応答情報を前記情報処理端末へ送信し、抽出した前記第１のセッション識別情報と前記情報処理装置のアドレスとを含むセッション対応アドレス情報を、前記中継装置とは別の１つ以上の中継装置に送信する送信部と、
前記情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出する第２抽出部と、
抽出した前記第２のセッション識別情報に対応するセッション対応アドレス情報が前記第１格納部に格納されていない場合、前記第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを前記別の１つ以上の中継装置に行う問合せ部と、
を備えることを特徴とする中継装置。
（付記２）
複数の前記中継装置がグループに分類されており、
前記送信部は、前記グループ毎に、いずれかの前記中継装置に前記セッション対応アドレス情報を送信し、
前記問合せ部は、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、自身が属するグループにおいて前記セッション対応アドレス情報が送信された中継装置に対して、前記問合せを行う
ことを特徴とする付記１に記載の中継装置。
（付記３）
複数の前記中継装置のそれぞれに、連続する番号が順に付与されており、
前記送信部は、ハッシュ関数を用いて前記第１のセッション識別情報のハッシュ値を算出し、前記ハッシュ値を前記中継装置数で除算して得られた余りの値ｋ（ｋ：任意の整数）と一致する前記番号が付与された中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せ部は、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、前記ハッシュ値を前記中継装置数で除算して得られた余りの値と一致する前記番号が付与された中継装置に対して、前記問合せを行う
ことを特徴とする付記１に記載の中継装置。
（付記４）
前記送信部は、ｋからｋ＋ｎ（ｎ：任意の整数）までの値と一致する前記番号が付与された中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せ部は、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ｋからｋ＋ｎ（ｎ：任意の整数）までの値と一致する前記番号が付与された中継装置に対して、前記問合せを行う
ことを特徴とする付記１に記載の中継装置。
（付記５）
前記中継装置は、さらに、
前記セッション対応アドレス情報の送信先の中継装置のアドレス情報が登録される第２格納部
を備え、
前記問合せ部は、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、前記ハッシュ値を前記第２格納部に登録されたアドレス数で除算して得られた余りの値ｋ（ｋ：任意の整数）を算出し、前記第２格納部のｋ番目に登録されたアドレスに対応する中継装置から昇順または降順で、前記第２格納部に登録されたアドレス情報に対応する中継装置に対して、前記問合せを行う
ことを特徴とする付記１に記載の中継装置。
（付記６）
複数の前記中継装置がグループに分類され、該グループのそれぞれには連続する番号が順に付与され、
前記中継装置は、さらに、
前記グループに付与された番号と、該番号に対応するグループに属する前記中継装置に付与された番号とが格納される第３格納部
を備え、
前記送信部は、ハッシュ関数を用いて前記第１のセッション識別情報のハッシュ値を算出し、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を前記第３格納部から検索し、該検索した中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せ部は、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を前記第３格納部から検索し、該検索された中継装置に対して、前記問合せを行う
ことを特徴とする付記１に記載の中継装置。
（付記７）
前記問合せ部は、さらに、前記算出されたハッシュ値ｇと一致する前記番号が付与されたグループに属する中継装置数で除算して得られた余りの値ｈ（ｈ：任意の整数）を算出し、前記第３格納部において該グループに属する中継装置のうちｈ番目に登録された中継装置から昇順または降順で、該中継装置に対して、前記問合せを行う
ことを特徴とする付記６に記載の中継装置。
（付記８）
前記送信部は、前記セッション対応アドレス情報の送信先の中継装置に前記セッション対応アドレス情報を送信した後に、該送信した中継装置以外の中継装置に対して、前記セッション対応アドレス情報を送信する
ことを特徴とする付記１〜７のうちいずれか１項に記載の中継装置。
（付記９）
前記各グループで前記セッション対応アドレス情報が送信された中継装置の送信部は、自身の属するグループに属する中継装置に対して、前記セッション対応アドレス情報を送信する
ことを特徴とする付記２、６、または７のいずれか１項に記載の中継装置。
（付記１０）
情報処理端末と情報処理装置との間の通信を中継する中継装置に実行させる中継プログラムであって、
前記情報処理端末からの初回の要求情報に対する応答情報が前記情報処理装置から受信された場合、受信した該応答情報から、前記情報処理端末と前記情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、前記情報処理装置のアドレスを抽出して第１格納部に格納し、
前記応答情報を前記情報処理端末へ送信し、抽出した前記第１のセッション識別情報と前記情報処理装置のアドレスとを含むセッション対応アドレス情報を、前記中継装置とは別の１つ以上の中継装置に送信し、
前記情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出し、
抽出した前記第２のセッション識別情報に対応するセッション対応アドレス情報が前記第１格納部に格納されていない場合、前記第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを前記別の１つ以上の中継装置に行う、
処理を実行させる中継プログラム。
（付記１１）
複数の前記中継装置がグループに分類されており、
前記セッション対応アドレス情報の送信において、前記グループ毎に、いずれかの前記中継装置に前記セッション対応アドレス情報を送信し、
前記問合せにおいて、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、自身が属するグループにおいて前記セッション対応アドレス情報が送信された中継装置に対して、前記問合せを行う
ことを特徴とする付記１０に記載の中継プログラム。
（付記１２）
複数の前記中継装置のそれぞれに、連続する番号が順に付与されており、
前記セッション対応アドレス情報の送信において、ハッシュ関数を用いて前記第１のセッション識別情報のハッシュ値を算出し、前記ハッシュ値を前記中継装置数で除算して得られた余りの値ｋ（ｋ：任意の整数）と一致する前記番号が付与された中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せにおいて、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、前記ハッシュ値を前記中継装置数で除算して得られた余りの値と一致する前記番号が付与された中継装置に対して、前記問合せを行う
ことを特徴とする付記１０に記載の中継プログラム。
（付記１３）
前記セッション対応アドレス情報の送信において、ｋからｋ＋ｎ（ｎ：任意の整数）までの値と一致する前記番号が付与された中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せにおいて、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ｋからｋ＋ｎ（ｎ：任意の整数）までの値と一致する前記番号が付与された中継装置に対して、前記問合せを行う
ことを特徴とする付記１０に記載の中継プログラム。
（付記１４）
前記問合せにおいて、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、第２格納部から前記セッション対応アドレス情報の送信先の中継装置のアドレス数を取得し、前記ハッシュ値を前記取得した送信先の中継装置のアドレス数で除算して得られた余りの値ｋ（ｋ：任意の整数）を算出し、前記第２格納部のｋ番目に登録されたアドレスに対応する中継装置から昇順または降順で、前記第２格納部に登録されたアドレス情報に対応する中継装置に対して、前記問合せを行う
ことを特徴とする付記１０に記載の中継プログラム。
（付記１５）
複数の前記中継装置がグループに分類され、該グループのそれぞれには連続する番号が順に付与され、
前記セッション対応アドレス情報の送信において、ハッシュ関数を用いて前記第１のセッション識別情報のハッシュ値を算出し、前記グループに付与された番号と、該番号に対応するグループに属する前記中継装置に付与された番号とが格納された第３格納部から、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を取得し、該取得した中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せにおいて、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、前記ハッシュ値をグループ数で除算して得られた余りの値ｇ（ｇ：任意の整数）と一致する前記番号が付与されたグループに属する中継装置を前記第３格納部から検索し、該検索された中継装置に対して、前記問合せを行う
ことを特徴とする付記１０に記載の中継プログラム。
（付記１６）
情報処理端末と情報処理装置との間の通信を中継する中継装置に実行させる中継方法であって、
前記中継装置は、
前記情報処理端末からの初回の要求情報に対する応答情報が前記情報処理装置から受信された場合、受信した該応答情報から、前記情報処理端末と前記情報処理装置との間で設定されるセッションを識別する第１のセッション識別情報、及び、前記情報処理装置のアドレスを抽出して第１格納部に格納し、
前記応答情報を前記情報処理端末へ送信し、抽出した前記第１のセッション識別情報と前記情報処理装置のアドレスとを含むセッション対応アドレス情報を、前記中継装置とは別の１つ以上の中継装置に送信し、
前記情報処理端末から受信した２回目以降の要求情報から、第２のセッション識別情報を抽出し、
抽出した前記第２のセッション識別情報に対応するセッション対応アドレス情報が前記第１格納部に格納されていない場合、前記第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを前記別の１つ以上の中継装置に行う、
ことを特徴とする中継方法。
（付記１７）
複数の前記中継装置がグループに分類されており、
前記中継装置は、
前記セッション対応アドレス情報の送信において、前記グループ毎に、いずれかの前記中継装置に前記セッション対応アドレス情報を送信し、
前記問合せにおいて、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、自身が属するグループにおいて前記セッション対応アドレス情報が送信された中継装置に対して、前記問合せを行う
ことを特徴とする付記１６に記載の中継方法。
（付記１８）
複数の前記中継装置のそれぞれに、連続する番号が順に付与されており、
前記中継装置は、
前記セッション対応アドレス情報の送信において、ハッシュ関数を用いて前記第１のセッション識別情報のハッシュ値を算出し、前記ハッシュ値を前記中継装置数で除算して得られた余りの値ｋ（ｋ：任意の整数）と一致する前記番号が付与された中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せにおいて、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、前記ハッシュ値を前記中継装置数で除算して得られた余りの値と一致する前記番号が付与された中継装置に対して、前記問合せを行う
ことを特徴とする付記１６に記載の中継方法。
（付記１９）
前記中継装置は、
前記セッション対応アドレス情報の送信において、ｋからｋ＋ｎ（ｎ：任意の整数）までの値と一致する前記番号が付与された中継装置に対して、前記セッション対応アドレス情報を送信し、
前記問合せにおいて、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ｋからｋ＋ｎ（ｎ：任意の整数）までの値と一致する前記番号が付与された中継装置に対して、前記問合せを行う
ことを特徴とする付記１６に記載の中継方法。
（付記２０）
前記中継装置は、
前記問合せにおいて、前記抽出した第２のセッション識別情報に対応するセッション対応アドレス情報の問合せを行う場合、ハッシュ関数を用いて前記第２のセッション識別情報のハッシュ値を算出し、第２格納部から前記セッション対応アドレス情報の送信先の中継装置のアドレス数を取得し、前記ハッシュ値を前記取得した送信先の中継装置のアドレス数で除算して得られた余りの値ｋ（ｋ：任意の整数）を算出し、前記第２格納部のｋ番目に登録されたアドレスに対応する中継装置から昇順または降順で、前記第２格納部に登録されたアドレス情報に対応する中継装置に対して、前記問合せを行う
ことを特徴とする付記１６に記載の中継方法。
【符号の説明】
【０１８９】
１      端末
２      サーバ
５      負荷分散装置
９      ネットワーク
１０    中継システム
１１    中継装置
１２    受信部
１３    リクエスト中継部
１４    送信部
１５    問合せ部
１６    回答部
１７    応答中継部
１８    配布部
１９    通知受信部
２０    転送先管理テーブル
２１    中継装置リスト
２２    問合せ先リスト
２３    最優先配布先リスト
２４    グループ内装置リスト
２５    計算部
２６    グループ定義テーブル
【図１】
0005741150.tif 000002
【図２】
0005741150.tif 000003
【図３】
0005741150.tif 000004
【図４】
0005741150.tif 000005
【図５】
0005741150.tif 000006
【図６】
0005741150.tif 000007
【図７】
0005741150.tif 000008
【図８】
0005741150.tif 000009
【図９】
0005741150.tif 000010
【図１０】
0005741150.tif 000011
【図１１】
0005741150.tif 000012
【図１２】
0005741150.tif 000013
【図１３】
0005741150.tif 000014
【図１４】
0005741150.tif 000015
【図１５】
0005741150.tif 000016
【図１６】
0005741150.tif 000017
【図１７】
0005741150.tif 000018
【図１８】
0005741150.tif 000019
【図１９】
0005741150.tif 000020
【図２０】
0005741150.tif 000021
【図２１】
0005741150.tif 000022
【図２２】
0005741150.tif 000023
【図２４】
0005741150.tif 000024
【図２６】
0005741150.tif 000025
【図２８】
0005741150.tif 000026
【図２９】
0005741150.tif 000027
【図３０】
0005741150.tif 000028
【図３１】
0005741150.tif 000029
【図３２】
0005741150.tif 000030
【図３３】
0005741150.tif 000031
【図３４】
0005741150.tif 000032
【図３５】
0005741150.tif 000033
【図３６】
0005741150.tif 000034
【図３７】
0005741150.tif 000035
【図３８】
0005741150.tif 000036
【図３９】
0005741150.tif 000037
【図４０】
0005741150.tif 000038
【図４１】
0005741150.tif 000039
【図４２】
0005741150.tif 000040
【図４６】
0005741150.tif 000041
【図２３】
0005741150.tif 000042
【図２５】
0005741150.tif 000043
【図２７】
0005741150.tif 000044
【図４３】
0005741150.tif 000045
【図４４】
0005741150.tif 000046
【図４５】
0005741150.tif 000047