【文献】
EC時代のWebシステム高速化,EC時代のWebシステム高速化,日本,日経BP社 Nikkei Business Publications,Inc.
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0021】
まず、本実施の形態を説明する前に、その前提となる技術について説明する。なお、この説明は、本実施の形態の理解を容易にすることを目的とするものである。
通信に利用されるセキュリティゲートウェイ機器では、NAT(Network Address Translation)に加えアンチウイルス、IPS(Intrusion Prevention System)、IDS(Intrusion Detection System)、コンテンツフィルタなどの高機能化に伴い、機器への負荷が増大している。これに対し、ゲートウェイ機器を冗長化し処理を振り分けることで、1台当たりの負荷を軽減している。
一般的な負荷分散の技術として、ロードバランサを用いる方法がある。これは、ゲートウェイの下に配置されたロードバランサが通信セッションを分散する。この方式では、外部と通信するすべてのパケットがロードバランサを経由するため、ロードバランサに負荷が集中する。ロードバランサは高負荷に対応できる性能が要求され、機器の価格も高くなる。
【0022】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム(コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム)、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって1モジュールが複数コンピュータで実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、2以上の値(もちろんのことながら、すべての値も含む)が同じであってもよい。また、「Aである場合、Bをする」という意味を有する記載は、「Aであるか否かを判断し、Aであると判断した場合はBをする」の意味で用いる。ただし、Aであるか否かの判断が不要である場合を除く。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」(社会システム)にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、RAM(Random Access Memory)、外部記憶媒体、通信回線を介した記憶装置、CPU(Central Processing Unit)内のレジスタ等を含んでいてもよい。
【0023】
図1は、本実施の形態が適用されるシステム構成例を説明する説明図である。情報処理装置(バランサ)110、NAT150、複数のゲートウェイ160、端末(クライアント)120、HTTPサーバ130A等が、通信回線(通信回線197、通信回線199等)によって接続されている。特に、1つのNAT150に対して複数のゲートウェイ160(ゲートウェイ群)が接続されている。したがって、異なるゲートウェイ群とは、異なるNAT150と同義である。なお、情報処理装置(バランサ)110は、複数あってもよい。
情報処理装置(バランサ)110は、通信回線197を介して端末(クライアントA)120A、端末(クライアントB)120B、ゲートウェイ−A1:160A1、ゲートウェイ−A2:160A2、ゲートウェイ−B1:160B1、ゲートウェイ−B2:160B2と接続されている。
端末(クライアントA)120Aは、通信回線197を介して端末(クライアントB)120B、情報処理装置(バランサ)110、ゲートウェイ−A1:160A1、ゲートウェイ−A2:160A2、ゲートウェイ−B1:160B1、ゲートウェイ−B2:160B2と接続されている。端末(クライアントB)120Bは、通信回線197を介して端末(クライアントA)120A、情報処理装置(バランサ)110、ゲートウェイ−A1:160A1、ゲートウェイ−A2:160A2、ゲートウェイ−B1:160B1、ゲートウェイ−B2:160B2と接続されている。
ゲートウェイ−A1:160A1は、NAT−A:150Aと接続されており、また、通信回線197を介してゲートウェイ−A2:160A2、ゲートウェイ−B1:160B1、ゲートウェイ−B2:160B2、情報処理装置(バランサ)110、端末(クライアントA)120A、端末(クライアントB)120Bと接続されている。ゲートウェイ−A2:160A2は、NAT−A:150Aと接続されており、また、通信回線197を介してゲートウェイ−A1:160A1、ゲートウェイ−B1:160B1、ゲートウェイ−B2:160B2、情報処理装置(バランサ)110、端末(クライアントA)120A、端末(クライアントB)120Bと接続されている。
ゲートウェイ−B1:160B1は、NAT−B:150Bと接続されており、また、通信回線197を介してゲートウェイ−B2:160B2、ゲートウェイ−A1:160A1、ゲートウェイ−A2:160A2、情報処理装置(バランサ)110、端末(クライアントA)120A、端末(クライアントB)120Bと接続されている。ゲートウェイ−B2:160B2は、NAT−B:150Bと接続されており、また、通信回線197を介してゲートウェイ−B1:160B1、ゲートウェイ−A1:160A1、ゲートウェイ−A2:160A2、情報処理装置(バランサ)110、端末(クライアントA)120A、端末(クライアントB)120Bと接続されている。
NAT−A:150Aは、ゲートウェイ−A1:160A1、ゲートウェイ−A2:160A2、ISP−A:140Aと接続されている。NAT−B:150Bは、ゲートウェイ−B1:160B1、ゲートウェイ−B2:160B2、ISP−B:140Bと接続されている。
ISP−A:140Aは、NAT−A:150Aと接続されており、また、通信回線199を介してISP−B:140B、HTTPサーバ130A、HTTPサーバ130B、HTTPサーバ130C、FTPサーバ132A、FTPサーバ132Bと接続されている。
ISP−B:140Bは、NAT−B:150Bと接続されており、また、通信回線199を介してISP−A:140A、HTTPサーバ130A、HTTPサーバ130B、HTTPサーバ130C、FTPサーバ132A、FTPサーバ132Bと接続されている。
HTTPサーバ130A、HTTPサーバ130B、HTTPサーバ130C、FTPサーバ132A、FTPサーバ132B、ISP−A:140A、ISP−B:140Bは、通信回線199を介してそれぞれ接続されている。
【0024】
本実施の形態の概要を説明する。なお、この概要の説明は、本実施の形態の理解を容易にすることを目的とするものである。
本実施の形態では、ゲートウェイがクライアントに他のゲートウェイを使うように要求するためのICMP(Internet Control Message Protocol(インターネット制御通知プロトコル))リダイレクトを拡張して複数ゲートウェイを指定できるようにし、さらに、クライアントのルーティングをセッション毎に拡張する。そして、どのゲートウェイをどの優先度で使うかのルール(以下、分配ウェイト)を動的に変更することによって、セッション毎ルーティングで弊害となる、長期セッションの途中でゲートウェイが切り替えられないために負荷が偏ることも減少させるものである。なお、ICMPとは、通信処理で使われるプロトコルのひとつであり、インターネット・プロトコルのデータグラム処理における誤りの通知や通信に関する情報の通知などのために使用される。本実施の形態では、このICMPを後述するように拡張して用いる。
【0025】
本実施の形態である情報処理装置(バランサ)110は、通信における負荷分散装置であって、
図2の例に示すように、情報処理装置(バランサ)110は、パケット送受信モジュール210、使用ゲートウェイ群決定モジュール220、クラスタ情報取得・保持モジュール230、拡張ICMPリダイレクト送信モジュール240、分配ウェイト決定モジュール250を有している。
パケット送受信モジュール210は、使用ゲートウェイ群決定モジュール220、クラスタ情報取得・保持モジュール230、拡張ICMPリダイレクト送信モジュール240と接続されている。パケット送受信モジュール210は、パケットを送受信する機能を有している。例えば、端末(利用側のコンピュータであって、以下、クライアントともいう)から通信における、そのクライアントのアドレスと宛先アドレスを受け付ける。アドレスとして、例えば、IPアドレスがある。また、そのクライアントのアドレスと宛先アドレスを、使用ゲートウェイ群決定モジュール220によって決定されたゲートウェイ群を構成するいずれかのゲートウェイに送信する。具体的には、後述するSYNパケットの転送が該当する。いずれかのゲートウェイとしたが、最初のパケットの送信だけであるので、いずれのゲートウェイであってもよい。なお、分配率(以下、分配ウェイトともいう)に基づいてゲートウェイを選択してもよい。例えば、分配率が最も高いゲートウェイを選択してもよい。
【0026】
使用ゲートウェイ群決定モジュール220は、パケット送受信モジュール210、クラスタ情報取得・保持モジュール230、拡張ICMPリダイレクト送信モジュール240、分配ウェイト決定モジュール250と接続されている。使用ゲートウェイ群決定モジュール220は、複数のゲートウェイによって構成されるゲートウェイ群のうち、クライアントが使用すべきゲートウェイ群を決定する。例えば、クライアントから受信したパケット、クラスタ情報を基に、当該通信セッションで使用するゲートウェイ群を決定する機能を有する。
【0027】
クラスタ情報取得・保持モジュール230は、パケット送受信モジュール210、使用ゲートウェイ群決定モジュール220、分配ウェイト決定モジュール250と接続されている。クラスタ情報取得・保持モジュール230は、ゲートウェイ群内のゲートウェイの使用状況に関する情報を収集する。例えば、本処理が行われる前に又は定期的に、各ゲートウェイの死活(稼働しているか否かを示す情報)、CPU使用率、ネットワーク使用率等の負荷情報を取得し、それを保持する機能を有している。具体的には、SNMP(Simple Network Management Protocol)を用いればよい。
【0028】
拡張ICMPリダイレクト送信モジュール240は、パケット送受信モジュール210、使用ゲートウェイ群決定モジュール220、分配ウェイト決定モジュール250と接続されている。拡張ICMPリダイレクト送信モジュール240は、使用ゲートウェイ群決定モジュール220によって決定されたゲートウェイ群を構成するゲートウェイのアドレスと該ゲートウェイに通信を行わせる割合を示す分配率を、クライアントに送信する。また、拡張ICMPリダイレクト送信モジュール240は、予め定められた条件を満たした場合は、ゲートウェイのアドレスとそのゲートウェイに通信を行わせる割合を示す分配率を、クライアントに送信するようにしてもよい。
例えば、以下の情報を含んだ拡張ICMPリダイレクトパケットをクライアントへ送信する機能を有する。
・宛先IPアドレス
・送信元ポート番号
・使用ゲートウェイ群
・分配ウェイト
また、以下の情報を含んだ分配ウェイト広告用拡張ICMPリダイレクトパケットをクライアントへ送信する機能を有する。
・使用ゲートウェイ群
・分配ウェイト
【0029】
分配ウェイト決定モジュール250は、使用ゲートウェイ群決定モジュール220、クラスタ情報取得・保持モジュール230、拡張ICMPリダイレクト送信モジュール240と接続されている。分配ウェイト決定モジュール250は、ゲートウェイの使用状況に関する情報に基づいて、そのゲートウェイの分配率を算出する。例えば、本処理が行われる前に又は定期的に更新されるクラスタ情報をもとに分配ウェイトを決定する機能を有する。
なお、ゲートウェイ160は、一般的なゲートウェイ機能に加え以下の機能を有する。ゲートウェイ160内の負荷情報送信モジュールが、CPU使用率、ネットワーク使用率等の負荷情報を、情報処理装置(バランサ)110へ返信する機能を有する。例えば、SNMPへ応答して行えばよい。
【0030】
本実施の形態である端末(クライアント)120は、ユーザーが使用するものであって、HTTPサーバ130A、FTPサーバ132A等との通信を行うものであって、
図3の例に示すように、パケット送受信モジュール310、拡張ICMPリダイレクト受信モジュール320、ルーティング紐付モジュール330、ゲートウェイ選択モジュール340を有している。
パケット送受信モジュール310は、拡張ICMPリダイレクト受信モジュール320、ゲートウェイ選択モジュール340と接続されている。パケット送受信モジュール310は、パケットの送受信を行う機能を有する。例えば、通信における自クライアントのアドレスと宛先アドレスを情報処理装置(バランサ)110に送信する。そして、パケット送受信モジュール310は、ゲートウェイ選択モジュール340によって選択されたゲートウェイを用いて、宛先アドレス(例えば、HTTPサーバ130A等)との通信を行う。
【0031】
拡張ICMPリダイレクト受信モジュール320は、パケット送受信モジュール310、ルーティング紐付モジュール330と接続されている。拡張ICMPリダイレクト受信モジュール320は、情報処理装置(バランサ)110の拡張ICMPリダイレクト送信モジュール240からゲートウェイ群を構成するゲートウェイのアドレスと、そのゲートウェイに通信を行わせる割合を示す分配率を受信する。また、拡張ICMPリダイレクト受信モジュール320は、パケット送受信モジュール310によって、宛先アドレス(例えば、HTTPサーバ130A等)との通信が行われている最中に、情報処理装置(バランサ)110の拡張ICMPリダイレクト送信モジュール240からゲートウェイのアドレスと、そのゲートウェイに通信を行わせる割合を示す分配率を受信するようにしてもよい。
例えば、受信した拡張ICMPリダイレクトパケットから通信セッション情報及びゲートウェイ群とその分配ウェイトを抽出し、ルーティング紐付モジュール330に通知する機能を有する。また、分配ウェイト広告用拡張ICMPリダイレクトパケットからゲートウェイ群とその分配ウェイトを抽出し、ルーティング紐付モジュール330に通知する機能を有する。
【0032】
ルーティング紐付モジュール330は、拡張ICMPリダイレクト受信モジュール320、ゲートウェイ選択モジュール340と接続されている。ルーティング紐付モジュール330は、拡張ICMPリダイレクト受信モジュール320で抽出された通信セッション毎にゲートウェイ群を紐付け(通信セッションとゲートウェイ群を対応付け)、そのゲートウェイ群内の各ゲートウェイに分配ウェイトを設定する機能を有する。また、各ゲートウェイの分配ウェイトの設定を更新する機能を有する。
ゲートウェイ選択モジュール340は、パケット送受信モジュール310、ルーティング紐付モジュール330と接続されている。ゲートウェイ選択モジュール340は、拡張ICMPリダイレクト受信モジュール320によって受信された分配率に基づいて、今後の通信に用いるゲートウェイを選択する。また、パケット送受信モジュール310によって、宛先アドレス(例えば、HTTPサーバ130A等)との通信が行われている最中に、拡張ICMPリダイレクト受信モジュール320が、ゲートウェイのアドレスと、そのゲートウェイに通信を行わせる割合を示す分配率を受信した場合は、その分配率に基づいて、今後の通信に用いるゲートウェイを動的に選択する。例えば、ルーティング紐付モジュール330内に通信セッションに紐付けられたゲートウェイ群があった場合、設定されている分配ウェイトにしたがいゲートウェイを選択し、通信セッションに紐付けられたゲートウェイ群がなかった場合は情報処理装置(バランサ)110を選択する機能を有する。
【0033】
なお、情報処理装置(バランサ)110は、通信セッションを管理しない。そして、一度経路が決定すると、通信パケットは、情報処理装置(バランサ)110を経由しないこととなる。また、ゲートウェイに必要な機能は公知のSNMPだけでよい。
【0034】
図4は、本実施の形態による処理例を示すフローチャートである。ここでは、端末(クライアントA)120A、情報処理装置(バランサ)110、ゲートウェイ−A1:160A1、ゲートウェイ−A2:160A2、NAT−A:150A、HTTPサーバ130Aを例としているが、端末(クライアントB)120B、ゲートウェイ−B1:160B1、ゲートウェイ−B2:160B2、NAT−B:150B、HTTPサーバ130B等でもよい。
前提条件として、以下のものがある。
図4の例では、IPv4でHTTPプロトコルを使用する場合を例示するが、IPv6、UDP/ICMPプロトコル等にも適用可能である。
クラスタ情報取得・保持モジュール230は、SNMPプロトコルを用いることとする。
端末(クライアントA)120Aのデフォルトゲートウェイには予め情報処理装置(バランサ)110が設定されている。つまり、1回目のパケット(端末(クライアントA)120Aが用いるゲートウェイ群が確定する前)は、情報処理装置(バランサ)110が受信することになる。
ネットワーク情報は以下の通りであるとする。もちろんのことながら、これらは例示である。
HTTPサーバ : 192.168.10.1
クライアント : 192.168.1.100
ゲートウェイA1 : 192.168.1.1
ゲートウェイA2 : 192.168.1.2
【0035】
ステップS402:負荷情報取得(ゲートウェイの情報取得(情報処理装置(バランサ)110、各ゲートウェイ(ゲートウェイ−A1:160A1、ゲートウェイ−A2:160A2)))
情報処理装置(バランサ)110のクラスタ情報取得・保持モジュール230は、SNMPを用いて各ゲートウェイの死活状況や、負荷情報(CPU使用率、ネットワーク使用率等)を、予め定められた期間の間隔で取得し、それを保持する。
【0036】
ステップS404:分配ウェイト決定(分配ウェイトの決定(情報処理装置(バランサ)110))
情報処理装置(バランサ)110のクラスタ情報取得・保持モジュール230が、各ゲートウェイの負荷情報(クラスタ情報)を取得すると、分配ウェイト決定モジュール250はクラスタ情報から分配ウェイトを算出し、拡張ICMPリダイレクト送信モジュール240に通知する。分配ウェイトは、そのゲートウェイが使用されているほど低くなる値(余裕があるほど高くなる値)である。なお、ゲートウェイ群として管理するのは、情報処理装置(バランサ)110であり、端末(クライアント)120は、そのゲートウェイ群内の個別のゲートウェイを選択する。
分配ウェイトの算出には、例えば以下に挙げるもののうちのいずれか1つ、又はこれらを組み合わせた方法を用いる。
1.CPU使用率の逆数を分配ウェイトとする
2.帯域使用率の逆数を分配ウェイトとする
3.100%からCPU使用率を減算したものを分配ウェイトとする
4.方法1〜3のいずれかで求めた値と直近n(nは整数、例えば3等)回分の移動平均を分配ウェイトとする
なお、ステップS402、ステップS404は、予め定められた期間毎(例えば、1分毎、5分毎等)に行うようにしてもよい。
【0037】
ステップS406:SYNパケット送信(通信の開始(端末(クライアントA)120A))
端末(クライアントA)120Aのパケット送受信モジュール310は、
図5の例に示す情報が含まれたサーバ宛のSYNパケットを、デフォルトゲートウェイの情報処理装置(バランサ)110へ向けて(予めARPで調べておいた情報処理装置(バランサ)110のMACアドレスを送信先MACアドレスに設定して)送信する。
図5は、SYNパケット情報500のデータ構造例を示す説明図である。SYNパケット情報500は、送信元IP欄510、宛先IP欄520、送信元ポート番号欄530、宛先ポート番号欄540を有している。送信元IP欄510は、送信元IPアドレス(ここでは端末(クライアントA)120AのIPアドレス)を記憶している。宛先IP欄520は、宛先IPアドレス(ここではHTTPサーバ130AのIPアドレス)を記憶している。送信元ポート番号欄530は、送信元ポート番号を記憶している。宛先ポート番号欄540は、宛先ポート番号を記憶している。ポート番号とは、コンピュータがデータ通信を行う際に通信先のプログラムを特定するための番号のことである。
【0038】
ステップS408:使用GW決定(使用ゲートウェイの決定(情報処理装置(バランサ)110))
端末(クライアントA)120AからのSYNパケットを受信した情報処理装置(バランサ)110の使用ゲートウェイ群決定モジュール220は、予め設定されたアルゴリズムにしたがって当該通信セッションで端末(クライアントA)120Aが使用するゲートウェイ群を決定する。
この決定アルゴリズムは、例えば以下に挙げるもののうちのいずれか1つ、又はこれらを組み合わせた方法を用いる。なお、各ゲートウェイの情報はステップS402で定期的に取得している。
1.最も負荷の低いゲートウェイ群を選択する
2.最も応答の速いゲートウェイ群を選択する
3.最も帯域に余裕があるゲートウェイ群を選択する
ここでは、方式1を用いたとして、その結果、ゲートウェイ群Aが採用されたとする。
次に、使用ゲートウェイ群決定モジュール220は、分配ウェイト決定モジュール250(ステップS404)からゲートウェイ群Aの分配ウェイト(例えば、
図6の例に示すゲートウェイ・分配ウェイトテーブル600)を取得し、これを拡張ICMPリダイレクト送信モジュール240に通知する。
図6は、ゲートウェイ・分配ウェイトテーブル600のデータ構造例を示す説明図である。ゲートウェイ・分配ウェイトテーブル600は、ゲートウェイ名欄610、IPアドレス欄620、分配ウェイト欄630を有している。ゲートウェイ名欄610は、決定したゲートウェイ群内の各ゲートウェイ名を記憶している。IPアドレス欄620は、そのゲートウェイのIPアドレスを記憶している。分配ウェイト欄630は、そのゲートウェイにおける分配ウェイトを記憶している。
【0039】
ステップS410:拡張ICMPリダイレクト送信(拡張ICMPリダイレクトの送信(情報処理装置(バランサ)110))
情報処理装置(バランサ)110の拡張ICMPリダイレクト送信モジュール240は、
図5、
図6の例に示す情報が含まれた拡張ICMPリダイレクトパケット(
図7の例に示す拡張ICMPリダイレクトパケット700)を端末(クライアントA)120Aに向けて(予めARPで取得した端末(クライアントA)120AのMACアドレスを送信先MACアドレスに設定して)送信する。
図7は、拡張ICMPリダイレクトパケット700のデータ構造例を示す説明図であり、通信セッションの使用ゲートウェイ群と分配ウェイトの配信用に独自拡張したICMPタイプ=5(リダイレクト)のコード=4のパケットである。もちろんのことながら、コード番号4等は仮の番号である。拡張ICMPリダイレクトパケット700は、タイプ710、コード720、チェックサム730、IPヘッダ740、データグラム750、ゲートウェイ総数760、ゲートウェイ1:7701、ゲートウェイ1のウェイト7801、ゲートウェイnのウェイト780n等を有している。選択したゲートウェイ群内のゲートウェイの数だけ、ゲートウェイ1:7701、ゲートウェイ1のウェイト7801の組が含まれる(nは、選択されたゲートウェイ群内のゲートウェイの数)。拡張ICMPリダイレクトパケット700の幅は、32ビット長である。かっこ内の数は、それぞれのビット長を表している。IPヘッダ740、データグラム750内に、SYNパケット情報500の内容が含まれ、ゲートウェイ1:7701、ゲートウェイ1のウェイト7801等の組に、ゲートウェイ・分配ウェイトテーブル600の内容が含まれる。
【0040】
ステップS412:SYNパケット転送(SYNパケットの転送(情報処理装置(バランサ)110))
情報処理装置(バランサ)110のパケット送受信モジュール210は、端末(クライアントA)120Aから受信したサーバ宛のSYNパケットを、ステップS408で決定したゲートウェイ群Aのうち、CPU使用率の低い方のゲートウェイA1:160A1に向けて(予めARPで取得したゲートウェイ−A1:160A1のMACアドレスを送信先MACアドレスに設定して)送信する。なお、ゲートウェイ群Aのうちのゲートウェイであれば、いずれのゲートウェイとしてもよいと決定してもよい。
【0041】
ステップS414:SYNパケット転送(パケットの転送(ゲートウェイ−A1:160A11))
ゲートウェイ−A1:160A1は、情報処理装置(バランサ)110から送信されてきたHTTPサーバ宛のSYNパケットをNAT−A:150Aに向けて送信する。
ステップS416:NAT処理(NAT−A:150A)
NAT−A:150Aは、ゲートウェイ−A1:160A1から送信されてきたHTTPサーバ宛のSYNパケットにNAT処理を施し、HTTPサーバ130Aに向けて送信する。
ステップS418:SYN,ACKパケット送信(SYN/ACKの送信(HTTPサーバ130A))
NAT−A:150AからのSYNパケットを受信したHTTPサーバ130Aは、SYN/ACKパケットをNAT−A:150A〜ゲートウェイ−A1:160A1経由で端末(クライアントA)120Aに返送する。
【0042】
ステップS420:拡張ICMPリダイレクト解析、ステップS422:ルーティング紐付け(拡張ICMPリダイレクトの受信(端末(クライアントA)120A))
一方、端末(クライアントA)120Aの拡張ICMPリダイレクト受信モジュール240は、情報処理装置(バランサ)110からの拡張ICMPリダイレクトを解析し(具体的には、拡張ICMPリダイレクトパケット700からゲートウェイ・分配ウェイトテーブル600の情報を抽出する)、通信セッション情報、使用ゲートウェイ群、その分配ウェイトを取得する。端末(クライアントA)120Aのルーティング紐付モジュール330は、当該通信セッションとゲートウェイ群Aと分配ウェイトを紐付ける(対応付ける)。具体的には、SYNパケット情報500とゲートウェイ・分配ウェイトテーブル600を対応付ける。
【0043】
ステップS424:ACKパケット送信(通信セッションの確立(端末(クライアントA)120A))
当該通信セッションの以降のパケットは、ステップS422で紐付けられたゲートウェイ群Aを経由して送信される。ゲートウェイ群Aのどのゲートウェイを使うかは、ゲートウェイ群Aに設定された分配ウェイトに基づく。具体的には、分配ウェイトの高いものを選択する。
ここでは端末(クライアントA)120Aのパケット送受信モジュール310は、HTTPサーバ130A宛てACKパケットをゲートウェイ−A1:160A1に向けて送信し、通信セッションを確立する。
【0044】
ステップS426:パケット送受信(データの送受信(端末(クライアントA)120A、NAT−A:150A、ゲートウェイ群A(ゲートウェイ−A1:160A1、ゲートウェイ−A2:160A2)、HTTPサーバ130A))
端末(クライアントA)120AとHTTPサーバ130Aは、ゲートウェイ群A〜NAT−Aを経由してパケットの送受信を行う。この一連の通信は、
図6の例に示したゲートウェイ・分配ウェイトテーブル600にしたがう。
【0045】
ステップS428:負荷情報取得、ステップS430:分配ウェイト決定、ステップS432:分配ウェイト広告(分配ウェイトの広告(情報処理装置(バランサ)110))
定期的に収集したクラスタ情報から分配ウェイトが算出され(ステップS404)、ある条件を満たすと分配ウェイト広告送信要求が拡張ICMPリダイレクト送信モジュール240に通知される。つまり、分配ウェイトのアップデートを行うものである。
この条件は、例えば以下に挙げるもののうちのいずれか1つ、又はこれらを組み合わせた方法を用いる。
1.分配ウェイトが計算される
2.分配ウェイトが閾値を超える
3.前回広告から予め定められた時間が経過する
拡張ICMPリダイレクト送信モジュール240は、分配ウェイト広告用に独自拡張したICMPタイプ=5(リダイレクト)のコード=5のパケット(
図8の例に示す分配ウェイト広告用拡張ICMPリダイレクト800)をマルチキャストする。つまり、すべての端末(クライアント)に向けて送信する。TCP等、他のプロトコルを用いてもよい。なお、1つの通信セッションの間においては、ゲートウェイが変更されることはあるが、ゲートウェイ群が変更されることはない。
図8は、分配ウェイト広告用拡張ICMPリダイレクト800のデータ構造例を示す説明図である。分配ウェイト広告用拡張ICMPリダイレクト800は、タイプ810、コード820、チェックサム830、ゲートウェイ総数840、ゲートウェイ1:8501、ゲートウェイ1のウェイト8601、ゲートウェイn:850n、ゲートウェイnのウェイト860n等を有している。
【0046】
ステップS434:分配ウェイト広告解析、ステップS436:分配ウェイト更新(分配ウェイトの更新(端末(クライアントA)120A))
情報処理装置(バランサ)110からの分配ウェイト広告パケットを受け取った端末(クライアントA)120Aの拡張ICMPリダイレクト受信モジュール320は、使用ゲートウェイ群とその分配ウェイトを抽出する。
端末(クライアントA)120Aのルーティング紐付モジュール330は、ゲートウェイ群とその分配ウェイト設定を更新する。
ステップS438:パケット送受信(データの送受信(端末(クライアントA)120A、NAT−A:150A、ゲートウェイ群A(ゲートウェイ−A1:160A1、ゲートウェイ−A2:160A2)、HTTPサーバ130A))
端末(クライアントA)120Aは、更新された分配ウェイトの設定に基づき、ゲートウェイ群Aからゲートウェイ−A2:160A2を選択し、HTTPサーバ130Aと通信を行う。
ステップS440:通信セッション終了、ステップS442:ルーティング紐付け削除(通信セッションの終了(端末(クライアントA)120A))
当該通信セッションが終了すると、端末(クライアントA)120Aのルーティング紐付モジュール330は、紐付けられたルーティング情報(ゲートウェイ群A)を削除する。
【0047】
なお、本実施の形態としてのプログラムが実行されるコンピュータ(情報処理装置(バランサ)110、端末(クライアント)120、HTTPサーバ130A、HTTPサーバ130B、ISP140、NAT150、ゲートウェイ160)のハードウェア構成は、
図9に例示するように、一般的なコンピュータであり、具体的にはパーソナルコンピュータ、サーバとなり得るコンピュータ等である。つまり、具体例として、処理部(演算部)としてCPU901を用い、記憶装置としてRAM902、ROM903、HD904を用いている。HD904として、例えばハードディスクを用いてもよい。パケット送受信モジュール210、使用ゲートウェイ群決定モジュール220、クラスタ情報取得・保持モジュール230、拡張ICMPリダイレクト送信モジュール240、分配ウェイト決定モジュール250、パケット送受信モジュール310、拡張ICMPリダイレクト受信モジュール320、ルーティング紐付モジュール330、ゲートウェイ選択モジュール340等のプログラムを実行するCPU901と、そのプログラムやデータを記憶するRAM902と、本コンピュータを起動するためのプログラム等が格納されているROM903と、補助記憶装置(フラッシュメモリ等であってもよい)であるHD904と、キーボード、マウス、タッチパネル等に対する利用者の操作に基づいてデータを受け付ける受付装置906と、CRT、液晶ディスプレイ等の出力装置905と、ネットワークインタフェースカード等の通信ネットワークと接続するための通信回線インタフェース907、そして、それらをつないでデータのやりとりをするためのバス908により構成されている。これらのコンピュータが複数台互いにネットワークによって接続されていてもよい。
【0048】
前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、
図9に示すハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、
図9に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えばASIC等)で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに
図9に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、情報家電、複写機、ファックス、スキャナ、プリンタ、複合機(スキャナ、プリンタ、複写機、ファックス等のいずれか2つ以上の機能を有している画像処理装置)などに組み込まれていてもよい。
【0049】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD−R、DVD−RW、DVD−RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)等、ブルーレイ・ディスク(Blu−ray(登録商標) Disc)、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読出し専用メモリ(ROM)、電気的消去及び書換可能な読出し専用メモリ(EEPROM(登録商標))、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)、SD(Secure Digital)メモリーカード等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、あるいは無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して
記録されていてもよい。また、圧縮や暗号化など、復元可能であればどのような態様で記録されていてもよい。