(57)【特許請求の範囲】
【請求項１】
コントローラと、
複数のネットワークを介して他のスイッチに接続され、前記コントローラによって設定されたフローエントリに従って、受信パケットの中継処理を行うスイッチと、
を具備し、
前記スイッチは、前記複数のネットワークのそれぞれを介して前記他のスイッチに検査用データを転送して、前記複数のネットワークのそれぞれの転送性能を取得し、前記転送性能を前記複数のネットワークのそれぞれに対応付けて前記コントローラに通知し、
前記コントローラは、前記複数のネットワークのうち、前記転送性能が所定の閾値以上のネットワークを前記他のスイッチへの転送経路として規定したフローエントリを、前記スイッチのフローテーブルに設定し、
前記コントローラは、前記スイッチから送信された転送性能に基づいて許容転送速度を算出し、転送性能が前記許容転送速度以上のネットワークを前記スイッチが利用するネットワークとして、前記スイッチのフローテーブルに設定する
コンピュータシステム。
【請求項２】
請求項１に記載のコンピュータシステムにおいて、
前記スイッチは、前記コントローラによって定期的に行われる前記転送性能の取得指示に応じて、前記転送性能の取得及び通知を行う
コンピュータシステム。
【請求項３】
請求項１又は２に記載のコンピュータシステムにおいて、
前記コントローラは、前記転送性能に基づいた前記スイッチに対するフローエントリの設定を定期的に行う
コンピュータシステム。
【請求項４】
請求項１〜３のいずれか一項に記載のコンピュータシステムにおいて、
前記コントローラは、転送性能が前記許容転送速度以上のネットワークのうち、転送性能が上位のネットワークから、前記スイッチが利用可能な最大ネットワーク数以下のネットワークを、前記スイッチが利用するネットワークとして決定する
コンピュータシステム。
【請求項５】
請求項１から４のいずれか１項に記載のコンピュータシステムで利用されるコントローラ。
【請求項６】
請求項１から４のいずれか１項に記載のコンピュータシステムで利用されるスイッチ。
【請求項７】
コントローラと、
複数のネットワークを介して他のスイッチに接続され、前記コントローラによって設定されたフローエントリに従って、受信パケットの中継処理を行うスイッチと、
を具備するコンピュータシステムにおいて実行される通信方法であって、
前記スイッチが、複数のネットワークのそれぞれを介して他のスイッチに検査用データを転送して、前記複数のネットワークのそれぞれの転送性能を取得するステップと、
前記転送性能を前記複数のネットワークのそれぞれに対応付けて前記コントローラに通知するステップと、
前記コントローラが、前記複数のネットワークのうち、前記転送性能が所定の閾値以上のネットワークを前記他のスイッチへの転送経路として規定したフローエントリを、前記スイッチのフローテーブルに設定するステップと、
前記コントローラが、前記スイッチから送信された転送性能に基づいて許容転送速度を算出し、転送性能が前記許容転送速度以上のネットワークを前記スイッチが利用するネットワークとして、前記スイッチのフローテーブルに設定するステップと
を具備する
通信方法。
【請求項８】
スイッチに接続された複数のネットワークのそれぞれの転送性能を前記スイッチから取得するステップと、
前記スイッチは、受信パケットをフローテーブルで規定されたネットワークに転送し、
転送性能が閾値以上のネットワークを転送経路として規定したフローエントリを、前記スイッチの前記フローテーブルに設定するステップと、
前記スイッチから送信された転送性能に基づいて許容転送速度を算出し、転送性能が前記許容転送速度以上のネットワークを前記スイッチが利用するネットワークとして、前記スイッチのフローテーブルに設定するステップと
をコンピュータに実行させるネットワーク管理プログラムが格納された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、及び通信方法に関し、特に、オープンフロー（オープンフロー）技術を利用したコンピュータシステム、及びその通信方法に関する。
【背景技術】
【０００２】
複数のネットワークによって冗長化されたコンピュータシステムは、障害が発生したときに代替ネットワークによって運用することができるため、高い可用性を有する。又、平常運用時についても複数のネットワークから通信に使用するものを選択することによって、負荷分散を実現し通信の高速化が可能になる。【０００３】
システム内で効率よく通信をするためには、できるだけ性能の高いネットワークを優先的に使用する必要がある。例えば、通信回線の性能情報に基づいて使用経路を決定することで通信効率を高めることができる。【０００４】
性能情報に基づいて使用経路を決定するシステムが、例えば特開２００７−１８９６１５に記載されている（特許文献１参照）。特許文献１に記載のシステムは、ネットワーク負荷に基づいて経路を算出することにより、効率の良い通信路を設定する。【０００５】
特許文献１に記載のネットワーク監視支援装置は、ネットワーク機器を監視して、障害を検出するとともに障害の影響範囲を解析し、当該影響範囲を回避する通信経路を算出する。この際、ネットワーク監視支援装置は、トラフィックの利用状況及びＣＰＵ利用率等のネットワークの負荷に基づいて経路を算出する。【０００６】
特許文献１に記載のシステムでは、障害による影響範囲を回避しつつ、トラフィックの利用状況に基づいて使用経路を設定している。このため、障害を回避しながらトラフィック利用率の低い経路を選択することができる。しかしながら、運用されていない経路は、トラフィックが発生していないため、使用経路として選択され得るが、選択された経路が必ずしも転送性能の良い経路とは限らない。このため、特許文献１に記載のシステムでは、ネットワーク全体に障害が発生したときの即時対応については考慮されていない。【０００７】
又、計算機システムの一例が、特開２０００−３４８００５（特許文献２参照）や特開２００７−２８７０６４（特許文献３参照）に記載されている。特許文献２や特許文献３には、複数経路を持つストレージシステムについて、負荷状況や障害発生状況に応じて、動的に使用パスを切り替え、可用性の向上や、性能の向上を実現するシステムが記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−１８９６１５
【特許文献２】特開２０００−３４８００５
【特許文献３】特開２００７−２８７０６４
【非特許文献】
【０００９】
【非特許文献１】ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．０．０  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０１）  Ｄｅｃｅｍｂｅｒ  ３１，  ２００９
【発明の概要】
【００１０】
しかし、特許文献２、３の記載のシステムでは、使用する経路が予め設定されているため、平常状態で優先的に使用する経路を自動的に決定することができない。又、動的な構成変更が発生した場合の動作を想定していないため、パス障害が発生したときや、動的な構成変更が発生したときに、使用経路を決定することができない。更に、特許文献２、３の計算機システムはストレージシステムを対象としているため、ＦＣｏＥ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ（登録商標））など、同一ネットワーク上にＩ／Ｏが混在するような場合について考慮されていない。
【００１１】
以上のことから、本発明の目的は、複数のネットワーク間において、より高性能なネットワークへの通信が可能なネットワークシステムを提供することにある。
【００１２】
本発明によるコンピュータシステムは、コントローラと、複数のネットワークを介して他のスイッチに接続され、前記コントローラによって設定されたフローエントリに従って、受信パケットの中継処理を行うスイッチとを具備する。スイッチは、複数のネットワークのそれぞれを介して他のスイッチに検査用データを転送して、複数のネットワークのそれぞれの転送性能を取得する。又、スイッチは、転送性能を複数のネットワークのそれぞれに対応付けてコントローラに通知する。コントローラは、複数のネットワークのうち、転送性能が所定の閾値以上のネットワークを他のスイッチへの転送経路として規定したフローエントリを、スイッチのフローテーブルに設定する。
【００１３】
本発明による通信方法は、複数のネットワークを介して他のスイッチに接続され、コントローラによって設定されたフローエントリに従って、受信パケットの中継処理を行うスイッチを具備するコンピュータシステムにおいて実行される。本発明による通信方法は、スイッチが、複数のネットワークのそれぞれを介して他のスイッチに検査用データを転送して、複数のネットワークのそれぞれの転送性能を取得するステップと、転送性能を複数のネットワークのそれぞれに対応付けてコントローラに通知するステップと、コントローラが、複数のネットワークのうち、転送性能が所定の閾値以上のネットワークを他のスイッチへの転送経路として規定したフローエントリを、スイッチのフローテーブルに設定するステップとを具備する。
【００１４】
本発明によれば、複数のネットワーク間において、より高性能なネットワークへの通信することが可能となる。
【図面の簡単な説明】
【００１５】
上記発明の目的、効果、特徴は、添付される図面と連携して実施の形態の記述から、より明らかになる。
【図１】図１は、本発明によるコンピュータシステムの実施の形態における構成の一例を示す図である。
【図２】図２は、本発明に係るネットワーク情報テーブルの構造を示す図である。
【図３】図３は、本発明に係るネットワークフローテーブルの構造を示す図である。
【図４】図４は、本発明に係るスイッチ情報テーブルの構造を示す図である。
【図５】図５は、本発明に係る負荷分散情報の構成を示す図である。
【図６】図６は、本発明に係るフローテーブルの構造を示す図である。
【図７】図７は、本発明によるコンピュータシステムの実施の形態における構成の他の一例を示す図である。
【図８】図８は、本発明に係るスイッチにおける接続変更時の初期設定動作を示すフローチャートである。
【図９】図９は、本発明に係るコントローラにおける接続変更時の設定動作を示すフローチャートである。
【図１０】図１０は、本発明に係るネットワーク情報テーブルの一例を示す図である。
【図１１】図１１は、本発明に係るスイッチ情報テーブルの一例（設定前）を示す図である。
【図１２】図１２は、本発明に係るスイッチ情報テーブル設定（更新）動作を示すフローチャートである。
【図１３】図１３は、本発明に係るスイッチ情報テーブルの他の一例（設定後）を示す図である。
【図１４】図１４は、本発明に係るネットワーク情報テーブルの設定（更新）動作を示すフローチャートである。
【図１５】図１５は、本発明に係るネットワーク情報テーブルの一例を示す図である。
【図１６】図１６は、本発明に係るネットワークフローテーブル及びフローテーブルの設定（更新）動作を示すフローチャートである。
【図１７】図１７は、本発明に係る負荷分散情報の一例を示す図である。
【図１８】図１８は、本発明に係る送信元スイッチビュー又はスイッチ間経路ビューの一例を示す図である。
【図１９】図１９は、本発明に係るネットワーク情報テーブルの更に他の一例を示す図である。
【図２０】図２０は、本発明に係るネットワークフローテーブルの一例を示す図である。
【図２１】図２１は、本発明に係るフローテーブルの一例を示す図である。
【図２２】図２２は、本発明によるコンピュータシステムの実施の形態における構成の更に他の一例を示す図である。
【発明を実施するための形態】
【００１６】
（概要）
本発明によるコントローラは、スイッチにおいて測定されたネットワークの転送性能（例えば転送速度）を取得し、取得した転送性能と負荷分散ポリシに基づいて、通信に利用するネットワークを自動選択する。通信に利用するネットワークを指定したフローエントリは、オープンフロープロトコルに従ってスイッチに設定される。これにより複数の通信ネットワークから転送性能の良好なネットワークを、通信経路として自動選択することが可能となる。又、コントローラは、定期的にネットワークの転送性能の取得及びスイッチへの最適経路（最適フロー）の設定を行う。これにより、構成が動的に変更されるネットワークにおいても、最適な経路を利用した通信に自動変更され得る。
【００１７】
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示す。
【００１８】
（コンピュータシステムの構成）
図１を参照して、本発明によるコンピュータシステムの構成を説明する。図１は、本発明によるコンピュータシステムの実施の形態における構成を示す図である。本発明によるコンピュータシステムは、オープンフローを利用して通信経路の構築及びパケットデータの転送制御を行う。図１を参照して、本発明によるコンピュータシステムは、オープンフローコントローラ１００（以下、コントローラ１００と称す）、複数のオープンフロースイッチ２００−１、２００−２（以下、スイッチ２００−１、２００−２と称す）、ネットワーク３００−１、３００−２、複数のクライアント端末４００−１、４００−２（以下、コンピュータ４００−１、４００−２と称す）を具備する。又、スイッチ２００−１、２００−２を区別せずに総称する場合はスイッチ２００と称し、ネットワーク３００−１、３００−２を区別せずに総称する場合はネットワーク３００と称し、コンピュータ４００−１、４００−２を区別せずに総称する場合はコンピュータ４００と称して説明する。尚、図１に示すスイッチ２００、ネットワーク３００、コンピュータ４００は、それぞれ２つ設けられているが、これに限らず、任意の数が設けられても良い。
【００１９】
コンピュータ４００は、図示しないＣＰＵ、ネットワークインタフェース（Ｉ／Ｆ）、及びメモリ（記録媒体）を備えるコンピュータ装置であり、メモリ（記録媒体）内のプログラムを実行することで他のコンピュータ４００との間で通信を行う。
【００２０】
本発明によるコンピュータシステムでは、複数のネットワーク３００を経由して接続されたスイッチ２００を介してコンピュータ４００間の通信が行われる。複数のネットワーク３００を経由して接続されたスイッチ２００間の通信は、オープンフロー（プログラマブルフローとも称す）プロトコルに従って制御される。コントローラ１００とスイッチ２００とは制御用のネットワークで接続される。
【００２１】
詳細には、コントローラ１００は、オープンフロー技術により、システム内におけるパケット転送に係る通信経路パケット転送処理を制御する。オープンフロー技術とは、コントローラ（ここではコントローラ１００）が、ルーティングポリシー（フローエントリ：フロー＋アクション）に従い、マルチレイヤ及びフロー単位の経路情報をスイッチ２００に設定し、経路制御やノード制御を行う技術を示す（詳細は、非特許文献１を参照）。これにより、経路制御機能がルータやスイッチから分離され、コントローラによる集中制御によって最適なルーティング、トラフィック管理が可能となる。オープンフロー技術が適用されるスイッチ２００は、従来のルータやスイッチのようにパケットやフレームの単位ではなく、ＥＮＤ２ＥＮＤのフローとして通信を取り扱う。
【００２２】
本発明によるコントローラ１００は、図示しないＣＰＵ、ネットワークインタフェース（Ｉ／Ｆ）、及びメモリ（記録媒体）を備えるコンピュータ装置である。コントローラ１００の図示しないメモリ（記録媒体）には、ネットワーク情報テーブル１２０、ネットワークフローテーブル１３０、更新周期１４０、ネットワーク管理プログラムが記録される。コントローラ１００では、図示しないＣＰＵによってネットワーク管理プログラムが実行されることで、ネットワーク管理部１１０の機能が実現される。
【００２３】
ネットワーク管理部１１０は、スイッチ２００から取得するネットワーク３００の接続状況や負荷状況に基づいて、通信経路となるネットワーク３００を決定する。次に、ネットワーク管理部１１０は、スイッチ２００が保持するフローテーブル２４０にフローエントリ（ルール２４１＋アクション２４２）を設定又は更新することで、当該スイッチ２００の動作（例えばパケットデータの中継動作や破棄）を制御する。
【００２４】
詳細には、ネットワーク管理部１１０は、スイッチ２００からのファーストパケットの受信通知や負荷情報に基づいて制御対象を決めるルール、動作を規定するアクション、及び通信経路を設定、削除又は更新する。ここでファーストパケットとは、スイッチ２００のフローテーブル２４０に設定されたルール２４１に適合しないパケットデータを示す。
【００２５】
ルール２４１には、例えば、ＴＣＰ／ＩＰのパケットデータにおけるヘッダ情報に含まれる、ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルのレイヤ１からレイヤ４のアドレスや識別子の組み合わせが規定される。例えば、図９に示すレイヤ１の物理ポート、レイヤ２のＭＡＣアドレス、レイヤ３のＩＰアドレス、レイヤ４のポート番号、ＶＬＡＮタグ（ＶＬＡＮ  ｉｄ）のそれぞれの組み合わせがルール２４１として設定される。尚、ＶＬＡＮタグには、優先順位（ＶＬＡＮ  Ｐｒｉｏｒｉｔｙ）が付与されていても良い。
【００２６】
ここで、ルール２４１に設定されるポート番号等の識別子やアドレス等は、所定の範囲で設定されても構わない。又、宛先や送信元のアドレス等を区別してルール２４１として設定されることが好ましい。例えば、ＭＡＣ宛先アドレスの範囲や、接続先のアプリケーションを特定する宛先ポート番号の範囲、接続元のアプリケーションを特定する送信元ポート番号の範囲がルール２４１として設定される。更に、データ転送プロトコルを特定する識別子をルール２４１として設定してもよい。
【００２７】
アクション２４２には、例えばＴＣＰ／ＩＰのパケットデータを処理する方法が規定される。例えば、受信パケットデータを中継するか否かを示す情報や、中継する場合はその送信先となるスイッチ２００やネットワーク３００が設定される。又、アクション２４２には、パケットデータの複製や、破棄することを指示する情報が設定されてもよい。
【００２８】
図２は、本発明に係るネットワーク情報テーブル１２０の構造を示す図である。図２を参照して、ネットワーク情報テーブル１２０には、送信元スイッチ識別子１２１、送信先スイッチ識別子１２２、ネットワーク識別子１２３、及び転送速度１２４が対応付けられて１つのエントリとして格納される。本発明に係るスイッチ２００には一意のスイッチ識別子が付与され、ネットワーク３００には一意のネットワーク識別子が付与される。送信元スイッチ識別子１２１は、対応する転送速度１２４を測定するためのパケットの転送元となるスイッチ２００の識別子であり、送信先スイッチ識別子１２２は、当該パケットの送信先のスイッチ２００の識別子である。ネットワーク識別子１２３は、対応する送信元スイッチ識別子１２１及び送信先スイッチ識別子１２２を持つスイッチ２００間に設けられたネットワーク３００の識別子である。転送速度１２４は、対応するネットワーク識別子１２３をもつネットワーク３００を介したスイッチ２００間の転送速度である。例えば、所定の間隔で処理されたスイッチ２００間通信の平均処理速度が転送速度１２４としてネットワーク情報テーブル１２０に記録される。
【００２９】
図３は、本発明に係るネットワークフローテーブル１３０の構造を示す図である。ネットワークフローテーブル１３０には、スイッチ２００がどのネットワークを通して通信するかを示す情報が記録される。詳細には、ネットワークフローテーブル１３０には、送信元スイッチ識別子１３１をキーとしたエントリとして、送信先スイッチ識別子１３２と、ネットワーク識別子リスト１３３が対応付けられて格納される。送信元スイッチ識別子１３１は、パケットの送信元のスイッチ２００の識別子であり、送信先スイッチ識別子１３２は、当該パケットの送信先のスイッチ２００の識別子である。ネットワーク識別子リスト１３３には、対応する送信元スイッチ識別子１３１及び送信先スイッチ識別子１３２のスイッチ２００間に設けられたネットワーク３００のネットワーク識別子が記録される。ネットワーク識別子リスト１３３には、任意の個数のネットワーク識別子が格納される。
【００３０】
更新周期１４０は、ネットワーク管理部１１０がスイッチ２００から転送性能を取得する周期を含む。更新周期１４０は、スイッチ２００毎に異なる周期であっても良いし、全てのスイッチ２００の共通の周期であっても良い。
【００３１】
スイッチ２００は、ネットワーク３００を介した通信を制御する。詳細には、スイッチ２００は、コンピュータ４００やネットワーク３００を介して送信されたデータの転送先を決定する。この際、スイッチ２００は、オープンフロープロトコルに従い、コントローラ１００によって設定（更新）されたフローテーブル２４０に従って受信パケットの処理方法（アクション）を決定する。
【００３２】
本発明によるスイッチ２００は、図示しないＣＰＵ、ネットワークインタフェース（Ｉ／Ｆ）、及びメモリ（記録媒体）を備える。スイッチ２００の図示しないメモリ（記録媒体）には、スイッチ管理プログラム、スイッチ情報テーブル２２０、負荷分散情報２３０、フローテーブル２４０が格納される。スイッチ２００では、図示しないＣＰＵによってスイッチ管理プログラムが実行されることで、スイッチ管理部２１０の機能が実現される。
【００３３】
スイッチ管理部２１０は、自身のフローテーブル２４０に基づいてデータの転送先となるネットワーク３００を決定し、当該ネットワーク３００を経由して通信を実施する。本発明によるシステムでは、リンクアグリゲーション等の既存技術を用いて、複数のネットワーク３００を経由して通信を実施することができるものとする。又、スイッチ管理部２１０は、自身が接続される（使用する）ネットワーク３００の転送性能を取得するために定期的に検査用データを送信する。更に、スイッチ管理部２１０は、コントローラ１００からのフローテーブル設定（更新）命令や、転送性能の取得命令に応答してフローテーブル２４０の設定（更新）や転送性能の取得及びコントローラへの通知を行う。
【００３４】
図４は、本発明に係るスイッチ情報テーブル２２０の構造を示す図である。図４を参照して、スイッチ情報テーブル２２０には、送信先スイッチ識別子２２１、ネットワーク識別子２２２、及び転送性能（転送容量２２３、転送時間２２４）が対応付けられてエントリとして格納される。送信先スイッチ識別子２２１は、パケットの転送先となるスイッチ２００の識別子である。ネットワーク識別子２２２は、当該転送に利用したネットワーク３００の識別子である。転送容量２２３は、当該転送において、所定の時間内に転送されたデータサイズの累計を示す。転送時間２２４は、当該転送に要した時間の合計を示す。例えば、転送容量２２３として転送時間２２４内に転送されたデータサイズが当該転送時間２２４に対応付けられてスイッチ情報テーブル２２０に記録される。
【００３５】
図５は、本発明に係る負荷分散情報２３０の構成を示す図である。図５を参照して、負荷分散情報２３０は、検査周期２３１、最大ネットワーク数２３２、及び転送閾値２３３を含む。検査周期２３１は、スイッチ２００が転送性能（例えば転送容量２２３や転送時間２２４）を取得するための通信を実施する周期を示す情報である。最大ネットワーク数２３２は、スイッチ２００が接続（利用）可能なネットワークの最大数を示す情報である。転送閾値２３３は、使用可能なネットワークのうち、最大性能のネットワーク３００における利用可能なパスの割合を示す情報である。負荷分散情報２３０は、予め設定されることが好ましく、自ら又はコントローラ１００によって設定又は更新されても良い。
【００３６】
図６は、本発明に係るフローテーブル２４０の構造を示す図である。フローテーブル２４０には、ルール２４１及びアクション２４２がフローエントリとして設定される。アクション２４２にはデータの転送先となるスイッチの識別子（送信先スイッチ識別子２４３）や、転送に使用するネットワーク３００の識別子のリスト（ネットワーク識別子リスト２４４）が含まれる。ネットワーク識別子リスト２４４には、任意の個数のネットワーク識別子が登録される。
【００３７】
受信パケットのヘッダ情報が、フローテーブル２４０に記録されたルール２４１に適合（一致）する場合、当該パケットデータは、スイッチ管理部２１０によって、アクション２４２に規定されたネットワーク３００を介してアクション２４２に規定された他のスイッチ２００に転送される。
【００３８】
図１を参照して、ネットワーク３００−１、３００−２はそれぞれ独立したネットワークであり、スイッチ２００間で利用（接続）されるネットワークの数はこれに限らない。例えば、図７に示すように、スイッチ２００−１とスイッチ２００−２の間に４つのネットワーク３００−１〜３００−４が設けられても良い。
【００３９】
（動作）
次に、図７に示されるコンピュータシステムを参照して、本発明によるコンピュータシステムの動作を説明する。以下では、一例としてスイッチ２００−１、２００−２のスイッチ識別子を“スイッチｘ”、“スイッチｙ”とし、ネットワーク３００−１〜３００−４のネットワーク識別子を“ネットワーク１”〜“ネットワーク４”として説明する。
【００４０】
先ず、図８を参照して、スイッチ２００における初期設定動作を説明する。図８は、本発明に係るスイッチ２００における接続変更時の初期設定動作を示すフローチャートである。ここでは当初、スイッチ２００におけるスイッチ情報テーブル２２０及びフローテーブル２４０には何も設定されていない状態であり、負荷分散情報２３０には、運用方針に応じた値が予め設定されているものとする。
【００４１】
新たにシステムに追加されたスイッチ２００のスイッチ管理部２１０は、自身のスイッチ識別子、及び自身に接続されたネットワークのネットワーク識別子をコントローラ１００のネットワーク管理部１１０に通知する（ステップＳ１０１）。ここで通知されるネットワーク識別子は、例えば、ネットワーク３００に接続されたポート番号と、当該ネットワーク３００を介して接続される他のスイッチ２００のポート番号との組合せを特定する情報である。
【００４２】
スイッチ２００は、通知したスイッチ識別子及びネットワーク識別子に応じてコントローラ１００から送信されるネットワーク情報を取得する（ステップＳ１０２）。ネットワーク情報は、通知したスイッチ識別子及びネットワーク識別子に基づいて更新登録されたネットワーク情報テーブル１２０内の情報のうち、転送速度１２４を除く情報を示す。ここで、スイッチ２００は、ネットワーク情報テーブル１２０のうち、新たに登録されたネットワーク情報のみを取得しても良いし、ネットワーク情報テーブル１２０に登録された全てのネットワーク情報を取得してもよい。
【００４３】
スイッチ２００は、取得したネットワーク情報に基づいてスイッチ情報テーブル２２０を更新する（ステップＳ１０３）。詳細には、スイッチ２００は、取得したネットワーク情報のうち、自身のスイッチ識別子に一致する送信元スイッチ識別子１２１を含むエントリを、スイッチ情報テーブル２２０に登録する。このとき、スイッチ２００は、スイッチ情報テーブル２２０に未登録の送信先スイッチ識別子及びネットワーク識別子を含むエントリを新規に登録する。ここで、コントローラ１００から送信されたネットワーク情報に含まれる送信先スイッチ識別子１２２及びネットワーク識別子２２２は、送信先スイッチ識別子２２１及びネットワーク識別子２２２としてスイッチ情報テーブル２２０に新規登録される。又、スイッチ情報テーブル２２０に新規登録されるエントリの転送容量２２３及び転送時間２２４は“０”に設定される。
【００４４】
次に、図９を参照して、コントローラ１００における初期設定動作を説明する。図９は、本発明に係るコントローラ１００における接続変更時の初期設定動作を示すフローチャートである。ここでは当初、コントローラ１００におけるネットワーク情報テーブル１２０、及び、ネットワークフローテーブル１３０には何も設定されていない状態であり、更新周期１４０には、運用方針に応じた値が予め設定されているものとする。
【００４５】
コントローラ１００のネットワーク管理部１１０は、システムに新規接続されたスイッチ２００から通知されるスイッチ識別子とネットワーク識別子をネットワーク情報テーブル１２０に新規登録する（ステップＳ２０１、Ｓ２０２）。詳細には、ネットワーク管理部１１０は、ネットワーク情報テーブル１２０に既に登録済みのスイッチ識別子を送信元スイッチ識別子１２１とし、スイッチ２００から通知された未登録のスイッチ識別子を送信先スイッチ識別子１２２として対応付けてネットワーク情報テーブル１２０に新規登録する。この際、ネットワーク管理部１１０は、既に登録済みのネットワーク識別子や、スイッチ２００から通知された未登録のネットワーク識別子を参照して、送信元スイッチ識別子１２１と送信先スイッチ識別子１２２に対応するスイッチ２００の間に接続されたネットワークを特定する。そして、ネットワーク管理部１１０は、特定したネットワークの識別子をネットワーク識別子１２３として当該送信元スイッチ識別子１２１及び送信先スイッチ識別子１２２に対応付けてネットワーク情報テーブル１２０に新規登録する。尚、新規登録されるネットワーク情報テーブルのエントリ内の転送速度１２４は“０”に設定される。
【００４６】
ネットワーク管理部１１０は、システムに新規追加されたスイッチ２００の識別子を送信元スイッチ識別子１２１とし、登録済みのスイッチ識別子を送信先スイッチ識別子１２２とし、当該スイッチ間に接続されるネットワークの識別子をネットワーク識別子１２３、転送速度１２４を“０”とするエントリを新規登録する（ステップＳ２０３）。すなわち、ネットワーク管理部１１０は、ステップＡ２０２で新規登録されたエントリの送信元スイッチ識別子１２１と送信先スイッチ識別子１２２を入れ替えたエントリをネットワーク情報テーブル１２０に新規登録する。
【００４７】
続いてネットワーク管理部１１０は、ステップＳ２０２、Ｓ２０３において更新登録が完了したネットワーク情報テーブル１２０内のネットワーク情報をスイッチ２００に送信する（ステップＳ２０４）。ネットワーク管理部１１０は、ネットワーク情報テーブル１２０において新規登録したエントリのうち、スイッチ２００及びネットワーク３００の接続関係に係るネットワーク情報（ここでは、送信元スイッチ識別子１２１、送信先スイッチ識別子１２２、ネットワーク識別子１２３）を、送信元スイッチ識別子１２１に対応するスイッチ２００に送信する。尚、ネットワーク管理部１１０は、ネットワーク情報テーブル１２０に既に登録されている全てのエントリにおけるネットワーク情報を、対応するスイッチ２００又は全てのスイッチ２００に送信しても良い。
【００４８】
一例として、図７に示すシステムにおいて、スイッチ２００−１が新規追加された場合のネットワーク情報テーブル１２０の更新登録、及びスイッチ情報テーブル２２０の更新登録について説明する。ここでは、スイッチ２００−２が既にシステムに接続されており、そのスイッチ識別子“スイッチｙ”はネットワーク情報テーブル１２０に登録されているものとする。
【００４９】
スイッチ２００−１は、自身のスイッチ識別子“スイッチｘ”、自身に接続するネットワーク３００のネットワーク識別子“ネットワーク１”〜“ネットワーク４”をコントローラ１００に通知する。コントローラ１００は、登録済みのスイッチ識別子“スイッチｙ”を送信元スイッチ識別子１２１、通知されたスイッチ識別子“スイッチｘ”を送信先スイッチ識別子１２２とし、ネットワーク識別子“ネットワーク１”〜“ネットワーク４”をネットワーク識別子１２３とし、転送速度を“０”とする４つのエントリを登録する。又、コントローラ１００は、通知されたスイッチ識別子“スイッチｘ”を送信元スイッチ識別子１２１、登録済みのスイッチ識別子“スイッチｙ”を送信先スイッチ識別子１２２とし、ネットワーク識別子“ネットワーク１”〜“ネットワーク４”をネットワーク識別子１２３とし、転送速度を“０”とする４つのエントリを登録する。これにより、図１０のようにネットワーク情報テーブル１２０が更新登録される。
【００５０】
コントローラ１００は、更新登録されたネットワーク情報テーブル１２０からネットワーク情報を抽出し、スイッチ２００−１、２００−２に送信する。例えば、コントローラ１００は、ネットワーク情報テーブル１２０のうち、送信元スイッチ識別子１２１“スイッチｘ”に対応するエントリ内のネットワーク情報を、当該スイッチ識別子に対応するスイッチ２００−１に送信する。又、コントローラ１００は、送信元スイッチ識別子１２１“スイッチｙ”に対応するエントリ内のネットワーク情報を、当該スイッチ識別子に対応するスイッチ２００−２に送信する。
【００５１】
図１１を参照して、スイッチ２００−１は、コントローラ１００から取得したネットワーク情報に基づき、送信先スイッチ識別子２２１を“スイッチｙ”、ネットワーク識別子２２２を“ネットワーク１”〜“ネットワーク４”とし、転送容量２２３及び転送時間２２４を“０”とした４つのエントリを、スイッチ情報テーブル２２０に新規登録する。スイッチ２００−２も同様に、送信先スイッチ識別子２２１を“スイッチｘ”としてエントリを自身のスイッチ情報テーブル２２０に新規登録する。
【００５２】
上記一例では、ネットワーク情報テーブル１２０に新規登録されたネットワーク情報が、対応するスイッチ２００に送信される場合について説明したが、これに限らず、ネットワーク情報テーブル１２０に登録済みの全てのネットワーク情報が、登録済みの全てのスイッチ２００に送信されても良い。この場合、スイッチ２００では、送信元スイッチ識別子が自身のスイッチ識別子と一致するネットワーク情報のうち、送信先スイッチ識別子がスイッチ情報テーブル２２０に未登録のネットワーク情報のみがスイッチ情報テーブル２２０に新規登録される。
【００５３】
コントローラ１００からスイッチ２００への通信ができなくなったときの動作を説明する。コントローラ１００のネットワーク管理部１１０は、定期的又は任意の時期にシステム内の全てのスイッチ２００又は任意のスイッチ２００に対し、接続確認のための信号を送信することが好ましい。この場合、ネットワーク管理部１１０は、当該信号に対するスイッチ２００からの応答信号によって、スイッチ２００がシステムに接続されているか否かを確認できる。あるいは、ネットワーク管理部１１０は、スイッチ２００から転送性能が、所定の時間通知されない場合、当該スイッチ２００との通信が不通である（又はシステムから離脱した）と判定してもよい。
【００５４】
ネットワーク管理部１１０は、スイッチ２００への通信ができなくなった場合（又はシステムから離脱したと判定した場合）、ネットワーク情報テーブル１２０の全エントリを検索し、送信元スイッチ識別子１２１、または、送信先スイッチ識別子１２２が当該スイッチ２００のスイッチ識別子と一致するエントリをネットワーク情報テーブル１２０から削除する。
【００５５】
本発明によるコンピュータシステムでは、スイッチ２００においてネットワーク３００を介したスイッチ２００間の転送性能（転送容量や転送時間）が測定され、コントローラ１００に送信される。コントローラ１００は、ネットワーク３００の転送性能を参照して、通信経路として利用するネットワーク３００を決定し、オープンフロープロトコルに従い、スイッチ２００のフローテーブル２４０を設定（更新）する。
【００５６】
先ず、図１２を参照して、スイッチ２００における転送性能の測定動作を説明する。図１２は、本発明に係るスイッチ情報テーブル２２０における転送容量２２３及び転送時間２２４の設定（更新）動作を示すフローチャートである。
【００５７】
スイッチ管理部２１０は、他のスイッチ２００への通信要求があったとき、フローテーブル２４０で規定されたネットワーク３００を用いて通信を開始し、通信開始時刻を記録する（ステップＳ３０１）。例えば、コンピュータ４００から転送されたパケットデータが、フローテーブル２４０のルール２４１に適合する場合、当該ルールに対応するアクション２４２に従ったネットワーク３００を利用してパケット転送が行われる。このときスイッチ管理部２１０は、パケット転送開始時刻を図示しないメモリ（記録媒体）に記録する。
【００５８】
スイッチ２００において通信が正常に完了すると、スイッチ管理部２１０は、通信完了時刻と通信開始時刻との差から、転送時間２２４を算出する（ステップＳ３０２Ｙｅｓ、Ｓ３０３）。一方、通信が正常に完了しなかったときは、転送時間２２４の計算は行わない（ステップＳ３０２Ｎｏ）。
【００５９】
スイッチ管理部２１０は、ネットワーク情報テーブル１２０において、通信に使用したネットワーク３００と通信先のスイッチ２００に該当するエントリの転送容量２２３及び転送時間２２４を更新する（ステップＳ３０４）。詳細には、スイッチ管理部２１０は、パケットに適合するアクション２４２から特定される送信先スイッチ識別子２４３及びネットワーク識別子リスト２４４に対応するエントリをネットワーク情報テーブル１２０から抽出し、当該エントリ内の転送容量２２３及び転送時間２２４を更新する。転送容量２２３は、通信開始から通信完了までに転送したパケットデータ量が記録され、転送時間２２４は、ステップ３０３において算出された転送時間が記録される。
【００６０】
例えば、図７に示すシステムにおいて、スイッチ２００−１からネットワーク３００−１〜３００−４を介してスイッチ２００−２宛に通信が行われた場合、図１３のように、スイッチ情報テーブル２２０が更新される。転送容量２２３及び転送時間２２４には、最新の転送容量及び転送速度が上書き更新されても良いし、所定期間内の転送容量及び転送速度が累積されて記録されても良い。あるいは、転送容量２２３及び転送時間２２４には、転送容量及び転送速度の所定通信回数当たりの平均値や、所定のアルゴリズムによって計算された統計値が記録されても良い。
【００６１】
図１２に示す動作で転送性能（ここでは転送容量と転送時間）を更新するためには、何らかの通信が必要である。すなわち、通信に使用しないネットワーク３００では情報が更新されない。このため、スイッチ管理部２１０は、定期的又は任意の時期に検査用の通信を実施し、自身に接続された全てのネットワーク３００の転送性能を更新することが好ましい。例えば、スイッチ管理部２１０は、所定のデータ量の検査用データを、定期的又は任意の時期に、自身に接続されたネットワーク３００を介して他のスイッチ２００に転送し、図１２と同様な動作により、当該ネットワーク３００及び当該スイッチ２００に対応する転送容量２２３及び転送時間２２４を更新する。定期的に検査用の通信を行う場合、スイッチ管理部２１０は、負荷分散情報２３０に設定された検査周期２３１の経過に応じて検査用パケットデータを送信する。これにより、スイッチ２００は、他の装置からパケット転送等の通信要求が発生しない場合でも、ネットワーク３００の転送性能を取得することが可能となる。
【００６２】
次に、図１４及び図１５を参照して、本発明に係るネットワーク情報テーブル１２０の設定（更新）動作を説明する。図１４は、本発明に係るネットワーク情報テーブル１２０の設定（更新）動作を示すフローチャートである。
【００６３】
ネットワーク管理部１１０は、更新周期１４０の経過に応じて、スイッチ２００に対しスイッチ情報の取得指示を行う（ステップＳ４０１Ｙｅｓ、Ｓ４０２）。スイッチ管理部２１０は、スイッチ情報の取得指示を受けたら、ネットワーク管理部１１０に対し、自身のスイッチ識別子、スイッチ情報テーブル２２０をスイッチ情報として送信する。
【００６４】
ネットワーク管理部１１０は、スイッチ情報の取得指示に対する応答が規定時間内にない場合、応答のないスイッチ２００への通信ができなくなったものとして、当該スイッチ２００に対するエントリをネットワーク情報テーブル１２０から削除する（ステップＳ４０３Ｎｏ、Ｓ４０４）。一方、スイッチ情報の取得指示に対する応答として、スイッチ２００からスイッチ情報が送信されると、ネットワーク管理部１１０は、送信されたスイッチ情報によりネットワーク情報テーブル１２０を更新する（ステップＳ４０３Ｙｅｓ、Ｓ４０５）。
【００６５】
詳細には、ネットワーク管理部１１０は、受信したスイッチ識別子に一致する送信元スイッチ識別子１２１と、受信したスイッチ情報テーブル２２０の送信先スイッチ識別子２２１に一致する送信先スイッチ識別子１２２を含むエントリを、ネットワーク情報テーブル１２０から特定する。ネットワーク管理部１１０は、受信したスイッチ情報テーブル２２０で示されるネットワーク毎の転送容量２２３及び転送時間２２４から、ネットワーク毎の転送速度（転送容量／転送時間）を算出し、特定したエントリに記録する。
【００６６】
例えば、図７に示すスイッチ２００−１から図１３に示すスイッチ情報テーブル２２０を受け取った場合、ネットワーク管理部１１０は、図１５に示すネットワーク情報テーブル１２０のように、送信元スイッチ識別子１２１が、スイッチ２００−１のスイッチ識別子“スイッチｘ”に一致し、送信先スイッチ識別子１２２が送信先スイッチ識別子２２１“スイッチｙ”に一致するエントリを更新する。ここでは、ネットワーク３００−１〜３００−４（ネットワーク識別子“ネットワーク１”〜“ネットワーク４”）に対応する転送速度１２４として、図１３に示す転送容量２２３を転送時間２２４で除した値“１０００ＭＢ／ｓｅｃ”、“８００ＭＢ／ｓｅｃ”、“３００ＭＢ／ｓｅｃ”、“２００ＭＢ／ｓｅｃ”が設定される。ここで、転送容量２２３が“０”、すなわち、まったく通信が行われていない場合は、転送速度１２４は“０”に設定される。
【００６７】
ステップＳ４０３、Ｓ４０４、Ｓ４０５の処理をネットワーク情報テーブル１２０の全てのエントリについて実施することで、例えば、図７に示すように全てのエントリの転送速度１２４が更新される。
【００６８】
次に、図１６から図２１を参照して、ネットワークフローテーブル１３０及びフローテーブル２４０の更新動作について説明する。図１６は、本発明に係るネットワークフローテーブル１３０及びフローテーブル２４０の設定（更新）動作を示すフローチャートである。
【００６９】
ネットワーク管理部１１０は、更新周期１４０の経過に応じて、スイッチ２００に対し負荷分散情報２３０の取得指示を行う（ステップＳ５０１Ｙｅｓ、Ｓ５０２）。スイッチ管理部２１０は、負荷分散情報２３０の取得指示を受けたら、ネットワーク管理部１１０に対し、自身のスイッチ識別子及び負荷分散情報２３０を送信する。尚、ステップＳ５０２の負荷分散情報２３０の取得指示のタイミングと、ステップＳ４０２のスイッチ情報の取得指示のタイミング、すなわち、ステップＳ５０２とステップＳ４０２の更新周期１４０は同じでも異なっていてもどちらでも良い。
【００７０】
ネットワーク管理部１１０は、負荷分散情報２３０の取得指示に対する応答が規定時間内にない場合、応答のないスイッチ２００への通信ができなくなったものとして、当該スイッチ２００に対するエントリをネットワーク情報テーブル１２０から削除する（ステップＳ５０３Ｎｏ、Ｓ５０４）。一方、負荷分散情報２３０の取得指示に対する応答として、スイッチ２００からスイッチ識別子及び負荷分散情報２３０が送信されると、ネットワーク管理部１１０は、送信された負荷分散情報２３０に基づいてスイッチ間の通信に利用するネットワークを決定し、ネットワークフローテーブル１３０及び当該スイッチ２００のフローテーブル２４０を設定（更新）する（ステップＳ５０３Ｙｅｓ、Ｓ５０５〜Ｓ５０８）。
【００７１】
先ず、ネットワーク管理部１１０は、ネットワーク情報テーブル１２０において、負荷分散情報２３０の通知元のスイッチ２００のスイッチ識別子と一致する送信元スイッチ識別子１２１のエントリ（ネットワーク情報）のうち、送信先スイッチ識別子１２２毎に最大の転送速度１２４を最大転送速度として抽出する（ステップＳ５０５）。
【００７２】
ステップＳ５０５の具体例を説明する。ネットワーク管理部１１０は、受信したスイッチ識別子に一致する送信元スイッチ識別子１２１に対応するエントリを、送信元スイッチビューとしてネットワーク情報テーブル１２０から抽出する。ネットワーク管理部１１０は、送信元スイッチビューに現れる、すべての送信先スイッチ識別子１２２を送信先スイッチリストとして作成する。
【００７３】
ネットワーク管理部１１０は、所定の送信先スイッチ識別子１２２を含むエントリを送信元スイッチビューから抽出し、スイッチ間経路ビューとする。スイッチ間経路ビューは、送信元スイッチ識別子１２１に対応するスイッチ２００から所定の送信先スイッチ識別子１２２のスイッチ２００へ到るネットワーク３００のネットワーク識別子１２３と、そのネットワーク３００の転送速度１２４が登録されている。ネットワーク管理部１１０は、抽出したスイッチ間経路ビューの全エントリの中で、転送速度１２４の値が最大のものを探し、当該スイッチ間におけるネットワーク３００の最大転送速度とする。ネットワーク管理部１１０は、このようなスイッチ間ネットワークの最大転送速度を、送信先スイッチリストに登録された全ての送信先スイッチに対して行う。これにより、負荷分散情報２３０の通知元のスイッチ２００から他のスイッチ２００への転送速度が最大となるネットワーク３００が、送信先スイッチ毎に特定される。
【００７４】
次に、ネットワーク管理部１１０は、負荷分散情報２３０とステップＳ５０５で算出した最大転送速度から、許容転送速度を算出する。例えば、ネットワーク管理部１１０は、負荷分散情報２３０の転送閾値２３３と最大転送速度を乗じた値を許容転送速度として算出する。具体例として転送閾値２３３が６０％であり、最大転送速度が１０００ＭＢ／ｓｅｃであるとき、許容転送速度は６００ＭＢ／ｓｅｃとなる。このようなスイッチ間ネットワークの許容転送速度を、送信先スイッチリストに登録された全ての送信先スイッチに対して行う。これにより、負荷分散情報２３０の通知元のスイッチ２００から他のスイッチ２００への許容転送速度が、送信先スイッチ毎に特定される。
【００７５】
次に、ネットワーク管理部１１０は、負荷分散情報２３０とステップＳ５０６で算出した許容転送速度に基づいて通信に使用するネットワークを絞り込み、ネットワークフローテーブル１３０に登録（更新）する（ステップＳ５０７）。ここでは、ネットワーク管理部１１０は、スイッチ間経路ビューのすべてのエントリについて、ステップＳ５０６で求めた許容転送速度と転送速度１２４を比較し、転送速度１２４が許容転送速度以上のエントリに絞り込む。このとき、転送速度１２４が０のエントリは絞込み結果から除外する。又、転送速度１２４が許容転送速度以上のエントリ数が、負荷分散情報２３０の最大ネットワーク数２３２より多い場合はさらに絞り込みが行われる。例えば、許容転送速度によって絞り込まれた結果から、転送速度１２４が高い順に、最大ネットワーク数２３２の個数のエントリまで絞り込まれる。このようなスイッチ間通信で使用するネットワークの絞り込み（スイッチ間経路ビューの絞り込み）を、送信先スイッチリストに登録された全ての送信先スイッチに対して行う。これにより、負荷分散情報２３０の通知元のスイッチ２００から他のスイッチ２００への通信に利用するネットワーク３００が、送信先スイッチ毎に特定される。
【００７６】
ネットワーク管理部１１０は、上記処理によって絞り込んだエントリで規定されたネットワーク３００を、当該エントリで規定された送信元スイッチ及び送信先スイッチの間で使用するネットワークとして設定する。詳細には、当該エントリの送信元スイッチ識別子及び送信先スイッチ識別子は、ネットワークフローテーブル１３０の送信元スイッチ識別子１３１及び送信先スイッチ識別子１３２として登録され、当該エントリのネットワーク識別子は、これらに対応するネットワーク識別子リスト１３３に登録される。このようなネットワークフローテーブル１３０への登録を、送信先スイッチリストに登録された全ての送信先スイッチに対して行う。これにより、負荷分散情報２３０の通知元のスイッチ２００から他のスイッチ２００への通信に利用するネットワーク３００が、送信先スイッチ毎にネットワークフローテーブル１３０に登録される。
【００７７】
ステップＳ５０３、Ｓ５０４、Ｓ５０５、Ｓ５０６、Ｓ５０７の処理をネットワーク情報テーブル１２０の全てのエントリについて実施することで、コントローラ１００と通信可能な全てのスイッチ２００間の各々で利用するネットワーク３００をネットワークフローテーブル１３０に登録することができる。
【００７８】
ネットワーク管理部１１０は、更新したネットワークフローテーブル１３０に基づいてスイッチ２００のフローテーブル２４０を更新する（ステップＳ５０８）。ネットワーク管理部１１０は、スイッチ管理部２１０へ、更新対象のフローテーブルを送信する。ここでは、送信元スイッチ識別子１３１に一致するスイッチ識別子のスイッチ２００に、当該送信元スイッチ識別子１３１に対応付けられた送信先スイッチ識別子１３２及びネットワーク識別子リスト１３３が送信される。スイッチ管理部２１０は、送信された送信先スイッチ識別子１３２及びネットワーク識別子リスト１３３を、送信先スイッチ識別子２４３及びネットワーク識別子リスト２４４として、自身のフローテーブル２４０に更新設定する。
【００７９】
スイッチ管理部２１０は、他のスイッチ２００への通信があったとき、フローテーブル２４０を参照し、送信先スイッチ識別子２４３が当該他のスイッチ２００のスイッチ識別子と一致するエントリのネットワーク識別子リスト２４４に記載されているネットワークを使用して通信を行う。ネットワーク識別子リスト２４４に複数の通信経路が含まれている場合はリンクアグリゲーションなどの従来技術を用いて通信を行う。具体的な通信方式については本発明の範囲外のため、省略する。
【００８０】
次に、ステップＳ５０５〜Ｓ５０８のネットワークの決定動作について、具体例を用いて説明する。ここでは、図７に示すシステムにおいて、スイッチ２００−１から送信された負荷分散情報２３０に基づいてスイッチ２００−１に設定するフローを決定する動作について説明する。
【００８１】
ネットワーク管理部１１０は、図１７に示す負荷分散情報２３０及びスイッチ識別子“スイッチｘ”をスイッチ２００−１から受け取ると、送信元スイッチ識別子１２１が“スイッチｘ”と一致するエントリを、スイッチｘに関する送信元スイッチビューとして、ネットワーク情報テーブル１２０から抽出する。ここで抽出された送信元スイッチビューの一例を図１８に示す。
【００８２】
ネットワーク管理部１１０は、送信元スイッチビューに現れる、すべての送信先スイッチ識別子が格納された送信先スイッチリストを作成する。図１４を参照すると、送信元スイッチビューには送信先スイッチ識別子１２２として“スイッチｙ”のみが登場するため、送信先スイッチリストには送信先スイッチ識別子“スイッチｙ”が１個だけ登録される。
【００８３】
ネットワーク管理部１１０は、作成した送信元スイッチビューの送信先スイッチ識別子１２２がスイッチ識別子“スイッチｙ”と一致するエントリを抽出する。ここでは、送信元スイッチビューのすべてのエントリが該当するため、図１４の送信元スイッチビューがそのまま、スイッチ２００−１（“スイッチｘ”）を送信元とし、スイッチ２００−２（“スイッチｙ”）を送信先としたスイッチ間経路ビューとなる。
【００８４】
続いて、ネットワーク管理部１１０は最大転送速度の抽出及び許容転送速度の計算を行う。ここでは、図１８に示すスイッチ間経路ビューから、送信先スイッチ２００−２に対する最大転送速度として１０００ＭＢ／ｓｅｃが抽出される。又、図１７に示す負荷分散情報２３０の転送閾値２３３が６０％であることがことから、許容転送速度は６００ＭＢ／ｓｅｃとなる。
【００８５】
ネットワーク管理部１１０は、使用するネットワークの絞り込みを行う。ここでは、図１８に示すスイッチ間経路ビューから、転送速度１２４が許容転送速度“６００ＭＢ／ｓｅｃ”に満たないエントリが除外される。これにより“ネットワーク３”と“ネットワーク４”を含むエントリは、利用ネットワークの候補から除外される。
【００８６】
続いて、ネットワーク管理部１１０は、残されたスイッチ間経路ビューのエントリ数をチェックする。エントリ数は２つであり、図１３に示す負荷分散情報２３０から、最大ネットワーク数２３２は“２”であるので、十分な個数まで絞り込めており、絞り込み処理は終了する。本処理により絞り込まれた後のスイッチ間経路ビューを図１９に示す。
【００８７】
ネットワーク管理部１１０は、図１９のように絞り込まれたスイッチ間経路ビューに登場するすべてのネットワーク識別子１２３“ネットワーク１”、“ネットワーク２”を、使用ネットワークリストとして生成する。
【００８８】
ネットワーク管理部１１０は、使用ネットワークリストに基づいてネットワークフローテーブル１３０を更新する。更新されたネットワークフローテーブル１３０を図２０に示す。スイッチ２００−１の送信先スイッチリストには１つの要素“スイッチｙ”のみであるため、他の送信先スイッチに対する上記処理は行われず、図２０に示すネットワークフローテーブル１３０が更新対象フローテーブルとしてスイッチ２００−１に送信される。スイッチ２００−１のスイッチ管理部２１０は、自身のフローテーブル２４０を、送信された更新対象フローテーブルに置き換える。これにより、スイッチ２００−１のフローテーブル２４０（のアクション２４２）は図２１に示すように書き換えられる。以降、スイッチ２００−１は、スイッチ２００−２を送信先としてパケット転送する場合、転送速度が許容速度６００ＭＢ／ｓｅｃよりも速いネットワーク３００−１、３００−２のみを利用することとなる。
【００８９】
本発明によるコンピュータシステムでは、スイッチ２００において収集したネットワークの負荷状況をコントローラ１００で集約し、その結果に基づいたスイッチ２００のフロー制御（使用ネットワークの決定）をコントローラ１００によって行っている。このため、本発明によれば、通信ネットワークが存在するシステム（例示：ストレージシステム）において、通信に使用するネットワークを負荷分散ポリシに応じて自動的に判断できる。
【００９０】
又、本発明に係るコントローラ１００は、スイッチ２００において測定された通信転送速度によって負荷状況を把握しているため、複数のスイッチ２００がネットワークの帯域を共有している場合でも、負荷状況を判断することが可能である。
【００９１】
更に、本発明に係るコントローラ１００は、規定間隔でネットワークフローテーブルの更新を行っている。このため、ネットワークの障害や、通信速度の低下が発生に関わらず、自動的に適切な経路（通信状態の良好な経路）に切り替えることが可能である。本発明によるコンピュータシステムでは、スイッチ２００の追加や移動、削除に例示されるように、動的に構成が変更されても、構成状況をコントローラ１００において把握できる。コントローラ１００は、構成変更後の通信経路における転送性能を定期的に取得し、最適経路によるフロー制御を実現できる。このため、ネットワーク内に障害が発生した場合でも、最適な通信経路を利用したスイッチ間通信が可能となる。
【００９２】
又、ネットワーク内の全通信について転送速度等の統計情報を取得しているため、ＦＣｏＥなど、同一ネットワーク上にＩ／Ｏが混在するような場合についても、最適な通信経路を利用することが可能となる。
【００９３】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。図１や図７に示したシステムの一例では、スイッチ２００を２つとしていたが、これに限らず３つ以上の任意の個数のスイッチについても拡張可能である。例えば、４つのスイッチ２００−１〜２００−４を備えるシステムの一例を図２２に示す。図２２に示す一例では、４つのスイッチ２００−１〜２００−４のそれぞれの間に２つのネットワーク３３０−１、３００−２が接続されている。又、スイッチ２００−１〜２００−４には、それぞれコンピュータ４００−１〜４００−４が接続されている。このようなシステムでも、上述の実施例と同様の動作により、最適ネットワークを利用したコンピュータ間通信が実現できる。
【００９４】
尚、本出願は、日本出願番号２０１２−００３５５１に基づき、日本出願番号２０１２−００３５５１における開示内容は引用により本出願に組み込まれる。
【図１】
0005884832.tif 000002
【図２】
0005884832.tif 000003
【図３】
0005884832.tif 000004
【図４】
0005884832.tif 000005
【図５】
0005884832.tif 000006
【図６】
0005884832.tif 000007
【図７】
0005884832.tif 000008
【図８】
0005884832.tif 000009
【図９】
0005884832.tif 000010
【図１０】
0005884832.tif 000011
【図１１】
0005884832.tif 000012
【図１２】
0005884832.tif 000013
【図１３】
0005884832.tif 000014
【図１４】
0005884832.tif 000015
【図１５】
0005884832.tif 000016
【図１６】
0005884832.tif 000017
【図１７】
0005884832.tif 000018
【図１８】
0005884832.tif 000019
【図１９】
0005884832.tif 000020
【図２０】
0005884832.tif 000021
【図２１】
0005884832.tif 000022
【図２２】
0005884832.tif 000023