(57)【特許請求の範囲】
【請求項１】
ユーザ端末とサービス提供装置の間で行われるセッションを中継する、第一のパケット中継装置と、複数のゲートウェイ装置と、第二のパケット中継装置と、を含むゲートウェイシステムにおいて、
前記第一のパケット中継装置は、
前記セッションにおいて受信した、前記ユーザ端末が送出したサービス提供装置宛パケットの転送先となる前記ゲートウェイ装置を、該サービス提供装置宛パケットの宛先情報に基づいて決定するパケット処理部と、
転送先として決定された前記ゲートウェイ装置へ、前記サービス提供装置宛パケットを転送するパケット送受信部と、を有し、
前記ゲートウェイ装置は、
パケットを解析し、当該パケットにより構成されるセッションの担当ゲートウェイ装置を特定するパケット処理部と、
担当ゲートウェイ装置が他のゲートウェイ装置であると特定された該パケットを、当該他のゲートウェイ装置に転送するパケット送受信部と、
自ゲートウェイ装置が担当するセッションを構成するパケットの処理を行うセッション処理部と、
パケットの送信元情報毎にパケットの担当ゲートウェイ装置が変更されたことを示す情報を含むゲートウェイ装置引継ぎ情報と、を有し、
前記第二のパケット中継装置は、
前記セッションにおいて受信した、前記サービス提供装置が送出したユーザ端末宛パケットの宛先情報に基づいて、当該セッションの前記担当ゲートウェイ装置を、前記ユーザ端末宛パケットの転送先と決定するパケット処理部と、
転送先として決定された前記ゲートウェイ装置へ、前記ユーザ端末宛パケットを転送するパケット送受信部と、を有し、
前記ゲートウェイ装置の前記パケット処理部は、
該サービス提供装置宛パケットの前記担当ゲートウェイ装置の特定において、
当該パケットが自ゲートウェイ装置で処理中セッションのパケットであれば、自ゲートウェイ装置を担当ゲートウェイ装置と特定し、
該パケットが自ゲートウェイ装置で処理中のセッションのパケットではない場合に、
さらに、当該パケットの送信元情報に基づいて特定した前記ゲートウェイ装置が他のゲートウェイ装置であれば、当該他のゲートウェイ装置を該パケットの担当ゲートウェイ装置と特定し、
当該パケットの送信元情報に基づいて特定した前記ゲートウェイ装置が自ゲートウェイ装置である場合、
さらに、当該パケットがセッションの開始を示すパケットであれば、自ゲートウェイ装置を担当ゲートウェイ装置と特定し、
当該パケットがセッションの開始を示すパケットでなければ、前記ゲートウェイ装置引継ぎ情報を検索し、該当する他のゲートウェイ装置を該パケットの担当ゲートウェイ装置と決定する
ことを特徴とするゲートウェイシステム。
【請求項２】
請求項１に記載のゲートウェイシステムであって、
前記第一のパケット中継装置と前記第二のパケット中継装置とは、
パケットの宛先情報とパケットの転送先となるゲートウェイ装置を識別する情報との対応を示すパケット転送先情報を有し、前記第一のパケット中継装置と前記第二のパケット中継装置のパケット処理部は、前記パケット転送先情報に基づいて、パケットの前記転送先を決定し、
前記ゲートウェイ装置は、
パケットの送信元情報と、パケットの処理を担当するゲートウェイ装置を識別する情報と、の対応を示すパケット処理担当情報を有し、
前記ゲートウェイ装置のパケット処理部は、
前記パケット処理担当情報を検索し、
前記セッションを構成する前記パケットの送信元情報、に一致する送信元情報に対応するゲートウェイ装置を、前記担当ゲートウェイ装置と決定する
ことを特徴とするゲートウェイシステム。
【請求項３】
請求項１または２に記載のゲートウェイシステムであって、
前記ゲートウェイ装置のパケット処理部は、
受信したパケットが自ゲートウェイ装置で処理中のセッションに関連するパケットか否かを該パケットに含まれるセッション情報に基づいて判定する
ことを特徴とするゲートウェイシステム。
【請求項４】
請求項２に記載のゲートウェイシステムであって、
複数のゲートウェイ装置とネットワークを介して接続される管理サーバを有し、
該管理サーバは、
パケットの送信元情報とパケットの処理を担当するゲートウェイ装置を識別する情報との対応を示すパケット処理担当情報と、該パケット処理担当情報を前記ゲートウェイ装置に送信する送受信部と、を有する
ことを特徴とするゲートウェイシステム。
【請求項５】
請求項４に記載のゲートウェイシステムであって、
前記引継ぎ情報を有し、
前記管理サーバの前記送受信部は、
前記引継ぎ情報を前記ゲートウェイ装置に送信する
ことを特徴とするゲートウェイシステム。
【請求項６】
複数のゲートウェイ装置のいずれかが、中継するセッションの処理を担当するゲートウェイ装置において、
前記セッションを構成するパケットを解析し、当該セッションの担当ゲートウェイ装置を特定するパケット処理部と、
担当ゲートウェイ装置が他のゲートウェイ装置であると特定された該パケットを、当該他のゲートウェイ装置に転送するパケット送受信部と、
自ゲートウェイ装置が担当するセッションを構成するパケットの処理を行うセッション処理部と、
パケットの送信元情報毎にパケットの担当ゲートウェイ装置が変更されたことを示す情報を含むゲートウェイ装置引継ぎ情報と、を有し、
前記パケット処理部は、
前記セッションを構成するパケットの前記担当ゲートウェイ装置の特定において、
当該パケットが自ゲートウェイ装置で処理中セッションのパケットであれば、自ゲートウェイ装置を担当ゲートウェイ装置と特定し、
該パケットが自ゲートウェイ装置で処理中のセッションのパケットではない場合に、
さらに、当該パケットの送信元情報に基づいて特定した前記ゲートウェイ装置が他のゲートウェイ装置であれば、当該他のゲートウェイ装置を該パケットの担当ゲートウェイ装置と特定し、
当該パケットの送信元情報に基づいて特定した前記ゲートウェイ装置が自ゲートウェイ装置である場合、
さらに、当該パケットがセッションの開始を示すパケットであれば、自ゲートウェイ装置を担当ゲートウェイ装置と特定し、
当該パケットがセッションの開始を示すパケットでなければ、前記ゲートウェイ装置引継ぎ情報を検索し、該当する他のゲートウェイ装置を該パケットの担当ゲートウェイ装置と決定する
ことを特徴とするゲートウェイ装置。
【請求項７】
請求項６に記載のゲートウェイ装置であって、
パケットの送信元情報と、パケットの処理を担当するゲートウェイ装置を識別する情報と、の対応を示すパケット処理担当情報を有し、
前記パケット処理部は、
前記パケット処理担当情報を検索し、
前記セッションを構成する前記パケットの送信元情報、に一致する送信元情報に対応するゲートウェイ装置を、前記担当ゲートウェイと決定する
ことを特徴とするゲートウェイ装置。
【請求項８】
ユーザ端末とサービス提供装置との間で行われるセッションを中継する、第一のパケット中継装置と、複数のゲートウェイ装置と、第二のパケット中継装置と、を含むゲートウェイシステムにおける、前記セッションの負荷分散方法において、
前記負荷分散方法は、
前記第一のパケット中継装置と、前記第二のパケット中継装置と、は、前記セッションにおいて受信したパケットを、当該パケットの宛先情報に基づいて決定されたゲートウェイ装置に転送し、
前記ゲートウェイ装置において、
前記ユーザ端末が送出した前記サービス提供装置宛パケットを解析し、当該パケットにより構成されるセッションの担当ゲートウェイ装置を特定し、
担当ゲートウェイ装置が他のゲートウェイ装置であると特定された該パケットを、当該他のゲートウェイ装置へ転送する方法であり、
さらに、
パケットの送信元情報毎にパケットの担当ゲートウェイ装置が変更されたことを示す情報を含むゲートウェイ装置引継ぎ情報と、を有し、
前記ユーザ端末が送出した前記サービス提供装置宛パケットの前記担当ゲートウェイ装置の特定において、
当該パケットが自ゲートウェイ装置で処理中セッションのパケットであれば、自ゲートウェイ装置を担当ゲートウェイ装置と特定し、
該パケットが自ゲートウェイ装置で処理中のセッションのパケットではない場合に、
さらに、当該パケットの送信元情報に基づいて特定した前記ゲートウェイ装置が他のゲートウェイ装置であれば、当該他のゲートウェイ装置を該パケットの担当ゲートウェイ装置と特定し、
当該パケットの送信元情報に基づいて特定した前記ゲートウェイ装置が自ゲートウェイ装置である場合、
さらに、当該パケットがセッションの開始を示すパケットであれば、自ゲートウェイ装置を担当ゲートウェイ装置と特定し、
当該パケットがセッションの開始を示すパケットでなければ、前記ゲートウェイ装置引継ぎ情報を検索し、該当する他のゲートウェイ装置を該パケットの担当ゲートウェイ装置と決定する
ことを特徴とする負荷分散方法。
【請求項９】
請求項８に記載の負荷分散方法であって、
パケットの送信元情報と、パケットの処理を担当するゲートウェイ装置を識別する情報と、の対応を示すパケット処理担当情報を有し、
前記パケット処理担当情報を検索し、
前記セッションを構成する前記パケットの送信元情報、に一致する送信元情報に対応するゲートウェイ装置を、前記担当ゲートウェイと決定する
ことを特徴とする負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大規模なゲートウェイやサーバシステムにおける分散構成方式に関するものである。
【背景技術】
【０００２】
インターネット上でサービスを提供するサーバシステムや、ユーザ端末とサービス提供者を仲介して付加価値を提供するゲートウェイシステムは、ネットワークの普及と高速化に伴い非常に高い負荷にさらされるようになってきている。このようなシステムでは負荷の増大に対応する方法として、大きく分けて2つの方法が使われている。第一に、各構成要素の性能を向上させることによる方法で、スケールアップ型の性能拡張と呼ばれる。第二の方法は、構成要素の数を増やすことによる方法で、スケールアウト型の性能拡張と呼ばれる。一般的に後者の方法は前者の方法と比べてシステム構成が複雑になる傾向がある反面、負荷の変動に対しての追従が容易である。このため、現在のサーバシステムおよびゲートウェイシステムは、スケールアウト型のシステム構成をとることが多い。
【０００３】
スケールアウト型のシステムでは、均質な構成要素を多数並べ、そこに負荷を均一に分散させることが重要な技術となる。これを実現するために負荷分散装置と呼ばれる、分散機能に特化した装置を用いることが多い。負荷分散装置は、サービスを行う対象の前段に配置される。そして、ユーザ端末からの要求を少数の負荷分散装置でいったん受信し、要求に含まれる各種の情報を用いて配下に存在するサーバあるいはゲートウェイにその要求を転送する。
【０００４】
負荷分散装置が均等な負荷分散を行うためには、単純にパケット単位でランダムに振り分け先を決定する方法では不十分であり、ユーザ端末からの要求に含まれる情報を適切に利用する必要がある。たとえば、IPアドレス、ポート番号、HTTPリクエストに含まれるURL、クッキー情報などを用いて、振り分け先を決定することができる。たとえば、パケットに含まれるユーザ端末側のIPアドレスをもとに担当するサーバ類を決定することで、特定のユーザ端末が関わる通信は常に同じサーバに分配されることになる。この時、高いレイヤの情報(たとえば、HTTPのURL)を用いることによって、アプリケーションに特化したより詳細な負荷分散を行うことが可能となるが、負荷分散装置での処理が複雑化することにつながるため、負荷分散装置自体の処理性能は低下する傾向がある。少数の負荷分散装置を用いて負荷分散を行う場合、負荷分散装置自体の性能が低いと、負荷分散装置がシステム全体のボトルネックとなる場合があるため、これは避けなければならない。また、複雑な処理を行うためには装置内に多くの情報を保持する必要があり、装置の障害の際に処理の引継ぎを行うことが困難になる。
【０００５】
特許文献1では、負荷分散装置の前段の中継装置において、ユーザ端末側のIPアドレスのハッシュ値をもとに負荷分散装置の転送先インタフェースを決定し、負荷分散装置でさらに目的のサーバ群に対して処理を分散させるという構成をとっている。これにより、単純な振り分けルールによって一次分散を行い、負荷分散装置群にてさらに二次分散を行うことになり、負荷分散装置を多数置くことを可能とし、前述した負荷分散装置によるボトルネック問題を解決している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−１７４４７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献1による分散方式では、前段の中継装置に、市販されている安価な中継装置には搭載されていない機能を必要としており、仮に特許文献1の方式を実現するためには、ハードウェアなどで実現した高速なパケット処理機能をもった装置を独自に作成する必要があり、負荷分散システム全体のコストを押し上げる原因となる。また、スケールアウト型の性能向上を実現するために必須の要件となる負荷分散対象サーバまたはゲートウェイの増減に対する管理コストの低減を実現できていない。
【０００８】
すなわち、サーバの増減時に多数の構成要素に対して変更が必要であることに加え、増減時に処理中であるセッションの引継ぎ処理を実現することができないため、サーバの増減を行うにはシステムの停止が必要となり、柔軟な追加削除を行うことが事実上不可能となる。また、ルータから負荷分散装置、負荷分散装置からサーバという2段階の転送が常に必要となり、各構成要素にかかる負荷が増大する。
【０００９】
従って、複雑な負荷分散装置を利用すると、システム全体のコストパフォーマンスが悪化し、負荷分散装置がボトルネック・単一障害点となる。
【課題を解決するための手段】
【００１０】
本発明におけるゲートウェイシステムは、第一のパケット中継装置と、複数のゲートウェイ装置とから構成され、前記第一のパケット中継装置は、ネットワークを介して受信したパケットの転送先となる前記ゲートウェイ装置を該パケットの宛先情報に基づいて決定するパケット処理部と、該パケット処理部により転送先として決定された前記ゲートウェイ装置にネットワークを介して前記パケットを転送するパケット送受信部と、を有し、前記ゲートウェイ装置は、
ネットワークを介して受信したパケットの送信元情報に基づいて該パケットの処理を担当するゲートウェイ装置を判定するパケット処理部と、該パケットの処理を担当するゲートウェイ装置が他のゲートウェイ装置である判定された場合には、該パケットを該他のゲートウェイ装置に転送するパケット送受信部と、を有する。
【００１１】
また、本発明におけるゲートウェイ装置は、複数のゲートウェイ装置とネットワークを介して互いに接続され、パケットの送信元情報とパケットの処理を担当するゲートウェイ装置を識別する情報との対応を示すパケット処理担当情報と、ネットワークを介して受信したパケットの処理を担当するゲートウェイ装置を前記パケット処理担当情報に基づいて判定するパケット処理部と、該パケットの処理を担当するゲートウェイ装置が他のゲートウェイ装置であると判定された場合には、該パケットを該他のゲートウェイ装置に転送するパケット送受信部と、を有する。
【００１２】
更に、本発明における負荷分散方法は、パケット中継装置と、複数のゲートウェイ装置とからなるゲートウェイシステムにおいて、パケット中継装置において、ネットワークを介して受信するパケットを該パケットの宛先情報に基づいて決定されたゲートウェイ装置に転送し、前記ゲートウェイ装置において、前記パケットの送信元情報に基づいて、該パケットの処理を担当するゲートウェイ装置を判定し、該パケットの処理を担当するゲートウェイ装置が他のゲートウェイ装置である判定された場合には、該パケットを該他のゲートウェイ装置に転送する。
【発明の効果】
【００１３】
本発明では、複雑な負荷分散装置を用いずに負荷分散を実現することができる。その結果、システム全体のコストパフォーマンスを向上することができ、単一障害点の解消にかかるコストを低減することが可能になる。
【図面の簡単な説明】
【００１４】
【図１】システム全体の構成図
【図２】ユーザ端末側パケット中継装置の構成図
【図３】ゲートウェイ装置の構成図
【図４】ゲートウェイ装置におけるパケット受信時の処理フローチャート
【図５】ゲートウェイ管理サーバが格納するテーブル
【図６】サービス提供装置IPブロックテーブルの計算処理フローチャート
【図７】システム全体の初期化およびパケット転送のシーケンス図
【図８】ゲートウェイ装置追加時および仕掛中セッションに対するパケット転送のシーケンス図
【図９】ゲートウェイ管理サーバを置かない場合のゲートウェイ装置削除時のシーケンス図
【図１０】ユーザ端末管理サーバの構成図
【図１１】ゲートウェイ管理サーバの構成図
【図１２】サービス提供装置IPブロックテーブルの生成手順を示す図
【発明を実施するための形態】
【実施例１】
【００１５】
本発明を実施するための第一の実施の形態を以下に示す。第一の実施の形態では、ゲートウェイ管理サーバ107による集中管理的なゲートウェイシステムへの適用方法を示す。
【００１６】
図1は、実施例１のシステム全体構成図を示す。
【００１７】
本システムは、ユーザ端末101がサービス提供装置106と通信してサービスを受けるシステムにおいて、その仲介をゲートウェイ装置104が行うことで付加価値を提供するものである。たとえば、ユーザ端末装置101としてインターネットアクセス可能な携帯電話、サービス提供装置106としてインターネット上のWebサーバ、ゲートウェイ装置104として通信キャリアのファイアウォールが相当する。
【００１８】
ユーザ端末101は、ネットワーク102-1を介してユーザ端末側パケット中継装置103と接続している。ユーザ端末側パケット中継装置103はネットワーク102-2を介してゲートウェイ装置104と接続している。ゲートウェイ装置104はネットワーク102-3を介してサービス提供装置側パケット中継装置105と接続している。サービス提供装置側パケット中継装置105は、ネットワーク102-4を介してサービス提供装置106と接続している。また、ゲートウェイ管理装置107はネットワーク102-3を介してゲートウェイ装置104、サービス提供装置側パケット中継装置105と接続しており、また間接的にユーザ端末側パケット中継装置とも接続している。なお、ゲートウェイ管理サーバ107は、ユーザ端末側パケット中継装置103、ゲートウェイ装置104、サービス提供装置側パケット中継装置105、およびユーザ端末管理サーバ108と論理的に通信できればどのような形でネットワーク102群に接続されていてもよい。ユーザ端末管理サーバ108は、ネットワーク102-1を介してユーザ端末101と接続している。
【００１９】
図2は、ユーザ端末側パケット中継装置103の構成図である。ユーザ端末側パケット中継装置103は、ネットワークI/F 201を介してネットワーク102-nと接続しており、各ネットワーク102との間でパケットの送受信を行う。パケット処理部202では、ネットワークI/F 201で受信したパケットを解析し、メモリ内にあるパケット転送先選択テーブル203を探索して次に転送すべき装置を決め、適切なネットワーク102へ受信したパケットを送出する。ユーザ端末側パケット中継装置103がパケット処理部202にて受信したパケットを解析した結果、当該パケットが自宛のパケットであった場合、それは管理コマンド処理部204にて処理される。管理コマンド処理部204では、ゲートウェイ管理サーバ107やゲートウェイ装置104からの管理コマンドを受け取り、パケット転送先選択テーブル203の更新処理などを行う。
【００２０】
サービス提供装置側のパケット中継装置105は、これと同様の構成をもつ。差異は、接続先ネットワークが異なる点などである。
【００２１】
図3は、ゲートウェイ装置104の構成図を示す。ゲートウェイ装置104は、ネットワークI/F 301、パケット処理部302、管理コマンド処理部303、セッション処理部304、ユーザ端末-ゲートウェイ装置対応テーブル305、セッション引継ぎテーブル306、処理中セッションテーブル307からなる。ゲートウェイ装置104がネットワークＩ/Ｆ301を介してパケットを受信すると、パケット処理部302がパケットを解析する。その結果、当該パケットが自宛であった場合は管理コマンド処理部303に転送され、そうでない場合はメモリ中のテーブル群を検索して処理すべき内容を決定する。自ゲートウェイで処理すべきパケットであった場合はセッション処理部304にて処理を行い、他ゲートウェイに転送すべき処理であった場合はネットワークI/Fを経由して他のゲートウェイにパケットを転送する。
【００２２】
図4はゲートウェイ装置104でのパケット受信処理フローチャートを示す。ネットワークI/F 301で受信されたパケット（S401）はパケット処理部302に転送され、図4のフローチャートにしたがって処理を行う。まず、パケットを解析し、自宛のものかどうかを調べる（S402）。自宛であった場合、このパケットは管理コマンド処理部303が処理すべきものであるため、パケットを管理コマンド処理部303へ転送する（S403）。それ以外の場合、すなわちサービス提供装置106あるいはユーザ端末101宛であった場合は、当該ゲートウェイ装置104で処理中のセッションであるかを調べるために、セッション情報(TCPであれば、対向装置のIPアドレスおよびポート番号で一意に決定)をキーとして処理中セッションテーブル307を探索する（S404）。
【００２３】
探索した結果、エントリが存在した場合には当該パケットは自ゲートウェイで処理すべきであるので、当該パケットをセッション処理部へ転送する（S405）。処理中でない場合は、パケットの処理を担当するゲートウェイ装置を確定する必要があるため、ユーザ端末101からサービス提供装置106に向かうパケットであれば送信元アドレス、サービス提供装置106からユーザ端末101に向かうパケットであれば宛先アドレスをキーとして、ユーザ端末-ゲートウェイ装置対応テーブル305を探索する（S406）。
【００２４】
探索の結果、当該パケットは他のゲートウェイ装置が担当していることが分かった場合、当該パケットを他のゲートウェイに転送する（S407）。自ゲートウェイが担当するパケットであった場合、まずこのパケットがセッション開始を示すパケット(TCPであれば、SYNフラグが立っているパケットであるかで判別可能)であるかどうかを調べる（S408）。セッション開始パケットであった場合、当該パケットをセッション処理部へ転送する（S405）。セッション開始のパケットでもなく当該ゲートウェイ装置で処理中でない場合は、パケットに含まれるユーザ端末側アドレスをキーとしてセッション引継ぎテーブル306を探索し（S409）、以前に当該パケットを担当していた可能性がある旧ゲートウェイを割り出し、旧ゲートウェイにパケットを転送する（S410）。セッション引継ぎテーブル306にエントリがないパケットの場合は、エラーパケットであると認識し当該パケットを廃棄する（S411）。
【００２５】
セッション処理部304において、SYNパケットを受け取りセッション処理を開始した場合は、処理中セッションテーブル307に当該セッションの情報を追記し、逆にセッションが終了した場合は処理中セッションテーブル307からエントリを削除する。
図１０にユーザ端末管理サーバ108の構成図を示す。ユーザ端末管理サーバ108は、ネットワーク102-1とネットワークI/F1001を介して接続され、ネットワーク102-1との間で送受信されるパケットはパケット処理部1002で処理される。パケット処理部1002には、各端末がネットワーク102-1に接続する際に、他の端末と重複しないIPアドレスを割り当てる機能を持つ。ユーザ端末アドレス管理テーブル1003は、割り当て範囲のIPアドレスの各々に対して、そのアドレスが割り当て済みか、どの端末に割り当てられているか、割り当ての有効期限はいつか、という情報を管理する。ユーザ端末管理サーバ108は、ユーザ端末101からのネットワーク接続要求をネットワークI/F1001で受信すると、パケット処理部1002においてユーザ端末アドレス管理テーブル1003を参照し、未割当のIPアドレスが存在し、要求に含まれる端末IDにすでにアドレスが割り当てられていない場合は当該端末にアドレスを付与してテーブルを更新する。
図１１にゲートウェイ管理サーバ107の構成図を示す。ゲートウェイ管理サーバ107は、ネットワーク102-3とネットワークI/F1101を介して接続され、ネットワーク102-3との間で送受信されるパケットはパケット処理部1102で処理される。ゲートウェイ管理サーバ107は、ゲートウェイ装置104、ユーザ端末側パケット中継装置103、サービス提供装置側パケット中継装置に対して、各装置が持つべきテーブルを管理・配信する機能をもつ。
【００２６】
ゲートウェイ装置104内のユーザ端末-ゲートウェイ装置対応テーブル305と、ユーザ端末側パケット中継装置103およびサービス提供装置側パケット中継装置105内にあるパケット転送先選択テーブルはゲートウェイ管理サーバにて生成したのちに各装置に配布される。各テーブルの生成方法について以下で述べる。
【００２７】
図5にゲートウェイ管理サーバ107が有するテーブル群とテーブルの生成方法の模式図を示す。ユーザ端末IPブロックテーブル501は、ネットワーク管理者が定めたユーザ端末用IPアドレス空間の分割の仕方を定めるものである。この各IPブロックをもとに、ユーザからの要求が各ゲートウェイ装置に分散される。担当ゲートウェイ装置テーブル502は、ネットワーク管理者が管理している各ゲートウェイ装置のIPアドレスを記憶するためのテーブルである。サービス提供装置IPブロックテーブルは、サービス提供装置側に割り当てられるIPアドレス空間の分割の仕方を定めるものである。ユーザ端末IPブロックテーブルと同様に、この各IPブロックをもとに、ユーザからの要求が各ゲートウェイ装置に分散される。ユーザ端末IPブロック-ゲートウェイ装置対応テーブル504およびサービス提供装置IPブロック-ゲートウェイ装置対応テーブル505は、どのIPブロックがどのゲートウェイ装置に割り当てられるかを示すものである。
ユーザ端末101群を均等にゲートウェイ装置104に割り当てるためには、ユーザ端末管理サーバ108に対しユーザ端末からアドレス取得要求があるごとに、特定の範囲のIPアドレスから一様乱数を用いて抽出したアドレスを返答するなどし、ユーザ端末101に割り当てられるアドレスを一様に分散させる方法がある。このような状態で、当該範囲のIPアドレスを均等に分割し、それをユーザ端末IPブロックテーブル501の各エントリとすれば、各エントリにはほぼ等確率でユーザ端末101からのパケットが対応することになる。
【００２８】
サービス提供装置106のアドレス割り当てがゲートウェイ管理者によって行うことが可能な場合は、ユーザ端末IPブロックテーブル501と同様に、サービス提供装置に割り振られるIPアドレス範囲を均等に分割してサービス提供装置IPブロックテーブル503を生成すればよい。
【００２９】
サービス提供装置106のアドレス割り当てがゲートウェイ管理者の管理下にない場合において均等に負荷を分散させるためには、以下の方法をとる。まず、何らかの方法で各IPアドレス、もしくはIPアドレス範囲へのパケットがゲートウェイ装置106を通過する確率を取得する。たとえば、ユーザ端末とサービス提供装置の間に存在するルータにおいてパケットの統計情報を取得することや、各サービス提供装置のアクセスログを用いて確率を取得することが可能である。ここでは、IPアドレス上位16ビットであらわされるIPプレフィックスごとの統計情報がすでに取得済みであるという状態で、サービス提供装置IPブロックテーブル503を生成する手順を述べる。
【００３０】
図12に、本手順の概略を示す。ここでは3bitのビット列に単純化した図としている。本図面上では、上への分岐が0,下への分岐が1をあらわしている。たとえば1.の図では000の出現頻度が2、001の出現頻度が7であることを示している。2.では各ノードの子の出現頻度の和をそのノードの頻度として計算している。たとえば、00というプレフィックスの出現頻度は、000と001の出現頻度の和となるので、2+7で出現頻度9となる。そして、出現頻度の値が最小となるノードをリーフとして集約していき、必要なプレフィックスの個数になるまで続ける。必要な個数になった時点で、その結果をもとにサービス提供装置IPブロックテーブルを生成する。
【００３１】
図6にサービス提供装置IPブロックテーブル503の生成手順の詳細を示す。まず、2^16個のリーフをもつ完全二分木を作成する。これは深さ16の木となる。木の各ノードの右の分岐する方向を1、左に分岐する方法を0という形で値を割り付けると、木のルートからリーフに到達するまでの経路は16bitの2進数で表現することが可能となる。この16bitの2進数をIPプレフィックスに対応させ、各リーフに対応するIPプレフィックスの出現頻度を記録する。そして、全リーフの中から兄弟となるリーフ2つの頻度の和が最小となる組を探索し、当該リーフを削除して、その兄弟の親のノードを、兄弟の頻度の和を値として持つ新たなリーフとする。この操作を、リーフの数が必要なアドレスブロック数に達するまで繰り返す。そして、残ったリーフがあらわすIPプレフィックスをサービス提供装置IPブロックテーブル503のエントリとする。これにより、各エントリにほぼ等確率でユーザ端末101からのパケットが対応することになる。
【００３２】
反対に、何らかの目的で均等な割り当てを必要としない場合も考えられる。たとえば、特定のユーザをあらかじめ定められたゲートウェイ装置で処理することにより、そのユーザに対して特殊なサービスを提供する場合などである。このような場合は、ユーザ端末管理サーバ108は特定のユーザからのアドレス取得要求に対し、あらかじめ定められたIPブロックからアドレスを割り当てる。そして、そのIPブロックに対応するゲートウェイ装置104を固定することにより、特定のユーザを担当するゲートウェイを固定することが可能となる。
【００３３】
ここまでに生成したテーブルを用いて、ユーザ端末IPブロックテーブル501の1つ以上のエントリに対して1つのゲートウェイ装置104を割り当てることで、ユーザ端末IPブロック-ゲートウェイ対応テーブル504を生成することができる。また、サービス提供装置IPブロックテーブルの1つ以上のエントリに対して1つのゲートウェイ装置104を割り当てることで、サービス提供装置IPブロック-ゲートウェイ対応テーブル505を生成することができる。
【００３４】
ゲートウェイ管理サーバ107からゲートウェイ装置104に対し、ユーザ端末IPブロック-ゲートウェイ対応テーブル504を送信することで、ゲートウェイ装置104のもつユーザ端末-ゲートウェイ装置対応テーブル305の初期値が決定できる。また、ゲートウェイ管理サーバ107からサービス提供装置側パケット中継装置105にユーザ端末IPブロック-ゲートウェイ対応テーブル504を送信することで、サービス提供装置側パケット中継装置105がもつパケット転送先テーブル203の初期値が決定できる。同様に、ゲートウェイ管理サーバ107からユーザ端末側パケット中継装置103に対し、サービス提供装置IPブロック-ゲートウェイ対応テーブル505を送信することで、ユーザ端末側パケット中継装置103のパケット転送先選択テーブル203の初期値が決定できる。
【００３５】
図7にテーブル類の初期設定情報配布とユーザ端末101からサービス提供装置106に対してのパケットの流れを示す。ここでは、後半のパケットの流れについて順に説明する。ユーザ端末101からサービス提供装置106へ向かってパケットが送信されると、そのパケットは最初にユーザ端末側パケット中継装置103に到達する。ユーザ端末側パケット中継装置103では、パケット転送先選択テーブル203に基づいて次に転送すべき装置を選択する（S701）。ここでは、ゲートウェイ装置104-2が選択されたものとする。すると、ユーザ端末側パケット中継装置103は当該パケットをゲートウェイ装置104-2に対して送信する。ゲートウェイ装置104-2が当該パケットを受信すると、図4で示したフローにしたがってパケットの処理を行う（S702）。ここでは、当該パケットはゲートウェイ装置104-2の処理中セッションでなく、かつ他ゲートウェイであるゲートウェイ装置104-1が担当であったとしている。このため、当該パケットはゲートウェイ装置104-1に転送される。当該パケットを受信したゲートウェイ装置104-1は、図4のフローにしたがってパケットを処理し、本来のゲートウェイ処理をセッション処理部で行う（S703）。当該パケットがセッションの開始を示すものであった場合は、この時点で処理中セッションテーブル307に対してセッション情報を登録し、またセッションの終了を示すものであった場合は処理中セッションテーブル307に登録済みの当該セッションのエントリを削除する。セッション処理部304で処理が終わったパケットは、サービス提供装置側パケット中継装置105を経由してサービス提供装置106に送信される。
【００３６】
サービス提供装置106から送信されるユーザ端末101への返答パケットは、まずサービス提供装置側パケット中継装置105に到達する。サービス提供装置側パケット中継装置105では、パケット転送先選択テーブル203に基づいてゲートウェイ装置104-1を選択したものとする（S704）。返答パケットは選択されたゲートウェイ装置104-1に転送され、ゲートウェイ装置104-1は、図４のフローにしたがって、セッション処理部304にてパケットを処理する（S705）。セッション処理部304で処理が終わったパケットは、ユーザ端末側パケット中継装置103を経由してユーザ端末101に送信される。
【００３７】
サービス提供装置側パケット中継装置105での転送先決定は、宛先アドレスであるユーザ端末101のIPアドレスに基づいて行われるため、1回の転送で必ず担当のゲートウェイ装置104にパケットが転送される。一般的なアプリケーションでは、ユーザ端末101からサービス提供装置106に向かうデータ量に比べ、サービス提供装置106からユーザ端末101に向かうデータ量のほうが圧倒的に大きいため、サービス提供装置106からのパケットに対するゲートウェイ装置104間の転送数が少ないのは処理コストの低減に大きな効果がある。
【００３８】
次に、ゲートウェイ装置104を追加する場合の処理内容について述べる。図8にゲートウェイ装置104追加時のシーケンス例を示す。ゲートウェイ装置104を追加する際には、ゲートウェイ装置104をネットワークを介してユーザ端末側パケット中継装置103とサービス提供装置側パケット中継装置105との間に接続したのち、ゲートウェイ管理サーバ107に対して当該ゲートウェイ装置104の追加コマンドを入力する（S801）。コマンドを受け付けたゲートウェイ管理サーバ107は、再度各種テーブル群を生成し（S802、S803）、ユーザ端末IPブロック−ゲートウェイ対応テーブル504の旧版と新版の差分を計算する（S804）。サーバ追加の際には、ユーザ端末IPブロックおよびサービス提供装置IPブロックから適当な数のエントリを選択し、そのエントリを新たに追加するゲートウェイ装置104の担当範囲とすることで担当の変更を行う。このとき、他のゲートウェイ装置104が担当しているエントリ数とほぼ同数のエントリの担当変更を行うことにより、変更後の振り分けルールにおいても均等な振り分けが行われることが保障される。
【００３９】
ユーザ端末側パケット中継装置103に対してはサービス提供装置IPブロック−ゲートウェイ対応テーブル505が配布され、サービス提供装置側パケット中継装置105にはユーザ端末IPブロック−ゲートウェイ対応テーブル504が配布され、各パケット中継装置103、105において、パケット転送先選択テーブル203として管理される。各ゲートウェイ装置104に対しては、ユーザ端末IPブロック−ゲートウェイ対応テーブル504とともに、当該テーブルの旧版と新版の差分を送信する。この情報を受け取った各ゲートウェイ装置104は、ユーザ端末-ゲートウェイ装置対応テーブル305を更新するとともに、差分をもとにセッション引継ぎテーブル306にエントリを追加する（S805）。このエントリは、あるユーザ端末IPブロックがどのゲートウェイ装置104担当からどのゲートウェイ装置104担当に変わったかを示すものである。
【００４０】
また、各ゲートウェイ装置104は、処理中セッションテーブル307の中で担当が変更になったセッションのエントリ中の仕掛中セッション欄にマークをつける。このマークは不要になったセッション引継ぎテーブル306のエントリを消去するために必要である。すなわち、仕掛中セッションがなくなった時点で、従来の担当ゲートウェイ装置にパケットを転送する必要がなくなるので、セッション引継ぎテーブル306の当該エントリを削除する必要がある。これは、各ゲートウェイ装置104での処理中セッションテーブル307で仕掛中セッションマークがすべてなくなった時点で、各ゲートウェイ装置104がゲートウェイ管理サーバ107にその旨を伝え、管理サーバが当該ゲートウェイ装置104を旧担当としているセッション引継ぎテーブル306のエントリを削除する命令を全ゲートウェイ装置104に送信することによって行われる（S806）。
【００４１】
図8の下半分に、ゲートウェイ装置104が追加された際のパケットの流れを示す。ここでは、ゲートウェイ装置104-2を追加したことにより、ゲートウェイ装置104-1で仕掛中であるセッションの担当ゲートウェイ装置104がゲートウェイ装置104-2に変更された場合の例を示す。
【００４２】
パケットがユーザ端末側パケット中継装置103のパケット転送先選択テーブルに基づいてゲートウェイ装置104-3に転送され（S807）、ゲートウェイ装置104-3のユーザ端末-ゲートウェイ装置対応テーブルに基づいてゲートウェイ装置104-2に転送された場合（S808）、図4のフローチャートにしたがって当該ゲートウェイで処理中のセッションであるかどうかを調べる。ここでは、処理中でなくかつセッションの開始パケットでもないため、セッション引継ぎテーブルをもとに旧担当ゲートウェイ装置104-1に転送される（S809）。そして、ゲートウェイ装置104-1においてセッション処理を継続する（S810）。このように、セッション引継ぎテーブル306と処理中セッションテーブル307を用いることによって、セッションの処理中に担当ゲートウェイ装置104が変更になった場合であっても正しく処理が継続できることがわかる。
【００４３】
ゲートウェイ装置104を削除する場合も、追加と同様の処理が行われる。ただし、削除対象のゲートウェイ装置104を停止するのは、削除対象のゲートウェイ装置内のすべての仕掛中セッションが終了するのを待ってからになる。
【００４４】
このように、仕掛中セッションの処理を、担当変更前のゲートウェイ装置104で行うようにすることで、仕掛中セッション自体をゲートウェイで移動させる必要がなくなり、ゲートウェイの追加・削除時のセッション情報移動コストがなくなることに加え、より上位層のセッション情報を負荷分散システム側で管理する必要がなくなり、アプリケーション非依存な負荷分散システムが構築可能となる。
【００４５】
また、特定のゲートウェイ装置104に処理が一時的に集中した場合などに、負荷分散の均等性が崩れる可能性がある。この時は、特定のゲートウェイ装置104が担当するIPブロックの数を減らすことで、当該ゲートウェイ装置104に到達するセッションが減少させることができる。これを実現するために、本実施例では一つのゲートウェイ装置に対して複数のIPブロックを担当させることを許している。このため、ゲートウェイ装置104に対するIPブロックの割り当ての増減は、ゲートウェイ装置104の追加・削除と同様テーブルの変更として表現できるため、ここまでに述べた手順によって負荷の偏りの均等化も対応可能である。
【００４６】
以上、本実施例における発明によると、一般的なルータが持つ基本機能と、負荷分散対象がもつ機能を組み合わせて一つの負荷分散機能を実現することにより、安価で高速なハードウェアによる振り分けと、柔軟で複雑なソフトウェア解析による振り分けを併用可能とし、スケーラブルな性能拡張を実現可能となる。また、ルータが持つ冗長化機能を活用することにより、一次振り分けを行う部分を冗長化することは高度な負荷分散装置と比べて容易であり、結果として単一障害点の解消にかかるコストが低減可能となる。
【実施例２】
【００４７】
本実施例では、ゲートウェイ管理サーバ107を用いずに負荷分散を実現する例について述べる。
【００４８】
これを実現するためには、実施例1においてゲートウェイ管理サーバ107内に持つとしていたテーブル類をすべてのゲートウェイ装置104に置くこと、およびゲートウェイ管理サーバ107を介した通信(セッション引継ぎテーブル306の消去命令など)がゲートウェイ装置104間の直接通信とすればよい。
【００４９】
実施例2のシステム全体構成は、図1に示す実施例2の構成からゲートウェイ管理サーバ107を取り除いたものとなる。また、各ゲートウェイ装置104は、図3に示された構成に加え、図5に示すテーブル群をもつ。
【００５０】
実施例1では、ゲートウェイ管理サーバ107において生成したテーブルを各ゲートウェイ装置104に配布する方式をとっていたが、本実施例では、管理者によって各ゲートウェイ装置にユーザ端末IPブロックテーブル501、担当GWテーブル502、サービス提供装置IPブロックテーブル503を登録することになる。ただし、後述するゲートウェイ装置104の追加手順において、追加したゲートウェイ装置104にはこれらのテーブルがコピーされるので、初期状態で1台のゲートウェイ装置104に対して設定を行い、他のゲートウェイ装置104を順次追加するという手順を踏むことで、管理者によって大量のゲートウェイ装置104にテーブル情報をコピーすることはなくなる。
【００５１】
いったんテーブル類が設定されたのち、ゲートウェイ装置104の追加削除を行わない状態では、実施例1とまったく同じ動作を行う。すなわち、各ゲートウェイ装置は図4に示されるフローチャートにしたがってパケット処理を行い、パケットの流れは図7に示すシーケンス図となる。
【００５２】
ゲートウェイ装置104の追加削除においては、実施例1とは以下に示す差異がある。ここでは、図9を参照し、ゲートウェイ装置104の削除の場合の手順について述べる。まず、削除する対象のゲートウェイ装置104を決定し、そのゲートウェイ装置104に対して削除コマンドを入力する（S901）。図9ではゲートウェイ装置104-1を削除する例を示している。ゲートウェイ装置104-1は、本ゲートウェイ装置104-1を削除する通知を他のすべてのゲートウェイに送信する。そして削除対象のゲートウェイ装置104-1と通知を受けたゲートウェイ装置104-2,104-3は、それぞれがもつサービス提供装置IPブロック-ゲートウェイ対応テーブル505の作成（S902）、およびユーザ端末IPブロック-ゲートウェイ対応テーブル504の作成（S903）と差分の計算を行う（S904）。そして、各ゲートウェイ装置はその差分をもとにセッション引継ぎテーブル306を作成する（S905）。また、処理中セッションテーブル307の中で担当が変更となるセッションのエントリに仕掛中セッションのマークをつける。ユーザ端末側パケット中継装置103とサービス提供装置側パケット中継装置105に対してのテーブル配布は、任意のゲートウェイ装置104が行ってよいが、ここでは削除対象のゲートウェイ装置104-1が配布するものとする。
【００５３】
各ゲートウェイ装置104内の処理中セッションテーブル307内に、仕掛中セッションのマークが存在しなくなった時点で、各ゲートウェイ装置104は全ゲートウェイ装置104に対して、当該ゲートウェイ装置104が旧装置となっているエントリの消去命令を送信する（S906）。削除対象ゲートウェイ装置104-1は、すべての仕掛中セッションがなくなった時点で、ゲートウェイを物理的にシステムから削除可能となる（S907）。
【００５４】
本手順において、ゲートウェイ装置104を削除した時の新たな担当ゲートウェイ装置決定方法としては2種類の方法がある。第一の方法は、乱数などの非決定論的な計算を用いて、削除対象装置が担当していたIPブロックを、他のゲートウェイ装置に分配する方法である。この方法では、ゲートウェイ装置104の削除通知の中に、担当ゲートウェイ装置テーブル502の全体もしくは差分を含ませることで全ゲートウェイに新たな担当ゲートウェイ装置割り当てを配布する。第二の方法は、ハッシュ値など決定論的な計算によって各ゲートウェイ装置104がそれぞれ新たなゲートウェイ装置割り当てを計算するものである。この方法では、ゲートウェイ装置104の削除通知として削除対象のゲートウェイ装置104のみを伝達すればよいが、各ゲートウェイ装置で計算を行うコストがかかる。
【００５５】
本実施例のように、ゲートウェイ管理サーバ104を用いないことにより、システム上の単一障害点を除去することが可能となり、システム全体の可用性が向上する。
【符号の説明】
【００５６】
１０１          ユーザ端末
１０２          ネットワーク
１０３          ユーザ端末側パケット中継装置
１０４          ゲートウェイ装置
１０５          サービス提供装置側パケット中継装置
１０６          サービス提供装置
１０７          ゲートウェイ管理サーバ
１０８          ユーザ端末管理サーバ
２０１          パケット中継装置のネットワークI/F
２０２          パケット中継装置のパケット処理部
２０３          パケット転送先選択テーブル
３０１          ゲートウェイ装置のネットワークI/F
３０２          ゲートウェイ装置のパケット処理部
３０３          ゲートウェイ装置の管理コマンド処理部
３０４          セッション処理部
３０５          ユーザ端末-ゲートウェイ装置対応テーブル
３０６          セッション引継ぎテーブル
３０７          処理中セッションテーブル
５０１          ユーザ端末IPブロックテーブル
５０２          担当ゲートウェイ装置テーブル
５０３          サービス提供装置IPブロックテーブル
５０４          ユーザ端末IPブロック-ゲートウェイ装置対応テーブル
５０５          サービス提供装置IPブロック-ゲートウェイ装置対応テーブル
【図１】
0005526015.tif 000002
【図２】
0005526015.tif 000003
【図３】
0005526015.tif 000004
【図４】
0005526015.tif 000005
【図５】
0005526015.tif 000006
【図６】
0005526015.tif 000007
【図７】
0005526015.tif 000008
【図８】
0005526015.tif 000009
【図９】
0005526015.tif 000010
【図１０】
0005526015.tif 000011
【図１１】
0005526015.tif 000012
【図１２】
0005526015.tif 000013