(57)【特許請求の範囲】
【請求項１】
複数の中継装置のいずれかが、スイッチから受信したリクエストを、セッションを介して宛先へ転送する中継システムにおけるリクエスト中継方法であって、
前記スイッチは、前記リクエストをいずれかの中継装置へ転送する際に参照する、振り分けルールを管理し、
前記振り分けルールは、更新される度に新たなバージョンが割り当てられるものであり、
前記スイッチは、前記リクエストを、自装置が管理する前記振り分けルールに従い、いずれかの中継装置へ転送し、
各々の前記中継装置は、
前記スイッチが管理するバージョン以前のバージョンの前記振り分けルールを管理し、
自装置が管理する前記セッションと、当該セッションを用いて転送するリクエストと、を対応づけるセッション管理データを管理し、
受信したリクエストについて、前記セッション管理データを検索し、
前記セッション管理データ内に前記受信したリクエストに対応するセッションが存在する場合には、当該対応するセッションの情報を用いて前記リクエストを前記宛先へ転送し、
前記セッション管理データ内に前記受信したリクエストに対応するセッションが存在しない場合には、自装置が管理する前記振り分けルールに従い、前記リクエストの転送先となる前記中継装置である転送先装置を特定し、特定した前記転送先装置へ前記リクエストを転送することを特徴とする
リクエスト中継方法。
【請求項２】
前記中継装置は、前記転送先装置を特定する処理において、
前記自装置が管理しているバージョンの振り分けルールのうち、受信した前記リクエストの自装置への送信に使用された転送元使用バージョンの特定を行い、特定できた場合は、特定した前記転送元使用バージョンより１つ前のバージョンを、前記転送先装置の特定に使用する転送先特定用バージョンとし、その転送先特定用バージョンの前記振り分けルールに従い、前記転送先装置を特定することを特徴とする
請求項１に記載のリクエスト中継方法。
【請求項３】
前記中継装置は、前記転送先装置へ前記リクエストを転送する処理において、
前記転送先特定用バージョンの情報を、前記リクエストに付加して転送することを特徴とする
請求項２に記載のリクエスト中継方法。
【請求項４】
前記中継装置は、前記転送先装置を特定する処理において、
自装置が受信した前記リクエストにバージョン情報が付加されている場合には、当該付加されているバージョン情報を参照して、前記転送元使用バージョンの特定を行い、
自装置が受信した前記リクエストにバージョン情報が付加されていない場合には、前記リクエストに含まれるアドレス情報を用いて、前記転送先装置を特定することを特徴とする
請求項３に記載のリクエスト中継方法。
【請求項５】
前記中継装置は、
前記転送先装置へ前記リクエストを転送する処理が、ある期間に発生しない場合に、その旨を前記振り分けルールを管理する管理装置へ通知し、
自装置が管理する前記振り分けルールの消去指示を前記管理装置から受信した場合に、自装置が管理する前記振り分けルールのうち、前記スイッチが管理するバージョンよりも古いバージョンの前記振り分けルールを自装置から消去することを特徴とする
請求項１に記載のリクエスト中継方法。
【請求項６】
前記中継装置は、自装置を停止させる旨のメッセージを前記振り分けルールを管理する管理装置から受信した後、
前記セッション管理データ内のセッションの情報を用いて前記リクエストを前記宛先へ転送する処理を継続しつつ、前記セッション管理データ内に新規の前記セッションを登録する処理を終了し、
前記セッション管理データ内の前記セッションが無くなることを検知すると、その旨を前記管理装置へ通知することを特徴とする
請求項１ないし請求項５のいずれか１項に記載のリクエスト中継方法。
【請求項７】
請求項１ないし請求項６のいずれか１項に記載のリクエスト中継方法を、コンピュータである前記中継装置に実行させるためのリクエスト中継プログラム。
【請求項８】
複数の中継装置のいずれかが、スイッチから受信したリクエストを、セッションを介して宛先へ転送する中継システムにおける中継装置であって、
前記スイッチは、前記リクエストをいずれかの中継装置へ転送する際に参照する、振り分けルールを管理し、
前記振り分けルールは、更新される度に新たなバージョンが割り当てられるものであり、
前記スイッチは、前記リクエストを、自装置が管理する前記振り分けルールに従い、いずれかの中継装置へ転送し、
各々の前記中継装置は、
前記スイッチが管理するバージョン以前のバージョンの前記振り分けルールを管理し、
自装置が管理する前記セッションと、当該セッションを用いて転送するリクエストと、を対応づけるセッション管理データを管理し、
受信したリクエストについて、前記セッション管理データを検索し、
前記セッション管理データ内に前記受信したリクエストに対応するセッションが存在する場合には、当該対応するセッションの情報を用いて前記リクエストを前記宛先へ転送し、
前記セッション管理データ内に前記受信したリクエストに対応するセッションが存在しない場合には、自装置が管理する前記振り分けルールに従い、前記リクエストの転送先となる前記中継装置である転送先装置を特定し、特定した前記転送先装置へ前記リクエストを転送することを特徴とする
中継装置。
【請求項９】
前記中継装置は、前記転送先装置を特定する処理において、
前記自装置が管理しているバージョンの振り分けルールのうち、受信した前記リクエストの自装置への送信に使用された転送元使用バージョンの特定を行い、特定できた場合は、特定した前記転送元使用バージョンより１つ前のバージョンを、前記転送先装置の特定に使用する転送先特定用バージョンとし、その転送先特定用バージョンの前記振り分けルールに従い、前記転送先装置を特定することを特徴とする
請求項８に記載の中継装置。
【請求項１０】
前記中継装置は、前記転送先装置へ前記リクエストを転送する処理において、
前記転送先特定用バージョンの情報を、前記リクエストに付加して転送することを特徴とする
請求項９に記載の中継装置。
【請求項１１】
前記中継装置は、前記転送先装置を特定する処理において、
自装置が受信した前記リクエストにバージョン情報が付加されている場合には、当該付加されているバージョン情報を参照して、前記転送元使用バージョンの特定を行い、
自装置が受信した前記リクエストにバージョン情報が付加されていない場合には、前記リクエストに含まれるアドレス情報を用いて、前記転送先装置を特定することを特徴とする
請求項１０に記載の中継装置。
【請求項１２】
前記中継装置は、
前記転送先装置へ前記リクエストを転送する処理が、ある期間に発生しない場合に、その旨を前記振り分けルールを管理する管理装置へ通知し、
自装置が管理する前記振り分けルールの消去指示を前記管理装置から受信した場合に、自装置が管理する前記振り分けルールのうち、前記スイッチが管理するバージョンよりも古いバージョンの前記振り分けルールを自装置から消去することを特徴とする
請求項８に記載の中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リクエスト中継方法、リクエスト中継プログラム、および、中継装置の技術に関する。
【背景技術】
【０００２】
有線ネットワーク網や無線ネットワーク網に接続される端末の普及により、ＷＷＷ（World Wide Web）サーバなどのサーバとクライアントとでやり取りされるデータ量が増大している。また、有線ネットワーク網や無線ネットワーク網の通信帯域の大容量化に伴うデータ通信時間の短縮や、コンテンツサイズの増大により、通信量が増加している。
【０００３】
サーバとクライアントとの通信を中継するための中継装置（ノード）は、通信キャリアやインターネットサービスプロバイダなどのサービス事業者に設置されることが多い。通信量が増大することにより、中継装置を通過する通信量も増大する。この通信量増大に伴い、中継装置の処理能力増強が必要である。そこで、中継装置の台数を増やす（スケールアウトする）ことで、複数の中継装置で処理を分散して、システム全体のパフォーマンス向上させることができる。
【０００４】
中継装置は、サーバとクライアントとの通信を行うためのＴＣＰ（Transmission Control Protocol）接続（コネクション）を管理しており、このコネクションの管理情報を基に、サーバとクライアントとの通信パケットを転送する。しかし、複数の中継装置のうちのコネクションを管理していない中継装置は、そのコネクションを介する通信パケットを転送することができないため、その通信パケットを廃棄せざるを得ず、通信が途絶してしまう。
【０００５】
一般的には、コネクションを管理する中継装置へとリクエストが送信されるように、リクエストを振り分ける経路が設定されているので、前記した通信パケットの廃棄は発生しない。しかし、スケールアウトにより中継装置が増設されると、増設された中継装置と増設前の中継装置とで負荷分散を行うために、その増設前後でリクエストを振り分ける経路（中継装置）が変更される場合がある。つまり、コネクションを管理していない中継装置に対して、リクエストが振り分けられてしまう可能性がある。
【０００６】
そこで、特許文献１および特許文献２に開示されている技術では、コネクションを管理している中継装置から、コネクションを管理していない中継装置に対して、そのコネクションの管理情報を通知することにより、通信パケットの廃棄を抑制する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許４０４１０３８号明細書
【特許文献２】米国公開特許公報２００７／０１９８７２１
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、コネクションの管理情報を通知するように中継装置を実行することは、以下に例示するようにデメリットが高い。
まず、通信継続に必要な情報の転送中は通信が停止してしまうので、コネクションを利用するユーザへの通信サービスの品質低下を招いてしまう。
次に、コネクションの管理情報は情報の転送データサイズが大きいため、通信サービス事業者網のネットワークを圧迫するので、ネットワークの通信効率が低下する。
【０００９】
さらに、コネクションの管理情報は、通常はＯＳ（Operating System）内にソケットとして実装されており、コネクションの管理情報を他の装置から通知されることはＯＳの設計では前提とされていない。よって、他の装置から通知されるコネクションの管理情報を、自装置のものとして取り込むための修正コストが大きい。
【００１０】
そこで、本発明は、前記した問題を解決し、中継装置のネットワーク構成が変更されたときでも、高品質の通信を提供することを、主な目的とする。
【課題を解決するための手段】
【００１１】
前記課題を解決するために、本発明は、複数の中継装置のいずれかが、スイッチから受信したリクエストを、セッションを介して宛先へ転送する中継システムにおけるリクエスト中継方法であって、
前記スイッチは、前記リクエストをいずれかの中継装置へ転送する際に参照する、振り分けルールを管理し、
前記振り分けルールは、更新される度に新たなバージョンが割り当てられるものであり、
前記スイッチは、前記リクエストを、自装置が管理する前記振り分けルールに従い、いずれかの中継装置へ転送し、
各々の前記中継装置は、
前記スイッチが管理するバージョン以前のバージョンの前記振り分けルールを管理し、
自装置が管理する前記セッションと、当該セッションを用いて転送するリクエストと、を対応づけるセッション管理データを管理し、
受信したリクエストについて、前記セッション管理データを検索し、
前記セッション管理データ内に前記受信したリクエストに対応するセッションが存在する場合には、当該対応するセッションの情報を用いて前記リクエストを前記宛先へ転送し、
前記セッション管理データ内に前記受信したリクエストに対応するセッションが存在しない場合には、自装置が管理する前記振り分けルールに従い、前記リクエストの転送先となる前記中継装置である転送先装置を特定し、特定した前記転送先装置へ前記リクエストを転送することを特徴とする。
その他の手段は、後記する。
【発明の効果】
【００１２】
本発明によれば、中継装置のネットワーク構成が変更されたときでも、高品質の通信を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態に関するコンピュータシステムを示す構成図である。
【図２】本発明の一実施形態に関する管理装置を示す構成図である。
【図３】本発明の一実施形態に関する中継装置を示す構成図である。
【図４】本発明の一実施形態に関する図１のコンピュータシステムによるリクエストの中継処理の概要を示す説明図である。
【図５】本発明の一実施形態に関する図４（ａ）に対応するリクエスト転送処理を示すフローチャートである。
【図６】本発明の一実施形態に関する図４（ｂ）に対応するリクエスト転送処理を示すフローチャートである。
【図７】本発明の一実施形態に関する図６のＳ６２０の詳細を示すフローチャートである。
【図８】本発明の一実施形態に関する中継装置が保持する振り分けルールテーブルの消去処理の流れの一例を示したフローチャートである。
【図９】本発明の一実施形態に関する中継装置が増設された場合に、それぞれの中継装置が新しい振り分けルールを記憶する処理の流れの一例を示したフローチャートである。
【図１０】本発明の一実施形態に関する中継装置（ＧＷ１）が減設されたときのコンピュータシステムによるリクエストの中継処理の概要を示す説明図である。
【図１１】本発明の一実施形態に関する中継装置（ＧＷ１）の減設処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
【００１５】
図１（ａ）は、コンピュータシステムを示す構成図である。コンピュータシステムは、ネットワークで接続された、中継装置（ＧＷ）１００、スイッチ（ＳＷ）１２０、クライアント１３０、および、サーバ１４０を含んで構成される。
１台以上の中継装置１００は、ネットワーク１０４によって相互に接続される。中継装置１００は、携帯端末や固定端末などのクライアント１３０と通信を行うためにネットワーク１０３を介してスイッチ１２０と接続される。中継装置１００は、サーバ１４０と通信を行うためにネットワーク１０４と介してスイッチ１２０と接続される。
【００１６】
管理装置１１０は、ネットワーク１０１を介して中継装置１００およびスイッチ１２０と接続される。クライアント１３０は、ネットワーク１０２を介してスイッチ１２０と接続される。サーバ１４０は、ネットワーク１０３を介してスイッチ１２０と接続される。
なお、図１（ａ）では、中継装置１００とクライアント１３０とが接続されるネットワーク１０２、ならびに、中継装置１００とサーバ１４０とが接続されるネットワーク１０３を分けているが、これらが相互接続されるスイッチ１２０およびネットワークが同一であってもよい。
さらに、管理装置１１０が中継装置１００とは別の装置としているが、管理装置１１０に具備される部を中継装置１００やスイッチ１２０において実現される構成であってもかまわない。
【００１７】
図１（ｂ）は、スイッチ１２０を示す構成図である。スイッチ１２０は、１つ以上のＣＰＵ４０１と、１つ以上のＮＷ  Ｉ／Ｆ（ネットワークインタフェース）４０２〜４０４と、メモリ４０７とが、内部バス４０５を介して相互に接続されるコンピュータ上に実現される。
ＮＷ  Ｉ／Ｆ４０２は、ネットワーク１０２を介してクライアント１３０と接続する。
ＮＷ  Ｉ／Ｆ４０３は、ネットワーク１０４を介して中継装置１００と接続する。
ＮＷ  Ｉ／Ｆ４０４は、ネットワーク１０１を介して管理装置１１０と接続する。
【００１８】
メモリ４０７には、ＣＰＵ４０１によって実行されるルーティング部４１１、振り分けルール設定部４１２のプログラムと、振り分けルールテーブル４１３が格納されている。
なお、振り分けルールとは、あるリクエストの宛先への経路が複数存在するときの、その経路のうちのどの経路を用いるかを決定するルールであり、負荷分散を行うために、１つの宛先に対して、１つ以上の経路（次に送信する中継装置１００）が振り分け先として特定されている（詳細は、後記の表１を参照）。
ルーティング部４１１は、振り分けルールテーブル４１３の内容に従って、クライアント１３０からのリクエストを中継装置１００へ振り分ける。
振り分けルール設定部４１２は、管理装置１１０から指定される振り分けルールを振り分けルールテーブル４１３に上書き記憶する。
【００１９】
図２は、管理装置１１０を示す構成図である。管理装置１１０は、１つ以上のＣＰＵ３０１、１つ以上のＮＷ  Ｉ／Ｆ３０２〜３０４、入出力装置３０６、メモリ３０７が内部バス３０５を介して相互に接続されるコンピュータ上に実現される。
ＮＷ  Ｉ／Ｆ３０２およびＮＷ  Ｉ／Ｆ３０３は、ネットワーク１０１を介してスイッチ１２０と接続する。
ＮＷ  Ｉ／Ｆ３０４は、ネットワーク１０１を介して中継装置１００と接続する。スイッチ１２０および中継装置１００と接続するネットワークとＮＷ  Ｉ／Ｆは、同一であってもかまわない。
【００２０】
メモリ３０７には、ＣＰＵ３０１によって実行されるルール生成部３１１、振り分けルール管理情報送信部３１２、停止管理部３１６のプログラムと、振り分けルール３１３、世代設定情報３１４、装置管理テーブル３１５が格納されている。
ルール生成部３１１は、クライアント１３０からのリクエストを中継装置１００へ振り分けるためのルールを生成する。
振り分けルール管理情報送信部３１２は、ルール生成部３１１が生成した振り分けルールをスイッチ１２０および中継装置１００へ送信する。
振り分けルール３１３は、スイッチ１２０がクライアント１３０からのリクエストを特定の中継装置１００へ振り分けるためのルールが登録されているテーブルである。世代設定情報３１４は、中継装置１００が振り分けルール３１３を保持するバージョンの数（つまり、振り分けルール３１３内に記憶するバージョンごとの振り分けルールの最大数）が格納される変数であり、その値は管理者により指定される。
装置管理テーブル３１５には、全ての中継装置１００のアドレス情報が登録される。停止管理部３１６は、減設対象の中継装置１００が中継すべきリクエストの中継終了を管理する。
【００２１】
例えば、世代設定情報３１４に「３」が格納されているときには、３つのバージョンの振り分けルール３１３を、メモリ３０７内に格納するとともに、４つめ以降のバージョンの振り分けルール３１３が到着すると、現在保持している最古のバージョンの振り分けルール３１３を消去して、到着した最新バージョンの振り分けルール３１３を格納するようにする。
【００２２】
図３は、中継装置１００を示す構成図である。中継装置１００は、１つ以上のＣＰＵ２０１、１つ以上のＮＷ  Ｉ／Ｆ２０２〜２０５、入出力装置２０７、メモリ２０８が内部バス２０６などの通信路を介して相互に接続されるコンピュータ上に実現される。
ＮＷ  Ｉ／Ｆ２０２は、ネットワーク１０２を介してクライアント１３０と接続する。
ＮＷ  Ｉ／Ｆ２０３は、ネットワーク１０３を介してサーバ１４０と接続する。
ＮＷ  Ｉ／Ｆ２０４は、ネットワーク１０１を介して管理装置１１０と接続する。
ＮＷ  Ｉ／Ｆ２０５は、ネットワーク１０４を介して中継装置１００と接続する。
クライアント１３０およびサーバ１４０と接続するネットワークとＮＷ  Ｉ／Ｆは、同一であってもよい。
【００２３】
メモリ２０８には、ＣＰＵ２０１によって実行される自ノード処理チェック部２１１、リクエスト転送部２１２、ルール設定部２１３、中継部２１４、セッション終了監視部２１７のプログラムと、セッション管理テーブル２１５、振り分けルールテーブル２１６が格納されている。
自ノード処理チェック部２１１は、受信したリクエストが当該中継装置１００（以下、自ノードともいう）で中継処理できるか否かを確認する。
リクエスト転送部２１２は、自ノード処理チェック部２１１で処理できないと判断された場合に振り分けルール２１６に従って他の中継装置１００（以下、他ノードともいう）へリクエストを転送する。
ルール設定部２１３は、管理装置１１０から振り分けルール２１６を受信した際にメモリ２０８へ記憶する。
中継部２１４は、セッション管理テーブル２１５に記録されるセッション情報に従って、クライアント１３０とサーバ１４０の通信を中継する。
セッション管理テーブル２１５は、クライアント１３０とサーバ１４０間で通信の中継を行うための情報を保持するテーブルである。
振り分けルールテーブル２１６は、スイッチ１２０がクライアント１３０からのリクエストを特定の中継装置１００へ振り分けるためのルールが登録されているテーブルであり、管理装置１１０からスイッチ１２０と中継装置１００へ送信される。
セッション終了監視部２１７は、中継部２１４がクライアント１３０とサーバ１４０間の中継処理の終了を監視する。
【００２４】
【表１】
0005592222.tif 000002
【００２５】
表１は、各テーブル（セッション管理テーブル２１５、振り分けルールテーブル２１６、装置管理テーブル３１５）の内容を示す。
【００２６】
セッション管理テーブル２１５には、中継装置１００がクライアント１３０とサーバ１４０間の通信を行う際の必要な情報が登録される。
「セッションＩＤ」欄は、セッション管理テーブル２１５で一意に識別可能な識別ＩＤを格納する。
「送信元ＩＰ／Ｐｏｒｔ」欄は、クライアント１３０がサーバ１４０へリクエスト要求を行っている場合のクライアント１３０（送信元）のＩＰアドレスおよびポート番号を格納する。
「宛先ＩＰ／Ｐｏｒｔ」欄は、サーバ１４０（宛先）のＩＰアドレスおよびポート番号を格納する。この格納された情報に対して所定のハッシュ関数を計算することにより、ハッシュ値（例えば、４６００）が計算される。このハッシュ値は、負荷分散のために複数の中継装置１００から１つの中継装置１００を選択するために、用いられる。なお、ハッシュ値計算のためのキー情報として、「宛先ＩＰ／Ｐｏｒｔ」欄の情報を用いてもよいし、その他の情報と単独または「宛先ＩＰ／Ｐｏｒｔ」欄の情報と組み合わせて用いてもよい。
「送信元ソケット」欄は、中継装置１００がクライアント１３０との通信で用いるソケットの識別子を格納する。
「宛先ソケット」欄は、中継装置１００がサーバ１４０との通信で用いるソケットの識別子を格納する。
【００２７】
振り分けルールテーブル２１６は、中継装置１００、管理装置１１０およびスイッチ１２０に対して振り分けルール３１３から配布されるテーブルである。この振り分けルールテーブル２１６内で保持するレコード数は、世代設定情報３１４で示されるバージョンの数分である。
「バージョン」欄は、振り分けルールの対象のバージョン番号を示す。
「ハッシュ値範囲」欄は、リクエストの宛先ＩＰアドレスおよびポート番号から得られるハッシュ値の範囲を格納する。
「振り分け先」欄は、セッション管理テーブル２１５の「宛先ＩＰ／Ｐｏｒｔ」欄で示した当該ハッシュ値範囲における中継装置１００の振り分け先を格納する。
【００２８】
装置管理テーブル３１５は、ネットワーク内のＧＷ１００が装置ごとに登録されている。「装置名」欄は、セッション管理テーブル２１５の「振り分け先」欄に対応するＧＷ１００の名称である。「アドレス」欄は、当該装置のＩＰアドレスを格納する。
【００２９】
図４は、図１のコンピュータシステムによるリクエストの中継処理の概要を示す説明図である。図４（ａ）の時点では、振り分けルールテーブル２１６に「ver 1」の振り分けルールが格納されており、図４（ｂ）の時点では、振り分けルールテーブル２１６に「ver 1」〜「ver 3」の振り分けルールが格納されているとする。
【００３０】
まず、図４（ａ）において、中継装置１００（ＧＷ３）は、クライアント１３０からサーバ１４０への論理的な通信路（コネクション）として、スイッチ１２０→中継装置１００（ＧＷ３）→スイッチ１２０というセッションを作成し、そのセッションＩＤに１を割り当てる。
このセッションに関する情報（セッションＩＤ「１」、送信元ソケット「ＳＣ１」、宛先ソケット「ＳＳ１」）は、中継装置１００（ＧＷ３）内の表１のセッション管理テーブル２１５に登録されるが、他の中継装置１００（ＧＷ１，ＧＷ２）内の表１のセッション管理テーブル２１５に登録されない。
「ver 1」の時点の振り分けルールテーブル２１６には、スイッチ１２０から中継装置１００（ＧＷ３）への振り分けを行う旨のレコードが格納される（表１の振り分けルールテーブル２１６の「ver 1」のレコードを参照）。
【００３１】
次に、図４（ｂ）において、以下の（手順１）〜（手順４）の順に、リクエストが転送される。
（手順１）スイッチ１２０は、クライアント１３０からサーバ１４０宛てのリクエストを受信すると、最新バージョンである「ver 3」の振り分けルールに従って、そのリクエストを振り分け先の中継装置１００（ＧＷ１）へと転送する。
（手順２）中継装置１００（ＧＷ１）は、受信したリクエストを処理するためのセッションを自身のセッション管理テーブル２１５では管理していない。よって、中継装置１００（ＧＷ１）は、最新バージョンである「ver 3」より１つ前の「ver 2」での振り分け先（ＧＷ２）を自身の振り分けルールテーブル２１６から特定し、その特定した中継装置１００（ＧＷ２）に対して、振り分けに使用した「ver 2」の情報を付加して転送する。
（手順３）中継装置１００（ＧＷ２）は、受信したリクエストを処理するためのセッションを自身のセッション管理テーブル２１５では管理していない。よって、中継装置１００（ＧＷ２）は、付加された「ver 2」より１つ前の「ver 1」での振り分け先（ＧＷ３）を自身の振り分けルールテーブル２１６から特定し、その特定した中継装置１００（ＧＷ３）に対して、振り分けに使用した「ver 1」の情報を付加して転送する。
（手順４）中継装置１００（ＧＷ３）は、受信したリクエストを処理するためのセッションを自身のセッション管理テーブル２１５で、セッションＩＤ＝１として管理している。よって、中継装置１００（ＧＷ３）は、このセッションを用いて、サーバ１４０を収容するスイッチ１２０へとリクエストを転送する。
【００３２】
以上、図４（ｂ）で説明したように、各中継装置１００は、自身のセッション管理テーブル２１５で管理していないセッションのリクエストを受信したときには、そのリクエストを廃棄することなく、１つ以上のバージョンの振り分けルールに従って、他の中継装置１００へとリクエストを転送する。
【００３３】
これにより、中継装置１００の増減により、振り分けルール３１３が変更された場合（振り分けルール３１３のバージョンが上がった場合）でもクライアント１３０とサーバ１４０間の通信途絶を防止できる。
さらに、中継装置１００が２つ以上のバージョンの振り分けルールテーブル２１６を持つことにより、中継装置１００を増設した後に、再増設を行うような場合でもクライアント１３０とサーバ１４０間の通信途絶の防止が可能である。
そして、（手順２，手順３）において、振り分けに使用したバージョン番号を付加することにより、振り分けの無限ループ（ＧＷ１→ＧＷ２→ＧＷ１→ＧＷ２…）を防止できる。
【００３４】
図５は、図４（ａ）に対応するリクエスト転送処理を示すフローチャートである。
【００３５】
まず、新規接続処理（Ｓ６００）を説明する。
Ｓ６０１において、クライアント１３０は、セッションの接続要求を収容されるスイッチ１２０へと送信する。
Ｓ６０２において、スイッチ１２０は、Ｓ６０１で受信したセッションの接続要求を、「ver 1」の振り分けルールに従って、中継装置１００（ＧＷ３）へと転送する。
Ｓ６０３において、中継装置１００（ＧＷ３）は、Ｓ６０２で受信したセッションの接続要求に従い、セッション管理テーブル２１５に、セッションＩＤ＝１のレコードを新規接続として登録する。
【００３６】
次に、通常転送処理（Ｓ６１０）を説明する。
Ｓ６１１において、クライアント１３０は、Ｓ６０３で確立されたセッションを介して送信する旨の送信要求を収容されるスイッチ１２０へと送信する。
Ｓ６１２において、スイッチ１２０は、Ｓ６１１で受信した送信要求を、「ver 1」の振り分けルールに従って、中継装置１００（ＧＷ３）へと転送する。
Ｓ６１３において、中継装置１００（ＧＷ３）は、Ｓ６１２で受信した送信要求に従い、送信要求内の宛先ＩＰ／Ｐｏｒｔを検索キーとして、セッション管理テーブル２１５からセッションＩＤ＝１のレコードを検索する。
Ｓ６１４において、中継装置１００（ＧＷ３）は、Ｓ６１３で検索されたセッションを用いて、受信した送信要求を自ノード処理のリクエストとしてクライアント１３０を収容するスイッチ１２０へと転送する。
Ｓ６１５において、スイッチ１２０は、Ｓ６１４で受信した送信要求を、収容先のクライアント１３０へと転送する。
【００３７】
図６は、図４（ｂ）に対応するリクエスト転送処理を示すフローチャートである。
【００３８】
管理装置１１０は、全てのスイッチ１２０および全ての中継装置１００に対して、新しい振り分けルールを送信する（Ｓ６０１）。
スイッチ１２０は、クライアント１３０からのリクエスト（送信要求）を受信すると（Ｓ６１１）、リクエスト内の宛先ＩＰアドレスおよびポート番号をキーとしてハッシュ値を算出し、振り分けルールテーブル２１６のハッシュ値範囲欄に該当する振り分け先の中継装置１００（ＧＷ１）へリクエストを転送する（Ｓ６１２）。
【００３９】
中継装置１００（ＧＷ１）は、Ｓ６１２でリクエストを受信し、自ノードで転送処理可能かセッション管理テーブル２１５を探索し（Ｓ６１３）、セッション管理テーブル２１５に該当するセッションが存在しないことにより、自ノードでは転送処理不可と判断する。
中継装置１００（ＧＷ１）は、振り分けルールテーブル２１６を参照して転送処理が可能な中継装置１００（振り分け先）を特定し、その特定した振り分け先（ＧＷ２）に対して、振り分け先の特定に使用したバージョン番号を付加してから、リクエストを転送する（Ｓ６２０，詳細は、後記の図７を参照）。
このセッション処理表探索（Ｓ６２０）と自ノード処理でないリクエストの転送（Ｓ６１３）は、中継装置１００（ＧＷ１）と、中継装置１００（ＧＷ２）とで、それぞれ行われる（図４（ｂ）の（手順２，３）に対応）。
【００４０】
さらに、中継装置１００（ＧＷ３）は、図５の通常転送処理（Ｓ６１０）におけるＳ６１３〜Ｓ６１５の処理を行う（図４（ｂ）の（手順４）に対応）。
【００４１】
図７は、図６のＳ６２０の詳細を示すフローチャートである。
【００４２】
中継装置１００のリクエスト転送部２１２は、受信したリクエストのパケットに振り分けルールテーブル２１６のバージョン番号が付加されているか否かを確認する（Ｓ５１１）。Ｓ５１１でＹｅｓなら付加されているバージョン番号を「特定バージョン」としてＳ５１２に進み、ＮｏならＳ５２１に進む。
Ｓ５１２において、中継装置１００のリクエスト転送部２１２は、特定バージョンよりも１つ前のバージョン（特定バージョン−１と表記）の振り分けルールテーブル２１６が存在するか否かを確認する（Ｓ５１２）。Ｓ５１２でＹｅｓならＳ５１３に進み、ＮｏならＳ５２３に進む。
Ｓ５１３において、中継装置１００のリクエスト転送部２１２は、「特定バージョン−１」の振り分けルールテーブル２１６を参照し、リクエストに含まれる宛先ＩＰアドレスおよびポート番号をキーとしてハッシュ値を算出し、振り分けルールテーブル２１６のハッシュ値範囲欄に該当する振り分け先の中継装置１００を特定する。そして、中継装置１００のリクエスト転送部２１２は、特定した中継装置１００へリクエストを転送する。
【００４３】
Ｓ５２１において、中継装置１００のリクエスト転送部２１２は、振り分けルールテーブル２１６の最も新しいバージョンから順に、リクエストに含まれる宛先ＩＰアドレスおよびポート番号をキーとしてハッシュ値を算出して、振り分けルールテーブル２１６のハッシュ値範囲欄に該当する振り分け先の中継装置１００が自ノードである振り分けルールテーブル２１６のバージョン（換言すると、自ノードへのリクエスト転送に使用されたバージョン）の特定ができるか否かを判定する（Ｓ５２１）。Ｓ５２１でＹｅｓなら、特定できたバージョンを特定バージョンとしてＳ５１２へ進み、Ｎｏなら、Ｓ５３１へ進む。
【００４４】
Ｓ５３１において、中継装置１００のリクエスト転送部２１２は、振り分けルールテーブル２１６を参照し、リクエストに含まれる宛先ＩＰアドレスおよびポート番号をキーとしてハッシュ値を算出して、そのハッシュ値を検索キーとして、最も新しいバージョン（最もバージョン番号の大きいバージョン）から順に検索する。そして、リクエスト転送部２１２は、検索されたレコードのうちの振り分け先が他装置であるレコードについて、その振り分け先の中継装置１００へリクエストを転送する。
Ｓ５２３において、リクエストを破棄して終了する。
【００４５】
図８は、中継装置１００が保持する振り分けルールテーブル２１６の消去処理の流れの一例を示したフローチャートである。
中継装置１００のルール設定部２１３は、他の中継装置１００へリクエストの転送が一定時間行われていない状態を検知する（Ｓ７０１）。
中継装置１００のルール設定部２１３は、Ｓ７０１で検知した一定時間リクエスト無転送の旨を、管理装置１１０へと送信する（Ｓ７０２）。管理装置１１０は、Ｓ７０２の通知を受信する（Ｓ８００）。
管理装置１１０の振り分けルール管理情報送信部３１２は、リクエスト無転送の通知（Ｓ８００）を全ての中継装置１００から得るまで待機する（Ｓ８０１）。
管理装置１１０の振り分けルール管理情報送信部３１２は、全ての中継装置１００（ＧＷノード）へ振り分けルールテーブル２１６の消去指示を送信して終了する（Ｓ８０２）。
中継装置１００のルール設定部２１３は、管理装置１１０から振り分けルールテーブル２１６の消去指示（Ｓ８０２）を受信する（Ｓ７０３）。
中継装置１００のルール設定部２１３は、最も新しいバージョンの振り分けルールテーブル２１６以外を消去して終了する（Ｓ７０４）。
【００４６】
図９は、中継装置１００が増設された場合に、それぞれの中継装置１００が新しい振り分けルールを記憶する処理の流れの一例を示したフローチャートである。
【００４７】
管理装置１１０の振り分けルール管理情報送信部３１２は、管理者から中継装置１００増設による振り分けルール変更の指示を受けるまで待機する（Ｓ１００１）。
管理装置１１０の振り分けルール管理情報送信部３１２は、ルール生成部３１１を呼び出し、中継装置１００増設による新たな振り分けルールを生成する。また、管理装置１１０の振り分けルール管理情報送信部３１２は、新たに増設した中継装置１００を装置管理テーブル３１５へ追加する（Ｓ１００２）。
管理装置１１０の振り分けルール管理情報送信部３１２は、スイッチ１２０および中継装置１００へ新たな振り分けルール（新規ルール）を送信する。また、中継装置１００へ新たな振り分けルールを送信する際に、振り分けルールテーブル２１６のバージョン欄に指定されるバージョン番号を付加する（Ｓ１００３）。
【００４８】
中継装置１００のルール設定部２１３は、管理装置１１０から新規ルール（Ｓ１００３）を受信する（Ｓ９０１）。
中継装置１００のルール設定部２１３は、自ノード内の振り分けルールテーブル２１６に格納されている振り分けルールの数が一杯（世代設定情報３１４で示される最大数）か否かを判定する（Ｓ９０２）。Ｓ９０２でＹｅｓならＳ９０４へ進み、ＮｏならＳ９０３へ進む。
Ｓ９０３において、中継装置１００のルール設定部２１３は、Ｓ９０１で受信した新規ルールを振り分けルールテーブル２１６へと新規保存（上書保存ではない）する。
Ｓ９０４において、中継装置１００のルール設定部２１３は、Ｓ９０１で受信した新規ルールを振り分けルールテーブル２１６へと上書保存する。上書されて消去されるバージョンは、振り分けルールテーブル２１６内の最も古いバージョン（バージョン番号が最小のバージョン）である。
【００４９】
以上説明した図９において、例えば、「ver 4」の新規ルールを受信し（Ｓ９０１）、世代設定情報３１４＝３が設定されており、振り分けルールテーブル２１６には、「ver 1」〜「ver 3」という３つのバージョンが既に格納されているときには（Ｓ９０２でＹｅｓ）、「ver 1」のルールを消去して、その上に「ver 4」の新規ルールを上書きする（Ｓ９０４）。
【００５０】
【表２】
0005592222.tif 000003
【００５１】
以下、中継装置１００が減設されたときの動作について説明する。
表２は、表１の各テーブルに対して、中継装置１００（ＧＷ１）が減設されたときの値を示す。減設対象の中継装置１００（ＧＷ１）には、ノード停止振り分けルールとして、「ver 4」の振り分けルールが配布される。
【００５２】
図１０は、中継装置１００（ＧＷ１）が減設されたときのコンピュータシステムによるリクエストの中継処理の概要を示す説明図である。
【００５３】
減設対象の中継装置１００（ＧＷ１）は、以下の（状態１）〜（状態３）の順に遷移する。
【００５４】
（状態１）中継装置１００（ＧＷ１）は、管理装置１１０から、ノード停止メッセージを受信していない状態であり、この状態では、図４〜図９に示したように、セッション管理テーブル２１５が管理するリクエストを宛先へと転送し、セッション管理テーブル２１５が管理しないリクエストを他の中継装置１００へと転送する。
【００５５】
（状態２）中継装置１００（ＧＷ１）は、管理装置１１０から、ノード停止メッセージを受信する。しかし、中継装置１００（ＧＷ１）内のセッション管理テーブル２１５には、管理対象のセッションがまだ残っている。
このときには、中継装置１００（ＧＷ１）は、自身のセッション管理テーブル２１５内に残っているセッションを用いたリクエストの宛先転送を継続するが（図１０（ａ）の「通信終了待ち」）、自身のセッション管理テーブル２１５に対する新規のセッション登録は行わず、ノード停止メッセージに付加されたノード停止振り分けルールが示す他の中継装置１００へと、セッション管理テーブル２１５外のセッションに関するリクエスト（図１０（ａ）の「その他」）を転送する。
【００５６】
（状態３）中継装置１００（ＧＷ１）は、自身のセッション管理テーブル２１５内に残っているセッションが無くなることを検知すると、その旨を管理装置１１０へと通知する。そして、管理装置１１０は、中継装置１００（ＧＷ１）を振り分け先として含まない新たな振り分けルール３１３を作成し、各中継装置１００および各スイッチ１２０へと配布する（図１０（ｂ））。
【００５７】
つまり、中継装置１００（ＧＷ１）において（状態２）という移行期間を設けることにより、中継装置１００（ＧＷ１）内の管理対象のセッションを停止させることなく、円滑に中継装置１００（ＧＷ１）の減設を実現できる。
【００５８】
図１１は、中継装置１００（ＧＷ１）の減設処理を示すフローチャートである。
【００５９】
管理装置１１０は、減設対象の中継装置１００（ＧＷ１）以外の中継装置１００を振り分け先とするノード停止振り分けルールを振り分けルール３１３として作成する（Ｓ１５００）。
管理装置１１０は、中継装置１００（ＧＷ１）へＳ１５００で作成したノード停止振り分けルールを含むノード停止メッセージを送信し（Ｓ１５０１）、その応答（後記のＳ１５１２）の受信を待つ。
中継装置１００（ＧＷ１）のセッション終了監視部２１７は、Ｓ１５０１で受信したノード停止振り分けルールを振り分けルールテーブル２１６に記憶し、全セッション通信終了の監視を開始する（Ｓ１５０２）。
【００６０】
スイッチ１２０は、クライアント１３０からのリクエスト（送信要求）を受信すると（Ｓ６１１）、振り分けルールテーブル４１３に従って中継装置１００（ＧＷ１）へリクエストを転送する（Ｓ６１２）。
【００６１】
中継装置１００（ＧＷ１）は、Ｓ６１２で受信したリクエストのセッション情報が自身のセッション管理テーブル２１５にあるか否かを探索する（Ｓ６１３）。ここで、受信リクエストのセッション情報があると判断した場合、中継装置１００の中継部２１４は、そのセッション情報を用いて中継処理を実行する（図５の通常転送処理Ｓ６１０を参照）。
中継装置１００（ＧＷ１）は、自身のセッション管理テーブル２１５に登録されていない受信リクエストについて、振り分けルールテーブル２１６内のノード停止振り分けルールを参照して、その振り分け先である中継装置１００（ＧＷ２）へとリクエストを転送する（Ｓ１５０３）。
中継装置１００（ＧＷ２）、および、スイッチ１２０は、減設対象ではないので、Ｓ１５０３で転送されたリクエストに対して、図５の通常転送処理（Ｓ６１０のＳ６１３，Ｓ６１４，Ｓ６１５）を実行することで、リクエストを宛先のサーバ１４０へと送信する。
【００６２】
中継装置１００（ＧＷ１）ののセッション終了監視部２１７は、自身のセッション管理テーブル２１５で管理する全てのセッションの通信が終了した場合、Ｓ１５０２の監視を終了するとともに（Ｓ１５１１）、その旨を管理装置１１０へと送信する（Ｓ１５１２）。
管理装置１１０は、Ｓ１５１２の通知を受け、中継装置１００（ＧＷ１）以外の各中継装置１００および各スイッチ１２０へ、減設後の新しい振り分けルール３１３を送信する（Ｓ１５１３）。そして、中継装置１００（ＧＷ１）は、自身の中継部２１４を含む各処理部を停止する（Ｓ１５１４）。
管理装置１１０の停止管理部３１６は、減設対象の中継装置に関する情報を装置管理テーブル３１５から削除する。
【００６３】
以上説明した本実施形態では、ＷＷＷなど、サーバと端末間でデータを通信するネットワークシステムにおいて、クライアント１３０からサーバ１４０への通信経路上に設置される複数の中継装置１００でのリクエストの振り分け処理について、中継装置１００の増設または減設によるリクエスト振り分け変更が生じた場合でも、中継装置間で適切にリクエストを転送し合うことによって通信の途絶を防止することができる。
【符号の説明】
【００６４】
１００  中継装置（ＧＷ）
１０１〜１０４  ネットワーク
１１０  管理装置
１２０  スイッチ（ＳＷ）
１３０  クライアント
１４０  サーバ
２０１  ＣＰＵ
２０２〜２０５  ＮＷ  Ｉ／Ｆ
２０６  内部バス
２０７  入出力装置
２０８  メモリ
２１１  自ノード処理チェック部
２１２  リクエスト転送部
２１３  ルール設定部
２１４  中継部
２１５  セッション管理テーブル（セッション管理データ）
２１６  振り分けルールテーブル
２１７  セッション終了監視部
３０１  ＣＰＵ
３０２〜３０４  ＮＷ  Ｉ／Ｆ
３０５  内部バス
３０６  入出力装置
３０７  メモリ
３１１  ルール生成部
３１２  振り分けルール管理情報送信部
３１３  振り分けルール
３１４  世代設定情報
３１５  装置管理テーブル
３１６  停止管理部
４０１  ＣＰＵ
４０２〜４０４  ＮＷ  Ｉ／Ｆ
４０５  内部バス
４０７  メモリ
４１１  ルーティング部
４１２  振り分けルール設定部
４１３  振り分けルールテーブル
【図１】
0005592222.tif 000004
【図２】
0005592222.tif 000005
【図３】
0005592222.tif 000006
【図４】
0005592222.tif 000007
【図５】
0005592222.tif 000008
【図６】
0005592222.tif 000009
【図７】
0005592222.tif 000010
【図８】
0005592222.tif 000011
【図９】
0005592222.tif 000012
【図１０】
0005592222.tif 000013
【図１１】
0005592222.tif 000014