(57)【特許請求の範囲】
【請求項１】
異なるポートから受信した所定の仮想ネットワークに属する複数のフレームの送信元ＭＡＣアドレスが同一の場合に、ＭＡＣ重複の発生を示すＭＡＣ重複通知を送信するフロー処理装置と、
前記フロー処理装置から前記ＭＡＣ重複通知を受信した場合に、前記所定の仮想ネットワークの構成を変更するフロー制御装置と、
を含む通信システム。
【請求項２】
前記フロー制御装置は、
前記複数のフレームの送信元である仮想ブリッチの各々が、互いに異なる仮想ネットワークに属するように、前記所定の仮想ネットワークを分離する
ことを特徴とする請求項１の通信システム。
【請求項３】
前記フロー処理装置は、
前記ＭＡＣ重複が発生した場合に、前記複数のフレームに関する情報を含むＭＡＣ重複エントリを記憶する
ことを特徴とする請求項１又は２に記載の通信システム。
【請求項４】
前記フロー処理装置は、
前記ＭＡＣ重複エントリを含む前記ＭＡＣ重複通知を送信し、
前記フロー制御装置は、
前記ＭＡＣ重複通知に含まれる前記ＭＡＣ重複エントリに基づいて、前記所定の仮想ネットワークの構成を変更する
ことを特徴とする請求項３に記載の通信システム。
【請求項５】
前記フロー処理装置は、
前記所定の仮想ネットワークの識別子であるＯＶＩＤ（Ｏｕｔｅｒ  ＶＬＡＮ  ＩＤ）と、前記複数のフレームの送信元である仮想ブリッチの識別子であるＩＶＩＤ（Ｉｎｔｅｒ  ＶＬＡＮ  ＩＤ）とを含む前記ＭＡＣ重複通知を送信する
ことを特徴とする請求項１乃至３のいずれかの通信システム。
【請求項６】
前記フロー制御装置は、
受信した前記ＭＡＣ重複通知に含まれるＯＶＩＤとＩＶＩＤとに基づいて、前記複数のフレームの送信元である仮想ブリッチの各々が互いに異なる仮想ネットワークに属するように、前記所定の仮想ネットワークを分離する
ことを特徴とする請求項５の通信システム。
【請求項７】
前記フロー処理装置は、
前記フロー制御装置からの通知に基づいて、前記複数のフレームの各々に、当該フレームの各々に対応する前記ＯＶＩＤと前記ＩＶＩＤとを格納し、
前記フロー制御装置は、
前記所定の仮想ネットワークを分離した場合に、前記フロー処理装置に対して、前記複数のフレームの各々に格納する新たなＯＶＩＤとＩＶＩＤとを通知する
ことを特徴とする請求項５又は６に記載の通信システム。
【請求項８】
所定の仮想ネットワークに属する複数のフレームを処理するフロー処理装置を制御可能なフロー制御装置であって、
前記フロー処理装置から前記複数のフレームにおけるＭＡＣ重複の発生を示すＭＡＣ重複通知を受信した場合に、前記所定の仮想ネットワークの構成の変更を要求するＭＡＣ重複制御手段と、
前記要求に応じて、前記所定の仮想ネットワークの構成を変更する仮想ネットワーク管理手段と、
を含むことを特徴とするフロー制御装置。
【請求項９】
請求項８に記載のフロー制御装置によって制御されるフロー処理装置であって、
所定の仮想ネットワークに属する複数のフレームを受信する複数のポートと、
異なるポートから受信した前記複数のフレームの送信元ＭＡＣアドレスが同一の場合に、前記フロー制御装置に対して、ＭＡＣ重複の発生を示すＭＡＣ重複通知を送信するＭＡＣ重複処理手段と
を含むことを特徴とするフロー処理装置。
【請求項１０】
フロー処理装置およびフロー制御装置を備えた通信システムの制御方法であって、
異なるポートから受信した所定の仮想ネットワークに属する複数のフレームの送信元ＭＡＣアドレスが同一の場合に、前記フロー処理装置が、ＭＡＣ重複の発生を示すＭＡＣ重複通知を送信し、
前記ＭＡＣ重複通知を受信した場合に、前記フロー制御装置が、前記所定の仮想ネットワークの構成を変更する
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、フロー制御装置、フロー処理装置及び制御方法に関する。
【背景技術】
【０００２】
大規模な仮想ネットワークを構築するために、ＱｉｎＱを用いた仮想ネットワーク構成モデル（ＱｉｎＱモデル）が採用されている。【０００３】
ＱｉｎＱモデルでは、制御装置が、ユーザや上位制御装置により設定された仮想ネットワーク構成に基づき、ＯｐｅｎＦｌｏｗなどの制御プロトコルを使用して、複数のフロー処理装置を制御する。ＱｉｎＱモデルは、例えば、仮想ネットワークの配下に仮想ブリッジを配置する構成であり、フロー制御装置が管理する仮想ネットワークＩＤ（ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）と仮想ブリッジＩＤとを、それぞれフレームのＯＶＩＤ（Ｏｕｔｅｒ  ＶＬＡＮ  ＩＤ）とＩＶＩＤ（Ｉｎｔｅｒ  ＶＬＡＮ  ＩＤ）とに対応づけることで、当該仮想ブリッジ単位でＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）フォワーディングを実現する。【０００４】
ここで、特許文献１には、仮想的に構築される仮想マシンとネットワーク装置とで構成されるネットワーク環境では、仮想マシン作成時に設定されるＭＡＣアドレスが重複すると、ＭＡＣアドレスが重複してしまった稼働中の仮想マシンに対して、正常な通信ができなくなってしまう場合があることが記載されている。【０００５】
そして、特許文献２には、ＭＡＣ重複によって正常な通信ができなくなってしまうことを回避するために、必要に応じて同じＭＡＣアドレスをもつ２つのクライアント装置が同じサブネットに割り当てられないように、クライアント装置を異なるサブネットに割り当てることが開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−１６８７７１号公報
【特許文献２】特表２０１２−５２５０１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したとおり、特許文献２に記載の発明は、同じＭＡＣアドレスをもつ２つのクライアント装置が同じサブネットに割り当てられないようにすることで、ＭＡＣ重複を発生させないようにするものである。【０００８】
しかしながら、特許文献２に記載の発明では、同じサブネット内に同じＭＡＣアドレスをもつ２つのクライアント装置を割り当てることができないため、ＭＡＣアドレスの設定の柔軟性が低下してしまうという問題が生じる。また、ＱｉｎＱモデルにおけるコアスイッチは、ＩＶＩＤは異なるが、送信元ＭＡＣアドレスが同じフレームを受信する場合があり、当該コアスイッチにおいてＭＡＣ重複の問題が発生してしまう。【０００９】
本発明は、上記課題に鑑み、ＭＡＣ重複の発生を抑制可能な通信システム、フロー制御装置、フロー処理装置及び制御方法を提供することである。
【課題を解決するための手段】
【００１０】
本発明の一形態における通信システムは、異なるポートから受信した所定の仮想ネットワークに属する複数のフレームの送信元ＭＡＣアドレスが同一の場合に、ＭＡＣ重複の発生を示すＭＡＣ重複通知を送信するフロー処理装置と、前記フロー処理装置から前記ＭＡＣ重複通知を受信した場合に、前記所定の仮想ネットワークの構成を変更するフロー制御装置と、を含む。【００１１】
本発明の一形態におけるフロー制御装置は、所定の仮想ネットワークに属する複数のフレームを処理するフロー処理装置を制御可能なフロー制御装置であって、前記フロー処理装置から前記複数のフレームにおけるＭＡＣ重複の発生を示すＭＡＣ重複通知を受信した場合に、前記所定の仮想ネットワークの構成の変更を要求するＭＡＣ重複制御手段と、前記要求に応じて、前記所定の仮想ネットワークの構成を変更する仮想ネットワーク管理手段と、を含むことを特徴とする。【００１２】
本発明の一形態におけるフロー処理装置は、フロー制御装置によって制御されるフロー処理装置であって、所定の仮想ネットワークに属する複数のフレームを受信する複数のポートと、異なるポートから受信した前記複数のフレームの送信元ＭＡＣアドレスが同一の場合に、前記フロー制御装置に対して、ＭＡＣ重複の発生を示すＭＡＣ重複通知を送信するＭＡＣ重複処理手段とを含むことを特徴とする。【００１３】
本発明の一形態における制御方法は、フロー処理装置およびフロー制御装置を備えた通信システムの制御方法であって、異なるポートから受信した所定の仮想ネットワークに属する複数のフレームの送信元ＭＡＣアドレスが同一の場合に、前記フロー処理装置が、ＭＡＣ重複の発生を示すＭＡＣ重複通知を送信するステップと、前記ＭＡＣ重複通知を受信した場合に、前記フロー制御装置が、前記所定の仮想ネットワークの構成を変更するステップとを含む。
【発明の効果】
【００１４】
本発明のフロー処理装置、通信システム及び通信方法は、ＭＡＣ重複の発生を抑制することが可能である。
【図面の簡単な説明】
【００１５】
【図１】第１の実施形態の通信システムの構成例である。
【図２】第１の実施形態のフロー処理装置の構成例である。
【図３】第１の実施形態におけるフロー制御装置の構成例である。
【図４】第１の実施形態におけるフロー処理装置の動作例を示すフローチャートである。
【図５】第１の実施形態におけるフロー制御装置の動作例を示すフローチャートである。
【図６】第２の実施形態の通信システムの構成例である。
【図７】第２の実施形態の通信システムの他の構成例である。
【図８】第２の実施形態のフロー処理装置の構成例である。
【図９】各テーブルに格納されるエントリの構成例を示す図である。
【図１０】第２の実施形態におけるフロー処理装置の動作例を示すフローチャートである。
【図１１】第２の実施形態のフロー処理装置の他の構成例である。
【図１２】第２の実施形態のフロー処理装置の他の構成例である。
【図１３】第２の実施形態のフロー処理装置の他の構成例である。
【図１４】第２の実施形態におけるフロー制御装置の動作例を示すフローチャートである。
【図１５】第２の実施形態のフロー処理装置の他の構成例である。
【図１６】第２の実施形態のフロー処理装置の他の構成例である。
【図１７】第２の実施形態のフロー処理装置の他の構成例である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態及び実施例について、図面を参照して説明する。各実施形態は、例示であり、本発明は各実施形態に限定されるものではない。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
【００１７】
＜第１の実施形態＞
図１は、本発明の第１の実施形態における通信システムの構成例を示す図である。
【００１８】
図１に示すように、第１の実施形態における通信システムは、フロー制御装置１００と、端末３００と、フロー処理装置４００とを含む。フロー処理装置４００は、物理ネットワーク５００に含まれる。
【００１９】
フロー制御装置１００は、例えば、集中管理型のアーキテクチャにおいて、パケット処理を実行するノードを管理可能である。
【００２０】
集中管理型のアーキテクチャは、例えば、ＯｐｅｎＦｌｏｗネットワークである。ＯｐｅｎＦｌｏｗネットワークでは、従来のスイッチの機構が、経路の決定処理を外部からプログラミングすることで変更可能としたモジュールであるＯＦＣ（ＯＦＣ：ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）と、パケット転送処理のみを行うモジュールであるＯＦＳ（ＯＦＳ：ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）とに分離されている。
【００２１】
ＯｐｅｎＦｌｏｗネットワークにおけるＯＦＳとは、ＯｐｅｎＦｌｏｗネットワークを形成し、ＯＦＣの制御下にあるエッジスイッチ及びコアスイッチのことである。ＯｐｅｎＦｌｏｗネットワークでは、ＯＦＣが、ＯＦＳのフローテーブルを操作することによりＯＦＳの挙動を制御する。
【００２２】
フローテーブルとは、所定の条件（ルール）に適合（マッチ）するパケット（通信データ）に対して行うべき所定の動作（アクション）を定義したフローエントリ（Ｆｌｏｗ  ｅｎｔｒｙ）が登録されたテーブルである。
【００２３】
各ＯＦＳは、フローテーブルを少なくとも１つ保持している。ＯＦＣは、配下の各ＯＦＳのフローテーブルと同じ内容のフローテーブルを全て保持している。すなわち、ＯＦＣは、各ＯＦＳのフローテーブルのマスターテーブルを保持している。なお、「フローテーブルを保持している」とは、そのフローテーブルを管理していることを意味する。そのフローテーブルをネットワーク経由等で管理可能であれば、実際には、そのフローテーブルが自身の内部に存在していなくても良い。例えば、ＯＦＣとＯＦＳが、ネットワーク上にある同一のフローテーブルを共有することも考えられる。
【００２４】
フローエントリのルールは、パケットの各プロトコル階層のヘッダ領域に含まれる送信先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、送信先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローエントリのルールとして使用可能である。また、フローエントリのルールとして、フローを示すパケットのヘッダ領域の値の一部（又は全部）を、正規表現やワイルドカード「＊」等で表現したものを設定することもできる。
【００２５】
ＯＦＳは、ルールの欄に記述された内容にマッチするパケットを、アクションの欄に記述された内容に従って処理する。ＯＦＣは、このようなフローエントリをＯＦＳに登録することで、マッチするパケットに対する処理を制御できるのである。
【００２６】
ＯＦＳは、パケットが到着した時、当該パケットのヘッダ情報（送信元情報や送信先情報等）を読み取り、自身のフローテーブルの中から、マッチするルールを持つフローエントリ（以下、マッチするフローエントリと呼ぶ）を検索する。検索の結果、マッチするフローエントリが見つかった場合、ＯＦＳは、そのフローエントリのアクションに記載されている通りにパケットを処理する。なお、複数のフローエントリが見つかった場合、見つかったフローエントリのうち、最も優先度が高いフローエントリに従い、パケットを処理する。また、検索の結果、マッチするフローエントリが見つからなかった場合、ＯＦＳは、当該パケットを「ファーストパケット」と判断し、当該パケットのコピー（複製）をＯＦＣに転送することで、当該パケットをどのように処理すべきかについてＯＦＣに問い合わせる。
【００２７】
ＯＦＣは、ＯＦＳから問い合わせを受けた場合、経路計算を行い、問い合わせを受けたパケットを送信先まで転送するための最適な経路を導出する。また、ＯＦＣは、ＯＦＳのフローテーブルに、導出した経路を構成するためのフローエントリを新規に追加登録する。このとき、ＯＦＣは、自身のフローテーブルにも同じフローエントリを新規に追加登録する。
【００２８】
端末３００は、フロー処理装置４００を介して通信を行う装置である。端末３００は、例えば、携帯電話、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、モバイルルータ、スマートデバイス（例えば、家庭の消費電力をモニタするスマートメータ、スマートテレビ、ウェアラブル端末）、Ｍ２Ｍ（Ｍａｃｈｉｎｅ  ｔｏ  Ｍａｃｈｉｎｅ）デバイス等である。Ｍ２Ｍデバイスは、例えば、上記のデバイスに加え、産業機器、車、ヘルスケア機器、家電等を含む。
【００２９】
フロー処理装置４００は、例えば、ＱｉｎＱを用いたネットワーク（ＱｉｎＱモデル）に含まれるコアノードである。なお、フロー処理装置４００は、受信したフレームを、ＭＡＣ学習に基づいて転送する。
【００３０】
ＱｉｎＱモデルでは、フロー制御装置１００が、ユーザや上位制御装置により設定された仮想ネットワーク構成に基づき、ＯｐｅｎＦｌｏｗなどの制御プロトコルを使用して、フロー処理装置４００を遠隔制御する。ＱｉｎＱモデルは、仮想ネットワーク配下に仮想ブリッジを配置する単純な構成であり、フロー制御装置が管理する仮想ネットワークＩＤと仮想ブリッジＩＤを、それぞれフレームのＯＶＩＤとＩＶＩＤに対応づけることで、仮想ネットワーク単位の仮想ブリッジ単位で、ＭＡＣフォワーディングの転送制御を実現している。
【００３１】
しかしながら、フロー処理装置４００の制御は、ハードウェアチップで制御可能なＯｕｔｅｒＶＬＡＮ単位のＭＡＣフォワーディングで実行される。そのため、１つのフロー処理装置４００に、送信元ＭＡＣアドレスとＯＶＩＤとは同じだが、異なるＩＶＩＤである異なるフレームが、異なるポートから入力（受信）した場合、当該異なるフレームが入力する都度、ＭＡＣ移動（ＭＡＣ重複）が発生してしまう。すなわち、特定の仮想ネットワークに含まれる複数の仮想ブリッジに対して、送信元ＭＡＣアドレスとＯＶＩＤとは同じだが、異なるＩＶＩＤである異なるフレームが入力した場合には、当該異なるＩＶＩＤ間においてフレームが入力される度に、ＭＡＣ移動（ＭＡＣ重複）が発生してしまう。この場合、当該送信元ＭＡＣアドレスを宛先とするフレームが、正しい送信先だけでなく、誤った送信先にも転送されてしまうという問題が生じる。
【００３２】
そこで、第１の実施形態では、フロー制御装置１００において、ＭＡＣ重複となったフレームの各々を互いに異なる仮想ネットワークに属するように制御することで、当該ＭＡＣ重複の発生を防止する。
【００３３】
図２は、フロー処理装置４００の構成例を示す図である。フロー処理装置４００は、例えば、フロー処理部４０１と、ポート４１０と、ＭＡＣアドレステーブル４２０と、ＭＡＣ重複テーブル４９０と、アクセスリストテーブル４５０とを備える。フロー処理部４０１とＭＡＣ重複テーブル４９０は、ソフトウェア上に構成される。ポート４１０と、ＭＡＣアドレステーブルと、アクセスリストテーブル４５０とは、ハードウェアとして構成される。なお、フロー処理装置４００において、ソフトウェア上に構成されるフロー処理部４０１やＭＡＣ重複テーブル４９０は、ハードウェアにおいて実装されていてもよい。
【００３４】
ポート４１０は、フレーム６００を送受信するインターフェースである。
【００３５】
ＭＡＣアドレステーブル４２０は、ＭＡＣエントリを含む。ＭＡＣエントリ４２１は、キーが“ＯＶＩＤ及び宛先ＭＡＣアドレス”であり、アクションが“出力ポート”指定である。すなわち、ＭＡＣエントリに指定された“ＯＶＩＤ及び宛先ＭＡＣアドレス”を含むフレーム６００が入力した場合、出力ポートが決定できる。
【００３６】
ここで、フロー処理装置４００Ｄは、フロー処理装置４００Ｂから、“ＯＶＩＤ：Ｎ１、ＩＶＩＤ：Ｂ１、送信元ＭＡＣアドレス：Ｍ１”のフレーム６００Ｂを受信する。この場合、フロー処理装置４００のＭＡＣアドレステーブル４２０は、フレーム６００Ｂを受信したことに応じて、“送信先ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１のフレームを、ポート４１０Ｂに転送する”旨の転送ルールを学習する（ＭＡＣ学習）。
【００３７】
フロー処理装置４００Ｄは、フレーム６００Ｂを受信した後に、フロー処理装置４００Ｃから、“ＯＶＩＤ：Ｎ１、ＩＶＩＤ：Ｂ２、送信元ＭＡＣアドレス：Ｍ１”のフレーム６００Ｃを受信する。この場合、フロー処理装置４００のＭＡＣアドレステーブル４２０は、フレーム６００Ｃを受信したことに応じて、“送信先ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１のフレームを、ポート４１０Ｂに転送する”旨の転送ルールを、“送信先ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１のフレームを、ポート４１０Ｃに転送する”旨の転送ルールに更新する（ＭＡＣ移動）。
【００３８】
続いて、フロー処理装置４００Ｄは、フロー処理装置４００Ａから、“ＯＶＩＤ：Ｎ１、ＩＶＩＤ：Ｂ１、送信元ＭＡＣアドレス：Ｍ１、送信先ＭＡＣアドレス：Ｍ１”のフレーム６００Ａを受信する。この場合フロー処理装置４００Ｄは、更新した“送信先ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１のフレームを、ポート４１０Ｃに転送する”旨の転送ルールに従って、当該フレーム６００Ａを転送する。ここで、フレーム６００Ａは送信先ＭＡＣアドレスが“Ｍ１”であるところ、本来の転送先は“ポート４１０Ｂ”である。しかしながら、フレーム６００Ｃに基づいてＭＡＣアドレステーブル４２０が更新された結果、当該フレーム６００Ａは本来の転送先（“ポート４１０Ｂ”）とは異なる“ポート４１０Ｃ”に転送されてしまうという問題が生じる。また、フレーム６００Ｂとフレーム６００Ｃとを受信する毎にＭＡＣテーブル４２０が書き換わる（ＭＡＣ移動する）ため、フレーム６００Ａが、ある時は“ポート４１０Ｂ”に転送され、別の時は“ポート４１０Ｃ”に転送されてしまうという問題も生じる。
【００３９】
そこで、第１の実施形態において、フロー処理装置４００は、ＭＡＣ重複の発生を検出し、当該ＭＡＣ重複の発生をフロー制御装置１００に通知する。ＭＡＣ重複の発生の通知を受けたフロー制御装置１００は、ＭＡＣ重複となったフレームの各々が互いに異なる仮想ネットワークに属するように、仮想ネットワークの構成を変更する。ＭＡＣ重複となったフレームの各々が互いに異なる仮想ネットワークに属するようになると、当該フレームの各々に格納されるＯＶＩＤは、互いに異なるものとなる。そのため、第１の実施形態では、ＭＡＣ重複が防止される。
【００４０】
フロー処理装置４００のフロー処理部４０１は、異なる入力ポートの各々から、送信元ＭＡＣアドレスとＯＶＩＤとが重複するフレーム（例えば、フレーム６００Ｂとフレーム６００Ｃ）を受信したことに応じて、ＭＡＣ重複テーブル４９０に、送信元ＭＡＣアドレスと、ＯＶＩＤと、ＩＶＩＤとを用いた転送ルールを登録する。例えば、フロー処理装置４００Ｄは、フレーム６００Ｂに続いてフレーム６００Ｃを受信した場合、ＭＡＣ重複テーブル４９０において、フレーム６００Ｃに基づいて、送信先“送信先ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１で、ＩＶＩＤがＢ２のフレームを、ポート４１０Ｃに転送する”旨の重複エントリを学習する。
【００４１】
フロー処理装置４００のフロー処理部４０１は、ＭＡＣ重複の発生を検知したことに応じて、フロー制御装置１００に対して、“ＭＡＣ重複が発生したこと”を示す所定の通知を行う。また、フロー処理装置４００のフロー処理部４０１は、ＭＡＣアドレステーブル４９０に重複エントリを登録したことに応じて、フロー制御装置１００に対して、“ＭＡＣ重複が発生したこと”を示す所定の通知を行う。所定の通知は、ＭＡＣ重複が発生したフレームの各々に関する情報を含む。ＭＡＣ重複が発生したフレームの各々に関する情報は、例えば、ＭＡＣ重複が発生したフレームの各々に格納されているＯＶＩＤ、および、ＩＶＩＤを含む。ＭＡＣ重複が発生したフレームの各々に関する情報は、例えば、ＭＡＣ重複テーブル４９０に登録された重複エントリであってもよい。ＭＡＣ重複が発生したフレームの各々に関する情報は、例えば、ＭＡＣ重複が発生したフレームそのものであってもよい。なお、“ＭＡＣ重複が発生したこと”を示す信号に限られず、例えば、“重複エントリが登録されたこと”を示す信号などであってもよい。
【００４２】
図３は、第１の実施形態におけるフロー制御装置１００の構成例を示す図である。図３に示すように、フロー制御装置１００は、メッセージ送受信部１１０と、ＭＡＣ重複制御部１２０と、仮想ネットワーク管理部１３０と、ＯＦＳ制御部１４０と、仮想ネットワーク７００（例えば、メモリやデータベースにおいて構成される仮想ネットワーク７００）を含む。
【００４３】
メッセージ送受信部１１０は、フロー処理装置４００との間で通信を行う機能を含む。
メッセージ送受信部１１０は、例えば、通信を行うためのインターフェースである。
【００４４】
ＭＡＣ重複制御部１２０は、フロー処理装置４００から、“ＭＡＣ重複が発生したこと”を示す所定の通知を受けたことに応じて、仮想ネットワーク管理部１３０に対して、ＭＡＣ重複している仮想ネットワークの分離を指示する。ＭＡＣ重複制御部１２０は、フロー処理装置４００から受信した通知された情報に含まれるＯＶＩＤ、および、ＩＶＩＤに基づいて、ＭＡＣ重複している仮想ネットワークの分離を指示する。
【００４５】
仮想ネットワーク管理部１３０は、ＭＡＣ重複制御部１２０からの指示に応じて、ＭＡＣ重複している仮想ネットワークの分離を実行する。仮想ネットワーク管理部１３０は、例えば、ＭＡＣ重複制御部１２０からの指示に応じて、ＭＡＣ重複している仮想ブリッジを、現在の仮想ネットワークから、他の仮想ネットワークに移動させる。
【００４６】
ＯＦＳ制御部１４０は、仮想ネットワークが分離されたことに基づいて、フロー処理装置４００に対して、フロー変更のメッセージを通知する。
【００４７】
図４は、第１の実施形態におけるフロー処理装置４００の動作例を示すフローチャートである。
【００４８】
フロー処理装置４００のポート４１０は、フレームの送受信を行う（Ｓ１−１）。
【００４９】
フロー処理装置４００のフロー処理部４０１は、ＭＡＣ重複の発生の有無を検知する（Ｓ１−２）。フロー処理部４０１は、例えば、異なる入力ポートの各々から、送信元ＭＡＣアドレスとＯＶＩＤとが重複するフレーム（例えば、フレーム６００Ｂとフレーム６００Ｃ）を受信したことに応じて、ＭＡＣ重複が発生したと検知する。
【００５０】
フロー処理部４０１は、ＭＡＣ重複の発生を検知した場合（Ｓ１−２のＹＥＳ）に、ＭＡＣ重複情報（ＭＡＣ重複エントリ）をＭＡＣ重複テーブル４９０に登録する（Ｓ１−３）。フロー処理部４０１は、例えば、フレーム６００Ｂに続いてフレーム６００Ｃを受信した場合、ＭＡＣ重複テーブル４９０において、フレーム６００Ｃに基づいて、送信先“送信先ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１で、ＩＶＩＤがＢ２のフレームを、ポート４１０Ｃに転送する”旨の重複エントリを学習する。
【００５１】
フロー処理部４０１は、ＭＡＣ重複の発生を検知した場合に、フロー制御装置１００に対して、“ＭＡＣ重複が発生したこと”を示す所定の通知を行う（Ｓ１−４）。
【００５２】
図５は、第１の実施形態におけるフロー制御装置１００の動作例を示すフローチャートである。
【００５３】
フロー制御装置１００のＭＡＣ重複制御部１２０は、メッセージ送受信部１１０を介して、フロー処理装置４００から“ＭＡＣ重複が発生したこと”を示す所定の通知を受信する（Ｓ２−１）。
【００５４】
ＭＡＣ重複制御部１２０は、“ＭＡＣ重複が発生したこと”を示す所定の通知を受けたことに応じて、仮想ネットワーク管理部１３０に対して、ＭＡＣ重複している仮想ネットワークの分離を指示する（Ｓ２−２）。ＭＡＣ重複制御部１２０は、フロー処理装置４００から受信した通知された情報に含まれるＯＶＩＤ、および、ＩＶＩＤに基づいて、ＭＡＣ重複している仮想ネットワークの分離を指示する。仮想ネットワーク管理部１３０は、ＭＡＣ重複制御部１２０からの指示に応じて、ＭＡＣ重複している仮想ネットワークの分離を実行する。仮想ネットワーク管理部１３０は、例えば、ＭＡＣ重複制御部１２０からの指示に応じて、ＭＡＣ重複している仮想ブリッジを、現在の仮想ネットワークから、他の仮想ネットワークに移動させる。
【００５５】
ＯＦＳ制御部１４０は、仮想ネットワークが分離されたことに基づいて、フロー処理装置４００に対して、フロー変更のメッセージを通知する（Ｓ２−３）。
【００５６】
上記のとおり、第１の実施形態において、フロー処理装置４００は、ＭＡＣ重複の発生を検出し、当該ＭＡＣ重複の発生をフロー制御装置１００に通知する。そして、ＭＡＣ重複の発生の通知を受けたフロー制御装置１００は、ＭＡＣ重複となったフレームの各々が互いに異なる仮想ネットワークに属するように、仮想ネットワークの構成を変更する。ＭＡＣ重複となったフレームの各々が互いに異なる仮想ネットワークに属するようになると、当該フレームの各々に格納されるＯＶＩＤは、互いに異なるものとなる。そのため、第１の実施形態では、ＭＡＣ重複が防止される。
【００５７】
＜第２の実施形態＞
図６及び図７は、本発明の第２の実施形態における通信システムの構成例を示す図である。なお、図６は、フロー制御装置１００が仮想ネットワークを分離する前の構成例であり、図７は、フロー制御装置１００が仮想ネットワークを分離した後の構成例である。
【００５８】
なお、第２の実施形態の技術は、第１の実施形態、及び、後述の実施形態のいずれにも適用可能である。
【００５９】
図６及び図７において、通信システムは、例えば、フロー制御装置１００と、端末３００と、フロー処理装置４００とを含む。
【００６０】
なお、端末３００は、図１に示す第１の実施形態における通信システムの端末３００と同様の構成であるため、詳細な説明は省略される。
【００６１】
物理ネットワーク５００は、例えば、フロー処理装置４００を含み、仮想ネットワーク７００と、仮想ブリッジ７１０Ａ及び７１０Ｂとを用いた仮想ネットワークにおけるフレームの転送を実現するための物理環境を提供する。
【００６２】
図８は、第２の実施形態における、フロー処理装置４００の構成例を示す図である。フロー処理装置４００は、ポート４１０、フレーム変換用テーブル４３０、ＶＬＡＮテーブル４４０、ＭＡＣアドレステーブル４２０、アクセスリストテーブル（フレーム転送用）４５０Ａを含む。また、フロー処理装置４００は、フレーム処理部４６０、ＭＡＣ重複処理部４７０、ハードウェア処理部４８０、メッセージ送受信部４８１、ＭＡＣ重複テーブル４９０を含む。
【００６３】
フロー処理装置４００において、ポート４１０、フレーム変換用テーブル４３０、ＶＬＡＮテーブル４４０、ＭＡＣアドレステーブル４２０、アクセスリストテーブル（フレーム転送用）４５０Ａは、ハードウェアに構成される。フレーム処理部４６０、ＭＡＣ重複処理部４７０、ハードウェア処理部４８０、メッセージ送受信部４８１、ＭＡＣ重複テーブル４９０は、ソフトウェアに構成される。
【００６４】
ここで、フロー処理装置４００のフレーム処理部４６０は、フレーム６００Ｂとフレーム６００Ｃとが、ハードウェアのＭＡＣアドレステーブル４２０を通過した際に、ＭＡＣ移動を検出する。ＭＡＣ移動は、ＭＡＣアドレステーブル４２０において、ＯＶＩＤと送信先ＭＡＣアドレスが同一の転送ルールにおいて、転送ルールが書き換えられる処理である。例えば、ＭＡＣアドレステーブル４２０は、フレーム６００Ｂが通過した際に、“送信先ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１のフレームを、ポート４１０Ｂに転送する”旨の転送ルールを学習する。ＭＡＣアドレステーブル４２０は、フレーム６００Ｂの通過後フレーム６００Ｃが通過した際に、“送信先ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１のフレームを、ポート４１０Ｂに転送する”旨の転送ルールを、“送信先ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１のフレームを、ポート４１０Ｃに転送する”旨の転送ルールに書き換える。
【００６５】
上記のとおり、フレーム６００Ｂと６００Ｃとは、ＩＶＩＤは異なるが、ＯＶＩＤと送信元ＭＡＣアドレスが同じであるため、フロー処理装置４００のＭＡＣアドレステーブル４２０で学習するキー情報（ＯＶＩＤとＭＡＣアドレス）が同じとなる。そのため、フレーム６００Ｂ、６００Ｃが入力する度に、ＭＡＣアドレステーブル４２０のＭＡＣエントリ（転送ルール）は、ポート４１０Ｂと４１０Ｃとの間でＭＡＣ移動を繰り返す。そのため、フロー処理装置４００は、ＭＡＣアドレス：Ｍ１を送信先とするフレーム６００Ｂを受信した場合、当該フレーム６００Ｃを、ＭＡＣアドレステーブルのＭＡＣエントリ（転送ルール）のポートに対して送信するため、正しい送信先であるポート４１０Ｂだけでなく、誤った送信先であるポート４１０Ｃにも送信する。
【００６６】
そこで、第２の実施形態において、フロー処理装置４００は、ＭＡＣ重複の発生を検出し、当該ＭＡＣ重複の発生をフロー制御装置１００に通知する。ＭＡＣ重複の発生の通知を受けたフロー制御装置１００は、ＭＡＣ重複が発生した仮想ブリッジの各々を、互いに異なる仮想ネットワークにそれぞれ移動させる。その結果、ＭＡＣ重複となったフレームの各々が互いに異なる仮想ネットワークに属するようになるため、当該フレームの各々に格納されるＯＶＩＤは、互いに異なるものとなる。そのため、第２の実施形態では、ＭＡＣ重複が防止される。
【００６７】
ポート４１０は、フレーム６００を送受信するインターフェースである。なお、受信したフレーム６００は、ポート４１０、フレーム変換用テーブル４３０、ＶＬＡＮテーブル４４０、ＭＡＣアドレステーブル４２０、アクセスリストテーブル（フレーム転送用）４５０Ａの順に、パイプライン処理される。
【００６８】
フレーム変換用テーブル４３０は、フレーム６００のＶＬＡＮ変換を実施するテーブルである。なお、フレーム変換用テーブル４３０は、フレーム６００を更新するための機能を備え、フレーム６００に対するその他のアクションも実行することができる。第２の実施形態において、フレーム変換用テーブル４３０は、例えば、ＭＡＣ学習のキャンセルのアクションを実行するために用いられる。
【００６９】
ＶＬＡＮテーブル４４０は、ＶＬＡＮエントリ４４１を含む。ＶＬＡＮエントリ４４１は、キーが“ＯＶＩＤ”であり、アクションが“フレーム中継（例えば、後段のＭＡＣアドレステーブル４２０への処理へ進ませるためのアクション）”である。ＶＬＡＮテーブル４４０において、入力されたフレーム６００に対応するエントリが存在しない場合には、当該フレーム６００は廃棄される。ＶＬＡＮテーブル４４０は、フロー制御装置１００の指示、または、フロー処理装置４００のコンフィグにより、ＶＬＡＮエントリ４４１の登録／更新／削除を実行する。
【００７０】
ＭＡＣアドレステーブル４２０は、ＭＡＣエントリを含む。ＭＡＣエントリ４２１は、キーが“ＯＶＩＤ及び送信先ＭＡＣアドレス”であり、アクションが“出力ポート”指定である。すなわち、ＭＡＣエントリに指定された“ＯＶＩＤ及び送信先ＭＡＣアドレス”を含むフレーム６００が入力した場合、出力ポートが決定できる。ＭＡＣエントリ４２１は、ハードウェアによって、自動的に登録／更新／削除される。ＭＡＣアドレステーブル４２０に入力されたフレーム６００に含まれる“ＯＶＩＤ及び送信先ＭＡＣアドレス”をキーとするＭＡＣエントリ４２１が存在しない場合、ＭＡＣ学習が実行される（すなわち、新たなＭＡＣエントリが登録される）。ＭＡＣエントリ４２１が存在するが、ＭＡＣエントリ４２１に指定された出力ポート４１０と、フレーム６００の入力ポート４１０とが異なる場合、ＭＡＣエントリ４２１に指定された出力ポートの情報（ポートの識別子やポート番号など）を、フレームの入力ポートの情報（ポートの識別子やポート番号など）に更新する（ＭＡＣ移動）。
【００７１】
なお、ＭＡＣアドレステーブル４２０において、所定の時間である“エージング設定時間”を超える間、ＭＡＣエントリのキーに一致するフレーム６００を受信しなかった場合、当該ＭＡＣエントリは削除される。
【００７２】
アクセスリストテーブル（フレーム転送用）４５０Ａは、フレーム転送用のテーブルである。アクセスリストテーブル（フレーム転送用）４５０Ａに含まれるエントリにヒット（ＨＩＴ）するフレーム６００が入力した場合、当該ヒットしたエントリのアクションが当該フレーム６００に対して適用される。
【００７３】
また、アクセスリストテーブル（フレーム転送用）４５０Ａは、論理テーブルにおいて、フレーム６００に適用される際の優先度を示す“エントリ優先度”を有する。例えば、アクセスリストテーブル（フレーム転送用）４５０Ａに含まれるエントリの各々は優先度を含み、入力されたフレーム６００にヒットするエントリが複数ある場合には、当該優先度の高いエントリで指定されたアクションが当該フレーム６００に優先して適用される。なお、第２の実施形態の図面においては、アクセスリストテーブル（フレーム転送用）４５０Ａのより上位（上位置）に記載されたエントリが、高優先のエントリとする。
【００７４】
アクセスリストテーブル（フレーム転送用）４５０Ａに含まれるＵＣ出力用エントリ４５１Ａは、ＭＡＣアドレステーブル４２０のＭＡＣエントリ４２１にヒット（ＨＩＴ）したフレーム６００だけがヒット（ＨＩＴ）するエントリであり、ＭＡＣエントリ４２１によって指定されたポート４１０からフレーム６００を出力する役割を有する。
【００７５】
フレーム６００がＵＣ出力用エントリにヒット（ＨＩＴ）しない場合（ＭＡＣ学習されていない場合）、当該フレーム６００は、ＵＣ出力用エントリ４５１Ａよりも優先度が低い“Ｆｌｏｏｄｉｎｇ出力用エントリにヒット（ＨＩＴ）し、当該フレーム６００はＦｌｏｏｄｉｎｇ出力される。ＵＣ出力用エントリ及びＦｌｏｏｄｉｎｇ出力用エントリは、フロー制御装置１００の指示により、アクセスリストテーブル２５０に登録／更新／削除される。
【００７６】
フレーム処理部４６０は、ＭＡＣアドレステーブル４２０におけるＭＡＣ移動が発生した場合に、当該ＭＡＣ移動の要因となったフレーム６００又はそのコピーを受信する。フレーム処理部４６０は、ＭＡＣ重複処理部４７０に、フレーム６００又はそのコピーを通知する。
【００７７】
ＭＡＣ重複処理部４７０は、フレーム処理部４６０から受信したフレーム６００の情報（ヘッダ情報など）に基づいて、ＭＡＣ重複テーブル４９０にエントリを登録する。例えば、ＭＡＣ重複処理部４７０は、ＭＡＣ重複テーブル４９０に、フレーム６００Ａ、及び、６００Ｂのそれぞれに対応するＭＡＣ重複エントリ４９１Ａと、４９１Ｂとを登録し、ＩＶＩＤを含めた形式のＭＡＣエントリとして管理する。
【００７８】
また、ＭＡＣ重複処理部４７０は、フレーム処理部４６０から受信したフレーム６００の情報（ヘッダ情報など）に基づいて、ハードウェアの各テーブルのエントリの登録／更新／削除を、ハードウェア処理部４８０に指示する。例えば、ＭＡＣ重複処理部４７０は、ＭＡＣ重複テーブル４９０内のＭＡＣ重複エントリ４９１Ａと、２９１Ｂとの情報に基づき、ハードウェアのフレーム変換用テーブル４３０に対して、エージング用エントリ４３１Ａと、４３１Ｂとの登録を指示する。エージング用エントリ４３１Ａ、４３１Ｂは、フレーム６００Ａ、６００Ｂが入力しなくなった際のエージングを検出する役割を持つ。
【００７９】
エージング用エントリ４３１は、キーが“ＯＶＩＤ、ＩＶＩＤ、送信元ＭＡＣアドレス、入力ポート”であり、アクションが“ＭＡＣ学習キャンセル及びＷｒｉｔｅＭｅｔａｄａｔａ”である。ＭＡＣ学習キャンセルは、当該エージング用エントリ４３１にヒット（ＨＩＴ）するフレームがＭＡＣアドレステーブル４２０に入力した場合に、ＭＡＣ学習させないという役割を持つ。ＷｒｉｔｅＭｅｔａｄａｔａは、当該エージング用エントリ４３１にヒット（ＨＩＴ）したことを、Ｆｒａｍｅ情報として保持させる役割を持つ。
【００８０】
また、ＭＡＣ重複処理部４７０は、アクセスリストテーブル（フレーム転送用）４５０Ａに対して、ＵＣ出力用エントリ４５１Ａと、４５２Ａとの登録を指示する。ＵＣ出力用エントリ４５１Ａ、４５２Ａは、重複ＭＡＣが発生したフレームを、正しいポートへ出力するための役割を持つ。例えば、アクセスリストテーブル（フレーム転送用）４５０Ａは、ＵＣ出力用エントリ４５１Ａとして、“送信元ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１で、ＩＶＩＤがＢ１のフレームを、ポート１に転送する”旨を登録する。また、アクセスリストテーブル（フレーム転送用）４５０Ａは、ＵＣ出力用エントリ４５２Ｂとして、“送信元ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１で、ＩＶＩＤがＢ２のフレームを、ポート２に転送する”旨を登録する。
【００８１】
ハードウェア処理部４８０は、ＭＡＣ重複処理部４７０の指示に従い、ハードウェアの各テーブルに、エントリを登録／更新／削除する。また、エージング用エントリ４３１のフレームの統計情報（フレーム統計）から、ＭＡＣ重複エントリのエージアウトを検出する。ハードウェア処理部４８０は、エージアウトを検出した場合、ＭＡＣ重複処理部４７０に当該エージアウトを通知する。
【００８２】
上記のとおり、ＵＣ出力用エントリ４５２と、エージング用エントリ４３１によって、フロー処理装置４００における誤転送を回避するとともに、エージングにも追随することができる。
【００８３】
また、ＭＡＣ重複処理部４７０は、ハードウェアで構成される各テーブルに対する、ＭＡＣエントリ４２１Ａの削除を指示する。ＭＡＣエントリ４２１Ａを削除することで、新規のＭＡＣ重複がさらに発生した場合であっても、ハードウェア上ですみやかにＭＡＣ学習が動作し、フレーム６００の転送処理を、ＵＣ転送に移行することが可能となる。
【００８４】
図９は、上記で説明した各テーブルに格納されるエントリの構成例を示す図である。図９に示すように、ＭＡＣ重複エントリは、キーが“ＯＶＩＤ、ＩＶＩＤ、ＭＡＣアドレス”であり、アクションが“出力ポート指定”である。また、ＭＡＣエントリは、キーが“ＯＶＩＤ、ＭＡＣアドレス”であり、アクションが“出力ポート指定”である。また、ＶＬＡＮエントリは、キーが“ＯＶＩＤ”であり、アクションが“フレーム中継”である。
また、エージング用エントリは、キーが“ＯＶＩＤ、ＩＶＩＤ、送信元ＭＡＣアドレス”であり、アクションが“ＭＡＣ学習キャンセル、ＷｒｉｔｅＭｅｔａｄａｔａ”である。
また、ＭＡＣ重複ＵＣ出力用エントリは、キーが“ＯＶＩＤ、ＩＶＩＤ、送信先ＭＡＣアドレス”であり、アクションが“ポート指定”である。
【００８５】
第２の実施形態において、フロー制御装置１００は、図３に示す第１の実施形態における通信システムのフロー制御装置１００と同様の構成である。
【００８６】
フロー制御装置１００のメッセージ送受信部１１０は、フロー処理装置４００のメッセージ送受信部４８１から、ＭＡＣ重複通知を受信する。ＭＡＣ重複通知は、“ＭＡＣ重複が発生したこと”を示す所定の通知である。ＭＡＣ重複通知は、例えば、ＭＡＣ重複が発生したフレームの各々に関する情報を含む。ＭＡＣ重複が発生したフレームの各々に関する情報は、例えば、ＭＡＣ重複テーブル４９０に登録された重複エントリである。メッセージ送受信部１１０は、受信したＭＡＣ重複通知を、ＭＡＣ重複制御部１２０に転送する。
【００８７】
ＭＡＣ重複制御部１２０は、受信したＭＡＣ重複通知から、ＭＡＣ重複が発生した仮想ネットワークのＩＤ（ＯＶＩＤ）と仮想ブリッジのＩＤ（ＩＶＩＤ）とを抽出し、抽出された仮想ブリッジを、異なる仮想ネットワークに分離するように、仮想ネットワーク管理部１３０に指示する。また、ＭＡＣ重複制御部１２０は、分離された仮想ネットワークの情報（ＯＶＩＤ、ＩＶＩＤ）から、フレームの変換処理、および、ＶＬＡＮタグに関連するフローの変更の処理に関する制御メッセージを、ＯＦＳ制御部１４０に送信する。
【００８８】
仮想ネットワーク管理部１３０は、例えば、メモリやデータベースに格納されている仮想ネットワーク７００の仮想ブリッジ７１０に基づいて、ＭＡＣ重複した仮想ブリッジの各々を、互いに異なる仮想ネットワークデータにそれぞれ移動させる（仮想ネットワークの分離）。仮想ネットワーク管理部１３０は、仮想ネットワークの分離が完了すると、分離した仮想ネットワークの情報をＭＡＣ重複制御部１２０に送信する。分離した仮想ネットワークの情報は、分離後の各々の仮想ネットワークのＩＤ（ＯＶＩＤ）と仮想ブリッジのＩＤ（ＩＶＩＤ）とを含む。
【００８９】
ＯＦＳ制御部１４０は、フロー変更のメッセージを作成して、メッセージ送受信部１１０を介して、フロー処理装置に送信する。フロー変更のメッセージは、例えば、ＯｐｅｎＦｌｏｗにおけるフローエントリである。
【００９０】
図１０は、第２の実施形態におけるフロー処理装置４００の動作例を示すフローチャートである。
【００９１】
端末３００Ａと端末３００Ｂとは、フロー処理装置４００を介して、相互に通信している（Ｓ３−１）。具体的には、フロー処理装置４００は、ポート４１０Ａから、“ＯＶＩＤ：Ｎ１、ＩＶＩＤ：Ｂ１、送信元ＭＡＣアドレス：Ｍ１、送信先ＭＡＣアドレス：Ｍ１”のフレーム６００Ａを受信し、ポート４１０Ｂを介して転送する。また、フロー処理装置４００は、ポート４１０Ｂから、“ＯＶＩＤ：Ｎ１、ＩＶＩＤ：Ｂ１、送信元ＭＡＣアドレス：Ｍ１，送信先ＭＡＣアドレス：Ｍ２”のフレーム６００Ｂを受信し、ポート４１０Ａを介して転送する。
【００９２】
図１１は、端末３００Ａと端末３００Ｂとが相互に通信している場合の、フロー処理装置４００の構成例を示す図である。
【００９３】
フロー処理装置４００は、端末３００Ａから、ポート４１０Ａを介して、フレーム６００Ａを受信する。その結果、フロー処理装置４００のＭＡＣアドレステーブル４２０は、“送信先ＭＡＣアドレスがＭ２で、ＯＶＩＤがＮ１のフレームを、ポート４１０Ａに転送する”というＭＡＣエントリ４２１Ｂを学習する。一方、フロー処理装置４００は、端末３００Ｂから、ポート４１０Ｂを介して、フレーム６００Ｂを受信する。その結果、フロー処理装置４００のＭＡＣアドレステーブル４２０は、“送信先ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１のフレームを、ポート４１０Ｂに転送する”というＭＡＣエントリ４２１Ａを学習する。その結果、図８に示すように、ＭＡＣアドレステーブル４２０には、ＭＡＣエントリ４２１Ａと、ＭＡＣエントリ４２１Ｂとが学習される。なお、図８のフロー処理装置４００は、予めＭＡＣエントリ４２１ＣとＭＡＣエントリ４２１Ｄとが学習されている。
【００９４】
フロー処理装置４００が、フレーム６００Ｂを受信した場合には、ＭＡＣアドレステーブル４２０に登録されているＭＡＣエントリ４２１Ｂに従って、当該フレーム６００Ｂの転送処理が実行される。また、フロー処理装置４００が、フレーム６００Ａを受信した場合には、ＭＡＣアドレステーブル４２０に登録されているＭＡＣエントリ４２１Ａに従って、当該フレーム６００Ａの転送処理が実行される。
【００９５】
また、図１１に示すように、アクセスリストテーブル（フレーム転送用）４５０Ａは、ＵＣ出力用エントリ４５１Ａと、Ｆｌｏｏｄｉｎｇ出力用エントリ４５２Ａとが登録されている。図１１に示すように、ＭＡＣアドレステーブル４２０に登録されているＭＡＣエントリ４２１にヒットしたフレーム６００は、ＵＣ出力用エントリ４５１Ａに従って、ＭＡＣエントリ４２１で指定されたポート４１０から転送される。例えば、フレーム６００Ａは、ＵＣ出力用エントリ４５１Ａに従って、ＭＡＣエントリ４２１Ａで指定されたポート４１０Ａから転送される。
【００９６】
次に、フロー処理装置４００は、ポート４１０Ｃから、“ＯＶＩＤ：Ｎ１、ＩＶＩＤ：Ｂ２、送信元ＭＡＣアドレス：Ｍ１、送信先ＭＡＣアドレス：Ｍ５”のフレーム６００Ｃを受信する（Ｓ３−２）。フレーム６００Ｃは、ＶＬＡＮテーブル４４０のＶＬＡＮエントリ４４１Ａにヒット（ＨＩＴ）することにより、ＭＡＣアドレステーブル４２０の処理に進む（Ｓ３−３）。
【００９７】
フロー処理装置４００がフレーム６００Ｃを受信した場合、ＭＡＣアドレステーブル４２０のＭＡＣエントリ４２１Ｂが、“送信先ＭＡＣアドレスがＭ１で、ＯＶＩＤがＮ１のフレームを、ポート４１０Ｃに転送する”旨の内容に書き換わる（ＭＡＣ移動）。すなわち、フレーム６００Ｃが、ＭＡＣアドレステーブル４２０ですでに学習済みのＭＡＣエントリ４２１Ａの“ＯＶＩＤ：Ｎ１、送信ＭＡＣアドレスＭ１”と同一のキーであり、ポートが異なるため、当該ＭＡＣエントリ４２１のポートを、フレーム６００Ｃの入力ポート４１０Ｃに更新する（Ｓ３−４）。
【００９８】
フロー処理装置４００は、フレーム６００Ｃを、ＭＡＣアドレステーブル４２０に予め学習されている送信先ＭＡＣエントリ４２１Ｃと、アクセスリストテーブル（フレーム転送用）４５０Ａに登録されているＵＣ出力用エントリ４５１Ａに従って、転送処理を実行する（Ｓ３−５）。
【００９９】
フロー処理装置４００は、ＭＡＣアドレステーブルにおけるＭＡＣ移動（ＭＡＣ重複）が生じたことに応じて、フレーム６００Ｃを、フレーム処理部４６０に通知する。フレーム処理部４６０は、フレーム６００Ｃを、ＭＡＣ重複処理部４７０に通知する（Ｓ３−６）。
【０１００】
ＭＡＣ重複処理部４７０は、フレーム６００Ｃに含まれる情報（例えば、ヘッダ情報）に基づき、ＭＡＣ重複テーブル４９０に、ＭＡＣ重複エントリ４９１Ｂを登録する（Ｓ３−７）。ＭＡＣ重複エントリ４９１Ｂは、“ＯＶＩＤ：Ｎ１、ＩＶＩＤ：Ｂ２、送信先ＭＡＣアドレス：Ｍ１”をキーとして、“ポート４１０Ｃ”を出力ポートとするエントリである。
【０１０１】
ＭＡＣ重複処理部４７０は、ハードウェア処理部４８０に、ＭＡＣエントリ４２１Ａの削除を指示する。ＭＡＣ重複処理部４７０は、指示されたＭＡＣエントリ４２１Ａを削除する（Ｓ３−８）。
【０１０２】
ＭＡＣエントリ４２１Ａを削除することにより、次に受信したフレームが、フレーム６００Ｃであっても、フレーム６００Ｂであっても、すみやかにＭＡＣ学習が動作し、ＵＣ転送に移行することが可能である。
【０１０３】
また、フロー処理装置４００は、ＭＡＣ重複ではなく、ＭＡＣ移動の際には、ソフトウェアにフレームが通知されないため、一定時間経過した場合には、ＭＡＣ重複テーブル４９０からＭＡＣ重複エントリ４９１Ｂを削除する処理を行う。
【０１０４】
図１２は、図１１の状態において、フロー処理装置４００のポート４１０Ｃを介して、フレーム６００Ｃを受信した場合の、フロー処理装置４００の構成例を示す図である。
【０１０５】
フロー処理装置４００のＭＡＣアドレステーブル４２０において、フレーム６００Ｃが入力されたことによりＭＡＣ移動が発生するため、フレーム処理部４６０は、当該フレーム６００Ｃの通知を受ける。
【０１０６】
ＭＡＣ重複処理部４７０は、フレーム処理部４６０からフレーム６００Ｃを通知されたことにより、ＭＡＣ重複テーブル４９０にＭＡＣ重複エントリ４９１Ｂを登録する。
【０１０７】
ＭＡＣ重複エントリ４９１Ｂは、キーが“ＯＶＩＤ，ＩＶＩＤ、送信先ＭＡＣアドレス”であり、アクションが“出力ポート”である。すなわち、ＭＡＣ重複エントリ４９１は、ハードウェアで表現できないＩＶＩＤを含めたＭＡＣエントリを、ソフトウェアで管理する。
【０１０８】
ＭＡＣ重複エントリ４９１Ｂのキーは、“ＯＶＩＤ：Ｎ１、ＩＶＩＤ：Ｂ２、送信先ＭＡＣアドレス：Ｍ１”であり、アクションは“入力ポート４１０Ｃ“である。ＭＡＣ重複エントリ４９１Ｂは、フレーム６００Ｃに基づいて、設定される。
【０１０９】
ＭＡＣエントリ４２１Ａは、ＭＡＣ重複処理部４７０の指示により、ハードウェア処理部４８０を介して、削除される。ＭＡＣエントリ４２１Ａの削除により、ＭＡＣアドレス：Ｍ１を送信先とするフレーム６００Ａは、アクセスリストテーブル（フレーム転送用）４５０ＡのＦｌｏｏｄｉｎｇ出力用エントリ４５２Ａにヒット（ＨＩＴ）し、Ｆｌｏｏｄｉｎｇ出力される。
【０１１０】
ＭＡＣ重複処理部４７０は、フロー処理装置４００に対して、ＭＡＣ重複通知を送信する（Ｓ３−９）。ＭＡＣ重複通知は、例えば、ＭＡＣ重複エントリ４９１Ｂを含む。
【０１１１】
図１３は、図１２の状態において、ＭＡＣ重複処理部４７０が、メッセージ送受信部４８１を介して、フロー処理装置４００に対してＭＡＣ重複通知を送信する場合の、フロー処理装置４００の構成例を示す図である。
【０１１２】
ＭＡＣ重複処理部４７０は、ＭＡＣ重複テーブルにＭＡＣ重複エントリ４９１Ｂが登録されたことに応じて、メッセージ送受信部４８１を介して、ＭＡＣ重複通知の送信を指示する。
【０１１３】
図１４は、第２の実施形態におけるフロー制御装置１００の動作例を示すフローチャートである。
【０１１４】
フロー制御装置１００のメッセージ送受信部１１０は、フロー処理装置４００のメッセージ送受信部４８１から、ＭＡＣ重複通知を受信する（Ｓ４−１）。ＭＡＣ重複通知は、例えば、ＭＡＣ重複エントリ４９１Ｂを含む。
【０１１５】
ＭＡＣ重複制御部１２０は、ＭＡＣ重複通知の受信に応じて、当該受信したＭＡＣ重複通知から、ＭＡＣ重複が発生した仮想ネットワークのＩＤ（ＯＶＩＤ）と仮想ブリッジのＩＤ（ＩＶＩＤ）とを抽出し、抽出された仮想ブリッジを、異なる仮想ネットワークに分離するように、仮想ネットワーク管理部１３０に指示する（Ｓ４−２）。
【０１１６】
図１５は、ＭＡＣ重複通知をフロー処理装置４００から受信した場合の、フロー制御装置１００の構成例を示す図である。図１５に示すように、フロー制御装置１００のメッセージ送受信部１１０は、ＭＡＣ重複通知を受信すると、ＭＡＣ重複制御部１２０に転送する。ＭＡＣ重複制御部１２０は、受信したＭＡＣ重複通知に含まれるＭＡＣ重複が発生したフレームの各々に関する情報に基づいて、ＭＡＣ重複が発生している仮想ネットワークのＩＤ（ＯＶＩＤ）と、仮想ブリッジのＩＤ（ＩＶＩＤ）とを取得し、仮想ネットワーク管理部１３０に対して仮想ネットワークの分離を指示する。
【０１１７】
仮想ネットワーク管理部１３０は、ＭＡＣ重複制御部１２０からの指示に応じて、仮想ネットワーク７００の仮想ブリッジ７１０に基づき、ＭＡＣ重複が発生した仮想ブリッジの各々を、互いに異なる仮想ネットワークデータにそれぞれ移動させる（Ｓ４−３）。
【０１１８】
図１６は、図１５においてネットワーク分離の指示を受けた仮想ネットワーク管理部１３０が、仮想ネットワークを分離した後の、フロー制御装置１００の構成例を示す図である。図１６に示すように、仮想ネットワーク管理部１３０は、ＭＡＣ重複している仮想ブリッジ（ＩＤ：Ｂ１，Ｂ２）の各々を、互いに異なる仮想ネットワーク（ＩＤ：Ｎ１）と仮想ネットワーク（ＩＤ：Ｎ２）に分離する。仮想ネットワーク管理部１３０は、例えば、仮想ブリッジ７１０から仮想ブリッジ（ＩＤ：Ｂ２）を分離して、仮想ネットワーク７２０に移動させる。
【０１１９】
仮想ネットワーク管理部１３０は、仮想ネットワークの分離が完了すると、分離した仮想ネットワークの情報をＭＡＣ重複制御部１２０に送信する。分離した仮想ネットワークの情報は、分離後の各々の仮想ネットワークのＩＤ（ＯＶＩＤ）と仮想ブリッジのＩＤ（ＩＶＩＤ）とを含む。
【０１２０】
ＭＡＣ重複処理部１２０は、分離された仮想ネットワークの情報（ＯＶＩＤ、ＩＶＩＤ）から、フレームの変換処理、および、ＶＬＡＮタグに関連するフローの変更の処理に関する制御メッセージを、ＯＦＳ制御部１４０に送信する（Ｓ４−４）。
【０１２１】
ＯＦＳ制御部１４０は、仮想ネットワークが分離されたことに基づいて、フロー処理装置４００に対して、フロー変更のメッセージを通知する（Ｓ４−５）。
【０１２２】
図１７は、ＯＦＳ制御部１４０が、仮想ネットワークの変更に伴うフロー変更に関するメッセージを、フロー処理装置４００に送信する場合の、フロー制御装置１００の構成例を示す図である。ＯＦＳ制御部１４０は、仮想ネットワークの分離に伴って変更されたフレームに関連するフローについて、当該フローに対する処理規則を含むフロー処理装置４００に対して、当該処理規則の変更を指示する。ＯＦＳ制御部１４０は、変更後の処理規則を、フロー処理装置４００に通知してもよい。
【０１２３】
ＯＦＳ制御部１４０は、例えば、フロー処理装置４００Ｃに対して、端末３００Ｃから送信されるフレームのＯＶＩＤを仮想ネットワーク７００Ｂ（ＩＤ：Ｎ２）に対応付け、当該フレームのＩＶＩＤを仮想ブリッジ７１０Ｂ（ＩＤ：Ｂ２）に対応づけるための指示を通知する。
【０１２４】
ＯＦＳ制御部１４０は、フローの変更について、Ｅｇｒｅｓｓ側からフローを追加し、当該Ｅｇｒｅｓｓ側のフローの追加が完了してから、Ｉｎｇｒｅｓｓ側のフロー追加を実施する。ＯＦＳ制御部１４０は、通信の遮断を防止するため、Ｉｎｇｒｅｓｓのフロー追加の完了後、変更前のフローをＩｎｇｒｅｓｓ側、Ｅｇｒｅｓｓ側の順に削除する。
【０１２５】
図７は、フロー制御装置１００が仮想ネットワークを分離した後の通信システムの構成例である。図７に示すように、図６においてＭＡＣ重複が発生していたフレーム６００Ｃについて、当該フレーム６００ＣのＯＶＩＤ、ＩＶＩＤの対応が、それぞれ仮想ネットワーク７００Ｂ、仮想ブリッジ７１０Ｂとなっており、フロー処理装置４００ＤにおいてＭＡＣ重複の発生が防止される。
【０１２６】
上記のとおり、第２の実施形態において、フロー処理装置４００は、ＭＡＣ重複の発生を検出し、当該ＭＡＣ重複の発生をフロー制御装置１００に通知する。ＭＡＣ重複の発生の通知を受けたフロー制御装置１００は、ＭＡＣ重複が発生した仮想ブリッジの各々を、互いに異なる仮想ネットワークにそれぞれ移動させる。その結果、ＭＡＣ重複となったフレームの各々が互いに異なる仮想ネットワークに属するようになるため、当該フレームの各々に格納されるＯＶＩＤは、互いに異なるものとなる。そのため、第２の実施形態では、ＭＡＣ重複が防止される。
【０１２７】
以上、本発明の実施形態を説明したが、本発明は、上記したそれぞれの実施形態に限定されるものではない。本発明は、各実施形態の変形・置換・調整に基づいて実施できる。
また、本発明は、各実施形態を任意に組み合わせて実施することもできる。即ち、本発明は、本明細書の全ての開示内容、技術的思想に従って実現できる各種変形、修正を含む。
また、本発明は、ＳＤＮ（Ｓｏｆｔｗａｒｅ−Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋ）の技術分野にも適用可能である。
【０１２８】
この出願は、２０１６年３月３０日に出願された日本出願特願２０１６−６８８４３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１２９】
１００  フロー制御装置
３００  端末
４００  フロー処理装置
４０１  フロー処理部
４１０  ポート
４２０  ＭＡＣアドレステーブル
４２１  ＭＡＣエントリ
４３０  フレーム変換用テーブル
４３１  エージング用エントリ
４４０  ＶＬＡＮテーブル
４４１  ＶＬＡＮエントリ
４５０  アクセスリストテーブル
４５１  ＵＣ出力用エントリ
４６０  フレーム処理部
４７０  ＭＡＣ重複処理部
４８０  ハードウェア処理部
４９０  ＭＡＣ重複テーブル
４９１  ＭＡＣ重複エントリ
５００  物理ネットワーク
６００  フレーム
７００  仮想ネットワーク
７１０  仮想ブリッジ
【図１】
0006566124.tif 000002
【図２】
0006566124.tif 000003
【図３】
0006566124.tif 000004
【図４】
0006566124.tif 000005
【図５】
0006566124.tif 000006
【図６】
0006566124.tif 000007
【図７】
0006566124.tif 000008
【図８】
0006566124.tif 000009
【図９】
0006566124.tif 000010
【図１０】
0006566124.tif 000011
【図１１】
0006566124.tif 000012
【図１２】
0006566124.tif 000013
【図１３】
0006566124.tif 000014
【図１４】
0006566124.tif 000015
【図１５】
0006566124.tif 000016
【図１６】
0006566124.tif 000017
【図１７】
0006566124.tif 000018