以下、本発明の実施形態及び実施例について、図面を参照して説明する。各実施形態は、例示であり、本発明は各実施形態に限定されるものではない。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
<第1の実施形態>
図1は、本発明の第1の実施形態における通信システムの構成例を示す図である。
図1に示すように、第1の実施形態における通信システムは、フロー制御装置100と、端末300と、フロー処理装置400とを含む。フロー処理装置400は、物理ネットワーク500に含まれる。
フロー制御装置100は、例えば、集中管理型のアーキテクチャにおいて、パケット処理を実行するノードを管理可能である。
集中管理型のアーキテクチャは、例えば、OpenFlowネットワークである。OpenFlowネットワークでは、従来のスイッチの機構が、経路の決定処理を外部からプログラミングすることで変更可能としたモジュールであるOFC(OFC:OpenFlow Controller)と、パケット転送処理のみを行うモジュールであるOFS(OFS:OpenFlow Switch)とに分離されている。
OpenFlowネットワークにおけるOFSとは、OpenFlowネットワークを形成し、OFCの制御下にあるエッジスイッチ及びコアスイッチのことである。OpenFlowネットワークでは、OFCが、OFSのフローテーブルを操作することによりOFSの挙動を制御する。
フローテーブルとは、所定の条件(ルール)に適合(マッチ)するパケット(通信データ)に対して行うべき所定の動作(アクション)を定義したフローエントリ(Flow entry)が登録されたテーブルである。
各OFSは、フローテーブルを少なくとも1つ保持している。OFCは、配下の各OFSのフローテーブルと同じ内容のフローテーブルを全て保持している。すなわち、OFCは、各OFSのフローテーブルのマスターテーブルを保持している。なお、「フローテーブルを保持している」とは、そのフローテーブルを管理していることを意味する。そのフローテーブルをネットワーク経由等で管理可能であれば、実際には、そのフローテーブルが自身の内部に存在していなくても良い。例えば、OFCとOFSが、ネットワーク上にある同一のフローテーブルを共有することも考えられる。
フローエントリのルールは、パケットの各プロトコル階層のヘッダ領域に含まれる送信先アドレス(Destination Address)、送信元アドレス(Source Address)、送信先ポート(Destination Port)、送信元ポート(Source Port)のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、MACアドレス(Media Access Control Address)やIPアドレス(Internet Protocol Address)を含むものとする。また、上記に加えて、入口ポート(Ingress Port)の情報も、フローエントリのルールとして使用可能である。また、フローエントリのルールとして、フローを示すパケットのヘッダ領域の値の一部(又は全部)を、正規表現やワイルドカード「*」等で表現したものを設定することもできる。
OFSは、ルールの欄に記述された内容にマッチするパケットを、アクションの欄に記述された内容に従って処理する。OFCは、このようなフローエントリをOFSに登録することで、マッチするパケットに対する処理を制御できるのである。
OFSは、パケットが到着した時、当該パケットのヘッダ情報(送信元情報や送信先情報等)を読み取り、自身のフローテーブルの中から、マッチするルールを持つフローエントリ(以下、マッチするフローエントリと呼ぶ)を検索する。検索の結果、マッチするフローエントリが見つかった場合、OFSは、そのフローエントリのアクションに記載されている通りにパケットを処理する。なお、複数のフローエントリが見つかった場合、見つかったフローエントリのうち、最も優先度が高いフローエントリに従い、パケットを処理する。また、検索の結果、マッチするフローエントリが見つからなかった場合、OFSは、当該パケットを「ファーストパケット」と判断し、当該パケットのコピー(複製)をOFCに転送することで、当該パケットをどのように処理すべきかについてOFCに問い合わせる。
OFCは、OFSから問い合わせを受けた場合、経路計算を行い、問い合わせを受けたパケットを送信先まで転送するための最適な経路を導出する。また、OFCは、OFSのフローテーブルに、導出した経路を構成するためのフローエントリを新規に追加登録する。このとき、OFCは、自身のフローテーブルにも同じフローエントリを新規に追加登録する。
端末300は、フロー処理装置400を介して通信を行う装置である。端末300は、例えば、携帯電話、PC(Personal Computer)、モバイルルータ、スマートデバイス(例えば、家庭の消費電力をモニタするスマートメータ、スマートテレビ、ウェアラブル端末)、M2M(Machine to Machine)デバイス等である。M2Mデバイスは、例えば、上記のデバイスに加え、産業機器、車、ヘルスケア機器、家電等を含む。
フロー処理装置400は、例えば、QinQを用いたネットワーク(QinQモデル)に含まれるコアノードである。なお、フロー処理装置400は、受信したフレームを、MAC学習に基づいて転送する。
QinQモデルでは、フロー制御装置100が、ユーザや上位制御装置により設定された仮想ネットワーク構成に基づき、OpenFlowなどの制御プロトコルを使用して、フロー処理装置400を遠隔制御する。QinQモデルは、仮想ネットワーク配下に仮想ブリッジを配置する単純な構成であり、フロー制御装置が管理する仮想ネットワークIDと仮想ブリッジIDを、それぞれフレームのOVIDとIVIDに対応づけることで、仮想ネットワーク単位の仮想ブリッジ単位で、MACフォワーディングの転送制御を実現している。
しかしながら、フロー処理装置400の制御は、ハードウェアチップで制御可能なOuterVLAN単位のMACフォワーディングで実行される。そのため、1つのフロー処理装置400に、送信元MACアドレスとOVIDとは同じだが、異なるIVIDである異なるフレームが、異なるポートから入力(受信)した場合、当該異なるフレームが入力する都度、MAC移動(MAC重複)が発生してしまう。すなわち、特定の仮想ネットワークに含まれる複数の仮想ブリッジに対して、送信元MACアドレスとOVIDとは同じだが、異なるIVIDである異なるフレームが入力した場合には、当該異なるIVID間においてフレームが入力される度に、MAC移動(MAC重複)が発生してしまう。この場合、当該送信元MACアドレスを宛先とするフレームが、正しい送信先だけでなく、誤った送信先にも転送されてしまうという問題が生じる。
そこで、第1の実施形態では、フロー制御装置100において、MAC重複となったフレームの各々を互いに異なる仮想ネットワークに属するように制御することで、当該MAC重複の発生を防止する。
図2は、フロー処理装置400の構成例を示す図である。フロー処理装置400は、例えば、フロー処理部401と、ポート410と、MACアドレステーブル420と、MAC重複テーブル490と、アクセスリストテーブル450とを備える。フロー処理部401とMAC重複テーブル490は、ソフトウェア上に構成される。ポート410と、MACアドレステーブルと、アクセスリストテーブル450とは、ハードウェアとして構成される。なお、フロー処理装置400において、ソフトウェア上に構成されるフロー処理部401やMAC重複テーブル490は、ハードウェアにおいて実装されていてもよい。
ポート410は、フレーム600を送受信するインターフェースである。
MACアドレステーブル420は、MACエントリを含む。MACエントリ421は、キーが“OVID及び宛先MACアドレス”であり、アクションが“出力ポート”指定である。すなわち、MACエントリに指定された“OVID及び宛先MACアドレス”を含むフレーム600が入力した場合、出力ポートが決定できる。
ここで、フロー処理装置400Dは、フロー処理装置400Bから、“OVID:N1、IVID:B1、送信元MACアドレス:M1”のフレーム600Bを受信する。この場合、フロー処理装置400のMACアドレステーブル420は、フレーム600Bを受信したことに応じて、“送信先MACアドレスがM1で、OVIDがN1のフレームを、ポート410Bに転送する”旨の転送ルールを学習する(MAC学習)。
フロー処理装置400Dは、フレーム600Bを受信した後に、フロー処理装置400Cから、“OVID:N1、IVID:B2、送信元MACアドレス:M1”のフレーム600Cを受信する。この場合、フロー処理装置400のMACアドレステーブル420は、フレーム600Cを受信したことに応じて、“送信先MACアドレスがM1で、OVIDがN1のフレームを、ポート410Bに転送する”旨の転送ルールを、“送信先MACアドレスがM1で、OVIDがN1のフレームを、ポート410Cに転送する”旨の転送ルールに更新する(MAC移動)。
続いて、フロー処理装置400Dは、フロー処理装置400Aから、“OVID:N1、IVID:B1、送信元MACアドレス:M1、送信先MACアドレス:M1”のフレーム600Aを受信する。この場合フロー処理装置400Dは、更新した“送信先MACアドレスがM1で、OVIDがN1のフレームを、ポート410Cに転送する”旨の転送ルールに従って、当該フレーム600Aを転送する。ここで、フレーム600Aは送信先MACアドレスが“M1”であるところ、本来の転送先は“ポート410B”である。しかしながら、フレーム600Cに基づいてMACアドレステーブル420が更新された結果、当該フレーム600Aは本来の転送先(“ポート410B”)とは異なる“ポート410C”に転送されてしまうという問題が生じる。また、フレーム600Bとフレーム600Cとを受信する毎にMACテーブル420が書き換わる(MAC移動する)ため、フレーム600Aが、ある時は“ポート410B”に転送され、別の時は“ポート410C”に転送されてしまうという問題も生じる。
そこで、第1の実施形態において、フロー処理装置400は、MAC重複の発生を検出し、当該MAC重複の発生をフロー制御装置100に通知する。MAC重複の発生の通知を受けたフロー制御装置100は、MAC重複となったフレームの各々が互いに異なる仮想ネットワークに属するように、仮想ネットワークの構成を変更する。MAC重複となったフレームの各々が互いに異なる仮想ネットワークに属するようになると、当該フレームの各々に格納されるOVIDは、互いに異なるものとなる。そのため、第1の実施形態では、MAC重複が防止される。
フロー処理装置400のフロー処理部401は、異なる入力ポートの各々から、送信元MACアドレスとOVIDとが重複するフレーム(例えば、フレーム600Bとフレーム600C)を受信したことに応じて、MAC重複テーブル490に、送信元MACアドレスと、OVIDと、IVIDとを用いた転送ルールを登録する。例えば、フロー処理装置400Dは、フレーム600Bに続いてフレーム600Cを受信した場合、MAC重複テーブル490において、フレーム600Cに基づいて、送信先“送信先MACアドレスがM1で、OVIDがN1で、IVIDがB2のフレームを、ポート410Cに転送する”旨の重複エントリを学習する。
フロー処理装置400のフロー処理部401は、MAC重複の発生を検知したことに応じて、フロー制御装置100に対して、“MAC重複が発生したこと”を示す所定の通知を行う。また、フロー処理装置400のフロー処理部401は、MACアドレステーブル490に重複エントリを登録したことに応じて、フロー制御装置100に対して、“MAC重複が発生したこと”を示す所定の通知を行う。所定の通知は、MAC重複が発生したフレームの各々に関する情報を含む。MAC重複が発生したフレームの各々に関する情報は、例えば、MAC重複が発生したフレームの各々に格納されているOVID、および、IVIDを含む。MAC重複が発生したフレームの各々に関する情報は、例えば、MAC重複テーブル490に登録された重複エントリであってもよい。MAC重複が発生したフレームの各々に関する情報は、例えば、MAC重複が発生したフレームそのものであってもよい。なお、“MAC重複が発生したこと”を示す信号に限られず、例えば、“重複エントリが登録されたこと”を示す信号などであってもよい。
図3は、第1の実施形態におけるフロー制御装置100の構成例を示す図である。図3に示すように、フロー制御装置100は、メッセージ送受信部110と、MAC重複制御部120と、仮想ネットワーク管理部130と、OFS制御部140と、仮想ネットワーク700(例えば、メモリやデータベースにおいて構成される仮想ネットワーク700)を含む。
メッセージ送受信部110は、フロー処理装置400との間で通信を行う機能を含む。
メッセージ送受信部110は、例えば、通信を行うためのインターフェースである。
MAC重複制御部120は、フロー処理装置400から、“MAC重複が発生したこと”を示す所定の通知を受けたことに応じて、仮想ネットワーク管理部130に対して、MAC重複している仮想ネットワークの分離を指示する。MAC重複制御部120は、フロー処理装置400から受信した通知された情報に含まれるOVID、および、IVIDに基づいて、MAC重複している仮想ネットワークの分離を指示する。
仮想ネットワーク管理部130は、MAC重複制御部120からの指示に応じて、MAC重複している仮想ネットワークの分離を実行する。仮想ネットワーク管理部130は、例えば、MAC重複制御部120からの指示に応じて、MAC重複している仮想ブリッジを、現在の仮想ネットワークから、他の仮想ネットワークに移動させる。
OFS制御部140は、仮想ネットワークが分離されたことに基づいて、フロー処理装置400に対して、フロー変更のメッセージを通知する。
図4は、第1の実施形態におけるフロー処理装置400の動作例を示すフローチャートである。
フロー処理装置400のポート410は、フレームの送受信を行う(S1−1)。
フロー処理装置400のフロー処理部401は、MAC重複の発生の有無を検知する(S1−2)。フロー処理部401は、例えば、異なる入力ポートの各々から、送信元MACアドレスとOVIDとが重複するフレーム(例えば、フレーム600Bとフレーム600C)を受信したことに応じて、MAC重複が発生したと検知する。
フロー処理部401は、MAC重複の発生を検知した場合(S1−2のYES)に、MAC重複情報(MAC重複エントリ)をMAC重複テーブル490に登録する(S1−3)。フロー処理部401は、例えば、フレーム600Bに続いてフレーム600Cを受信した場合、MAC重複テーブル490において、フレーム600Cに基づいて、送信先“送信先MACアドレスがM1で、OVIDがN1で、IVIDがB2のフレームを、ポート410Cに転送する”旨の重複エントリを学習する。
フロー処理部401は、MAC重複の発生を検知した場合に、フロー制御装置100に対して、“MAC重複が発生したこと”を示す所定の通知を行う(S1−4)。
図5は、第1の実施形態におけるフロー制御装置100の動作例を示すフローチャートである。
フロー制御装置100のMAC重複制御部120は、メッセージ送受信部110を介して、フロー処理装置400から“MAC重複が発生したこと”を示す所定の通知を受信する(S2−1)。
MAC重複制御部120は、“MAC重複が発生したこと”を示す所定の通知を受けたことに応じて、仮想ネットワーク管理部130に対して、MAC重複している仮想ネットワークの分離を指示する(S2−2)。MAC重複制御部120は、フロー処理装置400から受信した通知された情報に含まれるOVID、および、IVIDに基づいて、MAC重複している仮想ネットワークの分離を指示する。仮想ネットワーク管理部130は、MAC重複制御部120からの指示に応じて、MAC重複している仮想ネットワークの分離を実行する。仮想ネットワーク管理部130は、例えば、MAC重複制御部120からの指示に応じて、MAC重複している仮想ブリッジを、現在の仮想ネットワークから、他の仮想ネットワークに移動させる。
OFS制御部140は、仮想ネットワークが分離されたことに基づいて、フロー処理装置400に対して、フロー変更のメッセージを通知する(S2−3)。
上記のとおり、第1の実施形態において、フロー処理装置400は、MAC重複の発生を検出し、当該MAC重複の発生をフロー制御装置100に通知する。そして、MAC重複の発生の通知を受けたフロー制御装置100は、MAC重複となったフレームの各々が互いに異なる仮想ネットワークに属するように、仮想ネットワークの構成を変更する。MAC重複となったフレームの各々が互いに異なる仮想ネットワークに属するようになると、当該フレームの各々に格納されるOVIDは、互いに異なるものとなる。そのため、第1の実施形態では、MAC重複が防止される。
<第2の実施形態>
図6及び図7は、本発明の第2の実施形態における通信システムの構成例を示す図である。なお、図6は、フロー制御装置100が仮想ネットワークを分離する前の構成例であり、図7は、フロー制御装置100が仮想ネットワークを分離した後の構成例である。
なお、第2の実施形態の技術は、第1の実施形態、及び、後述の実施形態のいずれにも適用可能である。
図6及び図7において、通信システムは、例えば、フロー制御装置100と、端末300と、フロー処理装置400とを含む。
なお、端末300は、図1に示す第1の実施形態における通信システムの端末300と同様の構成であるため、詳細な説明は省略される。
物理ネットワーク500は、例えば、フロー処理装置400を含み、仮想ネットワーク700と、仮想ブリッジ710A及び710Bとを用いた仮想ネットワークにおけるフレームの転送を実現するための物理環境を提供する。
図8は、第2の実施形態における、フロー処理装置400の構成例を示す図である。フロー処理装置400は、ポート410、フレーム変換用テーブル430、VLANテーブル440、MACアドレステーブル420、アクセスリストテーブル(フレーム転送用)450Aを含む。また、フロー処理装置400は、フレーム処理部460、MAC重複処理部470、ハードウェア処理部480、メッセージ送受信部481、MAC重複テーブル490を含む。
フロー処理装置400において、ポート410、フレーム変換用テーブル430、VLANテーブル440、MACアドレステーブル420、アクセスリストテーブル(フレーム転送用)450Aは、ハードウェアに構成される。フレーム処理部460、MAC重複処理部470、ハードウェア処理部480、メッセージ送受信部481、MAC重複テーブル490は、ソフトウェアに構成される。
ここで、フロー処理装置400のフレーム処理部460は、フレーム600Bとフレーム600Cとが、ハードウェアのMACアドレステーブル420を通過した際に、MAC移動を検出する。MAC移動は、MACアドレステーブル420において、OVIDと送信先MACアドレスが同一の転送ルールにおいて、転送ルールが書き換えられる処理である。例えば、MACアドレステーブル420は、フレーム600Bが通過した際に、“送信先MACアドレスがM1で、OVIDがN1のフレームを、ポート410Bに転送する”旨の転送ルールを学習する。MACアドレステーブル420は、フレーム600Bの通過後フレーム600Cが通過した際に、“送信先MACアドレスがM1で、OVIDがN1のフレームを、ポート410Bに転送する”旨の転送ルールを、“送信先MACアドレスがM1で、OVIDがN1のフレームを、ポート410Cに転送する”旨の転送ルールに書き換える。
上記のとおり、フレーム600Bと600Cとは、IVIDは異なるが、OVIDと送信元MACアドレスが同じであるため、フロー処理装置400のMACアドレステーブル420で学習するキー情報(OVIDとMACアドレス)が同じとなる。そのため、フレーム600B、600Cが入力する度に、MACアドレステーブル420のMACエントリ(転送ルール)は、ポート410Bと410Cとの間でMAC移動を繰り返す。そのため、フロー処理装置400は、MACアドレス:M1を送信先とするフレーム600Bを受信した場合、当該フレーム600Cを、MACアドレステーブルのMACエントリ(転送ルール)のポートに対して送信するため、正しい送信先であるポート410Bだけでなく、誤った送信先であるポート410Cにも送信する。
そこで、第2の実施形態において、フロー処理装置400は、MAC重複の発生を検出し、当該MAC重複の発生をフロー制御装置100に通知する。MAC重複の発生の通知を受けたフロー制御装置100は、MAC重複が発生した仮想ブリッジの各々を、互いに異なる仮想ネットワークにそれぞれ移動させる。その結果、MAC重複となったフレームの各々が互いに異なる仮想ネットワークに属するようになるため、当該フレームの各々に格納されるOVIDは、互いに異なるものとなる。そのため、第2の実施形態では、MAC重複が防止される。
ポート410は、フレーム600を送受信するインターフェースである。なお、受信したフレーム600は、ポート410、フレーム変換用テーブル430、VLANテーブル440、MACアドレステーブル420、アクセスリストテーブル(フレーム転送用)450Aの順に、パイプライン処理される。
フレーム変換用テーブル430は、フレーム600のVLAN変換を実施するテーブルである。なお、フレーム変換用テーブル430は、フレーム600を更新するための機能を備え、フレーム600に対するその他のアクションも実行することができる。第2の実施形態において、フレーム変換用テーブル430は、例えば、MAC学習のキャンセルのアクションを実行するために用いられる。
VLANテーブル440は、VLANエントリ441を含む。VLANエントリ441は、キーが“OVID”であり、アクションが“フレーム中継(例えば、後段のMACアドレステーブル420への処理へ進ませるためのアクション)”である。VLANテーブル440において、入力されたフレーム600に対応するエントリが存在しない場合には、当該フレーム600は廃棄される。VLANテーブル440は、フロー制御装置100の指示、または、フロー処理装置400のコンフィグにより、VLANエントリ441の登録/更新/削除を実行する。
MACアドレステーブル420は、MACエントリを含む。MACエントリ421は、キーが“OVID及び送信先MACアドレス”であり、アクションが“出力ポート”指定である。すなわち、MACエントリに指定された“OVID及び送信先MACアドレス”を含むフレーム600が入力した場合、出力ポートが決定できる。MACエントリ421は、ハードウェアによって、自動的に登録/更新/削除される。MACアドレステーブル420に入力されたフレーム600に含まれる“OVID及び送信先MACアドレス”をキーとするMACエントリ421が存在しない場合、MAC学習が実行される(すなわち、新たなMACエントリが登録される)。MACエントリ421が存在するが、MACエントリ421に指定された出力ポート410と、フレーム600の入力ポート410とが異なる場合、MACエントリ421に指定された出力ポートの情報(ポートの識別子やポート番号など)を、フレームの入力ポートの情報(ポートの識別子やポート番号など)に更新する(MAC移動)。
なお、MACアドレステーブル420において、所定の時間である“エージング設定時間”を超える間、MACエントリのキーに一致するフレーム600を受信しなかった場合、当該MACエントリは削除される。
アクセスリストテーブル(フレーム転送用)450Aは、フレーム転送用のテーブルである。アクセスリストテーブル(フレーム転送用)450Aに含まれるエントリにヒット(HIT)するフレーム600が入力した場合、当該ヒットしたエントリのアクションが当該フレーム600に対して適用される。
また、アクセスリストテーブル(フレーム転送用)450Aは、論理テーブルにおいて、フレーム600に適用される際の優先度を示す“エントリ優先度”を有する。例えば、アクセスリストテーブル(フレーム転送用)450Aに含まれるエントリの各々は優先度を含み、入力されたフレーム600にヒットするエントリが複数ある場合には、当該優先度の高いエントリで指定されたアクションが当該フレーム600に優先して適用される。なお、第2の実施形態の図面においては、アクセスリストテーブル(フレーム転送用)450Aのより上位(上位置)に記載されたエントリが、高優先のエントリとする。
アクセスリストテーブル(フレーム転送用)450Aに含まれるUC出力用エントリ451Aは、MACアドレステーブル420のMACエントリ421にヒット(HIT)したフレーム600だけがヒット(HIT)するエントリであり、MACエントリ421によって指定されたポート410からフレーム600を出力する役割を有する。
フレーム600がUC出力用エントリにヒット(HIT)しない場合(MAC学習されていない場合)、当該フレーム600は、UC出力用エントリ451Aよりも優先度が低い“Flooding出力用エントリにヒット(HIT)し、当該フレーム600はFlooding出力される。UC出力用エントリ及びFlooding出力用エントリは、フロー制御装置100の指示により、アクセスリストテーブル250に登録/更新/削除される。
フレーム処理部460は、MACアドレステーブル420におけるMAC移動が発生した場合に、当該MAC移動の要因となったフレーム600又はそのコピーを受信する。フレーム処理部460は、MAC重複処理部470に、フレーム600又はそのコピーを通知する。
MAC重複処理部470は、フレーム処理部460から受信したフレーム600の情報(ヘッダ情報など)に基づいて、MAC重複テーブル490にエントリを登録する。例えば、MAC重複処理部470は、MAC重複テーブル490に、フレーム600A、及び、600Bのそれぞれに対応するMAC重複エントリ491Aと、491Bとを登録し、IVIDを含めた形式のMACエントリとして管理する。
また、MAC重複処理部470は、フレーム処理部460から受信したフレーム600の情報(ヘッダ情報など)に基づいて、ハードウェアの各テーブルのエントリの登録/更新/削除を、ハードウェア処理部480に指示する。例えば、MAC重複処理部470は、MAC重複テーブル490内のMAC重複エントリ491Aと、291Bとの情報に基づき、ハードウェアのフレーム変換用テーブル430に対して、エージング用エントリ431Aと、431Bとの登録を指示する。エージング用エントリ431A、431Bは、フレーム600A、600Bが入力しなくなった際のエージングを検出する役割を持つ。
エージング用エントリ431は、キーが“OVID、IVID、送信元MACアドレス、入力ポート”であり、アクションが“MAC学習キャンセル及びWriteMetadata”である。MAC学習キャンセルは、当該エージング用エントリ431にヒット(HIT)するフレームがMACアドレステーブル420に入力した場合に、MAC学習させないという役割を持つ。WriteMetadataは、当該エージング用エントリ431にヒット(HIT)したことを、Frame情報として保持させる役割を持つ。
また、MAC重複処理部470は、アクセスリストテーブル(フレーム転送用)450Aに対して、UC出力用エントリ451Aと、452Aとの登録を指示する。UC出力用エントリ451A、452Aは、重複MACが発生したフレームを、正しいポートへ出力するための役割を持つ。例えば、アクセスリストテーブル(フレーム転送用)450Aは、UC出力用エントリ451Aとして、“送信元MACアドレスがM1で、OVIDがN1で、IVIDがB1のフレームを、ポート1に転送する”旨を登録する。また、アクセスリストテーブル(フレーム転送用)450Aは、UC出力用エントリ452Bとして、“送信元MACアドレスがM1で、OVIDがN1で、IVIDがB2のフレームを、ポート2に転送する”旨を登録する。
ハードウェア処理部480は、MAC重複処理部470の指示に従い、ハードウェアの各テーブルに、エントリを登録/更新/削除する。また、エージング用エントリ431のフレームの統計情報(フレーム統計)から、MAC重複エントリのエージアウトを検出する。ハードウェア処理部480は、エージアウトを検出した場合、MAC重複処理部470に当該エージアウトを通知する。
上記のとおり、UC出力用エントリ452と、エージング用エントリ431によって、フロー処理装置400における誤転送を回避するとともに、エージングにも追随することができる。
また、MAC重複処理部470は、ハードウェアで構成される各テーブルに対する、MACエントリ421Aの削除を指示する。MACエントリ421Aを削除することで、新規のMAC重複がさらに発生した場合であっても、ハードウェア上ですみやかにMAC学習が動作し、フレーム600の転送処理を、UC転送に移行することが可能となる。
図9は、上記で説明した各テーブルに格納されるエントリの構成例を示す図である。図9に示すように、MAC重複エントリは、キーが“OVID、IVID、MACアドレス”であり、アクションが“出力ポート指定”である。また、MACエントリは、キーが“OVID、MACアドレス”であり、アクションが“出力ポート指定”である。また、VLANエントリは、キーが“OVID”であり、アクションが“フレーム中継”である。
また、エージング用エントリは、キーが“OVID、IVID、送信元MACアドレス”であり、アクションが“MAC学習キャンセル、WriteMetadata”である。
また、MAC重複UC出力用エントリは、キーが“OVID、IVID、送信先MACアドレス”であり、アクションが“ポート指定”である。
第2の実施形態において、フロー制御装置100は、図3に示す第1の実施形態における通信システムのフロー制御装置100と同様の構成である。
フロー制御装置100のメッセージ送受信部110は、フロー処理装置400のメッセージ送受信部481から、MAC重複通知を受信する。MAC重複通知は、“MAC重複が発生したこと”を示す所定の通知である。MAC重複通知は、例えば、MAC重複が発生したフレームの各々に関する情報を含む。MAC重複が発生したフレームの各々に関する情報は、例えば、MAC重複テーブル490に登録された重複エントリである。メッセージ送受信部110は、受信したMAC重複通知を、MAC重複制御部120に転送する。
MAC重複制御部120は、受信したMAC重複通知から、MAC重複が発生した仮想ネットワークのID(OVID)と仮想ブリッジのID(IVID)とを抽出し、抽出された仮想ブリッジを、異なる仮想ネットワークに分離するように、仮想ネットワーク管理部130に指示する。また、MAC重複制御部120は、分離された仮想ネットワークの情報(OVID、IVID)から、フレームの変換処理、および、VLANタグに関連するフローの変更の処理に関する制御メッセージを、OFS制御部140に送信する。
仮想ネットワーク管理部130は、例えば、メモリやデータベースに格納されている仮想ネットワーク700の仮想ブリッジ710に基づいて、MAC重複した仮想ブリッジの各々を、互いに異なる仮想ネットワークデータにそれぞれ移動させる(仮想ネットワークの分離)。仮想ネットワーク管理部130は、仮想ネットワークの分離が完了すると、分離した仮想ネットワークの情報をMAC重複制御部120に送信する。分離した仮想ネットワークの情報は、分離後の各々の仮想ネットワークのID(OVID)と仮想ブリッジのID(IVID)とを含む。
OFS制御部140は、フロー変更のメッセージを作成して、メッセージ送受信部110を介して、フロー処理装置に送信する。フロー変更のメッセージは、例えば、OpenFlowにおけるフローエントリである。
図10は、第2の実施形態におけるフロー処理装置400の動作例を示すフローチャートである。
端末300Aと端末300Bとは、フロー処理装置400を介して、相互に通信している(S3−1)。具体的には、フロー処理装置400は、ポート410Aから、“OVID:N1、IVID:B1、送信元MACアドレス:M1、送信先MACアドレス:M1”のフレーム600Aを受信し、ポート410Bを介して転送する。また、フロー処理装置400は、ポート410Bから、“OVID:N1、IVID:B1、送信元MACアドレス:M1,送信先MACアドレス:M2”のフレーム600Bを受信し、ポート410Aを介して転送する。
図11は、端末300Aと端末300Bとが相互に通信している場合の、フロー処理装置400の構成例を示す図である。
フロー処理装置400は、端末300Aから、ポート410Aを介して、フレーム600Aを受信する。その結果、フロー処理装置400のMACアドレステーブル420は、“送信先MACアドレスがM2で、OVIDがN1のフレームを、ポート410Aに転送する”というMACエントリ421Bを学習する。一方、フロー処理装置400は、端末300Bから、ポート410Bを介して、フレーム600Bを受信する。その結果、フロー処理装置400のMACアドレステーブル420は、“送信先MACアドレスがM1で、OVIDがN1のフレームを、ポート410Bに転送する”というMACエントリ421Aを学習する。その結果、図8に示すように、MACアドレステーブル420には、MACエントリ421Aと、MACエントリ421Bとが学習される。なお、図8のフロー処理装置400は、予めMACエントリ421CとMACエントリ421Dとが学習されている。
フロー処理装置400が、フレーム600Bを受信した場合には、MACアドレステーブル420に登録されているMACエントリ421Bに従って、当該フレーム600Bの転送処理が実行される。また、フロー処理装置400が、フレーム600Aを受信した場合には、MACアドレステーブル420に登録されているMACエントリ421Aに従って、当該フレーム600Aの転送処理が実行される。
また、図11に示すように、アクセスリストテーブル(フレーム転送用)450Aは、UC出力用エントリ451Aと、Flooding出力用エントリ452Aとが登録されている。図11に示すように、MACアドレステーブル420に登録されているMACエントリ421にヒットしたフレーム600は、UC出力用エントリ451Aに従って、MACエントリ421で指定されたポート410から転送される。例えば、フレーム600Aは、UC出力用エントリ451Aに従って、MACエントリ421Aで指定されたポート410Aから転送される。
次に、フロー処理装置400は、ポート410Cから、“OVID:N1、IVID:B2、送信元MACアドレス:M1、送信先MACアドレス:M5”のフレーム600Cを受信する(S3−2)。フレーム600Cは、VLANテーブル440のVLANエントリ441Aにヒット(HIT)することにより、MACアドレステーブル420の処理に進む(S3−3)。
フロー処理装置400がフレーム600Cを受信した場合、MACアドレステーブル420のMACエントリ421Bが、“送信先MACアドレスがM1で、OVIDがN1のフレームを、ポート410Cに転送する”旨の内容に書き換わる(MAC移動)。すなわち、フレーム600Cが、MACアドレステーブル420ですでに学習済みのMACエントリ421Aの“OVID:N1、送信MACアドレスM1”と同一のキーであり、ポートが異なるため、当該MACエントリ421のポートを、フレーム600Cの入力ポート410Cに更新する(S3−4)。
フロー処理装置400は、フレーム600Cを、MACアドレステーブル420に予め学習されている送信先MACエントリ421Cと、アクセスリストテーブル(フレーム転送用)450Aに登録されているUC出力用エントリ451Aに従って、転送処理を実行する(S3−5)。
フロー処理装置400は、MACアドレステーブルにおけるMAC移動(MAC重複)が生じたことに応じて、フレーム600Cを、フレーム処理部460に通知する。フレーム処理部460は、フレーム600Cを、MAC重複処理部470に通知する(S3−6)。
MAC重複処理部470は、フレーム600Cに含まれる情報(例えば、ヘッダ情報)に基づき、MAC重複テーブル490に、MAC重複エントリ491Bを登録する(S3−7)。MAC重複エントリ491Bは、“OVID:N1、IVID:B2、送信先MACアドレス:M1”をキーとして、“ポート410C”を出力ポートとするエントリである。
MAC重複処理部470は、ハードウェア処理部480に、MACエントリ421Aの削除を指示する。MAC重複処理部470は、指示されたMACエントリ421Aを削除する(S3−8)。
MACエントリ421Aを削除することにより、次に受信したフレームが、フレーム600Cであっても、フレーム600Bであっても、すみやかにMAC学習が動作し、UC転送に移行することが可能である。
また、フロー処理装置400は、MAC重複ではなく、MAC移動の際には、ソフトウェアにフレームが通知されないため、一定時間経過した場合には、MAC重複テーブル490からMAC重複エントリ491Bを削除する処理を行う。
図12は、図11の状態において、フロー処理装置400のポート410Cを介して、フレーム600Cを受信した場合の、フロー処理装置400の構成例を示す図である。
フロー処理装置400のMACアドレステーブル420において、フレーム600Cが入力されたことによりMAC移動が発生するため、フレーム処理部460は、当該フレーム600Cの通知を受ける。
MAC重複処理部470は、フレーム処理部460からフレーム600Cを通知されたことにより、MAC重複テーブル490にMAC重複エントリ491Bを登録する。
MAC重複エントリ491Bは、キーが“OVID,IVID、送信先MACアドレス”であり、アクションが“出力ポート”である。すなわち、MAC重複エントリ491は、ハードウェアで表現できないIVIDを含めたMACエントリを、ソフトウェアで管理する。
MAC重複エントリ491Bのキーは、“OVID:N1、IVID:B2、送信先MACアドレス:M1”であり、アクションは“入力ポート410C“である。MAC重複エントリ491Bは、フレーム600Cに基づいて、設定される。
MACエントリ421Aは、MAC重複処理部470の指示により、ハードウェア処理部480を介して、削除される。MACエントリ421Aの削除により、MACアドレス:M1を送信先とするフレーム600Aは、アクセスリストテーブル(フレーム転送用)450AのFlooding出力用エントリ452Aにヒット(HIT)し、Flooding出力される。
MAC重複処理部470は、フロー処理装置400に対して、MAC重複通知を送信する(S3−9)。MAC重複通知は、例えば、MAC重複エントリ491Bを含む。
図13は、図12の状態において、MAC重複処理部470が、メッセージ送受信部481を介して、フロー処理装置400に対してMAC重複通知を送信する場合の、フロー処理装置400の構成例を示す図である。
MAC重複処理部470は、MAC重複テーブルにMAC重複エントリ491Bが登録されたことに応じて、メッセージ送受信部481を介して、MAC重複通知の送信を指示する。
図14は、第2の実施形態におけるフロー制御装置100の動作例を示すフローチャートである。
フロー制御装置100のメッセージ送受信部110は、フロー処理装置400のメッセージ送受信部481から、MAC重複通知を受信する(S4−1)。MAC重複通知は、例えば、MAC重複エントリ491Bを含む。
MAC重複制御部120は、MAC重複通知の受信に応じて、当該受信したMAC重複通知から、MAC重複が発生した仮想ネットワークのID(OVID)と仮想ブリッジのID(IVID)とを抽出し、抽出された仮想ブリッジを、異なる仮想ネットワークに分離するように、仮想ネットワーク管理部130に指示する(S4−2)。
図15は、MAC重複通知をフロー処理装置400から受信した場合の、フロー制御装置100の構成例を示す図である。図15に示すように、フロー制御装置100のメッセージ送受信部110は、MAC重複通知を受信すると、MAC重複制御部120に転送する。MAC重複制御部120は、受信したMAC重複通知に含まれるMAC重複が発生したフレームの各々に関する情報に基づいて、MAC重複が発生している仮想ネットワークのID(OVID)と、仮想ブリッジのID(IVID)とを取得し、仮想ネットワーク管理部130に対して仮想ネットワークの分離を指示する。
仮想ネットワーク管理部130は、MAC重複制御部120からの指示に応じて、仮想ネットワーク700の仮想ブリッジ710に基づき、MAC重複が発生した仮想ブリッジの各々を、互いに異なる仮想ネットワークデータにそれぞれ移動させる(S4−3)。
図16は、図15においてネットワーク分離の指示を受けた仮想ネットワーク管理部130が、仮想ネットワークを分離した後の、フロー制御装置100の構成例を示す図である。図16に示すように、仮想ネットワーク管理部130は、MAC重複している仮想ブリッジ(ID:B1,B2)の各々を、互いに異なる仮想ネットワーク(ID:N1)と仮想ネットワーク(ID:N2)に分離する。仮想ネットワーク管理部130は、例えば、仮想ブリッジ710から仮想ブリッジ(ID:B2)を分離して、仮想ネットワーク720に移動させる。
仮想ネットワーク管理部130は、仮想ネットワークの分離が完了すると、分離した仮想ネットワークの情報をMAC重複制御部120に送信する。分離した仮想ネットワークの情報は、分離後の各々の仮想ネットワークのID(OVID)と仮想ブリッジのID(IVID)とを含む。
MAC重複処理部120は、分離された仮想ネットワークの情報(OVID、IVID)から、フレームの変換処理、および、VLANタグに関連するフローの変更の処理に関する制御メッセージを、OFS制御部140に送信する(S4−4)。
OFS制御部140は、仮想ネットワークが分離されたことに基づいて、フロー処理装置400に対して、フロー変更のメッセージを通知する(S4−5)。
図17は、OFS制御部140が、仮想ネットワークの変更に伴うフロー変更に関するメッセージを、フロー処理装置400に送信する場合の、フロー制御装置100の構成例を示す図である。OFS制御部140は、仮想ネットワークの分離に伴って変更されたフレームに関連するフローについて、当該フローに対する処理規則を含むフロー処理装置400に対して、当該処理規則の変更を指示する。OFS制御部140は、変更後の処理規則を、フロー処理装置400に通知してもよい。
OFS制御部140は、例えば、フロー処理装置400Cに対して、端末300Cから送信されるフレームのOVIDを仮想ネットワーク700B(ID:N2)に対応付け、当該フレームのIVIDを仮想ブリッジ710B(ID:B2)に対応づけるための指示を通知する。
OFS制御部140は、フローの変更について、Egress側からフローを追加し、当該Egress側のフローの追加が完了してから、Ingress側のフロー追加を実施する。OFS制御部140は、通信の遮断を防止するため、Ingressのフロー追加の完了後、変更前のフローをIngress側、Egress側の順に削除する。
図7は、フロー制御装置100が仮想ネットワークを分離した後の通信システムの構成例である。図7に示すように、図6においてMAC重複が発生していたフレーム600Cについて、当該フレーム600CのOVID、IVIDの対応が、それぞれ仮想ネットワーク700B、仮想ブリッジ710Bとなっており、フロー処理装置400DにおいてMAC重複の発生が防止される。
上記のとおり、第2の実施形態において、フロー処理装置400は、MAC重複の発生を検出し、当該MAC重複の発生をフロー制御装置100に通知する。MAC重複の発生の通知を受けたフロー制御装置100は、MAC重複が発生した仮想ブリッジの各々を、互いに異なる仮想ネットワークにそれぞれ移動させる。その結果、MAC重複となったフレームの各々が互いに異なる仮想ネットワークに属するようになるため、当該フレームの各々に格納されるOVIDは、互いに異なるものとなる。そのため、第2の実施形態では、MAC重複が防止される。
以上、本発明の実施形態を説明したが、本発明は、上記したそれぞれの実施形態に限定されるものではない。本発明は、各実施形態の変形・置換・調整に基づいて実施できる。
また、本発明は、各実施形態を任意に組み合わせて実施することもできる。即ち、本発明は、本明細書の全ての開示内容、技術的思想に従って実現できる各種変形、修正を含む。
また、本発明は、SDN(Software−Defined Network)の技術分野にも適用可能である。
この出願は、2016年3月30日に出願された日本出願特願2016−68843を基礎とする優先権を主張し、その開示の全てをここに取り込む。