(57)【要約】【課題】複数のネットワークスイッチを用いたマルチパスネットワークシステムにおいて、ネットワークスイッチ間の通信負荷を低減すると共にスイッチの制御系コストを削減する。【解決手段】  通信可能に接続された第１及び第２ネットワークスイッチと、第１ネットワークスイッチを介して他の計算機のネットワークアダプタと通信する第１ネットワークアダプタ及び第２ネットワークスイッチを介して他の計算機のネットワークアダプタと通信する第２ネットワークアダプタを有する複数の計算機とからなる計算機システムで、各計算機が、他の計算機の第１及び第２ネットワークアダプタと、自計算機の第１及び第２ネットワークアダプタとの間での通信可能な経路情報を保持し、第１及び第２ネットワークスイッチ間での通信が無い通信経路を、他の計算機との通信経路として優先的に決定するようにする。更に、経路情報をブロードキャスト送信及びその応答により管理する。【選択図】図１Ａ
2014116645.tif 000002
【特許請求の範囲】
【請求項１】
通信可能に接続された少なくとも第１及び第２ネットワークスイッチと、
前記第１ネットワークスイッチを介して他の計算機のネットワークアダプタと通信する第１ネットワークアダプタ及び前記第２ネットワークスイッチを介して他の計算機のネットワークアダプタと通信する第２ネットワークアダプタを少なくとも有する複数の計算機とからなる計算機システムであって、
前記複数の計算機は、
前記他の計算機の第１及び第２ネットワークアダプタと、自計算機の第１及び第２ネットワークアダプタとの間での通信可能な経路情報を保持する記憶部と、
前記経路情報から、前記第１及び第２ネットワークスイッチ間での通信が無い通信経路を、前記他の計算機との通信経路として優先的に決定する制御部と
を有する計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記複数の計算機は、前記他の計算機に対するブロードキャスト送信の応答の内容から前記経路情報を生成する計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記他の計算機に対するブロードキャスト送信は、前記第１及び第２ネットワークアダプタの夫々から送信され、自計算機のアドレス、ネットワークアダプタのＭＡＣアドレス、ネットワークアダプタの接続先ネットワークスイッチの識別情報を含み、
該ブロードキャスト送信に対する応答は、前記他の計算機の第１及び第２ネットワークアダプタの夫々から応答送信され、該他の計算機の第１及び第２ネットワークアダプタのＭＡＣアドレス及び接続先ネットワークスイッチの識別情報を含む計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記他の計算機は、前記ブロードキャスト送信に含まれる前記自計算機のアドレス、自ネットワークアダプタのＭＡＣアドレス、自ネットワークアダプタの接続先ネットワークスイッチの識別情報を、前記他の計算機における経路情報として記憶部に記録する計算機システム。
【請求項５】
請求項３に記載の計算機システムであって、
前記他の計算機に対するブロードキャスト送信は、更に、送信先の計算機アドレスを含み、
前記ブロードキャスト送信を受信した前記他の計算機は、
前記送信先の計算機アドレスが、自計算機のアドレスである場合に、前記応答を送信する計算機システム。
【請求項６】
請求項５に記載の計算機システムであって、
前記他の計算機は、前記応答をブロードキャスト送信する計算機システム。
【請求項７】
請求項１に記載の計算機システムであって、
前記第１及び第２ネットワークスイッチは、Ｌ３（Ｌａｙｅｒ３）スイッチであり、
前記制御部は、更に、前記第１ネットワークアダプタから、前記第１ネットワークスイッチにＡＲＰ要求を送信し、
そのＡＲＰに対する応答の受信によって、第１ネットワークアダプタの通信経路の利用可否を判定し、
利用不可の場合に、前記第２ネットワークアダプタから、前記第２ネットワーックスイッチにＡＲＰ要求を送信し、そのＡＲＰに対する応答の受信によって、第２ネットワークアダプタが前記第２ネットワークスイッチを介した通信で利用する経路を決定し、
前記第２ネットワークアダプタが、前記第２ネットワークスイッチからＡＲＰ要求を受信した際、
前記決定した経路に含まれる自サーバのネットワークアダプタのＭＡＣアドレスを送信元ＭＡＣアドレスに記載したＡＲＰ応答を、前記第２ネットワークスイッチに応答する計算機システム。
【請求項８】
通信可能に接続された少なくとも第１及び第２ネットワークスイッチと、
前記第１ネットワークスイッチを介して他の計算機のネットワークアダプタと通信する第１ネットワークアダプタ及び前記第２ネットワークスイッチを介して他の計算機のネットワークアダプタと通信する第２ネットワークアダプタを少なくとも有する複数の計算機とからなる計算機システムの通信経路管理方法であって、
前記複数の計算機が、
前記他の計算機の第１及び第２ネットワークアダプタと、自計算機の第１及び第２ネットワークアダプタとの間での通信可能な経路情報を記憶するステップと、
前記経路情報から、前記第１及び第２ネットワークスイッチ間での通信が無い通信経路を、前記他の計算機との通信経路として優先的に決定するステップと
を含む通信経路管理方法。
【請求項９】
通信可能に接続された少なくとも第１及び第２ネットワークスイッチと、
前記第１ネットワークスイッチを介して他の計算機のネットワークアダプタと通信する第１ネットワークアダプタ及び前記第２ネットワークスイッチを介して他の計算機のネットワークアダプタと通信する第２ネットワークアダプタを少なくとも有する複数の計算機とからなる計算機システムの前記計算機に、
前記他の計算機の第１及び第２ネットワークアダプタと、自計算機の第１及び第２ネットワークアダプタとの間での通信可能な経路情報を記憶させる手順と、
前記経路情報から、前記第１及び第２ネットワークスイッチ間での通信が無い通信経路を、前記他の計算機との通信経路として優先的に決定させる手順と
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システム、通信経路管理方法及びプログラムに関し、特に、通信負荷の低減等する計算機システム、通信経路管理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、多数のサーバをネットワーク接続して大規模システムを構築し、大量のデータ処理を行うことが一般化している。特に、非特許文献１が開示するような大量データ処理向けの並列分散フレームワークの開発も、このような大規模システムの実現に貢献している。
【０００３】
非特許文献１は、所謂Ｍａｐ-Ｒｅｄｕｃｅに関する技術を開示する。Ｍａｐ-ｒｅｄｕｃｅは、複数の実行サーバ、分散ファイルシステムを提供する複数のデータサーバ及びそれらデータサーバに接続されるストレージ装置が通信可能に接続されてなるシステム構成等で一般に利用される。具体的には、
〔１〕分散ファイルシステム上のデータが各実行サーバに読み出され、レコード（行）単位で処理が実行され、レコード毎にｋｅｙ-ｖａｌｕｅ形式の別のレコードを結果として出力するＭａｐフェーズと、
〔２〕Ｍａｐフェーズが出力したレコードで同一ｋｅｙを持つものを同一サーバに集めるＳｈｕｆｆｌｅフェーズと、
〔３〕ｋｅｙ毎に集められたレコード群に対して処理が実行され、ｋｅｙもしくはレコード毎に別のレコードを結果として出力し、分散ファイルシステムに保存するＲｅｄｕｃｅフェーズと
から構成されるフレームワークである。
【０００４】
このように、Ｍａｐ-Ｒｅｄｕｃｅは、ＭａｐフェーズとＲｅｄｕｃｅフェーズにおいて、ユーザはレコード単位で実行される処理のみを記述するだけでよいという利点がある。ＭａｐフェーズとＲｅｄｕｃｅフェーズでの処理は、レコード単位で独立しているためにレコード毎に処理が並列実行されるようになっているが、並列実行の制御はフレームワークによって動的に行われるため、ユーザは、並列処理を意識しなくてもよいようになっている。
なお、分散ファイルシステムに格納されたデータは、分散ファイルシステムを構成する異なるサーバにその複製が作られ、障害耐性も確保されるようになっている。
【０００５】
このようなＭａｐ-Ｒｅｄｕｃｅ処理を実行するシステムでは、上述の〔１〕〜〔３〕の各フェーズにおいて、各サーバや装置間で大規模な通信が発生する。この通信の総スループットはサーバ等の台数に比例するものである。そこで、各実行サーバと各データサーバが行う処理を同一サーバ上で行うことで、〔１〕のＭａｐフェーズにおける、ネットワーク上のデータ転送量を削減することができる。しかしながら、〔２〕のＳｕｆｆｌｅフェーズは、本質的に通信が発生するものであるし、〔３〕のＲｅｄｕｃｅフェーズは、データの複製を作成するために通信が発生することから、システム全体の通信量制御は困難である。
【０００６】
したがって、大量データ処理を行う際にサーバ台数に比例した量の通信を適切に制御するには、システムの規模を拡大すると共にネットワーク帯域の向上も不可欠となる。よって、多くのサーバをネットワークで接続する方法として、ネットワークスイッチ（以下、「ＮＴスイッチ」という。）を多段に接続したツリー型のネットワーク構成が利用されることも多い。しかしながら、この方法では上位ネットワークスイッチに通信負荷が集中し、ボトルネックとなってしまうという問題が生ずる。
【０００７】
更に、ネットワーク帯域を向上させる他の技術として、例えば、非特許文献２が開示するものもある。所謂ＳＭＬＴ（Split Multi-link Trunking）に関する技術である。説明のために、図１５に、そのネットワーク構成を例示する。図１５のネットワーク構成は、複数のサーバＳＶ１０〜ＳＶｎの夫々が、複数のネットワークアダプタ（以下、「ＮＴアダプタ」という。）Ｅ１００〜Ｅｎ１１０を備え、ＮＴアダプタ毎に、異なるＮＴスイッチＳＷ１０又はＳＷ２０に接続され、更に、ＮＴスイッチ同士が通信可能に接続（以下、ＮＴスイッチ間を接続する経路を「スイッチ間パス」という。）された構成を有する。なお、ＮＴスイッチＳＷ１０及びＳＷ２０は、“Layer-2”のスイッチである。
【０００８】
各サーバＳＶ１０〜ＳＶｎがパケットを送信する際、Link-Aggregationのアルゴリズムによってパケット送信に利用するＮＴアダプタが決定される。例えば、通常運用時、サーバＳＶ２０から、ＮＴアダプタＥ２００を介して、サーバＳＶ１０にパケットが送信されるとする（実線矢印）。送信されるパケットは、図１５に示すように、ＮＴスイッチＳＷ１０及びＮＴアダプタＥ１００を経由してサーバＳＶ１に送信される（実線矢印）。
【０００９】
ＮＴアダプタＥ１００とＮＴアダプタＳＷ１０の間に障害が発生した場合、通信経路は、示すようにＥ２００、ＳＷ１０、ＳＷ２０、Ｅ１１０を経由してサーバＳＶ２０からサーバＳＶ１０にデータを転送するように変更される（破線矢印）。即ちサーバＳＶ２０は、サーバＳＶ１０とＮＴスイッチＳＷ１０間で発生した障害を検知できないため、障害発生前と同様にＮＴアダプタＥ２００からパケットを送信するので、スイッチ間パスを通ってパケットが転送されるようになる。
【００１０】
ネットワーク帯域を向上するための、他の更なる技術として、特許文献１が開示するものもある。この技術を適用するネットワークの構成例を図１６に示す。非特許文献２のネットワーク構成例（図１５）との違いはＮＴスイッチＳＷ１０とＳＷ２０の間が直接接続されていない点と、ＮＴスイッチＳＷ１０及びＳＷ２０の上位にＮＴスイッチＳＷ３０（Layer-3）を接続している点である。ＮＴスイッチＳＷ３０以下の構成を複数用意し、これらをトーラス状に接続することで大規模なネットワークを構築できる。
【００１１】
特許文献１の技術では、サーバ及びＮＴスイッチ間の接続に障害が発生した場合、スイッチ間パスを使用しないような経路に変更される点が非特許文献２の技術とは異なる。具体的には、通常運用時には、サーバＳＶ２０からサーバＳＶ１０へのパケットが、Ｅ２００、ＳＷ１０、Ｅ１００を経由して送信される（図１５に示した実線矢印と同様）。Ｅ１００とＳＷ１０間の接続に障害が発生した場合には、サーバＳＶ２０からサーバＳＶ１０へのパケットはＥ２１０、ＳＷ２０、Ｅ１１０を経由して転送されるように経路が変更されるようになっている（破線矢印）。
【００１２】
また、非特許文献３は、サーバが搭載する複数のＮＴアダプタをソフトウェア的に制御する技術を開示する。本文献には複数の制御方法が記載されているがこのうち、ｂａｌａｎｃｅ-ｔｌｂとｂａｌａｎｃｅ-ａｌｂが複数のＮＴスイッチを利用して帯域を向上することができ、例えば、上述の図１５に示すようなネットワーク構成で利用可能である。
【００１３】
ｂａｌａｎｃｅ-ｔｌｂによって、サーバがパケットを送信するときにＮＴアダプタの負荷が平準化されるように送信用ＮＴアダプタが選択される。ｂａｌａｎｃｅ-ａｌｂによって、パケット送信時だけではなく、パケット受信時にも、ＮＴアダプタの負荷平準化が行われる。具体的には、各ＮＴアダプタの受信データ量をモニタリングし、各ＮＴアダプタの受信負荷が均等化されるように受信ＮＴアダプタが制御される。パケット受信に利用するＮＴアダプタの選択は、サーバが他サーバからＡＲＰ要求を受信したときに、そのサーバからの受信処理で使用するＮＴアダプタのＭＡＣアドレスがＡＲＰ応答内の送信元ＭＡＣアドレスとして返信されることで実現されるようになっている。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００８−１１０８２号公報
【非特許文献】
【００１５】
【非特許文献１】Ｊｅｆｆｒｙ Ｄｅａｎｓ、Ｓａｎｊａｙ Ｇｈｅｍａｗａｔ“ＭａｐＲｅｄｕｃｅ：Ｓｉｍｐｌｉｆｉｅｄ Ｄａｔａ Ｐｒｏｃｅｓｓｉｎｇ ｏｎ Ｌａｒｇｅ Ｃｌｕｓｔｅｒｓ、２００４年１２月５日、ＵＳＥＮＩＸ Ａｓｓｏｃｉａｔｉｏｎ ＯＳＤＩ’０４：６ｔｈ  ６ｔｈ Ｓｙｍｐｏｓｉｕｍ ｏｎ Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ ａｎｄ Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  （http://static.usenix.org/event/osdi04/tech/full_papers/dean/dean.pdf）
【非特許文献２】Ｒｏｇｅｒ Ｌａｐｕｈ、“Ｓｐｌｉｔ  Ｍｕｌｔｉ-ｌｉｎｋ  Ｔｒｕｎｋｉｎｇ（ＳＭＬＴ） ｄｒａｆｔ−ｌａｐｕｈ−ｎｅｔｗｏｒｋ−ｓｍｌｔ−０８”、[online]、２００９年１月７日、[平成２４年９月２０日検索]、インターネット（http://tools.ietf.org/html/draft-lapuh-network-smlt-08）
【非特許文献３】Ｔｏｍａｓ Ｄａｖｉｓ、”Ｌｉｎｕｘ Ｅｔｈｅｒｎｅｔ Ｂｏｎｄｉｎｇ Ｄｒｉｖｅｒ ＨＯＷＴＯ“２０１１年４月２７日更新版、[online]、[平成２４年９月２０日検索]、（http://www.kernel.org/doc/Documentation/networking/bonding.txt）
【発明の概要】
【発明が解決しようとする課題】
【００１６】
非特許文献２の課題として、ネットワーク経路上で障害が発生すると、必ずスイッチ間パスを通る経路に変更されるため、複数経路上で障害が発生するとスイッチ間パスが通信のボトルネックになる可能性がある。また、このシステムを大規模化する方法として、図１７に示すように、図１５のように構成されるサブネットをトーラス状に相互接続することが考えられるが、このときサブネット間の通信ではスイッチ間パスを利用することになる。従って、ネットワーク経路上で障害が発生した場合、スイッチ間パスにネットワーク負荷がかかると、サブネット間通信で利用可能な帯域が減ってしまうという課題がある。
【００１７】
非特許文献２の技術の課題として、ネットワークトポロジを考慮しないため、スイッチ間パスを経由する通信が発生する頻度が高くなることが挙げられる。具体的には、通信経路をランダムに選ぶことになるため、通信の概ね半分がスイッチ間パスを経由することになる。
【００１８】
特許文献１の技術の課題として、耐障害性が低い点が挙げられる。例えば、図１５のようにＥ１００とＳＷ１０間で障害が発生するのに加えて、更にＥ２１０とＳＷ２０間に障害が発生した場合を考慮すると、サーバＳＶ１０とサーバＳＶ２０間の通信が不可能になる。
【００１９】
また、非特許文献２及び特許文献１の技術に共通する課題として、障害発生時のパケット転送経路の変更がＮＴスイッチによって制御されるようになっているため、専用機能を持つＮＴスイッチが必要となる。汎用性やコスト的な課題が生ずる。
【課題を解決するための手段】
【００２０】
上述の課題を解決するため、例えば、請求項１に記載の構成を適用する。即ち通信可能に接続された少なくとも第１及び第２ネットワークスイッチと、前記第１ネットワークスイッチを介して他の計算機のネットワークアダプタと通信する第１ネットワークアダプタ及び前記第２ネットワークスイッチを介して他の計算機のネットワークアダプタと通信する第２ネットワークアダプタを少なくとも有する複数の計算機とからなる計算機システムであって、前記複数の計算機は、前記他の計算機の第１及び第２ネットワークアダプタと、自計算機の第１及び第２ネットワークアダプタとの間での通信可能な経路情報を保持する記憶部と、前記経路情報から、前記第１及び第２ネットワークスイッチ間での通信が無い通信経路を、前記他の計算機との通信経路として優先的に決定する制御部とを有する計算機システムである。
【発明の効果】
【００２１】
本発明の一側面によれば、スイッチ間パスのトラフィックを低減ことができるとともに、システム構成する計算機間の通信において、より短い経路で通信することができる。更に、通信経路選択の制御を各計算機が実行するため、ネットワークスイッチの制御系を簡素化することができる。
本発明の他の課題及び効果は、以下の実施形態の内容から明らかになるであろう。
【図面の簡単な説明】
【００２２】
【図１Ａ】本発明を適用した一実施形態である計算機システムの経路選択の例を示す模式図である。
【図１Ｂ】本実施形態の経路選択の他の例を示す模式図である。
【図２】本実施形態における外部サブネットからの受信経路を示す模式図である。
【図３】本実施形態における計算機システムの構成を模式的に示すブロック図である。
【図４】本実施形態における稼動サーバ情報の一例を示す模式図である。
【図５】本実施形態におけるＮＴアダプタ情報の一例を示す模式図である。
【図６】本実施形態におけるルータ情報の一例を示す模式図である。
【図７】本実施形態におけるシングル経路情報の一例を示す模式図である。
【図８】本実施形態におけるＡＲＰ情報の一例を示す模式図である。
【図９】本実施形態におけるルーティング情報の一例を示す模式図である。
【図１０】本実施形態における設定ファイルの一例を示す模式図である。
【図１１】本実施形態における仮想ＮＩＣドライバの全体処理の一例を示すフロー図である。
【図１２】本実施形態におけるルータとの経路検出処理の一例を示すフロー図である。
【図１３】本実施形態におけるサーバ検出処理の一例を示すフロー図である。
【図１４】本実施形態におけるパケット受信処理のフロー図である。
【図１５】従来技術における経路選択の例を示す模式図である。
【図１６】従来技術における経路選択の他の例を示す模式図である。
【図１７】サブネットをトーラス状に接続するシステム例を示す模式図である。
【発明を実施するための形態】
【００２３】
以下、本発明を実施するための形態について、図面を用いて詳細に説明する。
図１Ａ、図１Ｂ及び図２に、本発明を適用した一実施形態である計算機システム１の経路選択の概要を示す。計算機システム１は、複数のＮＴアプタＥ１０〜Ｅｎ１を有するサーバＳＶ１〜ＳＶｎが、ＮＴアダプタ毎に異なるＬ３スイッチ（Layer-3で動作するＮＴスイッチ）ＳＷ１又はＳＷ２に接続され、更に、Ｌ３スイッチ同士の通信を可能とするスイッチ間パスを有する１つのサブネットを構成する。
【００２４】
システムの規模が小さくサブネットの数が１つでよい場合には、Ｌ３スイッチをＬ２スイッチ（Layer-2で動作するＮＴスイッチ）に変更した構成を適用すればよい。システムの規模を拡大したい場合には、ＮＴスイッチをＬ３スイッチとし、サブネット間をこのＬ３スイッチ同士で接続するネットワーク構成に対して本発明を適用することが可能である。例えば、図１７に示すように、サブネットのＮＴスイッチをトーラス状に接続した構成である。
例えば、前述したようなＭａｐ-Ｒｅｄｕｃｅ等を実施するために、並列分散システムを構成する場合、実行サーバやデータサーバをサブネット内のサーバとして必要なだけ配置すればよい。
【００２５】
サブネット間通信は従来のＬａｙｅｒ−３の機能を利用して通信するため、サブネット間を接続するネットワークトポロジはトーラスに限らず、ＦａｔＴｒｅｅ、メッシュ等種々のものを適用可能である。また、サブネット間のルーティング制御方法としてＯＳＰＦ(Open Shortest Path First)といったルーティング制御プロトコルが適用可能である。
【００２６】
図１Ａにおいて、通常運用時には、各サーバがパケットを相手サーバに転送する場合、Link-Aggregationのアルゴリズムによってパケット送信に利用するＮＴアダプタが選択される。つまり、自身のＩＰアドレスと宛先サーバのＩＰアドレスの組合せから、パケット送信に利用するＮＴアダプタを決定する。具体的には、サーバSV2からサーバSV1にパケットが送信されるとき、ＮＴアダプタＥ２０からパケットが送信され、Ｅ２０、ＳＷ１、Ｅ１０という経路でサーバＳＶ１に送られるようになっている。
【００２７】
これに対し、Ｅ１０とＳＷ１の間で障害が発生した場合には、サーバＳＶ２によってこの障害の発生が検知される。そして、通信経路がＥ２１、ＳＷ２、Ｅ１１のように変更され、サーバＳＶ１にパケットが送信されようになっている。上述の非特許文献２では、サーバＳＶ２０は、この障害発生を検知できないため、Ｅ２００からパケットを送信し、Ｅ２００、ＳＷ１０、ＳＷ２０、Ｅ１１０という経路を使用してパケットを送信するが（図１５参照）、計算システム１では、これよりも短い経路を選択することができる。
【００２８】
なお、図１Ｂに示すように、さらにＥ２１とＳＷ２の間で障害が発生した場合、サーバＳＶ２からサーバＳＶ１に至る経路はＥ２０、ＳＷ１、ＳＷ２、Ｅ１１という経路のみであるため、この経路を使用してパケットを送信するようになっている。
【００２９】
図２に、他のサブネットからサーバＳＶ１に対してパケットが送信された際の通常運用時及び経路障害時の様を示す。
他のサブネットからパケットを受信する場合、Ｌ３スイッチＳＷ１若しくはＳＷ２がパケットのルーティングを行うことになる。このときＬ３スイッチはなるべく最短経路を選択する。例えば、図２に示すように、Ｌ３スイッチＳＷ１が、他のサブネットからサーバＳＶ１宛てに送信されたパケットを受信した場合、ＳＷ１、Ｅ１０という経路を使用してパケットを転送するようになっている。
【００３０】
Ｌ３スイッチＳＷ１とＥ１０の間で障害が発生した場合、他のサブネットから送信されたパケットはＳＷ１、ＳＷ２、Ｅ１１を経由してサーバＳＶ１に転送されるようになっている。このとき、Ｌ３スイッチＳＷ１がLayer-3のルーティングを行い、パケットのＭＡＣアドレスを書き換え、ＮＴスイッチＳＷ２はLayer-2スイッチとして動作する。
【００３１】
他方、他のサブネットに対してパケット送信する場合、Ｌ３スイッチを介してパケットを送信するようになっており、計算機システム１は、同一サブネット内のＬ３スイッチへのパケット送受信についても制御を行うようになっている。
そして、Ｌ３スイッチＳＷ１とＥ１０の間で障害が発生した場合、Ｅ１０、ＳＷ２、ＳＷ１という経路を使用するようになっている。
【００３２】
同一サブネット内のＬ３スイッチＳＷ１、ＳＷ２はサブネット内において、それぞれ異なるアドレスを有しており、どちらのアドレスを持つＬ３スイッチにパケットを転送するかは、各サーバＳＶ１又はＳＶ２のルーティング機能によって決定する。この処理はサーバＳＶ１やＳＶ２に実装された既存のＯＳの機能を利用して実現するようになっている。
【００３３】
また、例えば、サーバＳＶ１からＬ３スイッチＳＷ１に到達できない場合は、Ｌ３スイッチＳＷ２を経由してパケットを送信することも考えられる。この場合には、サーバＳＶ１のルーティング設定変更と、Ｌ３スイッチ間のルーティング設定変更を行うことで実現することとなる。
【００３４】
上述したような種々の効率的な経路選択は、各サーバＳＶ１〜ＳＶｎが有する経路検出処理によって行うようになっている。より具体的には、各サーバが通信に関する宛先情報等が含まれたプローブパケットを送信し、これに対して他のサーバから返信されたプローブパケットを受信することで、通信可能な経路を管理することによって実現するようになっている。
【００３５】
なお、本実施形態において、計算機システム１では、上述のような処理動作を一般的なＮＴスイッチとサーバ上で稼働するソフトウェアによって実現する例を説明するものとするが、本発明は、その一部或いは全部をハードウェアとして実現することも可能である。
以上が、計算機システム１における経路選択の概要である。
【００３６】
以下、計算機システム１を構成するサーバＳＶについて詳細に説明する。
図３に、サーバＳＶ１の構成を示す。他のサーバＳＶｎも同様の構成を有する。サーバＳＶ１は汎用のサーバ装置であり、ＣＰＵ１、メモリ２、通信Ｉ/Ｆ３、ＮＩＣ４並びに５、ＳＴＧ-Ｉ/Ｆ６及び入出力装置７を有する。また、サーバＳＶ１は、外部ストレージ装置３０と通信可能に接続される。
【００３７】
通信Ｉ/Ｆ３は、Ｌ３スイッチＳＷ１に接続されるＮＩＣ４と、Ｌ３スイッチＳＷ２に接続されるＮＩＣ５とに接続される。ＳＴＧ-Ｉ/Ｆ６は、サーバＳＶ１の外部ストレージ装置と通信するためのＩ/Ｆである。外部ストレージ装置には、後述する設定ファイル３１が格納され、適宜サーバＳＶ１との間で読み出しや更新がされるようになっている。
【００３８】
サーバＳＶ１のメモリ２には、ＣＰＵ１とプログラムとの協働によって、仮想ＮＩＣドライバ１０と、ネットワーク処理部２０とが実現される。
【００３９】
仮想ＮＩＣドライバ１０では、サーバＳＶ１が有する複数のＮＴアダプタ４及び５を仮想的に1つのＮＴアダプタに見せるようになっている。なお、以下では、ＮＩＣ４にeth0と併記し、ＮＩＣ５にeth1と併記する場合がある。仮想ＮＩＣドライバ１０は、同一サブネット内で稼働する他のサーバとの通信状態を管理する稼働サーバ情報１０、自サーバが有するＮＴアダプタの情報を管理するＮＴアダプタ情報１２、同一サブネット内で稼働するＬ３スイッチＳＷ１及びＳＷ２との通信状態を管理するルータ情報１３、サーバＳＶ１等によるパケット制御に対応しないサーバがとり得るアドレスの範囲を管理するシングル経路情報１４を有する。
【００４０】
ネットワーク処理部２０は、ＯＳが提供するＬａｙｅｒ−３のパケット制御機能部であり、ＡＲＰ情報２１及びルーティング情報２２を有する。ネットワーク処理部２０は、仮想ＮＩＣドライバ１０の上位層の機能部として動作する。
【００４１】
図４に、稼働サーバ情報１０２の具体例を模式的に示す。稼動サーバ情報１１には、サーバのＩＰアドレス１１１、ＮＴアダプタのＭＡＣアドレス１１２、近接するＬ３スイッチを示すＳＷ１１３、通信相手サーバのＮＴアダプタ（eth0）の稼働を最後に確認した最終時刻であるＴｉｍｅ（eth0）１１４及び通信相手サーバのＮＴアダプタ（eth1）の稼働を確認した最終時刻Ｔｉｍｅ(eth1)１１５の各情報が含まれ、これらが対応付けて管理されるようになっている。同一サブネット内に存在するサーバが有するＮＴアダプタ毎に１エントリが登録され、各サーバとの通信状態が管理されるようになっている。
【００４２】
なお、Ｌ３スイッチの識別子は、システム全体で統一されたものである。本実施形態では、Ｌ３スイッチＳＷ１の識別子を「０」、ＳＷ２の識別子を「１」とするものとする。また、一般に利用されるEthernet（登録商標）のＭＡＣアドレスは６バイトであるが、本実施形態では、簡単の為に３バイトとして記載するものとする。
【００４３】
図５に、ＮＴアダプタ情報１２の具体例を模式的に示す。ＮＴアダプタ情報１２は、ＮＴアダプタの識別子であるＮＩＣ１２１、ＮＴアダプタのＭＡＣアドレス１２２及び近接するＬ３スイッチの識別子であるＳＷ情報１２３が含まれ、これらが対応付けて管理されるようになっている。ＮＴアダプタ情報１２に登録されたＮＴアダプタから、仮想ＮＴアダプタが生成される。従って、仮想ＮＴアダプタに参加させたくないＮＴアダプタは、ＮＴアダプタ情報１２に登録しないようにする。
【００４４】
また、ＮＴアダプタ情報１２には、自サーバが有するＮＴアダプタ毎に１エントリが登録される。図５は、一例としてサーバＳＶ１が有する２つのＮＴアダプタが登録されている様を示す。
【００４５】
図６に、ルータ情報１３の具体例を模式的に示す。ルータ情報１３で、サブネット内のＬ３スイッチ一覧が登録され、各Ｌ３スイッチとの通信状態が管理されるようになっている。ルータ情報１３には、Ｌ３スイッチのアドレスであるＳＷアドレス１３１、Ｌ３スイッチのＭＡＣアドレスであるＳＷ-ＭＡＣアドレス、Ｌ３スイッチを識別するＳＷ識別子１３３、自サーバのＮＩＣ４（eth0）とＬ３スイッチＳＷ１間の通信状態を示すＳｔａｔｕｓ(eth0)１３４、自サーバのＮＩＣ５（eth0）とＬ３スイッチ間の最終通信時刻を示すＴｉｍｅ(eth0)１３５、自サーバのＮＩＣ５（eth1）とＬ３スイッチ間の通信状態を示すＳｔａｔｕｓ(eth1)１３６、自サーバのＮＩＣ５（eth1）とＬ３スイッチ間の最終通信時刻Ｔｉｍｅ(eth1)１３７が含まれる。
【００４６】
図７に、シングル経路情報１０５の具体例を模式的に示す。ＮＩＣを1つしか備えず、サーバＳＶ１〜ｎによるパケット制御に対応しないサーバ（以下、「未対応サーバ」という。）は、Ｌ３スイッチＳＷ１若しくはＳＷ２と接続され、それを経由して、サーバＳＶ１〜ｎと通信することになる。そこで、本実施形態では、未対応サーバをＬ３スイッチに接続する際、その未対応サーバに予め決めておいた範囲のアドレスを設定することで、サーバＳＶ１〜ｎのパケット制御に対応したサーバと区別できるようになる。例えば、図７の最初のエントリは、Ｌ３スイッチＳＷ１（識別子＝「０」）に接続する未対応サーバは、「192.168.1.200〜192.168.1.219」の範囲のアドレスを設定することを示す。
【００４７】
図８に、ＡＲＰ情報１５の具体例を示す。ＡＲＰ情報１５は、ＯＳが、通信に利用するＮＩＣと、通信相手のアドレスとから通信相手のＭＡＣアドレスを決定するために利用される情報である。ＡＲＰ情報１５には、通信に利用する自サーバのＮＴアダプタを示すＮＩＣ１５１、通信相手のＩＰアドレス１５２、通信相手のＭＡＣアドレス１５３が含まれる。図８の例は、３エントリが登録されており、ＯＳからは仮想ＮＴアダプタが利用されることからＡＲＰ情報１５のＮＩＣ５３１には、仮想ＮＴアダプタの識別子である「veth0」が登録されている様を示す。
【００４８】
図９に、ルーティング情報１６の具体例を模式的に示す。ルーティング情報１６は、パケットを送信する際、ＯＳが、送信先アドレスに基づいて、利用するＮＴアダプタ（ＮＩＣ）を決定するために利用される。ルーティング情報１６には、パケット送信先のアドレス若しくはアドレス範囲を示す宛先アドレス１６１と、宛先が他サブネットのときに転送パケットが経由するＬ３スイッチのアドレスであるゲートウェイアドレス１６２と、パケット送信に使用するＮＩＣの識別子を示すＮＩＣ１６３が含まれる。
【００４９】
なお、ＯＳ層からのパケット送信は以下のように行われる。まず、ＯＳによって、ルーティング情報１６が参照され、パケットに記載されたアドレスに基づいて、利用するＮＴアダプタ（ＮＩＣ）が決定される。そして、ＮＴアダプタ（ＮＩＣ）と送信先アドレスに基づき、ＡＲＰ情報１５が参照され、送信先のＭＡＣアドレスが決定される。続いて、ＯＳによって、仮想ＮＴアダプタ「ｖｅｔｈ０」にパケット送信が要求されると、仮想ＮＩＣドライバ１０によって、実際にパケットを転送するＮＴアダプタ（ＮＩＣ）が決定されるようになっている。
【００５０】
ストレージ装置３０に保持された、設定ファイル３１は、上述の種々の情報に初期値を設定するために利用されるものである。システム起動時は、ＮＴアダプタ情報１２、ルータ情報１３及びシングル経路情報１４にエントリが登録されておらず、設定ファイル３１が読み込まれることによって初期値が登録されるようになっている。
【００５１】
図１０に、設定ファイル３１の具体例を模式的に示す。
設定ファイル３１の”virtual NIC and Switch“セクションには、仮想ＮＴアダプタの識別子と対応付けるＮＴアダプタの識別子の対応関係が記述されている。図の例では、ＮＩＣ４（eth0）と（eth1）とが、仮想ＮＴアダプタ(veth0)に対応する旨を示す。更に、図に示すように、設定ファイル３１では、ＮＩＣの識別子毎に、近接Ｌ３スイッチの識別子が記述されている（eth0(0)及びeth(1)の（0）及び(1)の部分。）。
なお、ＮＩＣの識別子から対応するＮＩＣのＭＡＣアドレスを求めることは、通常、ＯＳの機能として実装されている。これらの情報に基づき、ＮＴアダプタ情報１２に、エントリを追加するようになっている。
【００５２】
設定ファイル３１の”router”セクションには、Ｌ３スイッチのアドレス、Ｌ３スイッチのＭＡＣアドレス、Ｌ３スイッチの識別子が記述されている。これらの情報がルータ情報１３に設定されるようになっている。また、Ｌ３スイッチとの通信状態は不明であるため、ルータ情報１３のＳｔａｔｕｓ(eth0)１３４及びＳｔａｔｕｓ(eth1)１３６には「−」が設定される。
【００５３】
設定ファイル３１の“single path”セクションには、サーバＳＶ１〜ｎによるパケット制御に未対応のサーバがとり得るアドレスの範囲が記述されている。各エントリはアドレスの範囲と、未対応サーバを接続するＬ３スイッチの識別子とから構成される。この情報に基づき、シングル経路情報１４（図７）にエントリが追加されるようになっている。
稼働サーバ情報１１は、後述するように、他サーバからプローブパケットを受信することでエントリが追加されるようになっているため、各情報の初期化が終了した時点でも登録エントリ数に「０」が設定されている。
【００５４】
また、“virtual NIC and Switch”セクションと、“router”セクションとに記述されている情報に基づいて、ＡＲＰ情報１５（図８）に予めルータの情報が設定されるようになっている
“virtual NIC and Switch”セクションに記述されている情報は、仮想ＮＴアダプタの識別子を取得するために利用される。これによって、ＯＳからＬ３スイッチにＡＲＰ要求が送信されることがなくなることとなる。
以上が計算機システム１の構成である。
【００５５】
次に、計算機システム１の仮想ＮＩＣドライバ１０の動作を説明する。
先ず、図１１、１２及び１３に、仮想ＮＩＣドライバ１０が、「パケット送信処理」の流れを示す。
Ｓ１０１で、仮想ＮＩＣドライバ１０は、ＯＳからのパケット送信要求を受けると、当該パケットから送信先アドレスを取り出し、宛先のサーバがマルチパス非対応サーバであるか否かを判定する。
即ちパケットがＡＲＰ要求の場合、ターゲットＩＰアドレス(Target IP Address)が送信先アドレスとなるが、仮想ＮＩＣドライバ１０は、シングル経路１４を参照して、取り出した送信先アドレスが、開始アドレスと終了アドレスの範囲に含まれるエントリがあるか否かを判定する。
【００５６】
エントリが存在すると判断する場合、読み出した宛先のサーバは、本実施形態におけるマルチパス制御に非対応のサーバであることから、Ｓ１２５に進む。逆に、エントリが存在しないと判断する場合、読み出した宛先のサーバは、マルチパス制御に対応するサーバであることから、Ｓ１０３に進む。
【００５７】
Ｓ１０３で、仮想ＮＩＣドライバ１０は、ルータ情報１３を参照し、パケット送信先がＬ３スイッチであるかどうかを確認する。具体的には、パケットに含まれる送信先アドレスが、ルータ情報１３のアドレスに一致するエントリが存在するか否かを判定する。このようなエントリが存在したら、そのエントリに対応するＬ３スイッチがパケット送信先と決定し、Ｓ１０５の処理に進む。なお、パケットがＡＲＰ要求の場合、ターゲットIPアドレス(Target IP Address)が送信先アドレスとなる。
逆に、対応するＬ３スイッチが存在しないと判断する場合、Ｓ１０９の処理に進む。
【００５８】
Ｓ１０５で、仮想ＮＩＣドライバ１０は、Ｌ３スイッチへのパケット送信に利用するＮＴアダプタを決定する（「ルータとの経路検出処理」）。本処理の詳細は、図１２を用いて後述する。
【００５９】
Ｓ１０７で、仮想ＮＩＣドライバ１０は、パケットの送信元ＭＡＣアドレスを、Ｓ１０５で決定したＮＴアダプタのＭＡＣアドレスに書き換えて、パケットを送信し、本フローを抜ける。Ｌ３スイッチからＡＲＰ要求を受信した場合には、ＡＲＰ応答を返信する必要があるが、特にＡＲＰ応答の返信において、上記ＭＡＣアドレスの書換え処理が重要な役割を果たす。即ち経路長が長く優先順位が低い経路の情報を含むＡＲＰ応答を返すと、Ｌ３スイッチは自身のＡＲＰ情報にその情報を記録し、その後、その経路を使ってサーバにパケットを送信するようになるためである。
【００６０】
他方、Ｓ１０３において、パケット送信先アドレスがルーティング情報１６のアドレスに一致するエントリが見つからない場合の処理について説明する。
Ｓ１０５で、仮想ＮＩＣドライバ１０は、パケット送信先アドレスが稼働サーバ情報１１のアドレスに一致するエントリを検索し、Ｓ１１１で、そのようなエントリが存在するか否かを判定する。より具体的には、仮想ＮＩＣドライバ１０は、存在すると判定したエントリについて、更に対応するＴｉｍｅ(eth0)１１４若しくはＴｉｍｅ(eth1)１１５が一定時間内であるかを判定する。
【００６１】
条件を満たす場合には、そのエントリに対応するサーバがパケット送信先の候補として、Ｓ１１３に進む。逆に、パケット送信先アドレスが稼働サーバ情報１１のアドレスに一致するエントリが存在しない若しくは存在しても対応するＴｉｍｅ(eth0)１１４若しくはＴｉｍｅ(eth1)１１５が一定時間外である場合、Ｓ１２１の処理に進む。
【００６２】
Ｓ１１３で、仮想ＮＩＣドライバ１０は、パケットがＡＲＰ要求か否か判定する。ＡＲＰ要求である場合、Ｓ１１５に進み、ＡＲＰ要求でない場合、Ｓ１１７に進む。
【００６３】
Ｓ１１５で、仮想ＮＩＣドライバ１０は、ＡＰＲ要求のパケットは送信せずに、擬似的となるＡＲＰ応答を生成してＯＳに返信し、本フローを抜ける。即ち本実施形態の特徴の１つは、プローブパケットを利用したサーバ検出である。よって、ＡＲＰ要求を送信する必要がない。しかしながら、ＯＳを正常に動作させるためには、ＯＳがＡＲＰ応答を受信したように振る舞う必要があるので、仮想ＮＩＣドライバ１０が擬似的となるＡＲＰ応答を生成してＯＳに返すようになっている。このＡＲＰ応答には、送信元ＭＡＣアドレスとして、通信相手サーバのＮＴアダプタのＭＡＣアドレスを含めるようにする。
【００６４】
なお、稼働サーバ情報１１の各エントリは、通信相手サーバのＮＴアダプタ毎にエントリが生成されることから、障害発生等がなければ通信相手サーバのＭＡＣアドレスは複数存在する。この場合、ＡＲＰ応答の送信元ＭＡＣアドレスは、上記複数のＭＡＣアドレスうちのいずれでもよいが、ＡＲＰ情報１５の書き換えを少なくするため、複数のＭＡＣアドレスのうちで最小のものを採用し、なるべくＭＡＣアドレスの変更がないようにしてもよい。
【００６５】
他方、Ｓ１１７において、Ｓ１１３の判定でパケットがＡＲＰ要求でなかった場合、仮想ＮＩＣドライバ１０は、Ｓ１１１で見つけた稼働サーバ情報１１のエントリに登録された情報と、ＮＴアダプタ情報１２に記載された情報とに基づき、パケット送信に利用するＮＴアダプタを決定する。
ことのき、優先利用する経路の条件として、（１）経路長が短いこと、（２）経路長が同じ経路が複数存在する場に、なるべく同一経路を使い続けることを加味して最適経路を選択する。
【００６６】
（１）において、経路長が短いことを基準の一つとするのは、Ｌ３スイッチ間の回線を利用しないことを意味し、この経路を利用することでネットワーク負荷が低減するからである。また、（２）において、なるべく同一経路を使い続けるのは、パケットを送信する度に送信経路を変更するとパケットの到着順序が逆転し、通信効率が低下することを防止するためである。
【００６７】
例えば、パケット送信先のアドレスが192.168.1.11の場合、稼動サーバ情報１１には、上記アドレスに合致するエントリが２つある。各エントリは、通信相手サーバのＮＴアダプタに対応する。稼働サーバ情報１１のＴｉｍｅ(eth0)、Ｔｉｍｅ(eth1)は、自サーバのＮＴアダプタeth0、eth1と通信確認を行った時刻である。これが一定時間内であれば、通信可能とみなすことができる。この場合、通信相手サーバのＭＡＣアドレス「ab:cd:10」のＮＴアダプタ及び自サーバのeth0、eth1という組合せと、通信相手サーバのＭＡＣアドレス「ab:cd:11」のＮＴアダプタ及び自サーバのeth0、eth1の組合せとは全て通信可能であり、合計４通りの通信経路が存在する。
【００６８】
そして、これら通信経路の経路長は２種類存在する。1つはＬ３スイッチを１回だけ通過する最短経路であり、もう１つはＬ３経路を２回通過する迂回経路である。稼働サーバ情報１１に登録された上記エントリのＳＷ１１３を参照し、この値がＮＴアダプタ情報１２のＳＷ１２３に一致するような、ＮＴアダプタ情報１２上のエントリを検索する。稼動サーバ情報１１の１番目のエントリに対しては、ＮＴアダプタ情報１２の１番目のエントリが対応する。稼動サーバ情報１１の２番目のエントリに対しては、ＮＴアダプタ情報１２の２番目のエントリが対応する。
【００６９】
このようにして見つかったＮＴアダプタ情報１２のエントリのＮＩＣ１２１を識別子として持つＮＴアダプタが最短経路を構成する。具体的には、通信相手サーバのＭＡＣアドレス「ab:cd:10」のＮＴアダプタに対しては自サーバのeth0であり、通信相手サーバのＭＡＣアドレス「ab:cd:11」のＮＴアダプタに対しては、自サーバのeth1が最短経路を構成する。
実際に利用する経路は、最短経路を優先して使い、最短経路が存在しない場合には、迂回経路を利用するようになっている。この例の場合、最短経路が複数存在するので、最短経路のいずれかを利用する。どちらを利用するかは通信する両サーバのＩＰアドレスやＭＡＣアドレスに基づいて決定してもよい。
また、ＮＴアダプタの負荷に応じて動的に変更してもよいが、頻繁に経路変更が行われないように制御することが望ましい。最短経路が存在せず、迂回経路が複数存在する場合も同様である。
【００７０】
Ｓ１１７の処理では、仮想ＮＩＣドライバ１０は、ネットワーク障害等が発生した場合、最短経路が1つでも存在したら最短経路を利用し、迂回経路のみ利用可能な場合、図１Ａに示すような経路を利用することになる。
Ｓ１１０で、仮想ＮＩＣドライバ１０は、パケットの送信元ＭＡＣアドレスをそのＮＴアダプタのＭＡＣアドレスに書き換えて、パケットを送信する。
【００７１】
次に、Ｓ１１１で稼働サーバ情報１１にエントリが見つからなかった場合移行の処理を説明する。
Ｓ１２１で、仮想ＮＩＣドライバ１０は、「（通信相手）サーバの検出処理」を行う。この処理ではプローブパケットをサブネット内にブロードキャスト送信することで通信相手サーバと通信可能であることを確認する。通常、ＡＲＰはブローキャスト送信を利用するが、本実施形態では、プローブパケットのブロードキャスト送信において、通信経路を特定する点が、通常のＡＲＰと異なる特徴の１つである。処理の詳細については、図１３を用いて後述する。
なお、本実施形態では、パケット送信処理時にブロードキャストする例を用いるものとするが、一部又は全てのサーバが、定期的にブロードキャストする等、送信の契機は種々の構成が考えられる。
【００７２】
Ｓ１２３で、仮想ＮＩＣドライバ１０は、パケット送信先サーバと通信可能か否かを判定する。通信できない場合、仮想ＮＩＣドライバ１０は、ＯＳにエラーを返し、通信可能である場合、Ｓ１１３の処理に進む。
【００７３】
最後に、Ｓ１０１の判定において、送信先サーバがマルチパス非対応サーバである場合の処理を説明する。
Ｓ１２５で、ＮＩＣドライバ１０は、シングル経路情報１４を参照し、該当するエントリのＳＷ欄１４３に対応するＬ３スイッチを経路として決定する。ここで、仮想ＮＩＣドライバ１０は、このＬ３スイッチを経由してパケットを送信するが、最短経路は、このＬ３スイッチに直接接続されている自サーバのＮＴアダプタを経由する経路である。ＮＴアダプタ情報１２のＳＷ欄１１３が上記ＳＷの値に一致する、ＮＴアダプタ情報１２のエントリを検索し、そのエントリのＮＩＣ欄１１１の値を、最短経路を構成する自サーバのＮＴアダプタとして決定する。
【００７４】
なお、このＮＴアダプタに障害が発生せずパケット送信が可能であれば、仮想ＮＩＣドライバ１０は、このＮＴアダプタからパケットを送信する。もし障害が発生していた場合、ＮＴアダプタ情報１２に登録されている、他のＮＴアダプタからパケットを送信することとなる。
【００７５】
Ｓ１２７で、仮想ＮＩＣドライバ１０は、パケット送信元ＭＡＣアドレスを、送信処理に利用すると決定したＮＴアダプタのＭＡＣアドレスに書き換えて、パケットを送信する。
以上が、仮想ＮＩＣドライバ１０のパケット送信時の全体処理である。
【００７６】
次に、上述のＳ１０３における「ルータとの経路検出処理」の詳細を説明する。
図１２に、ルータとの経路検出処理の流れを示す。
Ｓ２０１において、仮想ＮＩＣドライバ１０は、Ｌ３スイッチへのパケット送信に利用するＮＴアダプタを決定するに際し、ルータ情報１３を参照し、最優先となるＮＴアダプタのＳｔａｔｕｓとＴｉｍｅを読み出す。
【００７７】
Ｌ３スイッチとの通信はＬ３スイッチと直接接続されているＮＴアダプタが最優先される。優先度が２番目以降は、最優先ＮＴアダプタを基準として、ＮＴアダプタの識別子に含まれる番号順になる。例えばＮＴアダプタがeth0〜eth2の３個存在し、最優先ＮＴアダプタがeth1の場合、eth1、eth2、eth0の順になる。このような優先順位にすることでＮＴアダプタの利用頻度を平均化することができる。
Ｌ３スイッチと直接接続されているＮＴアダプタは、ＮＴアダプタ情報１２を参照し、上で求めたＳＷ欄１２３の値と一致するＳＷ識別子を持つエントリを参照することで見つける。見つけたエントリのＮＩＣが、Ｌ３スイッチと直接接続されているＮＴアダプタである。図６に示すルータ情報１３の場合、ＳＷ識別子は「０」であるため、ＮＩＣはeth0である。
【００７８】
Ｓ２０３で、仮想ＮＩＣドライバ１０は、Ｓ３０１で読み出した最優先となるＮＴアダプタのＴｉｍｅが、一定時間経過しているか否かを判定し、一定時間経過している場合、Ｓ２０９に進み、経過していない場合、Ｓ２０５に進む。
【００７９】
Ｓ２０５で、仮想ＮＩＣドライバ１０は、Ｓ２０１で読み出した最優先となるＮＴアダプタのＳｔａｔｕｓが「Ｏｎｌｉｎｅ」であるか否かを判定する。「Ｏｎｌｉｎｅ」である場合、そのＮＴアダプタが、パケット送信に利用するＮＴアダプタとして決定し、本フローを抜ける。逆に、ＴｉｍｅＳｔａｔｕｓが「Ｏｆｆｌｉｎｅ」の場合は、Ｓ２０７の処理に進む。
【００８０】
Ｓ２０７で、仮想ＮＩＣドライバ１０は、Ｓ２０３及びＳ２０５で判定した状態以外の状態であるか否かを判断し、Ｓ２０３及びＳ２０５で判定した何れかの場合でない場合（S207：No）、Ｓ２０１に戻り、次の優先順位のＮＴアダプタの利用可否を調査する。逆に、Ｓ２０３及びＳ２０５の何れの判定した状態でない場合（S207：Yes）、通信状態は不明という状態であり、Ｓ２０９の処理に進む。
【００８１】
Ｓ２０９で、仮想ＮＩＣドライバ１０は、当該ＮＴアダプタからそのＬ３スイッチにＡＲＰ要求を送信する。ＡＲＰ要求に含まれる送信元ＭＡＣアドレスは、そのＮＴアダプタのＭＡＣアドレスになる。また、ＡＲＰ要求のターゲットアドレスは、Ｌ３スイッチのアドレスとする。
Ｓ２１１で、仮想ＮＩＣドライバ１０は、Ｌ３スイッチからＡＲＰ応答の受信可否を判定し、受信できた場合には、Ｓ２１３に進み、受信できなかった場合は、Ｓ２１５に進む。
【００８２】
Ｓ２１３で、仮想ＮＩＣドライバ１０は、ルータ情報１３の対応するエントリのＳｔａｔｕｓを「Ｏｎｌｉｎｅ」に、Ｔｉｍｅを現在時刻に更新し、フローを抜ける。
Ｓ２１５で、仮想ＮＩＣドライバ１０は、そのＬ３スイッチとは通信できないため、ルータ情報１３の対応するエントリのＳｔａｔｕｓを「Ｏｆｆｌｉｎｅ」に、Ｔｉｍｅを現在時刻に更新し、Ｓ２０１の処理に戻る。
以上が、「ルータとの経路検出処理」である。
【００８３】
次に、図１１のＳ１１１で述べた、「サーバの検出処理」について詳細に説明する。
図１３に、「通信相手サーバの検出処理」の処理の流れを示す。なお、本図では便宜上、プローブパケットを送信したサーバの仮想ＮＩＣドライバ１０のみではなく、そのプローブパケットを受信したサーバの受信側仮想ＮＩＣドライバの処理も表している。
【００８４】
Ｓ３０１で、送信側の仮想ＮＩＣドライバ１０は、ＮＴアダプタ情報１２に登録された全てのＮＴアダプタから、プローブパケットをブロードキャスト送信する。プローブパケットには、自サーバのアドレス、送信元ＮＴアダプタのＭＡＣアドレス、ＮＴアダプタが接続されているＬ３スイッチの識別子、通信相手サーバのＩＰアドレスを含む。
【００８５】
ＭＡＣアドレスと接続されているＬ３スイッチの識別子は、ＮＴアダプタ情報１２から取得する。各プローブパケットはブロードキャスト送信されるため、Ｌ３スイッチ間の回線を通って、サブネット内の全てのサーバの全てのＮＴアダプタに向けて送信される。
【００８６】
Ｓ４０１で、受信側の仮想ＮＩＣドライバは、ブロードキャスト送信されたプローブパケットを受信する。
そして、Ｓ４０３で、プローブパケットを受信した受信側仮想ＮＩＣドライバは、プローブパケットのエントリ内容を稼動サーバ情報１１に登録する。即ち稼働サーバ情報１１のＩＰアドレス欄１１１、ＭＡＣアドレス欄１１２及びＳＷ識別子欄１１３に、受信したプローブパケットに含まれるサーバのＩＰアドレス、ＭＡＣアドレス、Ｌ３スイッチの識別子が登録される。
なお、稼動サーバ情報１１上に、既に受信したプローブパケットのエントリが有る場合、対応するＴｉｍｅ(eth0)欄１１４、Ｔｉｍｅ(eth1)欄１１５の時刻情報が更新される。自サーバのＮＴアダプタethi(i=0,1)から受信した場合には、Ｔｉｍｅ(ethi)(i=0,1)を現在時刻に更新する。
【００８７】
Ｓ４０５で、受信側仮想ＮＩＣドライバは、プローブパケットに含まれる送信元のＩＰアドレスが、自サーバのＩＰアドレスと同一か否かを判定する。同一の場合（S405:Yes）、Ｓ４０７に進み、異なる場合（S405：No）は、フローを抜ける。
【００８８】
Ｓ４０７で、受信側仮想ＮＩＣドライバは、返信用のプローブパケットをブロードキャスト送信する。この時、返信用のプローブパケットには、通信相手先サーバのアドレスを含めないようになっている。このようにプローブパケットに通信相手サーバのアドレスが含まれているかどうかで、そもそものプローブパケットの送信元である仮想ＮＩＣドライバ１０が、そのプローブパケットが最初に送信されたものなのか、先に送信したプローブパケットに対して返信されたものなのかを区別できるようにするためである。また、返信としてブロードキャスト送信されたプローブパケットに対する返信は行わないことで、無制限にパケットが送信され続けることを抑止する目的もある。
【００８９】
他方、Ｓ３０３で、仮想ＮＩＣドライバ１０は、他のサーバにブロードキャスト送信したプローブパケットに対する応答を検出するまで一定時間待機する（S303:No）。受信した場合（S303：Yes）、Ｓ３０５に進み、一定期間経過しても受信しない場合、エラーとし、処理を抜けるようになっている。
【００９０】
Ｓ３０５で、仮想ＮＩＣドライバ１０は、他のサーバからの返信として受信したプローブパケットに含まれる、返信元サーバのＩＰアドレス、ＭＡＣアドレス及びＬ３スイッチの識別子を、稼働サーバ情報１１に登録する処理を行う。この処理によって、仮想ＮＩＣドライバ１０は、障害等の発生していない通信可能な経路を管理することができる。
【００９１】
返信されるプローブパケットもブロードキャスト送信されているため、仮想ＮＩＣドライバ１０は、全てのネットワーク経路の利用可否をチェックできることになる。なお、返信されるプローブパケットは、サブネット内のすべてのサーバに届けられるため、他のサーバも返信されるプローブパケットを読み取り、稼働サーバ情報１１の更新を行う。
以上が、「サーバ検出処理」である。なお、本「サーバ検出処理」は、Ｓ１１１（図１１）のタイミングで処理が発生するようになっているが、本例に限らず、定期的に処理を行うようにしてもよい。
【００９２】
最後に、図１１〜１３に示す処理によって通信可能な経路が管理された計算機システム１において、仮想ＮＩＣドライバ１０がパケットデータを受信する際の処理を説明する。
図１４に、パケットデータ受信処理の流れを示す。
Ｓ５０１において、仮想ＮＩＣドライバ１０は、受信したバケットデータが、プロードキャスト送信であるか否かを判定する。ブロードキャスト送信でない場合（S501:No／例えば、ユニキャストやマルチキャストのように、自サーバが特定の送信先として指定されている場合）、Ｓ５０３に進み、仮想ＮＩＣドライバ１０は、受信したパケットをＯＳに渡す。
【００９３】
逆に、Ｓ５０１においてブロードキャスト送信によるパケットである場合（S501:Yes）、仮想ＮＩＣドライバ１０は、Ｓ５０５に進み、そのパケットが、受信用ＮＴアダプタが受信したパケットであるか否かの判定を行う。
【００９４】
ブロードキャストパケットは、自サーバの全てのＮＴアダプタが受信することから、受信したブロードキャストパケットを、全てのＮＴアダプタがＯＳに渡すと、ＯＳは同一のブロードキャストパケットを複数回受信したものとみなしてしまう。
【００９５】
そこで、本実施例では、サーバ毎に、ブロードキャストパケットの受信に利用するＮＴアダプタを予め設定しておき、それ以外のＮＴアダプタが受信したブロードキャストパケットは廃棄するようになっている。例えば、ＮＴアダプタ情報１２に登録されたＮＴアダプタのうち、障害が発生していないものの中で、ＳＷ識別子１１３の値が最小であるＮＴアダプタが受信したパケットのみをＯＳに渡すようになっている。
【００９６】
仮想ＮＩＣドライバ１０は、受信用ＮＴアダプタが受信したパケットであると判定する場合（S505：Yes）、Ｓ５０４に進み、パケットをＯＳに渡し、受信用ＮＴアダプタ以外のアダプタが受信したパケットであると判定する場合（S505:No）、Ｓ５０７に進み、パケットを破棄する。
以上が、パケット受信時の処理の流れである。
【００９７】
このように計算機システム１によれば、スイッチ間パスの通信負荷を軽減すると共にネットワークスイッチの制御系コストを削減することができる。
また、各サーバが動的に、利用可能な経路を検出することで、経路障害等及び代替経路の管理を各サーバが実行するため、障害耐性が向上する。特に、Ｍａｐ-Ｒｅｄｕｃｅを利用した大規模システムの場合、これを構成する複数のサーバ間の通信も多く、通信経路の管理は処理時間に大きく影響する。計算機システム１では、各サーバが経路を管理するため他のサーバへのデータ送信時に、利用可能な最短経路を選択することから、データ送信後に不通経路によって障害を検知する方法よりもより処理時間の高速化に寄与することが期待できる。
【００９８】
なお、本発明は上述の種々の例に限定されるものではなく、その趣旨を逸脱しない範囲で種々の構成を適用することができる。
【００９９】
例えば、計算機システム１では、各サーバがＬ３スイッチの台数分のネットワークアダプタを有し、夫々が各Ｌ３スイッチに接続されている構成としているが、全てのサーバがＬ３スイッチの台数分のネットワークアダプタを備える必要はない。即ちネットワークアダプタの数が少ないサーバは、常に障害が発生しているとみなされるが、システムの動作に支障はない。
【０１００】
また、計算機システム１では、サブネット内のＬ３スイッチを２台とするが、Ｌ３スイッチの台数はこれ以上でもよい。なお、このときは、サブネット内のＬ３スイッチはＬ２的に相互に接続するとよい。
【０１０１】
また、計算機システム１では、各サーバがＬ３スイッチに直接接続していたが、Ｌ３スイッチとサーバが別のＬ２スイッチを介して接続される構成でもよい。即ちこのような構成であっても、Ｌａｙｅｒ３のネットワークトポロジは同一であるため、サーバは、最近接のＬ３スイッチとそれ以外のＬ３スイッチを一意に区別できるからである。
【０１０２】
なお、計算機システム１の各機能部を構成するソフトウェアは、種々の電気、磁気的方式を利用した非一時的記録媒体に記録可能であることはいうまでもない。また、ネットワークを介してこれらソフトウェアをサーバ等にダウンロードし、インストールすることも当然可能である。
【符号の説明】
【０１０３】
ＳＶ１〜ＳＶｎ・・・サーバ、ＳＷ１・ＳＷ２・・・ＮＴスイッチ、４・５・・・ＮＩＣ、１０・・・  仮想ＮＩＣドライバ、１１・・・  稼働サーバ情報、１２・・・ＮＴアダプタ情報、１３・・・ルータ情報、１４・・・シングル経路情報、２０・・・ネットワーク処理部、２１・・・ＡＲＰ情報、２２・・・ルーティング情報、３１・・・設定ファイル
【図１Ａ】
2014116645.tif 000003
【図１Ｂ】
2014116645.tif 000004
【図２】
2014116645.tif 000005
【図３】
2014116645.tif 000006
【図４】
2014116645.tif 000007
【図５】
2014116645.tif 000008
【図６】
2014116645.tif 000009
【図７】
2014116645.tif 000010
【図８】
2014116645.tif 000011
【図９】
2014116645.tif 000012
【図１０】
2014116645.tif 000013
【図１１】
2014116645.tif 000014
【図１２】
2014116645.tif 000015
【図１３】
2014116645.tif 000016
【図１４】
2014116645.tif 000017
【図１５】
2014116645.tif 000018
【図１６】
2014116645.tif 000019
【図１７】
2014116645.tif 000020