(57)【要約】  オープンフローネットワークにおいて、ＶＬＡＮ  ＩＤ数の制約をうけることなく、また、より少ないフローエントリ数で、ブロードキャスト又はマルチキャストを実現する。通信システムは、転送ノードを含む物理ネットワーク上に構成された仮想ネットワーク毎に、ブロードキャストドメインまたはマルチキャストドメインを設定し、該ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだマッチ条件と、パケットの転送先とを対応付けたブロードキャストまたはマルチキャスト用の制御情報を、前記転送ノードに設定する制御装置と、前記ブロードキャストまたはマルチキャスト用の制御情報を用いて、ブロードキャストまたはマルチキャストを行う転送ノードと、を含む。
2013168737.tif 000002
【特許請求の範囲】
【請求項１】
転送ノードを含む物理ネットワーク上に構成された仮想ネットワーク毎に、ブロードキャストドメインまたはマルチキャストドメインを設定し、該ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだマッチ条件と、パケットの転送先とを対応付けたブロードキャストまたはマルチキャスト用の制御情報を、前記転送ノードに設定する制御装置と、
前記ブロードキャストまたはマルチキャスト用の制御情報を用いて、ブロードキャストまたはマルチキャストを行う転送ノードと、を含む通信システム。
【請求項２】
前記制御装置は、
転送ノードを含む物理ネットワーク上に構成された仮想ネットワークを管理する仮想ネットワーク管理部と、
前記ブロードキャストまたはマルチキャスト用の制御情報を含む制御情報を前記転送ノードに設定することにより、転送ノードを管理する転送ノード管理部と、
を備える請求項１の通信システム。
【請求項３】
前記転送ノード管理部は、
前記ブロードキャストまたはマルチキャストの経路上の上流側の転送ノードに、受信パケットに、前記該ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだ追加ヘッダを追加させ、
前記上流側の転送ノードより下流の転送ノードに前記識別子を含んだ追加ヘッダに基づいてパケット転送を行わせる制御情報を設定する請求項１又は２の通信システム。
【請求項４】
前記制御装置は、
各転送ノードに、前記ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子と、前記転送ノードにおけるＶＬＡＮ  ＩＤとが１対１で対応する制御情報を生成して設定する請求項１から３いずれか一の通信システム。
【請求項５】
前記制御装置は、
各転送ノードに、前記ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子と、前記転送ノードにおける各ポートのＶＬＡＮ  ＩＤとが１対１で対応する制御情報を生成して設定する請求項１から４いずれか一の通信システム。
【請求項６】
１２ビットよりも長いデータ長の前記識別子を設定可能である請求項１から５いずれか一の通信システム。
【請求項７】
転送ノードを含む物理ネットワーク上に構成された仮想ネットワーク毎に、ブロードキャストドメインまたはマルチキャストドメインを設定し、前記設定したブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだマッチ条件と、パケットの転送先とを対応付けたブロードキャストまたはマルチキャスト用の制御情報を、前記転送ノードに設定する制御装置。
【請求項８】
転送ノードを含む物理ネットワーク上に構成された仮想ネットワーク毎に、ブロードキャストドメインまたはマルチキャストドメインを設定するステップと、
該ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだマッチ条件と、パケットの転送先とを対応付けたブロードキャストまたはマルチキャスト用の制御情報を、前記転送ノードに設定するステップと、を含み、
前記転送ノードに、前記ブロードキャストまたはマルチキャスト用の制御情報を用いて、ブロードキャストまたはマルチキャストを実行させる通信方法。
【請求項９】
転送ノードに制御情報を設定する制御装置を構成するコンピュータに、前記転送ノードを含む物理ネットワーク上に構成された仮想ネットワーク毎に、ブロードキャストドメインまたはマルチキャストドメインを設定する処理と、
該ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだマッチ条件と、パケットの転送先とを対応付けたブロードキャストまたはマルチキャスト用の制御情報を、前記転送ノードに設定する処理と、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１２−１０７５９５号（２０１２年５月９日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、通信システム、制御装置、通信方法及びプログラムに関し、特に、受信パケットを転送する転送ノードと、この転送ノードを制御する制御装置とにより通信を実現する通信システム、制御装置、通信方法及びプログラムに関する。
【背景技術】
【０００２】
特許文献１〜４に、仮想ネットワーク上でブロードキャストまたはマルチキャストを行う方法が開示されている。特許文献１には、物理ポート、ＶＬＡＮ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）毎に、レイヤ２ネットワーク（以下、「Ｌ２ＮＷ」）用のキャリア仮想ＬＡＮ（ＣＶＬＡＮ）のアドレスを割り当て、ＣＶＬＡＮ毎に、ブロードキャスト、マルチキャストアドレスを割り当てて、ブロードキャスト／マルチキャストを実現する方法が開示されている。【０００３】
特許文献２では、受け取ったパケット中のユーザＭＡＣヘッダ内の送元ＭＡＣアドレスと、このパケットが通過した端末側仮想インタフェースとの関係を学習して記憶する仮想ハブを備え、この記憶した情報を元にパケットを転送し、また、網側には、ＶＰＮ番号を付加し、ＩＰパケットにカプセル化して送出するアクセスルータを用いたパケットルーティング方法が開示されている。同文献では、パケットコピーサーバというブロードキャスト用のサーバを立てて、同一ＶＰＮ内のほかのアクセスルータに対してコピーして転送を行わせることによりブロードキャストを実現している（［０１２２］実施の形態７参照）。【０００４】
特許文献３には、入力されたデータフレームに、出口側のノードへのフォワーディング情報を含む拡張タグを付加してフォワーディングを行うノードが開示されている。ブロードキャストを行う場合、拡張タグに、入口側のノードのフォワーディング情報（例えば、送信元ＭＡＣアドレス）を設定することで、データフレームの中継が行われると記載されている（請求項３、［０１２９］、［０１３７］）。【０００５】
特許文献４には、異なるリンクを使用して接続された複数の端末を備える送信媒体でパケットをスイッチングする方法が開示されている。同文献では、フレームが経由したスイッチと１対１に結合した識別子のリスト（ブロードキャスト制御情報）を用いて、パケットループを防ぐことが記載されている（［００３８］〜［００４０］）。【０００６】
非特許文献１、２には、通信をエンドツーエンドのフローとして捉え、そのフローを処理する「オープンフロースイッチ」と呼ばれるスイッチと、これらスイッチに対して「フローエントリ」と呼ばれる制御情報を設定する制御装置と、を含むネットワークが開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−２８６８５３号公報
【特許文献２】特開２００２−２４７０８９号公報
【特許文献３】特開２００４−２６６８７４号公報
【特許文献４】特表２００７−５３４１９１号公報
【非特許文献】
【０００８】
【非特許文献１】Ｎｉｃｋ  ＭｃＫｅｏｗｎほか７名、“ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”、［ｏｎｌｉｎｅ］、［平成２４（２０１２）年３月１４日検索］、インターネット〈URL: http://www.openflow.org/documents/openflow-wp-latest.pdf〉
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”  Ｖｅｒｓｉｏｎ  １．１．０  Ｉｍｐｌｅｍｅｎｔｅｄ  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０２）、［ｏｎｌｉｎｅ］、［平成２４（２０１２）年３月１４日検索］、インターネット〈URL:http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００９】
以下の分析は、本発明によって与えられたものである。特許文献１の［０００５］、特許文献２の［００１６］に記載されているように、ＩＥＥＥ８０２．１で規定されているＶＬＡＮヘッダは１２ビットの長さであり、識別可能なＶＬＡＮの数が４０９６に制限されてしまうという問題がある。【００１０】
非特許文献１、２のオープンフローネットワークにおいては、エッジに位置するスイッチにおいてフローエントリに従ってネットワーク外部との入出力パケットのＶＬＡＮ  ＩＤの変換を行うことで、ネットワークで扱うことのできるＶＬＡＮ数を４０９６以上に拡張することが可能である。【００１１】
しかしながら、この方法でＶＬＡＮ数を４０９６以上に拡張し、ブロードキャスト又はマルチキャスト（以下、「ＢＣＭＣ」とも称する。）を行う場合、ユニキャスト用のフローがエンドツーエンドのフロー１つでよいのに対して、ブロードキャスト、マルチキャスト用のフローはエンド数×エンド数分のフローエントリが必要となる。さらに、この方法ではオープンフローネットワークが扱うべきブロードキャスト、マルチキャストドメインの数だけ同様にブロードキャスト、マルチキャスト用のフローが必要になるため、ブロードキャスト、マルチキャストドメインの端点が増大するにつれて、またブロードキャスト、マルチキャストドメインの数が増大するにつれて、フロー処理装置のフローエントリ数が飛躍的に増大するという問題が存在する。【００１２】
そこで例えば、次のような方法が考えられる。図１６に示すオープンフローネットワークにブロードキャスト、マルチキャスト用のフローエントリを設定することを考える。このため、図１７に示す、ブロードキャスト、マルチキャストパケットがループしないように求めたスパニングツリーを実現するための、ＶＬＡＮ  ＩＤに依存しないブロードキャスト、マルチキャスト用のフローエントリ（以下、「ＢＣＭＣベースフローエントリ」といい、符号４００Ａ〜４００Ｃを付す。）を各転送ノードに設定する。【００１３】
図１８〜図２０は、図１７の各転送ノードに設定するＢＣＭＣ用ベースフローエントリ４００Ａ〜４００Ｃの一例であり、図１７の矢線に対応するフローエントリと、ループとなりうるパケットを破棄（Ｄｒｏｐ）するフローエントリとが設定されている。このようなＢＣＭＣ用ベースフローエントリ４００Ａ〜４００Ｃを用いることで、ブロードキャスト、マルチキャストドメインごとにフローエントリ数が増大する問題に対処できる。そして、ネットワークのエッジに位置する転送ノードは、外部のネットワークとの入出力パケットのＶＬＡＮ  ＩＤの変換を行わず、例えば以下のような当該転送ノードのポートのＶＬＡＮ設定を用いてパケットを処理する。具体的には、前記エッジに位置する転送ノードは、ポートがアンタグポート（ｕｎｔａｇｇｅｄ）でＶＬＡＮ  ＩＤの設定がされている場合、入力パケットがｕｎｔａｇｇｅｄの場合のみ該ポートから設定されているＶＬＡＮ  ＩＤがｔａｇｇｅｄされている状態でパケットを入力し、入力パケットがｔａｇｇｅｄの場合、該ポートで入力パケットをドロップする処理を行う。一方、ポートがタグポート（ｔａｇｇｅｄ）でＶＬＡＮ  ＩＤの設定がされている場合、前記エッジに位置する転送ノードは、入力パケットのＶＬＡＮ  ＩＤが同じ場合のみ該ポートからそのＶＬＡＮ  ＩＤがｔａｇｇｅｄされている状態でパケットを入力し、入力パケットがｕｎｔａｇｇｅｄもしくは異なるＶＬＡＮ  ＩＤの場合は該ポートで入力パケットをドロップする処理を行う。【００１４】
また、前記エッジに位置する転送ノードは、ポートがアンタグポート（ｕｎｔａｇｇｅｄ）でＶＬＡＮ  ＩＤの設定がされている場合、出力パケットのＶＬＡＮ  ＩＤが同じ場合のみ該ポートからＶＬＡＮ  ＩＤをｕｎｔａｇｇｅｄした状態でパケットを出力し、異なる場合、該ポートで出力パケットをドロップする処理を行う。一方、該ポートがタグポート（ｔａｇｇｅｄ）でＶＬＡＮ  ＩＤの設定がされている場合、前記エッジに位置する転送ノードは、出力パケットのＶＬＡＮ  ＩＤが同じ場合のみ該ポートからそのＶＬＡＮ  ＩＤがｔａｇｇｅｄされている状態でパケットを出力し、異なる場合は該ポートで出力パケットをドロップする処理を行う。【００１５】
この場合のオープンフローネットワークにおけるブロードキャスト、マルチキャストドメインは例えば図２１に示す仮想ネットワーク５００Ａの仮想Ｌ２ＳＷ５０２Ａと外部ＮＷ端点５０３Ａ、５０３Ｂの組み合わせと、仮想Ｌ２ＳＷ５０２Ｂと外部ＮＷ端点５０３Ｃ〜５０３Ｅの組み合わせのように、同一のブロードキャストドメイン、マルチキャストドメインでは同じＶＬＡＮ  ＩＤを用いる。なお、図２１の外部ＮＷ端点５０３Ａは、図１７の転送ノード２００Ａの外部ノード３００Ａが接続されているポートがアンタグポート（ｕｎｔａｇｇｅｄ）でＶＬＡＮ  ＩＤが１０であることを示している。同様に、図２１の外部ＮＷ端点５０３Ｂは、図１７の転送ノード２００Ｂの外部ノード３００Ｂが接続されているポートがタグポート（ｔａｇｇｅｄ）でＶＬＡＮ  ＩＤが１０、外部ＮＷ端点５０３Ｃは、図１７の転送ノード２００Ｂの外部ノード３００Ｃが接続されているポートがタグポート（ｔａｇｇｅｄ）でＶＬＡＮ  ＩＤが２０であることを示している。同様に、外部ＮＷ端点５０３Ｄは、図１７の転送ノード２００Ｃの外部ノード３００Ｄが接続されているポートがタグポート（ｔａｇｇｅｄ）でＶＬＡＮ  ＩＤが２０、外部ＮＷ端点５０３Ｅは、図１７の転送ノード２００Ｃの外部ノード３００Ｅが接続されているポートがタグポート（ｔａｇｇｅｄ）でＶＬＡＮ  ＩＤが２０であることを示している。このように、同一のブロードキャストドメイン、マルチキャストドメインでは同じＶＬＡＮ  ＩＤを用いることと、エッジに位置する転送ノードのポートのＶＬＡＮ設定を用いることにより、ブロードキャスト、マルチキャストドメインの端点の増大によるフローエントリ数の増大問題に対処できる。【００１６】
しかしながら、この方法では異なるブロードキャスト、マルチキャストドメインで同じＶＬＡＮ  ＩＤを用いようとするとフローネットワークにおいてブロードキャストドメイン、マルチキャストドメインを区別することができないため、異なるブロードキャスト、マルチキャストドメインでは同じＶＬＡＮ  ＩＤを用いることができない。そのため、フローネットワークで扱うことのできるＶＬＡＮ数が４０９６に制限される。【００１７】
以上のように、非特許文献１、２のオープンフローネットワークにおいて、ブロードキャスト、マルチキャストを実現しようとすると、フローエントリの増大、あるいは、ＶＬＡＮ数の制限のいずれかが制約となってしまうという問題点がある。【００１８】
他方、特許文献１の方法によれば、上記したＶＬＡＮ数の上限４０９６を超えるＶＬＡＮを取扱い可能となるが、ＣＶＬＡＮ毎にブロードキャスト、マルチキャストアドレスを割り当てるため、上記オープンフローネットワークと同様に、膨大なエントリ数が必要となってしまう。【００１９】
また、特許文献２の方法によれば、パケットコピーサーバというブロードキャスト用のサーバが必要となるほか、ＩＰネットワークとパケットコピーサーバ間に相応のトラヒックが発生してしまう。【００２０】
また、特許文献３の方法も、フォワーディングタグに、送信元ＭＡＣアドレスを設定するため、特許文献１の方法と同様に、エントリ数が莫大なものとなってしまう可能性がある。【００２１】
本発明は、非特許文献１、２のオープンフローネットワークにおいて、ＩＥＥＥ８０２．１規定のＶＬＡＮ  ＩＤ数の制約を受けることなく、かつ、より少ないフローエントリ数で、ブロードキャスト又はマルチキャストを実現することを目的とする。
【課題を解決するための手段】
【００２２】
第１の視点によれば、転送ノードを含む物理ネットワーク上に構成された仮想ネットワーク毎に、ブロードキャストドメインまたはマルチキャストドメインを設定し、該ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだマッチ条件と、パケットの転送先とを対応付けたブロードキャストまたはマルチキャスト用の制御情報を、前記転送ノードに設定する制御装置と、前記ブロードキャストまたはマルチキャスト用の制御情報を用いて、ブロードキャストまたはマルチキャストを行う転送ノードと、を含む通信システムが提供される。【００２３】
第２の視点によれば、転送ノードを含む物理ネットワーク上に構成された仮想ネットワーク毎に、ブロードキャストドメインまたはマルチキャストドメインを設定し、前記設定したブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだマッチ条件と、パケットの転送先とを対応付けたブロードキャストまたはマルチキャスト用の制御情報を、前記転送ノードに設定する制御装置が提供される。【００２４】
第３の視点によれば、転送ノードを含む物理ネットワーク上に構成された仮想ネットワーク毎に、ブロードキャストドメインまたはマルチキャストドメインを設定するステップと、該ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだマッチ条件と、パケットの転送先とを対応付けたブロードキャストまたはマルチキャスト用の制御情報を、前記転送ノードに設定するステップと、を含み、前記転送ノードに、前記ブロードキャストまたはマルチキャスト用の制御情報を用いて、ブロードキャストまたはマルチキャストを実行させる通信方法が提供される。本方法は、転送ノードを制御するコンピュータという、特定の機械に結びつけられている。【００２５】
第４の視点によれば、転送ノードに制御情報を設定する制御装置を構成するコンピュータに、前記転送ノードを含む物理ネットワーク上に構成された仮想ネットワーク毎に、ブロードキャストドメインまたはマルチキャストドメインを設定する処理と、該ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだマッチ条件と、パケットの転送先とを対応付けたブロードキャストまたはマルチキャスト用の制御情報を、前記転送ノードに設定する処理と、を実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジエントな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００２６】
本発明によれば、非特許文献１、２のオープンフローネットワークにおいて、ＶＬＡＮ  ＩＤの数の制約を受けることなく、また、より少ないフローエントリ数で、ブロードキャスト又はマルチキャストを実現することが可能となる。
【図面の簡単な説明】
【００２７】
【図１】本発明の第１の実施形態の構成を示す図である。
【図２】本発明の第１の実施形態の制御装置の構成を示すブロック図である。
【図３】本発明の第１の実施形態の制御装置によって構成される仮想ネットワークの構成を示す図である。
【図４】図１と図３の対応関係を示す図である。
【図５】本発明の第１の実施形態の転送ノードの構成を示すブロック図である。
【図６】本発明の第１の実施形態の制御装置によって転送ノード２００Ａに設定されるフローエントリを示す図である。
【図７】本発明の第１の実施形態の制御装置によって転送ノード２００Ｂに設定されるフローエントリを示す図である。
【図８】本発明の第１の実施形態の制御装置によって転送ノード２００Ｃに設定されるフローエントリを示す図である。
【図９】本発明の第１の実施形態の制御装置によるＢＣＭＣ用ベースフローエントリの生成処理の流れを示すフローチャートである。
【図１０】本発明の第１の実施形態の制御装置によるＢＣＭＣ用フローエントリの設定処理の流れを示すフローチャートである。
【図１１】本発明の第１の実施形態の転送ノードのパケット受信時の処理の流れを示すフローチャートである。
【図１２】本発明の第２の実施形態の制御装置によって構成される仮想ネットワークの構成を示す図である。
【図１３】本発明の第２の実施形態の制御装置によって転送ノード２００Ａに設定されるフローエントリを示す図である。
【図１４】本発明の第２の実施形態の制御装置によって転送ノード２００Ｂに設定されるフローエントリを示す図である。
【図１５】本発明の第２の実施形態の制御装置によって転送ノード２００Ｃに設定されるフローエントリを示す図である。
【図１６】非特許文献１、２のオープンフローネットワークの構成を示す図である。
【図１７】非特許文献１、２のオープンフローネットワークにおけるブロードキャスト、マルチキャストを説明するための図である。
【図１８】図１６の転送ノード２００Ａに設定されるフローエントリを示す図である。
【図１９】図１６の転送ノード２００Ｂに設定されるフローエントリを示す図である。
【図２０】図１６の転送ノード２００Ｃに設定されるフローエントリを示す図である。
【図２１】非特許文献１、２のオープンフローネットワークによって構成される仮想ネットワークの一例である。
【発明を実施するための形態】
【００２８】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【００２９】
本発明は、その一実施形態において、図１に示すように、転送ノード２００Ａ〜２００Ｃに、ブロードキャストまたはマルチキャスト用の制御情報を設定する制御装置１００と、前記ブロードキャストまたはマルチキャスト用の制御情報を用いて、ブロードキャストまたはマルチキャストを行う転送ノード２００Ａ〜２００Ｃと、を含む構成にて実現できる。
【００３０】
より具体的には、前記制御装置１００は、転送ノード２００Ａ〜２００Ｃを含む物理ネットワーク上に構成された仮想ネットワーク毎に、ブロードキャストドメインまたはマルチキャストドメインを設定し（図３参照）、該ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだマッチ条件と、パケットの転送先とを対応付けたブロードキャストまたはマルチキャスト用の制御情報を、前記転送ノードに設定する。
【００３１】
なお、ブロードキャストまたはマルチキャスト用のパケット転送経路の計算方法としては、上記図１６〜図１７を用いて説明したように、ブロードキャスト、マルチキャストパケットがループしないようなスパニングツリーを求める方法を用いることができる。
【００３２】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図１は、本発明の第１の実施形態の構成を示す図である。図１を参照すると、複数の転送ノード２００によって構成されたネットワークと、転送ノード２００Ａ〜２００Ｃを制御して、外部ノード３００Ａ〜３００Ｅ間の通信を実現する制御装置１００と、を含む構成が示されている。以下、転送ノード２００Ａ〜２００Ｃ、外部ノード３００Ａ〜３００Ｅを特に区別しない場合、それぞれ「転送ノード２００」、「外部ノード３００」と記す。
【００３３】
制御装置１００は、経路上の転送ノード２００に対してフローエントリを設定することにより、一の外部ノード３００と他の外部ノード３００との間のパケットの経路制御を行う。転送ノード２００は、外部ノード３００もしくは他の転送ノード２００からパケットを受信すると、制御装置１００から設定されたフローエントリのうち、受信パケットに適合するマッチ条件を持つフローエントリを検索し、当該フローエントリに従って受信パケットの処理を行う。このフローエントリに設定される処理内容としては、外部ノード３００や他の転送ノード２００への転送、制御装置１００への出力、破棄（ドロップ）などが行われる。
【００３４】
一の外部ノード３００（例えば、外部ノード３００Ａ）は、他の外部ノード３００（例えば、外部ノード３００Ｄ又は外部ノード３００Ｅ）宛てのパケットを転送ノード２００に送信したり、他の外部ノード３００を送信元とするパケットを転送ノード２００から受信したりする。
【００３５】
ここで、外部ノード３００と接続している転送ノード２００を「エッジ転送ノード２００」とし、転送ノード２００としか接続していない転送ノード２００をコア転送ノードとする。コア転送ノードはネットワークによっては存在しない場合もあり、図１の例では、コア転送ノードは存在しない。また、外部ノード３００は、エッジ転送ノードと直接接続している必要はなく、制御装置１００の直接制御を受けないＬ２ＳＷ（レイヤ２スイッチ）等のレガシー機器を介して接続していてもよいし、外部ノード３００が、Ｌ３ＳＷやルータであり、その先に別の外部ノード３００が存在している場合もある。
【００３６】
また、本実施形態においても、図１７〜図２０に示したＢＣＭＣ用ベースフローエントリを用いる。なお、図１７の例では、転送ノード２００Ｂと２００Ｃ間を転送するためのフローエントリが設定されていないが、これはブロードキャスト、マルチキャストパケットがネットワーク内でループフリーとなるためである。ネットワークの構成や状態が変化する度に、ＢＣＭＣ用の経路とＢＣＭＣ用ベースフローエントリは変更される。ここで、ＢＣＭＣアドレスとはブロードキャスト、マルチキャスト用のアドレスのことである。例えば、ＭＡＣアドレスの場合、先頭１バイトのＩ／Ｇビットに１が設定される。
【００３７】
図２は、本実施形態の制御装置１００の詳細な構成を表したブロック図である。図２を参照すると、制御装置１００は、転送ノード通信部１０１と、転送ノード制御部１０２と、仮想ネットワーク管理部１０３と、転送ノード情報記憶部１０４と、物理ネットワークトポロジ記憶部１０５と、ＢＣＭＣ用ベースフローエントリ記憶部１０６と、フローエントリ記憶部１０７と、フロー記憶部１０８と、仮想ネットワークトポロジ情報記憶部１０９と、仮想ノード情報記憶部１１０とを備えて構成される。
【００３８】
転送ノード通信部１０１は、転送ノード２００からの転送ノード情報や入力パケット情報を、転送ノード制御部１０２や仮想ネットワーク管理部１０３に中継する。また、転送ノード通信部１０１は、転送ノード情報記憶部１０４を参照して、仮想ネットワーク管理部１０３からの出力パケット情報や転送ノード制御部１０２からのフローエントリに関する設定指示やフローエントリの参照要求、仮想ネットワーク管理部１０３と転送ノード制御部１０２からの転送ノード情報の参照要求などを、転送ノード２００に中継する。
【００３９】
転送ノード制御部１０２は、転送ノード通信部１０１を介して受信した転送ノード情報を転送ノード情報記憶部１０４に登録する。また、転送ノード制御部１０２は、転送ノード情報記憶部１０４の情報と入力パケット情報を基に、ネットワークトポロジを把握し、物理ネットワークトポロジ記憶部１０５のネットワークトポロジ情報を更新する。
【００４０】
また、転送ノード制御部１０２は、前記ネットワークトポロジ情報を基にブロードキャスト、マルチキャストパケット用のベースとなる経路を求め、この経路を実現する転送ノード２００毎のブロードキャスト、マルチキャストパケット用のＢＣＭＣ用ベースフローエントリ４００を生成し、ＢＣＭＣ用ベースフローエントリ記憶部１０６に記憶する。
【００４１】
また、転送ノード制御部１０２は、仮想ネットワーク管理部１０３からの仮想ノード情報及び仮想ネットワークトポロジ情報と、ＢＣＭＣ用ベースフローエントリとからＢＣＭＣ用フローエントリを求め、フローエントリ記憶部１０７に記憶するとともに、転送ノード通信部１０１を通して転送ノード２００にフローエントリを設定する。さらに、転送ノード制御部１０２は、仮想ネットワーク管理部１０３から受信したフロー設定情報とネットワークトポロジ情報からフローエントリを求め、フロー設定情報をフロー記憶部１０８に記憶し、フローエントリをフローエントリ記憶部１０７に設定し、転送ノード通信部１０１を通して転送ノード２００にフローエントリを設定する。
【００４２】
仮想ネットワーク管理部１０３は、複数の仮想ネットワーク上の仮想ノード情報を記憶する仮想ノード情報記憶部１１０と、仮想ネットワーク毎の仮想ノードの接続関係を記憶する仮想ネットワークトポロジ情報記憶部１０９とに接続され、仮想ネットワークを管理する。そして、仮想ネットワーク管理部１０３は、これら仮想ノード情報と仮想ネットワークトポロジ情報を転送ノード制御部１０２に渡す。
【００４３】
また、仮想ネットワーク管理部１０３は、転送ノード通信部１０１を介して転送ノード２００から入力パケット情報を受け付けると、仮想ネットワークトポロジ情報に基づいて入力パケット情報を処理する。より具体的には、仮想ネットワーク管理部１０３は、入力パケット情報や上記仮想ノード情報記憶部１１０や仮想ネットワークトポロジ情報記憶部１０９の情報に基づいて、入力パケット情報のドロップ、仮想Ｌ３ＳＷ（図３の仮想Ｌ３ＳＷ５０１Ａ参照）などの仮想ノードでの受信、外部ＮＷ端点（図３の外部ＮＷ端点５０３Ａ〜５０３Ｅ参照）などの仮想ノードからの出力パケット情報の出力などの処理を行う。なお、出力パケット情報の出力は、転送ノード通信部１０１からの入力パケット情報の受信時だけでなく、仮想Ｌ３ＳＷ（図３の仮想Ｌ３ＳＷ５０１Ａ参照）などの仮想ノードのホスト送信を契機としても行われる。仮想ネットワーク管理部１０３は、転送ノード通信部１０１を通して転送ノード２００に対して、出力パケット情報を出力する。
【００４４】
さらに、仮想ネットワーク管理部１０３は、転送ノード制御部１０２に対し、転送ノード通信部１０１からの入力パケット情報とそれに対応するドロップ、又は、転送ノード通信部１０１からの入力パケット情報とそれに対応する転送ノード通信部１０１への出力パケット情報の出力に基づくフロー設定情報によりフロー設定を依頼する場合がある。なお、仮想ネットワーク管理部１０３が、仮想ネットワークトポロジ情報などから転送ノード制御部１０２にフロー設定依頼を行うことも可能である。
【００４５】
転送ノード情報記憶部１０４は、各転送ノード２００の情報を記憶する。転送ノード情報記憶部１０４に記憶される情報としては、例えば、転送ノードのポート情報、ＶＬＡＮ設定情報、転送ノードの能力、転送ノードへアクセスするためのアドレスなどが挙げられる。また、これらに加えて、統計情報などを含めてもよい。
【００４６】
物理ネットワークトポロジ記憶部１０５は、転送ノード２００間の接続関係を表したネットワークトポロジ情報を記憶する。
【００４７】
ＢＣＭＣ用ベースフローエントリ記憶部１０６は、ネットワークにおけるブロードキャスト、マルチキャスト用のフローのためのベースとなる転送ノード２００毎のフローエントリを保持する。例えば、図１７の矢線に示すような転送ノード２００Ａ〜２００Ｃ間のブロードキャスト、マルチキャスト用のフローが設定されている場合、ＢＣＭＣ用ベースフローエントリ記憶部１０６には、これらに対応して生成された図１８〜図２０のＢＣＭＣ用ベースフローエントリが記憶される。
【００４８】
フローエントリ記憶部１０７は、転送ノード２００に設定されているフローエントリを記憶する。
【００４９】
フロー記憶部１０８は、フロー毎に定められた経路や処理等のフロー設定情報を記憶する。フロー設定情報は、例えば、フローを特定するためのマッチ条件と、ネットワークのフロー終点から出力させる際のパケットの状態、パケットがネットワークに入力される際の外部ＮＷ端点（図３の外部ＮＷ端点５０３Ａ〜５０３Ｅ参照）や出力される際の外部ＮＷ端点（図３の外部ＮＷ端点５０３Ａ〜５０３Ｅ参照）等の情報、関連するフローエントリと関連する仮想ノード情報などが含まれる。
【００５０】
仮想ネットワークトポロジ情報記憶部１０９は、仮想ネットワーク５００Ａごとの仮想ノード間の接続情報を保持する。
【００５１】
仮想ノード情報記憶部１１０は、仮想ネットワークごとの仮想Ｌ３ＳＷ（図３の仮想Ｌ３ＳＷ５０１Ａ参照）や仮想Ｌ２ＳＷ（図３の仮想Ｌ２ＳＷ５０２Ａ、５０２Ｂ参照）、外部ＮＷ端点（図３の外部ＮＷ端点５０３Ａ〜５０３Ｅ参照）などの仮想ノード情報を記憶する。仮想ノード情報は、例えば、仮想Ｌ３ＳＷ（図３の仮想Ｌ３ＳＷ５０１Ａ参照）であれば、仮想インタフェース情報やルーティングテーブル情報、ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）エントリ情報などのＬ３ＳＷと同様の情報と仮想ネットワーク５００Ａとの関係などである。また、例えば、仮想Ｌ２ＳＷ（図３の仮想Ｌ２ＳＷ５０２Ａ、５０２Ｂ参照）であれば、仮想インタフェース情報やＭＡＣ転送テーブルのエントリ情報などのＬ２ＳＷと同様の情報と、ブロードキャストドメインを一意に識別するためのブロードキャストドメインＩＤ（ＢＣドメインＩＤ）、仮想ネットワーク５００Ａとの関係などが記憶される。また、外部ＮＷ端点（図３の外部ＮＷ端点５０３Ａ〜５０３Ｅ参照）であれば、制御装置１００が管理するネットワークにおけるどの転送ノード２００のどのポートのどのＶＬＡＮ  ＩＤと関係しているかの情報と仮想ネットワーク５００Ａとの関係などが記憶される。なお、外部ＮＷ端点（図３の外部ＮＷ端点５０３Ａ〜５０３Ｅ参照）のＶＬＡＮ  ＩＤ情報はｕｎｔａｇｇｅｄかｔａｇｇｅｄか、ｕｎｔａｇｇｅｄの場合はｕｎｔａｇｇｅｄ用のＶＬＡＮ  ＩＤを使用するか否か、使用する場合はどのＶＬＡＮ  ＩＤか、またｔａｇｇｅｄの場合はどのＶＬＡＮ  ＩＤかなどが記憶される。
【００５２】
図３は、本実施形態の制御装置１００によって提供されている仮想ネットワークの一例を示す。仮想ネットワーク５００Ａには、仮想ノードとして仮想Ｌ３ＳＷ５０１Ａ、仮想Ｌ２ＳＷ５０２Ａ、５０２Ｂ、外部ＮＷ端点５０３Ａ〜５０３Ｅが存在し、仮想ネットワークトポロジとして仮想Ｌ３ＳＷ５０１Ａと仮想Ｌ２ＳＷ５０２Ａ、５０２Ｂが接続しており、仮想Ｌ２ＳＷ５０２Ａと外部ＮＷ端点５０３Ａ、５０３Ｂが接続しており、仮想Ｌ２ＳＷ５０２Ｂと外部ＮＷ端点５０３Ｃ〜５０３Ｅが接続している。また、仮想Ｌ２ＳＷ５０２Ａは、ＢＣドメインＩＤとして１を持ち、仮想Ｌ２ＳＷ５０２ＢはＢＣドメインＩＤとして２を持つ。なお、ＢＣドメインＩＤの割り当ては仮想ネットワーク管理部１０３が、仮想Ｌ２ＳＷ５０２を一意に特定できるように割り当てればよい。
【００５３】
ここで、仮想ネットワーク５００Ａは、図４に示すように、図１の物理ネットワークに対応しているものとし（図４の点線は、物理−仮想間の対応関係を示す）、外部ＮＷ端点５０３Ａは転送ノード２００Ａの外部ノード３００Ａ接続ポートでＶＬＡＮ  ＩＤが１０であるアンタグポート（ｕｎｔａｇｇｅｄ）に対応付けられている。同様に、外部ＮＷ端点５０３Ｂは、転送ノード２００Ｂの外部ノード３００Ｂ接続ポートでＶＬＡＮ  ＩＤが２０のタグポート（ｔａｇｇｅｄ）に対応付けられ、外部ＮＷ端点５０３Ｃは転送ノード２００Ｂの外部ノード３００Ｃ接続ポートでＶＬＡＮ  ＩＤが３０のタグポート（ｔａｇｇｅｄ）に対応付けられている。また、外部ＮＷ端点５０３Ｄは、転送ノード２００Ｃの外部ノード３００Ｄ接続ポートでＶＬＡＮ  ＩＤが２０のタグポート（ｔａｇｇｅｄ）に対応付けられ、外部ＮＷ端点５０３Ｅは転送ノード２００Ｃの外部ノード３００Ｅ接続ポートでＶＬＡＮ  ＩＤが２０のタグポート（ｔａｇｇｅｄ）に対応付けられている。
【００５４】
図５は、転送ノード２００の詳細な構成を示すブロック図である。図５を参照すると、転送ノード２００は、フローエントリ検索部２０１と、フローエントリ記憶部２０２と、フローエントリ処理部２０３と、フロー処理部２０４と、制御装置通信部２０５とを備えて構成される。
【００５５】
フローエントリ検索部２０１は、受信パケットからフローエントリを検索するためのフローエントリ検索条件情報を抽出し、フローエントリ検索条件情報を用いてフローエントリ記憶部２０２を検索する。前記検索の結果、マッチしたフローエントリがあれば、フローエントリ検索部２０１は、そのタイムアウト時間や統計情報などを更新する。そして、フローエントリ検索部２０１は、マッチしたフローエントリに定められた処理内容（インストラクションまたはアクションセット）と入力パケットをフロー処理部２０４に渡す。
【００５６】
フローエントリ記憶部２０２は、制御装置１００の転送ノード制御部１０２から設定されたフローエントリを保持する。ここで、フローエントリ記憶部２０２が保持するフローエントリは、制御装置１００のフローエントリ記憶部１０７に保持されているフローエントリと同期されている。
【００５７】
フローエントリ処理部２０３は、制御装置通信部２０５を通して制御装置１００からのフローエントリの追加・削除などの設定指示や参照指示を受けると、フローエントリ記憶部２０２に対して該当する処理を行う。また、フローエントリ処理部２０３は、フローエントリ記憶部２０２を参照し、フローエントリでタイムアウトしたものに関しては削除し、制御装置通信部２０５を通して該フローエントリが削除されたことを制御装置１００に伝える。
【００５８】
フロー処理部２０４は、フローエントリ検索部２０１または制御装置１００から渡される入力パケットと適用すべき処理内容に従ってパケットを処理する。具体的には、パケットヘッダ情報の変更、外部ノード３００や他の転送ノード２００への転送、制御装置１００への出力、破棄（ドロップ）などが行われる。
【００５９】
制御装置通信部２０５は、制御装置１００とフローエントリ処理部２０３やフロー処理部２０４との中継を行う。
【００６０】
図６〜図８は、図３の仮想ネットワーク５００Ａにおいて、ブロードキャスト、マルチキャストを行うために、転送ノード２００Ａ〜２００Ｃにそれぞれ設定されるＢＣＭＣ用フローエントリの一例を示す。なお、図６〜図８の例では、２つのテーブルを使用し、その転送ノードが外部ノード３００からパケットを受信した場合に、第１のテーブル（Ｔａｂｌｅ＃１）のインストラクションに従い、第２のテーブル（Ｔａｂｌｅ＃２）を参照するパイプライン処理を行うこととしている（非特許文献２の「４．１．１  Ｐｉｐｅｌｉｎｅ  Ｐｒｏｃｅｓｓｉｎｇ」参照）。図６〜図８はあくまで例示であり、フローテーブルの数は１以上であればよいし、フローエントリも１以上に分割されていてもよい。
【００６１】
また、図６〜８のＢＣＭＣ用フローエントリは、転送ノード２００のポートからパケットを出力する際に、転送ノード２００が該ポートに設定されているＶＬＡＮ設定情報を基に、以下（１）、（２）に示す処理を行うことを前提としている。
【００６２】
（１）転送ノード２００は、ポートがアンタグポート（ｕｎｔａｇｇｅｄ）で、かつ、ＶＬＡＮ  ＩＤの設定がされている場合、入力パケットがｕｎｔａｇｇｅｄの場合のみ該ポートから設定されているＶＬＡＮ  ＩＤがｔａｇｇｅｄされている状態でパケットを入力し、入力パケットがｔａｇｇｅｄの場合は該ポートで入力パケットをドロップする処理を行う。一方、ポートがタグポート（ｔａｇｇｅｄ）で、かつ、ＶＬＡＮ  ＩＤの設定がされている場合、入力パケットのＶＬＡＮ  ＩＤが同じ場合のみ該ポートからそのＶＬＡＮ  ＩＤがｔａｇｇｅｄされている状態でパケットを入力し、入力パケットがｕｎｔａｇｇｅｄまたは異なるＶＬＡＮ  ＩＤの場合は該ポートで入力パケットをドロップする処理を行う。
【００６３】
（２）また、転送ノード２００は、転送ノード２００の該ポートがアンタグポート（ｕｎｔａｇｇｅｄ）で、かつ、ＶＬＡＮ  ＩＤの設定がされている場合、出力パケットのＶＬＡＮ  ＩＤが同じ場合のみ該ポートからＶＬＡＮ  ＩＤをｕｎｔａｇｇｅｄした状態でパケットを出力し、異なる場合は該ポートで出力パケットをドロップする処理を行う。一方、該ポートがタグポート（ｔａｇｇｅｄ）で、かつ、ＶＬＡＮ  ＩＤの設定がされている場合、出力パケットのＶＬＡＮ  ＩＤが同じ場合のみ該ポートからそのＶＬＡＮ  ＩＤがｔａｇｇｅｄされている状態でパケットを出力し、異なる場合は該ポートで出力パケットをドロップする処理を行う。もちろん、転送ノード２００のポートには適切なＶＬＡＮ情報が設定されているものとする。
【００６４】
さらに、図６〜８のＢＣＭＣ用フローエントリでは、ＶＬＡＮ数を４０９６以上扱うことを可能とするために、パケットにＭＰＬＳ（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）  ｓｈｉｍヘッダを挿入し、ＭＰＬＳラベルをＢＣドメインＩＤとし、その情報をフローエントリのマッチ条件にしている。この場合、ＭＰＬＳラベルは２０ビットであるため、ブロードキャスト、マルチキャスト用に２＾２０（１，０４８，５７６）のＶＬＡＮ数を扱うことが可能になる。なお、このＶＬＡＮ数の拡張方法は一例であり、ＢＣドメインＩＤ用にＭＰＬＳ  ｓｈｉｍヘッダをスタックさせることによりさらに拡張することも可能である。また、ＭＰＬＳ  ｓｈｉｍヘッダの挿入と同時にＶＬＡＮヘッダを削除してもよい（この場合、ネットワーク出口でのＭＰＬＳ  ｓｈｉｍヘッダの削除時にＶＬＡＮヘッダを挿入（復元）するようにしてもよい。）。また、ＶＬＡＮヘッダやＭＡＣヘッダでパケットをカプセル化して、外側のＭＡＣヘッダの送信元アドレスにＢＣドメインＩＤを適用してもよいし、ＭＰＬＳ  ｓｈｉｍヘッダでパケットをカプセル化して、ＭＰＬＳラベルにＢＣドメインＩＤを適用してもよい。
【００６５】
なお、図６〜８のＢＣＭＣ用フローエントリは、あくまで一例であり、図１８〜図２０のＢＣＭＣ用ベースフローエントリ４００のように、図６の第２のフローテーブル（Ｔａｂｌｅ＃２）のフローエントリＮｏ．１のインストラクションに「転送ノード２００Ｃ接続ポート出力」が追加されていても問題ない。同様に、図７の第１のフローテーブル（Ｔａｂｌｅ＃１）のフローエントリＮｏ．３のインストラクションに「外部ノード３００Ｃ接続ポート出力」が追加されていても転送ノード２００ＢのポートのＶＬＡＮ設定を用いるため問題ないし、図７の第１のフローテーブル（Ｔａｂｌｅ＃１）のフローエントリＮｏ．４のインストラクションに「外部ノード３００Ｂ接続ポート出力」が追加されていても転送ノード２００ＢのポートのＶＬＡＮ設定を用いるため問題ない。また、転送ノード２００のポートのＶＬＡＮ設定が、ｕｎｔａｇｇｅｄで、かつ、ＶＬＡＮ  ＩＤの設定がない場合は入力パケットがｕｎｔａｇｇｅｄの場合のみ該ポートからｕｎｔａｇｇｅｄされている状態でパケットを入力し、入力パケットがｔａｇｇｅｄの場合、該ポートで入力パケットをドロップする処理を行うようにしてもよい。また、出力パケットがｕｎｔａｇｇｅｄの場合のみ該ポートからｕｎｔａｇｇｅｄされている状態でパケットを出力し、ｔａｇｇｅｄの場合は該ポートで出力パケットをドロップする処理を行うとした場合、例えば、図６の第１のフローテーブル（Ｔａｂｌｅ＃１）のフローエントリＮｏ．２のインストラクションで「ＶＬＡＮ  ＩＤ  １０に変更」は「ＶＬＡＮヘッダ削除」、図６の第２のフローテーブル（Ｔａｂｌｅ＃２）のフローエントリＮｏ．１のマッチ条件のレイヤ２のＶＬＡＮ  ＩＤは「なし」、インストラクションは、先頭に「ＶＬＡＮヘッダ挿入（ＶＬＡＮ  ＩＤは不定）」などのようになる。
【００６６】
また、図７の第１のフローテーブル（Ｔａｂｌｅ＃１）のフローエントリＮｏ．１、Ｎｏ．２のインストラクション中の「転送ノード２００Ｃ接続ポート出力」、「転送ノード２００Ｂ接続ポート出力」は、図１９のベースフローエントリＮｏ．１、Ｎｏ．２の情報を用いて設定されたものである。図３の状態においては、仮想Ｌ２ＳＷ５０２Ａから外部ノード３００Ｃ接続ポートへのＢＣパケットの転送は必要ないが、上記のようにベースフローエントリの情報を用いることにより、仮想Ｌ２ＳＷ５０２Ａに、ＶＬＡＮ  ＩＤ  １０である外部ＮＷ端点５０３が新規に接続された場合における、フローエントリの新規設定が不要となる。もちろん、外部ＮＷ端点５０３の追加等がなく仮想ネットワークの構成が変わらない場合や、仮想ネットワークの構成変更の都度、フローエントリを更新する運用を行う場合には、図７の第１のフローテーブル（Ｔａｂｌｅ＃１）のフローエントリＮｏ．１、Ｎｏ．２のインストラクション中の「転送ノード２００Ｃ接続ポート出力」、「転送ノード２００Ｂ接続ポート出力」を省略することもできる。
【００６７】
なお、上記した転送ノード２００は、非特許文献１、２のオープンフロースイッチにて実現することができる。また、制御装置１００は、非特許文献１、２のオープンフローコントローラをベースに上記した各機能を追加することで実現することができる。
【００６８】
また、上記した制御装置１００の各部（処理手段）は、制御装置１００を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
【００６９】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図９は、制御装置１００がＢＣＭＣ用ベースフローエントリ４００を生成する処理の流れを表したフローチャートである。
【００７０】
図９を参照すると、まず、制御装置１００の転送ノード制御部１０２は、転送ノード２００と接続した際に転送ノード２００の情報を取得し、転送ノード情報記憶部１０４に格納する（ステップＳ１０１）。
【００７１】
次に、転送ノード制御部１０２は転送ノード２００から送信した他の転送ノード２００へのパケットを、当該他の転送ノード２００から入力パケット情報として取得し、転送ノード情報記憶部１０４の転送ノード情報を参照することにより、転送ノード２００間の接続情報を取得する（ステップＳ１０２）。そして、転送ノード制御部１０２は、転送ノード２００間の接続情報を、物理ネットワークトポロジ記憶部１０５のネットワークトポロジ情報に反映する。
【００７２】
次に、転送ノード制御部１０２は、物理ネットワークトポロジ記憶部１０５のネットワークトポロジ情報を基に、ブロードキャスト、マルチキャストパケットがネットワークにおいてループフリーとなるようにスパニングツリーを求め、転送ノード２００ごとに、ブロードキャスト、マルチキャスト用のＢＣＭＣ用ベースフローエントリを生成し、ＢＣＭＣ用ベースフローエントリ記憶部１０６に設定する（ステップＳ１０３）。
【００７３】
以上の処理により、図１７の矢線に示すようなブロードキャストまたはマルチキャスト用の経路と、図１８〜図２０に示すＢＣＭＣ用ベースフローエントリとが生成される。
【００７４】
続いて、制御装置１００が、上記ＢＣＭＣ用ベースフローエントリを用いて、個々のＢＣドメインでのブロードキャストまたはマルチキャストを実現するＢＣＭＣ用フローエントリを設定するまでの手順について説明する。
【００７５】
図１０は、制御装置１００によるＢＣＭＣ用フローエントリ４００の設定処理の流れを表したフローチャートである。図１０を参照すると、まず、制御装置１００の転送ノード制御部１０２は、仮想ネットワーク管理部１０３経由で仮想ノード情報記憶部１１０から、ＢＣＭＣ用フローエントリを設定する仮想ネットワークの構成情報を取得する（ステップＳ２０１）。ここでは、転送ノード制御部１０２は、図３の仮想ネットワーク５００Ａの仮想Ｌ２ＳＷ５０２の仮想ノード情報と、その仮想Ｌ２ＳＷ５０２と接続関係にある外部ＮＷ端点５０３の仮想ノード情報と、それらの接続関係を示す仮想ネットワークトポロジ情報を取得する。
【００７６】
次に、転送ノード制御部１０２は、仮想ネットワーク管理部１０３経由で仮想ノード情報記憶部１１０から、前記取得した仮想ノードに対応するＢＣドメインＩＤを取得する（ステップＳ２０２）。以下の説明では図３に示したように仮想Ｌ２ＳＷ５０２ＡのＢＣドメインＩＤ＝１、仮想Ｌ２ＳＷ５０２ＢのＢＣドメインＩＤ＝２が取得されたものとする。ＢＣドメインＩＤは、仮想Ｌ２ＳＷ５０２のブロードキャストドメインを一意に識別するため充分な長さを持ち、ＶＬＡＮ数１２ビットよりも大きい領域を持つ。
【００７７】
次に、転送ノード制御部１０２は、ＢＣＭＣ用ベースフローエントリ記憶部１０６からＢＣＭＣ用ベースフローエントリ４００を取得する（ステップＳ２０３）。ここでは、図１８〜図２０に示すＢＣＭＣ用ベースフローエントリ群が取得される。
【００７８】
次に、転送ノード制御部１０２は、ステップＳ２０１〜Ｓ２０３で取得した情報を用いて、ＢＣドメインでのＢＣＭＣを実現するＢＣＭＣ用フローエントリを生成し、フローエントリ記憶部１０７に記憶する（ステップＳ２０４）。具体的には、図４に示す仮想ネットワークと物理ネットワークの対応関係を参照してＢＣＭＣ用ベースフローエントリを選択し、その処理内容（インストラクション）にＢＣドメインＩＤの付加、又は、削除、マッチ条件への前記付加したＢＣドメインＩＤの追記、別テーブルへの分岐等が設定される。この結果、各転送ノード２００におけるＶＬＡＮ  ＩＤとＢＣドメインＩＤ間の対応関係が１対１となるようにＢＣＭＣ用フローエントリが生成されることになる。
【００７９】
次に、転送ノード制御部１０２は、前記生成したＢＣＭＣ用フローエントリを、転送ノード通信部１０１を介して転送ノード２００に設定する（ステップＳ２０５）。
【００８０】
図６〜図８は、図３の仮想Ｌ２ＳＷ５０２Ａ（ＢＣドメインＩＤ＝１）、仮想Ｌ２ＳＷ５０２Ｂ（ＢＣドメインＩＤ＝２）でのブロードキャストを行うために設定されたフローエントリの例である。例えば、図３（図４）の外部ＮＷ端点５０３Ａから入力されたＢＣパケット（転送ノード２００Ａが受信した外部ノード３００ＡのＢＣパケット）は、図６に示すように、外部ＮＷ端点５０３Ａに対応する外部ノード３００Ａから受信したＢＣパケットを、第２のフローテーブル（Ｔａｂｌｅ＃２）で処理するインストラクションを持つフローエントリ（図６のＴａｂｌｅ＃１のフローエントリＮｏ．１）と、ＶＬＡＮ  ＩＤが１０である場合にのみ、ＭＰＬＳ  Ｓｈｉｍヘッダ（ＢＣドメインＩＤ＝１）を挿入し、転送ノード２００Ｂに転送するインストラクションを持つフローエントリ（図６のＴａｂｌｅ＃２のフローエントリＮｏ．１）とにより処理される。また、ＭＰＬＳ  Ｓｈｉｍヘッダ（ＢＣドメインＩＤ＝１）が挿入されたパケットを処理するために、転送ノード２００Ｂには、図７に示すように、転送ノード２００Ａから受信したＢＣパケットで、ＭＰＬＳ  ＳｈｉｍヘッダにＢＣドメインＩＤ＝１が設定されているパケットから、ＭＰＬＳ  Ｓｈｉｍヘッダを削除した上で、ＶＬＡＮ  ＩＤを２０に書き換え、外部ノード３００Ｂに転送するインストラクションを持つフローエントリ（図７のＴａｂｌｅ＃１のフローエントリＮｏ．３）が設定される。なお、図６のＴａｂｌｅ＃２のフローエントリによれば、外部ノード３００Ａから受信したＢＣパケットであっても、ＶＬＡＮ  ＩＤが１０でないパケットは、破棄（Ｄｒｏｐ）されることになる（図６のＴａｂｌｅ＃２のフローエントリＮｏ．２）。以上により、外部ノード３００Ａから送信されたＢＣパケットのＢＣドメインＩＤ＝１でのブロードキャストが実現される。
【００８１】
同様に、例えば、図３（図４）の外部ＮＷ端点５０３Ｂから入力されたＢＣパケット（転送ノード２００Ｂが受信した外部ノード３００ＢのＢＣパケット（ＶＬＡＮ  ＩＤ＝２０））は、図７に示すように、外部ＮＷ端点５０３Ｂに対応する外部ノード３００Ｂから受信したＢＣパケットを外部ノード３００Ｃ接続ポートから出力し、かつ、第２のフローテーブル（Ｔａｂｌｅ＃２）で処理するインストラクションを持つフローエントリ（図７のＴａｂｌｅ＃１のフローエントリＮｏ．１）と、ＶＬＡＮ  ＩＤが２０である場合にのみ、ＭＰＬＳ  Ｓｈｉｍヘッダ（ＢＣドメインＩＤ＝１）を挿入し、転送ノード２００Ａに転送するインストラクションを持つフローエントリ（図７のＴａｂｌｅ＃２のフローエントリＮｏ．１）とにより処理される。また、ＭＰＬＳ  Ｓｈｉｍヘッダ（ＢＣドメインＩＤ＝１）が挿入されたパケットを処理するために、転送ノード２００Ａには、図６に示すように、転送ノード２００Ｂから受信したＢＣパケットで、ＭＰＬＳ  ＳｈｉｍヘッダにＢＣドメインＩＤ＝１が設定されているパケットから、ＭＰＬＳ  Ｓｈｉｍヘッダを削除した上で、ＶＬＡＮ  ＩＤを１０に書き換え、外部ノード３００Ａに転送するインストラクションを持つフローエントリ（図６のＴａｂｌｅ＃１のフローエントリＮｏ．２）が設定される。なお、図７のＴａｂｌｅ＃２のフローエントリによれば、外部ノード３００Ｂから受信したＢＣパケットであっても、ＶＬＡＮ  ＩＤが１０でないパケットは、破棄（Ｄｒｏｐ）されることになる（図６のＴａｂｌｅ＃２のフローエントリＮｏ．２）。以上により、外部ノード３００Ａから送信されたＢＣパケットのＢＣドメインＩＤ＝１でのブロードキャストが実現される。
【００８２】
以上のように、本実施形態では、エッジに位置する転送ノード２００において、ＢＣドメインＩＤ用のヘッダを追加するＢＣＭＣ用フローエントリや、ＢＣドメインＩＤをフローエントリのマッチ条件とし、そのアクションとしてＢＣドメインＩＤ用のヘッダを削除し、ＶＬＡＮ  ＩＤを適用するようなフローエントリが設定される。
【００８３】
続いて、転送ノード２００が、上記ＢＣＭＣ用フローエントリを用いて、受信パケットを処理する手順について説明する。
【００８４】
図１１は、転送ノード２００による受信パケット処理の流れを表したフローチャートである。図１１を参照すると、まず、転送ノード２００のフローエントリ検索部２０１が、受信パケットからフローエントリを検索するためのフローエントリ検索条件情報を抽出する（ステップＳ３０１）。例えば、図６〜図８のフローエントリのマッチ条件と照合する場合、フローエントリ検索条件情報として、入力ポートと、レイヤ２の宛先アドレスと、ＢＣドメインＩＤ格納領域が抽出される。
【００８５】
次に、転送ノード２００のフローエントリ検索部２０１は、フローエントリ記憶部２０２から、ステップＳ３０１で抽出したフローエントリ検索条件情報を適合するフローエントリを特定する（ステップＳ３０２）。そして、フローエントリ検索部２０１は、マッチしたフローエントリの処理内容（インストラクションまたはアクションセット）と、受信パケットをフロー処理部２０４に渡す。ここで、宛先アドレスにＢＣＭＣアドレスが設定されているＢＣパケットを受信した場合、ステップＳ２０５において転送ノード２００に設定されたＢＣＭＣ用フローエントリが使用されることになる。
【００８６】
次に、転送ノード２００のフロー処理部２０４は、フローエントリ検索部２０１から渡されたパケットと、マッチしたフローエントリの処理内容（インストラクションまたはアクションセット）とに従って外部ノード３００や他の転送ノードへの転送、ヘッダ付加や削除、パケットの破棄などを実行する（ステップＳ３０３）。
【００８７】
以上のように、本実施形態によれば、ＶＬＡＮ数を４０９６以上に拡張しても、フローエントリ数の飛躍的な増大を伴わずにＢＣＭＣを実現することが可能となる。その理由は、ＶＬＡＮ数４０９６以上の領域を持つＢＣドメインＩＤをフローエントリのマッチ条件として用いたフローエントリを生成し、転送ノード２００に設定したことにある。即ち、転送ノード２００においてＶＬＡＮ  ＩＤとＢＣドメインＩＤ間の対応関係は１対１であるため飛躍的なフローエントリ数の増大とならないからである。特許文献１、３のように、外部ノードの数に比例してフローエントリの数が増えることは無い。
【００８８】
［第２の実施形態］
上記した第１の実施形態の図６〜図８に例示したＢＣＭＣ用フローエントリは、転送ノード２００のポートのＶＬＡＮ設定の利用を前提としたものであり、転送ノード２００におけるＶＬＡＮ  ＩＤとＢＣドメインＩＤ間の対応関係は１対１に制限される。例えば、図１２のように、転送ノード２００ＢのＶＬＡＮ  ＩＤが２０である外部ノード３００Ｂ接続ポートに対応する外部ＮＷ端点５０３Ｂが、仮想Ｌ２ＳＷ５０２Ａ（ＢＣドメインＩＤ＝１）と接続関係を持ち、同じく転送ノード２００ＢのＶＬＡＮ  ＩＤが２０である外部ノード３００Ｃ接続ポートに対応する外部ＮＷ端点５０３Ｃが、仮想Ｌ２ＳＷ５０２Ｂ（ＢＣドメインＩＤ＝２）と接続関係を持つ構成をとることができない。また、転送ノード２００ＣのＶＬＡＮ  ＩＤが２０である外部ノード３００Ｄ接続ポートに対応する外部ＮＷ端点５０３Ｄが仮想Ｌ２ＳＷ５０２Ｂ（ＢＣドメインＩＤ＝２）と接続関係を持ち、同じく転送ノード２００ＣのＶＬＡＮ  ＩＤが３０である外部ノード３００Ｅ接続ポートに対応する外部ＮＷ端点５０３Ｅが仮想Ｌ２ＳＷ５０２Ｂ（ＢＣドメインＩＤ＝２）と接続関係を持つ構成をとることができない。
【００８９】
本発明の第２の実施形態は、制御装置１００の転送ノード制御部１０２が転送ノード２００のポートのＶＬＡＮ設定を利用しなくても問題ないように、ＢＣＭＣ用フローエントリを転送ノード２００ごとに生成し、転送ノード２００に設定するものである。基本的な構成、及び、動作は第１の実施形態と同様であるので、以下、ＢＣＭＣ用フローエントリの相違等を中心に説明する。
【００９０】
図１３〜図１５は、本発明の第２の実施形態において、それぞれ転送ノード２００Ａ〜２００Ｃに設定されるＢＣＭＣ用フローエントリを表した図である。なお、説明の重複を避けるため、転送ノード２００のポートのＶＬＡＮ設定は第１の実施形態と同様であるものとする。また、図１８〜２０に示されたように、ＢＣＭＣ用フローエントリは、各転送ノード２００において、ポートのＶＬＡＮ  ＩＤとＢＣドメイン間の対応関係が１対１となっている点で、第１の実施形態と異なっている。
【００９１】
より具体的には、例えば、図１２の外部ＮＷ端点５０３Ｂから入力されたＢＣパケット（転送ノード２００Ｂが受信した外部ノード３００ＢのＢＣパケット（ＶＬＡＮ  ＩＤ＝２０））は、図１４に示すように、外部ＮＷ端点５０３Ｂに対応する外部ノード３００Ｂから受信したＢＣパケットにＭＰＬＳ  Ｓｈｉｍヘッダ（ＢＣドメインＩＤ＝１）を挿入したうえで、転送ノード２００Ａに転送し、さらに、第２のフローテーブル（Ｔａｂｌｅ＃２）で処理するインストラクションを持つフローエントリ（図１４のＴａｂｌｅ＃１のフローエントリＮｏ．１）と、ＢＣパケットを破棄（Ｄｒｏｐ）するインストラクションを持つフローエントリ（図１４のＴａｂｌｅ＃２のフローエントリＮｏ．１）とにより処理される。また、ＭＰＬＳ  Ｓｈｉｍヘッダ（ＢＣドメインＩＤ＝１）が挿入されたパケットを処理するために、転送ノード２００Ａには、図１３に示すように、転送ノード２００Ｂから受信したＢＣパケットで、ＭＰＬＳ  ＳｈｉｍヘッダにＢＣドメインＩＤ＝１が設定されているパケットから、ＭＰＬＳ  Ｓｈｉｍヘッダを削除した上で、ＶＬＡＮ  ＩＤを１０に書き換え、外部ノード３００Ａに転送するインストラクションを持つフローエントリ（図１３のＴａｂｌｅ＃１のフローエントリＮｏ．２）が設定される。
【００９２】
同様に、例えば、図１２の外部ＮＷ端点５０３Ｃから入力されたＢＣパケット（転送ノード２００Ｂが受信した外部ノード３００ＣのＢＣパケット（ＶＬＡＮ  ＩＤ＝２０））は、図１４に示すように、外部ＮＷ端点５０３Ｃに対応する外部ノード３００Ｃから受信したＢＣパケット（ＶＬＡＮ  ＩＤ＝２０）に、ＭＰＬＳ  Ｓｈｉｍヘッダ（ＢＣドメインＩＤ＝２）を挿入したうえで、転送ノード２００Ａに転送し、さらに、第２のフローテーブル（Ｔａｂｌｅ＃２）で処理するフローエントリ（図１４のＴａｂｌｅ＃１のフローエントリＮｏ．２）と、ＢＣパケットを破棄（Ｄｒｏｐ）するフローエントリ（図１４のＴａｂｌｅ＃２のフローエントリＮｏ．１）とにより処理される。なお、ＭＰＬＳ  Ｓｈｉｍヘッダ（ＢＣドメインＩＤ＝２）が挿入されたパケットは、転送ノード２００Ｃにおいて、上位のフローエントリにヒットしないＢＣパケットであるため、図１５のＴａｂｌｅ＃１のフローエントリＮｏ．５により破棄（Ｄｒｏｐ）される。
【００９３】
以上により、転送ノード２００Ｂにおいて、同一ＶＬＡＮ  ＩＤであっても、入力ポートに応じて異なるＢＣドメインＩＤの対応付けが行われる。一方、転送ノード２００Ｃにおいては、異なるＶＬＡＮ  ＩＤであっても、入力ポートに基づいた同一ＢＣドメインＩＤ（ＢＣドメインＩＤ＝２）の対応付けが行われる（図１５のＴａｂｌｅ＃１のフローエントリＮｏ．１、Ｎｏ．２参照）。
【００９４】
第１の実施形態では、転送ノード２００の外部ＮＷ接続ポートに関するＢＣＭＣ用フローエントリの数は、転送ノード２００における外部ＮＷ接続ポート数（例えば、図７のＴａｂｌｅ＃１のフローエントリＮｏ．１、Ｎｏ．２の２エントリ）＋転送ノード２００に関係する全外部ＮＷ端点５０３のＶＬＡＮ  ＩＤ数（例えば、図７のＴａｂｌｅ＃２のフローエントリＮｏ．１、Ｎｏ．２の２エントリ）となる。
【００９５】
これに対し、第２の実施形態では、転送ノード２００の外部ＮＷ接続ポートに関するＢＣＭＣ用フローエントリの数は、少なくとも、その転送ノード２００に関係する全外部ＮＷ端点５０３のＶＬＡＮ  ＩＤ数の総和（例えば、図１４のＴａｂｌｅ＃２のフローエントリＮｏ．１、Ｎｏ．２の２エントリ）となる。このため、同一のＶＬＡＮ  ＩＤが該転送ノード２００に関係する複数の外部ＮＷ端点５０３に設定されればされるほど、ＢＣＭＣ用フローエントリの数が、第１の実施形態よりも増加することになる。
【００９６】
その一方で、第２の実施形態では、ネットワークにおけるブロードキャストドメイン、マルチキャストドメインの構成に制限がなくなるという利点がある。その理由は、制御装置１００の転送ノード制御部１０２が、転送ノード２００においてポートのＶＬＡＮ  ＩＤとＢＣドメイン間の対応関係が１対１となるように、ＢＣＭＣ用フローエントリを生成するようにしたことにある。
【００９７】
以上、本発明の実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態では、図１等に示したネットワーク構成を用いて説明したが、転送ノードや外部ノードの数に制約は無い。
【００９８】
また例えば、第１の実施形態で説明したＢＣＭＣ用フローエントリが設定されている転送ノード２００と、第１の実施形態で説明したＢＣＭＣ用フローエントリが設定されている転送ノード２００とが混在する構成（第３の実施形態）でも問題ない。
【００９９】
なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１００】
１００  制御装置
１０１  転送ノード通信部
１０２  転送ノード制御部
１０３  仮想ネットワーク管理部
１０４  転送ノード情報記憶部
１０５  物理ネットワークトポロジ記憶部
１０６  ＢＣＭＣ用ベースフローエントリ記憶部
１０７  フローエントリ記憶部
１０８  フロー記憶部
１０９  仮想ネットワークトポロジ情報記憶部
１１０  仮想ノード情報記憶部
２００、２００Ａ〜２００Ｃ  転送ノード
２０１  フローエントリ検索部
２０２  フローエントリ記憶部
２０３  フローエントリ処理部
２０４  フロー処理部
２０５  制御装置通信部
３００、３００Ａ〜３００Ｅ  外部ノード
４００、４００Ａ〜４００Ｃ  ＢＣＭＣ用ベースフローエントリ
５００Ａ  仮想ネットワーク
５０１Ａ  仮想Ｌ３ＳＷ
５０２Ａ、５０２Ｂ  仮想Ｌ２ＳＷ
５０３Ａ〜５０３Ｅ  外部ＮＷ端点
【図１】
2013168737.tif 000003
【図２】
2013168737.tif 000004
【図３】
2013168737.tif 000005
【図４】
2013168737.tif 000006
【図５】
2013168737.tif 000007
【図６】
2013168737.tif 000008
【図７】
2013168737.tif 000009
【図８】
2013168737.tif 000010
【図９】
2013168737.tif 000011
【図１０】
2013168737.tif 000012
【図１１】
2013168737.tif 000013
【図１２】
2013168737.tif 000014
【図１３】
2013168737.tif 000015
【図１４】
2013168737.tif 000016
【図１５】
2013168737.tif 000017
【図１６】
2013168737.tif 000018
【図１７】
2013168737.tif 000019
【図１８】
2013168737.tif 000020
【図１９】
2013168737.tif 000021
【図２０】
2013168737.tif 000022
【図２１】
2013168737.tif 000023
【手続補正書】
【提出日】平成26年11月7日(2014.11.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項３
【補正方法】変更
【補正の内容】
【請求項３】
前記転送ノード管理部は、
前記ブロードキャストまたはマルチキャストの経路上の上流側の転送ノードに、受信パケットに、前記ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子を含んだ追加ヘッダを追加させ、
前記上流側の転送ノードより下流の転送ノードに前記識別子を含んだ追加ヘッダに基づいてパケット転送を行わせる制御情報を設定する請求項２の通信システム。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項５
【補正方法】変更
【補正の内容】
【請求項５】
前記制御装置は、
各転送ノードに、前記ブロードキャストドメインまたはマルチキャストドメインを特定するための識別子と、前記転送ノードにおける各ポートのＶＬＡＮ  ＩＤとが１対１で対応する制御情報を生成して設定する請求項１から３いずれか一の通信システム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００６０
【補正方法】変更
【補正の内容】
【００６０】
図６〜図８は、図３の仮想ネットワーク５００Ａにおいて、ブロードキャスト、マルチキャストを行うために、転送ノード２００Ａ〜２００Ｃにそれぞれ設定されるＢＣＭＣ用フローエントリの一例を示す。なお、図６〜図８の例では、２つのテーブルを使用し、その転送ノードが外部ノード３００からパケットを受信した場合に、第１のテーブル（Ｔａｂｌｅ＃１）のインストラクションに従い、第２のテーブル（Ｔａｂｌｅ＃２）を参照するパイプライン処理を行うこととしている（非特許文献２の「４．１．１  Ｐｉｐｅｌｉｎｅ  Ｐｒｏｃｅｓｓｉｎｇ」参照）。図６〜図８はあくまで例示であり、フローテーブルの数は１以上であればよいし、フローエントリも分割されていてもよい。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００９８
【補正方法】変更
【補正の内容】
【００９８】
また例えば、第１の実施形態で説明したＢＣＭＣ用フローエントリが設定されている転送ノード２００と、第２の実施形態で説明したＢＣＭＣ用フローエントリが設定されている転送ノード２００とが混在する構成（第３の実施形態）でも問題ない。
【国際調査報告】
2013168737.tif 000024
2013168737.tif 000025