(57)【特許請求の範囲】
【請求項１】
サービスを提供するサーバ計算機を指定する特定ＩＰアドレスが宛先ＩＰアドレスとして設定されたネットワークトレーラを含むクライアント計算機からの通信データを受けて、複数のサーバ計算機のうち、前記特定ＩＰアドレスが設定されているサーバ計算機の１つが前記クライアント計算機と通信を行うクラスタシステムであって、
前記各サーバ計算機は、
前記特定ＩＰアドレスを宛先ＩＰアドレスとする通信データの受信時に起動され、当該通信データ中の送信元計算機に関する情報をもとに、自計算機がサービスを提供すべきであるか否かを判断し、対応するフラグ情報を設定する判断手段と、
通信データの受信時に、当該通信データ中の宛先物理アドレスに無関係に当該通信データ中のネットワークトレーラを取り出して、宛先ＩＰアドレスをチェックし、この宛先ＩＰアドレスが前記特定ＩＰアドレスに一致し、且つ前記判断手段により自計算機がサービスを提供すべきでないことを示すフラグ情報が設定された場合に限り、前記ネットワークトレーラを破棄し、それ以外の場合には、前記ネットワークトレーラをネットワーク層に渡すフィルタドライバとを具備することを特徴とするクラスタシステム。
【請求項２】
前記判断手段は、前記通信データ中の送信元ＩＰアドレス、送信元物理アドレスまたは送信元ポート番号の所定部分が予め指定された値に一致するか否かに基づいて、前記フラグ情報の状態を決定することを特徴とする請求項１記載のクラスシステム。
【請求項３】
前記判断手段は、前記通信データ中の送信元ＩＰアドレス、送信元物理アドレス及び送信元ポート番号のうちの少なくとも２つを組み合わせた情報の所定部分が予め指定された値に一致するか否かに基づいて、前記フラグ情報の状態を決定することを特徴とする請求項１記載のクラスシステム。
【請求項４】
サービスを提供するサーバ計算機を指定する特定ＩＰアドレスが宛先ＩＰアドレスとして設定されたネットワークトレーラを含むクライアント計算機からの通信データを受けて、複数のサーバ計算機のうち、前記特定ＩＰアドレスが設定されているサーバ計算機の１つが前記クライアント計算機と通信を行うクラスタシステムであって、
前記各サーバ計算機は、
前記特定ＩＰアドレスを宛先ＩＰアドレスとする通信データの受信時に起動されて、自計算機がサービスを提供すべきであるか否かを判断し、対応するフラグ情報を設定する判断手段と、
通信データの受信時に、当該通信データ中の宛先物理アドレスに無関係に当該通信データ中のネットワークトレーラを取り出して、宛先ＩＰアドレスをチェックし、この宛先ＩＰアドレスが前記特定ＩＰアドレスに一致し、且つ前記判断手段により自計算機がサービスを提供すべきでないことを示すフラグ情報が設定された場合に限り、前記ネットワークトレーラを破棄し、それ以外の場合には、前記ネットワークトレーラをネットワーク層に渡すフィルタドライバとを具備し、
前記各判断手段は、相互に通信を行うことでサービスを提供する唯一のサーバ計算機を通信毎に決定することを特徴とするクラスタシステム。
【請求項５】
サービスを提供するサーバ計算機を指定する特定ＩＰアドレスが宛先ＩＰアドレスとして設定されたネットワークトレーラを含むクライアント計算機からの通信データを受けて、複数のサーバ計算機のうち、前記特定ＩＰアドレスが設定されているサーバ計算機の１つが前記クライアント計算機と通信を行うクラスタシステムに適用されるサーバ計算機であって、
前記特定ＩＰアドレスを宛先ＩＰアドレスとする通信データの受信時に起動され、当該通信データ中の送信元計算機に関する情報をもとに、自計算機がサービスを提供すべきであるか否かを判断し、対応するフラグ情報を設定する判断手段と、
通信データの受信時に、当該通信データ中の宛先物理アドレスに無関係に当該通信データ中のネットワークトレーラを取り出して、宛先ＩＰアドレスをチェックし、この宛先ＩＰアドレスが前記特定ＩＰアドレスに一致し、且つ前記判断手段により自計算機がサービスを提供すべきでないことを示すフラグ情報が設定された場合に限り、前記ネットワークトレーラを破棄し、それ以外の場合には、前記ネットワークトレーラをネットワーク層に渡すフィルタドライバとを具備することを特徴とするサーバ計算機。
【請求項６】
サービスを提供するサーバ計算機を指定する特定ＩＰアドレスが宛先ＩＰアドレスとして設定されたネットワークトレーラを含むクライアント計算機からの通信データを受けて、複数のサーバ計算機のうち、前記特定ＩＰアドレスが設定されているサーバ計算機の１つが前記クライアント計算機と通信を行うクラスタシステムに適用される負荷分散方法であって、
前記特定ＩＰアドレスを宛先ＩＰアドレスとする通信データの受信時に、当該通信データ中の送信元計算機に関する情報をもとに、自計算機がサービスを提供すべきであるか否かを判断して、その判断結果に対応する値のフラグ情報を設定する一方、
物理層とネットワーク層との間に配置したフィルタドライバにて、前記通信データ中の宛先物理アドレスに無関係に当該通信データ中のネットワークトレーラを取り出して、宛先ＩＰアドレスをチェックし、この宛先ＩＰアドレスが前記特定ＩＰアドレスに一致し、且つ前記フラグ情報により自計算機がサービスを提供すべきでないことが示されている場合に限り、前記ネットワークトレーラを破棄し、それ以外の場合には、前記ネットワークトレーラをネットワーク層に渡すようにしたことを特徴とする負荷分散方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、サーバ計算機相互のサービスの引き継ぎが行われるクラスタシステムに係り、特に、受信データ中のネットワークトレーラのフィルタリングを行うドライバ（フィルタドライバ）を持つ複数のサーバ計算機を備えたクラスタシステムに関する。
【０００２】
【従来の技術】
従来から、複数のサーバ計算機（ノード）をネットワークで結合し、あるサーバ計算機で障害が発生しても、障害で停止したサービスを他のサーバ計算機が引き継ぐことにより、システム全体として可用性を維持できるようにしたクラスタシステムが種々開発されている。
【０００３】
この種のクラスタシステムにおいて、計算機相互のサービスの引き継ぎを行うには、ネットワークアドレスとしてのＩＰ（インターネットプロトコル）アドレスのテイクオーバが必要となる。そのため、例えば２台のサーバ計算機Ａ，Ｂがネットワークで結合されたクラスタシステムについて述べるならば、当該計算機Ａ，Ｂには、それぞれ固有のＩＰアドレスＩＰＡ，ＩＰＢ（１種類とは限らない）の他に、テイクオーバする特定のＩＰアドレスＩＰＳが設定される。
【０００４】
【発明が解決しようとする課題】
しかし従来のクラスタシステムでは、ＩＰアドレスのテイクオーバのために、動的にＩＰアドレスを設定したり、設定を解除したりすることができなかった。また、論理的なＩＰアドレスを動的に活性化させたり、非活性化させることもできず、ＯＳ（オペレーティングシステム）において、ＩＰアドレスのテイクオーバができないという問題があった。
【０００５】
そこで従来は、ＩＰアドレスのテイクオーバを実現するために、クライアント計算機で動作するアプリケーション（クライアントアプリケーション）を改造し、通信相手を切り替える特別の仕組みを導入したり、ネームサービス（ホスト名とＩＰアドレスとを対応させるサービス）を司るサーバ( ネームサービスサーバ）を設定し、ネームサービスでホスト名とＩＰアドレスとの対応を切り替える必要があった。
【０００６】
また、従来のクラスタシステムにおいて負荷分散を行ってシステム全体のロードバランスをとるために、クライアントアプリケーションにてサービスを提供してもらうサーバ計算機を切り替えることにより実現するか、レイヤー（Ｌａｙｅｒ）４スイッチと称される特別のハードウェア機構を使用して実現していた。つまり、従来のクラスシステムにおいて負荷分散を行うには、専用のアプリケーション（アプリケーションプログラム）または専用のハードウェア機構が必要であった。
【０００７】
本発明は上記事情を考慮してなされたものでその目的は、従来ネットワークアドレスのテイクオーバが不可能であったＯＳが搭載されているサーバ計算機においても、フィルタドライバを実装することにより、クライアントアプリケーションの改造、更にはネームサービスサーバの設定を要することなく、ネットワークアドレスのテイクオーバが実現できるクラスタシステムを提供することにある。
【０００８】
本発明の他の目的は、サーバ計算機にフィルタドライバを実装することにより、専用のアプリケーション、或いは専用のハードウェア機構を用いることなく、レイヤー４スイッチを使用した場合と同様に負荷分散が実現できるクラスタシステムを提供することにある。
【０００９】
【課題を解決するための手段】
本発明は、テイクオーバされる特定ネットワークアドレスが宛先ネットワークアドレスとして設定されたネットワークトレーラを含む通信データを用いた通信によりサーバ計算機間でサービスの引き継ぎが行われるクラスタシステムにおいて、上記各サーバ計算機に、第１及び第２の状態のいずれか一方に任意に切り替え設定可能なフラグ情報を保持するフラグ情報保持手段と、通信データの受信時には、上記フラグ情報を参照し、第１の状態の場合には通信データ中のネットワークトレーラのフィルタリングを行わず、第２の状態の場合には、ネットワークトレーラ中の宛先ネットワークアドレスが上記特定ネットワークアドレスであるか否かによりネットワークトレーラのフィルタリングを行い、特定ネットワークアドレスである場合に限り、ネットワークトレーラを破棄するフィルタドライバとを備えたことを特徴とする。
【００１０】
このような構成において、（テイクオーバされる）特定ネットワークアドレスが設定されている各サーバ計算機に保持されるフラグ情報は、当該特定ネットワークアドレスの当該計算機での有効／無効を示す。したがって、上記各計算機において、ユーザの操作、或いは計算機間の通信等により、所定のコマンド（フラグ操作コマンド）を用いて動的にフラグ情報の状態（第１または第２の状態）を切り替え設定し、そのフラグ情報の状態と受信データのネットワークトレーラ中の宛先ネットワークアドレスをもとに、フィルタドライバにおいてネットワークトレーラの破棄を決定することにより、クラスタシステムにおいて重要なネットワークアドレス（例えばＩＰアドレス）のテイクオーバが実現可能となる。
【００１１】
また本発明は、テイクオーバされる特定ネットワークアドレスが複数設定されるサーバ計算機を複数備えたクラスタシステムにおいて、上記各サーバ計算機に、複数の特定ネットワークアドレスの各々にそれぞれ対応して設けられ、第１及び第２の状態のいずれか一方に任意に且つ独立に切り替え設定可能なフラグ情報を保持するフラグ情報保持手段と、通信データの受信時には上記各フラグ情報を参照し、全てが上記第１の状態の場合には通信データ中のネットワークトレーラのフィルタリングを行わず、それ以外の場合には、ネットワークトレーラ中の宛先ネットワークアドレスが、上記第２の状態にあるフラグ情報に対応する特定ネットワークアドレスの１つに一致した場合にネットワークトレーラを破棄するフィルタリングを行うフィルタドライバとを備えたことをも特徴とする。
【００１２】
このような構成では、上記各サーバ計算機において、ユーザの操作、或いは計算機間の通信等により、所定のコマンドを用いて動的に複数のフラグ情報の状態（第１または第２の状態）を切り替え設定し、その複数のフラグ情報の状態と受信データのネットワークトレーラ中の宛先ネットワークアドレスをもとに、フィルタドライバにおいてネットワークトレーラの破棄を決定することにより、クラスタシステムにおいて重要なネットワークアドレスのテイクオーバが複数実現可能となる。
【００１３】
また本発明は、サービスを提供するサーバ計算機を指定する特定ネットワークアドレスが宛先ネットワークアドレスとして設定されたネットワークトレーラを含むクライアント計算機からの通信データを受けて、複数のサーバ計算機のうち、上記特定ネットワークアドレスが設定されているサーバ計算機の１つが上記クライアント計算機と通信を行うクラスタシステムにおいて、上記各サーバ計算機に、上記特定ネットワークアドレスを宛先ネットワークアドレスとする通信データの受信時に起動され、当該通信データ中の送信元計算機に関する情報をもとに、自計算機がサービスを提供すべきであるか否かを判断し、対応するフラグ情報を設定する判断手段と、通信データの受信時に、当該通信データ中の宛先物理アドレスに無関係に当該通信データ中のネットワークトレーラを取り出して、宛先ネットワークアドレスをチェックし、この宛先ネットワークアドレスが上記特定ネットワークアドレスに一致し、且つ上記判断手段により自計算機がサービスを提供すべきでないことを示すフラグ情報が設定された場合に限り、上記ネットワークトレーラを破棄し、それ以外の場合には、上記ネットワークトレーラをネットワーク層に渡すフィルタドライバとを備えたことを特徴とする。
【００１４】
このような構成においては、特定ネットワークアドレスが設定されているサーバ計算機、即ちサービスを提供する計算機として指定されたサーバ計算機が同時に複数存在する場合でも、通信データ中の送信元計算機に関する情報（つまりサービス提供の要求元のクライアント計算機に関する情報）をもとに、そのうちの１つだけが、実際にサービスを提供するサーバ計算機として要求元のクライアント計算機と通信を行うことが可能となり、負荷分散を図ることが可能となる。
【００１５】
ここで、通信データ中の送信元計算機に関する情報として、通信データ中の送信元ネットワークアドレス、送信元物理アドレスまたは送信元ポート番号のいずれか１つの情報を用いるか、送信元ネットワークアドレス、送信元物理アドレス及び送信元ポート番号のうちの少なくとも２つを組み合わせた情報を用いるならば、負荷分散が簡単に実現できる。この場合、その情報の所定部分が予め指定された値に一致するか否かに基づいてフラグ情報の状態を決定する、つまり自計算機が実際にサービスを提供すべきであるか否かを決定するとよい。このフラグ情報の状態の決定に、各サーバ計算機の能力の違いも反映させるようにするならば、効果的な負荷分散が実現できる。
【００１６】
また、特定ネットワークアドレスが設定されている各サーバ計算機の判断手段が、相互に通信を行うことでサービスを提供する唯一のサーバ計算機を通信毎に決定する構成とするとよい。
【００１７】
この場合、サービスを提供するサーバ計算機を通信毎に動的に決定できるため、一層効果的な負荷分散が実現できる。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
【００１９】
［第１の実施形態］
図１は本発明の第１の実施形態に係るクラスタシステムの構成を示すブロック図である。
【００２０】
図１において、複数のサーバ計算機、例えばサーバ計算機１０Ａ，１０Ｂ及びクライアント計算機１０Ｃは、ネットワーク１１により結合されている。サーバ計算機１０Ａ，１０Ｂ及びクライアント計算機１０Ｃは、ＴＣＰ／ＩＰ（ｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ  ｐｒｏｔｏｃｏｌ／ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）のプログラムを実行する。
【００２１】
サーバ計算機１０Ａ，１０Ｂには、それぞれ当該サーバ計算機１０Ａ，１０Ｂに固有の（ネットワークアドレスとしての）ＩＰアドレスＩＰＡ，ＩＰＢ（１種類とは限らない）、及び（物理アドレスとしての）ＭＡＣアドレスＭＡＣＡ，ＭＡＣＢが設定されると共に、当該サーバ計算機１０Ａ，１０Ｂに共通のテイクオーバするＩＰアドレスＩＰＳが設定される。
【００２２】
サーバ計算機１０Ａには、本発明に直接関係するフィルタドライバ１００が実装されている。このフィルタドライバ１００は、ネットワーク１１を介しての計算機間の通信で適用されるインタフェース層１０１、ネットワーク層１０２、トランスポート層１０３、及びアプリケーション層１０４のうちの、インタフェース層１０１とネットワーク層１０２の間に位置している。インタフェース層１０１、ネットワーク層１０２、及びトランスポート層１０３は、通信ドライバ１０５により実現される。
【００２３】
フィルタドライバ１００は、宛先ＩＰアドレスのフィルタリングを行うもので、上記ＩＰアドレスＩＰＳのオン（ｏｎ）／オフ（ｏｆｆ）を指定するためのフラグ１００ａ（Ｆ）を有している。このフラグ１００ａは、サーバ計算機１０Ａのコマンド実行機能により実現されるフラグ操作機構１０６が所定のフラグ操作コマンド１０７を実行することで動的にｏｎ／ｏｆｆされる。
【００２４】
本実施形態においてフィルタドライバ１００は、フラグ１００ａがｏｎの場合には、インタフェース層１０１から送られるＩＰトレーラ（ネットワークトレーラ）２３（図２参照）をそのままネットワーク層１０２に通過させるように構成されている。またフィルタドライバ１００は、フラグ１００ａがｏｆｆの場合には、ＩＰトレーラ２３中の宛先ＩＰアドレス２４（図２参照）がＩＰＳに一致するか否かに応じて、当該ＩＰトレーラ２３を破棄またはネットワーク層１０２に通過させるようにも構成されている。
【００２５】
インタフェース層１０１の前段にはネットワーク１１とのインタフェースをなすネットワークインタフェース１０８が設けられている。このネットワークインタフェース１０８は物理層を構成している。
【００２６】
以上の構成は、サーバ計算機１０Ａ以外のサーバ計算機、例えばサーバ計算機１０Ｂにおいても同様である。したがって、フィルタドライバ１００のフラグ１００ａを例にとると、サーバ計算機１０Ｂでもフラグ操作コマンド１０７に応じて当該フラグ１００ａをｏｎ／ｏｆｆ操作可能である。この操作は、サーバ計算機１０Ａ，１０Ｂ間で互いに通信を行って実行するとよい。但し、図１では、サーバ計算機１０Ｂの構成は省略されている。
【００２７】
図２はネットワーク１１を転送される通信データ（通信パケット）としてのイーサネット（Ｅｔｈｅｒｎｅｔ）トレーラ２０の概略フォーマットを示す。
【００２８】
同図に示すように、イーサネットトレーラ２０は、宛先ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス２１を含むヘッダ部（イーサネットヘッダ）２２、及びＩＰトレーラ２３を有している。このＩＰトレーラ２３は、宛先ＩＰアドレス２４及び送信元ＩＰアドレス２５を含むヘッダ部（ＩＰヘッダ）２６を有している。
【００２９】
次に、図１のシステムの動作を、サーバ計算機１０Ｂからサーバ計算機１０Ａにサービスを引き継ぐ場合のＩＰアドレスのテイクオーバを例に、図３のフローチャートを参照して説明する。
【００３０】
まず、クライアント計算機１０Ｃからネットワーク１１上に、ＩＰトレーラ２３の宛先ＩＰアドレス２４がＩＰＳであるイーサネットトレーラ（通信パケット）２０、つまりＩＰＳ宛てのＩＰトレーラ２３を含むイーサネットトレーラ２０が送出されたものとする。このクライアント計算機１０Ｃからネットワーク１１上に送出されたイーサネットトレーラ２０は、当該ネットワーク１１に接続されている各計算機に導かれ、その計算機のネットワークインタフェースで受信される。例えば、サーバ計算機１０Ａに対しては、図１において符号１２で示す経路でクライアント計算機１０Ｃからのイーサネットトレーラ２０が導かれ、当該サーバ計算機１０Ａのネットワークインタフェース１０８で受信される。
【００３１】
サーバ計算機１０Ａのネットワークインタフェース１０８で受信された（クライアント計算機１０Ｃからの）イーサネットトレーラ２０は、当該サーバ計算機１０Ａのインタフェース層１０１に渡される。
【００３２】
サーバ計算機１０Ａのインタフェース層１０１では、イーサネットトレーラ２０のヘッダ部２２中の宛先ＭＡＣアドレス２１をチェックする（ステップＳ１）。
【００３３】
ステップＳ１でのＭＡＣアドレスチェックの結果、宛先ＭＡＣアドレス２１がＭＡＣＡに一致するならば（ステップＳ２）、インタフェース層１０１ではイーサネットトレーラ２０が自分宛のものであると判断し、イーサネットトレーラ２０からＩＰトレーラ２３を取り出して、フィルタドライバ１００に渡す（ステップＳ３）。これに対し、宛先ＭＡＣアドレス２１がＭＡＣＡに一致しないならば（ステップＳ２）、インタフェース層１０１ではイーサネットトレーラ２０が自分宛のものでないものと判断し、当該イーサネットトレーラ２０を破棄する（ステップＳ４）。
【００３４】
フィルタドライバ１００は、インタフェース層１０１からＩＰトレーラ２３を渡されると、フラグ（Ｆ）１００ａの状態を参照し、当該フラグ１００ａがｏｎ状態にあるか否かを判断する（ステップＳ５）。
【００３５】
もし、フラグ１００ａがｏｎ状態にあるならば、つまりフラグ操作コマンド１０７に従うサーバ計算機１０Ａ内のフラグ操作機構１０６の動作によりフラグ１００ａがｏｎされているならば、フィルタドライバ１００は特別のフィルタリング動作を行わず、インタフェース層１０１から渡されたＩＰトレーラ２３をそのままネットワーク層１０２に渡す（ステップＳ６）。
【００３６】
したがって、本実施形態のようにＩＰＳに一致する宛先ＩＰアドレス２４がＩＰトレーラ２３に設定されている場合には、そのＩＰトレーラ２３が同じサーバ計算機１０Ａ内のネットワーク層１０２に渡されることで、当該サーバ計算機１０ＡでのＩＰアドレスのテイクオーバが可能となる。
【００３７】
一方、フラグ１００ａがｏｆｆ状態にあるならば、つまりフラグ操作コマンド１０７に従うサーバ計算機１０Ａ内のフラグ操作機構１０６の動作によりフラグ１００ａがｏｆｆされているならば、フィルタドライバ１００は、以下に述べるフィルタリング動作を行う。
【００３８】
まずフィルタドライバ１００は、インタフェース層１０１から渡されたＩＰトレーラ２３中の宛先ＩＰアドレス２４をチェックし、当該宛先ＩＰアドレス２４がＩＰＳに一致するか否かを判断する（ステップＳ７，Ｓ８）。
【００３９】
もし、ＩＰトレーラ２３中の宛先ＩＰアドレス２４がＩＰＳに一致するならば、つまりＩＰＳ宛てのＩＰトレーラ２３であるならば、フラグ１００ａがｏｆｆの状態では自計算機１０ＡがＩＰアドレスＩＰＳのテイクオーバの対象外であることから、フィルタドライバ１００は当該ＩＰトレーラ２３を破棄する（ステップＳ９）。したがって、フラグ１００ａがｏｆｆ状態にあるサーバ計算機１０ＡにてＩＰアドレスのテイクオーバが行われるのが防止できる。
【００４０】
これに対し、ＩＰトレーラ２３中の宛先ＩＰアドレス２４がＩＰＳに一致しないならば、つまりＩＰＳ宛てのＩＰトレーラ２３でないならば、ＩＰアドレスＩＰＳのテイクオーバに関係ないことから、フラグ１００ａがｏｆｆの状態であっても、フィルタドライバ１００は当該ＩＰトレーラ２３をネットワーク層１０２に渡す（ステップＳ６）。
【００４１】
［第２の実施形態］
図４は本発明の第２の実施形態に係るクラスタシステムの構成を示すブロック図であり、図１と同一部分には同一符号を付してある。
【００４２】
図４において、図１中のサーバ計算機１０Ａ，１０Ｂに相当するサーバ計算機４０Ａ，４０Ｂ、及びクライアント計算機１０Ｃに相当するクライアント計算機４０Ｃは、ネットワーク１１により結合されている。サーバ計算機４０Ａ，４０Ｂには、それぞれ当該サーバ計算機４０Ａ，４０Ｂに固有のＩＰアドレスＩＰＡ，ＩＰＢ（１種類とは限らない）が設定されると共に、当該サーバ計算機１０Ａ，１０Ｂに共通のテイクオーバする複数のＩＰアドレス、例えば２個のＩＰアドレスＩＰＳ１，ＩＰＳ２が設定される。
【００４３】
サーバ計算機４０Ａには、インタフェース層１０１とネットワーク層１０２の間に位置するフィルタドライバ４００が実装されている。フィルタドライバ４００は、宛先ＩＰアドレスのフィルタリングを行うもので、上記ＩＰアドレスＩＰＳ１，ＩＰＳ２のｏｎ／ｏｆｆを指定するためのフラグ４００ａ（Ｆ１），４００ｂ（Ｆ２）を有している。このフラグ４００ａ（Ｆ１），４００ｂ（Ｆ２）は、フラグ操作機構１０６が所定のフラグ操作コマンド４０７を実行することで動的に且つ独立にｏｎ／ｏｆｆされる。フィルタドライバ４００は、フラグ（Ｆ１），４００ｂ（Ｆ２）が全てｏｎの場合には、インタフェース層１０１から渡されるＩＰトレーラ２３をそのままネットワーク層１０２に渡す。またフィルタドライバ４００は、フラグ（Ｆ１），４００ｂ（Ｆ２）の少なくとも一方がｏｆｆの場合には、ＩＰトレーラ２３中の宛先ＩＰアドレス２４が、当該ｏｆｆ状態にあるフラグ（Ｆｉ）に対応するＩＰアドレスＩＰＳｉ（ｉは１または２）に一致するか否かに応じて、当該ＩＰトレーラ２３を破棄またはネットワーク層１０２に通過させる。
【００４４】
以上の構成は、サーバ計算機４０Ａ以外のサーバ計算機、例えばサーバ計算機４０Ｂにおいても同様である。
【００４５】
次に、図４のシステムの動作を、サーバ計算機４０Ｂからサーバ計算機４０Ａにサービスを引き継ぐ場合のＩＰアドレスのテイクオーバを例に、図５のフローチャートを参照して説明する。
【００４６】
まず、クライアント計算機４０Ｃからネットワーク１１上に、ＩＰトレーラ２３の宛先ＩＰアドレス２４がＩＰＳ１またはＩＰＳ２のイーサネットトレーラ２０が送出されたものとする。このイーサネットトレーラ２０は、例えばサーバ計算機４０Ａに対しては、図４において符号４２で示す経路で導かれ、当該サーバ計算機４０Ａのネットワークインタフェース１０８で受信される。
【００４７】
サーバ計算機４０Ａのネットワークインタフェース１０８で受信された（クライアント計算機４０Ｃからの）イーサネットトレーラ２０は、当該サーバ計算機４０Ａのインタフェース層１０１に渡される。インタフェース層１０１では、前記第１の実施形態におけるステップＳ１〜Ｓ３に相当するステップＳ１１〜Ｓ１３、またはステップＳ１，Ｓ２，Ｓ４に相当するステップＳ１１，Ｓ１２，Ｓ１４が実行される。
【００４８】
もし、ステップＳ１１〜Ｓ１３が実行された場合、フィルタドライバ４００は、インタフェース層１０１からイーサネットトレーラ２０中のＩＰトレーラ２３を受け取ることになる。この場合、フィルタドライバ４００は、フラグ４００ａ（Ｆ１），４００ｂ（Ｆ２）の状態を参照し、当該フラグＦ１，Ｆ２が全てｏｎ状態にあるか否かを判断する（ステップＳ１５）。
【００４９】
もし、フラグＦ１，Ｆ２が全てｏｎ状態にあるならば、フィルタドライバ４００は特別のフィルタリング動作を行わず、インタフェース層１０１から受け取ったＩＰトレーラ２３をそのままネットワーク層１０２に渡す（ステップＳ１６）。
【００５０】
したがって、ＩＰＳ１またはＩＰＳ２に一致する宛先ＩＰアドレス２４がＩＰトレーラ２３に設定されている場合には、そのＩＰトレーラ２３が同じサーバ計算機４０Ａ内のネットワーク層１０２に渡されることで、当該サーバ計算機４０ＡでのＩＰアドレスのテイクオーバが可能となる。
【００５１】
一方、フラグＦ１，Ｆ２の少なくとも一方がｏｆｆ状態にあるならば、フィルタドライバ４００は、以下に述べるフィルタリング動作を行う。
【００５２】
まずフィルタドライバ４００は、ｏｆｆ状態にあるフラグＦｉ（ｉは０または１の少なくとも一方）を検出する（ステップＳ１７）。次にフィルタドライバ４００は、インタフェース層１０１から渡されたＩＰトレーラ２３中の宛先ＩＰアドレス２４をチェックし、当該宛先ＩＰアドレス２４が、ステップＳ１７で検出したフラグＦｉに対応するＩＰアドレスＩＰＳｉに一致するか否かを判断する（ステップＳ１８，Ｓ１９）。
【００５３】
もし、ＩＰトレーラ２３中の宛先ＩＰアドレス２４がＩＰＳｉに一致するならば、つまりＩＰＳｉ宛てのＩＰトレーラ２３であるならば、フラグＦｉがｏｆｆの状態では自計算機１０ＡがＩＰアドレスＩＰＳｉのテイクオーバの対象外であることから、フィルタドライバ４００は当該ＩＰトレーラ２３を破棄する（ステップＳ２０）。したがって、フラグＦｉがｏｆｆ状態にあるサーバ計算機４０ＡにてＩＰアドレスＩＰＳｉのテイクオーバが行われるのが防止できる。
【００５４】
これに対し、ＩＰトレーラ２３中の宛先ＩＰアドレス２４がＩＰＳｉに一致しないならば、つまりＩＰＳｉ宛てのＩＰトレーラ２３でないならば、ＩＰアドレスＩＰＳｉのテイクオーバに関係ないことから、フラグＦｉがｏｆｆの状態であっても、フィルタドライバ４００は当該ＩＰトレーラ２３をネットワーク層１０２に渡す（ステップＳ１６）。
【００５５】
［第３の実施形態］
図６は本発明の第３の実施形態に係るクラスタシステムの構成を示すブロック図であり、図１と同一部分には同一符号を付してある。
【００５６】
図６において、例えばサーバ計算機６０Ａ，６０Ｂ及びクライアント計算機６０Ｃは、ネットワーク１１により結合されている。サーバ計算機６０Ａ，６０ＢはＴＣＰ／ＩＰのサーバプログラムを実行し、クライアントサーバ計算機６０ＣはＴＣＰ／ＩＰのクライアントプログラムを実行する。
【００５７】
サーバ計算機６０Ａ，６０Ｂには、それぞれ当該サーバ計算機６０Ａ，６０Ｂに固有のＩＰアドレスＩＰＡ，ＩＰＢ（１種類とは限らない）、及びＭＡＣアドレスＭＡＣＡ，ＭＡＣＢが設定されると共に、当該サーバ計算機６０Ａ，６０Ｂに共通のサービスを提供する（サーバ計算機を示す）ＩＰアドレスＩＰＳが設定される。
【００５８】
サーバ計算機６０Ａ，６０Ｂには、フィルタドライバ６００が実装されている。このフィルタドライバ６００は、ネットワークインタフェース１０８とネットワーク層１０２との間に位置している。本実施形態では、フィルタドライバ６００にインタフェース層の機能を持たせてある。このためサーバ計算機６０Ａ，６０Ｂには、前記第１及び第２の実施形態とは異なって、独立のインタフェース層は存在しない。そこで本実施形態では、ネットワーク１１からサーバ計算機６０Ａ，６０Ｂのネットワークインタフェース１０８で受信されたイーサネットトレーラ２０は、そのままフィルタドライバ６００に渡される構成を適用している。
【００５９】
フィルタドライバ６００の第１の特徴は、インタフェース層の機能を持ちながら、通常のインタフェース層（例えば図１中のインタフェース層１０１）と異なって、宛先ＭＡＣアドレスのチェックを行わない点にある。
【００６０】
フィルタドライバ６００の第２の特徴は、ネットワークインタフェース１０８で受信されたイーサネットトレーラ２０中のＩＰトレーラ２３に含まれている宛先ＩＰアドレスをチェックし、ＩＰＳで、且つ後述する判断装置６０１から「ｏｆｆ」が返された場合には、当該ＩＰトレーラ２３を破棄し、それ以外の場合には当該ＩＰトレーラ２３をネットワーク層１０２に渡すように構成されている点にある。
【００６１】
サーバ計算機６０Ａ，６０Ｂにはまた、判断装置６０１が実装されている。このサーバ計算機６０Ａ，６０Ｂ内の判断装置６０１は、受信イーサネットトレーラ２０中のＩＰトレーラ２３に含まれている宛先ＩＰアドレスがＩＰＳの場合にフィルタドライバ６００により起動され、ＩＰトレーラ２３中の送信元ＩＰアドレス２５に基づいて、自サーバ計算機６０Ａ，６０Ｂがサービスを提供すべきか否かを示す「ｏｎ」または「ｏｆｆ」のフラグ情報を当該フィルタドライバ６００に返すように構成されている。
【００６２】
ネットワーク層１０２、及び当該ネットワーク層１０２の上位層であるトランスポート層１０３は、通信ドライバ６０５により実現される。
【００６３】
次に、図６のシステムの動作を、クライアント計算機６０ＣからＩＰＳ宛てのイーサネットトレーラ２０がネットワーク１１上に送出された場合を例に、図７及び図８のフローチャートを参照して説明する。
【００６４】
まず、クライアント計算機６０Ｃからネットワーク１１上に、ＩＰトレーラ２３の宛先ＩＰアドレス２４がＩＰＳであるイーサネットトレーラ（通信パケット）２０、つまりＩＰＳ宛てのＩＰトレーラ２３を含むイーサネットトレーラ２０が送出されたものとする。このクライアント計算機６０Ｃからネットワーク１１上に送出されたイーサネットトレーラ２０は、当該ネットワーク１１に接続されている各計算機に導かれ、その計算機のネットワークインタフェースで受信される。例えば、サーバ計算機６０Ａ，６０Ｂに対しては、図６において符号６２で示す経路でクライアント計算機６０Ｃからのイーサネットトレーラ２０が導かれ、当該サーバ計算機６０Ａ，６０Ｂのネットワークインタフェース１０８で受信される。
【００６５】
サーバ計算機６０Ａ，６０Ｂのネットワークインタフェース１０８で受信された（クライアント計算機６０Ｃからの）イーサネットトレーラ２０は、そのままフィルタドライバ６００に渡される（ステップＳ２１）。
【００６６】
サーバ計算機６０Ａ，６０Ｂの各フィルタドライバ６００は、受け取ったイーサネットトレーラ２０のヘッダ部２２中の宛先ＭＡＣアドレス２１を（通常のインタフェース層とは異なって）チェックせず、宛先ＭＡＣアドレス２１（が自身のＭＡＣアドレスＭＡＣＡ，ＭＡＣＢに一致するか否か）に無関係に、当該イーサネットトレーラ２０からＩＰトレーラ２３を取り出す（ステップＳ２２）。
【００６７】
次にサーバ計算機６０Ａ，６０Ｂの各フィルタドライバ６００は、取り出したＩＰトレーラ２３中の宛先ＩＰアドレス２４をチェックし、当該宛先ＩＰアドレス２４がＩＰＳに一致するか否かを判断する（ステップＳ２３，Ｓ２４）。
【００６８】
もし、ＩＰトレーラ２３中の宛先ＩＰアドレス２４がＩＰＳに一致しないならば、つまりＩＰＳ宛てのＩＰトレーラ２３でないならば、フィルタドライバ６００は当該ＩＰトレーラ２３をネットワーク層１０２に渡して、このネットワーク層１０２での処理に任せる（ステップＳ６）。
【００６９】
一方、本実施形態のように、ＩＰトレーラ２３中の宛先ＩＰアドレス２４がＩＰＳに一致するならば、つまりＩＰＳ宛てのＩＰトレーラ２３であるならば、フィルタドライバ６００は当該ＩＰトレーラ２３を同じサーバ計算機６０Ａ，６０Ｂの判断装置６０１に渡して、その判断装置６０１から判断結果が渡されるのを待つ（ステップＳ２６）。
【００７０】
サーバ計算機６０Ａ，６０Ｂの各判断装置６０１は、フィルタドライバ６００から渡されたＩＰトレーラ２３中の送信元ＩＰアドレス２５をチェックし（ステップＳ３１Ａ，３１Ｂ）、当該ＩＰアドレスが奇数アドレス（ｏｄｄ）、或いは偶数アドレス（ｅｖｅｎ）のいずれであるかを判断する（ステップＳ３２Ａ，３２Ｂ）。この判断は、例えば上記ＩＰアドレスの最下位ビットが“１”、或いは“０”のいずれであるかを調べることにより行われる。
【００７１】
送信元ＩＰアドレス２５が奇数アドレスの場合、サーバ計算機６０Ａの判断装置６０１は「ｏｎ」のフラグ情報を、サーバ計算機６０Ｂの判断装置６０１は「ｏｆｆ」のフラグ情報を、それぞれ自計算機６０Ａ，６０Ｂのフィルタドライバ６００に判断結果として返す（ステップＳ３３Ａ，３３Ｂ）。
【００７２】
これに対し、送信元ＩＰアドレス２５が偶数アドレスの場合には、サーバ計算機６０Ａの判断装置６０１は「ｏｆｆ」のフラグ情報を、サーバ計算機６０Ｂの判断装置６０１は「ｏｎ」のフラグ情報を、それぞれ自計算機６０Ａ，６０Ｂのフィルタドライバ６００に判断結果として返す（ステップＳ３４Ａ，３４Ｂ）。
【００７３】
サーバ計算機６０Ａ，６０Ｂの各フィルタドライバ６００は、判断装置６０１から判断結果としてのフラグ情報が返されると、そのフラグ情報のｏｎ／ｏｆｆをチェックする（ステップＳ２７）。もし、フラグ情報（判断結果）が「ｏｎ」であるならば、フィルタドライバ６００は、ＩＰトレーラ２３を自計算機のネットワーク層１０２に渡す（ステップＳ２５）。これに対し、フラグ情報（判断結果）が「ｏｆｆ」であるならば、フィルタドライバ６００は、ＩＰトレーラ２３を破棄する（ステップＳ２８）。
【００７４】
以上により、クライアント計算機６０Ｃからのイーサネットトレーラ２０のＩＰトレーラ２３に含まれている送信元ＩＰアドレス２５、即ちクライアント計算機６０Ｃに設定されているＩＰアドレスが奇数アドレスである場合には、サーバ計算機６０Ａの判断装置６０１の判断結果は「ｏｎ」、サーバ計算機６０Ｂの判断装置６０１の判断結果は「ｏｆｆ」となることから、当該（クライアント計算機６０Ｃからの）ＩＰトレーラ２３はサーバ計算機６０Ａで処理され、クライアント計算機６０Ｃとサーバ計算機６０Ａとの間で通信が行われる。
【００７５】
これとは逆に、クライアント計算機６０Ｃからのイーサネットトレーラ２０のＩＰトレーラ２３に含まれている送信元ＩＰアドレス２５が偶数アドレスである場合には、サーバ計算機６０Ａの判断装置６０１の判断結果は「ｏｆｆ」、サーバ計算機６０Ｂの判断装置６０１の判断結果は「ｏｎ」となることから、当該（クライアント計算機６０Ｃからの）ＩＰトレーラ２３はサーバ計算機６０Ｂで処理され、クライアント計算機６０Ｃとサーバ計算機６０Ｂとの間で通信が行われる。
【００７６】
このように、サーバ計算機６０Ａ及び６０Ｂの両方にＩＰアドレスＩＰＳが設定されていたとしても、クライアント計算機６０ＣからのＩＰＳ宛ての（イーサネットトレーラ２０中の）ＩＰトレーラ２３は、いずれか１つのサーバ計算機でのみ処理され、その計算機とクライアント計算機６０Ｃとの間でのみ通信が行われる。つまり、サーバ計算機６０Ａ及び６０Ｂのいずれか１つの計算機のみが要求元のクライアント計算機６０Ｃにサービスを提供する。
【００７７】
したがって、クライアント計算機６０Ｃが複数存在し、各クライアント計算機６０Ｃに設定されているＩＰアドレスが偶数アドレス、奇数アドレスほぼ同数の場合には、全クライアント計算機６０Ｃの半数はサーバ計算機６０Ａからサービスの提供を受け、残りの半数はサーバ計算機６０Ｂからサービスの提供を受けることができ、負荷分散（ロードバランス）が図られる。
【００７８】
なお、サーバ計算機の数が３台以上の場合には、その数をＮとすると、ｉ番目（ｉ＝１〜Ｎ）のサーバ計算機では、ＩＰＳ宛てのイーサネットトレーラ２０の送信元ＩＰアドレス２５がＮ・ｎ＋（ｉ−１）（但し、ｎ＝０，１，２…）の場合に、判断装置６０１からフィルタドライバ６００に「ｏｎ」を返す構成とすることで、対処できる。
【００７９】
また、各サーバ計算機の能力が異なる場合には、その能力も加味することで、一層効率的な負荷分散を実現できる。例えば、図６のシステムのような２台のサーバ計算機６０Ａ，６０Ｂの場合に、サーバ計算機６０Ａと６０Ｂの能力の比が３：１であるものとすると、サーバ計算機６０Ｂでは、ＩＰアドレスが４の倍数（つまり、ＩＰアドレスの下位２ビットが“００”）であるクライアント計算機からのＩＰＳ宛てのイーサネットトレーラ２０を受信した場合だけ、サーバ計算機６０Ａでは、ＩＰアドレスが４の倍数以外であるクライアント計算機からのＩＰＳ宛てのイーサネットトレーラ２０を受信した場合だけ、それぞれ判断装置６０１からフィルタドライバ６００に「ｏｎ」を返す構成とすればよい。
【００８０】
以上の実施形態では、サービスを提供する（サーバ計算機を示す）ＩＰアドレスＩＰＳが設定されているサーバ計算機が複数存在する場合に、いずれのサーバ計算機がサービスを提供するかを、送信元（要求元）クライアント計算機に固有のＩＰアドレス（送信元ＩＰアドレス）に基づいて決定する場合について説明したが、これに限るものではない。例えば、送信元ＩＰアドレスに代えて、送信元（要求元）クライアント計算機に固有のＭＡＣアドレス、即ち送信元ＭＡＣアドレスを用いるようにしても構わない。必要ならば、図８のフローチャート中で「送信元ＩＰアドレス」を「送信元ＭＡＣアドレス」に置き換えられたい。
【００８１】
また、上記した送信元ＩＰアドレスまたは送信元ＭＡＣアドレスに基づくサービス提供サーバ計算機の決定方式は、いずれも送信元（要求元）クライアント計算機に基づく決定方式といえるが、これ以外の決定方式も適用可能である。
【００８２】
例えば、ＩＰＳ宛ての通信は、送信元ＩＰアドレスと、その通信により宛先ＩＰＳ（の示すサーバ計算機）からのサービスの提供を必要とする送信元クライアント計算機側のアプリケーション（アプリケーションプログラム）のプロセスに固有の送信元ポート番号により特定できる。そこで、サーバ計算機でＩＰＳ宛てのイーサネットトレーラ２０を受信した場合、ＩＰアドレスＩＰＳが設定されているサーバ計算機のうちのいずれが、当該クライアント計算機に対してサービスを提供する（当該クライアント計算機と通信を行う）かを、送信元（要求元）クライアント計算機に固有のＩＰアドレス（つまり送信元ＩＰアドレス）と送信元ポート番号とに基づいて決定することも可能である。この場合、同じクライアント計算機のアプリケーションの要求によるＩＰＳ宛ての通信でも、プロセスが異なれば、異なるサーバ計算機と通信が行われ、負荷分散が図れる。また、送信元ポート番号のみに基づいて決定することも可能である。
【００８３】
なお、送信元ＩＰアドレスと送信元ポート番号とに基づいてサービスを提供するサーバ計算機を簡単に決定するには、ＩＰＳが設定されているサーバ計算が上記実施形態のようにサーバ計算機６０Ａと６０Ｂの２台の例であれば、送信元ＩＰアドレスと送信元ポート番号との加算値が奇数或いは偶数のいずれであるかを判断すればよい。つまり、上記実施形態において送信元ＩＰアドレスの奇数／偶数を判断する代わりに、送信元ＩＰアドレスと送信元ポート番号との加算値の奇数／偶数を判断すればよい。
【００８４】
ところで、ＩＰＳが設定されている複数のサーバ計算機の負荷状態は変動する。そこで、クライアント計算機からのＩＰＳ宛てのイーサネットトレーラ２０を受信した場合に、これら複数のサーバ計算機間で通信を行って、当該クライアント計算機と通信するサーバ計算機を決定する構成とするならば、その時点で負荷の少ないサーバ計算機がサービスを提供することが可能となる。これについて、図６のシステムを例に説明する。
【００８５】
図６のシステムにおいて、サーバ計算機６０Ａ及び６０Ｂがクライアント計算機６０ＣからのＩＰＳ宛てのイーサネットトレーラ２０を受信したものとする。この場合、（図７中のステップＳ２６にて）フィルタドライバ６００により起動された各サーバ計算機６０Ａ，６０Ｂの判断装置６０１間で、図９に示すようにネットワーク１１を介して通信９０を行い、イーサネットトレーラ２０（中のＩＰトレーラ２３）をいずれが処理するか、即ちサーバ計算機６０Ａ及び６０Ｂのいずれが送信元クライアント計算機６０Ｃにサービスを提供するかを決定する。
【００８６】
サービスを提供すると決定したサーバ計算機の判断装置６０１は、フィルタドライバ６００に対して「ｏｎ」を返し、サービスを提供しないと決定したサーバ計算機の判断装置６０１は、フィルタドライバ６００に対して「ｏｆｆ」を返す。この状態は、例えばタイマ管理により、一定時間保持されるようにするとよい。
【００８７】
このようにして、サービスを提供するサーバ計算機を通信毎に動的に決定できる。
【００８８】
【発明の効果】
以上詳述したように本発明によれば、ネットワーク層の前段にフィルタドライバを実装することにより、クライアントアプリケーションの改造、更にはネームサービスサーバの設定を要することなく、ネットワークアドレスのテイクオーバが実現できる、
また本発明によれば、ネットワーク層の前段にフィルタドライバを実装することにより、専用のアプリケーション、或いは専用のハードウェア機構を用いることなく、レイヤー４スイッチを使用した場合と同様に負荷分散が実現できる
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るクラスタシステムの構成を示すブロック図。
【図２】イーサネットトレーラの概略フォーマット。
【図３】同実施形態における動作を説明するためのフローチャート。
【図４】本発明の第２の実施形態に係るクラスタシステムの構成を示すブロック図。
【図５】同実施形態における動作を説明するためのフローチャート。
【図６】本発明の第３の実施形態に係るクラスタシステムの構成を示すブロック図。
【図７】同実施形態における動作を説明するためのフローチャート。
【図８】同実施形態における動作を説明するためのフローチャート。
【図９】サーバ計算機６０Ａ，６０Ｂの判断装置６０１間の通信によりサービスを提供する計算機を決定する方法を説明するための図。
【符号の説明】
１０Ａ，１０Ｂ，４０Ａ，４０Ｂ，６０Ａ，６０Ｂ…サーバ計算機
１０Ｃ，４０Ｃ，６０Ｃ…クライアント計算機
１１…ネットワーク
１００，４００，６００…フィルタドライバ
１００ａ，４００ａ，４００ｂ…フラグ
１０１…インタフェース層
１０２…ネットワーク層
１０５，６０５…通信ドライバ
１０６…フラグ操作機構
１０７，４０７…フラグ操作コマンド
１０８…ネットワークインタフェース
６０１…判断装置
【図１】
0003872909.tif 000002
【図２】
0003872909.tif 000003
【図３】
0003872909.tif 000004
【図４】
0003872909.tif 000005
【図５】
0003872909.tif 000006
【図６】
0003872909.tif 000007
【図７】
0003872909.tif 000008
【図８】
0003872909.tif 000009
【図９】
0003872909.tif 000010