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