(57)【要約】【課題】最短経路の再計算を生じにくくし、データ通信が途絶する期間を短くすること。【解決手段】データ転送装置は、ポート対応テーブルと、フォワーディングテーブルと、変更部とを有する。ポート対応テーブルは、自ノードであるデータ転送装置が有するインタフェースであるポートと、当該ポートと接続されるデータ転送装置である隣接装置が属する論理ノードの識別情報とを対応付けたテーブルである。フォワーディングテーブルは、転送対象データの宛先となるデータ転送装置が属する論理ノードである宛先論理ノードと、当該転送対象データの出力先となるポートとを対応付けたテーブルである。変更部は、自ノードであるデータ転送装置と接続されるポート対応テーブルに基づいて、フォワーディングテーブルに記憶されているポートを、稼働状況が変化した隣接装置が属する論理ノードに属する隣接装置と接続されるポートに変更する。【選択図】図８
2016149724.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを形成するデータ転送装置であって、
前記ネットワークは、１以上のデータ転送装置が属する複数の論理ノードにより形成され、
前記データ転送装置は、
自ノードが有するインタフェースであるポートと、当該ポートと接続されるデータ転送装置である隣接装置が属する論理ノードの識別情報とを対応付けたポート対応テーブルと、
転送対象データの宛先となるデータ転送装置が属する論理ノードである宛先論理ノードの識別情報と、当該転送対象データの出力先となるポートとを対応付けたフォワーディングテーブルと、
自ノードと接続される隣接装置の稼働状況が変化した場合に、前記ポート対応テーブルに基づいて、前記フォワーディングテーブルに記憶されているポートを、当該稼働状況が変化した隣接装置が属する論理ノードに属する隣接装置と接続されるポートに変更する変更部と
を備えることを特徴とするデータ転送装置。
【請求項２】
前記変更部は、前記ポート対応テーブルに基づいて、前記フォワーディングテーブルに記憶されているポートのうち、前記稼働状況がデータ転送不可能に変化した隣接装置と接続されるポートを、当該稼働状況がデータ転送不可能に変化した隣接装置が属する論理ノードに属する他の隣接装置と接続されるポートに変更する、または、前記フォワーディングテーブルに記憶されているポートのうち、当該稼働状況がデータ転送可能に変化した隣接装置が属する論理ノードに属する他の隣接装置と接続されるポートを、当該稼働状況がデータ転送可能へと変化した隣接装置と接続されるポートに変更するか否かを判定し、判定結果に基づいて、当該稼働状況がデータ転送可能に変化した隣接装置が属する論理ノードに属する他の隣接装置と接続されるポートを、当該稼働状況がデータ転送可能へと変化した隣接装置と接続されるポートに変更する
ことを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
請求項１または２に記載のデータ転送装置と、コントローラとを含むデータ転送システムであって、
前記コントローラは、
前記データ転送装置の識別情報と、前記データ転送装置が属する論理ノードである所属論理ノードの識別情報と、前記データ転送装置と接続される隣接装置が属する論理ノードである隣接論理ノードの識別情報とを対応付けた論理トポロジテーブルと、
前記論理トポロジテーブルに基づいて、転送対象データの宛先となる宛先論理ノードと、当該宛先論理ノードへ当該転送対象データを転送するために所定の論理ノードが当該転送対象データを転送する先の論理ノードとを対応付けた論理フォワーディングテーブルを、前記所定の論理ノード毎に作成する論理フォワーディングテーブル作成部と、
前記データ転送装置それぞれに、前記論理フォワーディングテーブル作成部によって作成された論理フォワーディングテーブルのうち、当該データ転送装置が属する論理ノードに対応する論理フォワーディングテーブルを配信する配信部と
を備えることを特徴とするデータ転送システム。
【請求項４】
前記データ転送装置の稼働状況が変化した場合に、前記論理トポロジテーブルの記憶情報を更新する制御部をさらに備える
ことを特徴とする請求項３に記載のコントローラ。
【請求項５】
前記制御部は、前記稼働状況がデータ転送可能に変化したデータ転送装置の隣接装置が属する論理ノードの識別情報が、前記論理トポロジテーブルに記憶されている場合に、当該稼働状況がデータ転送可能に変化したデータ転送装置の識別情報を、当該隣接装置が属する論理ノードの識別情報に対応付けて前記論理トポロジテーブルに登録し、当該稼働状況がデータ転送可能に変化したデータ転送装置の隣接装置が属する論理ノードの識別情報が、前記論理トポロジテーブルに記憶されていない場合に、当該稼働状況がデータ転送可能に変化したデータ転送装置の識別情報に、当該稼働状況がデータ転送可能に変化したデータ転送装置が属する論理ノードの識別情報に対応付けて前記論理トポロジテーブルに登録する
ことを特徴とする請求項４に記載のコントローラ。
【請求項６】
前記制御部は、前記稼働状況がデータ転送可能に変化したデータ転送装置の隣接装置が属する論理ノードの識別情報から、所定の１つの識別情報を除いた組合せの論理ノードの識別情報が前記論理トポロジテーブルに記憶されている場合には、当該所定の１つの識別情報を除いた組合せの論理ノードの識別情報と、当該所定の１つの識別情報を除いた組合せの論理ノードの識別情報に対応付て前記論理トポロジテーブルに記憶されている所属論理ノードとの組合せのうち、前記稼働状況がデータ転送可能に変化したデータ転送装置の隣接装置が属する論理ノードの組合せと一致する組合せに対応付けて、前記稼働状況がデータ転送可能に変化したデータ転送装置の識別情報を前記論理トポロジテーブルに登録する
ことを特徴とする請求項４または５に記載のコントローラ。
【請求項７】
ネットワークを形成するデータ転送装置であって、
前記ネットワークは、１以上のデータ転送装置が属する複数の論理ノードにより形成され、
前記データ転送装置が実行するデータ転送方法は、
自ノードが有するインタフェースであるポートと、当該ポートと接続されるデータ転送装置である隣接装置が属する論理ノードの識別情報とを対応付けたポート対応テーブルを作成するポート対応テーブル作成工程と、
転送対象データの宛先となるデータ転送装置が属する論理ノードである宛先論理ノードと、当該転送対象データの出力先となるポートとを対応付けたフォワーディングテーブルを作成する作成工程と、
自ノードと接続される隣接装置の稼働状況が変化した場合に、前記ポート対応テーブルに基づいて、前記フォワーディングテーブルに記憶されているポートを、当該稼働状況が変化した隣接装置が属する論理ノードに属する隣接装置と接続されるポートに変更する変更工程と
を含むことを特徴とするデータ転送方法。
【請求項８】
コンピュータを、請求項１または２に記載のデータ転送装置として機能させるためのデータ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置、データ転送システム、コントローラ、データ転送方法、および、データ転送プログラムに関する。
【背景技術】
【０００２】
データネットワークでは、ネットワークを構成するデータ転送装置がデータを宛先まで正しく転送する役割を果たす。例えば、データ転送装置の代表であるルータは、データの宛先をダイクストラに代表される最短経路計算アルゴリズムに基づき決定する。そして、ネットワークに含まれる全ルータが最短経路計算アルゴリズムに基づきデータ転送を行うことで、宛先までデータが正しく届くことが保障される。
【０００３】
ここで、データ転送装置が稼働モードから省電力モードになったり、故障したり等によりデータ転送不可能になった場合、最短経路計算アルゴリズムに従ってデータ転送を行うと、データを正しく転送できない状況が生じる。また、データ転送装置が省電力モードから稼働モードになったり、新たに起動される等によりデータ転送可になった場合、データ転送可になったデータ転送装置を経由する方がデータの転送遅延が小さくなるといった状況が生じることがある。これらの状況は、各データ転送装置が最短経路を再計算し、転送経路を最適化することで解決される。
【０００４】
しかしながら、各データ転送装置が宛先までの最短経路を計算することにより、各データ転送装置が有する経路情報が最新の状態に最適化されるまでには時間がかかる。この結果、ループやパケットドロップといったデータが正常に転送されない状況が生じる。
【０００５】
また、ネットワーク内を流れるトラヒックが増大することにより通信速度が低下するこを回避するために、データ転送装置間の接続リンクの回線速度の向上とともに、データ転送装置数を増やすことが予想される。例えば、回線速度を向上させるために、より高性能なデータ転送装置を用いることが考えられる。しかし、このようなデータ転送装置は、消費電力が大きく、数が増えるほど、例えば、かかるネットワークを導入している企業等にとっては負担が大きくなるといえる。このため、消費電力の負担を軽減するために、１台の高性能データ転送装置を、複数台の低性能データ転送装置で代替することが考えられるが、この場合には、データ転送装置数が増えてしまうため、経路計算時間が増加してしまうといった問題が残る。
【０００６】
そこで、非特許文献１では、データ転送装置の増加に伴う経路計算時間の増加を防ぐ技術が提案されている。図１９は、データ転送装置の増加に伴う経路計算時間の増加を防ぐ技術を説明する図である。図１９では、ネットワークｎｗを構成するデータ転送装置（円に相当）を、サブネットワーク単位でグループ化している例を示す。
【０００７】
非特許文献１に記載の技術は、図１９のようにネットワークをサブネットワークに分割し、経路計算を各サブネットワークで独自に行うことが記載されている。例えば、サブネットワーク内の所定のデータ転送装置が消費電力モードに切り替えられた場合について考える。このような場合、かかるデータ転送装置が所属するサブネット内のネットワークトポロジが変化する。そこで、非特許文献１に記載の技術では、ネットワークトポロジが変化したサブネット内でのみ最短経路が再計算され、その他のサブネットワークでは最短経路の再計算は行われない。
【０００８】
このように、非特許文献１に記載の技術は、ネットワークトポロジが変化したサブネットでのみ最短経路を計算すればよく、例えば、各データ転送装置がネットワークｎｗに含まれる全てのデータ転送装置を考慮して経路計算する必要がなく計算時間を短縮することができる。
【０００９】
また、非特許文献２では、データ転送装置の省電力化を実現する技術が提案されている。具体的には、非特許文献２には、データ転送処理を行うフォワーディングエンジンを装置内に複数用意し、トラヒック量に応じてフォワーディングエンジンの稼働数を変更することが記載されている。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】友近、池尻、小早川,”インターネットルーティング入門”,  翔泳社,２００１，ｐｐ．６０−１５９
【非特許文献２】A.  Bianco,  et  al.,  ”Energy  Saving  in  Distributed  Router  Architectures,”  IEEE  ICC  2012
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、非特許文献１に記載の技術は、データ転送装置が省電力モードと稼働モードとの切り替え等により、ネットワークトポロジが変化すれば、ネットワークトポロジが変化する度に該当するサブネット内では、依然として経路再計算が必要なままである。
【００１２】
また、非特許文献２に記載の技術では、データ転送装置内においてフォワーディングテーブルを除く構成要素には電力供給が必要である。そこで、データ転送装置を転送不能状態にまで電力を落とすといった方法が考えられる。しかしながら、このような方法を利用すると、データ転送装置がネットワーク内のトラヒック量に応じて転送可能状態と不能状態とに頻繁に切り替えられることが予想される。このような場合、上記非特許文献１に記載の技術を導入したとすると、該当するサブネット内での経路再計算が頻繁に生じてしまい、結果として、データが正常に転送されない状況が頻繁に生じるという問題が発生する。
【００１３】
本願は、上記に鑑みてなされたものであって、ネットワークトポロジの変更が生じる場合に、最短経路の再計算を生じにくくし、データ通信が途絶する期間を短くすることができるデータ転送装置、コントローラ、データ転送システム、データ転送方法、および、データ転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願に係るデータ転送装置は、ネットワークを形成するデータ転送装置であって、前記ネットワークは、１以上のデータ転送装置が属する複数の論理ノードにより形成され、前記データ転送装置は、自ノードが有するインタフェースであるポートと、当該ポートと接続されるデータ転送装置である隣接装置が属する論理ノードの識別情報とを対応付けたポート対応テーブルと、転送対象データの宛先となるデータ転送装置が属する論理ノードである宛先論理ノードの識別情報と、当該転送対象データの出力先となるポートとを対応付けたフォワーディングテーブルと、自ノードと接続される隣接装置の稼働状況が変化した場合に、前記ポート対応テーブルに基づいて、前記フォワーディングテーブルに記憶されているポートを、当該稼働状況が変化した隣接装置が属する論理ノードに属する隣接装置と接続されるポートに変更する変更部とを備えることを特徴とする。
【発明の効果】
【００１５】
実施形態の一態様によれば、ネットワークトポロジの変更が生じる場合に、最短経路の再計算を生じにくくし、データ通信が途絶する期間を短くすることができるといった効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施形態に係るデータ転送システムを示す図である。
【図２】図２は、図１に示す物理トポロジに基づいて構成される論理トポロジを示す図である。
【図３】図３は、実施形態に係るコントローラの構成例を示す図である。
【図４】図４は、実施形態に係る論理トポロジテーブルの一例を示す図である。
【図５】図５は、実施形態に係る論理フォワーディングテーブルの一例を示す図である。
【図６Ａ】図６Ａは、物理ノードがデータ転送可となった場合のマッピング処理の一例を示す図である。
【図６Ｂ】図６Ｂは、図６Ａに示すマッピング処理を概念的に示した図である。
【図７Ａ】図７Ａは、物理ノードがデータ転送不可能となった場合のマッピング処理の一例を示す図である。
【図７Ｂ】図７Ｂは、図７Ａに示すマッピング処理を概念的に示した図である。
【図８】図８は、実施形態に係るデータ転送装置の構成例を示す図である。
【図９】図９は、実施形態に係るポート対応テーブルの一例を示す図である。
【図１０】図１０は、ポート対応テーブル作成を説明するための図である。
【図１１】図１１は、フォワーディングテーブルの作成処理を説明するための図である。
【図１２】図１２は、コントローラおよびデータ転送装置の処理の流れを説明する図である。
【図１３】図１３は、稼働状況が「データ転送不可能」に変化した場合におけるフォワーディングテーブルの変更処理を説明する図である。
【図１４】図１４は、稼働状況が「データ転送可」に変化した場合におけるフォワーディングテーブルの変更処理を説明する図である。
【図１５】図１５は、特殊なインタフェースを用いたデータ転送を説明するための図である。
【図１６Ａ】図１６Ａは、変形例に係るネットワークトポロジの一例を示す図である。
【図１６Ｂ】図１６Ｂは、変形例に係るマッピング処理の一例を示す図である。
【図１７Ａ】図１７Ａは、マッピング処理における論理トポロジテーブルの管理の一例を示す図である。
【図１７Ｂ】図１７Ｂは、マッピング処理における論理トポロジテーブルの管理の一例を示す図である。
【図１８】図１８は、データ転送プログラムを実行するコンピュータを示す図である。
【図１９】図１９は、データ転送装置の増加に伴う経路計算時間の増加を防ぐ技術を説明する図である。
【発明を実施するための形態】
【００１７】
以下に、本発明にかかるデータ転送システムおよびネットワークノード管理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００１８】
〔１．データ転送システム〕
まず、実施形態に係るデータ転送システムについて説明する。図１は、実施形態に係るデータ転送システム１を示す図である。図１に示すように、データ転送システム１は、複数台のデータ転送装置１００と、これらデータ転送装置１００を所定のグループ毎に管理するコントローラ１０とを含む。
【００１９】
データ転送装置１００は、例えば、あるユーザ端末から送信されたデータを受信し、宛先のユーザ端末へとデータを転送してゆくことにより、ユーザ端末間のデータ通信を可能にする。そして、図１に示すように、それぞれのデータ転送装置１００は、他の所定のデータ転送装置１００と通信可能に接続（リンク）される。
【００２０】
このように、データ通信を可能にするネットワーク構造は、一般にネットワークトポロジと呼ばれる。そして、実在するネットワーク機器と、それらのリンクによって成るネットワークトポロジは、物理トポロジと呼ばれる。つまり、各データ転送装置１００は、物理トポロジにおける物理ノードである。よって、以下では、データ転送装置１００を物理ノードと表記する場合がある。また、対象となるデータ転送装置１００を、他のデータ転送装置１００と区別するために、例えば、物理ノード１ａといったように所定の符号を用いて表記する場合がある。そして、データ転送装置１００である物理ノードとしては、例えば、スイッチやルータ等が考えられる。
【００２１】
例えば、スイッチやルータといったデータ転送装置は、データを転送する場合、宛先のネットワーク機器へより早くデータが届くように、自ノードが関係するネットワークトポロジ上において、例えば、最短経路アルゴリズムを適用することにより、受信したデータを転送する転送先であるｎｅｘｔ  ｈｏｐをどの物理ノード（実際には、スイッチやルータ）とするかを求める。これにより、データ転送装置は、データ通信の迅速化を行うよう設計されている。
【００２２】
ここで、ネットワークトポロジ上において所定のデータ転送装置が、データ転送不可能な省電力モードに切り替えられた場合や、省電力モードからデータ転送可能な稼働モードに切り替えられた場合、ネットワークトポロジに変更が生じる。
【００２３】
実施形態に係るデータ転送装置１００は、上記のような場合であっても、経路再計算を行わないことにより、データ転送の遅れを抑え、かつ、正常にデータ転送するデータ転送処理を実行する装置である。
【００２４】
本実施形態においてデータ転送装置１００である物理ノードの接続関係について説明する。図１に示すように、各データ転送装置１００は、他の所定のデータ転送装置１００と有線または無線によってリンクされている。
【００２５】
図１の例では、物理ノード１ａは、他の所定の物理ノードとして、物理ノード２ａおよび３ｂとリンクを有する。また、物理ノード２ａは、物理ノード１ａ、２ｂ、４ａおよび５ａとリンクを有する。このように、直接リンクされる物理ノードにおいて、一方のノードから見てもう一方の物理ノードは、隣接ノードとなる。つまり、物理ノード１ａの隣接ノードは、物理ノード２ａおよび３ｂである。また、物理ノード２ａの隣接ノードは、物理ノード１ａ、２ｂ、４ａおよび５ａである。なお、どの物理ノードと、どの物理ノードがリンクされるかといった物理ノード間のリンク関係や、１つの物理ノードが有するリンク数は、図１の例に限られず、任意に設定されてよい。
【００２６】
コントローラ１０は、データ転送装置１００とリンクされることにより、各データ転送装置１００を所定のグループ毎に管理する。また、後述するが、コントローラ１０は、管理情報をデータ転送装置１００に配信することで、上記データ転送装置１００によるデータ転送処理を可能とさせる。なお、図１では、１つのネットワークトポロジに対して、１台のコントローラ１０がリンクされている例を示すが、この例に限らず、１つのネットワークトポロジに対して、複数台のコントローラ１０がリンクされてもよい。
【００２７】
また、本実施形態では、以下に示す条件１および２を満たすものとする。本実施形態では、データ転送装置１００を、以下に示す条件１および２を満たすように予めグループ化しておく。図１において、条件１および２を満たすようにグループ化された物理ノードを枠内に示す。
【００２８】
条件１は、隣接ノードが属するグループの組合せが、自ノード内での隣接関係を除いて同一となるようグループ化することである。図１のグループＧ１に着目する。グループＧ１には、物理ノード１ａ〜１ｃが所属している。そして、物理ノード１ａ〜１ｃは、それぞれ隣接ノードを有する。物理ノード１ａに対する隣接ノードは、物理ノード２ａおよび３ｂ、また、物理ノード１ｂの隣接ノードは、物理ノード２ｃ、３ａおよび３ｃといったように、物理ノード１ａ〜１ｃそれぞれの隣接ノードは、グループＧ１内の隣接関係を除いて、グループＧ２およびグループＧ３に属している。つまり、隣接ノードが属するグループの組合せがグループＧ２およびグループＧ３で同一である。
【００２９】
また、グループＧ２に着目すると、グループＧ２内のどの物理ノードにおいても、隣接ノードが属するグループの組合せが、グループＧ２内での隣接関係を除いて、グループＧ１、Ｇ４、Ｇ５で同一である。また、グループＧ３に着目すると、グループＧ３内のどの物理ノードにおいても、隣接ノードが属するグループの組合せが、グループＧ３内での隣接関係を除いて、グループＧ１、Ｇ６、Ｇ７で同一である。
【００３０】
次に、条件２は、上記条件１を満たしつつ、同グループ内において隣接関係を有する物理ノードが存在することである。例えば、グループＧ１では、物理ノード１ｂと１ｃとがリンクされていることにより、隣接関係にあるといえる。つまり、物理ノード１ｂは、隣接ノードの１つとして、自ノードが属するグループＧ１内において隣接ノードである物理ノード１ｃを有している。また、グループＧ２およびＧ３においても、同グループ内で隣接関係を有する物理ノードが存在している。
【００３１】
なお、図１では、条件１および２を満たすグループＧ１〜Ｇ３には、それぞれ３つの物理ノードが属している例を示すが、グループ化する際の物理ノードの数は、３つに限定されるものではなく、また、各グループに属する物理ノード数がそれぞれ異なっていてもよい。例えば、グループＧ１に属する物理ノード数５、グループＧ２に属する物理ノード数４、グループＧ３に属する物理ノード数３等であってもよい。また、図１では、条件１および２を満たすグループ数は３つであるが、これに限定されるものではない。
【００３２】
なお、図１に示す各物理ノードをスイッチとすると、物理ノード４ａ〜７ａは、一般にエッジスイッチと呼ばれ、それぞれに所定の端末装置（例えば、ユーザ端末）が接続される。そして、物理ノード４ａ〜７ａそれぞれが所属するグループＧ４〜Ｇ７についても条件１および２が満たされているものとする。
【００３３】
また、例えば、グループＧ２と、グループＧ４およびＧ５の間が別のルーチングドメインとなっているとする。そして、グループＧ４およびＧ５に所属する物理ノードを起点とするデータは、図１に示すネットワークトポロジにおけるルーティングドメインではなく、かかるグループＧ２、Ｇ４およびＧ５間のルーティングドメインに入るよう設定されているとする。このような場合、グループＧ２内の物理ノードもエッジスイッチとなり得る。また、グループＧ３と、グループＧ６およびＧ７の間についても別のルーチングドメインとなっているとする。そして、グループＧ６よびＧ７に所属する物理ノードを起点とするデータは、図１に示すネットワークトポロジにおけるルーティングドメインではなく、かかるグループＧ３、Ｇ６およびＧ７間のルーティングドメインに入るよう設定されているとする。このような場合、グループＧ３内の物理ノードもエッジスイッチとなり得る。
【００３４】
以上のように、条件１および２に基づく各グループは、実在する複数の物理ノードを仮想化した論理ノードといえる。そして、本実施形態に係るデータ転送システム１は、上記条件１および２を満たす論理ノードから成る論理トポロジに基づき、データ転送を行うシステムである。ここで、図２は、図１に示す物理トポロジに基づいて構成される論理トポロジを示す図である。
【００３５】
図２において、論理ノードＮ１はグループＧ１に対応し、論理ノードＮ２はグループＧ２に対応し、論理ノードＮ３はグループＧ３に対応する。その他のグループについても同様である。また、条件１を満たすことから、図４における各矢印は、論理ノードＮ１を起点とした場合に、論理ノードＮ４〜７Ｎそれぞれにデータを転送する際の最短経路を示すとともに、図２に示す物理トポロジに基づく仮想的なリンクを示す。
【００３６】
次に、実施形態に係るデータ転送システム１によるデータ転送処理の一例について説明する。実施形態に係るデータ転送システム１は、物理トポロジを上記条件１に基づいてグループ化した論理トポロジとして扱う。これにより、データ転送システム１におけるデータ転送装置１００は、隣接ノードの稼働情状況が変化した場合、その隣接ノードが所属する論理ノード内の物理ノードにおいてデータ転送先を変更するだけでよく、例えば、全ての物理ノードが経路再計算を行う必要がないうえに、転送経路が長くなることもない。この処理について、具体例を用いて説明する。
【００３７】
例えば、データ転送装置１００の１つである物理ノード２ｃが省電力モードにより、データ転送不可能な状態となった場合を想定する。ここで、物理ノード１ｃが所定の転送対象データを物理ノード２ｃへ送信したとする。このとき、物理ノード１ｃは、物理ノード２ｃがデータ転送不可能状態であるため、例えば、物理ノード２ｃから転送対象データが返送される等により、物理ノード２ｃがデータ転送不可能状態であることを検知する。
【００３８】
そして、物理ノード１ｃは、物理ノード２ｃが所属する論理ノードを検出する処理を行う。そして、物理ノード１ｃは、物理ノード２ｃがグループＧ２すなわち論理ノードＮ２に属していることを検出する。次に、物理ノード１ｃは、物理ノード２ｃが属する論理ノードＮ２に属し、かつ、自ノードと隣接関係にある物理ノードを検出する処理を行う。かかる検出処理により、物理ノード１ｃは、物理ノード２ｂを検出する。
【００３９】
そして、物理ノード１ｃは、転送対象のデータを物理ノード２ｃではなく物理ノード２ｂに送信する。例えば、転送対象のデータの宛先が論理ノードＮ５だったとすると、物理ノード２ｂが物理ノード２ｃに代わって、転送対象のデータを論理ノードＮ５に送信する。
【００４０】
次に、データ転送装置１００の１つである物理ノード２ｃが省電力モードから稼働モードに変化したことにより、データ転送可な状態となった場合を想定する。物理ノード２ｃが稼働モードとなったことを検知した物理ノード１ｃは、物理ノード２ｃが論理ノードＮ２に属していることを検出する。ここで、物理ノード１ｃは、例えば、論理ノードＮ５が宛先である場合、物理ノード２ｂにデータを転送していたが、物理ノード２ｃに転送した方が、論理ノードＮ５に早くデータが届く可能性があるといったことを認識する。
【００４１】
そして、物理ノード１ｃは、最短経路アルゴリズムにより予め求めておいた最短経路に基づき、物理ノード２ｃにデータを転送すべきと判定した場合には、実際に、宛先を論理ノードＮ５とする転送対象のデータを受信すると、かかるデータを物理ノード２ｃに転送する。
【００４２】
上述したように一般的なデータ転送装置は、データ転送不可能な装置が現れると、物理トポロジが変更となるため宛先までの経路を再計算する。このため、経路再計算に要する時間だけ宛先にデータが届く時間が遅れることになる。しかし、実施形態に係るデータ転送システム１において、コントローラ１０は、物理ノードを仮想的にグループ化した論理ノードを管理する。また、データ転送装置１００は、物理トポロジに変更が生じた場合であっても、コントローラ１０によって管理される論理トポロジに基づき、変更に起因する物理ノードが属する論理ノード内において他の物理ノードへの転送制御を行う。このため、データ転送装置１００は、物理トポロジ変更による経路再計算を必要とせず、宛先までのデータ転送の遅れを短くすることができる。また、データ転送装置１００は、経路再計算により、宛先までの経路が物理トポロジ変更前の経路より長くなることで、データ転送により長い時間を要してしまうといったことを回避することができる。
【００４３】
〔２．コントローラ〕
次に、実施形態に係るコントローラ１０について説明する。コントローラ１０は、ネットワークトポロジを管理する。具体的には、コントローラ１０は、上記条件１および２に基づいて、物理トポロジを論理化した論理トポロジを管理する。なお、本実施形態で扱う物理トポロジおよび論理トポロジは、図１および図２に示すネットワーク構造であるものとするが、この例に限定されるものではない。
【００４４】
また、論理トポロジは、上記条件１および２を満たすように、所定の物理トポロジから生成されるが、このような生成処理は、例えば、コントローラ１０に対して管理者が、物理トポロジ情報および条件１、２を入力することで、コントローラ１０によって自動で生成されてもよい。また、他の装置に対して管理者が、物理トポロジ情報および条件１および２を入力することで生成されてもよい。そして、生成された論理トポロジ情報を、コントローラ１０に入力してもよい。
【００４５】
そして、コントローラ１０は、例えば、パーソナルコンピュータやサーバコンピュータ等のコンピュータ等である。コントローラ１０は、ネットワークトポロジに対し、１台のコンピュータとして実装してもよく、また、複数台のコンピュータとして実装してもよい。なお、本実施形態では、コントローラ１０を１台のコンピュータとした場合を例として説明する。
【００４６】
ここで、図３を用いて、実施形態に係るコントローラ１０の構成について説明する。図３は、実施形態に係るコントローラ１０の構成例を示す図である。図３に示すように、コントローラ１０は、通信部１１と、記憶部１２と、制御部１３とを有する。なお、図示しないが、コントローラ１０は、入力部や表示部を有してもよい。その場合、入力部は、例えば、キーボードやマウスや操作キー等によって実現される。表示部は、液晶ディスプレイ等によって実現される。
【００４７】
通信部１１は、ネットワークを介して、データ転送装置１００との間での情報の送受信を行う。
【００４８】
記憶部１２は、ハードディスク、ＳＳＤ（Solid  State  Drive）、光ディスクなどの記憶装置である。なお、記憶部１２は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）等のデータを書き換え可能な半導体メモリであってもよい。そして、記憶部１２は、論理トポロジテーブル１４と、論理フォワーディングテーブル１５とを有する。
【００４９】
論理トポロジテーブル１４は、コントローラ１０が管理するネットワークトポロジをデータベース化したものである。ここで、図４に、実施形態に係る論理トポロジテーブル１４の一例を示す。図４に示した例では、論理トポロジテーブル１４は、「物理ノードＩＤ」、「所属論理ノード」、「隣接論理ノード」といった項目を有する。そして、論理トポロジテーブル１４において、項目毎の登録情報は、後述する論理トポロジ制御部１７による物理トポロジと論理トポロジのマッピング処理によって更新される。なお、図４に示す論理トポロジテーブル１４は、図１に示すネットワークトポロジに基づくものである。
【００５０】
「物理ノードＩＤ」は、物理ノードを識別するための識別情報を示す。なお、本実施形態では、物理ノードＩＤは、各物理ノードに付した符号で代用するものとする。例えば、物理ノード１ａの物理ノードＩＤは、「１ａ」であるものとする。「所属論理ノード」は、各物理ノードが所属する論理ノードの識別情報を示す。「隣接論理ノード」は、各物理ノードの隣接ノードが所属する論理ノードの識別情報を示す。
【００５１】
すなわち、図４では、物理ノードＩＤ「１ａ」によって識別される物理ノードは、論理ノード「Ｎ１」に所属するとともに、物理ノードＩＤ「１ａ」の隣接ノードが属する論理ノードは、論理ノード「Ｎ２」および「Ｎ３」であることを示す。
【００５２】
論理フォワーディングテーブル１５は、論理トポロジにおいて、宛先となる論理ノードにデータが最短経路で転送されるには、各物理ノードがどの論理ノードをｎｅｘｔ  ｈｏｐとすればよいかといった情報を記憶したテーブルである。そして、論理フォワーディングテーブル１５は、論理トポロジに基づき、後述する論理フォワーディングテーブル作成部１８によって論理ノード毎に作成されるテーブルである。ここで、図５に、実施形態に係る論理フォワーディングテーブル１５の一例を示す。図５に示した例では、論理フォワーディングテーブル１５は、「宛先論理ノード」、「ｎｅｘｔ  ｈｏｐ」といった項目を有する。なお、図５に示す論理フォワーディングテーブル１５は、図２に示す論理トポロジに基づくものである。
【００５３】
「宛先論理ノード」は、転送対象のデータの宛先となる物理ノードが所属する論理ノードを示す。「ｎｅｘｔ  ｈｏｐ」は、「宛先論理ノード」へ転送対象のデータを転送するために所定の論理ノードが、転送対象のデータを転送する先の論理ノードを示す。なお、通常データ転送装置は、実在する物理トポロジに対し、最短経路アルゴリズムを適用することで宛先に対するｎｅｘｔ  ｈｏｐを求めるが、本実施形態において、コントローラ１０は、最短経路アルゴリズムを論理トポロジに適用することでｎｅｘｔ  ｈｏｐを求める。なお、転送対象のデータは、実際は、論理ノードに属するいずれかの物理ノードから、宛先論理ノードに属するいずれかの物理ノードへとデータが転送されてゆくことになる。
【００５４】
ここで、図５に示すテーブルＴ１は、図１および図２における論理ノードＮ１に所属する各物理ノードにコントローラ１０から配信される論理フォワーディングテーブル１５であることを示す。そして、例えば、上から１番目のエントリに着目すると、宛先論理ノード「Ｎ２」とｎｅｘｔ  ｈｏｐ「Ｎ２」が対応付けられている。これは、宛先論理ノード「Ｎ２」に所属する物理ノードが本来の宛先である場合、論理ノードＮ１に属する物理ノードは、宛先物理ノードが論理ノード「Ｎ２」に属することから、ｎｅｘｔ  ｈｏｐ「Ｎ２」とすることを示す。
【００５５】
また、上から３番目のエントリに着目すると、宛先論理ノード「Ｎ４」とｎｅｘｔ  ｈｏｐ「Ｎ２」が対応付けられている。これは、宛先論理ノード「Ｎ４」に所属する物理ノードが本来の宛先である場合、論理ノードＮ１に属する物理ノードは、宛先の物理ノードが論理ノード「Ｎ４」に所属することから、ｎｅｘｔ  ｈｏｐ「Ｎ２」とすることを示す。
【００５６】
図３に戻り、制御部１３は、コントローラ１０を制御するデバイスである。制御部１３としては、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路を採用できる。制御部１３は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部１３は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部１３は、受信部１６と、論理トポロジ制御部１７と、論理フォワーディングテーブル作成部１８と、配信部１９とを有する。
【００５７】
受信部１６は、各種情報を受信する。例えば、受信部１６、稼働モードまたは省電力モードになったデータ転送装置１００から物理ノードＩＤ、隣接論理ノード、稼働状況に関する情報等を受信する。そして、受信部１６は、データ転送装置１００から受信した情報を論理トポロジ制御部１７に送信する。
【００５８】
論理トポロジ制御部１７は、論理トポロジテーブル１４の記憶情報を更新することにより、論理トポロジを管理する。具体的には、論理トポロジ制御部１７は、受信部１６から各種情報を受信した場合に、物理トポロジと論理トポロジのマッピング処理を行う。
【００５９】
さらに具体的には、論理トポロジ制御部１７は、受信部１６から各種情報を受信すると、論理トポロジテーブル１４にアクセスする。そして、論理トポロジ制御部１７は、論理トポロジテーブル１４の隣接論理ノード一覧を検索し、受信した隣接論理ノードと一致する組み合わせの隣接論理ノードのエントリが存在するか否かを判定する。そして、論理トポロジ制御部１７は、判定結果と稼働状況に応じて、論理トポロジテーブル１４の登録情報を更新するといったマッピング処理を行う。
【００６０】
また、論理トポロジ制御部１７は、マッピング処理が終了すると、マッピング処理終了を示す信号を論理フォワーディングテーブル作成部１８に送信する。
【００６１】
ここで、論理トポロジ制御部１７によるマッピング処理について、具体例を用いて説明する。まず、図１に示す物理トポロジに基づいて、図２に示す論理トポロジが生成されることにより、コントローラ１０は、図４に示す論理トポロジテーブル１４を既に所持しているものとする。
【００６２】
ここで、物理ノード１ｂがデータ転送不可能状態からデータ転送可能な稼働モードへと切り替わった場合を想定する。図６Ａは、物理ノードがデータ転送可となった場合のマッピング処理の一例を示す図である。なお、図６Ａに示す論理トポロジテーブル１４は、図４に示したものと同一である。
【００６３】
物理ノード１ｂがデータ転送不可能状態からデータ転送可能な稼働モードへと切り替わったことに応じて、コントローラ１０の受信部１６は、物理ノード１ｂから物理ノード１ｂの隣接ノードが所属する隣接論理ノード、物理ノード１ｂの物理ノードＩＤ、稼働状況を示す情報を受信する。例えば、受信部１６は、物理ノード１ｂから隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」、物理ノードＩＤ「１ｂ」、稼働状況「データ転送可」といった情報を受信し、かかる情報を論理トポロジ制御部１７に送信したとする。
【００６４】
論理トポロジ制御部１７は、受信部１６から各種情報を受信すると、論理トポロジテーブル１４にアクセスする。そして、論理トポロジ制御部１７は、論理トポロジテーブル１４の隣接論理ノード一覧を検索し、隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」と一致する組み合わせの隣接論理ノードのエントリが存在するか否かを判定する。
【００６５】
図６Ａの例では、論理トポロジ制御部１７は、論理トポロジテーブル１４の隣接論理ノード一覧を検索することで、隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」と一致する組み合わせの隣接論理ノードのエントリが存在すると判定する。この場合、論理トポロジ制御部１７は、論理トポロジテーブル１４において、隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」に対応する物理ノードＩＤ欄に、データ転送可となった物理ノード１ｂのＩＤ「１ｂ」を登録する。これにより、論理トポロジ制御部１７は、物理ノード１ｂを論理ノード「Ｎ１」に所属させる。そして、論理トポロジ制御部１７は、マッピング処理終了を示す信号を論理フォワーディングテーブル作成部１８に送信する。
【００６６】
次に、受信部１６が受信した隣接論理ノードと一致する組み合わせの隣接論理ノードのエントリが、論理トポロジテーブル１４に存在しない場合について、論理トポロジ制御部１７の処理ついて説明する。
【００６７】
ここで、図１に示す物理トポロジにおいて、データ転送装置１００である物理ノード８ｘが新設されたとする。これに応じて、コントローラ１０の受信部１６は、物理ノード８ｘから物理ノード８ｘの隣接ノードが所属する隣接論理ノード、物理ノード８ｘの物理ノードＩＤ、稼働状況を示す情報を受信する。例えば、受信部１６は、物理ノード８ｘから隣接論理ノード「Ｎ１、Ｎ３」、物理ノードＩＤ「８ｘ」、稼働状況「データ転送可」といった情報を受信し、かかる情報を論理トポロジ制御部１７に送信したとする。
【００６８】
論理トポロジ制御部１７は、受信部１６から各種情報を受信すると、論理トポロジテーブル１４にアクセスする。そして、論理トポロジ制御部１７は、論理トポロジテーブル１４の隣接論理ノード一覧を検索し、隣接論理ノード「Ｎ１、Ｎ３」と一致する組み合わせの隣接論理ノードのエントリが存在するか否かを判定する。
【００６９】
図６Ａの例では、論理トポロジ制御部１７は、論理トポロジテーブル１４の隣接論理ノード一覧を検索することで、隣接論理ノード「Ｎ１、Ｎ３」と一致する組み合わせの隣接論理ノードのエントリが存在しないと判定する。この場合、論理トポロジ制御部１７は、物理ノード８ｘは現時点のどの論理トポロジにも属していない物理ノードであると認識し、物理ノード８ｘを所属させる新たな論理ノードとして、例えば、論理ノード「Ｎ８」を作成する。具体的には、論理トポロジ制御部１７は、論理トポロジテーブル１４において、新たな論理ノード用のエントリを作成し、物理ノードＩＤと、隣接論理ノードとを対応付けて新規登録する。例えば、論理トポロジ制御部１７は、作成したエントリにおいて、物理ノードＩＤ欄に「８ｘ」、所属論理ノード欄に「Ｎ８」、隣接論理ノード欄に「Ｎ１、Ｎ３」を登録する。そして、論理トポロジ制御部１７は、マッピング処理終了を示す信号を論理フォワーディングテーブル作成部１８に送信する。
【００７０】
ここで、図６Ｂは、図６Ａに示すマッピング処理を概念的に示した図である。そして、図６Ｂに示す論理トポロジは、図２に示す論理トポロジの一部である。上述したように、いずれの論理ノードにも属さない物理ノード８ｘが新設された場合には、図６Ｂに示すように、論理トポロジ制御部１７は、現時点での論理トポロジに対し、物理ノード８ｘを所属させた新たな論理トポロジを追加するといったマッピング処理を行う。
【００７１】
ここまで、データ転送装置１００が省電力モードから稼働モードになったり、新設される等により、データ転送装置１００が稼働状態として、データ転送可となった場合のコントローラ１０によるマッピング処理について説明してきた。次に、所定のデータ転送装置１００が省電力モードになったり、物理トポロジから削除される等により、データ転送装置１００が稼働状態として、データ転送不可能となった場合のコントローラ１０によるマッピング処理について説明する。
【００７２】
ここでは、上述した物理ノード８ｘが省電力モードに切り替えられるなどにより、データ転送不可能となった場合を想定する。図７Ａは、物理ノードがデータ転送不可能となった場合のマッピング処理の一例を示す図である。
【００７３】
物理ノード８ｘがデータ転送可能状態からデータ転送不可能状態へと切り替わったことに応じて、コントローラ１０の受信部１６は、物理ノード８ｘから物理ノード８ｘの隣接ノードが所属する隣接論理ノード、物理ノード８ｘの物理ノードＩＤ、稼働状況を示す情報を受信する。例えば、受信部１６は、物理ノード８ｘから隣接論理ノード「Ｎ１、Ｎ３」、物理ノードＩＤ「８ｘ」、稼働状況「データ転送不可能」といった情報を受信し、かかる情報を論理トポロジ制御部１７に送信したとする。
【００７４】
論理トポロジ制御部１７は、受信部１６から各種情報を受信すると、論理トポロジテーブル１４にアクセスする。そして、論理トポロジ制御部１７は、論理トポロジテーブル１４の隣接論理ノード一覧を検索し、隣接論理ノード「Ｎ１、Ｎ３」と一致する組み合わせの隣接論理ノードのエントリが存在するか否かを判定する。論理トポロジ制御部１７が、物理ノード８ｘの稼働状況「データ転送不可能」を受信するということは、物理ノード８ｘは、既にいずれかの論理ノードに属しているということであり、その情報が論理トポロジテーブルに既に登録されているということである。このため、論理トポロジ制御部１７は、稼働状況「データ転送不可能」を受信した場合には、論理トポロジテーブル１４の隣接論理ノード一覧を検索することで、対象となる物理ノードのエントリが存在すると判定することになる。
【００７５】
すなわち、図７Ａの例では、論理トポロジ制御部１７は、論理トポロジテーブル１４の隣接論理ノード一覧を検索することで、隣接論理ノード「Ｎ１、Ｎ３」と一致する組み合わせの隣接論理ノードのエントリが存在すると判定する。ここで、論理トポロジ制御部１７は、物理ノード８ｘはデータ転送不可能状態であり、物理トポロジにおいて不必要なノードと認識し、隣接論理ノード「Ｎ１、Ｎ３」と対応する物理ノードＩＤ欄において、物理ノード８ｘのＩＤ「８ｘ」を削除する。
【００７６】
また、論理トポロジ制御部１７は、物理ノード８ｘのＩＤ「８ｘ」を削除したことにより、論理ノードＮ８において稼働中の物理ノードが無くなったことにより、論理ノードＮ８に関するエントリを論理トポロジテーブル１４から完全に削除する。なお、論理トポロジ制御部１７は、物理ノード８ｘのＩＤ「８ｘ」を削除した場合、例えば、同物理ノードＩＤ欄において、他のＩＤが残っている場合には、論理ノードＮ８に関するエントリを論理トポロジテーブル１４から完全に削除する処理は行わない。そして、論理トポロジ制御部１７は、マッピング処理終了を示す信号を論理フォワーディングテーブル作成部１８に送信する。
【００７７】
ここで、図７Ｂは、図７Ａに示すマッピング処理を概念的に示した図である。上述したように、物理ノード８ｘがデータ転送不可能となり、論理ノードＮ８において稼働中の物理ノードが無くなった場合には、論理トポロジ制御部１７は、現時点での論理トポロジに対し、論理ノードＮ８を削除するといったマッピング処理を行う。
【００７８】
図３に戻り、論理フォワーディングテーブル作成部１８は、論理ノード毎の論理フォワーディングテーブル１５を作成する。具体的には、論理フォワーディングテーブル作成部１８は、論理トポロジに対し、既存の最短経路アルゴリズムを適用することにより、宛先論理ノードと、ｎｅｘｔ  ｈｏｐとを対応付けた論理フォワーディングテーブル１５を作成する。また、論理フォワーディングテーブル作成部１８は、論理フォワーディングテーブル１５の作成終了を示す信号を配信部１９に送信する。
【００７９】
例えば、論理フォワーディングテーブル作成部１８は、図１に示す物理トポロジから作成された論理トポロジ（図２）に対し、最短経路アルゴリズムを適用した場合には、図２に示すような最短経路を求めることで、かかる最短経路に対応する論理フォワーディングテーブル１５を作成する。図５に示す論理フォワーディングテーブル１５は、図２の論理トポロジに基づき、論理フォワーディングテーブル作成部１８によって作成されたものであり、論理ノードＮ１に対して作成されたものを先頭に示している。
【００８０】
論理フォワーディングテーブル作成部１８は、論理トポロジ制御部１７からマッピング処理終了を示す信号を受け付ける度に、論理フォワーディングテーブル１５を作成する。つまり、論理フォワーディングテーブル作成部１８は、物理トポロジが変更となる度に、論理フォワーディングテーブル１５を作成する。このため、論理フォワーディングテーブル１５は、常に最新に保たれる。
【００８１】
配信部１９は、物理ノードそれぞれに対し、当該物理ノードが所属する論理ノード用の論理フォワーディングテーブル１５と、当該物理ノードが所属する論理ノードとを配信する。これにより、各物理ノードは、自ノードが所属する論理ノードや、隣接論理ノードを把握することができる。
【００８２】
〔３．データ転送装置〕
次に、実施形態に係るデータ転送装置１００について説明する。データ転送装置１００は、本実施形態において、物理トポロジにおける物理ノードに相当する。そして、データ転送装置１００は、コントローラ１０の配信部１９から受信した論理フォワーディングテーブル１５に基づき、データ転送先を決めるための各種処理およびデータ転送を実行する。また、データ転送装置１００は、隣接ノードの稼働状況が切り替わる等で、物理トポロジが変更となった場合であっても、以下に示す処理により経路再計算を行うことなく、迅速にデータ転送できる装置である。なお、データ転送装置１００は、実際には、スイッチやルータ等である。
【００８３】
ここで、図８を用いて、実施形態に係るデータ転送装置１００の構成について説明する。図８は、実施形態に係るデータ転送装置１００の構成例を示す図である。図８に示すように、データ転送装置１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。
【００８４】
通信部１１０は、ネットワークを介して、コントローラ１０および他のデータ転送装置１００との間での情報の送受信を行う。また、通信部１１０は、複数のポートによって構成される。そして、各ポートは、所定のデータ転送装置１００の所定のポートと１対１でリンクされる。
【００８５】
記憶部１２０は、ハードディスク、ＳＳＤ、光ディスクなどの記憶装置である。なお、記憶部１２０は、ＲＡＭ、フラッシュメモリ、ＮＶＳＲＡＭ等のデータを書き換え可能な半導体メモリであってもよい。そして、記憶部１２０は、ポート対応テーブル１２１と、フォワーディングテーブル１２２とを有する。
【００８６】
ポート対応テーブル１２１は、後述する、ポート対応テーブル作成部１３１によって作成される。ここで、図９に、実施形態に係るポート対応テーブル１２１の一例を示す。図９に示すように、ポート対応テーブル１２１は、データ転送装置１００が有するインタフェースである「ポート」に、当該ポートと接続される隣接ノードが所属する論理ノードを「ｎｅｘｔ  ｈｏｐ」として対応付けたテーブルである。ポート対応テーブル作成部１３１は、各項目の欄に所定の情報を登録することで、ポート対応テーブルを作成する。なお、図９は、物理ノード１ｂのポート対応テーブル作成部１３１よって作成されたポート対応テーブルを示す。
【００８７】
フォワーディングテーブル１２２は、後述するフォワーディングテーブル作成部１３４によって作成される。具体的には、フォワーディングテーブル１２２は、ポート対応テーブル作成部１３１が、コントローラ１０から受信した論理フォワーディングテーブル１５と、ポート対応テーブル１２１とを組み合わせることにより作成される。
【００８８】
図８に戻り、制御部１３０は、データ転送装置１００を制御するデバイスである。制御部１３０としては、ＣＰＵ、ＭＰＵ等の電子回路や、ＡＳＩＣ、ＦＰＧＡ等の集積回路を採用できる。制御部１３０は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部１３０は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部１３０は、ポート対応テーブル作成部１３１と、送信部１３２と、受信部１３３と、フォワーディングテーブル作成部１３４と、転送部１３５と、変更部１３６とを有する。
【００８９】
ポート対応テーブル作成部１３１は、所定のタイミングでポート対応テーブル１２１を作成する。具体的には、ポート対応テーブル作成部１３１は、データ転送装置１００のインタフェースについて、ポート毎の対向するノードが所属する論理ノードを判定し、各ポートと、論理ノードとを対応付けてポート対応テーブル１２１の所定の欄に登録してゆくことで、ポート対応テーブル１２１を作成する。
【００９０】
ここで、図１０を用いて、ポート対応テーブル作成部１３１の処理について具体例を用いて説明する。図１０は、ポート対応テーブル作成を説明するための図である。図１０に示す物理トポロジは、ポート対応テーブル１２１の作成を説明するために、図１に示す物理トポロジから一部を抜粋したものである。そして、図１０に示すように、データ転送装置１００として、物理ノード１ａによるポート対応テーブル作成部１３１の作成処理を例に挙げて説明する。なお、かかる処理は、物理ノード１ａだけでなく、全ての物理ノードが行うものである。
【００９１】
まず、物理ノード１ａは、インタフェースとして、ポート１ａ１および１ａ２を含むものとする。そして、図１０の例では、ポート１ａ１は、物理ノード２ａとリンクされ、ポート１ａ２は、物理ノード３ｂとリンクされている。このように、物理ノードの各ポートは、自ノードと異なる他の１つの物理ノードと１対１でリンクされる。例えば、ポート１ａ１は、物理ノード２ａと物理ノード２ｂとリンクされるといったように、１対複数でリンクされることはない。
【００９２】
そして、物理ノード１ａのポート対応テーブル作成部１３１は、所定のタイミングで、ポート毎の対向するノードが所属する論理ノードを判定する。例えば、ポート対応テーブル作成部１３１は、ポート１ａ１が物理ノード２ａとリンクされている、つまり対向しているため、ポート１ａ１と対向する対向ノードである物理ノード２ａは論理ノードＮ２に属していると判定する。そして、ポート対応テーブル作成部１３１は、ポート対応テーブル１２１の「ｎｅｘｔ  ｈｏｐ」の欄に論理ノード「Ｎ２」を登録し、これに対応付ける形で、ポート欄に「１ａ１」を登録する。
【００９３】
また、ポート対応テーブル作成部１３１は、ポート１ａ２が物理ノード３ｂと対向しているため、ポート１ａ２と対向する物理ノード３ｂは論理ノードＮ３に属していると判定する。そして、ポート対応テーブル作成部１３１は、ポート対応テーブル１２１の「ｎｅｘｔ  ｈｏｐ」の欄に論理ノード「Ｎ３」を登録し、これに対応付ける形で、ポート欄に「１ａ２」を登録する。
【００９４】
以上のようにして、物理ノード１ａのポート対応テーブル作成部１３１によって、各種情報が登録されたポート対応テーブル１２１が、図９に示したものとなる。例えば、ポート１ａ１から送信されたデータは、ポート１ａ１とリンクされる物理ノード２ａに届くことになるので、物理ノード２ａは、ポート１ａ１に対するｎｅｘｔ  ｈｏｐである。これを論理トポロジの観点からみると、論理ノードＮ２は、ポート１ａ１に対するｎｅｘｔ  ｈｏｐといえる。つまり、ポート対応テーブル１２１において、ｎｅｘｔ  ｈｏｐとは、このような意味を持つ。
【００９５】
図８に戻り、送信部１３２は、自ノードであるデータ転送装置１００の稼働状況が切り替わった場合、切り替わった稼働状況と、自ノードであるデータ転送装置１００の隣接ノードが属している論理ノードである隣接倫理ノードと、自ノードのあるデータ転送装置の物理ノードＩＤとをコントローラ１０へ送信する。例えば、各物理ノードに対し、予め、時間帯毎に応じて、稼働モードと省電力モードが自動で切り替わるようプログラムされているとする。この場合、送信部１３２は、各時間帯になる直前に、この後切り替わる稼働状況を示す情報と、隣接論理ノードと、物理ノードＩＤとをコントローラ１０に送信する。稼働状況を示す情報とは、例えば、「データ転送可」、「データ転送不可能」といった情報である。
【００９６】
例えば、物理ノード１ａが省電力モードから稼働モードに切り替わった場合、まず、物理ノード１ａのポート対応テーブル作成部１３１が上記のように、ポート対応テーブル１２１を作成する。これにより、物理ノード１ａは、自ノードと隣接ノードとの関係を把握できるようになる。そして、送信部１３２は、稼働状況を示す情報「データ転送可」と、隣接論理ノード「Ｎ２、Ｎ３」と、物理ノードＩＤ「１ａ」とをコントローラ１０に送信する。
【００９７】
ここで、コントローラ１０は、送信部１３２から稼働状況を示す情報と、隣接論理ノードと、物理ノードＩＤとを受信すると、受信した稼働状況を示す情報、隣接論理ノード、物理ノードＩＤに基づき、マッチング処理を行うことで、論理トポロジテーブル１４を更新する。そして、コントローラ１０は、更新した論理トポロジテーブル１４に基づき、論理トポロジについて最短経路の再計算を行うことで、論理フォワーディングテーブル１５を作成する。
【００９８】
なお、稼働状況が切り替わる対象の物理ノードの送信部１３２が、このような各種情報をコントローラ１０に送信するのではなく、例えば、対象の物理ノードと隣接する隣接ノードが稼働状況の切り替わりを検知し、検知した稼働状況を示す情報、隣接物理ノード、物理ノードＩＤをコントローラ１０に送信してもよい。また、稼働状況の切り替えに応じて、管理者がコントローラ１０に対し、直接入力してもよい。
【００９９】
受信部１３３は、コントローラ１０から、自ノードであるデータ転送装置１００が属する論理ノード用の論理フォワーディングテーブル１５と、自ノードであるデータ転送装置１００が所属する論理ノードの情報を、コントローラ１０からを受信する。
【０１００】
フォワーディングテーブル作成部１３４は、受信部１３３によってコントローラ１０から論理フォワーディングテーブル１５が受信された場合に、受信された論理フォワーディングテーブル１５に基づき、実際にデータ転送の際に用いられるフォワーディングテーブル１２２を作成する。具体的には、フォワーディングテーブル作成部１３４は、ポート対応テーブル作成部１３１によって予め作成されたポート対応テーブル１２１と、受信部１３３によって受信された論理フォワーディングテーブル１５を組み合わせることにより、フォワーディングテーブル１２２を作成する。なお、フォワーディングテーブル作成部１３４は、自ノードであるデータ転送装置１００が稼働モードになる等により、稼働状況「データ転送可」となった場合に限り、フォワーディングテーブル１２２を作成する。
【０１０１】
ここで、フォワーディングテーブル１２２の作成処理について、物理ノード１ａを例に用いて説明する。図１１は、フォワーディングテーブル１２２の作成処理を説明するための図である。図１１において、論理フォワーディングテーブル１５は、受信部１３３によってコントローラ１０から受信された論理ノードＮ１用の論理フォワーディングテーブル１５である。また、図１１において、ポート対応テーブル１２１は、物理ノード１ａのポート対応テーブル作成部１３１によって作成されたものである。
【０１０２】
そして、物理ノード１ａのフォワーディングテーブル作成部１３４は、受信部１３３から論理フォワーディングテーブル１５を受信したことを示す信号を受け付けると、かかる論理フォワーディングテーブル１５と、ポート対応テーブル１２１を取得する。そして、フォワーディングテーブル作成部１３４は、図１１に示すように、取得した各テーブルを組み合わせることにより、フォワーディングテーブル１２２を作成する。このように、フォワーディングテーブル１２２は、転送対象のデータの宛先となる物理ノードが所属する論理ノードを示す「宛先論理ノード」と、転送対象のデータの出力先となる「ポート」とを対応付けたテーブルである。
【０１０３】
図８に戻り、転送部１３５は、自ノードであるデータ転送装置１００が転送対象のデータを受信した場合に、フォワーディングテーブル１２２に基づき、かかる転送対象のデータを転送する。例えば、物理ノード１ａが、転送対象のデータを受信した場合、物理ノード１ａの転送部１３５は、転送対象のデータに含まれる宛先論理ノードを検出する。転送部１３５は、宛先論理ノード「Ｎ５」を検出したとすると、フォワーディングテーブル１２２を参照し、ポート１ａ１から転送対象のデータを転送する。なお、転送対象のデータは、受信部１３３によって受信されてもよいし、その他の専用の部位によって受信されてもよい。
【０１０４】
さて、ここまでコントローラ１０の処理と、稼働状況に変化が生じたデータ転送装置１００（物理ノード）の処理について説明してきた。次に、図１２を用いて、これらの処理の流れを説明する。図１２は、コントローラ１０およびデータ転送装置１００の処理の流れを説明する図である。なお、図１２では、データ転送装置１００が「データ転送不可能」な状態から「データ転送可」な状態へ切り替わった場合についての処理について説明するが、例えば、データ転送装置１００が「データ転送可」から「データ転送不可能」な状態へ切り替わった場合であっても、処理の流れは同様である。
【０１０５】
まず、データ転送装置１００は、省電力モードから稼働モードへの切り替えなどにより、稼働状況「データ転送可」となった場合、まず、ポート対応テーブル１２１を作成する（ステップＳ１）。具体的には、データ転送装置１００のポート対応テーブル作成部１３１は、自ノードについてポート毎の対向する物理ノードを検出することにより、対向ノードの属する論理ノードを判定する。そして、データ転送装置１００は、各ポートと、各ポートについて判定した論理ノードとを対応付けることにより、ポート対応テーブル１２１を作成する。
【０１０６】
次に、データ転送装置１００は、コントローラ１０に対し、自ノードの隣接ノード（対向ノードに相当）が属する隣接論理ノード、自ノードの物理ノードＩＤ、稼働状況「データ転送可」を送信する（ステップＳ２）。なお、例えば、ステップＳ１が行われるタイミングは、ステップＳ２と同時であってもよいし、ステップＳ２より後であってもよい。
【０１０７】
コントローラ１０は、データ転送装置１００から隣接論理ノードと、物理ノードＩＤと、稼働状況とを受信すると、マッピング処理により、論理トポロジテーブル１４の登録内容を更新する（ステップＳ３）。具体的には、コントローラ１０の論理トポロジ制御部１７は、論理トポロジテーブル１４にアクセスし、隣接論理ノードの組み合わせが既に登録されている場合には、それに対応付けて、受信した物理ノードＩＤを登録する。一方、論理トポロジ制御部１７は、隣接論理ノードの組み合わせが存在しない場合には、かかるデータ転送可となったデータ転送装置１００は、論理トポロジテーブル１４に登録のない新たな論理ノードに属していると認識し、その論理ノード用のエントリを論理トポロジテーブル１４に作成する。そして、論理トポロジ制御部１７は、作成したエントリに所定の情報を登録することにより、論理トポロジに新たな論理ノードを追加する。
【０１０８】
なお、データ転送装置１００が「データ転送不可能」となった場合には、論理トポロジ制御部１７は、論理トポロジテーブル１４の物理ノードＩＤ欄から、「データ転送不可能」となったデータ転送装置１００の物理ノードＩＤを削除する。ここで、論理トポロジ制御部１７は、削除により物理ノードＩＤ欄が空になった場合には、論理トポロジテーブル１４から対応するエントリを完全に削除する。
【０１０９】
次に、コントローラ１０は、論理フォワーディングテーブル１５を作成する（ステップＳ４）。具体的には、コントローラ１０の論理フォワーディングテーブル作成部１８は、論理トポロジ制御部１７により、論理トポロジテーブル１４が更新されると、更新された論理トポロジテーブル１４に基づいて、論理ノード毎の論理フォワーディングテーブル１５を作成する。例えば、論理フォワーディングテーブル作成部１８は、論理トポロジテーブル１４に対応する論理トポロジについて、最短経路アルゴリズムを適用することにより、論理ノード毎の論理フォワーディングテーブル１５を作成する。
【０１１０】
次に、コントローラ１０の配信部１９は、論理トポロジテーブル１４に登録されている物理ノードそれぞれ対し、当該物理ノードが所属する論理ノード用の論理フォワーディングテーブル１５と、当該物理ノードが所属する論理ノード情報を配信する（ステップＳ５）。
【０１１１】
かかるデータ転送可となったデータ転送装置１００は、論理フォワーディングテーブル１５と、論理ノード情報を受信すると、フォワーディングテーブル１２２を作成する（ステップＳ６）。具体的には、データ転送装置１００のフォワーディングテーブル作成部１３４は、ポート対応テーブル作成部１３１によって予め作成されたポート対応テーブル１２１と、受信部１３３によって受信された論理フォワーディングテーブル１５を組み合わせることにより、フォワーディングテーブル１２２を作成する。
【０１１２】
ここで、かかるデータ転送可となったデータ転送装置１００が転送対象のデータを受信した場合には、転送部１３５は、フォワーディングテーブル１２２を参照し、受信した転送対象のデータに含まれる宛先論理ノードに対応するポートから、宛先論理ノードへ転送対象のデータを転送する。以上が処理の流れである。
【０１１３】
次に、データ転送装置１００が隣接ノードの稼働状況の変化に応じて、自ノードのフォワーディングテーブル１２２を変更する処理について説明する。具体的には、データ転送装置１００の変更部１３６は、隣接ノードの稼働状況が「データ転送不可能」に変化した場合には、自ノードのフォワーディングテーブル１２２の「ポート欄」おいて、「データ転送不可能」となった隣接ノードをｎｅｘｔ  ｈｏｐとする欄を、「データ転送不可能」となった隣接ノードが所属する論理ノードに属する他の物理ノードとリンクを有するポートに変更する。
【０１１４】
また、変更部１３６は、隣接ノードの稼働状況が「データ転送可」に変化した場合には、自ノードのフォワーディングテーブル１２２の「ポート欄」おいて、「データ転送可」となった隣接ノードが所属する論理ノードに属する他の物理ノードとリンクを有するポートをｎｅｘｔ  ｈｏｐとする欄を、「データ転送可」となった隣接ノードとリンクを有するポートに変更するか否かを判定し、判定結果に基づいて、「データ転送可」となった隣接ノードが所属する論理ノードに所属する他の物理ノードとリンクを有するポートをｎｅｘｔ  ｈｏｐとする欄を、「データ転送可」となった隣接ノードとリンクを有するポートに変更する。
【０１１５】
このような、データ転送装置１００によるフォワーディングテーブル１２２の変更処理について、具体例を用いて説明する。まず、図１３を用いて、隣接ノードの稼働状況が「データ転送不可能」に変化した場合の変更処理について説明する。図１３は、稼働状況が「データ転送不可能」に変化した場合におけるフォワーディングテーブル１２２の変更処理を説明する図である。図１３に示す物理トポロジは、フォワーディングテーブル１２２の変更処理を説明するために、図１に示す物理トポロジから一部を抜粋したものである。そして、図１３に示すように、データ転送装置１００として、物理ノード１ｂの変更部１３６によるフォワーディングテーブル１２２の変更処理を例に挙げて説明する。なお、かかる処理は、物理ノード１ｂだけでなく、全ての物理ノードが、隣接ノードの稼働状況の変化に応じて行うものである。
【０１１６】
図１３に示すように、物理ノード３ｃが稼働モードになる等により、稼働状況「データ転送可」となったとする。これにより、コントローラ１０は、物理ノード３ｃから受信した隣接論理ノード、物理ノードＩＤ、稼働状況に基づいて、マッピング処理を行うことで更新した論理フォワーディングテーブル１５を各物理ノードに配信する。この処理の流れについては上述した通りである。そして、各物理ノードの変更部１３６は、例えば、受信部１３３によりコントローラ１０から論理フォワーディングテーブル１５が受信されることにより、いずれかの物理ノードの稼働状況が変化したことを把握する。そして、各物理ノード変更部１３６は、稼働状況が変化した物理ノードが隣接ノードであるか否かを判定するとともに、隣接ノードである場合には、その隣接ノードの稼働状況と、隣接ノードが所属する論理ノードを判定する。
【０１１７】
なお、変更部１３６は、定期的に隣接ノードにアクセスすることにより、隣接ノードの稼働状況が変化したか否かを判定してもよい。また、変更部１３６は、転送対象のデータが受信された場合に、隣接ノードの稼働状況が変化したか否かを判定してもよい。また、稼働状況が変化した対象の物理ノードが、変化する直前に隣接ノードに対し、この後稼働状況が変化する旨を知らせてもよい。
【０１１８】
ここでは、隣接ノードである物理ノード３ｃが「データ転送不可能」となったと判定した物理ノードのうち、物理ノード１ｂを例に用いて説明する。物理ノード１ｂの変更部１３６は、隣接ノードである物理ノード３ｃが「データ転送不可能」となったことにより、物理ノード３ｃが所属する論理ノードにおいて、物理ノード３ｃ以外の物理ノードに代わりにデータ転送させるようにする。
【０１１９】
ここで、物理ノード１ｂの変更部１３６は、物理ノード３ｃが論理ノードＮ３に所属していると判定する。そして、変更部１３６は、ポート「１ｂ３」が物理ノード３ｃとリンクされていることから、ポート対応テーブル１２１にいて、「１ｂ３」の登録を削除する（ステップＳ１１）。次に、変更部１３６は、フォワーディングテーブル１２２において、ポート「１ｂ３」に対する宛先論理ノードを取得する（ステップＳ１２）。図１３の例では、変更部１３６は、ポート「１ｂ３」に対する宛先論理ノードとして、宛先論理ノード「Ｎ３、Ｎ７」を取得する。なお、図１３に示すフォワーディングテーブル１２２は、物理ノード１ｂによって予め作成され、現在使用されているものの一例である。
【０１２０】
そして、変更部１３６は、コントローラ１０から受信した論理フォワーディングテーブル１５を参照し、取得した宛先論理ノード「Ｎ３、Ｎ７」に対するｎｅｘｔ  ｈｏｐを取得する（ステップＳ１３）。図１３の例では、変更部１３６は、宛先論理ノード「Ｎ３、Ｎ７」に対するｎｅｘｔ  ｈｏｐとして、ｎｅｘｔ  ｈｏｐ「Ｎ３」を取得する。
【０１２１】
次に、変更部１３６は、再び、ポート対応テーブル１２１を参照し、ｎｅｘｔ  ｈｏｐ「Ｎ３」を取得したことにより、ｎｅｘｔ  ｈｏｐ「Ｎ３」に対応するポート欄において、転送可能なポートを取得する（ステップＳ１４）。具体的には、変更部１３６は、転送可能なポートとして、ポート「１ｂ２」を取得する。ポート「１ｂ２」は、「データ転送不可能」となった物理ノード３ｃが所属する論理ノードＮ３に所属する物理ノード３ａとリンクを有する。
【０１２２】
そして、変更部１３６は、フォワーディングテーブル１２２において、宛先論理ノード「Ｎ３、Ｎ７」に対するポートを、ポート「１ｂ３」からポート「１ｂ２」に変更し、処理を終了する（ステップＳ１５）。
【０１２３】
なお、変更部１３６は、フォワーディングテーブル１２２の変更処理を、論理フォワーディングテーブル１５を用いずに行ってもよい。例えば、変更部１３６は、隣接ノードである物理ノード３ｃが「データ転送不可能」となったと判定した場合に、かかる物理ノード３ｃが所属する論理ノードに所属し、かつ、自ノードであるデータ転送装置１００と隣接関係にある物理ノードを検出する。さらに、変更部１３６は、検出した物理ノードとリンクを有するポートを検出する。図１３の例では、変更部１３６は、ポート「１ｂ２」が物理ノード３ｃが属する論理ノードＮ３に属する物理ノード３ａとリンクを有することを検出する。そして、変更部１３６は、フォワーディングテーブル１２２のポート欄において、ポート「１ｂ３」をポート「１ｂ２」に変更し、処理を終了する。
【０１２４】
これにより、物理ノード１ｂは、物理ノード３ｃが「データ転送不可能」となったことにより、ポート「１ｂ３」を使用できなくなった場合であっても、ポート「１ｂ３」を用いて宛先論理ノードへ転送すべきデータを、ポート「１ｂ２」を代わりに用いることで、ホップ数を変えることなく転送することができる。
【０１２５】
また、物理ノード１ｂは、隣接ノードが「データ転送不可能」となったことにより物理トポロジが変化したとしても、かかる変化に応じて、「データ転送不可能」となった隣接ノードが所属する論理ノード内で変更処理を行うだけでよく、経路再計算によるデータ転送の遅れを短くすることができる。
【０１２６】
さて、隣接ノードが「データ転送不可能」となった場合におけるデータ転送装置１００のフォワーディングテーブル１２２の変更処理について説明したが、以下では、隣接ノードが「データ転送可」となった場合におけるデータ転送装置１００のフォワーディングテーブル変更処理について説明する。
【０１２７】
図１４は、稼働状況が「データ転送可」に変化した場合におけるフォワーディングテーブル１２２の変更処理を説明する図である。図１４に示す物理トポロジは、図１３同様、フォワーディングテーブル１２２の変更処理を説明するために、図１に示す物理トポロジから一部を抜粋したものである。そして、図１４に示すように、データ転送装置１００として、物理ノード１ｂの変更部１３６によるフォワーディングテーブル１２２の変更処理を例に挙げて説明する。なお、かかる処理は、物理ノード１ｂだけでなく、全ての物理ノードが、隣接ノードの稼働状況の変化に応じて行うものである。
【０１２８】
図１４に示すように、物理ノード３ｃが稼働モードになる等により、稼働状況「データ転送可」となったとする。これにより、コントローラ１０は、物理ノード３ｃから受信した隣接論理ノード、物理ノードＩＤ、稼働状況に基づいて、マッピング処理を行うことで更新した論理フォワーディングテーブル１５を各物理ノードに配信する。この処理の流れについては上述した通りである。そして、各物理ノードの変更部１３６は、例えば、受信部１３３によりコントローラ１０から論理フォワーディングテーブル１５が受信されることにより、いずれかの物理ノードの稼働状況が変化したことを把握する。そして、各物理ノードは、稼働状況が変化した物理ノードが隣接ノードであるか否かを判定するとともに、隣接ノードである場合には、その隣接ノードの稼働状況と、隣接ノードが所属する論理ノードを判定する。
【０１２９】
なお、変更部１３６は、定期的に隣接ノードにアクセスすることにより、隣接ノードの稼働状況が変化したか否かを判定してもよい。また、更新部１３６は、転送対象のデータが受信された場合に、隣接ノードの稼働状況が変化したか否かを判定してもよい。また、稼働状況が変化した対象の物理ノードが、変化する直前に隣接ノードに対し、この後稼働状況が変化する旨を知らせてもよい。
【０１３０】
ここでは、隣接ノードである物理ノード３ｃが「データ転送可」となったと判定した物理ノードのうち、物理ノード１ｂを例に用いて説明する。物理ノード１ｂの変更部１３６は、隣接ノードである物理ノード３ｃが「データ転送可」となったことを検知すると、論理ノードＮ３にデータを転送する場合、現在データ転送可能な物理ノード３ａにデータを転送するより、新たに「データ転送可」となった物理ノード３ｃにデータを転送した方が、宛先論理ノードにデータが届くまでの時間が速い場合があることを認識する。
【０１３１】
そして、物理ノード１ｂの変更部１３６は、物理ノード３ｃが論理ノードＮ３に所属していると判定する。これにより、変更部１３６は、自ノードのある物理ノード１ｂのポート対応テーブル１２１を参照し、ｎｅｘｔ  ｈｏｐ「Ｎ３」の場合、現在はポート「１ｂ２」からデータを転送していることを認識する（ステップ２１）。そして、変更部１３６は、フォワーディングテーブル１２２において、ポート「１ｂ２」に対する宛先論理ノードを取得する（ステップＳ２２）。図１４の例では、変更部１３６は、ポート「１ｂ２」に対する宛先論理ノードとして、宛先論理ノード「Ｎ３、Ｎ６、Ｎ７」を取得する。
【０１３２】
次に、変更部１３６は、コントローラ１０から受信した論理フォワーディングテーブル１５において、取得した宛先論理ノード「Ｎ３、Ｎ６、Ｎ７」に対するｎｅｘｔ  ｈｏｐを取得する（ステップＳ２３）。図１４の例では、変更部１３６は、宛先論理ノード「Ｎ３、Ｎ６、Ｎ７」に対するｎｅｘｔ  ｈｏｐとして、ｎｅｘｔ  ｈｏｐ「Ｎ３」を取得する。
【０１３３】
次に、変更部１３６は、ポート対応テーブル１２１において、ｎｅｘｔ  ｈｏｐ「Ｎ３」を取得したことにより、ｎｅｘｔ  ｈｏｐ「Ｎ３」に対応するポート欄に、「データ転送可」となった物理ノード３ｃとリンクを有するポート「１ｂ３」を追加する（ステップＳ２４）。
【０１３４】
ここで、変更部１３６は、物理ノード３ｃも考慮した物理トポロジに対し、自ノードである物理ノード１ｂから各物理ノードまでの最短経路を、最短経路アルゴリズムにより予め求めておく。なお、このような、停止中等によりデータ転送不可能な物理ノードも考慮した物理トポロジに対する最短経路計算は、物理ノード１ｂ以外の各物理ノードでも予め行われるものである。そして、かかる処理は、少なくとも隣接ノードの稼働状況が変化したことが判明するまでの所定のタイミングで、各物理ノードについて行われる必要がある。
【０１３５】
そして、変更部１３６は、予め求めておいた最短経路に基づき、宛先論理ノード「Ｎ３、Ｎ６、Ｎ７」に対応するポート「１ｂ２」を、ポート「１ｂ３」に変更するか否かを判定する。例えば、変更部１３６は、転送対象のデータの宛先論理ノードが論理ノードＮ７である場合について、最短経路に基づき、ポート「１ｂ２」から物理ノード３ａにデータを転送するより、ポート「１ｂ３」から物理ノード３ｃにデータを転送する方が、宛先論理ノードＮ７にデータが到着するまでの時間が短いと判断したとする。この場合、変更部１３６は、フォワーディングテーブル１２２の宛先論理ノードＮ７に対応するｎｅｘｔ  ｈｏｐ欄において、ポート「１ｂ２」をポート「１ｂ３」に変更し処理を終了する（ステップＳ２５）。なお、図１４の例では、宛先論理ノードが論理ノードＮ３、Ｎ６である場合には、ポート「１ｂ２」をポート「１ｂ３」に変更していない。つまり、変更部１３６は、論理ノードＮ３、Ｎ６に転送対象のデータを送る場合、ポート「１ｂ３」よりも、ポート「１ｂ２」を出力先とする方が、論理ノードＮ３、Ｎ６には早くデータが届くと判断したことを示す。
【０１３６】
なお、変更部１３６は、ポートを変更するか否かの判定を必ずしも最短経路アルゴリズムに基づいて行う必要はない。例えば、変更部１３６は、通信回線、すなわちリンクにおいて使用可能な残余帯域を予め測定しておき、測定した残余帯域に基づいて、ポートを変更するか否かを判定してもよい。残余帯域が多いほどデータ通信を速くスムーズに行うことができる。一方、残余帯域が少なくなるほど、回線が込み合いデータ通信は遅くなる。そのため、変更部１３６は、予め測定した残余帯域に基づき、ポート「１ｂ２」と物理ノード３ａ間のリンクの残余帯域より、ポート「１ｂ３」と物理ノード３ｃ間のリンクの残余帯域の方が多いと判定したとすると、ポート「１ｂ２」をポート「１ｂ３」に変更する。
【０１３７】
また、変更部１３６は、リンクの利用率を予め算出しておき、算出した利用率に基づいて、ポートを変更するか否かを判定してもよい。例えば、変更部１３６は、算出した各リンクの利用率を比較し、利用率を平滑化するようにポートを変更してもよい。例えば、変更部１３６は、ポート「１ｂ２」を出力先とするリンクおよびポート「１ｂ３」を出力先とするリンクの利用率を比較した結果、ポート「１ｂ２」を出力先とするリンクの利用率の方が高い場合には、ポート「１ｂ２」をポート「１ｂ３」に変更し、ポート「１ｂ３」を出力先とするリンクの利用率を高めることで、各リンクの利用率を平滑化する。
【０１３８】
さらに、変更部１３６は、フォワーディングテーブル１２２の変更処理を、論理フォワーディングテーブル１５を用いずに行ってもよい。例えば、変更部１３６は、隣接ノードである物理ノード３ｃが「データ転送可」となったと判定した場合に、かかる物理ノード３ｃが属する論理ノードに所属し、かつ、自ノードであるデータ転送装置１００と隣接関係にある物理ノードを検出する。さらに、変更部１３６は、検出した物理ノードとリンクを有するポートを検出する。図１４の例では、変更部１３６は、ポート「１ｂ２」が物理ノード３ｃが属する論理ノードＮ３に属する物理ノード３ａとリンクを有することを検出する。
【０１３９】
これにより、変更部１３６は、ポート対応テーブル１２１において、論理ノードＮ３に相当するｎｅｘｔ  ｈｏｐ「Ｎ３」に対応するポート欄に、データ転送可となった物理ノード３ｃとリンクされるポート「１ｂ３」を追加する。そして、変更部１３６は、例えば、転送対象のデータの宛先論理ノードが論理ノードＮ７である場合について、予め求めておいた最短経路に基づき、ポート「１ｂ２」から物理ノード３ａにデータを転送するより、ポート「１ｂ３」から物理ノード３ｃにデータを転送する方が、宛先論理ノードＮ７にデータが到着するまでの時間が短いと判断したとする。この場合、変更部１３６は、フォワーディングテーブル１２２の宛先論理ノードＮ７に対応するｎｅｘｔ  ｈｏｐ欄において、ポート「１ｂ２」をポート「１ｂ３」に変更し処理を終了する。
【０１４０】
例えば、物理ノード１ｂは、隣接ノードが「データ転送可」となったことにより物理トポロジが変化したとしても、かかる変化に応じて、「データ転送不可」となった隣接ノードが所属する論理ノード内で変更処理を行うだけでよく、経路再計算によるデータ転送の遅れを無くすことができる。
【０１４１】
〔４．変形例〕
さて、データ転送システム１のコントローラ１０およびデータ転送装置１００について、上記実施形態で説明してきた。しかし、コントローラ１０およびデータ転送装置１００は、かかる実施例以外にも、種々の異なる実施例にて実施されてもよいものである。
【０１４２】
〔４−１．特殊なインタフェース〕
データ転送装置１００の物理ノードは、自ノードが所属する論理ノード内の他の物理ノードとリンクされるインタフェースであるポートを有してもよい。このようなポートは、上記条件２に基づいて、同一論理ノード内において、所定の物理ノード同士をリンクするポートであってもよいし、かかるポートとは異なり、同一論理ノード内の全ての物理ノードとリンクを有するポートであってもよい。ここでは、かかるポートは、同一論理ノード内において、所定の物理ノード同士をリンクするポートであるものとして説明する。
【０１４３】
そして、このようなポートにより、以下のようなデータ転送が可能となる。具体的には、同一論理ノード内の一方の物理ノードから、もう一方の物理ノードへ転送対象のデータを送信すると、データを受信した方の物理ノードは、かかる同一論理ノードとは異なる論理ノードに所属する隣接ノードへ転送対象のデータを転送する。この点について図１５を用いて説明する。
【０１４４】
図１５は、特殊なインタフェースを用いたデータ転送を説明するための図である。そして、図１５に示すネットワークトポロジは、図１の一部を抜粋したものである。例えば、物理ノード３ｃが「データ転送不可能」状態であるとする。このとき、物理ノード１ｃは、論理ノードＮ３に転送すべきデータを受信したとしても、リンク先の物理ノード３ｃが「データ転送不可能」であるため送信することができない。そこで、物理ノード１ｃは、自ノードが所属する論理ノード内の他の物理ノードである物理ノード１ｂとリンクを有するポートを用いて、物理ノード１ｂへ転送対象のデータを転送する。
【０１４５】
物理ノード１ｂは、論理ノードＮ３に所属する物理ノード３ａを隣接ノードとして有しているため、物理ノード１ｃから受信した転送対象のデータを、物理ノード１ｃに代わって論理ノードＮ３へ転送する。
【０１４６】
このようなポートにより、転送先がなくなってしまった物理ノードに代わって、かかる物理ノードと同一論理ノード内において隣接関係にある他の物理ノードが、転送すべき論理ノードへ経路を伸ばすことなくデータを転送することができる。
【０１４７】
ここで、同一論理ノード内で隣接関係を有する物理ノードは、上述した論理トポロジ制御部１７によるマッピングの際に、既に所定の論理ノードに所属しているにもかかわらず、新たな論理ノードへ所属させられる場合がある。このような問題を解決するために、以下の変形例を示す。
【０１４８】
〔４−２．マッピング処理（１）〕
上記実施形態では、コントローラ１０は、「データ転送可能」になったデータ転送装置１００から受信した隣接論理ノードの組合せのエントリが論理トポロジテーブル１４に存在するか否かによって、かかるデータ転送装置１００が所属する論理ノードを判定する例を示した。例えば、コントローラ１０は、受信した隣接論理ノードの組合せのエントリが論理トポロジテーブル１４に存在しない場合、かかるデータ転送装置１００を新たな論理ノードに所属させる。しかし、このときコントローラ１０は、既にいずれかの論理ノードに所属していたデータ転送装置１００を、新たな論理ノードに所属させてしまうといった事態が起こり得る。よって、このような事態を回避するためのコントローラ１０によるマッピング処理について説明する。
【０１４９】
コントローラ１０は、図１６Ａに示す物理トポロジから成る論理トポロジを管理しているものとする。図１６Ａは、変形例に係るネットワークトポロジの一例を示す図である。そして、図１６Ａに示すネットワークトポロジは、図１の一部を抜粋したものである。また、図１６Ｂは、変形例に係るマッピング処理の一例を示す図である。なお、図１６Ｂにおいて、図１６Ａに図示しない物理ノード１１ａに関する情報を、説明の便宜上加えることにする。
【０１５０】
ここで、物理ノード１ｃが「データ転送不可能」となったとすると、コントローラ１０は、上記マッピング処理に従い、かかる論理トポロジに基づく論理トポロジテーブル１４から物理ノード１ｃに関するエントリを完全に削除する。このときの論理トポロジテーブル１４は、図１６Ｂの（１）のようになる。
【０１５１】
そして、物理ノード１ｃが再び「データ転送可」となったとする。このとき、「データ転送可」となった物理ノード１ｃは、コントローラ１０に対して、隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」と、物理ノードＩＤ「１ｃ」と、稼働状況「データ転送可」とを送信する。
【０１５２】
コントローラ１０は、論理トポロジテーブル１４の隣接論理ノード欄を検索することにより、受信した隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」の組合せが存在するか否かを判定する。ここで、物理ノード１ｃは、図１６Ａに示すように、既に論理ノードＮ１に所属しているにも関わらず、コントローラ１０は、論理トポロジテーブル１４に隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」の組合せが存在しないことにより、例えば、物理ノード１ｃを新たな論理ノード「Ｙ」に所属させてしまう。
【０１５３】
このように、コントローラ１０は、同一論理ノード内において隣接ノードを有する物理ノードについて、かかる物理ノードが「データ転送可」となった場合に、所属させる論理ノードを誤認してしまう場合がある。このような誤認は、上述したデータ転送装置１００の変更部１３６の処理等にも影響を及ぼしてしまう。よって、コントローラ１０の論理トポロジ制御部１７は、このような間違いを起こさないように、以下に説明するマッピング処理を行うよう制御されてもよい。
【０１５４】
具体的には、コントローラ１０の論理トポロジ制御部１７は、受信した隣接論理ノードの組合せが存在しない場合に、かかる組合せから所定の１つの隣接論理ノードを削除し、残りの組合せが論理トポロジテーブルに存在するか否かを判定する。そして、論理トポロジ制御部１７は、論理トポロジテーブルにおいて、残りの組合せに一致する隣接論理ノードと、かかる隣接論理ノードに対応する所属論理ノードとの組み合わせが、受信した隣接論理ノードの組合せに一致するものを選択することにより、物理ノードを所属させる最適な所属論理ノードを判定する。この点について、図１６Ｂを用いて説明する。
【０１５５】
例えば、図１６Ａに示すようなネットワークトポロジが既に形成さえされているとする。そして、物理ノード１ｃが「データ転送不可能」から「データ転送可」となったとする。ここで、論理トポロジ制御部１７は、物理ノード１ｃから隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」を受信すると、隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」の組合せから１つを削除した組み合わせを求める。例えば、論理トポロジ制御部１７は、隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」の組合せから１つを削除した組み合わせとして「Ｎ２、Ｎ３」、「Ｎ１、Ｎ２」および「Ｎ１、Ｎ３」を求める。
【０１５６】
そして、論理トポロジ制御部１７は、論理トポロジテーブル１４の隣接論理ノード欄において、求めた各組合せに一致するエントリを検索する。図１６Ｂの（２）に示すように、論理トポロジ制御部１７は、求めた各組合せに一致するエントリとして、「Ｎ２、Ｎ３」および「Ｎ１、Ｎ２」を検索によって得る。
【０１５７】
そして、論理トポロジ制御部１７は、検索によって得たエントリそれぞれについて、対応する所属論理ノードを組合わせ、かかる組合せのうち、受信した隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」に一致するものを選択する。図１６Ｂの（２）に示す例では、論理トポロジ制御部１７は、検索によって得たエントリ「Ｎ２、Ｎ３」に、対応する所属論理ノード「Ｎ１」を加えた「Ｎ１、Ｎ２、Ｎ３」が、物理ノード１ｃから受信した隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」に一致することから、検索によって得たエントリのうち「Ｎ２、Ｎ３」を選択する。そして、論理トポロジ制御部１７は、かかるエントリにおいて、隣接論理ノード「Ｎ２、Ｎ３」に対応する所属論理ノード「Ｎ１」を物理ノード１ｃが所属すべき最適な論理ノードと判定し、この情報を物理ノード１ｃに配信させる。これにより、コントローラ１０は、マッピング処理を高精度に行うことができる。
【０１５８】
〔４−３．マッピング処理（３）〕
論理トポロジ制御部１７は、変形例４−２で説明した処理とは異なる方法によって、マッピング処理による所属論理ノードの誤認を回避するよう制御されてもよい。
【０１５９】
具体的には、論理トポロジ制御部１７は、物理ノードが「データ転送可」となったことにより、物理ノードから受信した隣接論理ノードの組み合わせのエントリが、論理トポロジテーブルに存在しない場合に、かかる物理ノードを新たな論理ノードに所属させる。そして、このとき論理トポロジ制御部１７は、当該所属させた論理ノードと、受信した隣接論理ノードとの組み合わせを隣接論理ノードとするエントリを、論理トポロジテーブル１４に追加する。このような論理トポロジテーブルの管理方法について、以下で説明する。
【０１６０】
まず、図１６Ａに示すネットワークトポロジにおいて、論理ノードＮ１、Ｎ２、Ｎ３に属する物理ノードと隣接関係を有する物理ノードＸ１０が新設されたとする。これにより、コントローラ１０は、物理ノードＸ１０から物理ノードＩＤ「Ｘ１０」、隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」、稼働状況「データ転送可」を受信する。ここで、コントローラ１０の論理トポロジ制御部１７は、図１７Ａに示す処理を行う。図１７Ａは、マッピング処理における論理トポロジテーブルの管理の一例を示す図である。
【０１６１】
コントローラ１０の論理トポロジ制御部１７は、受信した隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」の組み合わせが論理トポロジテーブル１４に存在しないことから、物理ノードＸ１０を新たな論理ノードに所属させる。すなわち、論理トポロジ制御部１７は、図１７Ａに示すように、論理トポロジテーブル１４において、物理ノードＸ１０を所属させた新たな論理ノードに関するエントリを作成する。また、論理トポロジ制御部１７は、物理ノードＸ１０を所属させた新たな論理ノードである論理ノードＮＸ１０を、受信した隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」に加えた組合せ「Ｎ１、Ｎ２、Ｎ３、ＮＸ１０」を隣接論理ノード欄に登録したエントリをさらに追加する。また、論理トポロジ制御部１７は、追加したエントリの所属論理ノード欄に論理ノード「ＮＸ１０」を登録しておく。
【０１６２】
ここで、例えば、物理ノードＸ１０と隣接関係にあり、かつ、物理ノードＸ１０と同じ論理ノードＮＸ１０に所属する所定の物理ノードが新設されたとする。このような場合でも、コントローラ１０は、新設された所定の物理ノードが、隣接論理ノードを「Ｎ１、Ｎ２、Ｎ３、ＮＸ１０」とする新たな論理ノードに所属されることを回避することができる。
【０１６３】
物理ノードが「データ転送可」となった場合における、論理トポロジ制御部１７による論理トポロジテーブルの管理方法について説明してきた。次に、物理ノードが「データ転送不可能」となった場合における、論理トポロジ制御部１７による論理トポロジテーブルの管理方法について説明する。
【０１６４】
具体的には、論理トポロジ制御部１７は、物理ノードが「データ転送不可能」となった場合に、論理トポロジテーブルの対応する物理ノードＩＤ欄から、「データ転送不可能」となった物理ノードから受信した物理ノードＩＤを削除する。そして、これにより、論理トポロジテーブルの隣接論理ノード欄に、「データ転送不可能」となった物理ノードの所属論理ノードを含まないエントリにおける識別情報欄が空欄となっていれば、論理トポロジ制御部１７は、論理トポロジテーブルにおいて、当該所属論理ノードを含む隣接論理ノードを検索する。そして、論理トポロジ制御部１７は、検索した隣接論理ノードに対応するエントリにおいて、物理ノードＩＤ欄が空欄であるか否かに応じて、隣接論理ノード欄に、所属論理ノードを含まないエントリ、および、検索した隣接論理ノードに対応するエントリを削除するか否かを決定する。
【０１６５】
また、論理トポロジ制御部１７は、物理ノードが「データ転送不可能」となった場合に、論理トポロジテーブルの対応する物理ノードＩＤ欄から、「データ転送不可能」となった物理ノードから受信した物理ノードＩＤを削除する。そして、これにより、論理トポロジテーブルの隣接論理ノード欄に、「データ転送不可能」となった物理ノードの所属論理ノードを含むエントリにおける識別情報欄が空欄となっていれば、論理トポロジ制御部１７は、論理トポロジテーブルにおいて、当該所属論理ノードを含む隣接論理ノードを検索する。そして、論理トポロジ制御部１７は、検索した隣接論理ノードに対応するエントリにおいて、物理ノードＩＤ欄が空欄であるか否かに応じて、隣接論理ノード欄に、所属論理ノードを含まないエントリ、および、検索した隣接論理ノードに対応するエントリを削除するか否かを決定する。
【０１６６】
このような、論理トポロジ制御部１７による論理トポロジテーブル１４の管理方法について、図１７Ｂを用いて説明する。図１７Ｂは、マッピング処理における論理トポロジテーブルの管理の一例を示す図である。
【０１６７】
例えば、物理ノード１ａが「データ転送不可能」となったとする。これにより、論理トポロジ制御部１７は、物理ノード１ａから物理ノードＩＤ「１ａ」、隣接論理ノード「Ｎ２、Ｎ３」、稼働状況「データ転送不可能」を受信する。そして、論理トポロジ制御部１７は、受信した各種情報に基づき、論理トポロジテーブル１４から物理ノードＩＤ「１ａ」を削除する。かかるマッピング処理については、図６Ａおよび図６Ｂで説明した。
【０１６８】
ここで、論理トポロジ制御部１７は、隣接論理ノードに、物理ノード１ａの所属する論理ノードＮ１を含まないエントリにおける物理ノードＩＤ欄が空欄となったことを認識する。そして、論理トポロジ制御部１７は、論理トポロジテーブル１４において、物理ノード１ａの所属する論理ノードＮ１を含む隣接論理ノードを検索する。図１７Ｂの例では、論理トポロジ制御部１７は、物理ノード１ａの所属する論理ノードＮ１を含む隣接論理ノードとして、「Ｎ１、Ｎ２、Ｎ３」を検索によって得る。
【０１６９】
そして、論理トポロジ制御部１７は、検索によって得た隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」に対応するエントリにおいて、物理ノードＩＤ欄が空欄であるか否かを判定する。図１７Ｂの例では、論理トポロジ制御部１７は、かかる物理ノードＩＤ欄に「１ｂ、１ｃ」の登録があり、空欄ではないと判定する。そして、論理トポロジ制御部１７は、空欄でないと判定したことにより、隣接論理ノード欄に物理ノード１ａの所属する論理ノードＮ１を含まないエントリ、および、検索によって得た隣接論理ノード「Ｎ１、Ｎ２、Ｎ３」に対応するエントリを削除しない。一方、論理トポロジ制御部１７は、空欄であると判定した場合には、上記エントリの両方を削除する。
【０１７０】
〔５．プログラム〕
また、上記実施の形態に係るコントローラ１０やデータ転送装置１００が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施の形態と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記実施の形態と同様の処理を実現してもよい。以下に、コントローラ１０やデータ転送装置１００と同様の機能を実現するデータ転送プログラムを実行するコンピュータの一例を説明する。
【０１７１】
図１８は、データ転送プログラムを実行するコンピュータを示す図である。図１８に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【０１７２】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１０４１に接続される。ディスクドライブ１０４１には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【０１７３】
ここで、図１８に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記実施形態で説明した各テーブルは、例えばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【０１７４】
また、データ転送プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、ハードディスクドライブ１０９０に記憶される。具体的には、上記実施形態で説明したコントローラ１０やデータ転送装置１００が実行する各処理が記述されたプログラムモジュールが、ハードディスクドライブ１０９０に記憶される。
【０１７５】
またデータ転送プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【０１７６】
なお、データ転送プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１０４１等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、データ転送プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【０１７７】
〔６．効果〕
実施形態にかかるデータ転送装置１００は、自ノードが有するインタフェースであるポートと、当該ポートと接続される隣接装置が属する論理ノードの識別情報とを対応付けたポート対応テーブル１２１と、転送対象データの宛先となるデータ転送装置が属する論理ノードである宛先論理ノードと、当該転送対象のデータの出力先となるポートとを対応付けたフォワーディングテーブル１２２を有する。そして、データ転送装置１００は、隣接装置の稼働状況が変化した場合に、ポート対応テーブルに基づいて、転送テーブルに記憶されているポートを、当該稼働状況が変化した隣接装置が属する論理ノードに属する隣接装置と接続されるポートに変更する。
【０１７８】
これにより、実施形態に係るデータ転送装置１００は、ネットワークトポロジが変化した場合、転送先を切り替えるだけでデータ転送を行うことができるため、経路再計算によって生じるデータ転送できない時間を短くすることができる。
【０１７９】
また、実施形態にかかるデータ転送装置１００において、変更部１３６は、ポート対応テーブルに基づいて、フォワーディングテーブル１２２に記憶されているポートのうち、稼働状況がデータ転送不可能に変化した隣接装置と接続されるポートを、当該稼働状況がデータ転送不可能に変化した隣接装置が属する論理ノードに属する他の隣接装置と接続されるポートに変更する、または、フォワーディングテーブル１２２に記憶されているポートのうち、当該稼働状況がデータ転送可能に変化した隣接装置が属する論理ノードに属する他の隣接装置と接続されるポートを、当該稼働状況がデータ転送可能へと変化した隣接装置と接続されるポートに変更するか否かを判定し、判定結果に基づいて、当該稼働状況がデータ転送可能に変化した隣接装置が属する論理ノードに属する他の隣接装置と接続されるポートを、当該稼働状況がデータ転送可能へと変化した隣接装置と接続されるポートに変更する。
【０１８０】
これにより、実施形態に係るデータ転送装置１００は、ネットワークトポロジが変化した場合、転送先を切り替えるだけでデータ転送を行うことができるため、経路再計算によって生じるデータ転送できない時間を短くすることができる。
【０１８１】
実施形態に係るコントローラ１０は、データ転送装置の識別情報と、データ転送装置が属する論理ノードである所属論理ノードの識別情報と、データ転送装置と接続される隣接装置が属する論理ノードである隣接論理ノードの識別情報とを対応付けた論理トポロジテーブル１４を有する。そして、コントローラ１０は、論理トポロジテーブルに基づいて、転送対象データの宛先となる宛先論理ノードと、当該宛先論理ノードへ当該転送対象データを転送するために所定の論理ノードが当該転送対象データを転送する先の論理ノードとを対応付けた論理フォワーディングテーブル１５を、所定の論理ノード毎に作成する。そして、コントローラ１０は、データ転送装置１００それぞれに、作成した論理フォワーディングテーブルのうち、当該データ転送装置が属する論理ノードに対応する論理フォワーディングテーブル１５を配信する。
【０１８２】
これにより、コントローラ１０は、データ転送装置１００に対して、転送対象のデータを正しく転送させることができる。
【０１８３】
また、実施形態に係るコントローラ１０は、論理トポロジテーブルの記憶情報を更新する制御部１７を備える。そして、制御部１７は、記稼働状況がデータ転送可能に変化したデータ転送装置の隣接装置が属する論理ノードの識別情報が、論理トポロジテーブル１４に記憶されている場合に、当該稼働状況がデータ転送可能に変化したデータ転送装置の識別情報を、当該隣接装置が属する論理ノードの識別情報に対応付けて論理トポロジテーブル１４に登録し、当該稼働状況がデータ転送可能に変化したデータ転送装置の隣接装置が属する論理ノードの識別情報が、論理トポロジテーブル１４に記憶されていない場合に、当該稼働状況がデータ転送可能に変化したデータ転送装置の識別情報に、当該稼働状況がデータ転送可能に変化したデータ転送装置１００が属する論理ノードの識別情報に対応付けて前記論理トポロジテーブル１４に登録する。
【０１８４】
これにより、コントローラ１０は、同一の論理ノード内において隣接関係を有する物理ノードを、新たな論理ノードに所属するものと認識してしまうことを防ぐことができる。
【０１８５】
また、制御部１７は、稼働状況がデータ転送可能に変化したデータ転送装置１００の隣接装置が属する論理ノードの識別情報から、所定の１つの識別情報を除いた組合せの論理ノードの識別情報が論理トポロジテーブル１４に記憶されている場合には、当該所定の１つの識別情報を除いた組合せの論理ノードの識別情報と、当該所定の１つの識別情報を除いた組合せの論理ノードに対応付て前記論理トポロジテーブルに記憶されている所属論理ノードとの組合せのうち、稼働状況がデータ転送可能に変化したデータ転送装置１００の隣接装置が属する論理ノードの組合せと一致する組合せに対応付けて、稼働状況がデータ転送可能に変化したデータ転送装置１００の識別情報を論理トポロジテーブル１４に登録する。
【０１８６】
これにより、コントローラ１０は、同一の論理ノード内において隣接関係を有する物理ノードを、新たな論理ノードに所属するものと認識してしまうことを防ぐことができる。
【０１８７】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で実施することが可能である。
【０１８８】
また、上述してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、変更部は、変更手段や変更回路に読み替えることができる。
【符号の説明】
【０１８９】
１  データ転送システム
１０  コントローラ
１４  論理トポロジテーブル
１５  論理フォワーディングテーブル
１７  論理トポロジ制御部
１８  論理フォワーディングテーブル作成部
１９  配信部
１００  データ転送装置
１２１  ポート対応テーブル
１２２  フォワーディングテーブル
１３１  ポート対応テーブル作成部
１３４  フォワーディングテーブル作成部
１３５  転送部
１３６  変更部
【図１】
2016149724.tif 000003
【図２】
2016149724.tif 000004
【図３】
2016149724.tif 000005
【図４】
2016149724.tif 000006
【図５】
2016149724.tif 000007
【図６Ａ】
2016149724.tif 000008
【図６Ｂ】
2016149724.tif 000009
【図７Ａ】
2016149724.tif 000010
【図７Ｂ】
2016149724.tif 000011
【図８】
2016149724.tif 000012
【図９】
2016149724.tif 000013
【図１０】
2016149724.tif 000014
【図１１】
2016149724.tif 000015
【図１２】
2016149724.tif 000016
【図１３】
2016149724.tif 000017
【図１４】
2016149724.tif 000018
【図１５】
2016149724.tif 000019
【図１６Ａ】
2016149724.tif 000020
【図１６Ｂ】
2016149724.tif 000021
【図１７Ａ】
2016149724.tif 000022
【図１７Ｂ】
2016149724.tif 000023
【図１８】
2016149724.tif 000024
【図１９】
2016149724.tif 000025