(57)【要約】【課題】同じサービスを提供する複数サーバの処理負荷を分散させる通信ネットワークシステムを得ること。【解決手段】本発明は、複数のサブネットワークを含んで構成された通信ネットワークシステムであって、サーバは、提供サービスに対応する第１アドレスおよび自サーバを示す第２アドレスを有し、第１および第２アドレスと処理負荷情報とを、同じサブネットワークに属している境界ルータへ通知し、クライアントは、所定のサービスを要求する場合、サービスに対応するアドレスを設定したパケットを送信し、境界ルータは、通知された情報を保持しておくとともに、第１アドレスおよび処理負荷情報と自境界ルータのアドレスとを他の境界ルータへ広告し、同じサブネットワークのクライアントからパケットを受信した場合、宛先アドレス、サーバから通知された情報、他の境界ルータから広告された情報に基づいて転送先を決定する。【選択図】図１
2012253681.tif 000002
【特許請求の範囲】
【請求項１】
複数のサブネットワークを含んで構成された通信ネットワークシステムであって、
各サブネットワークは、サブネットワークと外部のネットワークとを接続するルータを１台以上含むとともに、クライアントから要求されたサービスを提供するサーバを含むことが可能であり、
前記サーバは、提供するサービスに対応する第１のアドレスおよび自サーバを一意に示す第２のアドレスを有し、当該第１のアドレスおよび第２のアドレスと自身の処理負荷に関する情報とを、サーバ状態情報として自身と同じサブネットワークに属しているルータへ定期的に通知し、
前記クライアントは、所定のサービスを要求する場合、当該サービスに対応するアドレスを宛先アドレスに設定したパケットを送信し、
前記ルータは、サーバから通知されたサーバ状態情報を保持しておくとともに、当該サーバ状態情報に含まれている第１のアドレスおよび処理負荷に関する情報と、自ルータのアドレスとを他のルータへ広告し、自身と同じサブネットワークに接続中のクライアントからパケットを受信した場合、当該パケットの宛先アドレス、前記サーバから通知された情報、および他のルータから広告された情報に基づいて、当該パケットの転送先を決定する
ことを特徴とする通信ネットワークシステム。
【請求項２】
前記ルータは、パケットを転送した場合、当該パケットの送信元および宛先と、転送先装置と、転送実施時刻とをパケット転送用エントリテーブルに登録し、パケットの受信時には、受信パケットの送信元および宛先と一致するエントリがパケット転送用エントリテーブルに登録されているかどうか確認し、登録されている場合には、登録されている転送先装置へ受信パケットを出力する
ことを特徴とする請求項１に記載の通信ネットワークシステム。
【請求項３】
前記ルータは、登録されている転送実施時刻から一定時間が経過したエントリを前記パケット転送用エントリテーブルから削除する
ことを特徴とする請求項２に記載の通信ネットワークシステム。
【請求項４】
前記ルータは、自身と同じサブネットワークに接続中のクライアントからパケットを受信しかつ受信パケットの送信元および宛先と一致するエントリが前記パケット転送用エントリテーブルに登録されていない場合、当該パケットの宛先アドレスと同じアドレスを有しているサーバのうち、処理負荷が最も小さいサーバと同じサブネットワークに属しているルータを特定し、当該特定したルータが自ルータの場合、当該処理負荷が最も小さいサーバへパケットを転送し、当該特定したルータが自ルータではない場合、当該特定したルータに向けてパケットを転送する
ことを特徴とする請求項２または３に記載の通信ネットワークシステム。
【請求項５】
前記ルータは、第１のアドレスおよび第２のアドレスと処理負荷に関する情報とを送信してこなくなったサーバを検出した場合、当該サーバに対応するエントリを前記サーバ状態情報から削除する
ことを特徴とする請求項１〜４のいずれか一つに記載の通信ネットワークシステム。
【請求項６】
前記ルータは、自身と同じサブネットワーク内に第１のアドレスが同一の複数のサーバが存在している場合、当該複数のサーバから通知されたサーバ状態情報のうち、処理負荷が最も小さいサーバから通知されたサーバ状態情報に含まれている処理負荷に関する情報を他のルータへ広告する
ことを特徴とする請求項１〜５のいずれか一つに記載の通信ネットワークシステム。
【請求項７】
前記ルータは、自身と同じサブネットワーク内に第１のアドレスが同一の複数のサーバが存在している状態において、当該サブネットワーク内で処理すべきと判断されたパケットを他のルータから受信した場合、当該複数のサーバのうち、処理負荷が最も小さいサーバへパケットを転送する
ことを特徴とする請求項１〜６のいずれか一つに記載の通信ネットワークシステム。
【請求項８】
前記ルータは、前記サーバ状態情報に含まれている第１のアドレスおよび処理負荷に関する情報と、自ルータのアドレスと、に加え、サーバから自ルータまでのルーティングメトリックの情報を他のルータへ広告し、自身と同じサブネットワークに接続中のクライアントからパケットを受信した場合、当該パケットの宛先アドレス、前記サーバから通知された情報、および他のルータから広告された情報に基づいて、当該パケットの転送先を決定する
ことを特徴とする請求項１〜７のいずれか一つに記載の通信ネットワークシステム。
【請求項９】
前記ルータは、他のルータから広告された情報を受信した場合、受信したルーティングメトリックの情報を更新した上で、広告元の他のルータとは異なる他のルータへ広告する
ことを特徴とする請求項８に記載の通信ネットワークシステム。
【請求項１０】
前記ルータは、自身と同じサブネットワークに接続中のクライアントからパケットを受信した場合、当該パケットの宛先アドレス、当該パケットに含まれているレイヤ７レベルの情報、前記サーバから通知された情報、および他のルータから広告された情報に基づいて、当該パケットの転送先を決定する
ことを特徴とする請求項１〜９のいずれか一つに記載の通信ネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インターネットやイントラネットで使用されるサーバ間の処理負荷を均衡化させる負荷分散機能を有する通信ネットワークシステムに関する。
【背景技術】
【０００２】
通信ネットワークシステムにおける負荷分散技術が開示された文献として、下記の特許文献１〜３が存在する。
【０００３】
特許文献１には、ルータが管理するネットワークのトラヒック情報等に基づき、複数のクライアントが特定のサーバに要求を送信する際に、どのルータを経由するかの判断を行い、各ルータの処理負荷を分散させるとともにネットワークの輻輳や障害を回避するための装置（負荷分散サーバ）を備えたネットワークが開示されている。
【０００４】
また、特許文献２および３には、ＨＴＴＰプロキシ(proxy)の様にレイヤ７プロトコルレベルでクライアントからサーバへの要求を中継する中継サーバを利用した負荷分散方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−３０３０９０号公報
【特許文献２】特開２００８−２２５６４４号公報
【特許文献３】特開２０１１−４１００６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の技術はクライアントとサーバ間においてパケットを経由させるルータを切り替えてルータ間の処理負荷を分散させるためのものであり、クライアントが利用可能なサーバが複数存在する場合におけるサーバ間の負荷分散については考慮されていない。一方、特許文献２および３の記載に技術によれば、同一サービスを提供する複数のサーバに対する負荷分散が可能となる。しかし、特許文献２に記載の技術では、デフォルトの装置に一旦接続した後、同じ機能を有する装置間の負荷状態に応じて接続先を切り替える必要があり処理が複雑化するとともに、ネットワーク内のトラフィックが増加してしまう。特許文献３に記載の技術では、装置間の負荷が均等となるように接続先を決定する専用の装置が必要となり、システム構成が複雑化してしまう。また、特許文献１〜３に記載の技術は、いずれも、ネットワークの障害回避機能については考慮されていない。
【０００７】
本発明は、上記に鑑みてなされたものであって、処理手順やシステム構成が複雑化するのを抑えつつ、同じサービスを提供する複数サーバの処理負荷を分散させることが可能な通信ネットワークシステムを得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、複数のサブネットワークを含んで構成された通信ネットワークシステムであって、各サブネットワークは、サブネットワークと外部のネットワークとを接続するルータを１台以上含むとともに、クライアントから要求されたサービスを提供するサーバを含むことが可能であり、前記サーバは、提供するサービスに対応する第１のアドレスおよび自サーバを一意に示す第２のアドレスを有し、当該第１のアドレスおよび第２のアドレスと自身の処理負荷に関する情報とを、サーバ状態情報として自身と同じサブネットワークに属しているルータへ定期的に通知し、前記クライアントは、所定のサービスを要求する場合、当該サービスに対応するアドレスを宛先アドレスに設定したパケットを送信し、前記ルータは、サーバから通知されたサーバ状態情報を保持しておくとともに、当該サーバ状態情報に含まれている第１のアドレスおよび処理負荷に関する情報と、自ルータのアドレスとを他のルータへ広告し、自身と同じサブネットワークに接続中のクライアントからパケットを受信した場合、当該パケットの宛先アドレス、前記サーバから通知された情報、および他のルータから広告された情報に基づいて、当該パケットの転送先を決定することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、クライアントから送信されたパケットを処理負荷の小さいサーバに転送してサーバ間の処理負荷を分散できるとともに、従来と比較して、処理手順やシステム構成を単純化できる、という効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明にかかる通信ネットワークシステムの全体構成例を示す図である。
【図２】図２は、境界ルータの構成例を示す図である。
【図３】図３は、サーバの構成例を示す図である。
【図４】図４は、パケット転送動作の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本発明にかかる通信ネットワークシステムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１２】
実施の形態．
図１は、本発明にかかる通信ネットワークシステムの全体構成例を示す図である。
【００１３】
図１に例示した通信ネットワークシステムは、サーバ１１，１２と、境界ルータ２１，２２−１，２２−２，２３，２４と、を備え、サーバおよび境界ルータはサブネットワークを形成している。図１の例では、サーバ１１および境界ルータ２１がサブネットワーク３１を形成し、境界ルータ２２−１および２２−２がサブネットワーク３２を形成し、サーバ１２および境界ルータ２３がサブネットワーク３３を形成し、境界ルータ２４がサブネットワーク３４を形成している。また、サブネットワーク３１にクライアント１−１が接続され、サブネットワーク３２にクライアント１−２が接続され、サブネットワーク３４にクライアント１−３が接続されている。各サブネットワークは、境界ルータを介して境界ルータ間接続ネットワークに接続されており、各サブネットワーク内の通信装置（境界ルータ，サーバ，クライアント）は、境界ルータ間接続ネットワークを介して他のサブネットワーク内の通信装置と通信を行う。なお、サーバや境界ルータ、サブネットワークなどの数や接続関係を図１に示した内容に限定するものではない。
【００１４】
本実施の形態の通信ネットワークシステムにおいて、各サーバには、提供しているサービスを一意に示す第１のＩＰアドレス（図１のアドレスＡに相当）と、サーバを一意に示す第２のＩＰアドレス（図１のアドレスＢ１，Ｂ２に相当）とが割り当てられている。図１の例では、サーバ１１および１２の第１のＩＰアドレスに同一のアドレスＡが割り当てられており、これらのサーバ１１および１２は同じサービスを提供する。各境界ルータは、同じサービスを提供する複数サーバ間の負荷分散制御で使用する情報として、ホストルート宛ルート情報を保持している。図１にも示しているが、このホストルート宛ルート情報には、以下の<1>〜<4>の情報が含まれる。
【００１５】
<1>サーバの第１のＩＰアドレス（提供サービス識別用のＩＰアドレス）
<2>サーバの第２のＩＰアドレス（サーバ識別用のＩＰアドレス）、または、サーバと同じサブネットワークに属している境界ルータの識別情報（ＩＰアドレス）
<3>メトリック（ルーティングメトリック）
<4>サーバの処理負荷の情報
【００１６】
境界ルータは、自身が属しているサブネットワークにサーバが存在している場合、そのサーバの第２のＩＰアドレスを上記の<2>の情報として保持する。自身が属しているサブネットワークとは異なるサブネットワークのサーバについては、そのサーバと同じサブネットワークに属している境界ルータの識別情報（ＩＰアドレス）を上記の<2>の情報として保持する。各境界ルータは、上記の<1>〜<4>の情報であるホストルート宛ルート情報を取得して保持しておくために、自身と同じサブネットワークにサーバが属している場合、サーバそれぞれについて、第１のＩＰアドレス、自身（自境界ルータ）の識別情報、メトリック（詳細については後述する）および処理負荷を他の境界ルータに向けて広告する。この結果、各境界ルータは、他の境界ルータと同じサブネットワークに属している各サーバの種別（サーバが提供するサービスの種別）および処理負荷を知ることができるので、処理負荷に応じたパケット転送制御が可能となり、同じサービスを提供しているサーバ間の負荷分散を実現できる。なお、あるサブネットワーク内に第１のＩＰアドレスが同じサーバが複数存在している場合、このネットワーク内の境界ルータは、サーバごとではなく、第１のＩＰアドレスが同じサーバの情報を集約して他の境界ルータへ広告する。
【００１７】
図１の例では、サーバ１１と同じサブネットワークに属している境界ルータ２１は、ホストルート宛情報として、［アドレスＡ，アドレスＢ１，メトリック，処理負荷の情報］の組および［アドレスＡ，境界ルータ２３の情報，メトリック，処理負荷の情報］の組を保持している。なお、前者がサーバ１１に対応する情報となる。境界ルータ２２−１，２２−２，２４は、自身が属しているサブネットワークにサーバが属していないので、ホストルート宛情報として、［アドレスＡ，境界ルータ２１の情報，メトリック，処理負荷の情報］の組および［アドレスＡ，境界ルータ２３の情報，メトリック，処理負荷の情報］の組を保持している。サーバ１２と同じサブネットワークに属している境界ルータ２３は、ホストルート宛情報として、［アドレスＡ，境界ルータ２１の情報，メトリック，処理負荷の情報］の組および［アドレスＡ，アドレスＢ２，メトリック，処理負荷の情報］の組を保持している。なお、後者がサーバ１２に対応する情報となる。
【００１８】
なお、図１においては、簡単化のために、第１のＩＰアドレスとしてアドレスＡが割り当てられたサーバ１１および１２のみが存在している場合（各サーバの第１のＩＰアドレスが同じであり、同じサービスを提供する場合）の例を示したが、実際には、第１のＩＰアドレスに異なるアドレスが割り当てられたサーバ（異なるサービスを提供するサーバ）が混在する。
【００１９】
例えば、図１の通信ネットワークシステムにおいて、さらに、第１のＩＰアドレスが「アドレスＡ２」、第２のＩＰアドレスが「アドレスＢ３」のサーバがサブネットワーク３１に属している場合、境界ルータ２１は、ホストルート宛情報として、［アドレスＡ，アドレスＢ１，メトリック，処理負荷の情報］の組、［アドレスＡ，境界ルータ２３の情報，メトリック，処理負荷の情報］の組、および［アドレスＡ２，アドレスＢ３，メトリック，処理負荷の情報］の組を保持する。境界ルータ２２−１，２２−２，２４は、［アドレスＡ，境界ルータ２１の情報，メトリック，処理負荷の情報］の組、［アドレスＡ，境界ルータ２３の情報，メトリック，処理負荷の情報］の組、および［アドレスＡ２，境界ルータ２１の情報，メトリック，処理負荷の情報］の組を保持する。境界ルータ２３は、［アドレスＡ，境界ルータ２１の情報，メトリック，処理負荷の情報］の組、［アドレスＡ，アドレスＢ２，メトリック，処理負荷の情報］の組、および［アドレスＡ２，境界ルータ２１の情報，メトリック，処理負荷の情報］の組を保持する。
【００２０】
つづいて、境界ルータの構成について説明する。なお、各境界ルータの構成は同一である。図２は、境界ルータの構成例を示す図であり、本実施の形態の境界ルータは、パケット転送処理部２０１と、負荷分散判断処理部２０２と、サーバ登録管理処理部２０３と、ルーティングプロトコル処理部２０４と、パケット転送用エントリテーブル、サーバ負荷情報テーブルおよびルーティングテーブルを保持している記憶部２０５とを備える。
【００２１】
記憶部２０５が保持している情報について説明する。
【００２２】
ルーティングテーブルは、通常のＩＰルータが管理するルーティングテーブルと同様であり、宛先ＩＰアドレスプレフィックスに対応付けて、転送先の送信インタフェース（送信先ポート）および次ホップ装置、ルーティングメトリックなどの情報が登録されている。
【００２３】
パケット転送用エントリテーブルの各エントリには、パケットの情報である［送信元ＩＰアドレス，送信先ＩＰアドレス，プロトコル，送信元ポート番号，送信先ポート番号］の組と、このパケットの転送先の装置（境界ルータ、サーバまたは次ホップ装置）の情報（ＩＰアドレス）とが登録されている。このパケット転送用エントリは、各境界ルータが、特定のクライアントとサーバの間で送受信されるパケットを受信した場合の転送先（どの送信先ポートへ出力するか、及び、ソースルーティングヘッダに指定するＩＰアドレス、もしくは、次ホップ装置）を示す。パケットを送受信する１組の装置に対して、２つのエントリ（クライアントからサーバに向けたパケット転送に対応するエントリ［サーバ方向］，逆方向へのパケット転送に対応するエントリ［クライアント方向］）が存在する。また、各エントリには、最終パケット転送時刻も併せて登録される。この最終パケット転送時刻は、そのエントリに対応するパケットの転送が行われると、転送を実施した時刻に更新される。パケット転送用エントリテーブルのエントリに示される転送先の装置の情報は、パケット転送用エントリがサーバ方向のエントリである場合、境界ルータによるソースルーティングヘッダの付与、もしくは、書き換えのため、もしくは、次ホップ装置決定のために使用する。パケット転送用エントリがクライアント方向のエントリである場合、次ホップ装置決定のために使用する。
【００２４】
サーバ負荷情報テーブルの各エントリには、図１に示したホストルート宛ルート情報、すなわち、ルーティングプロトコルで他の境界ルータから取得した情報（他の境界ルータのＩＰアドレス，この境界ルータと同じサブネットワークに属しているサーバの第１のＩＰアドレス，ルーティングメトリック，負荷情報）、または、自身（自境界ルータ）が属するサブネットワーク内のサーバから取得した情報（サーバの第１のＩＰアドレスおよび第２のＩＰアドレス，ルーティングメトリック，負荷情報）、が登録されている。ルーティングメトリックは、他の境界ルータから取得した情報の場合であれば、他の境界ルータまでのルーティングメトリックであり、自身が属するサブネットワーク内のサーバから取得した情報の場合であれば、このサーバまでのルーティングメトリックである。他の境界ルータから取得した情報を登録したエントリとサーバから取得した情報を登録したエントリは区別がつくように管理する。
【００２５】
パケット転送処理部２０１は、パケットが入力されると、パケットに付与されているソースルーティングヘッダの内容とパケット転送用エントリテーブルの内容とに従ってパケット転送を行い、サーバの処理負荷を分散させる。ソースルーティングヘッダには、パケットを通過させたい境界ルータのアドレス、もしくは、サーバ識別用のＩＰアドレスが設定される。ソースルーティングヘッダはパケットの送信元（クライアントまたはサーバ）と同じサブネットワーク内において、送信元から最初にパケットを受信した境界ルータ、もしくは、宛先となるサーバと同じサブネットワーク内において、送信元から最初にパケットを受信した境界ルータにより設定される。
【００２６】
パケット転送処理部２０１による転送先の決定動作では、（ａ）パケットの情報（送信元ＩＰアドレスおよび送信先ＩＰアドレスとする。プロトコル情報を含めてもよい）を用いてパケット転送用エントリテーブルを検索し、（ｂ−１）対応するパケット転送用エントリが見つかった場合は、このエントリの内容に従い転送先を決定する。見つかったパケット転送用エントリがサーバ方向のエントリであり、かつ、パケットにソースルーティングヘッダが付与されていない場合は、パケット転送用エントリの転送先装置に示されるアドレスをソースルーティングヘッダのアドレスとして設定し、ソースルーティングヘッダに設定したアドレスを宛先としてルーティングテーブル検索を行い、転送先を決定する。見つかったパケット転送用エントリがサーバ方向のエントリであり、かつ、パケットにソースルーティングヘッダが付与されている場合で、ソースルーティングヘッダに設定されているアドレスが自境界ルータのＩＰアドレスに一致しない場合、パケット転送用エントリに示される転送先装置へ転送する。見つかったパケット転送用エントリがサーバ方向のエントリであり、かつ、パケットにソースルーティングヘッダが付与されている場合で、ソースルーティングヘッダに設定されているアドレスが自境界ルータのＩＰアドレスに一致する場合、パケット転送用エントリに示される転送先の装置のアドレス（＝転送先サーバの第２のＩＰアドレス［サーバ固有のＩＰアドレス］）にソースルーティングヘッダの内容を書き換え、書き換えたソースルーティングヘッダに設定されているアドレスを宛先としてルーティングテーブル検索を行い、転送先を決定する。見つかったパケット転送用エントリがクライアント方向のエントリである場合、パケット転送用エントリに示される転送先装置へ転送する。（ｂ−２）対応するパケット転送用エントリが見つからなかった場合には、パケットを負荷分散判断処理部２０２に渡して転送先を決定するよう依頼する。
【００２７】
また、受信したパケットがＴＣＰのコネクション解放パケット（ＦＩＮフラグもしくはＲＳＴフラグがＴＣＰヘッダに設定されているもの）の場合も負荷分散判断処理部２０２に渡す。
【００２８】
負荷分散判断処理部２０２は、ソースルーティングヘッダが付与されておらず、かつパケット転送用エントリテーブルに対応する情報（パケット転送用エントリ）が登録されていないパケットをパケット転送処理部２０１から受け取った場合、ルーティングテーブルとサーバ負荷情報テーブルの内容を参照し、転送先を決定する。受け取ったパケットの宛先アドレスが、サービスを一意に示すＩＰアドレス（サーバの第１のＩＰアドレス）であり、このＩＰアドレスが例えば「アドレスＡ」の場合、負荷分散判断処理部２０２は、他の境界ルータから広告された、第１のＩＰアドレスがアドレスＡのホストルート宛ルート情報と、自身が属するサブネットワークに存在するサーバのうち、第１のＩＰアドレスがアドレスＡのサーバから通知されたホストルート宛ルート情報とに基づいて、転送先を決定する。より詳細には、ルーティングメトリックおよびサーバ負荷情報を入力として１つの値を出力する任意の関数を適用して評価値を計算し、評価値に基づいて、パケット転送先（他の境界ルータ、または、自身が属するサブネットワークに存在しかつアドレスＡのサーバ）を選択する。ここで使用する関数は、例えば、ルーティングメトリック（小さいほど良い経路とする）にある定数をかけたものとサーバ負荷（小さいほどサーバ負荷が少ないとする）に別の定数をかけたものの和の逆数を評価値として算出するものとする。この場合、評価値が大きい装置（境界ルータまたはサーバ）をパケット転送先とする。パケットの転送先を決定した後は、決定結果に従い、転送先に決定した装置のアドレスを設定したソースルーティングヘッダをパケットに付与し、このパケットの転送をパケット転送処理部２０１に依頼すると共に、パケット転送用エントリテーブルを更新する。すなわち、パケット転送先の決定結果に対応するパケット転送用エントリを追加登録する。サーバ方向とクライアント方向の２つのパケット転送用エントリを同時に登録する。サーバ方向のエントリの転送先装置は転送先に決定した境界ルータかサーバとし、クライアント方向のエントリの転送先装置はパケットの送信元アドレス（＝クライアントのアドレス）を宛先としてルーティングテーブルを検索した結果得られる次ホップ装置とする。なお、パケット転送用エントリの送信元ＩＰアドレス、送信先ＩＰアドレスおよびプロトコルには、パケット転送処理部２０１から受け取ったパケットに設定されていた情報を登録する。
【００２９】
負荷分散判断処理部２０２は、ソースルーティングヘッダが付与されており、かつパケット転送用エントリテーブルに対応する情報（パケット転送用エントリ）が登録されていないパケットをパケット転送処理部２０１から受け取った場合、ルーティングテーブルとサーバ負荷情報テーブルの内容を参照し、転送先を決定する。
【００３０】
ソースルーティングヘッダに示されるアドレスが自境界ルータのアドレスと一致しない場合、ソースルーティングヘッダに示されるアドレスを宛先としてルーティングテーブルを検索し得られる次ホップ装置を転送先装置として指定するサーバ方向のパケット転送用エントリと、受信パケットの送信元アドレスを宛先としてルーティングテーブルを検索し得られる次ホップ装置を転送先装置として指定するクライアント方向のパケット転送用エントリを登録する。なお、パケット転送用エントリの送信元ＩＰアドレス、送信先ＩＰアドレスおよびプロトコルには、パケット転送処理部２０１から受け取ったパケットに設定されていた情報を登録する。そして、サーバ方向のパケット転送用エントリの転送先装置へ受信パケットを転送するように、パケット転送処理部２０１に依頼する。
【００３１】
ソースルーティングヘッダに示されるアドレスが自境界ルータのアドレスと一致する場合、自身が属するサブネットワークに存在するサーバの中から第１のＩＰアドレスが受け取ったパケットの宛先アドレス（アドレスＡ）となるサーバから通知されたホストルート宛ルート情報とに基づいて、転送先サーバを決定する。より詳細には、ルーティングメトリックおよびサーバ負荷情報を入力として１つの値を出力する任意の関数を適用して評価値を計算し、評価値に基づいて、パケット転送先（自身が属するサブネットワークに存在しかつアドレスＡのサーバ）を選択する。ここで使用する関数は、例えば、ルーティングメトリック（小さいほど良い経路とする）にある定数をかけたものとサーバ負荷（小さいほどサーバ負荷が少ないとする）に別の定数をかけたものの和の逆数を評価値として算出するものとする。この場合、評価値が大きい装置（サーバ）をパケット転送先とする。パケットの転送先を決定した後は、決定結果に従い、転送先に決定した装置のアドレスを設定したソースルーティングヘッダをパケットに付与し、このパケットの転送をパケット転送処理部２０１に依頼すると共に、パケット転送用エントリテーブルを更新する。すなわち、パケット転送先の決定結果に対応するパケット転送用エントリを追加登録する。サーバ方向とクライアント方向の２つのパケット転送用エントリを同時に登録する。サーバ方向のエントリの転送先装置は転送先に決定したサーバとし、クライアント方向のエントリの転送先装置はパケットの送信元アドレス（＝クライアントのアドレス）を宛先としてルーティングテーブルを検索した結果得られる次ホップ装置とする。なお、パケット転送用エントリの送信元ＩＰアドレス、送信先ＩＰアドレスおよびプロトコルには、パケット転送処理部２０１から受け取ったパケットに設定されていた情報を登録する。
【００３２】
また、負荷分散判断処理部２０２は、ＴＣＰのコネクション解放パケット（ＦＩＮフラグもしくはＲＳＴフラグがＴＣＰヘッダに設定されたパケット）をパケット転送処理部２０１から受け取った場合には、パケット転送用エントリテーブルから対応するエントリを削除すると共に、そのパケットを削除したパケット転送用エントリの情報に基づき転送する（パケット転送用エントリがサーバ方向の場合、パケット転送用エントリに示される転送先装置を用いてソースルーティングヘッダを付与、もしくは、書き換え、もしくは、パケット転送用エントリに示される転送先装置を次ホップ装置として転送する。パケット転送用エントリがクライアント方向の場合、パケット転送用エントリに示される転送先装置を次ホップ装置として転送する。）ようにパケット転送処理部２０１へ依頼する。また、パケット転送用エントリ毎に管理される最終パケット転送時刻（パケット転送処理部２０１が更新する）を監視し、最終パケット転送時刻から一定時間が経過したパケット転送用エントリの削除を行う。これにより、時間の経過とともに各サーバの負荷状態が変動しても、次にパケットが送信される時点での負荷状態に応じてパケット転送用エントリを再設定でき、負荷変動に追従させたパケット転送制御が実現される。
【００３３】
なお、負荷分散処理部２０２は、上記のＩＰヘッダ（パケットの宛先アドレス）に加えて、ＨＴＴＰメッセージに含まれるＣｏｏｋｉｅ等のレイヤ７レベルの情報も参照して転送先を決定するようにしてもよい。このようにした場合、複数の異なるレイヤ４コネクション（例、ＴＣＰコネクション）間にレイヤ７レベルでの相互関係がある場合において、複数の異なるレイヤ４コネクションを同一のサーバに転送することが可能となる。
【００３４】
サーバ登録管理処理部２０３は、自身（自境界ルータ）が属するサブネットワーク内のサーバから第１のＩＰアドレス、第２のＩＰアドレスおよび処理負荷の情報を定期的に収集し、サーバ負荷情報テーブルを更新する。各情報は、各サーバが自律的に（サーバ登録管理処理部２０３からの要求を受けることなく）定期的に送信する。また、サーバ登録管理処理部２０３は、一定の期間にわたって情報の定期的な収集が不可能となった（情報を送信してこなくなった）サーバを検出した場合、このサーバがネットワーク障害等で利用不可能になったと判断し、対応するエントリをサーバ負荷情報テーブルから削除する。これにより、サーバがルーティングプロトコルに未対応であっても、通信不能になったサーバを検出できる。
【００３５】
ルーティングプロトコル処理部２０４は、ルーティングプロトコル処理を行い、ルーティングテーブルおよびサーバ負荷情報テーブルを更新する。例えば、ＢＧＰ−４等のルーティングプロトコルに、自身（自境界ルータ）と同じサブネットワークに属しているサーバの第１のＩＰアドレスおよび負荷情報を通知するためのパラメータなどを追加し、このルーティングプロトコルを使用して他の境界ルータとの間でホストルート宛ルート情報を送受信して情報交換を行うことによりサーバ負荷情報テーブルを更新する。自身が属するサブネットワークに、第１のＩＰアドレスが同じサーバ（同じサービスを提供するサーバ）が複数存在している場合には、同じサービスを提供する各サーバの負荷情報を入力として１つの値を出力する何らかの関数を使用し、この関数の出力として得られる値を、他の境界ルータへ広告するホストルート宛ルート情報に含ませる負荷情報とする。この関数としては、例えば、入力された複数の負荷情報のうち、値が最小のもの（値が小さいほどサーバの負荷が少ないとする）を選択して出力する関数を使用する。値が最小のものを選択出力する関数を使用した場合のルーティングプロトコル処理部２０４の動作は、同じサービスを提供するサーバのうち、処理負荷が最小のサーバの第１のアドレスおよび負荷情報を他の境界ルータへ通知するものとなる。ルーティングテーブルの更新処理は一般的な動作であるため、説明を省略する。
【００３６】
また、ルーティングプロトコル処理部２０４は、他の境界ルータから広告されたホストルート宛ルート情報を受信した場合、受信したホストルート宛ルート情報をサーバ負荷情報テーブルに登録するとともに、受信したホストルート宛ルート情報のルーティングメトリックを更新した上で転送（他の境界ルータへ広告）する。ルーティングメトリックの更新は、ホストルート宛ルート情報の広告元境界ルータ（例えばＢＧＰ−４の場合、自境界ルータがＢＧＰ−４のピア関係を確立している隣接境界ルータ）から自身までのメトリックを反映させることにより行う。なお、サーバ負荷情報テーブルに登録済みのホストルート宛ルート情報の新たな情報（負荷情報が更新された情報）を受信した場合、サーバ負荷情報テーブルに上書きして更新する。また、新たなホストルート宛ルート情報が一定時間にわたって受信できなかった場合、対応するホストルート宛ルート情報をサーバ負荷情報テーブルから削除する。これにより、通信障害が発生しているサーバがパケット転送先として選択されてしまうのを防止でき、正常なサーバへのパケット転送制御を実現できる。
【００３７】
つづいて、サーバの構成について説明する。なお、各サーバの構成は同一である。図３は、サーバの構成例を示す図であり、本実施の形態のサーバは、ＩＰ転送処理部１０１と、クライアント要求処理部１０２と、サーバ負荷登録処理部１０３と、第１のアドレス（第１のＩＰアドレス）、第２のアドレス（第２のＩＰアドレス）および境界ルータアドレス（境界ルータのＩＰアドレス）を保持している記憶部１０４とを備える。
【００３８】
記憶部１０４が保持している情報について説明する。
【００３９】
第１のＩＰアドレスはサーバが提供するサービスを一意に示すアドレス（提供サービス識別用のＩＰアドレス）であり、同じサービスを提供するサーバが通信システムネットワーク内に複数存在している場合、それらサーバの第１のＩＰアドレスは同じ値となる。この第１のＩＰアドレスは、クライアントがあるサービスに対して要求を送信する際に宛先アドレスに設定するアドレスであり、例えば、ＩＰ転送処理部１０１により設定される。
【００４０】
第２のＩＰアドレスは自装置（自サーバ）を一意に示すアドレス（サーバ識別用のＩＰアドレス）であり、自装置と同じサブネットワークに属している境界ルータとの通信、および他のサーバとの通信において、送信元／送信先アドレスとして使用される。
【００４１】
境界ルータアドレスは、自身（自サーバ）と同じサブネットワークに属している境界ルータを一意に示すアドレス（境界ルータのＩＰアドレス）である。サブネットワークに複数の境界ルータが存在する場合、それら各境界ルータのＩＰアドレスが保持される。境界ルータアドレスは、例えば、サーバ負荷登録処理部１０３により設定される。
【００４２】
ＩＰ転送処理部１０１は、サーバでのＩＰプロトコル処理を実行し、クライアント要求処理部１０２およびサーバ負荷登録処理部１０３がネットワーク上の他の機器とＩＰ通信を行うための機能を提供する。
【００４３】
クライアント要求処理部１０２は、クライアントが要求するサービスに対する処理を実行する。
【００４４】
サーバ負荷登録処理部１０３は、自サーバにおける負荷状況を監視し、記憶部１０４が保持している各境界ルータアドレスに対応する全ての境界ルータに対して定期的にサーバの負荷情報を通知する。このとき、記憶部１０４が保持している第１のＩＰアドレスおよび第２のＩＰアドレスも併せて通知する。
【００４５】
つづいて、本実施の形態の通信ネットワークシステムにおけるパケット転送動作について、図４を用いて説明する。図４は、パケット転送動作の一例を示す図であり、図１に示した構成の通信システムネットワークにおいて、クライアント１−３がアドレスＡに対応するサービスを提供するサーバ宛にパケットを送信する場合のパケット転送動作例を示している。なお、図４の通信システムネットワークの各境界ルータのパケット転送用エントリテーブルには、クライアント１−３からアドレスＡのサーバ宛に送信されるパケットに対応するエントリが登録されていないものとする。
【００４６】
クライアント１−３は、要求するサービスに対応するＩＰアドレスであるアドレスＡを宛先（送信先アドレス）に設定し、送信元アドレスに自身のアドレスを設定したパケットを送信する。
【００４７】
クライアント１−３から送信された、宛先がアドレスＡのパケットは、境界ルータ２４により受信され、境界ルータ２４は、パケットの送信元ＩＰアドレスおよび送信先ＩＰアドレス（宛先アドレス）と一致するパケット転送用エントリがパケット転送用エントリテーブルに登録されているかどうか確認する。そして、この例ではエントリが登録されていないため、ホストルート宛ルート情報に基づいて、パケットの転送先をどの境界ルータのサブネットに存在するサーバ宛にするか決定する（処理１）。図示した例では、境界ルータ２３と同じサブネットワークに存在するサーバ１２宛とすることに決定する。ただし、境界ルータ２４は、サーバ１２の第２のＩＰアドレス（装置識別用アドレス）を保持していないため、実際には、境界ルータ２３宛とすることに決定し、境界ルータ２３のアドレスを設定したソースルーティングヘッダを付与してパケットを転送する（処理２）。
【００４８】
境界ルータ２４は、さらに、送信元がクライアント１−３かつ送信先がアドレスＡのパケットを次回受信する場合に備えて、転送したパケットに対応するパケット転送用エントリをパケット転送用エントリテーブルに登録する（処理３）。パケット転送用エントリの送信元ＩＰアドレス、送信先ＩＰアドレスおよびプロトコルには、受信したパケットに設定されていた情報（送信元ＩＰアドレス，送信先ＩＰアドレス，プロトコル）をそれぞれ登録する。パケットの転送先には、サーバ方向のエントリではソースルーティングヘッダに設定したアドレス、クライアント方向のエントリでは受信したパケットの送信元ＩＰアドレス（＝クライアント１−３のアドレス）を宛先としてルーティングテーブルを検索して得られる次ホップ装置をそれぞれ登録する。
【００４９】
境界ルータ２４により転送された上記パケットは、境界ルータ２２−２により受信され、境界ルータ２２−２は、パケットの送信元ＩＰアドレスおよび送信先ＩＰアドレスと一致するパケット転送用エントリがパケット転送用エントリテーブルに登録されているかどうか確認する。この例では、エントリが登録されていないが、ソースルーティングヘッダが付与されているため、このパケットに対応するパケット転送用エントリをパケット転送用エントリテーブルに登録するとともに、ソースルーティングヘッダに従い、境界ルータ２３に向けてパケットを転送する（処理４，処理５）。パケット転送用エントリの送信元ＩＰアドレス、送信先ＩＰアドレスおよびプロトコルには、受信したパケットに設定されていた情報をそれぞれ登録する。サーバ方向のパケット転送用エントリの転送先装置には、ソースルーティングヘッダに設定されていたアドレスを宛先としてルーティングテーブル検索を行い得られる次ホップ装置、クライアント方向のパケット転送用エントリの転送先装置には受信パケットの送信元アドレスを宛先としてルーティングテーブル検索を行い得られる次ホップ装置をそれぞれ登録する。
【００５０】
境界ルータ２２−２により転送された上記パケットは、境界ルータ２２−１により受信され、境界ルータ２２−１は、上述した境界ルータ２２−２と同様の処理を実行し、パケット転送用エントリテーブルを更新する（エントリを追加登録する）とともにパケットを転送する（処理６，処理７）。
【００５１】
境界ルータ２２−１により転送された上記パケットは、境界ルータ２３により受信され、境界ルータ２３は、パケットの送信元ＩＰアドレスおよび送信先ＩＰアドレスと一致するパケット転送用エントリがパケット転送用エントリテーブルに登録されているかどうか確認する。この例では、エントリが登録されていないが、ソースルーティングヘッダが付与されており、かつソースルーティングヘッダに自境界ルータのアドレスが設定されているため、このパケットに対応するパケット転送用エントリをパケット転送用エントリテーブルに登録するとともに、ソースルーティングヘッダに設定されているアドレスをサーバ１２の第２のＩＰアドレス（アドレスＢ２）に置き換えて転送する（処理８，９）。なお、アドレスＡに対応するサーバが同じサブネットワークに複数存在している場合、ソースルーティングヘッダに設定されているアドレスを、処理負荷が最も少ないサーバのアドレスに置き換える。
【００５２】
これ以降、クライアント１−３が送信元かつ宛先がアドレスＡのパケットは、各境界ルータにおいて、パケット転送用エントリに従って転送される（処理１０）。なお、各境界ルータは、クライアント１−３が送信元かつ宛先がアドレスＡのパケットを一定時間受信しなかった場合や、コネクション解放プロトコルシーケンスが実行された場合には、このパケットに対応するパケット転送用エントリを削除する（処理１１）。
【００５３】
このように、本実施の形態の通信ネットワークシステムにおいて、サービスを提供する各サーバは、提供するサービスに応じたＩＰアドレス（第１のＩＰアドレス）とサーバ固有のＩＰアドレス（第２のＩＰアドレス）を有しており、第１および第２のＩＰアドレスと処理負荷の情報を、定期的に、自身と同じサブネットワーク内の境界ルータに通知する。各境界ルータは、各サーバから取得した上記情報を保持しておくとともに、各サーバが有している第１のＩＰアドレスおよび処理負荷に関する情報、ルーティングメトリックを他の境界ルータへ広告し、各境界ルータが属しているサブネットワークの情報と、境界ルータが属しているサブネットワーク内で同じサービスを提供するサーバ群ごとの処理負荷に関する情報とを他の境界ルータとの間で共有する。また、各境界ルータは、クライアントからパケットを受信した場合には、要求されたサービスを提供するサーバのうち、処理負荷が最も小さいサーバと同じサブネットワークの境界ルータに向けて転送することとした。さらに、自身に向けて転送されてきたパケットを受信した場合、パケットが要求しているサービスを提供するサーバであって、自身の同じサブネットワーク内のサーバに対して転送することとした。このとき、同じサービスを提供するサーバがサブネットワーク内に複数存在しているならば、処理負荷が最小のサーバに転送することとした。これにより、クライアントから送信されたパケットを処理負荷の小さいサーバに転送してサーバ間の処理負荷を分散できる。また、従来のように各サーバの負荷状態に関係なく予め決められているサーバに一旦接続してから負荷状態を確認して接続先を切り替える制御や負荷分散のための専用の装置が不要となるので、従来と比較して、処理手順やシステム構成を単純化できる。
【００５４】
また、各境界ルータは、あるクライアントとサーバの間での１回目のパケット時において、パケット転送用エントリテーブルを更新し、２回目以降のパケット転送時にはパケット転送用エントリテーブルに従って転送を行うので、２回目以降のパケット転送処理の所要時間短縮と処理負荷軽減を実現できる。
【００５５】
また、各境界ルータは、上記情報（第１および第２のＩＰアドレスと処理負荷の情報）を一定期間にわたって通知してこなくなったサーバを検出した場合、このサーバがネットワーク障害等で利用不可能になったと判断し、このサーバをパケット転送先として選択しないようにする。これにより、サーバがルーティングプロトコルに未対応であっても、通信不能になったサーバの検出が可能となる。この結果、ネットワーク障害を考慮したパケット転送が実現でき、障害耐性を向上できる。
【産業上の利用可能性】
【００５６】
以上のように、本発明は、同じサービスを提供するサーバが複数存在する通信ネットワークシステムにおいて、サーバ間の処理負荷の均衡化とネットワーク障害を考慮したパケット転送を実現するための発明として有用である。
【符号の説明】
【００５７】
１−１，１−２，１−３  クライアント
２１，２２−２１，２２−２，２３，２４  境界ルータ
３１，３２，３３，３４  サブネットワーク
１０１  ＩＰ転送処理部
１０２  クライアント要求処理部
１０３  サーバ負荷登録処理部
１０４，２０５  記憶部
２０１  パケット転送処理部
２０２  負荷分散判断処理部
２０３  サーバ登録管理処理部
２０４  ルーティングプロトコル処理部
【図１】
2012253681.tif 000003
【図２】
2012253681.tif 000004
【図３】
2012253681.tif 000005
【図４】
2012253681.tif 000006