説明

通信ネットワークシステム

【課題】同じサービスを提供する複数サーバの処理負荷を分散させる通信ネットワークシステムを得ること。
【解決手段】本発明は、複数のサブネットワークを含んで構成された通信ネットワークシステムであって、サーバは、提供サービスに対応する第1アドレスおよび自サーバを示す第2アドレスを有し、第1および第2アドレスと処理負荷情報とを、同じサブネットワークに属している境界ルータへ通知し、クライアントは、所定のサービスを要求する場合、サービスに対応するアドレスを設定したパケットを送信し、境界ルータは、通知された情報を保持しておくとともに、第1アドレスおよび処理負荷情報と自境界ルータのアドレスとを他の境界ルータへ広告し、同じサブネットワークのクライアントからパケットを受信した場合、宛先アドレス、サーバから通知された情報、他の境界ルータから広告された情報に基づいて転送先を決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、インターネットやイントラネットで使用されるサーバ間の処理負荷を均衡化させる負荷分散機能を有する通信ネットワークシステムに関する。
【背景技術】
【0002】
通信ネットワークシステムにおける負荷分散技術が開示された文献として、下記の特許文献1〜3が存在する。
【0003】
特許文献1には、ルータが管理するネットワークのトラヒック情報等に基づき、複数のクライアントが特定のサーバに要求を送信する際に、どのルータを経由するかの判断を行い、各ルータの処理負荷を分散させるとともにネットワークの輻輳や障害を回避するための装置(負荷分散サーバ)を備えたネットワークが開示されている。
【0004】
また、特許文献2および3には、HTTPプロキシ(proxy)の様にレイヤ7プロトコルレベルでクライアントからサーバへの要求を中継する中継サーバを利用した負荷分散方法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−303090号公報
【特許文献2】特開2008−225644号公報
【特許文献3】特開2011−41006号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1に記載の技術はクライアントとサーバ間においてパケットを経由させるルータを切り替えてルータ間の処理負荷を分散させるためのものであり、クライアントが利用可能なサーバが複数存在する場合におけるサーバ間の負荷分散については考慮されていない。一方、特許文献2および3の記載に技術によれば、同一サービスを提供する複数のサーバに対する負荷分散が可能となる。しかし、特許文献2に記載の技術では、デフォルトの装置に一旦接続した後、同じ機能を有する装置間の負荷状態に応じて接続先を切り替える必要があり処理が複雑化するとともに、ネットワーク内のトラフィックが増加してしまう。特許文献3に記載の技術では、装置間の負荷が均等となるように接続先を決定する専用の装置が必要となり、システム構成が複雑化してしまう。また、特許文献1〜3に記載の技術は、いずれも、ネットワークの障害回避機能については考慮されていない。
【0007】
本発明は、上記に鑑みてなされたものであって、処理手順やシステム構成が複雑化するのを抑えつつ、同じサービスを提供する複数サーバの処理負荷を分散させることが可能な通信ネットワークシステムを得ることを目的とする。
【課題を解決するための手段】
【0008】
上述した課題を解決し、目的を達成するために、本発明は、複数のサブネットワークを含んで構成された通信ネットワークシステムであって、各サブネットワークは、サブネットワークと外部のネットワークとを接続するルータを1台以上含むとともに、クライアントから要求されたサービスを提供するサーバを含むことが可能であり、前記サーバは、提供するサービスに対応する第1のアドレスおよび自サーバを一意に示す第2のアドレスを有し、当該第1のアドレスおよび第2のアドレスと自身の処理負荷に関する情報とを、サーバ状態情報として自身と同じサブネットワークに属しているルータへ定期的に通知し、前記クライアントは、所定のサービスを要求する場合、当該サービスに対応するアドレスを宛先アドレスに設定したパケットを送信し、前記ルータは、サーバから通知されたサーバ状態情報を保持しておくとともに、当該サーバ状態情報に含まれている第1のアドレスおよび処理負荷に関する情報と、自ルータのアドレスとを他のルータへ広告し、自身と同じサブネットワークに接続中のクライアントからパケットを受信した場合、当該パケットの宛先アドレス、前記サーバから通知された情報、および他のルータから広告された情報に基づいて、当該パケットの転送先を決定することを特徴とする。
【発明の効果】
【0009】
本発明によれば、クライアントから送信されたパケットを処理負荷の小さいサーバに転送してサーバ間の処理負荷を分散できるとともに、従来と比較して、処理手順やシステム構成を単純化できる、という効果を奏する。
【図面の簡単な説明】
【0010】
【図1】図1は、本発明にかかる通信ネットワークシステムの全体構成例を示す図である。
【図2】図2は、境界ルータの構成例を示す図である。
【図3】図3は、サーバの構成例を示す図である。
【図4】図4は、パケット転送動作の一例を示す図である。
【発明を実施するための形態】
【0011】
以下に、本発明にかかる通信ネットワークシステムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【0012】
実施の形態.
図1は、本発明にかかる通信ネットワークシステムの全体構成例を示す図である。
【0013】
図1に例示した通信ネットワークシステムは、サーバ11,12と、境界ルータ21,22−1,22−2,23,24と、を備え、サーバおよび境界ルータはサブネットワークを形成している。図1の例では、サーバ11および境界ルータ21がサブネットワーク31を形成し、境界ルータ22−1および22−2がサブネットワーク32を形成し、サーバ12および境界ルータ23がサブネットワーク33を形成し、境界ルータ24がサブネットワーク34を形成している。また、サブネットワーク31にクライアント1−1が接続され、サブネットワーク32にクライアント1−2が接続され、サブネットワーク34にクライアント1−3が接続されている。各サブネットワークは、境界ルータを介して境界ルータ間接続ネットワークに接続されており、各サブネットワーク内の通信装置(境界ルータ,サーバ,クライアント)は、境界ルータ間接続ネットワークを介して他のサブネットワーク内の通信装置と通信を行う。なお、サーバや境界ルータ、サブネットワークなどの数や接続関係を図1に示した内容に限定するものではない。
【0014】
本実施の形態の通信ネットワークシステムにおいて、各サーバには、提供しているサービスを一意に示す第1のIPアドレス(図1のアドレスAに相当)と、サーバを一意に示す第2のIPアドレス(図1のアドレスB1,B2に相当)とが割り当てられている。図1の例では、サーバ11および12の第1のIPアドレスに同一のアドレスAが割り当てられており、これらのサーバ11および12は同じサービスを提供する。各境界ルータは、同じサービスを提供する複数サーバ間の負荷分散制御で使用する情報として、ホストルート宛ルート情報を保持している。図1にも示しているが、このホストルート宛ルート情報には、以下の<1>〜<4>の情報が含まれる。
【0015】
<1>サーバの第1のIPアドレス(提供サービス識別用のIPアドレス)
<2>サーバの第2のIPアドレス(サーバ識別用のIPアドレス)、または、サーバと同じサブネットワークに属している境界ルータの識別情報(IPアドレス)
<3>メトリック(ルーティングメトリック)
<4>サーバの処理負荷の情報
【0016】
境界ルータは、自身が属しているサブネットワークにサーバが存在している場合、そのサーバの第2のIPアドレスを上記の<2>の情報として保持する。自身が属しているサブネットワークとは異なるサブネットワークのサーバについては、そのサーバと同じサブネットワークに属している境界ルータの識別情報(IPアドレス)を上記の<2>の情報として保持する。各境界ルータは、上記の<1>〜<4>の情報であるホストルート宛ルート情報を取得して保持しておくために、自身と同じサブネットワークにサーバが属している場合、サーバそれぞれについて、第1のIPアドレス、自身(自境界ルータ)の識別情報、メトリック(詳細については後述する)および処理負荷を他の境界ルータに向けて広告する。この結果、各境界ルータは、他の境界ルータと同じサブネットワークに属している各サーバの種別(サーバが提供するサービスの種別)および処理負荷を知ることができるので、処理負荷に応じたパケット転送制御が可能となり、同じサービスを提供しているサーバ間の負荷分散を実現できる。なお、あるサブネットワーク内に第1のIPアドレスが同じサーバが複数存在している場合、このネットワーク内の境界ルータは、サーバごとではなく、第1のIPアドレスが同じサーバの情報を集約して他の境界ルータへ広告する。
【0017】
図1の例では、サーバ11と同じサブネットワークに属している境界ルータ21は、ホストルート宛情報として、[アドレスA,アドレスB1,メトリック,処理負荷の情報]の組および[アドレスA,境界ルータ23の情報,メトリック,処理負荷の情報]の組を保持している。なお、前者がサーバ11に対応する情報となる。境界ルータ22−1,22−2,24は、自身が属しているサブネットワークにサーバが属していないので、ホストルート宛情報として、[アドレスA,境界ルータ21の情報,メトリック,処理負荷の情報]の組および[アドレスA,境界ルータ23の情報,メトリック,処理負荷の情報]の組を保持している。サーバ12と同じサブネットワークに属している境界ルータ23は、ホストルート宛情報として、[アドレスA,境界ルータ21の情報,メトリック,処理負荷の情報]の組および[アドレスA,アドレスB2,メトリック,処理負荷の情報]の組を保持している。なお、後者がサーバ12に対応する情報となる。
【0018】
なお、図1においては、簡単化のために、第1のIPアドレスとしてアドレスAが割り当てられたサーバ11および12のみが存在している場合(各サーバの第1のIPアドレスが同じであり、同じサービスを提供する場合)の例を示したが、実際には、第1のIPアドレスに異なるアドレスが割り当てられたサーバ(異なるサービスを提供するサーバ)が混在する。
【0019】
例えば、図1の通信ネットワークシステムにおいて、さらに、第1のIPアドレスが「アドレスA2」、第2のIPアドレスが「アドレスB3」のサーバがサブネットワーク31に属している場合、境界ルータ21は、ホストルート宛情報として、[アドレスA,アドレスB1,メトリック,処理負荷の情報]の組、[アドレスA,境界ルータ23の情報,メトリック,処理負荷の情報]の組、および[アドレスA2,アドレスB3,メトリック,処理負荷の情報]の組を保持する。境界ルータ22−1,22−2,24は、[アドレスA,境界ルータ21の情報,メトリック,処理負荷の情報]の組、[アドレスA,境界ルータ23の情報,メトリック,処理負荷の情報]の組、および[アドレスA2,境界ルータ21の情報,メトリック,処理負荷の情報]の組を保持する。境界ルータ23は、[アドレスA,境界ルータ21の情報,メトリック,処理負荷の情報]の組、[アドレスA,アドレスB2,メトリック,処理負荷の情報]の組、および[アドレスA2,境界ルータ21の情報,メトリック,処理負荷の情報]の組を保持する。
【0020】
つづいて、境界ルータの構成について説明する。なお、各境界ルータの構成は同一である。図2は、境界ルータの構成例を示す図であり、本実施の形態の境界ルータは、パケット転送処理部201と、負荷分散判断処理部202と、サーバ登録管理処理部203と、ルーティングプロトコル処理部204と、パケット転送用エントリテーブル、サーバ負荷情報テーブルおよびルーティングテーブルを保持している記憶部205とを備える。
【0021】
記憶部205が保持している情報について説明する。
【0022】
ルーティングテーブルは、通常のIPルータが管理するルーティングテーブルと同様であり、宛先IPアドレスプレフィックスに対応付けて、転送先の送信インタフェース(送信先ポート)および次ホップ装置、ルーティングメトリックなどの情報が登録されている。
【0023】
パケット転送用エントリテーブルの各エントリには、パケットの情報である[送信元IPアドレス,送信先IPアドレス,プロトコル,送信元ポート番号,送信先ポート番号]の組と、このパケットの転送先の装置(境界ルータ、サーバまたは次ホップ装置)の情報(IPアドレス)とが登録されている。このパケット転送用エントリは、各境界ルータが、特定のクライアントとサーバの間で送受信されるパケットを受信した場合の転送先(どの送信先ポートへ出力するか、及び、ソースルーティングヘッダに指定するIPアドレス、もしくは、次ホップ装置)を示す。パケットを送受信する1組の装置に対して、2つのエントリ(クライアントからサーバに向けたパケット転送に対応するエントリ[サーバ方向],逆方向へのパケット転送に対応するエントリ[クライアント方向])が存在する。また、各エントリには、最終パケット転送時刻も併せて登録される。この最終パケット転送時刻は、そのエントリに対応するパケットの転送が行われると、転送を実施した時刻に更新される。パケット転送用エントリテーブルのエントリに示される転送先の装置の情報は、パケット転送用エントリがサーバ方向のエントリである場合、境界ルータによるソースルーティングヘッダの付与、もしくは、書き換えのため、もしくは、次ホップ装置決定のために使用する。パケット転送用エントリがクライアント方向のエントリである場合、次ホップ装置決定のために使用する。
【0024】
サーバ負荷情報テーブルの各エントリには、図1に示したホストルート宛ルート情報、すなわち、ルーティングプロトコルで他の境界ルータから取得した情報(他の境界ルータのIPアドレス,この境界ルータと同じサブネットワークに属しているサーバの第1のIPアドレス,ルーティングメトリック,負荷情報)、または、自身(自境界ルータ)が属するサブネットワーク内のサーバから取得した情報(サーバの第1のIPアドレスおよび第2のIPアドレス,ルーティングメトリック,負荷情報)、が登録されている。ルーティングメトリックは、他の境界ルータから取得した情報の場合であれば、他の境界ルータまでのルーティングメトリックであり、自身が属するサブネットワーク内のサーバから取得した情報の場合であれば、このサーバまでのルーティングメトリックである。他の境界ルータから取得した情報を登録したエントリとサーバから取得した情報を登録したエントリは区別がつくように管理する。
【0025】
パケット転送処理部201は、パケットが入力されると、パケットに付与されているソースルーティングヘッダの内容とパケット転送用エントリテーブルの内容とに従ってパケット転送を行い、サーバの処理負荷を分散させる。ソースルーティングヘッダには、パケットを通過させたい境界ルータのアドレス、もしくは、サーバ識別用のIPアドレスが設定される。ソースルーティングヘッダはパケットの送信元(クライアントまたはサーバ)と同じサブネットワーク内において、送信元から最初にパケットを受信した境界ルータ、もしくは、宛先となるサーバと同じサブネットワーク内において、送信元から最初にパケットを受信した境界ルータにより設定される。
【0026】
パケット転送処理部201による転送先の決定動作では、(a)パケットの情報(送信元IPアドレスおよび送信先IPアドレスとする。プロトコル情報を含めてもよい)を用いてパケット転送用エントリテーブルを検索し、(b−1)対応するパケット転送用エントリが見つかった場合は、このエントリの内容に従い転送先を決定する。見つかったパケット転送用エントリがサーバ方向のエントリであり、かつ、パケットにソースルーティングヘッダが付与されていない場合は、パケット転送用エントリの転送先装置に示されるアドレスをソースルーティングヘッダのアドレスとして設定し、ソースルーティングヘッダに設定したアドレスを宛先としてルーティングテーブル検索を行い、転送先を決定する。見つかったパケット転送用エントリがサーバ方向のエントリであり、かつ、パケットにソースルーティングヘッダが付与されている場合で、ソースルーティングヘッダに設定されているアドレスが自境界ルータのIPアドレスに一致しない場合、パケット転送用エントリに示される転送先装置へ転送する。見つかったパケット転送用エントリがサーバ方向のエントリであり、かつ、パケットにソースルーティングヘッダが付与されている場合で、ソースルーティングヘッダに設定されているアドレスが自境界ルータのIPアドレスに一致する場合、パケット転送用エントリに示される転送先の装置のアドレス(=転送先サーバの第2のIPアドレス[サーバ固有のIPアドレス])にソースルーティングヘッダの内容を書き換え、書き換えたソースルーティングヘッダに設定されているアドレスを宛先としてルーティングテーブル検索を行い、転送先を決定する。見つかったパケット転送用エントリがクライアント方向のエントリである場合、パケット転送用エントリに示される転送先装置へ転送する。(b−2)対応するパケット転送用エントリが見つからなかった場合には、パケットを負荷分散判断処理部202に渡して転送先を決定するよう依頼する。
【0027】
また、受信したパケットがTCPのコネクション解放パケット(FINフラグもしくはRSTフラグがTCPヘッダに設定されているもの)の場合も負荷分散判断処理部202に渡す。
【0028】
負荷分散判断処理部202は、ソースルーティングヘッダが付与されておらず、かつパケット転送用エントリテーブルに対応する情報(パケット転送用エントリ)が登録されていないパケットをパケット転送処理部201から受け取った場合、ルーティングテーブルとサーバ負荷情報テーブルの内容を参照し、転送先を決定する。受け取ったパケットの宛先アドレスが、サービスを一意に示すIPアドレス(サーバの第1のIPアドレス)であり、このIPアドレスが例えば「アドレスA」の場合、負荷分散判断処理部202は、他の境界ルータから広告された、第1のIPアドレスがアドレスAのホストルート宛ルート情報と、自身が属するサブネットワークに存在するサーバのうち、第1のIPアドレスがアドレスAのサーバから通知されたホストルート宛ルート情報とに基づいて、転送先を決定する。より詳細には、ルーティングメトリックおよびサーバ負荷情報を入力として1つの値を出力する任意の関数を適用して評価値を計算し、評価値に基づいて、パケット転送先(他の境界ルータ、または、自身が属するサブネットワークに存在しかつアドレスAのサーバ)を選択する。ここで使用する関数は、例えば、ルーティングメトリック(小さいほど良い経路とする)にある定数をかけたものとサーバ負荷(小さいほどサーバ負荷が少ないとする)に別の定数をかけたものの和の逆数を評価値として算出するものとする。この場合、評価値が大きい装置(境界ルータまたはサーバ)をパケット転送先とする。パケットの転送先を決定した後は、決定結果に従い、転送先に決定した装置のアドレスを設定したソースルーティングヘッダをパケットに付与し、このパケットの転送をパケット転送処理部201に依頼すると共に、パケット転送用エントリテーブルを更新する。すなわち、パケット転送先の決定結果に対応するパケット転送用エントリを追加登録する。サーバ方向とクライアント方向の2つのパケット転送用エントリを同時に登録する。サーバ方向のエントリの転送先装置は転送先に決定した境界ルータかサーバとし、クライアント方向のエントリの転送先装置はパケットの送信元アドレス(=クライアントのアドレス)を宛先としてルーティングテーブルを検索した結果得られる次ホップ装置とする。なお、パケット転送用エントリの送信元IPアドレス、送信先IPアドレスおよびプロトコルには、パケット転送処理部201から受け取ったパケットに設定されていた情報を登録する。
【0029】
負荷分散判断処理部202は、ソースルーティングヘッダが付与されており、かつパケット転送用エントリテーブルに対応する情報(パケット転送用エントリ)が登録されていないパケットをパケット転送処理部201から受け取った場合、ルーティングテーブルとサーバ負荷情報テーブルの内容を参照し、転送先を決定する。
【0030】
ソースルーティングヘッダに示されるアドレスが自境界ルータのアドレスと一致しない場合、ソースルーティングヘッダに示されるアドレスを宛先としてルーティングテーブルを検索し得られる次ホップ装置を転送先装置として指定するサーバ方向のパケット転送用エントリと、受信パケットの送信元アドレスを宛先としてルーティングテーブルを検索し得られる次ホップ装置を転送先装置として指定するクライアント方向のパケット転送用エントリを登録する。なお、パケット転送用エントリの送信元IPアドレス、送信先IPアドレスおよびプロトコルには、パケット転送処理部201から受け取ったパケットに設定されていた情報を登録する。そして、サーバ方向のパケット転送用エントリの転送先装置へ受信パケットを転送するように、パケット転送処理部201に依頼する。
【0031】
ソースルーティングヘッダに示されるアドレスが自境界ルータのアドレスと一致する場合、自身が属するサブネットワークに存在するサーバの中から第1のIPアドレスが受け取ったパケットの宛先アドレス(アドレスA)となるサーバから通知されたホストルート宛ルート情報とに基づいて、転送先サーバを決定する。より詳細には、ルーティングメトリックおよびサーバ負荷情報を入力として1つの値を出力する任意の関数を適用して評価値を計算し、評価値に基づいて、パケット転送先(自身が属するサブネットワークに存在しかつアドレスAのサーバ)を選択する。ここで使用する関数は、例えば、ルーティングメトリック(小さいほど良い経路とする)にある定数をかけたものとサーバ負荷(小さいほどサーバ負荷が少ないとする)に別の定数をかけたものの和の逆数を評価値として算出するものとする。この場合、評価値が大きい装置(サーバ)をパケット転送先とする。パケットの転送先を決定した後は、決定結果に従い、転送先に決定した装置のアドレスを設定したソースルーティングヘッダをパケットに付与し、このパケットの転送をパケット転送処理部201に依頼すると共に、パケット転送用エントリテーブルを更新する。すなわち、パケット転送先の決定結果に対応するパケット転送用エントリを追加登録する。サーバ方向とクライアント方向の2つのパケット転送用エントリを同時に登録する。サーバ方向のエントリの転送先装置は転送先に決定したサーバとし、クライアント方向のエントリの転送先装置はパケットの送信元アドレス(=クライアントのアドレス)を宛先としてルーティングテーブルを検索した結果得られる次ホップ装置とする。なお、パケット転送用エントリの送信元IPアドレス、送信先IPアドレスおよびプロトコルには、パケット転送処理部201から受け取ったパケットに設定されていた情報を登録する。
【0032】
また、負荷分散判断処理部202は、TCPのコネクション解放パケット(FINフラグもしくはRSTフラグがTCPヘッダに設定されたパケット)をパケット転送処理部201から受け取った場合には、パケット転送用エントリテーブルから対応するエントリを削除すると共に、そのパケットを削除したパケット転送用エントリの情報に基づき転送する(パケット転送用エントリがサーバ方向の場合、パケット転送用エントリに示される転送先装置を用いてソースルーティングヘッダを付与、もしくは、書き換え、もしくは、パケット転送用エントリに示される転送先装置を次ホップ装置として転送する。パケット転送用エントリがクライアント方向の場合、パケット転送用エントリに示される転送先装置を次ホップ装置として転送する。)ようにパケット転送処理部201へ依頼する。また、パケット転送用エントリ毎に管理される最終パケット転送時刻(パケット転送処理部201が更新する)を監視し、最終パケット転送時刻から一定時間が経過したパケット転送用エントリの削除を行う。これにより、時間の経過とともに各サーバの負荷状態が変動しても、次にパケットが送信される時点での負荷状態に応じてパケット転送用エントリを再設定でき、負荷変動に追従させたパケット転送制御が実現される。
【0033】
なお、負荷分散処理部202は、上記のIPヘッダ(パケットの宛先アドレス)に加えて、HTTPメッセージに含まれるCookie等のレイヤ7レベルの情報も参照して転送先を決定するようにしてもよい。このようにした場合、複数の異なるレイヤ4コネクション(例、TCPコネクション)間にレイヤ7レベルでの相互関係がある場合において、複数の異なるレイヤ4コネクションを同一のサーバに転送することが可能となる。
【0034】
サーバ登録管理処理部203は、自身(自境界ルータ)が属するサブネットワーク内のサーバから第1のIPアドレス、第2のIPアドレスおよび処理負荷の情報を定期的に収集し、サーバ負荷情報テーブルを更新する。各情報は、各サーバが自律的に(サーバ登録管理処理部203からの要求を受けることなく)定期的に送信する。また、サーバ登録管理処理部203は、一定の期間にわたって情報の定期的な収集が不可能となった(情報を送信してこなくなった)サーバを検出した場合、このサーバがネットワーク障害等で利用不可能になったと判断し、対応するエントリをサーバ負荷情報テーブルから削除する。これにより、サーバがルーティングプロトコルに未対応であっても、通信不能になったサーバを検出できる。
【0035】
ルーティングプロトコル処理部204は、ルーティングプロトコル処理を行い、ルーティングテーブルおよびサーバ負荷情報テーブルを更新する。例えば、BGP−4等のルーティングプロトコルに、自身(自境界ルータ)と同じサブネットワークに属しているサーバの第1のIPアドレスおよび負荷情報を通知するためのパラメータなどを追加し、このルーティングプロトコルを使用して他の境界ルータとの間でホストルート宛ルート情報を送受信して情報交換を行うことによりサーバ負荷情報テーブルを更新する。自身が属するサブネットワークに、第1のIPアドレスが同じサーバ(同じサービスを提供するサーバ)が複数存在している場合には、同じサービスを提供する各サーバの負荷情報を入力として1つの値を出力する何らかの関数を使用し、この関数の出力として得られる値を、他の境界ルータへ広告するホストルート宛ルート情報に含ませる負荷情報とする。この関数としては、例えば、入力された複数の負荷情報のうち、値が最小のもの(値が小さいほどサーバの負荷が少ないとする)を選択して出力する関数を使用する。値が最小のものを選択出力する関数を使用した場合のルーティングプロトコル処理部204の動作は、同じサービスを提供するサーバのうち、処理負荷が最小のサーバの第1のアドレスおよび負荷情報を他の境界ルータへ通知するものとなる。ルーティングテーブルの更新処理は一般的な動作であるため、説明を省略する。
【0036】
また、ルーティングプロトコル処理部204は、他の境界ルータから広告されたホストルート宛ルート情報を受信した場合、受信したホストルート宛ルート情報をサーバ負荷情報テーブルに登録するとともに、受信したホストルート宛ルート情報のルーティングメトリックを更新した上で転送(他の境界ルータへ広告)する。ルーティングメトリックの更新は、ホストルート宛ルート情報の広告元境界ルータ(例えばBGP−4の場合、自境界ルータがBGP−4のピア関係を確立している隣接境界ルータ)から自身までのメトリックを反映させることにより行う。なお、サーバ負荷情報テーブルに登録済みのホストルート宛ルート情報の新たな情報(負荷情報が更新された情報)を受信した場合、サーバ負荷情報テーブルに上書きして更新する。また、新たなホストルート宛ルート情報が一定時間にわたって受信できなかった場合、対応するホストルート宛ルート情報をサーバ負荷情報テーブルから削除する。これにより、通信障害が発生しているサーバがパケット転送先として選択されてしまうのを防止でき、正常なサーバへのパケット転送制御を実現できる。
【0037】
つづいて、サーバの構成について説明する。なお、各サーバの構成は同一である。図3は、サーバの構成例を示す図であり、本実施の形態のサーバは、IP転送処理部101と、クライアント要求処理部102と、サーバ負荷登録処理部103と、第1のアドレス(第1のIPアドレス)、第2のアドレス(第2のIPアドレス)および境界ルータアドレス(境界ルータのIPアドレス)を保持している記憶部104とを備える。
【0038】
記憶部104が保持している情報について説明する。
【0039】
第1のIPアドレスはサーバが提供するサービスを一意に示すアドレス(提供サービス識別用のIPアドレス)であり、同じサービスを提供するサーバが通信システムネットワーク内に複数存在している場合、それらサーバの第1のIPアドレスは同じ値となる。この第1のIPアドレスは、クライアントがあるサービスに対して要求を送信する際に宛先アドレスに設定するアドレスであり、例えば、IP転送処理部101により設定される。
【0040】
第2のIPアドレスは自装置(自サーバ)を一意に示すアドレス(サーバ識別用のIPアドレス)であり、自装置と同じサブネットワークに属している境界ルータとの通信、および他のサーバとの通信において、送信元/送信先アドレスとして使用される。
【0041】
境界ルータアドレスは、自身(自サーバ)と同じサブネットワークに属している境界ルータを一意に示すアドレス(境界ルータのIPアドレス)である。サブネットワークに複数の境界ルータが存在する場合、それら各境界ルータのIPアドレスが保持される。境界ルータアドレスは、例えば、サーバ負荷登録処理部103により設定される。
【0042】
IP転送処理部101は、サーバでのIPプロトコル処理を実行し、クライアント要求処理部102およびサーバ負荷登録処理部103がネットワーク上の他の機器とIP通信を行うための機能を提供する。
【0043】
クライアント要求処理部102は、クライアントが要求するサービスに対する処理を実行する。
【0044】
サーバ負荷登録処理部103は、自サーバにおける負荷状況を監視し、記憶部104が保持している各境界ルータアドレスに対応する全ての境界ルータに対して定期的にサーバの負荷情報を通知する。このとき、記憶部104が保持している第1のIPアドレスおよび第2のIPアドレスも併せて通知する。
【0045】
つづいて、本実施の形態の通信ネットワークシステムにおけるパケット転送動作について、図4を用いて説明する。図4は、パケット転送動作の一例を示す図であり、図1に示した構成の通信システムネットワークにおいて、クライアント1−3がアドレスAに対応するサービスを提供するサーバ宛にパケットを送信する場合のパケット転送動作例を示している。なお、図4の通信システムネットワークの各境界ルータのパケット転送用エントリテーブルには、クライアント1−3からアドレスAのサーバ宛に送信されるパケットに対応するエントリが登録されていないものとする。
【0046】
クライアント1−3は、要求するサービスに対応するIPアドレスであるアドレスAを宛先(送信先アドレス)に設定し、送信元アドレスに自身のアドレスを設定したパケットを送信する。
【0047】
クライアント1−3から送信された、宛先がアドレスAのパケットは、境界ルータ24により受信され、境界ルータ24は、パケットの送信元IPアドレスおよび送信先IPアドレス(宛先アドレス)と一致するパケット転送用エントリがパケット転送用エントリテーブルに登録されているかどうか確認する。そして、この例ではエントリが登録されていないため、ホストルート宛ルート情報に基づいて、パケットの転送先をどの境界ルータのサブネットに存在するサーバ宛にするか決定する(処理1)。図示した例では、境界ルータ23と同じサブネットワークに存在するサーバ12宛とすることに決定する。ただし、境界ルータ24は、サーバ12の第2のIPアドレス(装置識別用アドレス)を保持していないため、実際には、境界ルータ23宛とすることに決定し、境界ルータ23のアドレスを設定したソースルーティングヘッダを付与してパケットを転送する(処理2)。
【0048】
境界ルータ24は、さらに、送信元がクライアント1−3かつ送信先がアドレスAのパケットを次回受信する場合に備えて、転送したパケットに対応するパケット転送用エントリをパケット転送用エントリテーブルに登録する(処理3)。パケット転送用エントリの送信元IPアドレス、送信先IPアドレスおよびプロトコルには、受信したパケットに設定されていた情報(送信元IPアドレス,送信先IPアドレス,プロトコル)をそれぞれ登録する。パケットの転送先には、サーバ方向のエントリではソースルーティングヘッダに設定したアドレス、クライアント方向のエントリでは受信したパケットの送信元IPアドレス(=クライアント1−3のアドレス)を宛先としてルーティングテーブルを検索して得られる次ホップ装置をそれぞれ登録する。
【0049】
境界ルータ24により転送された上記パケットは、境界ルータ22−2により受信され、境界ルータ22−2は、パケットの送信元IPアドレスおよび送信先IPアドレスと一致するパケット転送用エントリがパケット転送用エントリテーブルに登録されているかどうか確認する。この例では、エントリが登録されていないが、ソースルーティングヘッダが付与されているため、このパケットに対応するパケット転送用エントリをパケット転送用エントリテーブルに登録するとともに、ソースルーティングヘッダに従い、境界ルータ23に向けてパケットを転送する(処理4,処理5)。パケット転送用エントリの送信元IPアドレス、送信先IPアドレスおよびプロトコルには、受信したパケットに設定されていた情報をそれぞれ登録する。サーバ方向のパケット転送用エントリの転送先装置には、ソースルーティングヘッダに設定されていたアドレスを宛先としてルーティングテーブル検索を行い得られる次ホップ装置、クライアント方向のパケット転送用エントリの転送先装置には受信パケットの送信元アドレスを宛先としてルーティングテーブル検索を行い得られる次ホップ装置をそれぞれ登録する。
【0050】
境界ルータ22−2により転送された上記パケットは、境界ルータ22−1により受信され、境界ルータ22−1は、上述した境界ルータ22−2と同様の処理を実行し、パケット転送用エントリテーブルを更新する(エントリを追加登録する)とともにパケットを転送する(処理6,処理7)。
【0051】
境界ルータ22−1により転送された上記パケットは、境界ルータ23により受信され、境界ルータ23は、パケットの送信元IPアドレスおよび送信先IPアドレスと一致するパケット転送用エントリがパケット転送用エントリテーブルに登録されているかどうか確認する。この例では、エントリが登録されていないが、ソースルーティングヘッダが付与されており、かつソースルーティングヘッダに自境界ルータのアドレスが設定されているため、このパケットに対応するパケット転送用エントリをパケット転送用エントリテーブルに登録するとともに、ソースルーティングヘッダに設定されているアドレスをサーバ12の第2のIPアドレス(アドレスB2)に置き換えて転送する(処理8,9)。なお、アドレスAに対応するサーバが同じサブネットワークに複数存在している場合、ソースルーティングヘッダに設定されているアドレスを、処理負荷が最も少ないサーバのアドレスに置き換える。
【0052】
これ以降、クライアント1−3が送信元かつ宛先がアドレスAのパケットは、各境界ルータにおいて、パケット転送用エントリに従って転送される(処理10)。なお、各境界ルータは、クライアント1−3が送信元かつ宛先がアドレスAのパケットを一定時間受信しなかった場合や、コネクション解放プロトコルシーケンスが実行された場合には、このパケットに対応するパケット転送用エントリを削除する(処理11)。
【0053】
このように、本実施の形態の通信ネットワークシステムにおいて、サービスを提供する各サーバは、提供するサービスに応じたIPアドレス(第1のIPアドレス)とサーバ固有のIPアドレス(第2のIPアドレス)を有しており、第1および第2のIPアドレスと処理負荷の情報を、定期的に、自身と同じサブネットワーク内の境界ルータに通知する。各境界ルータは、各サーバから取得した上記情報を保持しておくとともに、各サーバが有している第1のIPアドレスおよび処理負荷に関する情報、ルーティングメトリックを他の境界ルータへ広告し、各境界ルータが属しているサブネットワークの情報と、境界ルータが属しているサブネットワーク内で同じサービスを提供するサーバ群ごとの処理負荷に関する情報とを他の境界ルータとの間で共有する。また、各境界ルータは、クライアントからパケットを受信した場合には、要求されたサービスを提供するサーバのうち、処理負荷が最も小さいサーバと同じサブネットワークの境界ルータに向けて転送することとした。さらに、自身に向けて転送されてきたパケットを受信した場合、パケットが要求しているサービスを提供するサーバであって、自身の同じサブネットワーク内のサーバに対して転送することとした。このとき、同じサービスを提供するサーバがサブネットワーク内に複数存在しているならば、処理負荷が最小のサーバに転送することとした。これにより、クライアントから送信されたパケットを処理負荷の小さいサーバに転送してサーバ間の処理負荷を分散できる。また、従来のように各サーバの負荷状態に関係なく予め決められているサーバに一旦接続してから負荷状態を確認して接続先を切り替える制御や負荷分散のための専用の装置が不要となるので、従来と比較して、処理手順やシステム構成を単純化できる。
【0054】
また、各境界ルータは、あるクライアントとサーバの間での1回目のパケット時において、パケット転送用エントリテーブルを更新し、2回目以降のパケット転送時にはパケット転送用エントリテーブルに従って転送を行うので、2回目以降のパケット転送処理の所要時間短縮と処理負荷軽減を実現できる。
【0055】
また、各境界ルータは、上記情報(第1および第2のIPアドレスと処理負荷の情報)を一定期間にわたって通知してこなくなったサーバを検出した場合、このサーバがネットワーク障害等で利用不可能になったと判断し、このサーバをパケット転送先として選択しないようにする。これにより、サーバがルーティングプロトコルに未対応であっても、通信不能になったサーバの検出が可能となる。この結果、ネットワーク障害を考慮したパケット転送が実現でき、障害耐性を向上できる。
【産業上の利用可能性】
【0056】
以上のように、本発明は、同じサービスを提供するサーバが複数存在する通信ネットワークシステムにおいて、サーバ間の処理負荷の均衡化とネットワーク障害を考慮したパケット転送を実現するための発明として有用である。
【符号の説明】
【0057】
1−1,1−2,1−3 クライアント
21,22−21,22−2,23,24 境界ルータ
31,32,33,34 サブネットワーク
101 IP転送処理部
102 クライアント要求処理部
103 サーバ負荷登録処理部
104,205 記憶部
201 パケット転送処理部
202 負荷分散判断処理部
203 サーバ登録管理処理部
204 ルーティングプロトコル処理部

【特許請求の範囲】
【請求項1】
複数のサブネットワークを含んで構成された通信ネットワークシステムであって、
各サブネットワークは、サブネットワークと外部のネットワークとを接続するルータを1台以上含むとともに、クライアントから要求されたサービスを提供するサーバを含むことが可能であり、
前記サーバは、提供するサービスに対応する第1のアドレスおよび自サーバを一意に示す第2のアドレスを有し、当該第1のアドレスおよび第2のアドレスと自身の処理負荷に関する情報とを、サーバ状態情報として自身と同じサブネットワークに属しているルータへ定期的に通知し、
前記クライアントは、所定のサービスを要求する場合、当該サービスに対応するアドレスを宛先アドレスに設定したパケットを送信し、
前記ルータは、サーバから通知されたサーバ状態情報を保持しておくとともに、当該サーバ状態情報に含まれている第1のアドレスおよび処理負荷に関する情報と、自ルータのアドレスとを他のルータへ広告し、自身と同じサブネットワークに接続中のクライアントからパケットを受信した場合、当該パケットの宛先アドレス、前記サーバから通知された情報、および他のルータから広告された情報に基づいて、当該パケットの転送先を決定する
ことを特徴とする通信ネットワークシステム。
【請求項2】
前記ルータは、パケットを転送した場合、当該パケットの送信元および宛先と、転送先装置と、転送実施時刻とをパケット転送用エントリテーブルに登録し、パケットの受信時には、受信パケットの送信元および宛先と一致するエントリがパケット転送用エントリテーブルに登録されているかどうか確認し、登録されている場合には、登録されている転送先装置へ受信パケットを出力する
ことを特徴とする請求項1に記載の通信ネットワークシステム。
【請求項3】
前記ルータは、登録されている転送実施時刻から一定時間が経過したエントリを前記パケット転送用エントリテーブルから削除する
ことを特徴とする請求項2に記載の通信ネットワークシステム。
【請求項4】
前記ルータは、自身と同じサブネットワークに接続中のクライアントからパケットを受信しかつ受信パケットの送信元および宛先と一致するエントリが前記パケット転送用エントリテーブルに登録されていない場合、当該パケットの宛先アドレスと同じアドレスを有しているサーバのうち、処理負荷が最も小さいサーバと同じサブネットワークに属しているルータを特定し、当該特定したルータが自ルータの場合、当該処理負荷が最も小さいサーバへパケットを転送し、当該特定したルータが自ルータではない場合、当該特定したルータに向けてパケットを転送する
ことを特徴とする請求項2または3に記載の通信ネットワークシステム。
【請求項5】
前記ルータは、第1のアドレスおよび第2のアドレスと処理負荷に関する情報とを送信してこなくなったサーバを検出した場合、当該サーバに対応するエントリを前記サーバ状態情報から削除する
ことを特徴とする請求項1〜4のいずれか一つに記載の通信ネットワークシステム。
【請求項6】
前記ルータは、自身と同じサブネットワーク内に第1のアドレスが同一の複数のサーバが存在している場合、当該複数のサーバから通知されたサーバ状態情報のうち、処理負荷が最も小さいサーバから通知されたサーバ状態情報に含まれている処理負荷に関する情報を他のルータへ広告する
ことを特徴とする請求項1〜5のいずれか一つに記載の通信ネットワークシステム。
【請求項7】
前記ルータは、自身と同じサブネットワーク内に第1のアドレスが同一の複数のサーバが存在している状態において、当該サブネットワーク内で処理すべきと判断されたパケットを他のルータから受信した場合、当該複数のサーバのうち、処理負荷が最も小さいサーバへパケットを転送する
ことを特徴とする請求項1〜6のいずれか一つに記載の通信ネットワークシステム。
【請求項8】
前記ルータは、前記サーバ状態情報に含まれている第1のアドレスおよび処理負荷に関する情報と、自ルータのアドレスと、に加え、サーバから自ルータまでのルーティングメトリックの情報を他のルータへ広告し、自身と同じサブネットワークに接続中のクライアントからパケットを受信した場合、当該パケットの宛先アドレス、前記サーバから通知された情報、および他のルータから広告された情報に基づいて、当該パケットの転送先を決定する
ことを特徴とする請求項1〜7のいずれか一つに記載の通信ネットワークシステム。
【請求項9】
前記ルータは、他のルータから広告された情報を受信した場合、受信したルーティングメトリックの情報を更新した上で、広告元の他のルータとは異なる他のルータへ広告する
ことを特徴とする請求項8に記載の通信ネットワークシステム。
【請求項10】
前記ルータは、自身と同じサブネットワークに接続中のクライアントからパケットを受信した場合、当該パケットの宛先アドレス、当該パケットに含まれているレイヤ7レベルの情報、前記サーバから通知された情報、および他のルータから広告された情報に基づいて、当該パケットの転送先を決定する
ことを特徴とする請求項1〜9のいずれか一つに記載の通信ネットワークシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate