(57)【特許請求の範囲】
【請求項１】
自装置のポートと、当該ポートから転送可能なノードのアドレス情報とを対応付けたアドレステーブルを参照して、受信パケットを転送する第１のノードと、
パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備え、前記第１のノードを経由するパケット転送経路の入口側と出口側とに少なくとも１台配置された第２のノードと、
前記第２のノードに前記処理規則を設定する制御装置と、を含み、
前記制御装置は、
前記第２のノードのうち、入口側に位置する第２のノードからの要求に基づいて、新規フローに属するパケットを目的アドレスに送信するためパケット転送経路と当該パケット転送経路の出口側の第２のノードとその出力ポートとを決定する経路探索部と、
前記パケット転送経路の前記第１のノードより上流側の第２のノードに対し、前記第１のノードがパケット転送時に参照しないパケットヘッダの領域に、前記出力ポートと対応付けられたフロー識別情報を書き込むとともに、前記パケットヘッダのアドレス情報を前記出口側の第２のノードに到達するよう書き換えてからパケットを転送させる処理規則を設定し、かつ、
前記パケット転送経路の出口側に位置する第２のノードに対し、前記フロー識別情報が付与されたパケットを、前記フロー識別情報に対応するポートから送信させる処理規則を設定するパケット制御コマンド生成部と、
を備えたこと、を特徴とする通信システム。
【請求項２】
前記制御装置は、前記第２のノードのポートのうち、前記第１のノードと接続されたポート毎に与えられたアドレス情報を記憶するノード情報記憶部を備え、
前記ノード情報記憶部を参照して、前記上流側の第２のノードに、前記パケットヘッダの送信先アドレス情報を、前記第２のノードのアドレス情報に書き換えさせる請求項１の通信システム。
【請求項３】
前記制御装置は、前記第２のノードに接続された外部ノードのアドレス情報を記憶する外部ノードアドレス記憶部を備え、
前記外部ノードアドレス記憶部を参照して、出口側に位置する第２のノードに、前記上流側の第２のノードで変更されたアドレス情報を、前記外部ノードのアドレス情報に変更させる請求項２の通信システム。
【請求項４】
前記制御装置は、所定の時間間隔で、前記第１のノードと接続された前記第２のノードに、自装置のアドレス情報を学習させる学習パケットを送信させ、前記第１のノードのアドレステーブルを更新させる請求項１から３いずれか一の通信システム。
【請求項５】
前記制御装置は、前記第２のノードに、前記第１のノードが保持するアドレステーブルのエントリタイムアウト時間より短い間隔で、前記学習パケットを送信させる請求項４の通信システム。
【請求項６】
前記制御装置は、前記第２のノードに、送信パケットのヘッダのいずれかの領域に、ネットワークを多重化する識別子を付与させる請求項１から５いずれか一の通信システム。
【請求項７】
前記第２のノードは、前記第１のノードから受信したパケットと、前記照合規則の照合の結果、前記受信パケットに対応する処理規則を発見できなかった場合、当該受信パケットを廃棄するよう設定されている請求項１から６いずれか一の通信システム。
【請求項８】
前記アドレス情報は、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｒｅｓｓ）であり、前記第１のノードは、アドレステーブルとしてＭＡＣアドレステーブルを参照してパケットを転送するレイヤ２スイッチである請求項１から７いずれか一の通信システム。
【請求項９】
前記制御装置は、前記フロー識別情報として、少なくとも前記第２のノード同士が直接接続されたサブドメインの中で一意となる識別子を付与する請求項１から８いずれか一の通信システム。
【請求項１０】
自装置のポートと、当該ポートから転送可能なノードのアドレス情報とを対応付けたアドレステーブルを参照して、受信パケットを転送する第１のノードと、
パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備え、前記第１のノードを経由するパケット転送経路の入口側と出口側とに少なくとも１台配置された第２のノードと、接続され、
前記第２のノードのうち、入口側に位置する第２のノードからの要求に基づいて、新規フローに属するパケットを目的アドレスに送信するためパケット転送経路と当該パケット転送経路の出口側の第２のノードとその出力ポートとを決定する経路探索部と、
前記パケット転送経路の前記第１のノードより上流側の第２のノードに対し、前記第１のノードがパケット転送時に参照しないパケットヘッダの領域に、前記出力ポートと対応付けられたフロー識別情報を書き込むとともに、前記パケットヘッダのアドレス情報を前記出口側の第２のノードに到達するよう書き換えてからパケットを転送させる処理規則を設定し、かつ、
前記パケット転送経路の出口側に位置する第２のノードに対し、前記フロー識別情報が付与されたパケットを、前記フロー識別情報に対応するポートから送信させる処理規則を設定するパケット制御コマンド生成部と、
を備える制御装置。
【請求項１１】
自装置のポートと、当該ポートから転送可能なノードのアドレス情報とを対応付けたアドレステーブルを参照して、受信パケットを転送する第１のノードと、
パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備え、前記第１のノードを経由するパケット転送経路の入口側と出口側とに少なくとも１台配置された第２のノードと、接続された制御装置が、
前記第２のノードのうち、入口側に位置する第２のノードからの要求に基づいて、新規フローに属するパケットを目的アドレスに送信するためパケット転送経路と当該パケット転送経路の出口側の第２のノードとその出力ポートとを決定するステップと、
前記パケット転送経路の前記第１のノードより上流側の第２のノードに対し、前記第１のノードがパケット転送時に参照しないパケットヘッダの領域に、前記出力ポートと対応付けられたフロー識別情報を書き込むとともに、前記パケットヘッダのアドレス情報を前記出口側の第２のノードに到達するよう書き換えてからパケットを転送させる処理規則を設定するステップと、
前記パケット転送経路の出口側に位置する第２のノードに対し、前記フロー識別情報が付与されたパケットを、前記フロー識別情報に対応するポートから送信させる処理規則を設定するステップと、を含み、
前記第１のノードを経由して、前記入口側の第２のノードから、前記出口側の第２のノードへパケットを転送させる通信方法。
【請求項１２】
自装置のポートと、当該ポートから転送可能なノードのアドレス情報とを対応付けたアドレステーブルを参照して、受信パケットを転送する第１のノードと、
パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備え、前記第１のノードを経由するパケット転送経路の入口側と出口側とに少なくとも１台配置された第２のノードと、接続された制御装置を構成するコンピュータに実行させるプログラムであって、
前記第２のノードのうち、入口側に位置する第２のノードからの要求に基づいて、新規フローに属するパケットを目的アドレスに送信するためパケット転送経路と当該パケット転送経路の出口側の第２のノードとその出力ポートとを決定する処理と、
前記パケット転送経路の前記第１のノードより上流側の第２のノードに対し、前記第１のノードがパケット転送時に参照しないパケットヘッダの領域に、前記出力ポートと対応付けられたフロー識別情報を書き込むとともに、前記パケットヘッダのアドレス情報を前記出口側の第２のノードに到達するよう書き換えてからパケットを転送させる処理規則を設定する処理と、
前記パケット転送経路の出口側に位置する第２のノードに対し、前記フロー識別情報が付与されたパケットを、前記フロー識別情報に対応するポートから送信させる処理規則を設定する処理と、を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１０−１８５４２９号（２０１０年８月２０日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、通信システム、制御装置、通信方法およびプログラムに関し、特に、自装置のポートと当該ポートから転送可能なノードのアドレス情報とを対応付けたエントリを参照してパケット転送を行うノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットの転送等を行うノードとを含む通信システム、制御装置、通信方法およびプログラムに関する。
【背景技術】
【０００２】
非特許文献１、２に、オープンフロー（ＯｐｅｎＦｌｏｗ）にというネットワークアーキテクチャが記載されている。オープンフローは、オープンフローコントローラと呼ばれる制御装置が、オープンフロースイッチを制御するネットワークアーキテクチャである。オープンフローでは、上記オープンフロースイッチが担うパケット転送機能と、オープンフローコントローラが担う経路制御機能とをフロー制御プロトコルにより分離し、コントローラが、オープンフロースイッチに対して統一のＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を用いた制御を行う。また、オープンフローでは、データパスを高速にするとともに、制御コストを低く抑えるため、粒度をフロー単位としたパケット制御を行う。【０００３】
上記オープンフロースイッチ（以下、「ＯＦＳ」と記すこともある。）は、オープンフローコントローラとの通信用のセキュアチャネルと、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルとを備えている。フローテーブルには、フロー毎に、パケットヘッダと照合する照合規則（ＨｅａｄｅｒＦｉｅｌｄｓ／マッチングルール）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、処理内容を定義したアクション（Ａｃｔｉｏｎｓ）と、の組が定義される（非特許文献２の２頁「３．Ｆｌｏｗ  Ｔａｂｌｅ」参照）。【０００４】
図８は、フローテーブルに記憶される処理規則（フローエントリ）を示す説明図である。照合規則（ＨｅａｄｅｒＦｉｅｌｄｓ／マッチングルール）の個々のフィールドには、一致するか否かが判断される値（ｅｘａｃｔ）及びワイルドカード（ｗｉｌｄ  ｃａｒｄ）を設定することができる。【０００５】
図８の各フィールドの詳細は、非特許文献２の４頁の「Ｔａｂｌｅ３」に記載されている。図８の各フィールドは、図９に示すとおり、階層モデルの各レイヤと対応付けることができる。【０００６】
図１０に、非特許文献２に定義されているアクション名とアクションの内容を例示する。ＯＵＴＰＵＴは、パケットを指定ポート（インタフェース）に出力するアクションである。ＳＥＴ＿ＶＬＡＮ＿ＶＩＤからＳＥＴ＿ＴＰ＿ＤＳＴは、パケットヘッダのフィールドを修正するアクションである。例えば、アクションフィールドに「ＳＥＴ＿ＤＬ＿ＤＳＴ」のコードが設定されている場合、当該処理規則（フローエントリ）にマッチしたパケットの「ＭＡＣ  ＤＡ（宛先の装置）を更新する」処理が行われる。【０００７】
また、図８のフロー統計情報（Ｃｏｕｎｔｅｒｓ）には、フローやポート毎にパケット数やバイト数を記録するカウンタや、そのパケットを最後に受信してからの経過時間（セッション継続時間；Ｄｕｒａｔｉｏｎ）などが含まれ、当該処理規則（フローエントリ）を削除するか否かを判断するために用いられる（非特許文献２の５頁の「Ｔａｂｌｅ４」参照）。【０００８】
例えば、オープンフロースイッチは、最初のパケット（ｆｉｒｓｔ  ｐａｃｋｅｔ）を受信すると、フローテーブルから、受信パケットのヘッダ情報に適合する照合規則を持つ処理規則（フローエントリ）を検索する。検索の結果、受信パケットに適合する処理規則（フローエントリ）が見つかった場合、オープンフロースイッチは、受信パケットに対して、当該エントリのアクションフィールドに記述された処理内容を実施する。一方、前記検索の結果、受信パケットに適合する照合規則を持つ処理規則（フローエントリ）が見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対して受信パケットの情報（または受信パケットそのもの）を転送し、受信パケットの送信元・送信先に基づいたパケットの経路の決定を依頼し、これを実現するフローエントリを受け取ってフローテーブルを更新する。以降、オープンフロースイッチは、追加された処理規則（フローエントリ）に適合するパケットを受信すると、オープンフローコントローラに問い合わせることなく、対応する処理内容を実行することが可能となる。【０００９】
上記オープンフロースイッチとオープンフローコントローラがセキュアチャンネル上でやり取りするメッセージは、非特許文献２の９頁「４  Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ」以下に記載されている。なお、上記非特許文献１、２のオープンフローコントローラは、上記のように動作するオープンフロースイッチからフロー統計情報（Ｃｏｕｎｔｅｒｓ）を収集して、通信ポリシーやその時々のネットワークの負荷状態に応じて、個々のオープンフロースイッチに対して動的に経路（当該経路を実現するフローエントリ（処理規則））を設定し、通信ポリシーに適った経路制御や負荷分散等を行うことが可能となっている。【００１０】
特許文献１、２および非特許文献３〜５は、カプセル化（ｅｎｃａｐｓｕｌａｔｉｏｎ）によりトンネリングを実現する技術を開示する文献である。また、特許文献３〜４は、カプセル化（ｅｎｃａｐｓｕｌａｔｉｏｎ）を用いずに、ヘッダの書換えによりトンネリングを実現する技術を開示する文献である。本発明との関連については、後に説明する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】国際公開ＷＯ２００３／０４３２７６号
【特許文献２】特開２００７−２６７４２６号公報
【特許文献３】特開２００６−４２０４４号公報
【特許文献４】特開２００６−２４５７８５号公報
【非特許文献】
【００１２】
【非特許文献１】Ｎｉｃｋ  ＭｃＫｅｏｗｎほか７名、“ＯｐｅｎＦｌｏｗ：Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”、［online］、［平成22年7月26日検索］、インターネット〈URL：http://www.openflowswitch.org//documents/openflow-wp-latest.pdf〉
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”  Ｖｅｒｓｉｏｎ  1．０．０（Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０１)、［online］、［平成22年7月26日検索］、インターネット〈URL：http://www.openflowswitch.org/documents/openflow-spec-v1.0.0.pdf〉
【非特許文献３】Ｗ．  Ｔｏｗｎｓｌｅｙほか５名、“Ｌａｙｅｒ  Ｔｗｏ  Ｔｕｎｎｅｌｉｎｇ  Ｐｒｏｔｏｃｏｌ  “Ｌ２ＴＰ””、  Ｎｅｔｗｏｒｋ  Ｗｏｒｋｉｎｇ  Ｇｒｏｕｐ、Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ：  ２６６１、ＩＥＴＦ、Ａｕｇｕｓｔ  １９９９
【非特許文献４】Ｓ．Ｈａｎｋｓ  ほか３名、“Ｇｅｎｅｒｉｃ  Ｒｏｕｔｉｎｇ  Ｅｎｃａｐｓｕｌａｔｉｏｎ”、Ｎｅｔｗｏｒｋ  Ｗｏｒｋｉｎｇ  Ｇｒｏｕｐ、Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ：  １７０１、ＩＥＴＦ、Ｏｃｔｏｂｅｒ  １９９４
【非特許文献５】Ｌ．  Ｍａｒｔｉｎｉ，  Ｅｄ．  ほか３名、“Ｅｎｃａｐｓｕｌａｔｉｏｎ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｔｒａｎｓｐｏｒｔ  ｏｆ  Ｅｔｈｅｒｎｅｔ  ｏｖｅｒ  ＭＰＬＳ  Ｎｅｔｗｏｒｋｓ”、Ｎｅｔｗｏｒｋ  Ｗｏｒｋｉｎｇ  Ｇｒｏｕｐ、Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ：  ４４４８、ＩＥＴＦ、Ａｐｒｉｌ  ２００６
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上記の特許文献及び非特許文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者によってなされたものである。
ここで、図１１に示すように、ＯＦＳ２１０〜２３０と、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレステーブルを参照してパケットの転送を行うスイッチングハブ等のレイヤ２スイッチ（Ｌ２ＳＷ）２６０が混在した環境において、ＯＦＳ同士を通信させることを検討する。【００１４】
ＯＦＳ２１０〜２３０は、自由にパケットのパケットヘッダ等を変更可能であり、レイヤ２スイッチ（Ｌ２ＳＷ）２６０は、ＭＡＣアドレステーブルを参照してパケットの転送動作を行う。そこで、トンネリング技術を用いることで、レイヤ２スイッチ（Ｌ２ＳＷ）２６０に中継動作を行わせることができる。例えば、レイヤ２トンネリングプロトコルのＩＥＥＥ８０２．１ａｈ（特許文献１）、レイヤ２ＴＰ（非特許文献３）、レイヤ３トンネリングプロトコルのＧＲＥ（非特許文献４）、Ｅｔｈｅｒｎｅｔ  ｏｖｅｒ  ＭＰＬＳ（非特許文献５）を用いて、ＯＦＳ２１０からレイヤ２スイッチ（Ｌ２ＳＷ）１１０への転送時にペイロードに該トンネリングプロトコルのヘッダをつけるカプセル化、レイヤ２スイッチ（Ｌ２ＳＷ）２６０からのＯＦＳ２２０への転送時に該トンネリングプロトコルのヘッダを外すデカプセル化によって中継を実現することが可能である。【００１５】
しかしながら、非特許文献２のオープンフロープロトコル  バージョン１．０．０では、上記のようなトンネリングは標準として規定されていない。結果として、特許文献１、２や非特許文献３〜５のトンネリング機能は、各スイッチ依存の実装となり、互換性を損なうものとなってしまう。【００１６】
次に、特許文献３、４のパケットヘッダの書換えによりトンネリングを実現できる方法を検討する。例えば、特許文献３の方法では、第１、第２のトンネリング装置間に、それぞれ複数のＩＰネットワークに物理的または論理的に接続され、接続されているそれぞれのＩＰネットワークからＩＰアドレスが割り当てられており、第１のトンネリング装置に接続されＩＰアドレスを保有する第１の通信装置と、第２のトンネリング装置に接続されＩＰアドレスを保有する第２の通信装置がＩＰネットワークを介して通信を行う際に、第１のトンネリング装置と第２のトンネリング装置の間でＩＰアドレスの変換のみでトンネリングを実現している。【００１７】
より具体的には、特許文献３の第１のトンネリング装置および第２のトンネリング装置は、「自トンネリング装置のデフォルトルートのＩＰアドレス」、「相手トンネリング装置のデフォルトルートのＩＰアドレス」、「自トンネリング装置のトンネルを形成するＩＰアドレス」、「相手トンネリング装置のトンネルを形成するＩＰアドレス」、「通信装置のＩＰアドレス」からなる組の変換テーブルを作成・保持している。【００１８】
前記第１のトンネリング装置は、第１の通信装置からＩＰパケットを受信した場合に前記変換テーブルを検索し、受信したＩＰパケットに含まれる送信元アドレス、宛先アドレスが、「通信装置のＩＰアドレス」、「相手トンネリング装置のデフォルトルートのＩＰアドレス」に一致する前記変換テーブルを検索することにより、対応する「自トンネリング装置のトンネルを形成するＩＰアドレス」、「相手トンネリング装置のトンネルを形成するＩＰアドレス」を導き、受信したＩＰパケットに含まれる送信元ＩＰアドレスおよび宛先ＩＰ  アドレスを、それぞれ導かれた「自トンネリング装置のトンネルを形成するＩＰアドレス」、「相手トンネリング装置のトンネルを形成するＩＰアドレス」に変換してＩＰネットワークへ転送する。【００１９】
第２のトンネリング装置は、ＩＰネットワークからＩＰパケットを受信した場合に変換テーブルを検索し、受信したＩＰパケットに含まれる送信元ＩＰアドレス番号、宛先ＩＰアドレスが、『相手トンネリング装置のトンネルを形成するＩＰアドレス』、『自トンネリング装置のトンネルを形成するＩＰアドレス』に一致する前記変換テーブルを検索することにより、対応する『相手トンネリング装置のデフォルトルートのＩＰアドレス』および『通信装置のＩＰアドレス』を導き、受信したＩＰパケットに含まれる送信元ＩＰアドレス、宛先ＩＰアドレスを、それぞれ導かれた『相手通信装置のトンネルを形成するＩＰアドレス』、『通信装置のＩＰアドレス』に変換して第２の通信装置へ転送する。【００２０】
以上のような特許文献３に開示されている方法は、ＩＰアドレスを変換するものであり、第１、第２のトンネリング装置を、非特許文献２で規定されているオープンフロースイッチに置き換えることで対応が可能である。【００２１】
しかしながら、特許文献３に開示されている方法は、通信装置毎に変換先ＩＰアドレスが必要であり、第１、第２のトンネリング装置間にあるレイヤ２スイッチは、ひとつひとつのＩＰアドレスごとにＭＡＣアドレスを学習するため、トンネリング可能な通信装置の数が、レイヤ２スイッチが学習できるＭＡＣアドレスの数に依存してしまうという問題点がある。ＭＡＣアドレステーブルのエントリ数は、通常４０９６〜９８３０４エントリであるため、その数からトンネリング装置の台数を引いた数が上限となる。【００２２】
また、ＭＡＣアドレステーブルのエントリは、通常３００秒でタイムアウトして消えてしまう（エージング（Ａｇｉｎｇ）ともいう。）。学習されていないＭＡＣアドレスは、ネットワーク全体にブロードキャストされるため、上限の９８，３０４エントリのＭＡＣアドレスが削除されないよう維持するには、平均で３２８パケット／秒ものブロードキャストパケットが発生して、ネットワークへの負荷が大きいという問題点もある。【００２３】
その他、特許文献４の方法は、出力ポート情報をパケットへ付与することにより上記出口側のルータにおける送信先ポートの解決処理の負荷が軽減されているが、上記したＩＰアドレスやＭＡＣアドレステーブルのエントリ数などによりトンネリング可能な通信装置の数に制約が生じるという問題点は残されている。【００２４】
本発明は、上記した事情に鑑みてなされたものであって、その目的とするところは、スイッチングハブ等の転送ノード（第１のノード）と、非特許文献２の仕様に準拠したノード（第２のノード）と、が混在する環境において、トンネリング可能な通信端末の数の制約がなく、しかも、ネットワークへの負荷も抑えることのできるトンネリングを実現できる構成を提供することにある。
【課題を解決するための手段】
【００２５】
本発明の第１の視点によれば、自装置のポートと、当該ポートから転送可能なノードのアドレス情報とを対応付けたアドレステーブルを参照して、受信パケットを転送する第１のノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備え、前記第１のノードを経由するパケット転送経路の入口側と出口側とに少なくとも１台配置された第２のノードと、前記第２のノードに前記処理規則を設定する制御装置と、を含み、前記制御装置は、前記第２のノードのうち、入口側に位置する第２のノードからの要求に基づいて、新規フローに属するパケットを目的アドレスに送信するためパケット転送経路と当該パケット転送経路の出口側の第２のノードとその出力ポートとを決定する経路探索部と、前記パケット転送経路の前記第１のノードより上流側の第２のノードに対し、前記第１のノードがパケット転送時に参照しないパケットヘッダの領域に、前記出力ポートと対応付けられたフロー識別情報を書き込むとともに、前記パケットヘッダのアドレス情報を前記出口側の第２のノードに到達するよう書き換えてからパケットを転送させる処理規則を設定し、かつ、前記パケット転送経路の出口側に位置する第２のノードに対し、前記フロー識別情報が付与されたパケットを、前記フロー識別情報に対応するポートから送信させる処理規則を設定するパケット制御コマンド生成部と、を備えたこと、を特徴とする通信システムが提供される。【００２６】
本発明の第２の視点によれば、自装置のポートと、当該ポートから転送可能なノードのアドレス情報とを対応付けたアドレステーブルを参照して、受信パケットを転送する第１のノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備え、前記第１のノードを経由するパケット転送経路の入口側と出口側とに少なくとも１台配置された第２のノードと、接続され、前記第２のノードのうち、入口側に位置する第２のノードからの要求に基づいて、新規フローに属するパケットを目的アドレスに送信するためパケット転送経路と当該パケット転送経路の出口側の第２のノードとその出力ポートとを決定する経路探索部と、前記パケット転送経路の前記第１のノードより上流側の第２のノードに対し、前記第１のノードがパケット転送時に参照しないパケットヘッダの領域に、前記出力ポートと対応付けられたフロー識別情報を書き込むとともに、前記パケットヘッダのアドレス情報を前記出口側の第２のノードに到達するよう書き換えてからパケットを転送させる処理規則を設定し、かつ、前記パケット転送経路の出口側に位置する第２のノードに対し、前記フロー識別情報が付与されたパケットを、前記フロー識別情報に対応するポートから送信させる処理規則を設定するパケット制御コマンド生成部と、を備える制御装置が提供される。【００２７】
本発明の第３の視点によれば、自装置のポートと、当該ポートから転送可能なノードのアドレス情報とを対応付けたアドレステーブルを参照して、受信パケットを転送する第１のノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備え、前記第１のノードを経由するパケット転送経路の入口側と出口側とに少なくとも１台配置された第２のノードと、接続された制御装置が、前記第２のノードのうち、入口側に位置する第２のノードからの要求に基づいて、新規フローに属するパケットを目的アドレスに送信するためパケット転送経路と当該パケット転送経路の出口側の第２のノードとその出力ポートとを決定するステップと、前記パケット転送経路の前記第１のノードより上流側の第２のノードに対し、前記第１のノードがパケット転送時に参照しないパケットヘッダの領域に、前記出力ポートと対応付けられたフロー識別情報を書き込むとともに、前記パケットヘッダのアドレス情報を前記出口側の第２のノードに到達するよう書き換えてからパケットを転送させる処理規則を設定するステップと、前記パケット転送経路の出口側に位置する第２のノードに対し、前記フロー識別情報が付与されたパケットを、前記フロー識別情報に対応するポートから送信させる処理規則を設定するステップと、を含み、前記第１のノードを経由して、前記入口側の第２のノードから、前記出口側の第２のノードへパケットを転送させる通信方法が提供される。本方法は、上記第２のノードを制御する制御装置を構成するコンピュータという、特定の機械に結びつけられている。【００２８】
本発明の第４の視点によれば、自装置のポートと、当該ポートから転送可能なノードのアドレス情報とを対応付けたアドレステーブルを参照して、受信パケットを転送する第１のノードと、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備え、前記第１のノードを経由するパケット転送経路の入口側と出口側とに少なくとも１台配置された第２のノードと、接続された制御装置を構成するコンピュータに実行させるプログラムであって、前記第２のノードのうち、入口側に位置する第２のノードからの要求に基づいて、新規フローに属するパケットを目的アドレスに送信するためパケット転送経路と当該パケット転送経路の出口側の第２のノードとその出力ポートとを決定する処理と、前記パケット転送経路の前記第１のノードより上流側の第２のノードに対し、前記第１のノードがパケット転送時に参照しないパケットヘッダの領域に、前記出力ポートと対応付けられたフロー識別情報を書き込むとともに、前記パケットヘッダのアドレス情報を前記出口側の第２のノードに到達するよう書き換えてからパケットを転送させる処理規則を設定する処理と、前記パケット転送経路の出口側に位置する第２のノードに対し、前記フロー識別情報が付与されたパケットを、前記フロー識別情報に対応するポートから送信させる処理規則を設定する処理と、を前記コンピュータに実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００２９】
本発明によれば、第１の転送ノードと、非特許文献２の仕様に準拠した第２のノードと、が混在する環境において、トンネリング可能な通信端末の数の制約を無くすとともに、ネットワークへの負荷を抑えることが可能となる。
【図面の簡単な説明】
【００３０】
【図１】本発明の概要を説明するための図である。
【図２】本発明の第１の実施形態の全体構成を表した図である。
【図３】本発明の第１の実施形態の制御装置の詳細構成を表したブロック図である。
【図４】本発明の第１の実施形態の動作を説明するための図である。
【図５】本発明の第１の実施形態の動作を表した流れ図である。
【図６】本発明の第１の実施形態において実現可能な別のパケットの転送経路の例である。
【図７】本発明の第２の実施形態の全体構成を表した図である。
【図８】非特許文献２に記載のフローエントリの構成を表した図である。
【図９】図８のフローエントリの各フィールドと、レイヤの対応関係を示す図である。
【図１０】非特許文献２に記載されているアクション名とアクションの内容を示す図である。
【図１１】第１のノードと、第２のノードとが混在している構成を示す図である。
【発明を実施するための形態】
【００３１】
はじめに、本発明の概要について図面を参照して説明する。図１に示すように、本発明は、自装置のポートに接続されているノードのアドレス情報を保持するアドレステーブルを参照して、受信パケットを転送する第１のノード２６０と、パケットに適用する処理と前記処理を適用するパケットを特定するための照合規則とを対応付けた処理規則に従って受信パケットを処理するパケット処理部を備え、前記第１のノードを経由するパケット転送経路の入口側と出口側とに少なくとも１台配置された第２のノード（ＯＦＳ）２１０、２２０と、前記第２のノード２１０、２２０に前記処理規則を設定する制御装置１００と、を含んだ環境にて実現できる。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【００３２】
前記制御装置１００は、第２のノードのうち、あるパケットを転送しようとする外部ノード（例えば、外部ノード３１０ａ）から見て、入口側に位置する第２のノード２１０からの要求に基づいて、新規フローに属するパケットを目的アドレスに送信するためパケット転送経路と当該パケット転送経路の出口側の第２のノードとその出力ポートとを決定する経路探索部と、前記パケット転送経路の前記第１のノードより上流側の第２のノード（図１の場合、第２のノード２１０）に対し、前記第１のノードがパケット転送時に参照しないパケットヘッダの領域に、前記出力ポートと対応付けられたフロー識別情報を書き込むとともに、前記パケットヘッダのアドレス情報を前記出口側の第２のノードに到達するよう書き換えてからパケットを転送させる処理規則を設定し、かつ、前記パケット転送経路の出口側に位置する第２のノードに対し、前記フロー識別情報が付与されたパケットを、前記フロー識別情報に対応するポートから送信させる処理規則を設定するパケット制御コマンド生成部と、を備える。
【００３３】
例えば、外部ノード３１０ａが、外部ノード３２０ａに宛てて、パケットを送信した場合、制御装置１００は、外部ノード３１０ａおよび外部ノード３２０ａが接続する位置およびネットワークトポロジを参照して、第２のノード（ＯＦＳ）２１０、第１のノード２６０、第２のノード（ＯＦＳ）２２０の順でパケットを転送し、第２のノード（ＯＦＳ）２２０の第１ポートからパケットを出力させることを決定したものとする。
【００３４】
このとき、制御装置１００は、入口側の第２のノード（ＯＦＳ）２１０に対し、第１のノード２６０がパケット転送時に参照しないパケットヘッダの領域（例えば、図８のＩＰ  ＴｏＳ  ｂｉｔｓフィールド）に、前記出力ポートと対応付けられたフロー識別情報（例えば、＃１）を書き込むとともに、前記パケットヘッダのＭＡＣアドレスを前記出口側の第２のノードのＭＡＣアドレスに書き換えてからパケットを転送させる処理規則を設定する。
【００３５】
また、制御装置１００は、前記パケット転送経路の出口側に位置する第２のノード（ＯＦＳ）２２０に対し、前記フロー識別情報が付与されたパケットを、前記フロー識別情報に対応するポートから送信させるアクションを設定した処理規則を設定する。
【００３６】
以上により、入口側の第２のノード（ＯＦＳ）２１０にてパケットヘッダが書き換えられるため、外部ノード３１０ａから送信されたパケットは、第１のノード２６０、出口側の第２のノード（ＯＦＳ）２２０の順で転送され、第２のノード２２０の第１のポートから出力されることにより、外部ノード３２０ａに到達する。
【００３７】
このとき、制御装置１００がパケットヘッダを書き換える内容は、上述のフロー識別情報（例えば、＃１）と、パケットを出口側の第２のノード２２０に到達させるためのアドレス情報である。このため、外部ノードの一方または双方が異なっても同一の経路であれば、同一のアドレス情報を用いることができるため、冒頭に述べたＭＡＣアドレステーブルのエントリ数の上限等に基づく、トンネリング可能な端末数（外部ノード数）の制約はほとんど無くなってしまう。他方、同一の経路であっても、フロー識別情報により、フローを識別可能であるため、第２のノード２２０にフロー単位で転送先を識別させることが可能である。
【００３８】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図２は、本発明の第１の実施形態の全体構成を表した図である。図２を参照すると、複数の第１のノード２６０と、第２のノード（ＯＦＳ）２１０、２２０と、第２のノード（ＯＦＳ）２１０、２２０を制御可能な制御装置（ＯＦＣ）１００Ａとを含んだ構成が示されている。
【００３９】
第１のノード２６０は、スイッチングハブやリピータハブ等、制御装置（ＯＦＣ）１００Ａからの制御を受けない中継装置である。以下の実施形態では、第１のノード２６０は、スイッチングハブ相当のレイヤ２スイッチ（Ｌ２ＳＷ）であるものとして説明する。
【００４０】
第２のノード（ＯＦＳ）２１０、２２０は、処理規則（フローエントリ）を保持するフローテーブルと、処理規則（フローエントリ）に従って受信パケットを処理するパケット処理部を備える非特許文献２の仕様に準拠したオープンフロースイッチ相当の中継装置である。第２のノード（ＯＦＳ）２１０、２２０には、それぞれ外部ノード３１０ａ、３１０ｂ、３２０ａ、３２０ｂが接続されている。なお、図２の例では、第２のノード（ＯＦＳ）２１０、２２０のみを示したが、その他の任意の位置に第２のノード（ＯＦＳ）が配置されていてもよい。例えば、複数の第１のノード２６０の間に、第２のノード（ＯＦＳ）が配置され、制御装置（ＯＦＣ）１００Ａの制御に従ってパケット転送、パケットヘッダの書換え、パケット廃棄などを行う構成も採用可能である。
【００４１】
外部ノード３１０ａ、３１０ｂ、３２０ａ、３２０ｂは、ユーザの端末、ユーザの端末からの要求に応じてサービスを提供するサーバ、ユーザの端末からの要求に応じてネットワークに接続するＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）クライアント等である。
【００４２】
制御装置（ＯＦＣ）１００Ａは、非特許文献１、２のオープンコントローラと同様に第２のノード（ＯＦＳ）２１０、２２０を制御する装置である。非特許文献１、２のオープンコントローラとの相違点は後に図３を参照して説明する。
【００４３】
また、以下の説明では、第２のノード（ＯＦＳ）２１０、２２０、第１のノード（Ｌ２ＳＷ）２６０を含めて「ドメイン」と呼ぶこととする。
【００４４】
図３は、制御装置（ＯＦＣ）１００Ａの詳細構成を表したブロック図である。図３を参照すると、第２のノード（ＯＦＳ）２１０、２２０との制御用通信を行うノード通信部１０１と、外部より設定情報を取得する設定情報取得部１０２と、ノード通信部１０１や設定情報取得部１０２より処理対象となるパケットの情報を取得する処理対象パケット情報取得部１０３と、処理対象となるパケットの転送経路を探索する経路探索部１０４と、レイヤ３アドレスと、当該レイヤ３アドレスを収容している第２のノード（ＯＦＳ）２１０、２２０およびフロー（照合規則）の対応関係を記憶する外部ノード位置情報記憶部１０５と、第２のノード（ＯＦＳ）２１０、２２０および第１のノード（Ｌ２ＳＷ）を含めたネットワークトポロジを管理するトポロジ情報記憶部１０６と、第２のノード（ＯＦＳ）がフローを一意に特定できるユニークなＩＤ（以下、「フロー識別子」という。）を割り振りを含む処理規則（フローエントリ）の生成を行う処理規則生成部１０７と、割り当て可能なフロー識別子及びアクションを管理するフロー識別子管理部１０８と、第２のノード（ＯＦＳ）２１０、２２０の第１のノード（Ｌ２ＳＷ）２６０との接続ポートと、第２のノード（ＯＦＳ）２１０、２２０が第１のノード（Ｌ２ＳＷ）２６０との通信に用いるアドレス（ＭＡＣアドレス）との対応関係を記憶するノード情報記憶部１０９と、第２のノード（ＯＦＳ）２１０、２２０に対して前記生成した処理規則（フローエントリ）の設定や学習パケットの送信動作を実行させるパケット制御コマンド生成部１１０と、外部ノード３１０ａ〜３２０ｂのレイヤ２アドレスを記憶する外部ノードレイヤ２アドレス記憶部１１１と、を備えた構成が示されている。
【００４５】
上記図３に示した制御装置（ＯＦＣ）１００Ａの各処理部（処理手段）の構成は本発明を判りやすく説明するために例示したものであり、適宜統廃合またはさらに細分化することができる。また、前記制御装置（ＯＦＣ）１００Ａの各処理部（処理手段）は、制御装置（ＯＦＣ）１００Ａを構成するコンピュータに、そのハードウェアを用いて、後記する各処理を実行させるコンピュータプログラムにより実現することもできる。
【００４６】
ここで、フロー（照合規則）とは、図９に示す各レイヤの任意のフィールドのマッチング条件（ワイルドカード使用可。）である。第２のノードの入口ポートを指定してもよい。
【００４７】
以下、上記制御装置（ＯＦＣ）１００Ａの各部の構成について、図４の外部ノード３１０ｂから外部ノード３２０ｂ宛てのパケットが第２のノード（ＯＦＳ）２１０に入ってきた場合を例として説明する。
【００４８】
ノード通信部１０１は、第２のノード（ＯＦＳ）２１０、２２０との制御用セッションの確立、制御用コマンドの送信・受信を行う。制御用コマンドとしては、非特許文献２のオープンフロープロトコルを用いてもよい。また、Ｔｅｌｎｅｔ経由のＣＵＩ（コマンドラインインタフェース）や、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）を用いて通信を行ってもよい。
【００４９】
設定情報取得部１０２は、外部ファイルやデータベースより設定情報を読み取る部位である。
【００５０】
処理対象パケット情報取得部１０３は、ノード通信部１０１、設定情報取得部１０２より、処理対象となるパケットのレイヤ３送信先アドレスを取得する。例えば、第２のノード（ＯＦＳ）２１０より、処理規則（フローエントリ）の設定を要求するメッセージ（Ｐａｃｋｅｔ−ｉｎ）を受信した場合、処理対象パケット情報取得部１０３は、ノード通信部１０１から、レイヤ３アドレスとして、第２のノード（ＯＦＳ）２１０から受信したパケットまたはパケットヘッダを含む情報から、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスを取得する。
【００５１】
経路探索部１０４は、外部ノード位置情報記憶部１０５から前記レイヤ３送信アドレスに対応する外部ノードの位置、即ち、送信先となるドメイン外へ出口に位置する第２のノード（ＯＦＳ）２２０とフロー（照合規則）を取得して、トポロジ情報記憶部１０６に記憶されたネットワークトポロジに従って経路を探索する。以下の説明では、図２の外部ノード３１０ｂから外部ノード３２０ｂ宛てのパケットに対して、第２のノード（ＯＦＳ）２１０をドメインの入口として、複数の第１のノード（Ｌ２ＳＷ）２６０を経て、第２のノード（ＯＦＳ）２２０に到る経路が計算されたものとする。
【００５２】
処理規則生成部１０７は、フロー識別子管理部１０８を参照して、送信先となる第２のノード（ＯＦＳ）２２０内でフローを一意に特定できるユニークなＩＤ（以下、「フロー識別子」という。）を割り振り、所定のポートからの転送処理等を実行させるアクションを指定して処理規則（フローエントリ）を生成する。処理規則生成部１０７は、前記生成したフロー識別子とアクションを、フロー識別子管理部１０８へ登録する。
【００５３】
前記フロー識別子は、第２のノード（ＯＦＳ）２２０がフローが特定できるようなものであれば種々の方法にて作成することができる。例えば、レイヤ３の送信元アドレス、および、レイヤ３の送信先アドレスのいずれかまたは双方を組み合わせてユニークな複合キーとなるようにフロー識別子を生成することとしてもよい。また、フロー識別子は、送信先となる第２のノード（ＯＦＳ）２２０の入力ポートも組み合わせてユニークな複合キーとなるように割り振ってもよい。また、第１のノード（Ｌ２ＳＷ）２６０を介した通信に用いられるレイヤ２の送信元アドレス、および、レイヤ２の送信先アドレスのいずれかまたは双方を組み合わせてユニークな複合キーとなるように割り振ってもよい。
【００５４】
アクションは、上記のとおり指定ポートからのパケット出力を実行させるコマンドのほか、出口ポートにてネットワークを多重化する識別子を指定するコマンドを含んでもよい。出口ポートを多重化する識別子としては、Ｅｔｈｅｒｎｅｔ（登録商標）においてＩＥＥＥ８０２．１ＱのタグＶＬＡＮ  ＩＤ、ＩＥＥＥ８０２．１ａｄのサービスＶＬＡＮタグ（Ｓ−ＴＡＧ）、サービスＶＬＡＮ識別子（Ｓ−ＶＩＤ）、カスタマＶＬＡＮタグ（Ｃ−ＴＡＧ）等が挙げられる。また、出口ポートを多重化する識別子として、レイヤ２．５といわれるＭＰＬＳ（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）のラベルも用いてもよい。
【００５５】
なお、制御コマンドとして非特許文献２のオープンフロープロトコルを用いる場合、アクションとして、Ｆｌｏｗ  ＭｏｄのＡｃｔｉｏｎを用いることができる。Ｆｌｏｗ  ＭｏｄのＡｃｔｉｏｎとしては、ＯＵＴＰＵＴコマンドにより出力ポートを指定するほか、また、フロー識別子をＩＰ  ＴｏＳ  ｂｉｔｓフィールドに書き込んでいる場合には、ＩＰ  ＴｏＳ  ｂｉｔｓフィールドを０に更新するアクションを追加してもよい。また、出口ポートにてネットワークを多重化する識別子としてＴＡＧ  ＶＬＡＮ  ＩＤを用いている場合には、ＴＡＧ  ＶＬＡＮ  ＩＤを書き換えるアクションを追加しても良い。もちろんその他のＦｌｏｗ  ＭｏｄのＡｃｔｉｏｎを含んでもよい。
【００５６】
パケット制御コマンド生成部１１０は、第２のノード（ＯＦＳ）２１０、２２０に対し、処理規則（フローエントリ）の保持や特定の処理を実行させる制御コマンドを生成して、ノード通信部１０１経由で、第２のノード（ＯＦＳ）２１０、２２０に該制御コマンドを送信する。
【００５７】
具体的には、パケット制御コマンド生成部１１０は、第２のノード（ＯＦＳ）２１０に対しては、該処理対象となるパケットのヘッダに、前記フロー識別子を含むように変更させるコマンド、当該パケットの送信先レイヤ２アドレスを、ノード情報記憶部１０９より読み出した出口側の第２のノード（ＯＦＳ）２２０の入力ポート（第１のノード（Ｌ２ＳＷ）２６０との通信に用いる入力ポート）のレイヤ２アドレスへ変更するコマンド、および、フロー識別子管理部１０８より読み出した該当フロー識別子のアクションに対応するコマンドを生成する。
【００５８】
なお、パケットヘッダに前記フロー識別子を含める際には、第１のノード（Ｌ２ＳＷ）がパケット転送時に参照しないレイヤ（レイヤ２より上位レイヤ）のフィールドを用いる。例えば、ＩＰパケットの場合、サービスタイプフィールド、ＩＰオプションフィールド、ＩＤフィールドを用いることができる。また、第１のノード（Ｌ２ＳＷ）２６０でネットワークを多重化する識別子を用いている場合、この多重化識別子を付与させるコマンドを生成することもできる。
【００５９】
また、第２のノード（ＯＦＳ）２１０において、パケットの送信先レイヤ２アドレスに加えて、パケットの送信元レイヤ２アドレスを変更してもよい。この場合、ノード情報記憶部１０９より読み出した第２のノード（ＯＦＳ）２１０が第１のノード（Ｌ２ＳＷ）２６０との通信に用いるレイヤ２アドレスに変更するコマンドを生成することになる。
【００６０】
これらの制御コマンドとして非特許文献２のオープンフロープロトコルを用いる場合、Ｍａｔｃｈ条件として、レイヤ３送信先アドレスを指定したＦｌｏｗ  Ｍｏｄ（処理規則（フローエントリ）追加コマンド）を用いることができる。具体的には、Ｆｌｏｗ  Ｍｏｄのアクションフィールドに、ＳＥＴ＿ＮＷ＿ＴＯＳコマンドを設定し、前記フロー識別子を変更さえ、ＳＥＴ＿ＤＬ＿ＤＳＴコマンドを設定し、宛て先レイヤ２アドレスを変更させ、ＯＵＴＰＵＴコマンドを設定し出力ポートからの出力を実行させることができる。第１のノード２６０にて、ネットワークを多重化する識別子としてＴＡＧ  ＶＬＡＮ  ＩＤを用いている場合には、ＳＥＴ＿ＶＬＡＮ＿ＩＤコマンドを設定してＴＡＧ  ＶＬＡＮ  ＩＤをパケットに付与する処理が追加される。
【００６１】
また、第２のノード（ＯＦＳ）２１０は、フローテーブルの検索の結果、第１のノード（Ｌ２ＳＷ）２６０から受信したパケットに対応する処理規則（フローエントリ）を発見できなかった場合、当該受信パケットを廃棄するよう設定することができる。具体的には、第１のノード（Ｌ２ＳＷ）２６０との通信に用いるポートにおいて、経路の導通確認用パケット以外のパケットを受信した場合、フローテーブルの下位にこれらパケットをドロップ（廃棄）する処理規則（フローエントリ）を設定することで、制御装置（ＯＦＣ）１００ＡへＰａｃｋｅｔ−Iｎが送信されないようにすることができる。また、ブロードキャストパケットについても低優先で予めドロップ（廃棄）するようにして、制御装置（ＯＦＣ）１００ＡへＰａｃｋｅｔ−ｉｎがあがらないようにしてもよい。このように設定することで、制御装置（ＯＦＣ）１００Ａの負荷を下げることができる。
【００６２】
また、第２のノード（ＯＦＳ）２２０に対しては、入力ポートから来た第２のノード（ＯＦＳ）２１０で変更されたパケットに対して、該パケットのフロー識別子に従ってフローを特定して、外部ノードレイヤ２アドレス記憶部１１１から送信先のレイヤ３アドレスに対応する外部ノードのレイヤ２アドレスを読み出して、該パケットの送信先レイヤ２アドレスを当該外部ノードのレイヤ２アドレスに変更するコマンド、フロー（照合規則）に対応付けられたアクションを指定するコマンドを生成する。必要あれば、ネットワークを多重化する識別子をヘッダに付加するコマンドを生成してもよい。
【００６３】
フロー識別子としては、フローを一意に特定できるものであれば良いが、例えば、レイヤ３の送信先アドレス、レイヤ３の送信元アドレスのいずれか、もしくは、これらの双方と組み合わせてフローやレイヤ２を多重化する識別子を特定できるようにしてもよい。また、これらに加えて入力ポートも組み合わせて用いる態様も採用可能である。
【００６４】
また、第２のノード（ＯＦＳ）２２０において、パケットの送信先レイヤ２アドレスに加えて、パケットの送信元レイヤ２アドレスを変更してもよい。この場合、外部ノードレイヤ２アドレス記憶部１１１より送信元レイヤ３アドレスに対応するレイヤ２アドレスを読み出し、該当パケットの送信元レイヤ２アドレスを変更するコマンドを生成してもよい。
【００６５】
これらの制御コマンドとして非特許文献２のオープンフロープロトコルを用いる場合、Ｍａｔｃｈ条件として、ＩＰ  ＴｏＳ  ｂｉｔｓフィールドを指定したＦｌｏｗ  Ｍｏｄを用いることができる。また、フロー識別子の振り方によっては、レイヤ３の送信先アドレス、および、レイヤ３の送信先アドレスのいずれか、もしくは、これら双方の組み合わせを指定したＦｌｏｗ  Ｍｏｄを用いることができる。具体的には、Ｆｌｏｗ  Ｍｏｄのアクションフィールドに、ＳＥＴ＿ＤＬ＿ＤＳＴコマンドを設定することで、宛て先レイヤ２アドレスを変更させ、ＯＵＴＰＵＴコマンドを設定することで出力ポートからの出力を実行させることができる。このとき、ＳＥＴ＿ＮＷ＿ＴＯＳコマンドによりＩＰ  ＴｏＳ  ｂｉｔｓフィールドを０に更新させてもよい。ネットワークを多重化する識別子としてＴＡＧ  ＶＬＡＮ  ＩＤを用いている場合には、ＴＡＧ  ＶＬＡＮ  ＩＤをパケットに付与するアクションが追加される。
【００６６】
また、第２のノード（ＯＦＳ）２２０においても、第１のノード（Ｌ２ＳＷ）２６０との通信に用いるポートにおいて、経路の導通確認用パケット以外のパケットを受信した場合、低優先でドロップ（廃棄）するように処理規則（フローエントリ）を設定して、制御装置（ＯＦＣ）１００ＡへＰａｃｋｅｔ−ｉｎがあがらないようにしてもよい。また、ブロードキャストパケットについても低優先で予めドロップ（廃棄）するようにして、制御装置（ＯＦＣ）１００ＡへＰａｃｋｅｔ−ｉｎがあがらないようにしてもよい。このように設定することで、制御装置（ＯＦＣ）１００Ａの負荷を下げることができる。
【００６７】
ここで、制御装置（ＯＦＣ）１００Ａによる第１のノード（Ｌ２ＳＷ）２６０の間接的な制御方法について説明する。第１のノード（Ｌ２ＳＷ）２６０がスイッチングハブのように、パケット転送に用いるアドレステーブルの学習機能を備えている場合、パケット制御コマンド生成部１１０が、第２のノード（ＯＦＳ）２２０に、第１のノード（Ｌ２ＳＷ）２６０側に、送信元レイヤ２アドレスを第２のノード（ＯＦＳ）２２０のポートのレイヤ２アドレスとした学習用パケットを定期的に生成して送信するよう制御する。これにより、第１のノード（Ｌ２ＳＷ）２６０に前記アドレステーブルを更新させることができる。前記学習用パケットの送信に代えて、第２のノード（ＯＦＳ）２２０のレイヤ２アドレスを宛て先としたパケットが第２のノード（ＯＦＳ）２２０に到達するように、第２のノード２１０、２２０を介して、第１のノード（Ｌ２ＳＷ）２６０にパケット転送に用いるアドレステーブルを書き換えさせる方法も採用可能である。
【００６８】
なお、前記学習パケットの送信間隔またはアドレステーブルの更新間隔は、アドレステーブルのエントリタイムアウト値未満（例えば、第１のノード（Ｌ２ＳＷ）２６０がスイッチングハブである場合、ＭＡＣアドレステーブルのタイムアウト値が初期値の３００秒であれば３００秒未満）であることが望ましい。
【００６９】
続いて、本実施形態の動作について図４、図５を参照して詳細に説明する。例えば、図４に示すように、外部ノード３１０ｂ（ＩＰアドレス＝１９２、１６８．０．２）が外部ノード３２０ｂ（ＩＰアドレス＝１９２、１６８．１．４）に宛ててパケットを送信すると（ステップＳ００１）、第２のノード２１０は、制御装置（ＯＦＣ）１００Ａに対し、処理規則（フローエントリ）の設定を要求するメッセージ（Ｐａｃｋｅｔ−ｉｎ）を送信する。
【００７０】
処理規則（フローエントリ）の設定を要求するメッセージ（Ｐａｃｋｅｔ−ｉｎ）を受信した制御装置（ＯＦＣ）１００Ａは、図５に示す一連の動作を実行する。
【００７１】
図５を参照すると、まず、ノード通信部１０１が、上記Ｐａｃｋｅｔ−ｉｎにて受信した処理対象となるパケット情報を取得する（ステップＡ１）と、処理対象パケット情報取得部１０３が、ノード通信部１０１より、処理対象となるパケットのレイヤ３送信先アドレス（ＩＰアドレス＝１９２、１６８．１．４）を取得する（ステップＡ２）。
【００７２】
経路探索部１０４が、外部ノード位置情報記憶部１０５より、該レイヤ３送信アドレス（ＩＰアドレス＝１９２、１６８．１．４）に基づき、送信先となる第２のノード（ＯＦＳ）２２０とフロー（照合規則）を取得して、トポロジ情報記憶部１０６に記憶されたネットワークトポロジに従って経路を探索する（ステップＡ３）。
【００７３】
次に、処理規則生成部１０７が、フロー識別子管理部１０８を参照し、当該フローに属するパケットに付与すべきフロー識別子とアクションを生成し、第２のノード（ＯＦＳ）２１０、２２０に設定すべき処理規則（フローエントリ）を生成する（ステップＡ４）。
【００７４】
最後に、パケット制御コマンド生成部１１０が、ノード通信部１０１経由で、第２のノード（ＯＦＳ）２１０、２２０に対し、処理規則の設定を含む制御コマンドを送信する（ステップＡ５）。
【００７５】
この結果、図４のステップＳ００２に示すように、第２のノード（ＯＦＳ）２１０には、送信元／送信先レイヤ２アドレスを、自身の送信ポートのレイヤ２アドレス（ＭＡＣ＃１−２）と、出口側の第２のノード（ＯＦＳ）２２０のレイヤ２アドレス（ＭＡＣ＃２−２）に書き換えるとともに、ＩＰ  ＴｏＳ  ｂｉｔｓフィールドにフロー識別子を付与する処理規則（フローエントリ）が設定される。
【００７６】
また、図４のステップＳ００３に示すように、第２のノード（ＯＦＳ）２２０には、送信元／送信先レイヤ２アドレスを、自身のレイヤ２アドレス（ＶＲｏｕｔｅｒ）と、送信先の外部ノード３２０ｂのレイヤ２アドレス（ＳＶ＃４）に書き換えてから、ＩＰ  ＴｏＳ  ｂｉｔｓフィールドに付与されたフロー識別子に従い、パケットを出力する処理規則（フローエントリ）が設定される。
【００７７】
さらに、制御装置（ＯＦＣ）１００Ａが、第２のノード（ＯＦＳ）２２０に定期的に、学習用パケットをフラディングさせるため、第１のノード２６０には、第２のノード（ＯＦＳ）２２０にパケットを転送するためのポート情報が学習される。
【００７８】
以上により、図４の下段の太矢線に示すような経路でのパケット転送が実現される。また、このときに、同一の経路で転送されるパケットについても、当該パケットに付与されたフロー識別子や、必要に応じて付与されるＶＬＡＮ  ＴＡＧによって、区別することが可能である。
【００７９】
以上のように、本実施形態によれば、制御装置（ＯＦＣ）１００Ａが直接制御できない第１のノード２６０が混在しているネットワークにおいても、外部ノードの数に制約を受けることなく、所望の経路を設定し、かつ、同じレイヤ３アドレスを持つ異なるフローを区別することが可能になる。
【００８０】
また上述したように、本実施形態では、ＶＬＡＮ  ＴＡＧ等の多重化したネットワークを識別する識別子を付与・変更するアクションを実行させることにより、出口側の第２のノード２２０の出力ポートにてネットワークの多重化が可能となっている。
【００８１】
なお、上記した実施形態では省略したが、処理対象以外のパケット、例えば、ＩＰパケット以外のレイヤ２パケットは、図６に示すように、制御装置（ＯＦＣ）１００Ａに対するＰａｃｋｅｔ−ＩｎおよびＰａｃｋｅｔ−Ｏｕｔで転送させることも可能である。これにより、第２のノード２１０、２２０で、指定パケット以外を低優先でドロップ（廃棄）するような設定が行われている場合にも、上記レイヤ２パケットを転送することができる。
【００８２】
また、上記した実施形態では省略したが、第１のノード２６０のポート間では定期的にユニキャストで導通確認を行わせてもよいことはもちろんである。
【００８３】
［第２の実施形態］
続いて、上記第１の実施形態に変更を加えた本発明の第２の実施形態について説明する。図７は、本発明の第２の実施形態の全体構成を表した図である。第１の実施形態との相違点は、第２のノード（ＯＦＳ）２１０と第１のノード（Ｌ２ＳＷ）２６０の間に、外部ノードと接続されていない第２のノード（ＯＦＳ）２３０が追加され、第２のノード（ＯＦＳ）２２０にさらに外部ノード３３０ａ、３３０ｂと接続された第２のノード（ＯＦＳ）２４０が追加されている点である。
【００８４】
以下、本実施形態の説明において、第２のノード同士が直接接続して構成された構成をサブドメインと呼ぶこととする。図７では、第２のノード（ＯＦＳ）２１０と第２のノード（ＯＦＳ）２３０をサブドメイン１、第２のノード（ＯＦＳ）２２０と第２のノード（ＯＦＳ）２４０をサブドメイン２とし、サブドメイン間の第１のノード群も含めた全体をドメインと呼ぶこととする。
【００８５】
本発明の第２の実施形態における制御装置１００Ａの構成は、ノード通信部１０１が第２のノード（ＯＦＳ）２１０〜２４０と接続されているほかは、第１の実施形態の制御装置１００Ａの構成と略同一であるので、以下動作上の相違点を中心に説明する。
【００８６】
また、以下の説明では、制御装置１００Ａの経路探索部１０４において、外部ノード３１０ｂから外部ノード３３０ｂ宛てのパケットの経路について、第２のノード（ＯＦＳ）２１０、第２のノード（ＯＦＳ）２３０、第１のノード（Ｌ２ＳＷ）２６０、第２のノード（ＯＦＳ）２２０、第２のノード（ＯＦＳ）２４０という経路が探索されたものとする。
【００８７】
このとき、処理規則生成部１０７が、経路の最終段（最も出口側）の第２のノード（ＯＦＳ）が属するサブドメイン（サブドメイン２）の中でフローを一意に特定できるユニークなＩＤ（以下フロー識別子）を割り振る点で第１の実施形態と異なる。
【００８８】
パケット制御コマンド生成部１１０は、第２のノード（ＯＦＳ）２１０、第２のノード（ＯＦＳ）２３０、第２のノード（ＯＦＳ）２２０、第２のノード（ＯＦＳ）２４０に対して制御コマンドを生成して、ノード通信部１０１経由で送信する。
【００８９】
具体的には、第２のノード（ＯＦＳ）２１０に対しては、処理対象となるパケットを、第２のノード（ＯＦＳ）２３０へ転送させるコマンドを生成する。また、前記転送するパケットの送信先レイヤ２アドレスを、フローを識別する任意のＩＤに変えるコマンドも生成して、同じサブドメイン内の第２のノードにおいて、送信先レイヤ２アドレスでフローを特定するようにしてもよい。
【００９０】
第２のノード（ＯＦＳ）２３０に対しては、上記処理対象となるパケットのヘッダに前記フロー識別子を含むように変更するコマンド、ノード情報記憶部１０９より、経路中の第１のノード２６０の後段にある第２のノード（図７の第２のノード２２０）における第１のノード２６０との入力ポートのレイヤ２アドレスを取得して、該パケットの送信先レイヤ２アドレスを前記取得したレイヤ２アドレスへ変更するコマンド、および、第２のノード２３０におけるフロー（照合規則）を指定するコマンドを生成する。
【００９１】
前記フロー識別子の格納フィールドは、第１の実施形態と同様に、第１のノード２６０がパケット転送時に参照しないフィールドを用いる。例えば、ＩＰパケットの場合、サービスタイプフィールド、ＩＰオプションフィールド、ＩＤフィールドを用いることができる。また、第１のノード２６０でネットワークを多重化する識別子が用いられている場合には、該多重化識別子を付与するコマンドを生成する。
【００９２】
また、ノード情報記憶部１０９より第２のノード２３０における第１のノード２６０と接続されたポートに付与されたレイヤ２アドレスを読み出し、前記処理対象パケットの送信元レイヤ２アドレスを前記第２のノードのレイヤ２アドレスへ変更するコマンドを生成してもよい。
【００９３】
第２のノード（ＯＦＳ）２２０に対しては、第２のノード（ＯＦＳ）２３０で変更され、第１のノード２６０の入力ポートから受信したパケットを、ヘッダ中のフロー識別子に従って、当該出口側の第２のノード（図７の第２のノード２４０）へ転送させるコマンドを生成する。また、前記転送するパケットの送信先レイヤ２アドレスを、フローを識別する任意のＩＤに変えるコマンドも生成して、同じサブドメイン内の第２のノードにおいて、送信先レイヤ２アドレスでフローを特定するようにしてもよい。またこのとき、前記送信先レイヤ２アドレスの代わりに、受信先レイヤ２アドレスを用いてもよいし、両者を併用してもよい。
【００９４】
第２のノード（ＯＦＳ）２４０に対しては、第２のノード（ＯＦＳ）２３０で変更され、第２のノード（ＯＦＳ）２２０から来たパケットに対して、外部ノードレイヤ２アドレス記憶部１１１より送信先のレイヤ３アドレスに対応する外部ノードのレイヤ２アドレスを取得し、前記処理対象パケットの送信先レイヤ２アドレスを前記取得したレイヤ２アドレスに変更するコマンド、および、前記処理対象パケットのフロー識別子に従って、該当ポートからパケットを出力するコマンドを生成する。必要あれば、ネットワークを多重化する識別子をヘッダに付加するコマンドが生成される。
【００９５】
また、外部ノードレイヤ２アドレス記憶部１１１より送信元レイヤ３アドレスに対応するレイヤ２アドレスを読み出し、前記処理対象パケットの送信元レイヤ２アドレスを、前記読み出したレイヤ２アドレスに変更するコマンドを生成してもよい。
【００９６】
以上のように、本発明は、３台以上の第２のノードがそれぞれ外部ノードと接続され、サブドメインを構成する環境においても実現できる。
【００９７】
なお、上記した第２の実施形態では、経路の最終段（最も出口側）の第２のノード（ＯＦＳ）が属するサブドメイン（サブドメイン２）の中でフローを一意に特定できるユニークなＩＤ（以下フロー識別子）を割り振るものとしたが、第１のノード２６０内で、フロー識別子単独、もしくは、Ｌ２、Ｌ３アドレスとフロー識別子を組み合わせてユニークとなるように割り振るようにしてもよい。
【００９８】
第２のノード（ＯＦＳ）２２０に対しては、該処理対象となるパケットを、第２のノード（ＯＦＳ）２４０へ転送するコマンドを生成するとともに、第２のノード（ＯＦＳ）２２０において、該パケットの送信先レイヤ２アドレスを、フローを識別する任意のＩＤに変えるコマンドも生成して、同じサブドメイン内の第２のノードにおいて、送信先レイヤ２アドレスでフローを特定するようにしてもよい。
【００９９】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した第１の実施形態では、第２のノードが２台、第１のノードが４台、外部ノードが４台の構成を示して説明を行ったが、それぞれの台数は制限を受けない。
【０１００】
また、上記した実施形態では、外部ノードは、第２のノードに直接接続されているものとして説明したが、外部ノードと第２のノードとの間に、他のネットワークに属する第１のノードや第２のノードが介在する構成にも適用することが可能である。
【０１０１】
また、上記した実施形態では、第２のノードとして非特許文献２のオープンフロースイッチを用いるものとして説明したが、外部からコマンドにより、特定のフローを識別し、任意のヘッダフィールドの書き換えやパケット転送処理を実行可能な装置であれば、その他の中継装置を用いることも可能である。また、Ｔｅｌｎｅｔ経由のＣＬＩ（コマンドラインインタフェース）にて任意のパケットマッチ条件を指定してパケットを書き換えや経路を設定できるような中継装置を用いる構成も採用可能である。
本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【０１０２】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点による通信システム参照）
［第２の形態］
第１の形態の通信システムにおいて、
前記制御装置は、前記第２のノードのポートのうち、前記第１のノードと接続されたポート毎に与えられたアドレス情報を記憶するノード情報記憶部を備え、
前記ノード情報記憶部を参照して、前記上流側の第２のノードに、前記パケットヘッダの送信先アドレス情報を、前記第２のノードのアドレス情報に書き換えさせる通信システム。
［第３の形態］
第１または第２の形態の通信システムにおいて、
前記制御装置は、前記第２のノードに接続された外部ノードのアドレス情報を記憶する外部ノードアドレス記憶部を備え、
前記外部ノードアドレス記憶部を参照して、出口側に位置する第２のノードに、前記上流側の第２のノードで変更されたアドレス情報を、前記外部ノードのアドレス情報に変更させる通信システム。
［第４の形態］
第１〜第３いずれか一の形態の通信システムにおいて、
前記制御装置は、所定の時間間隔で、前記第１のノードと接続された前記第２のノードに、自装置のアドレス情報を学習させる学習パケットを送信させ、前記第１のノードのアドレステーブルを更新させる通信システム。
［第５の形態］
第４の形態の通信システムにおいて、
前記制御装置は、前記第２のノードに、前記第１のノードが保持するアドレステーブルのエントリタイムアウト時間より短い間隔で、前記学習パケットを送信させる通信システム。
［第６の形態］
第１〜第５いずれか一の形態の通信システムにおいて、
前記制御装置は、前記第２のノードに、送信パケットのヘッダのいずれかの領域に、ネットワークを多重化する識別子を付与させる通信システム。
［第７の形態］
第１〜第６いずれか一の形態の通信システムにおいて、
前記第２のノードは、前記第１のノードから受信したパケットと、前記照合規則の照合の結果、前記受信パケットに対応する処理規則を発見できなかった場合、当該受信パケットを廃棄するよう設定されている通信システム。
［第８の形態］
第１〜第７いずれか一の形態の通信システムにおいて、
前記アドレス情報は、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｒｅｓｓ）であり、前記第１のノードは、アドレステーブルとしてＭＡＣアドレステーブルを参照してパケットを転送するレイヤ２スイッチである通信システム。
［第９の形態］
第１〜第８いずれか一の形態の通信システムにおいて、
前記制御装置は、前記フロー識別情報として、少なくとも前記第２のノード同士が直接接続されたサブドメインの中で一意となる識別子を付与する通信システム。
［第１０の形態］
（上記第２の視点による制御装置参照）
［第１１の形態］
（上記第３の視点による通信方法参照）
［第１２の形態］
（上記第４の視点によるプログラム参照）
【符号の説明】
【０１０３】
１００、１００Ａ  制御装置（ＯＦＣ）
１０１  ノード通信部
１０２  設定情報取得部
１０３  処理対象パケット情報取得部
１０４  経路探索部
１０５  外部ノード位置情報記憶部
１０６  トポロジ情報記憶部
１０７  処理規則生成部
１０８  フロー識別子管理部
１０９  ノード情報記憶部
１１０  パケット制御コマンド生成部
１１１  外部ノードレイヤ２アドレス記憶部
２１０〜２４０  第２のノード（ＯＦＳ）
２６０  第１のノード（Ｌ２ＳＷ）
３１０ａ〜３３０ｂ  外部ノード
【図１】
0005413517.tif 000002
【図２】
0005413517.tif 000003
【図３】
0005413517.tif 000004
【図４】
0005413517.tif 000005
【図５】
0005413517.tif 000006
【図６】
0005413517.tif 000007
【図７】
0005413517.tif 000008
【図８】
0005413517.tif 000009
【図９】
0005413517.tif 000010
【図１０】
0005413517.tif 000011
【図１１】
0005413517.tif 000012