(57)【特許請求の範囲】
【請求項１】
受信したパケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを所定期間保持し、該エントリ群を参照して、パケットの宛先に対応するポートを決定することによりパケットの転送を行う第１のノードと、
パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備える複数の第２のノードと、
所定のパケット転送経路の前記第１のノードの下流側に位置する第２のノードから、前記第１のノードに向けて、前記第１のノードより下流側のノードを送信元とした宛先学習パケットを受信させることにより、前記第１のノードに前記パケット転送経路に従ったパケット転送動作を行わせる制御装置と、
を含む通信システム。
【請求項２】
前記制御装置は、
データパケットの転送経路上において前記第１のノードより下流側にある第２のノードに対して宛先学習パケットを送信し、該宛先学習パケットを前記第１のノードに転送させ、または、前記第１のノードより下流側にある第２のノードに前記宛先学習パケットの生成と前記第１のノードへの送信を指示することにより、前記第１のノードに前記宛先学習パケットを受信させる請求項１の通信システム。
【請求項３】
前記制御装置は、前記所定のパケット転送経路の第１のノードより上流側の第２のノードに処理規則を設定する際に、当該処理規則に、送信元アドレスを別のアドレスに書き換えさせる処理を追加する請求項１または２の通信システム。
【請求項４】
前記制御装置は、前記所定のパケット転送経路の第１のノードより上流側の第２のノードに処理規則を設定する際に、当該処理規則に、パケットヘッダの宛先アドレスをフロー毎に設定した仮想宛先アドレスに書き換えさせる処理を追加し、
前記宛先学習パケットとして、前記仮想宛先アドレスを送信元とし、前記第１のノードより上流側のノードを宛先としたパケットを前記第１のノードに受信させる請求項１から３いずれか一の通信システム。
【請求項５】
前記制御装置は、前記第１のノードを含む所定のパケット転送経路上の前記第１のノードに接続された第２のノードに処理規則を設定する際に、前記各第２のノードの処理規則に、自装置のポートに設定された仮想アドレスを送信元とし、前記第１のノードを介して接続された第２のノードのポートに設定された仮想アドレスを宛先とするようパケットヘッダを書き換えさせる処理を追加し、
前記宛先学習パケットとして、前記各仮想アドレスを送信元および宛先とした逆方向の宛先学習パケットを前記第１のノードに受信させる請求項１から４いずれか一の通信システム。
【請求項６】
前記宛先学習パケットとしてＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）パケットを用いる請求項５の通信システム。
【請求項７】
前記制御装置は、前記第１のノードのエントリ保持期間より短い間隔で、宛先学習パケットを前記第１のノードに受信させる請求項１から６いずれか一の通信システム。
【請求項８】
受信したパケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを所定期間保持し、該エントリ群を参照して、パケットの宛先に対応するポートを決定することによりパケットの転送を行う第１のノードと、
パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備える第２のノードと、接続され、
所定のパケット転送経路の前記第１のノードの下流側に位置する第２のノードから、前記第１のノードに向けて、前記第１のノードより下流側のノードを送信元とした宛先学習パケットを受信させることにより、前記第１のノードに前記パケット転送経路に従ったパケット転送動作を行わせる制御装置。
【請求項９】
受信したパケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを所定期間保持し、該エントリ群を参照して、パケットの宛先に対応するポートを決定することによりパケットの転送を行う第１のノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備える第２のノードと、接続された制御装置が、
所定のパケット転送経路の前記第１のノードの下流側に位置する第２のノードから、前記第１のノードに向けて、前記第１のノードより下流側のノードを送信元とした宛先学習パケットを受信させるステップと、
前記第１のノードが、前記宛先学習パケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを更新するステップと、を含むノード制御方法。
【請求項１０】
受信したパケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを所定期間保持し、該エントリ群を参照して、パケットの宛先に対応するポートを決定することによりパケットの転送を行う第１のノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備える第２のノードと、接続された制御装置を構成するコンピュータに実行させるプログラムであって、
データパケットの転送経路上において前記第１のノードより下流側にある第２のノードに対して宛先学習パケットを送信し、該宛先学習パケットを前記第１のノードに転送させる処理、または、前記第１のノードより下流側にある第２のノードに前記宛先学習パケットの生成と前記第１のノードへの送信を指示する処理のいずれかを実行することにより、前記第１のノードに前記宛先学習パケットを受信させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本発明は、日本国特許出願：特願２０１０−１８５４２８号（２０１０年８月２０日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、通信システム、制御装置、ノード制御方法およびプログラムに関し、特に、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを参照してパケット転送を行うノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットの転送等を行うノードとを含む通信システム、制御装置、ノード制御方法およびプログラムに関する。
【背景技術】
【０００２】
近年、オープンフロー（ＯｐｅｎＦｌｏｗ）という技術が提案されている（特許文献１、非特許文献１、２参照）。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化を行うものである。中継装置として機能するオープンフロースイッチは、制御装置と位置付けられるオープンフローコントローラとの通信用のセキュアチャネルを備え、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルに従って動作する。フローテーブルには、フロー毎に、パケットヘッダと照合するマッチングルール（ヘッダフィールド）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、マッチングルール（ヘッダフィールド）に適合するパケットに適用する処理内容を定義したアクション（Ａｃｔｉｏｎｓ）と、の組が定義される（図９参照）。
【０００３】
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するマッチングルール（図９のヘッダフィールド参照）を持つエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、フロー統計情報（カウンタ）を更新するとともに、受信パケットに対して、当該エントリのアクションフィールドに記述された処理内容（指定ポートからのパケット送信、フラッディング、廃棄（ｄｒｏｐ）等）を実施する。一方、前記検索の結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対して受信パケットを転送し、受信パケットの送信元・送信先に基づいたパケットの経路の決定を依頼し、これを実現するフローエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを処理規則として用いてパケット転送を行っている。
【０００４】
特許文献２には、ＭＡＣアドレステーブルに学習済みの経路以外からフレームが到着した場合に発生するポートムーブを検出するポートムーブ検出回路を備えた中継装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２００８／０９５０１０号
【特許文献２】特開２００８−３０１００３号公報
【非特許文献】
【０００６】
【非特許文献１】Nick McKeownほか７名、“OpenFlow: Enabling Innovation in Campus Networks”、［online］、［平成22年7月6日検索］、インターネット〈URL：http://www.openflowswitch.org//documents/openflow-wp-latest.pdf〉
【非特許文献２】"OpenFlow Switch Specification" Version 1.0.0. (Wire Protocol 0x01) ［平成22年7月6日検索］、インターネット〈URL：http://www.openflowswitch.org/documents/openflow-spec-v1.0.0.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００７】
以下の分析は、本発明によって与えられたものである。特許文献２にも記載されているように、受信パケットによりＭＡＣアドレステーブルを学習するレイヤ２スイッチでは、意図しない方向からパケットを受信することによりＭＡＣアドレステーブルの誤学習が起こりうる。
【０００８】
このため、特許文献１、非特許文献１、２に記載のオープンフロースイッチと、レイヤ２スイッチとが接続された環境では、経路上のレイヤ２スイッチのために、オープンフローコントローラが設定した経路のとおりにパケットが流れないという問題点がある。
【０００９】
例えば、図１０に示したようにオープンフローコントローラが、往路と復路で異なる経路を設定したとしても、図１０の端末ＭＡＣ  Ａから端末ＭＡＣ  Ｂに宛てて送信されたパケットが途中のレイヤ２スイッチ（Ｌ２ＳＷ）のポート２で受信されることにより、レイヤ２スイッチ（Ｌ２ＳＷ）のＭＡＣアドレステーブルが図１０の下段吹き出し内に示した如く更新されてしまうため、次に、端末ＭＡＣ  Ｂから端末ＭＡＣ  Ａに宛てて送信されたパケットは、図１０の破線に示したようにレイヤ２スイッチ（Ｌ２ＳＷ）のポート２から出力されてしまう。
【００１０】
本発明は、上記した事情に鑑みてなされたものであって、その目的とするところは、上記したレイヤ２スイッチ（Ｌ２ＳＷ）に代表されるノードと、特許文献１、非特許文献１、２に記載のオープンフロースイッチに代表されるノードとが混在する環境においても、意図した経路に従ったパケット転送を行うことのできる構成および方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１の視点によれば、受信したパケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを所定期間保持し、該エントリ群を参照して、パケットの宛先に対応するポートを決定することによりパケットの転送を行う第１のノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備える複数の第２のノードと、所定のパケット転送経路の前記第１のノードの下流側に位置する第２のノードから、前記第１のノードに向けて、前記第１のノードより下流側のノードを送信元とした宛先学習パケットを受信させることにより、前記第１のノードに前記パケット転送経路に従ったパケット転送動作を行わせる制御装置と、を含む通信システムが提供される。
【００１２】
本発明の第２の視点によれば、受信したパケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを所定期間保持し、該エントリ群を参照して、パケットの宛先に対応するポートを決定することによりパケットの転送を行う第１のノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備える第２のノードと、接続され、所定のパケット転送経路の前記第１のノードの下流側に位置する第２のノードから、前記第１のノードに向けて、前記第１のノードより下流側のノードを送信元とした宛先学習パケットを受信させることにより、前記第１のノードに前記パケット転送経路に従ったパケット転送動作を行わせる制御装置が提供される。
【００１３】
本発明の第３の視点によれば、受信したパケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを所定期間保持し、該エントリ群を参照して、パケットの宛先に対応するポートを決定することによりパケットの転送を行う第１のノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備える第２のノードと、接続された制御装置が、所定のパケット転送経路の前記第１のノードの下流側に位置する第２のノードから、前記第１のノードに向けて、前記第１のノードより下流側のノードを送信元とした宛先学習パケットを受信させるステップと、前記第１のノードが、前記宛先学習パケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを更新するステップと、を含むノード制御方法が提供される。なお、本方法は、上記第２のノードを制御する制御装置を構成するコンピュータという、特定の機械に結びつけられている。
【００１４】
本発明の第４の視点によれば、受信したパケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを所定期間保持し、該エントリ群を参照して、パケットの宛先に対応するポートを決定することによりパケットの転送を行う第１のノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備える第２のノードと、接続された制御装置を構成するコンピュータに実行させるプログラムであって、データパケットの転送経路上において前記第１のノードより下流側にある第２のノードに対して宛先学習パケットを送信し、該宛先学習パケットを前記第１のノードに転送させる処理、または、前記第１のノードより下流側にある第２のノードに前記宛先学習パケットの生成と前記第１のノードへの送信を指示する処理のいずれかを実行することにより、前記第１のノードに前記宛先学習パケットを受信させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１５】
上記したレイヤ２スイッチ（Ｌ２ＳＷ）に代表されるノードと、特許文献１、非特許文献１、２に記載のオープンフロースイッチに代表されるノードとが混在する環境においても、意図した経路に従ったパケット転送を行うことが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明の概要を説明するための図である。
【図２】本発明の第１の実施形態の構成を表した図である。
【図３】本発明の第１の実施形態の制御装置（コントローラ）の詳細構成を表したブロック図である。
【図４】本発明の第２の実施形態が実現しようとするパケット転送経路を説明するための図である。
【図５】本発明の第２の実施形態の動作を説明するための図である。
【図６】本発明の第３の実施形態が実現しようとするパケット転送経路を説明するための図である。
【図７】本発明の第３の実施形態の動作を説明するための図である。
【図８】本発明の第４の実施形態の動作を説明するための図である。
【図９】非特許文献２に記載のフローエントリの構成を表した図である。
【図１０】ＭＡＣアドレステーブルの誤学習が行われてしまうケースを説明するための図である。
【発明を実施するための形態】
【００１７】
はじめに、本発明の概要について説明する。本発明は、図１に示すように、受信したパケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを所定期間保持し、該エントリ群を参照して、パケットの宛先に対応するポートを決定することによりパケットの転送を行う第１のノード４００と、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備える第２のノード２１０〜２４０と、第２のノード（例えば、図１の第２のノード２２０）を介して、第１のノード４００に宛先学習パケットを受信させる制御装置１００と、により実現できる。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【００１８】
例えば、図１の端末３１０から端末３２０宛てに送信されたパケットについて、第２のノード２１０、第１のノード４００、第２のノード２２０、第２のノード２３０の順でパケットを転送するパケット転送経路が決定されているものとする。このとき、第１のノード４００のポート＃２に、端末３２０から端末３２０のＭＡＣアドレス（ＭＡＣ  Ａ）を持つパケットが流れてしまうと、第１のノード４００は、宛先がＭＡＣ  Ａであるパケットはポート＃２から出力すべきと誤学習してしまう（図１０参照）。また、宛先がＭＡＣ  Ａであるパケットを一定期間以上受信しなかった場合も、第１のノード４００は、ポート＃１に紐付けられたエントリから端末３２０のＭＡＣアドレス（ＭＡＣ  Ａ）を削除してしまう。
【００１９】
そこで、本発明の制御装置１００は、上記パケット転送経路上に存在する第１のノード４００に対し、所定の時間間隔で、送信元アドレスを端末３２０のＭＡＣアドレス（ＭＡＣ  Ａ）とする宛先学習パケットを送信する。これにより、第１のノードに保持されているパケット転送用のエントリを更新させ、より確実に前記パケット転送経路に適合するパケット転送動作を行わせることが可能になる。なお、前記宛先学習パケットは、第１のノード４００のエントリ保持期間（タイムアウト値）を考慮して、必要なエントリが消去されないような短い間隔で送信されることが望ましい。
【００２０】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図２は、本発明の第１の実施形態の構成を表わした図である。図２を参照すると、端末３１０が接続されている第２のノード２１０と、端末３２０が接続されている第２のノード２３０と、第２のノード２１０から送信されるパケットの宛先アドレスを参照して、第２のノード２２０または第２のノード２４０に転送する第１のノード４００と、第２のノード２３０と第１のノード４００を接続する第２のノード２２０、２４０と、を配設した構成が示されている。
【００２１】
第１のノード４００は、受信したパケットの送信元アドレスに基づいて、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを所定期間保持するレイヤ２スイッチである。前記エントリは、例えば、スイッチングハブに保持されるＭＡＣアドレステーブルのエントリに相当する。また、以下の実施形態では、第１のノード４００のポート＃１に、第２のノード２２０が接続され、ポート＃２に、第２のノード２４０が接続されているものとする。
【００２２】
第２のノード２１０〜２４０は、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備えるスイッチであり、例えば、非特許文献２のオープンフロースイッチとして動作可能なスイッチを用いることができる。
【００２３】
制御装置１００は、少なくとも第２のノード２１０〜２４０のうちの任意のノードに、宛先学習パケットを送信させる機能を有する装置である。以下の実施形態では、制御装置１００は、図２の破線で示すセキュアチャンネルを介して、第２のノード２１０〜２４０に処理規則（フローエントリ）を設定したり、バッファしておいたパケットの送信や、統計情報（Ｃｏｕｎｔｅｒｓ）を収集を行うことのできる非特許文献２のオープンフローコントローラであるものとして説明する。その他、制御装置１００が、非特許文献２のオープンフローコントローラと協調して動作する、すなわち、オープンフローコントローラが作成したパケット転送経路を実現するよう宛先学習パケットを送信させる独立した装置である構成も採用可能である。
【００２４】
また、以下の実施形態では、端末３１０のＭＡＣアドレスは「Ｂ」であり、端末３２０のＭＡＣアドレスは「Ａ」であるものとして説明する。
【００２５】
図３は、オープンフローコントローラとしても動作し、かつ、宛先学習パケットを送信可能な制御装置（コントローラ）１００の構成を表したブロック図である。図３を参照すると、制御装置（コントローラ）１００は、図９に例示した照合規則（マッチングルール）、アクション（タイマー値を含む）、フロー統計情報により構成された処理規則（フローエントリ）を格納するフローエントリデータベース（フローエントリＤＢ）１０１と、宛先学習パケット生成部１０２と、トポロジ管理部１０３と、経路・アクション計算部１０４と、フローエントリ管理部１０５と、制御メッセージ処理部１０６と、ノード２１０〜２４０との通信を行うノード通信部１０７とを備えて構成される。これらはそれぞれ次のように動作する。
【００２６】
宛先学習パケット生成部１０２は、経路・アクション計算部１０４による新規フローの作成などの契機で、トポロジ管理部１０３にて構築されたネットワークトポロジ情報を参照し、宛先学習パケットを流す区間の起点となる第２のノードとして、パケット転送経路上で学習対象の第１のノード４００よりも下流側の第２のノードを決定するとともに、上記第１のノード４００が含まれるパケット転送経路全体またはその一部に送出する宛先学習パケットを生成する。具体的には、パケット転送経路上を流れるデータパケットの宛先ＭＡＣアドレスを、送信元ＭＡＣアドレスとし、宛先学習パケットを流す区間の終端の第２のノードのＭＡＣアドレスを宛先ＭＡＣアドレスとするパケットを生成する。
【００２７】
なお上記のような宛先学習パケットによる学習が完了したことは、宛先学習パケットを流した区間の終端の第２のノードからの処理規則（フローエントリ）の追加または更新要求（Ｐａｃｋｅｔ−Ｉｎ）にて検知することができる。
【００２８】
トポロジ管理部１０３は、ノード通信部１０７を介して収集されたノード２１０〜２４０の接続関係に基づいてネットワークトポロジ情報を構築・管理する。
【００２９】
経路・アクション計算部１０４は、トポロジ管理部１０３にて構築されたネットワークトポロジ情報に基づいてパケットの転送経路および該転送経路上のノード２１０〜２４０に実行させるアクションおよび処理規則の有効期間となるタイマー値を求める。
【００３０】
フローエントリ管理部１０５は、ノードから受信した情報に基づいて照合規則（マッチングキー）の作成するとともに、経路・アクション計算部１０４にて計算された結果を処理規則（フローエントリ）としてフローエントリＤＢ１０１に登録し、ノード２１０〜２４０からの処理規則（フローエントリ）の追加または更新要求に応じて処理規則（フローエントリ）を設定する。
【００３１】
制御メッセージ処理部１０６は、ノード２１０〜２４０から受信した制御メッセージを解析して、制御装置（コントローラ）１００内の該当する処理手段に制御メッセージ情報を引き渡す。例えば、ノード２１０〜２４０から新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎ）を受信した場合、制御メッセージ処理部１０６は、フローエントリ管理部１０５に、当該新規フローに適用すべき処理規則（フローエントリ）がフローエントリＤＢ１０１に登録されていないか確認し、登録されていない場合には経路・アクション計算部１０４に新しい処理規則（フローエントリ）の作成を依頼する。
【００３２】
また、制御メッセージ処理部１０６は、第１のノード４００宛先学習パケットを流す区間の起点となる第２のノードに対し、宛先学習パケット生成部１０２にて生成された宛先学習パケットを送信し、指示したポートからの送信を要求する。また、複数の第１のノード４００に宛先学習パケットを受信させる必要がある場合には、当該宛先学習パケットの転送経路上にある第２のノードにも当該経路を実現する処理規則（フローエントリ）を設定する。
【００３３】
なお、図３に示した制御装置（コントローラ）１００の各部（処理手段）は、制御装置（コントローラ）１００を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
【００３４】
なお、本実施形態では、制御装置（コントローラ）１００が宛先学習パケットを作成し、第２のノードに対し、送信を要求するものとして説明したが、第２のノードに、宛先学習パケットの生成と送信を要求することとしてもよい。例えば、第２のノードに、バッファ等に保持したパケットのヘッダの書き換えと指定ポートからの出力を指示、または、これらの処理を実行させるアクションを定義した処理規則（フローエントリ）を設定することで、同等の動作を実現することができる。
【００３５】
以上のように、第１のノード４００を含む区間に宛先学習パケットを流すことで、図１に示すように、該当する第１のノード４００のパケット転送用のエントリを適正な状態に維持することが可能になる。
【００３６】
［第２の実施形態］
続いて、本発明の第２の実施形態について図面を参照して詳細に説明する。上記した第１の実施形態では、ある特定のパケット転送経路を維持する例を挙げて説明したが、本実施形態は、図４に示すように、対向した配置された第１のノードにそれぞれパケットを分岐させて、往路と復路で異なるパケット転送経路でパケットを転送できる構成を提供するものである。以下、本発明の第２実施形態は、上記した第１の実施形態と同等の構成で実現することができるため、第１の実施形態との相違点を中心に説明を加える。
【００３７】
図４に示すように、第１のノード４００と同等の第１のノード４１０が追加されたネットワークにおいて、往路と復路で異なるパケット転送経路でパケットを転送しようとする場合、図４の端末３１０（ＭＡＣアドレス＝Ｂ）から端末３２０（ＭＡＣアドレス＝Ａ）に宛てられたパケットが、図の右側の第１のノード４１０に受信された時点で、第１のノード４１０は、自装置のポート＃１から宛先ＭＡＣアドレスがＢであるパケットを送信するよう学習してしまう。
【００３８】
このため、第１の実施形態の宛先学習パケットでは、往路と復路で異なるパケット転送経路を実現することができなくなってしまう。
【００３９】
そこで、本実施形態の制御装置（コントローラ）１００Ｂは、図５に示すように、上記データパケットの転送経路の始点となる第２のノード２１０に処理規則（フローエントリ）を設定する際に、データパケットのパケットヘッダ中の送信元ＭＡＣアドレスを予め定められたＭＡＣアドレス（例えば、「Ｘ」）に書き換えるアクションを追加する。なお、図５においては省略されているが、端末３２０から端末３１０に向かうデータパケットの転送経路の始点となる第２のノード２５０にも、同様に送信元ＭＡＣアドレスを書き換えさせるアクションを追加した処理規則（フローエントリ）を設定する。
【００４０】
その後、本実施形態の制御装置（コントローラ）１００Ｂは、第２のノード２２０または第２のノード２５０に、上記予め定められたＭＡＣアドレス（Ｘ）を宛先ＭＡＣアドレスとし、送信元ＭＡＣアドレスを端末３２０のＭＡＣアドレス（Ａ）とする宛先学習パケットを送信させる。これにより、第１のノード４００は、端末３２０を宛先とするパケットをポート＃１から送信することを学習する。なお、図５においては省略されているが第１のノード４１０にも同様に宛先学習パケットを受信させることにより、宛先をＭＡＣアドレス（Ｂ）とするパケットをポート＃２から送信することを学習させることができる。
【００４１】
上記データパケットや第２のノード２５０から受信した宛先学習パケットが第１のノード４１０にて受信されても、第１のノード４１０は、宛先ＭＡＣアドレスがＭＡＣアドレス（Ｘ）であるパケットをポート＃１から送信することを学習するに止まり、宛先ＭＡＣアドレスがＭＡＣアドレス（Ｂ）であるパケットをポート＃２から送信するエントリを維持するので、図５に示したような往路と復路で異なるパケット転送経路を実現することができる。同様に、第１のノード４００も、宛先ＭＡＣアドレスがＭＡＣアドレス（Ａ）であるパケットをポート＃１から送信するエントリを維持する。
【００４２】
以上のように、本実施形態によれば、往路と復路で異なるパケット転送経路を実現することが可能となる。なお、当然のことであるが、第２のノード２２０、２４０に設定する処理規則（フローエントリ）の照合規則（マッチングキー）中に前記書き換えたＭＡＣアドレスが含まれている場合には、これらの内容も同様に修正することになる。
【００４３】
［第３の実施形態］
続いて、本発明の第３の実施形態について図面を参照して詳細に説明する。上記した第１の実施形態では、ある特定のパケット転送経路を維持する例を挙げて説明したが、本実施形態は、図６の点線に示すように、同一の宛先のパケットをフロー毎に分岐させて転送できる構成を提供するものである。以下、本発明の第３の実施形態は、上記した第１の実施形態と同等にの構成で実現することができるため、第１の実施形態との相違点を中心に説明を加える。
【００４４】
図６に示すように、第１の実施形態相当の宛先学習パケットでは、第１のノード４００は、ＭＡＣアドレス（Ａ）を宛先とするパケットは、すべてポート＃１から送信するよう学習してしまうため、第１のノード４００にフロー毎にパケットを分岐させることはできない。
【００４５】
そこで、本実施形態の制御装置（コントローラ）１００Ｃは、図７に示すように、データパケットの転送経路の始点となる第２のノード２１０に処理規則（フローエントリ）を設定する際に、データパケットのパケットヘッダ中の宛先ＭＡＣアドレスを、フロー毎に一意なＭＡＣアドレス（例えば、「Ｖ１」、「Ｖ２」）に書き換えるアクションを追加する。また、制御装置（コントローラ）１００Ｃは、データパケットの転送経路の終点となる第２のノード２３０に処理規則（フローエントリ）を設定する際に、データパケットのパケットヘッダ中の宛先ＭＡＣアドレスを、フロー毎に一意なＭＡＣアドレス（例えば、「Ｖ１」、「Ｖ２」）から、元のＭＡＣアドレスに復元するアクションを追加する。
【００４６】
なお、前記フロー毎に一意なＭＡＣアドレスは、制御装置（コントローラ）１００の宛先学習パケット生成部１０２が生成するものとしてもよいし、フローエントリＤＢ１０１のエントリ管理用の番号等を用いることとしてもよい。
【００４７】
その後、本実施形態の制御装置（コントローラ）１００Ｃは、第２のノード２２０または第２のノード２５０に、フロー毎に一意なＭＡＣアドレス（Ｖ１）を送信元ＭＡＣアドレスとする宛先学習パケットを送信させる。また、制御装置（コントローラ）１００は、第２のノード２４０または第２のノード２５０にも、フロー毎に一意なＭＡＣアドレス（Ｖ２）を送信元ＭＡＣアドレスとする宛先学習パケットを送信させる。これにより、第１のノード４００は、ＭＡＣアドレス（Ｖ１）を宛先とするパケットをポート＃１から送信し、ＭＡＣアドレス（Ｖ２）を宛先とするパケットをポート＃２から送信することを学習する。
【００４８】
以上のように、本実施形態によれば、パケット転送経路上の第１のノード４００に、第２のノードと同様のフローを区別したパケット転送動作を行わせることが可能になる。なお、当然のことであるが、第２のノード２２０、２４０に設定する処理規則（フローエントリ）の照合規則（マッチングキー）中に前記書き換えたＭＡＣアドレスが含まれている場合には、これらの内容も同様に修正することになる。
【００４９】
［第４の実施形態］
続いて、本発明の第４の実施形態について図面を参照して詳細に説明する。上記した第３の実施形態では、フロー毎に一意なＭＡＣアドレスを学習させるため、第１のノードが保持するエントリが増大してしまうことが考えられる。本実施形態は、パケット転送経路上の第２のノードそれぞれのポートに一意なＭＡＣアドレスを付与することにより、第１のノードが保持するエントリ数を抑えることのできる構成を提供するものである。以下、本発明の第４の実施形態は、上記した第１の実施形態と同等の構成で実現することができるため、第１の実施形態との相違点を中心に説明を加える。
【００５０】
以下の説明では、第２のノード２１０の第１のノード４００との接続ポートのＭＡＣアドレスをＬ１−１、第２のノード２２０の第１のノード４００との接続ポートのＭＡＣアドレスをＬ２−１、第１のノード４１０との接続ポートのＭＡＣアドレスをＬ２−２、第２のノード２４０の第１のノード４００との接続ポートのＭＡＣアドレスをＬ４−１、第１のノード４１０との接続ポートのＭＡＣアドレスをＬ４−２、第２のノード２３０の第１のノード４１０との接続ポートのＭＡＣアドレスをＬ３−１とする。
【００５１】
本実施形態の制御装置（コントローラ）１００Ｄは、図８に示すように、データパケットの転送経路上の第２のノード２１０、２２０に処理規則（フローエントリ）を設定する際に、データパケットのパケットヘッダ中の宛先および送信元ＭＡＣアドレスを、自装置のＭＡＣアドレスと次ホップのＭＡＣアドレスに書き換えるアクションを追加する。また、制御装置（コントローラ）１００は、データパケットの転送経路の終点となる第２のノード２５０に処理規則（フローエントリ）を設定する際に、データパケットのパケットヘッダ中の宛先および送信元ＭＡＣアドレスを、元のＭＡＣアドレスに復元するアクションを追加する。
【００５２】
その後、本実施形態の制御装置（コントローラ）１００Ｄは、上記データパケットの宛先ＭＡＣアドレスと、送信元ＭＡＣアドレスを入れ替えた宛先学習パケットを送信させる。なお、このような宛先学習パケットとして、ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）パケットを好適に用いることができる。
【００５３】
これにより、第１のノード４００、４１０には、それぞれ直接接続された第２のノードのＭＡＣアドレスのみが学習されるため、第１のノード４００、４１０の保持エントリ数を抑えることが可能となる。
【００５４】
また、本実施形態では、上記のようにホップ毎にデータパケットのヘッダを書き換えるとともに、これに対応する宛先学習パケットによる学習が行われるため、第２の実施形態と同様に、往路と復路で異なるパケット転送経路を実現することが可能である。また、上記第２のノードのポート毎のＭＡＣアドレスに代えて、第３の実施形態と同様に、フロー毎のＭＡＣアドレスによるデータパケットの書き換え動作と当該フロー毎の宛先学習パケットを送信することにより、同一の宛先のパケットをフロー毎に分岐させることも可能である。
【００５５】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した各実施形態に示した、第１、第２のノードおよび端末の数やネットワーク構成は、本発明の理解を助けるために簡略化したものであり、種々の態様を取りうることはもちろんである。
【００５６】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点による通信システム参照）
［第２の形態］
第１の形態の通信システムにおいて、
前記制御装置は、
データパケットの転送経路上において前記第１のノードより下流側にある第２のノードに対して宛先学習パケットを送信し、該宛先学習パケットを前記第１のノードに転送させ、または、前記第１のノードより下流側にある第２のノードに前記宛先学習パケットの生成と前記第１のノードへの送信を指示することにより、前記第１のノードに前記宛先学習パケットを受信させる通信システム。
［第３の形態］
第１または第２の形態の通信システムにおいて、
前記制御装置は、前記所定のパケット転送経路の第１のノードより上流側の第２のノードに処理規則を設定する際に、当該処理規則に、送信元アドレスを別のアドレスに書き換えさせる処理を追加する通信システム。
［第４の形態］
第１〜第３いずれか一の形態の通信システムにおいて、
前記制御装置は、前記所定のパケット転送経路の第１のノードより上流側の第２のノードに処理規則を設定する際に、当該処理規則に、パケットヘッダの宛先アドレスをフロー毎に設定した仮想宛先アドレスに書き換えさせる処理を追加し、
前記宛先学習パケットとして、前記仮想宛先アドレスを送信元とし、前記第１のノードより上流側のノードを宛先としたパケットを前記第１のノードに受信させる通信システム。
［第５の形態］
第１〜４いずれか一の形態の通信システムにおいて、
前記制御装置は、前記第１のノードを含む所定のパケット転送経路上の前記第１のノードに接続された第２のノードに処理規則を設定する際に、前記各第２のノードの処理規則に、自装置のポートに設定された仮想アドレスを送信元とし、前記第１のノードを介して接続された第２のノードのポートに設定された仮想アドレスを宛先とするようパケットヘッダを書き換えさせる処理を追加し、
前記宛先学習パケットとして、前記各仮想アドレスを送信元および宛先とした逆方向の宛先学習パケットを前記第１のノードに受信させる通信システム。
［第６の形態］
第５の形態の通信システムにおいて、
前記宛先学習パケットとしてＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）パケットを用いる通信システム。
［第７の形態］
第１〜６いずれか一の形態の通信システムにおいて、
前記制御装置は、前記第１のノードのエントリ保持期間より短い間隔で、宛先学習パケットを前記第１のノードに受信させる通信システム。
［第８の形態］
（上記第２の視点による制御装置参照）
［第９の形態］
（上記第３の視点によるノード制御方法参照）
［第１０の形態］
（上記第４の視点によるプログラム参照）
上記第８〜第１０の形態は、上記第１の形態の通信システムと同様に、第２〜第７の形態に展開することが可能である。
なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲（クレーム）の枠内において、種々の開示要素の多様な組み合せないし選択が可能である。
【符号の説明】
【００５７】
１００、１００Ｂ、１００Ｃ、１００Ｄ  制御装置（コントローラ）
４００、４１０  第１のノード
２１０〜２５０  第２のノード
３１０、３２０  端末
１０１  フローエントリデータベース（フローエントリＤＢ）
１０２  宛先学習パケット生成部
１０３  トポロジ管理部
１０４  経路・アクション計算部
１０５  フローエントリ管理部
１０６  制御メッセージ処理部
１０７  ノード通信部
【図１】
0005850471.tif 000002
【図２】
0005850471.tif 000003
【図３】
0005850471.tif 000004
【図４】
0005850471.tif 000005
【図５】
0005850471.tif 000006
【図６】
0005850471.tif 000007
【図７】
0005850471.tif 000008
【図８】
0005850471.tif 000009
【図９】
0005850471.tif 000010
【図１０】
0005850471.tif 000011