(58)【調査した分野】(Int.Cl.,DB名)
演算処理装置と、前記演算処理装置に接続される記憶装置と、1以上のポートを備えるネットワークインタフェースとを備え、複数の転送モードで動作可能なフレーム転送装置であって、
前記複数の転送モードは、第1の転送モード、第2の転送モード及び第3の転送モードを含み、
前記フレーム転送装置は、
前記フレームを受信する受信部と、
前記フレームを送信する送信部と、
前記フレームを送信するポートを決定するポート決定部と、
受信した前記フレームを解析するフレーム解析部と、
前記フレーム解析部によって解析された結果を蓄積する学習部と、
前記フレーム転送装置の転送モードを示すモード情報を保持し、前記モード情報に基づいて前記転送モードを切り替え、前記フレーム転送装置を制御する状態管理部と、
を備え、
前記第1の転送モードでは、
前記ポートから受信した第1のフレームの解析の結果に基づいて、前記第1のフレームの転送処理を実行し、
前記第2の転送モードでは、
他の前記フレーム転送装置が接続されたポートから第2のフレームを受信した場合には、前記第2のフレームの解析の結果に基づいて、前記第2のフレームの転送処理を実行し、
当該他のフレーム転送装置以外の装置が接続されたポートから第3のフレームを受信した場合には、前記第3のフレームを当該他のフレーム転送装置に転送し、
前記第3の転送モードでは、
前記他のフレーム転送装置が接続されたポートから第4のフレームを受信し、かつ、前記第4のフレームに対応する解析の結果が蓄積されている場合には、前記第4のフレームを廃棄し、
前記他のフレーム転送装置が接続されたポートから前記第4のフレームを受信し、かつ、前記第4のフレームに対応する解析の結果が蓄積されていない場合には、前記第4のフレームの解析の結果に基づいて、前記第4のフレームの転送処理を実行し、
前記他のフレーム転送装置以外の装置が接続されたポートから第5のフレームを受信した場合には、前記第5のフレームの解析の結果に基づいて、前記第5のフレームの転送処理を実行することを特徴とするフレーム転送装置。
前記転送モードの切替指示は、IEEE 802.1Qbgに規定され、前記フレーム転送装置及び前記他のフレーム転送装置の状態を示す情報を含むフレームによって送信されることを特徴とする請求項5に記載のフレーム転送装置。
前記転送モードを切り替える場合に、前記他のフレーム転送装置以外の装置が接続されたポートから受信したフレームの転送を所定時間停止することを特徴とする請求項3に記載のフレーム転送装置。
演算処理装置と、前記演算処理装置に接続される記憶装置と、1以上のポートを備えるネットワークインタフェースとを備え、前記各々のポート毎に複数の転送モードで動作可能なフレーム転送装置であって、
前記フレーム転送装置は、ネットワークを介して、他のフレーム転送装置と接続され、
前記フレーム転送装置は、
前記フレームを受信する受信部と、
前記フレームを送信する送信部と、
前記フレームを送信するポートを決定するポート決定部と、
受信した前記フレームを解析するフレーム解析部と、
前記フレーム解析部によって解析された結果を蓄積する学習部と、
前記他のフレーム転送装置の制御を指示する制御フレームを生成するフレーム生成部と、
前記フレーム転送装置の転送モードを示すモード情報を保持し、前記モード情報に基づいて、前記転送モードを切り替えて、前記フレーム転送装置を制御する状態管理部と、
を備え、
前記複数の転送モードは、
前記ポートからフレームを受信した場合に、前記受信したフレームの解析の結果に基づいて、前記フレームを受信したポートを除く前記ポートの中から前記フレームを送信する送信ポートを検索し、前記送信ポートが1個以上検索された場合には前記検索された1個以上のポートから前記フレームを送信し、前記検索された送信ポートが0個の場合には前記フレームを廃棄する第1の転送モードと、
前記ポートからフレームを受信した場合に、前記受信したフレームの解析の結果に基づいて、前記フレームを送信する前記送信ポートを検索し、前記送信ポートが1個以上検索された場合には前記検索された1個以上のポートから前記フレームを送信し、前記検索された送信ポートが0個の場合には前記フレームを廃棄する第2の転送モードと、
を含み、
前記フレーム転送装置は、
前記他のフレーム転送装置が接続される第1のポートから、前記他のフレーム転送装置の前記転送モードの切り替えを要求する第1の制御フレームを送信し、
前記第1のポートにおける前記第1の転送モードと前記第2の転送モードとの間の切替処理を要求する第2の制御フレームを前記第1のポートから受信し、
前記第2の制御フレームに基づいて、前記切替処理を実行し、
前記切替処理の結果を通知する第3の制御フレームを生成し、
前記生成された第3の制御フレームを前記第1のポートから送信することを特徴とするフレーム転送装置。
前記第1の制御フレーム、前記第2の制御フレーム及び前記第3の制御フレームは、IEEE 802.1Qbgに規定され、前記フレーム転送装置及び前記他のフレーム転送装置の状態を示す情報を含むフレームであることを特徴とする請求項9に記載のフレーム転送装置。
第1の演算処理装置、前記第1の演算処理装置に接続される第1の記憶装置及び1以上のポートを有する第1のネットワークインタフェースを有し、前記ポート毎に複数の転送モードで動作可能な第1のフレーム転送装置と、第2の演算処理装置、前記第2の演算処理装置に接続される第2の記憶装置及び1以上のポートを有する第2のネットワークインタフェースを有し、複数の転送モードで動作可能な第2のフレーム転送装置と、を備えるネットワークシステムであって、
前記第1のフレーム転送装置及び前記第2のフレーム転送装置は、ネットワークを介して接続され、
前記第1のフレーム転送装置における前記複数の転送モードは、第1の転送モード又は第2の転送モードを含み、
前記第2のフレーム転送装置における前記複数の動作モードは、第3の転送モード、第4の転送モード又は第5の転送モードを含み、
前記第1のフレーム転送装置は、
前記フレームを受信する第1の受信部と、
前記フレームを送信する第1の送信部と、
前記フレームを送信するポートを決定する第1のポート決定部と、
受信した前記フレームを解析する第1のフレーム解析部と、
前記第1のフレーム解析部によって解析された結果を蓄積する第1の学習部と、
前記第2のフレーム転送装置の制御を指示する制御フレームを生成する第1のフレーム生成部と、
前記フレーム転送装置の転送モードを示すモード情報を保持し、前記モード情報に基づいて、前記転送モードを切り替えて、前記フレーム転送装置を制御する第1の状態管理部と、を有し、
前記第2のフレーム転送装置は、
前記フレームを受信する第2の受信部と、
前記フレームを送信する第2の送信部と、
前記フレームを送信するポートを決定する第2のポート決定部と、
受信した前記フレームを解析する第2のフレーム解析部と、
前記第2のフレーム解析部によって解析された結果を蓄積する第2の学習部と、
前記第1のフレーム転送装置の制御を指示する制御フレームを生成する第2のフレーム生成部と、
前記フレーム転送装置の転送モードを示すモード情報を保持し、前記モード情報に基づいて、前記転送モードを切り替えて、前記フレーム転送装置を制御する第2の状態管理部と、を有し、
前記第1の転送モードでは、
前記第1のフレーム転送装置が、前記ポートから第1のフレームを受信した場合に、前記第1のフレームの解析の結果に基づいて、前記第1のフレームを受信したポートを除く前記ポートの中から前記第1のフレームを送信する送信ポートを検索し、前記送信ポートが1個以上検索された場合には前記検索された1個以上のポートから前記第1のフレームを送信し、前記検索された送信ポートが0個の場合には前記第1のフレームを廃棄し、
前記第2の転送モードでは、
前記第1のフレーム転送装置が、前記ポートから第2のフレームを受信した場合に、前記第2のフレームの解析の結果に基づいて、前記第2のフレームを送信する送信ポートを検索し、前記送信ポートが1個以上検索された場合には前記検索された1個以上のポートから前記第2のフレームを送信し、前記検索された送信ポートが0個の場合には前記第2のフレームを廃棄し、
前記第3の転送モードでは、
前記第2のフレーム転送装置が、前記ポートから受信した第3のフレームの解析の結果に基づいて、前記第3のフレームの転送処理を実行し、
前記第4の転送モードでは、
前記第2のフレーム転送装置が、前記第1のフレーム転送装置が接続される第2のポートから第4のフレームを受信した場合に、前記第4のフレームの解析の結果に基づいて、前記第4のフレームの転送処理を実行し、当該第1のフレーム転送装置以外の装置が接続される前記ポートから第5のフレームを受信した場合に、前記第5のフレームを当該第2のフレーム転送装置に転送し、
前記第5の転送モードでは、
前記第2のフレーム転送装置が、前記第1のフレーム転送装置が接続される前記第2のポートから第6のフレームを受信し、かつ、前記第6のフレームに対応する解析の結果が蓄積されている場合には前記第6のフレームを廃棄し、当該第1のフレーム転送装置以外の装置が接続されるポートから第7のフレームを受信した場合、又は、当該第1のフレーム転送装置が接続される前記第2のポートから前記第6のフレームを受信し、かつ、前記第6のフレームに対応する解析の結果が蓄積されていない場合には前記第6のフレーム又は前記第7のフレームの解析の結果に基づいて、前記第6のフレーム又は前記第7のフレームの転送処理を実行し、
前記ネットワークシステムは、
前記第2のフレーム転送装置が、
前記転送モードの切り替えを要求する第1の制御フレームを受信した場合に、当該第1の制御フレームに基づいて、前記第1のフレーム転送装置に前記転送モードの切り替えを要求する第2の制御フレームを生成し、
前記生成された第2の制御フレームを前記第1のフレーム転送装置に送信し、
前記第1のフレーム転送装置が、
前記第2の制御フレームに基づいて、前記第2のフレーム転送装置が接続される前記ポートの前記転送モードを切り替え、
前記転送モードを切り替えた旨を通知する第3の制御フレームを生成し、
前記第3の制御フレームを前記第2のフレーム転送装置に送信し、
前記第2のフレーム転送装置が、前記第3の制御フレームを受信した後に前記転送モードを切り替えることを特徴とするネットワークシステム。
前記第1の制御フレーム、前記第2の制御フレーム及び前記第3の制御フレームは、IEEE 802.1Qbgに規定され、前記第1のフレーム転送装置及び前記第2のフレーム転送装置の状態を示す情報を含むフレームであることを特徴とする請求項12に記載のネットワークシステム。
【発明を実施するための形態】
【0025】
以下、本発明を実施するための最良の形態を図に即して説明する。なお、概略はそれ以外の説明を補足するための文章であり、正確性及び網羅性よりもわかりやすさを優先して記述する。
【0026】
[第1の実施形態]
(システム及びハードウェアの構成)
図1は、本発明の第1の実施形態における計算機システム構成を説明するブロック図である。
【0027】
図1に示すように、計算機システムは、ブリッジ装置101、サーバ装置102−1、サーバ装置102−2及びノード装置104から構成される。サーバ装置102−1はケーブル105−1を介してブリッジ装置101と接続され、サーバ装置102−2はケーブル105−2を介してブリッジ装置101と接続され、また、ノード装置104はケーブル105−3を介してブリッジ装置101と接続される。
【0028】
以下では、サーバ装置102−1及びサーバ装置102−2を区別しない場合には、サーバ装置102と記載する。また、ケーブル105−1、ケーブル105−2及びケーブル105−3を区別しない場合には、ケーブル105と記載する。
【0029】
本実施形態における計算機システムでは、ブリッジ装置101、サーバ装置102−1、サーバ装置102−2及びノード装置104はイーサネット(登録商標、以下同じ)による通信を実現する。
【0030】
ブリッジ装置101はイーサネットフレームを転送するブリッジ機能を備えるネットワーク装置であり、ネットワークスイッチとも呼ばれる。なお、イーサネットについては、IEEE 802.3に規定されており、ブリッジ機能はIEEE 802.1D及びIEEE 802.1Qに規定されている。
【0031】
ケーブル105はイーサネットによる通信を伝送する媒体であり、金属によるケーブル、光ファイバ等の有線であってもよいし、電波等の無線によるものであってもよいし、L2TP(Layer 2 Tunneling Protocol)のように他の通信により構築された論理的なものであってもよい。
【0032】
サーバ装置102−1、サーバ装置102−2及びノード装置104は、イーサネットに準拠した入出力ポートを有するネットワークノードである。ノード装置104はサーバ装置102と同様の計算機でもよいし、ブリッジ装置やルータ装置を含むネットワーク機器でもよいし、ネットワークを介して接続されるストレージ装置でもよい。また、ノード装置104は、さらに一般化してLocal Area Network(LAN)と呼ばれるネットワークととらえてもよい。
【0033】
本実施形態では、ノード装置104の一例として、サーバ装置102を説明する。なお、サーバ装置102−2は、はサーバ装置102−1と同一の構成であるものとする。また、
図1に示すように、サーバ装置102を含むノード装置104の数は3つに限られるものではなく1つ以上であれば任意の数でよい。例えば、より多くのノード装置104を用意してケーブル105を介してブリッジ装置101とそれぞれ接続し、より多くのノード装置104間でブリッジ装置101を介して通信できるようにしてもよい。
【0034】
図1では、サーバ装置102−1とサーバ装置102−2との間、サーバ装置102−2とノード装置104との間の点線を用いて、ノード装置104の数が任意であることを表現している。以下の説明において用いる図では、構成要素の数が限定されないことを、点線を用いて表現するものとする。
【0035】
また、本実施形態では、ブリッジ装置101、サーバ装置102−1、サーバ装置102−2及びノード装置104は、それぞれ物理的に異なる装置として説明するが、本発明の実施形態はこれに限定されるものではない。
【0036】
例えば、仮想マシンを稼動させる仮想化ソフトウェアを用いて、物理的に同一装置内で複数の仮想マシンを生成し、当該仮想マシンがブリッジ装置101、サーバ装置102−1及びノード装置104の機能を実現させてもよい。このとき、仮想化ソフトウェアを用いた仮想化では、ケーブル105−1、ケーブル105−2及びケーブル105−3は、共有メモリやメモリ間コピー等に置き換えられる。
【0037】
仮想化ソフトウェアを実行することによって生成された仮想マシンを用いることによって、柔軟な接続関係の変更、及びハードウェアの利用効率を高めることが可能となる。
【0038】
なお、本実施形態ではイーサネットによる通信を例に説明するが、本発明はイーサネットに限るものではなく、例えば、無線LAN等の他のデータリンク層(Layer 2)のプロトコルを用いた通信でもよい。他のプロトコルを利用することによって、例えば、通信の広帯域化や通信の信頼性を増加させることを見込め、また、配線の自由度を増すことができる。
【0039】
また、例えば、IEEE 802.1Qbgに規定されるS−channelのように、VLANタグ等によって仮想的に構成された通信路を用いて、構成の柔軟性を確保し、物理的な配線数以上の通信路を実現してもよい。
【0040】
(ブリッジ装置101のハードウェア構成)
図1を用いてブリッジ装置101のハードウェア構成を説明する。
【0041】
ブリッジ装置101は、演算処理装置108、記憶装置109、入出力装置110、ネットワークインタフェース111−1、ネットワークインタフェース111−2及びネットワークインタフェース111−3を備え、各構成が互いに共有バス114を介して接続される。
【0042】
以下では、ネットワークインタフェース111−1、ネットワークインタフェース111−2及びネットワークインタフェース111−3を区別しない場合、ネットワークインタフェース111と記載する。
【0043】
ネットワークインタフェース111−1はケーブル105−1を介してサーバ装置102−1と、ネットワークインタフェース111−2はケーブル105−2を介してサーバ装置102−2と、ネットワークインタフェース111−3はケーブル105−3を介してノード装置104と、それぞれ接続され、各装置間においてイーサネットフレームを送受信する。
【0044】
図1において、ネットワークインタフェース111の数は接続される装置の数に合わせて3つとしたが、1つ又は3つ以上備えていてもよい。複数のネットワークインタフェース111を備える場合、いずれの装置にも接続されていないネットワークインタフェース111があってもよい。
【0045】
演算処理装置108は、Central Processing Unit(CPU)に代表される演算処理装置であり、記憶装置109上に展開されたプログラム(ソフトウェア)を実行する。なお、演算処理装置108は、物理的又は論理的な複数のCPUによって構成されてよい。
【0046】
記憶装置109は、演算処理装置108によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。当該情報には、プログラムの実行中に生成されるデータ、プログラムの実行時に読み出されるデータ及び設定が含まれる。
【0047】
演算処理装置108が、記憶装置109に格納されるプログラムを実行することによって、ブリッジ装置101が有する機能を実現することができる。
【0048】
記憶装置109上に展開されたプログラムは、演算処理装置108によって実行される形式のデータであり、プログラムの内部にデータやプログラムが含まれてもよいし、データの内部にプログラムが含まれてもよく、両者の区別は便宜的なものである。
【0049】
記憶装置109は、例えばメモリ、ハードディスク、若しくは光ディスク等のデータ及びプログラムを保持可能な記憶媒体を含む装置(遠隔地に設置され、ネットワークインタフェース111及び入出力装置110等を介して通信可能な装置を含む)、又はこれらを組み合わせたものから構成される。
【0050】
記憶装置109に格納されるプログラムには、全体制御部120、ポート制御部121−1、ポート制御部121−2及びポート制御部121−3が含まれる。また、記憶装置109に格納されるデータの一例としては、転送ポート管理表124が含まれる。以下では、ポート制御部121−1、ポート制御部121−2及びポート制御部121−3を区別しない場合、ポート制御部121と記載する。
【0051】
全体制御部120は、ブリッジ装置101の全体を制御するためのプログラムである。ポート制御部121は、ネットワークインタフェース111が備える入出力ポートを制御するためのプログラムである。
【0052】
これらの詳細については後述するが、以下のブリッジ装置101に関する説明において、データ及び変数の保存、保持、記憶、記録及び格納等の書込処理、並びに、参照及び取り出し等の読出処理は、記憶装置109に対して実行されるものとする。
【0053】
記憶装置109に格納されるプログラムは、ブリッジ装置101を制御するための機能を論理的に区別するために表したものであり、例えば、すべてプログラムを1つのプログラムとして実行させてもよいし、細分化して複数のスレッド又はプロセス等に分離して実行させてもよい。なお、記憶装置109にはブリッジ装置101を制御するためのプログラムによって生成された他のデータが格納されてもよい。
【0054】
入出力装置110は、ブリッジ装置101に対して情報を入出力するための装置である。入出力装置110は、例えば、スイッチ、キーボード、マウス、マイクロホン、ビデオカメラ、ディスプレイ及びスピーカー等の機器が含まれる。
【0055】
なお、ブリッジ装置101には入出力装置110が直接接続されてもよいし、入出力装置110に接続可能なインタフェースを介して入出力装置110と接続する形態でもよい。また、入出力装置110には、信号ケーブル、又は、電波及び赤外線等の無線を介して行われるシリアル通信などの通信によって接続されるものも含まれる。
【0056】
ブリッジ装置101は、入出力装置110を介して、ブリッジ装置101のユーザ又は管理者からの指示を受け付け、また、結果を出力することが可能となる。
【0057】
ネットワークインタフェース111−1、ネットワークインタフェース111−2及びネットワークインタフェース111−3は、それぞれ、イーサネットフレームを送受信するための入出力ポート125−1、入出力ポート125−2及び入出力ポート125−3を備える。以下では、入出力ポート125−1、入出力ポート125−2及び入出力ポート125−3を区別しない場合には、入出力ポート125と記載する。
【0058】
入出力ポート125は、演算処理装置108が実行するポート制御部121によってそれぞれ制御され、他の機器とイーサネットフレームを用いた通信を行う。以下、入出力ポート125と、当該入出力ポート125を制御するポート制御部121とをまとめてポートと呼ぶ。
【0059】
なお、共有バス114は、ブリッジ装置101の各構成要素間の通信を実現するためのものであるが、本発明は共有バス114に限定されるものではない。各構成要素間で通信できれば、共有バス114を用いる以外の方法によって接続されてもよい。例えば、各構成要素間を直接接続することのよって、要素間の接続を最適化し、処理に必要な消費電力を減らし、また、処理効率を上げることが可能となる。
【0060】
(サーバ装置102のハードウェア構成)
次に、
図1を用いてサーバ装置102のハードウェア構成を説明する。
【0061】
サーバ装置102は、演算処理装置115、記憶装置116、入出力装置117及びネットワークインタフェース118を備え、各構成が互いに共有バス119を介して接続される。
【0062】
ネットワークインタフェース118はケーブル105−1を介してブリッジ装置101と接続され、イーサネットフレームを送受信する。
【0063】
図1に示す例では、ネットワークインタフェース118の数は1つとしたが、1つ以上であれば任意の数でよく、ネットワークの冗長化及び広帯域化を実現するために、サーバ装置102が複数のネットワークインタフェース118を備えてもよい。
【0064】
演算処理装置115は、Central Processing Unit(CPU)に代表される演算処理装置であり、記憶装置116上に展開されたプログラム(ソフトウェア)を実行する。なお、演算処理装置115は、物理的又は論理的な複数のCPUによって構成されてよい。
【0065】
記憶装置116は、演算処理装置115によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。当該情報には、プログラムの実行中に生成されるデータ、プログラムの実行時に読み出されるデータ及び設定が含まれる。
【0066】
演算処理装置115が、記憶装置116に格納されるプログラムを実行することによって、サーバ装置102が有する機能を実現することができる。
【0067】
記憶装置116上に展開されたプログラムは、演算処理装置115によって実行される形式のデータであり、プログラムの内部にデータやプログラムが含まれてもよいし、データの内部にプログラムが含まれてもよく、両者の区別は便宜的なものである。
【0068】
記憶装置116は、例えば、メモリ、ハードディスク、若しくは光ディスク等のデータ及びプログラムを保持可能な記憶媒体を含む装置(遠隔地に設置され、ネットワークインタフェース118又は入出力装置117等を介して通信可能な装置を含む)、又はこれらを組み合わせたものから構成される。
【0069】
記憶装置116に格納されるプログラムには、EdgeRelay128及び仮想化ソフトウェア129が含まれる。また、記憶装置116に格納されるデータの一例としては、仮想マシン130−1及び仮想マシン130−2が含まれる。以下、仮想マシン130−1及び仮想マシン130−2を区別しない場合には、仮想マシン130と記載する。
【0070】
EdgeRelay128は、仮想的なネットワークスイッチの機能を実現するプログラムであり、ブリッジ装置101と同様の構成をソフトウェアとして提供する。従って、EdgeRelay128の内部には、ブリッジ装置101における全体制御部120、ポート制御部121、転送ポート管理表124及び入出力ポート125等のプログラム及びデータに対応するものが含まれる。なお、EdgeRelay128の詳細については後述する。
【0071】
仮想化ソフトウェア129は、ハイパバイザとも呼ばれ、サーバ装置102のような仮想的な計算機を動作させるプログラムである。仮想化ソフトウェア129は、仮想マシン130のような仮想マシンに対応するデータを読み出し、それぞれのデータに従って仮想的な計算機として動作させる。仮想化ソフトウェア129を用いることによってサーバ装置102上に複数の仮想的な計算機を動作させることができる。
【0072】
仮想マシン130は、仮想化ソフトウェア129を用いて仮想的に動作する計算機の実態であるデータであり、仮想的な計算機の状態、記憶装置116に格納されるプログラム及びデータ等が含まれる。
図1に示す例では、サーバ装置102に2つ仮想マシン130を動作させる例を示しているが、仮想マシン130の数は任意である。例えば、2つ以上の仮想マシン130を動作させて、サーバ装置102上でより多くの処理を実行させて利用効率を高めてもよい。
【0073】
なお、仮想化ソフトウェア129及び仮想マシン130は一般的なものであるため詳細な説明は省略する。
【0074】
なお、以下のサーバ装置102に関する説明において、データ及び変数の保存、保持、記憶、記録及び格納等の書込処理、並びに、参照及び取り出し等の読出処理は、記憶装置116に対して実行されるものとする。
【0075】
記憶装置116に格納されるプログラムは、サーバ装置102を制御するための機能を論理的に区別するために表したものであり、例えば、すべてのプログラムを1つのプログラムとして実行させてもよいし、細分化して複数のスレッド又はプロセス等に分離して実行させてもよい。なお、記憶装置116にはサーバ装置102を制御するためのプログラムによって生成された他のデータが格納されてもよい。
【0076】
入出力装置117は、サーバ装置102に対して情報を入出力するための装置である。入出力装置117は、例えば、スイッチ、キーボード、マウス、マイクロホン、ビデオカメラ、ディスプレイ及びスピーカー等の機器が含まれる。
【0077】
なお、サーバ装置102には、入出力装置117が直接接続されてもよいし、入出力装置に接続可能なインタフェースを介して入出力装置117に接続する形態でもよい。また、入出力装置117には、信号ケーブル、又は、電波及び赤外線等の無線を介して行われるシリアル通信などの通信によって接続されるものも含まれる。
【0078】
サーバ装置102は、入出力装置117を介して、サーバ装置102のユーザ又は管理者からの指示を受け付け、また、結果を出力することが可能となる。
【0079】
ネットワークインタフェース118は、演算処理装置108が実行するEdgeRelay128又は仮想化ソフトウェア129の指示にしたがって、他の機器とイーサネットフレームを用いた通信を行う。EdgeRelay128又は仮想化ソフトウェア129は、ソフトウェアによって仮想的に生成されたネットワークインタフェース、又は、ネットワークインタフェース118を用いて他の機器や構成要素と通信する。
【0080】
なお、共有バス119は、サーバ装置102の各構成要素間の通信を実現するためのものであるが、本発明は共有バス119に限定されるものではない。各構成要素間で通信できれば、共有バス119を用いる以外の方法によって接続されてもよい。例えば、各構成要素間を直接接続することのよって、要素間の接続を最適化し、処理に必要な消費電力を減らし、また、処理効率を上げることが可能となる。
【0081】
ノード装置104は、イーサネットを用いた通信を行う機器であり、例えば、ブリッジ装置101等のネットワーク機器やサーバ装置102等の計算機であるが、本発明に特有の構成を必要とするものではないため説明は省略する。
【0082】
(システム及びハードウェアの変形例)
なお、
図1に示す計算機システムの構成は一例であり、ブリッジ装置101又はサーバ装置102の構成要素の個数は
図1に示すものに限定されない。例えば、入出力装置110及び入出力装置117等を2つ用意して冗長化し、また、機能を分担してもよい。
【0083】
また、本発明は、記憶装置109及び記憶装置116に格納されたプログラムによって実現される機能のうち、一部又は全部の機能をハードウェアとして実装してもよい。ハードウェアとして実装することによって、例えば、処理の高速化や低消費電力化が可能となる。
【0084】
また、当該ハードウェアが備える機能を、仮想化ソフトウェアを用いてプログラムとして実現してもよい。ハードウェアが備える機能をプログラムとして実現することによって、例えば、設置スペースを削減し、管理を単純化することができる。
【0085】
また、プログラムによって実現される機能の構成は後述する構成に限るものではなく、複数の機能が統合される構成、又は1つの機能が複数に分割される構成でもよい。また、各機能によって実行される処理の順序についても、後述する順序に限るものではなく、処理の依存関係が許すならば、並列で同時に実行し、また、処理の実行順序を入れ替えて実行してもよい。例えば、処理を並列実行することによって処理時間を短縮でき、実行順序を入れ替えることによって待ち時間を減らすことができる。
【0086】
図2は、本発明の第1の実施形態における計算機システムの論理的な構成を説明するブロック図である。
【0087】
サーバ装置102では、演算処理装置115がEdgeRelay128を実行することによって仮想的なネットワーク機器として動作し、演算処理装置115が仮想化ソフトウェア129を実行することによって仮想的な計算機である仮想マシン130−1及び仮想マシン130−2がサーバ装置102上で稼動する。
【0088】
EdgeRelay128、仮想マシン130−1及び仮想マシン130−2が、イーサネットフレームを送受信する主体となる。サーバ装置102内においてEdgeRelay128、仮想マシン130−1及び仮想マシン130−2の論理的な接続は、
図2に示すような接続関係となっている。
【0089】
EdgeRelay128は、仮想ケーブル211−1を介して仮想マシン130−1と接続され、仮想ケーブル211−2を介して仮想マシン130−2と接続される。以下、仮想ケーブル211−1及び仮想ケーブル211−2を区別しない場合には、仮想ケーブル211と記載する。
【0090】
仮想ケーブル211は、ケーブル105と同様の機能を仮想的に実現したものであり、共有メモリ又はメモリ間のコピー等によって、仮想マシン130及びEdgeRelay128から送信されたフレームが、対向装置(仮想マシン130及びEdgeRelay128等の仮想的な機器、又は、ブリッジ装置101等の物理的な機器)に送信される。
【0091】
また、EdgeRelay128は、ケーブル105−1を介してブリッジ装置101とフレームを送受信する。ケーブル105−1と仮想ケーブル211とは物理と論理との違いはあるが、いずれも構成要素間を接続するという点では同一のものである。仮想化ソフトウェア129は、EdgeRelay128が仮想ケーブル211をケーブル105と同様に扱えるように制御する。なお、仮想化ソフトウェア129における制御は、仮想ネットワークインタフェース、デバイス仮想化等の名称で一般的な技術であるため、説明は省略する。
【0092】
本実施形態においては、例えば、仮想マシン130−1から仮想マシン130−2宛にフレームが送信された場合、後述するEdgeRelay128のモードに従ってフレームの伝送経路が異なる。すなわち、EdgeRelay128のみを経由する経路か、EdgeRelay128及びブリッジ装置101の両方を経由する経路のいずれかの伝送経路を介してフレームが伝達される。
【0093】
EdgeRelay128及びブリッジ装置101の両方を経由する伝送経路では、最初にEdgeRelay128を通り、次にブリッジ装置101を通り、その後、EdgeRelay128を通ってフレームが伝達される。
【0094】
前述した一例のように、本実施形態は、送信元の仮想マシン130と、宛先又は届けられる先(ブロードキャストフレーム等)の仮想マシン130とが同一のサーバ装置102内にある場合、EdgeRelay128のモードによってフレームの伝達経路が変わる。
【0095】
また、本実施形態では、EdgeRelay128のモードと整合がとれるようにブリッジ装置101のモードも切り替えられるため、通信を維持した状態でEdgeRelay128のモードを切り替えられる。そのため、本実施形態では、伝達経路を動的に切り替えることができる。
【0096】
以下、前述したEdgeRelay128及びブリッジ装置101のモードと、モードの切り替え方法について説明する。
【0097】
(ソフトウェアの構成)
図3は、本発明の第1の実施形態におけるEdgeRelay128及びブリッジ装置101のソフトウェア構成を示すブロック図である。
【0098】
EdgeRelay128及びブリッジ装置101は、仮想的な装置と物理的な装置という違いはあるが、いずれもネットワーク機器として動作し、そのソフトウェアの構成は同一であってもよいため、同一の図を用いて説明する。
図3では、主に、ブリッジ装置101を例に説明し、EdgeRelay128と違いのある場合を除き、EdgeRelay128としての説明は省略する。
【0099】
なお、
図3において、四角は実行されるプログラムによって実現される処理ブロックを表す。また、処理ブロック間の矢印は、矢印の方向に情報又は指示及び指令が伝送されることを示す。処理ブロック間で伝送される情報又は指示及び指令については後述する。
【0100】
ブリッジ装置101は、全体制御部120、ポート制御部121−1、ポート制御部121−2、入出力ポート125−1及び入出力ポート125−2を備える。
図1で説明したようにポートの数は任意であるため、
図3ではポートを2つとし、ポート制御部121−3及び入出力ポート125−3に対応するポートは省略している。
【0101】
EdgeRelay128の場合は、全体制御部120、ポート制御部121−1、ポート制御部121−2、入出力ポート125−1及び入出力ポート125−2は、EdgeRelay128にモジュールとして含まれるものとする。
【0102】
なお、本実施形態では各ポートのソフトウェア構成はいずれも同一とし、ポート番号及び役割、接続される対向装置等によって動作を変更するものとするが、それぞれのポートに適したソフトウェア構成としてもよい。例えば、ポート毎にソフトウェア構成を変更して不要な機能を省略し、コードサイズを削減してもよい。なお、ポートを含めたブリッジ装置101及びEdgeRelay128の動作については後述する。
【0103】
また、全体制御部120の数は複数でもよく、例えば、ポートと同じ数だけ全体制御部120を用意し、各全体制御部120がポート毎に並列処理を実行することによって処理時間を短縮する構成でもよい。また、複数のポート制御部121を統括する制御部を追加して、当該制御部を全体制御部120が制御するように処理を階層化して、全体制御部120の処理を削減することによって制御を単純化してもよい。
【0104】
ブリッジ装置101は、入出力ポート125−1及び入出力ポート125−2を介してイーサネットフレームを送受信する。ポート制御部121−1及びポート制御部121−2は、それぞれ、入出力ポート125−1及び入出力ポート125−2を介して送信する情報及び受信した情報を、再度送受信するか否かを制御する。
【0105】
また、ポート制御部121−1及びポート制御部121−2は、必要に応じて、互いに、ポート間で情報を移動し、またコピーする。
【0106】
全体制御部120は、ポート制御部121−1及びポート制御部121−2を介して各ポートで送受信する情報を制御し、また、外部からの入力、設定及び受信した情報に基づいて動作を変更する。
【0107】
ブリッジ装置101は、各構成要素を用いて、あるポートが受信したイーサネットフレームを適切なポートから送信し、イーサネットフレームの通信を中継するブリッジ機能を実現する。なお、フレームの内容やブリッジ装置101の状態によってはポートからフレームが送信されないこともある。
【0108】
全体制御部120は、状態管理部306、制御フレーム処理部307、制御フレーム生成部308、配送ポート決定部309及びポート学習部310から構成される。
【0109】
状態管理部306は、各ポート及び装置全体のモード、状態及び設定を管理する。制御フレーム処理部307は、接続された対向装置から受信したフレームのうち対向装置(装置全体又はポート)の状態を通知する制御フレームを処理して情報を抽出する。
【0110】
制御フレーム生成部308は、自装置(又は自ポート)の状態を対向装置に通知する制御フレームを生成する。配送ポート決定部309は、自装置(又は自ポート)の状態、及び受信したフレームの宛先等の内容に基づいて、受信したフレームを配送(送信)するポートを決定する。
【0111】
ポート学習部310は、受信したフレームの内容から各ポートが受信したフレームの送信元等の情報を保持する。ポート学習部310が保持する情報は、配送ポートを決定するときに用いられる。
【0112】
ポート制御部121は、フレーム分類/情報抽出部311、フレーム蓄積部312及び送受信制御部313から構成される。
【0113】
フレーム分類/情報抽出部311は、フレームから必要な情報を抽出し、適切な構成要素に、抽出された情報を出力する。フレーム蓄積部312は、受信したフレーム及び送信するフレームを保持する。送受信制御部313は、フレームの送信及び受信の可否を制御する。
【0114】
入出力ポート125は、フレーム受信部314及びフレーム送信部315から構成される。フレーム受信部314は、フレームを受信する。フレーム送信部315は、フレームを送信する。
【0115】
以下では、どのようにして情報、指示及び指令が各構成要素間で伝達されるかを説明する。
【0116】
まず、ブリッジ装置101への指示は2通りの経路で行われる。
【0117】
ひとつは、入出力装置110又はプログラム起動時の引数、設定ファイル、他のプログラムからの通知を介して指示が行われる。当該指示は、全体制御部120の状態管理部306に入力される。
【0118】
もうひとつは、ネットワークインタフェース111を介した制御フレームを用いて指示が行われる。当該指示を含む制御フレームは、入出力ポート125及び対応するポート制御部121を経由して制御フレーム処理部307に伝達され、さらに、状態管理部306に入力される。
【0119】
状態管理部306は、現在の状態と、入力された指示とに基づいて、新しい状態を決定する。ブリッジ装置101の動作は、状態に基づいて決定される。当該状態の決定方法(状態遷移)及び各状態におけるブリッジ装置101の動作については後述する。また、制御フレームの内容及び形式に関しても後述する。
【0120】
次に、入出力ポート125から受信したイーサネットフレームを適切なポートから送信するためのブリッジ機能の実現方法について説明する。
【0121】
ブリッジ装置101に対してフレームが送信されると、当該フレームは、ネットワークインタフェース111を通してフレーム受信部314によって受信される。フレーム受信部314は、フレーム単位で処理を実行する。
【0122】
ネットワークインタフェース111は、ケーブル105等の媒体を介して伝送される光信号及び電気信号からフレームへの変換を行う。なお、EdgeRelay128が仮想ケーブル211を介してフレームを受信した場合、記憶装置116上にて受信処理が実現されるため、前述した変換処理は通常は必要ない。ただし、記憶装置116上の表現(例えば、エンディアンやビット順序等)を変更する等、フレームを扱う上で必要がある場合にはフレームへの変換処理が実行されてもよい。
【0123】
フレーム受信部314は、受信したフレームをフレーム蓄積部312に格納し、当該フレームを参照するための記憶装置116上のアドレスをフレーム分類/情報抽出部311に伝達する。
【0124】
なお、フレーム受信部314がフレーム分類/情報抽出部311に伝達する情報には、記憶装置116上のアドレスが必ず含まれている必要はなく、当該フレームを参照するために必要な情報が含まれていればよい。例えば、フレーム受信部314は、フレームの優先度等、フレーム内容に応じてフレームを分類して異なるキューに格納し、キュー番号及びキュー内の位置(順序等)をフレーム分類/情報抽出部311に伝達してもよい。この場合、キュー毎にフレームを区別して、優先度毎に異なる扱いを行ってもよい。
【0125】
フレーム分類/情報抽出部311は、フレーム受信部314から伝達された情報を用いて、フレーム蓄積部312にアクセスしてフレームの内容を読み出し、読み出されたフレームの内容に基づいてフレームを分類する。具体的には、以下のような処理が実行される。
【0126】
イーサネットフレームの宛先(Destination)Mac(Media Access Control)アドレスから当該フレームが制御フレームであると判定された場合、フレーム分類/情報抽出部311は制御フレーム処理部307にフレーム内容を伝達する。
【0127】
一方、制御フレーム以外のフレームであると判定された場合、フレーム分類/情報抽出部311は、ポート番号、当該フレームのメモリアドレス、フレームから抽出された宛先MACアドレス、送信元MACアドレス、VLAN(Virtual LAN) ID等を配送ポート決定部309に伝達する。また、フレーム分類/情報抽出部311は、ポート番号、並びに、フレームから抽出した送信元MACアドレス及びVLAN IDをポート学習部310に伝達し、さらに、フレームを受信したポート番号と制御フレームであるか否か示す情報とを状態管理部306に伝達する。
【0128】
なお、フレーム分類/情報抽出部311が伝達する情報は、前述した情報に限るものではない。例えば、フレームの内容に応じてフレームを複数のキューに格納し、キュー番号を配送ポート決定部309に伝達して、フレームの内容毎に配送ポートを変更してもよい。また、MACアドレス及びVLAN IDではなく、これらの組み合わせから決定される番号Forwarding IDを配送ポート決定部309及びポート学習部310に伝達して、伝達する情報を減らしてもよい。この場合、Forwarding IDに基づいて配送ポートが決定される。また、VLAN IDを省略した構成とし、構成を簡素化してもよい。また、VLAN IDをフレームから抽出するのではなく、ポート毎に予め定めた値を用いてもよい。また、制御フレーム処理部307にフレームの内容ではなく当該フレームを格納した記憶装置116上のアドレスを伝達することによって伝達する情報を削減してもよい。
【0129】
また、イーサネットフレームの宛先及び送信元を識別する情報としてMACアドレス以外の情報として、例えば、IP(Internet Protocol)アドレス等を用いてもよい。
【0130】
制御フレーム処理部307は、フレーム分類/情報抽出部311から伝達されたフレームの内容からLLDP(Link Layer Discovery Protocol)のTLV(type−length−value)を抽出し、状態管理部306に伝達する。
【0131】
なお、LLDPのTLVはIEEE 802.1ABとして標準化されおり、後述するように、本実施形態ではLLDPのTLVのうち、IEEE 802.1Qbgに規定されるEVB(Edge Virtual Bridging) TLVのみを用いる。ただし、接続機器の管理等に役立てるために、Chassis ID TLV等、その他の情報を使用してもよい。
【0132】
ポート学習部310は、状態管理部306から伝達された指示がポート学習を示す場合のみポート学習を実行する。
【0133】
ポート学習では、フレーム分類/情報抽出部311から伝達されたMACアドレスとVLAN IDとに基づいて転送ポート管理表124を参照して一致するエントリが検索される。一致するエントリが見つかった場合には、当該エントリのポート番号が更新される。また、一致するエントリが見つからない場合には、フレーム分類/情報抽出部311から伝達されたMACアドレス、VLAN ID及びポート番号を対応づけた新たなエントリが転送ポート管理表124に生成される。
【0134】
転送ポート管理表124では、古いエントリは削除される。なお、本発明において、ポート学習に相当する機能は必須の構成ではなく、例えば、予めエントリを生成しておき、更新処理を省略することによってエントリの検索処理を高速化してもよい。
【0135】
なお、転送ポート管理表124におけるエントリ追加及び削除等のポート学習の詳細に関しては、MACアドレステーブル又はForwarding Databaseとしてブリッジ装置101において一般的な技術であるため、本実施形態では説明を省略する。
【0136】
配送ポート決定部309は、状態管理部306が管理する状態に従って、フレーム分類/情報抽出部311から伝達されたポート番号、宛先MACアドレス、送信元MACアドレス及びVLAN IDを用いて当該フレームを配送するポート(以下、配送ポートとも呼ぶ)を決定する。また、配送ポート決定部309は、フレーム分類/情報抽出部311から伝達されたポート番号及び当該フレームのメモリアドレスを、決定された配送ポートに対応する送受信制御部313に伝達する。
【0137】
なお、配送ポートの数は、複数個でもよいし、0個でもよい。配送ポートが複数個の場合には、各配送ポートに同一のフレームが配送される。配送ポートが0個の場合には、フレームは転送されない。すなわち、フレームは廃棄される。また、後述する一部のモードにおいて、ブロードキャストフレームは受信ポートを除く全ポートに配送される。
【0138】
なお、配送ポート決定部309は、後述する所定のモードではポート学習部310に宛先MACアドレス、送信元MACアドレス及びVLAN IDを伝送する。ポート学習部310は伝送された情報に一致するエントリ(宛先と送信元とは別エントリ)を検索し、一致するエントリが見つかった場合にはポート番号を、一致するエントリが見つからなかった場合にはエントリが見つからなかった旨を配送ポート決定部309に伝達する。
【0139】
配送ポート決定部309は、ポート学習部310から伝達された検索結果に含まれるポート番号に対応するポートを配送ポートとして決定し、又は、当該ポートを除くポートの中から配送ポートを決定し、状態管理部306に配送ポートを通知する。また、配送ポート決定部309は、送受信制御部313に当該フレームが保存されているポート番号とメモリアドレスとを通知してフレームを配送する。
【0140】
前述した配送ポート決定部309における動作は、ブリッジ装置101及びEdgeRelay128のモードに従って動作が異なる。なお、詳細については後述する。
【0141】
また、状態管理部306は、現在の状態、Chassis IDやポートを識別するID、有効期限、ポートのMACアドレス及び宛先MACアドレスを制御フレーム生成部308に伝送する。これによって、制御フレームが送信される。なお、制御フレームが送信される契機については後述する。
【0142】
状態管理部306から制御フレーム生成部308に伝送される情報のうち、状態については後述する。また、伝送される情報のうち、状態以外の情報については設定から取得されるが、具体的な情報については、LLDPの必須TLVとして一般的な内容であるため本実施形態では説明は省略する。
【0143】
制御フレーム生成部308は、状態管理部306から伝送された情報がTLVとして埋め込まれたLLDPフレームを生成し、生成されたLLDPフレームを全ポートのフレーム蓄積部312に保存する。また、制御フレーム生成部308は、各ポートの送受信制御部313にポート番号と、保存されたLLDPフレームを参照するための記憶装置116上のアドレスとを伝送する。
【0144】
なお、一つのポートのフレーム蓄積部312にのみ前述のLLDPフレームを保存し、当該ポートのポート番号と当該LLDPフレームを参照するための記憶装置116上のアドレスとを全ポートのフレーム蓄積部312に通知することによってLLDPフレームの保存に必要な記憶容量を節約してもよい。また、前述のLLDPフレームはPort ID等、ポート毎に異なる内容を含んでもよい。また、一部のポートにおいてLLDPフレームの送信を抑止し、LLDPフレームが不要なリンクの帯域を節約してもよい。
【0145】
なお、制御フレーム生成部308が生成するLLDPフレームの内容については後述する。
【0146】
EdgeRelay128において、EdgeRelay128の状態によって、状態管理部306は送受信制御部313に対して、フレーム受信の一時停止又は再開を指示することがある。このとき、送受信制御部313は、前述の一時停止又は再開の指示を受け付けると、フレーム分類/情報抽出部311にフレーム受信の一時停止又は再開の指示を伝達する。なお、本指示に関係するEdgeRelay128の状態は後述する。
【0147】
フレーム分類/情報抽出部311は、送受信制御部313からフレーム受信の一時停止の指示を受け付けた後、フレームを受信した場合、フレーム蓄積部312にフレームを保存するが、配送ポート決定部309及びポート学習部310への情報の伝達を一時停止する。フレーム分類/情報抽出部311は、送受信制御部313からフレーム受信の再開の指示を受け付けると情報の伝達を再開する。また、フレーム分類/情報抽出部311は、前述のフレーム受信の一時停止中では、状態管理部306にフレームが保存された旨を通知する。
【0148】
フレーム受信の一時停止中に保存されたフレームに関する情報は、フレーム受信が再開された後、受信した順に配送ポート決定部309及びポート学習部310に伝達される。
【0149】
なお、フレーム分類/情報抽出部311は、フレーム受信の一時停止中でも制御フレーム処理部307へ情報を伝達するが、配送ポート決定部309及びポート学習部310への情報の伝達と同様に、制御フレーム処理部307への情報の伝達も一時停止し、再開の指示を受けた後に再開するように簡素化してもよい。前述の伝達の一時停止及び再開は、キューという仕組みによって実現されるが、情報処理においてキューはFirst In First Out(FIFO)とも呼ばれ一般的であるので説明を省略する。
【0150】
また、フレーム受信の一時停止及び再開は必ずしも前述した方法である必要はなく、例えば、フレーム受信の一時停止中は送受信制御部313がフレーム全体を受信した順にキューに入れて、再開後にフレームを順に取り出して送受信制御部313が処理する方法でもよい。これによって、プログラムを簡素化できる。
【0151】
次に、送受信制御部313のその他処理について説明する。
【0152】
フレーム蓄積部312は、ユーザからの指示があったときに、送受信制御部313に対して、受信フレームの廃棄を指示する。なお受信フレームの廃棄の契機はユーザからの指示に限るものではなく、例えば、状態管理部306が管理している状態が所定の状態となったときを契機として受信フレームの廃棄を行うようにして、特定条件下でフレームを廃棄できるようにしてもよい。
【0153】
送受信制御部313は、フレーム蓄積部312から受信フレームの廃棄を指示された場合、フレーム分類/情報抽出部311に受信フレームの廃棄を指示する。フレーム分類/情報抽出部311は、送受信制御部313から受信フレームの廃棄の指示を受け付けた後にフレームを受信した時、配送ポート決定部309、ポート学習部310及び制御フレーム処理部307への情報の伝達を停止し、受信フレームの廃棄の指示が解除された場合も、フレーム受信の停止中に受信したフレームに関する情報を伝達しない。
【0154】
なお、フレーム分類/情報抽出部311は、フレーム受信の停止中に受信したフレームに使用された記憶領域の開放をフレーム蓄積部312に指示し、当該指示を受けたフレーム蓄積部312は当該記憶領域を開放する。
【0155】
本発明は前述の処理によって受信フレームの廃棄を実現するが、前述の処理に限るものではなく、例えば、フレーム受信部314の処理を停止して受信フレームの実質的な廃棄を実現してもよい。
【0156】
次に、ポートからフレームを送信する場合の動作について説明する。
【0157】
送受信制御部313は、制御フレーム処理部307又は配送ポート決定部309から伝送された送信対象のフレームが保存されるフレーム蓄積部312のポート番号及び記憶装置116上のアドレスが、フレームを送信するポートと異なる場合、送信対象のフレームが保存されるフレーム蓄積部312からフレームを読み出して、フレームを送信するポートのフレーム蓄積部312に保存する。
【0158】
そして、送受信制御部313は、送信対象のフレームをフレーム送信部315に伝送するようにフレーム蓄積部312に指示する。フレーム蓄積部312は、前述の指示に従って、フレーム送信部315に送信対象のフレームを伝送する。フレーム送信部315は、フレーム蓄積部312から伝送されたフレームを送信する。
【0159】
なお、送受信制御部313は、送信済みのフレームの削除をフレーム蓄積部312に指示し、当該フレーム蓄積部312がフレームを削除する。ただし、複数のポートからフレームが送信される場合に整合性を保ったフレームの削除方法としては、情報処理において参照カウントとして一般的な技術であるため、本実施形態での説明を省略する。
【0160】
また、本実施形態ではポート毎にフレーム蓄積部312を持つ構成としたが、フレームを蓄積するフレーム蓄積部312を記憶装置116内で集約し、管理することによって、記憶装置116内のコピー回数を減らして処理を高速化し、記憶装置116の利用効率を高めてもよい。記憶装置116の管理に関しては、情報処理においてメモリ確保やメモリ管理等として一般的な技術であるため、本実施形態での説明を省略する。
【0161】
図4は、本発明の第1の実施形態における転送ポート管理表124の一例を示す説明図である。
【0162】
転送ポート管理表124は、MACアドレス401、VLAN_ID402及びポートID403を含むエントリから構成される。
【0163】
MACアドレス401は、イーサネットにおけるエンティティを識別するためのアドレスである。VLAN_ID402は、IEEE 802.1Qに規定されるイーサネットフレームにおけるVLANの識別子である。異なるVLAN IDを含むフレームは、別のVLANとして扱われる。ポートID403は、複数あるポート(入出力ポート125及び入出力ポート125対応するポート制御部121を表す)を識別するための識別子である。
【0164】
なお、仮想マシン130の場合、MACアドレス401には仮想的なMACアドレスが格納され、ポートID403には仮想的なポートIDが格納される。
【0165】
ポート学習部310は、MACアドレス401及びVLAN_ID402が、フレーム分類/情報抽出部311から伝達された送信元MACアドレス及びVLAN IDに一致するエントリを検索する。
【0166】
一致するエントリが見つからない場合、ポート学習部310は、送信元MACアドレス及びVLAN IDをそれぞれMACアドレス401及びVLAN_ID402に格納し、伝送されたポート番号をポートID403に格納して新たなエントリを追加する。
【0167】
一致するエントリが見つかった場合、ポート学習部310は、当該エントリのポートID403を伝達されたポート番号に更新する。
【0168】
また、ポート学習部310は、MACアドレス401及びVLAN_ID402が、配送ポート決定部309から伝達されたMACアドレス及びVLAN IDに一致するエントリを検索する。
【0169】
検索の結果、一致するエントリが見つかった場合には当該エントリのポートID403を、一致するエントリが見つからなかった場合にはエントリが見つからなかった旨を配送ポート決定部309に伝達する。
【0170】
転送ポート管理表124は、IEEE 802.1QにおけるFiltering Databaseに対応する。なお、転送ポート管理表124とフレームの情報と照合して当該フレームを転送するポートを決定する機能が実現できれば、転送ポート管理表124の構成は必ずしも
図4に示す情報のみの構成に限定されない。例えば、入力ポートを識別するポートIDと転送先のポートID403との対応表という構成も考えられ、VLAN_ID402を省いた構成(IEEE 802.1Dに規定されるブリッジ機能)としてもよい。
【0171】
また、転送ポート管理表124は、入力されたフレームの送信元MACアドレス、VLAN ID及びポート番号(ポートID)を対応づけたエントリとして追加し、一定時間使用されなかったエントリを削除するポート学習によって管理される。なお、本発明はこれに限るものではなく、例えば、固定的なエントリを作成し、ポート学習の処理を省略してもよい。
【0172】
(制御フレーム)
前述したように、制御フレームは、ブリッジ装置101及びEdgeRelay128の制御フレーム生成部308によって生成され、フレーム送信部315から送信される。制御フレームは、所定の周期、又は特定の状態変化があった場合に送信される。制御フレームの送信契機にはLLDPとして規定されているものに加え、後述する状態遷移に伴うものも含まれる。
【0173】
送信された制御フレームは、対向装置(ブリッジ装置101又はEdgeRelay128)のフレーム受信部314が受信し、制御フレーム処理部307が当該フレームを処理する。制御フレームは、IEEE 802.1ABに規定されるLLDPフレームとして構成され、本実施形態では、LLDP TLVの1つとしてIEEE 802.1Qbgに規定されるEVB TLVを用いて自装置(ブリッジ装置101の各ポート又はEdgeRelay128)の状態情報を対向装置に伝達する。また、対向装置は、受信した状態情報に基づいて状態遷移の処理を実行する。
【0174】
図5は、本発明の第1の実施形態におけるEVB TLVの構成を示す説明図である。
【0175】
図5では、EVB TLVのどの部分にどのような状態情報を埋め込んで伝えるかを示している。
【0176】
本発明では、ブリッジ装置101はポート毎に状態情報RRCAPと状態情報RRCTRとを保持し、また、EdgeRelay128は状態情報RRREQと状態情報RRSTATとを保持する。前述した状態情報の詳細については後述する。
【0177】
本発明では、ブリッジ装置101は、自装置の制御フレームを送信するポートの状態情報RRCAP及び状態情報RRCTRを、EVB_Bridge_status501に含まれるRRCAP504及びRRCTR505にそれぞれ埋め込み、対向装置であるEdgeRelay128の状態情報RRREQ及び状態情報RRSTATをEVB_station_status502に含まれるRRREQ506及びRRSTAT507にそれぞれ埋め込み、さらに、EVB_Mode503にはEVB Bridgeであることを示す値「1」を埋め込んでEVB TLVを生成し、制御フレームとして送信する。
【0178】
また、本発明では、EdgeRelay128は、対向装置であるブリッジ装置101の当該EdgeRelay128が接続されたポートの状態情報RRCAP及び状態情報RRCTRをEVB_Bridge_status501に含まれるRRCAP504及びRRCTR505にそれぞれ埋め込み、自装置の状態情報RRREQ及び状態情報RRSTATをEVB_station_status502に含まれるRRREQ506及びRRSTAT507にそれぞれ埋め込み、さらに、EVB_Mode503にはEVB stationであることを示す値「2」を埋め込んでEVB TLVを生成し、制御フレームとして送信する。
【0179】
また、EdgeRelay128は、対向装置から送信された制御フレームから対向装置(ポート)の状態情報を取得し、取得された状態情報を用いて制御フレームを生成する。なお、対向装置から制御フレームを受信していない場合には、対向装置の状態情報をすべて「0」とした制御フレームが生成される。
【0180】
なお、IEEE 802.1Qbgの標準に規定されるEVB TLVにおいて、
図5に挙げたEVB_Bridge_status501、EVB_station_status502、EVB_Mode503、RRCAP504、RRCTR505、RRREQ506及びRRSTAT507は、標準における同名の情報であるものとし、それ以外の情報はIEEE 802.1Qbgの標準に従うものとする。
【0181】
すなわち、状態情報が埋め込まれたEVB TLVは、IEEE 802.1Qbgの標準に従ったEVB TLVとして扱うことができる。従って、状態情報が埋め込まれたEVB TLVを含む制御フレームはLLDPフレームであり、IEEE 802.1ABの標準に従うものとする。
【0182】
また、本発明において使用される制御フレームは前述したLLDPフレームに限るものではなく、前述した状態情報を通知することができるフレームであれば、前述の形式に限定されるものではない。例えば、ブリッジ装置101は状態情報RRCAP及び状態情報RRCTRのみを、EdgeRelay128は状態情報RRREQ及び状態情報RRSTATのみ含むフレームを送信して、状態情報の伝達に必要な転送量を節約してもよい。
【0183】
次に、本発明に用いる状態情報RRCAP、状態情報RRCTR、状態情報RRREQ及び状態情報RRSTATの考え方を説明する。
【0184】
本発明では、ブリッジ装置101は、Reflective Relayと呼ばれる機能を有する。Reflective Relayは、イーサネットのブリッジ機能において、フレームを受信したポートから、さらに当該フレームを送信することを認める機能である。
【0185】
IEEE 802.1Qbgでは、状態情報RRCAPの値は、EVB Bridge(ブリッジ装置101に相当)がReflective Relayの機能を持つ場合には「1」とし、Reflective Relayの機能を持たない場合には「0」とすること規定されている。本発明では、後述するブリッジ装置101のモードに従って、状態情報RRCAPの値を「0」又は「1」に変更する。
【0186】
IEEE 802.1Qbgでは、状態情報RRCTRの値は、EVB BridgeがReflective Relayとして動作している場合には「1」とし、Reflective Relayとして動作していない場合には「0」とすることが規定されている。本発明でも同様にブリッジ装置101がReflective Relayとして動作している場合には値を「1」とし、Reflective Relayとして動作していない場合には値を「0」とする。
【0187】
IEEE 802.1Qbgでは、状態情報RRREQの値は、EVB station(サーバ装置102に相当)のEdge Relay(EdgeRelay128に相当)がEVB BridgeにReflective Relayとしての動作を希望する場合には「1」とし、Reflective Relayとしての動作を希望しない場合には「0」とすることが規定されている。本発明でも同様に、EdgeRelay128が、ブリッジ装置101にReflective Relayとして動作することを希望する場合には値を「1」とし、Reflective Relayとして動作することを希望しない場合には値を「0」とする。
【0188】
IEEE 802.1Qbgでは、状態情報RRSTATの値は、EVB stationがEVB Bridgeの動作を判定し、EVB BridgeがReflective Relayとして動作していないと判定された場合には「0」とし、EVB BridgeがReflective Relayとして動作していると判定された場合には「1」とし、さらに、EVB Bridgeの動作が不明の場合には「2」又は「3」とすることが規定されている。本発明でも同様に、EdgeRelay128がブリッジ装置101の動作を判定し、ブリッジ装置101がReflective Relayとして動作していないと判定された場合には値を「0」とし、ブリッジ装置101がReflective Relayとして動作していると判定された場合には値を「1」、さらに、ブリッジ装置101の動作が不明の場合には値を「2」とする。
【0189】
ブリッジ装置101及びEdgeRelay128の状態情報の考え方は前述の通りだが、これらの状態情報の変更に伴う状態遷移に関しては後述する。
【0190】
以下では、状態情報RRCAP、状態情報RRCTR、状態情報RRREQ及び状態情報RRSTATを、単に、RRCAP、RRCTR、RRREQ及びRRSTATとも記載する。
【0191】
(EdgeRelay及びブリッジ装置におけるモード及び状態)
次に、ブリッジ装置101及びEdgeRelay128におけるモード及び状態について説明する。
【0192】
図6は、本発明の第1の実施形態のEdgeRelay128におけるモード及び状態遷移を示す説明図である。
【0193】
図6において、点線の四角はモードを表し、実線の四角は状態を表し、また、矢印は状態遷移を表す。
【0194】
図6に示すように、EdgeRelay128は、RRSTAT及びRRREQの2つの状態情報の組み合わせに対応して、S0状態604、S1状態605、S2状態606、S3状態607、S4状態608及びS5状態609の6種類のうちのいずれかの状態を取り得る。
【0195】
また、EdgeRelay128はそれぞれの状態に対応したモードで動作する。各モードでは、受信フレームの転送時の動作が異なり、1つ又は複数の状態を含む。具体的には、EdgeRelay128は、S0状態604の場合にはVEBモード601で動作し、S3状態607の場合にはVEPAモード602で動作し、S1状態605、S2状態606、S4状態608及びS5状態609のいずれかの場合にはTRANモード603で動作する。
【0196】
各モードにおけるEdgeRelay128の動作については後述する。また、各状態間での遷移についても後述する。
【0197】
6種類の状態は、RRREQ及びRRSTATに関連づけられている。具体的には、RRSTATが「0」かつRRREQが「0」の状態がS0状態604と、RRSTATが「0」かつRRREQが「1」の状態がS1状態605と、RRSTATが「1」かつRRREQが「0」の状態がS2状態606と、RRSTATが「1」かつRRREQが「1」の状態がS3状態607と、RRSTATが「2」かつRRREQが「0」の状態がS4状態608と、RRSTATが「2」かつRRREQが「1」の状態がS5状態609と関連づけられている。
【0198】
前述したように、EdgeRelay128は、
図5で説明した制御フレームを用いて、RRREQ及びRRSTAT、すなわち、EdgeRelay128の状態をブリッジ装置101に伝達する。
【0199】
図7は、本発明の第1の実施形態のブリッジ装置101のポートにおけるモード及び状態遷移を示す説明図である。
【0200】
図7において、点線の四角はモードを表し、実線の四角は状態を表し、また、矢印は状態遷移を表す。
【0201】
図7に示すように、ブリッジ装置101のポートは、RRCAP及びRRCTRの2つの状態情報の組み合わせに対応して、B0状態703、B1状態704、B2状態705及びB3状態706の4種類のいずれかの状態をとる。
【0202】
4種類の状態は、RRCAP及びRRCTRと関連づけられている。具体的には、RRCAPが「0」かつRRCTRが「0」の状態がB0状態703と、RRCAPが「0」かつRRCTRが「1」の状態がB1状態704と、RRCAPが「1」かつRRCTRが「0」の状態がB2状態705と、RRCAPが「1」かつRRCTRが「1」の状態がB3状態706と関連づけられている。
【0203】
また、ブリッジ装置101のポートはそれぞれの状態に対応したモードで動作する。各モードでは、受信フレームの転送時の動作が異なり、1つ又は複数の状態を含む。具体的には、ブリッジ装置101のポートは、B0状態703又はB2状態705の場合にはSWモード701で動作し、B3状態706又はB1状態704の場合にはRRモード702で動作する。
【0204】
ブリッジ装置101は、ポート毎に独立した状態を保持し、かつ、ポート毎に独立したモードで動作する。すなわち、ブリッジ装置101の一つのポートと他のポートとは異なる状態又はモードとなってもよい。各モードにおけるブリッジ装置101の動作については後述する。また、各状態間における状態遷移についても後述する。
【0205】
前述したように、ブリッジ装置101は、
図5で説明した制御フレームを用いて、各ポートにおけるRRCAP及びRRCTR、すなわち、ブリッジ装置101のポートの状態をEdgeRelay128に伝達する。
【0206】
ここで、EdgeRelay128のモードと、ブリッジ装置101のポートのモードとの関係について説明する。
【0207】
基本的に、EdgeRelay128のモードは、対向装置であるブリッジ装置101のポートのモードと連動する。具体的には、ブリッジ装置101のポートがSWモード701で動作している場合、EdgeRelay128はVEBモード601で動作し、ブリッジ装置101のポートがRRモード702で動作している場合、EdgeRelay128はVEPAモード602で動作する。
【0208】
ブリッジ装置101のポートのモードが変更される時には、EdgeRelay128はTRANモード603で動作する。詳細は後述するが、VEBモード601の場合、EdgeRelay128はVirtual Edge Bridge(VEB)として、すなわち、一般的なネットワークスイッチとして動作する。このとき、EdgeRelay128が、仮想マシン130−1と仮想マシン13−2との間の通信に必要なスイッチング処理を実行する。
【0209】
一方で、VEPAモード602の場合、EdgeRelay128はVirtual Edge Port Aggregator(VEPA)として動作する。このとき、仮想マシン130−1と仮想マシン130−2との間の通信では、EdgeRelay128から、一旦、ブリッジ装置101にフレームが転送され、ブリッジ装置101がスイッチング処理を実行することとなる。
【0210】
ブリッジ装置101のポートのモードがSWモード701の場合と、RRモード702の場合とでは、動作は以下のような相違点がある。すなわち、SWモード701の動作ではフレームを受信したポートに対して当該フレームが転送されないが、RRモード702の動作ではフレームを受信したポートに対しても当該フレームが転送されるという違いがある。
【0211】
SWモード701で動作するブリッジ装置101のポートは、VEBモード601で動作するEdgeRelay128と同じく、一般的なネットワークスイッチとして動作する。SWモード701の場合に、フレームを受信したポートに対して当該フレームが転送されないのは、当該ポートに接続された装置が同一フレームを重複して受信することを防ぐためである。
【0212】
しかし、当該ポートに接続された装置がVEPAとして動作している場合、すなわち、VEPAモード602で動作するEdgeRelay128が当該ポートに接続されている場合、RRモード702で動作する必要がある。これは、EdgeRelay128は、ブリッジ装置101に転送したフレームがEdgeRelay128に接続された仮想マシン130に転送される必要がある場合に、ブリッジ装置101によりEdgeRelay128に折り返されることを前提として動作するためである。
【0213】
すなわち、VEBモード601で動作するEdgeRelay128はRRモード702で動作するポートには接続できず、VEPAモード602で動作するEdgeRelay128はSWモード701で動作するポートには接続できない。
【0214】
本発明では、VEBモード601とVEPAモード602とを動的に切り替える場合に、過渡的な状態でも正しく通信を継続するためTRANモード603を導入している。
【0215】
TRANモード603では、VEBモード601の動作を基本として、ブリッジ装置101に接続されたポートから入力されたフレームのうち、送信元アドレスが他のポートによって学習されている場合、又は、他のポートに登録されている場合にはフレームを廃棄し、ポート学習は実行されない。すなわち、TRANモード603では、EdgeRelay128からブリッジ装置101に転送されたフレームが、さらにブリッジ装置101からEdgeRelay128に転送された場合、すなわち、フレームが折り返された場合に、EdgeRelay128が当該フレームを廃棄することによって重複フレームの受信を防ぐ。
【0216】
そのため、TRANモード603で動作するEdgeRelay128がRRモード702で動作するポートと接続されても問題がなく、さらに、当該ポートがSWモード701となった場合には折り返されたフレームは転送されないため、通常のフレーム転送時の問題はなくなる。ただし、TRANモード603におけるEdgeRelay128の動作にも制限がある。
【0217】
例えば、サーバ装置102−1内においてTRANモード603で動作するEdgeRelay128に接続され、仮想マシン130−1にフレームを送信していた仮想マシン130−2が、サーバ装置102−2に移動した場合、移動前と同様に仮想マシン130−2が仮想マシン130−1宛に送信したフレームはブリッジ装置101を経由してEdgeRelay128に届くため、TRANモード603の動作に従って当該フレームが廃棄され、通信が遮断されてしまう。
【0218】
本発明では、前述の通信遮断の発生を抑制するため、EdgeRelay128のモードを、VEBモード601とVEPAモード602とを切り替える場合にのみ、過渡的なTRANモード603に変更する。
【0219】
EdgeRelay128及びブリッジ装置101のモードに関しては、各モードでの切り替えを含む動作を後述する。
【0220】
次に、
図6における状態情報を含む制御フレームをEdgeRelay128からブリッジ装置101に送信する場合の各状態情報の位置づけを説明する。
【0221】
S0状態604を通知する制御フレームは、EdgeRelay128が現在VEBモード601で動作していることをブリッジ装置101に通知する役割がある。
【0222】
S1状態605又はS5状態609を通知する制御フレームは、EdgeRelay128が現在TRANモード603で動作していることをブリッジ装置101に通知し、さらに、VEPAモード602で動作するために、RRモード702で動作するようブリッジ装置101に要求する役割がある。
【0223】
S3状態607を通知する制御フレームは、EdgeRelay128が現在VEPAモード602で動作していることをブリッジ装置101に通知する役割がある。
【0224】
S2状態606又はS4状態608を通知する制御フレームは、EdgeRelay128が現在TRANモード603で動作していることをブリッジ装置101に通知し、さらに、VEBモード601で動作するために、SWモード701で動作するようブリッジ装置101に要求する役割がある。
【0225】
次に、
図7における状態情報を含む制御フレームをブリッジ装置101からEdgeRelay128に送信する場合の各状態情報の位置づけを説明する。
【0226】
B0状態703を通知する制御フレームは、ブリッジ装置101が現在SWモード701で動作していることをEdgeRelay128に通知する役割がある。
【0227】
B2状態705を通知する制御フレームは、ブリッジ装置101が現在SWモード701で動作していることを通知し、さらに、RRモード702で動作するために、VEPAモード602で動作するようEdgeRelay128に要求する役割がある。
【0228】
B3状態706を通知する制御フレームは、ブリッジ装置101が現在RRモード702で動作していることを通知する役割がある。
【0229】
B1状態704を通知する制御フレームは、ブリッジ装置101が現在RRモード702で動作していることを通知し、さらに、SWモード701で動作するために、VEBモード601で動作するようEdgeRelay128に要求する役割がある。
【0230】
以上で説明したように、本発明において、
図6及び
図7に示した状態情報を含む制御フレームは、各装置の状態を通知し、さらに、接続された装置にモードの遷移を要求する役割がある。
【0231】
EdgeRelay128及びブリッジ装置101は、モードの遷移指示に従って、前述した制御フレームを送信し、制御フレームの受信時に適切なモードとなるように動作する。
【0232】
以下、EdgeRelay128及びブリッジ装置101の動作を以下について説明する。なお、以下の説明においては、変数名は変数に格納された値を表すものとする。
【0233】
(EdgeRelayの動作)
図8A及び
図8Bは、本発明の第1の実施形態におけるEdgeRelay128が実行する処理を説明するフローチャートである。
【0234】
EdgeRelay128は、起動すると、ハードウェア及び設定の確認等、プログラムの初期化を実行した後、開始状態となる(ステップS801)。
【0235】
状態管理部306は、変数「RRSTAT」及び変数「RRREQ」を管理しており、各変数の値の組み合わせに基づいて、S0状態604、S1状態605、S2状態606、S3状態607、S4状態608及びS5状態609のいずれの状態であるかを管理する。また、状態管理部306は、状態遷移が必要な場合に各状態を変更する。
【0236】
また、状態管理部306は、変数「RRCAP」及び変数「RRCTR」を管理しており、各変数の値の組み合わせに基づいて、EdgeRelay128に接続されたブリッジ装置101のポートの状態がB0状態703、B1状態704、B2状態705及びB3状態706のいずれの状態であるかを管理する。なお、状態管理部306は、ポートの状態を把握できない場合には、ポートの状態が不明であることを認識できる。
【0237】
また、状態管理部306は、変数「転送停止状態」を管理し、当該変数の値に基づいて、受信したフレームの転送を停止する転送停止の状態であるか否かを管理する。
【0238】
ここで、状態管理部306は、初期化においてS4状態608となるように設定する。また、状態管理部306は、初期化において、例えば、変数「RRCAP」の値を「2」に、変数「RRCTR」の値を「0」に設定して、EdgeRelay128に接続されたブリッジ装置101のポートの状態が「不明」とする。また、状態管理部306は、初期化において、転送停止の状態ではないとする。
【0239】
状態管理部306は、開始状態となると、まず、遷移指示を受け付けたか否かを判定する(ステップS802)。ここで、遷移指示は、VEBモード601への遷移指示又はVEPAモード602への遷移指示のいずれかであり、設定によって又は外部から与えられる。
【0240】
なお、ステップS802の判定では、遷移指示を受け付ける度に1度だけ、遷移指示を受け付けたと判定されるものとする。すなわち、1回の遷移指示に対して、1回だけ判定結果が「YES」となるものとする。このような判定は、例えば、毎回遷移指示の状態を変数等に保存し、前回と今回の遷移指示を比較し、変化があり、かつ今回遷移指示があった場合に限り「YES」とすれば実現できる。
【0241】
遷移指示を受け付けたと判定された場合、状態管理部306は、遷移指示に関する情報を記録し、ステップS804に進む(ステップS803)。具体的には、遷移指示を受け付けたこと、及び、当該遷移指示がVEBモード601への遷移指示又はVEPAモード602への遷移指示のいずれであるかを示す変数「遷移指示状態」が記録される。
【0242】
状態管理部306は、EdgeRelay128における状態遷移処理を実行し、ステップS805に進む(ステップS804)。なお、EdgeRelay128における状態遷移処理の詳細については後述する。
【0243】
状態管理部306は、状態遷移処理が終了した後、変数「遷移指示状態」を参照して、遷移指示が記録されているか否かを判定する(ステップS805)。変数「遷移指示状態」にVEBモード601への遷移指示又はVEPAモード602への遷移指示を示す値が格納されている場合、遷移指示が記録されていると判定される。
【0244】
遷移指示が記録されていないと判定された場合、状態管理部306は、ステップS802に戻り、同様の処理を実行する。
【0245】
遷移指示が記録されていると判定された場合、状態管理部306は、変数「遷移指示状態」、変数「RRSTAT」及び変数「RRREQ」を参照して、VEBモード601への遷移指示が記録され、かつ、S0状態604であるか否かを判定する(ステップS806)。
【0246】
ステップS806の判定条件を満たすと判定された場合、状態管理部306は、受け付けた遷移指示に対して成功した旨を応答し、ステップS808に進む(ステップS807)。応答の方法としては、例えば、入出力装置117を介して成功した旨を示す情報を出力し、ポートを介して成功した旨を示す情報を含むフレームを送信することによって応答する方法が考えられる。また、制御フレームによる状態の通知にあわせて当該情報を通知してもよい。なお、遷移指示の応答が必要ない場合には、当該処理は省略してもよい。
【0247】
状態管理部306は、変数「遷移指示状態」を消去し、ステップS802に戻り同様の処理を実行する(ステップS808)。ここで、変数「遷移指示状態」の消去方法としては、例えば、遷移指示を示す値とは異なる値を代入する。なお、開始状態では変数「遷移指示状態」は消去されている状態とする。
【0248】
ステップS806において、ステップS806の判定条件を満たさないと判定された場合、状態管理部306は、変数「遷移指示状態」、変数「RRSTAT」及び変数「RRREQ」を参照し、VEPAモード602への遷移指示が記録され、かつ、S3状態607であるか否かを判定する(ステップS809)。
【0249】
ステップS809の判定条件を満たすと判定された場合、状態管理部306は、ステップS807に進む。
【0250】
ステップS809の判定条件を満たさないと判定された場合、状態管理部306は、変数「遷移指示状態」、変数「RRSTAT」及び変数「RRREQ」を参照し、VEPAモード602への遷移指示が記録され、かつ、S2状態606であるか否かを判定する(ステップS810)。応答の方法は、ステップS808と同一の方法を用いる。なお、遷移指示の応答が必要ない場合には、当該処理は省略してもよい。
【0251】
ステップS810の判定条件を満たさないと判定された場合、状態管理部306は、ステップS802に戻り同様の処理を実行する。
【0252】
ステップS810の判定結果を満たすと判定された場合、状態管理部306は、遷移指示に対して失敗した旨を応答し、ステップS808に進む(ステップS811)。
【0253】
ステップS802において、遷移指示を受け付けていないと判定された場合、状態管理部306は、フレーム分類/情報抽出部311から伝達された情報に基づいて、ポートがフレームを受信したか否かを判定する(ステップS812)。
【0254】
フレームを受信したと判定された場合、状態管理部306は、フレーム分類/情報抽出部311から伝達された情報に基づいて、当該フレームが制御フレームであるか否かを判定する(ステップS813)。
【0255】
制御フレームを受信したと判定された場合、状態管理部306は、ステップS804に進む。このとき、状態管理部306は、制御フレーム処理部307から受信した制御フレームの内容を取得し、取得された内容に基づいて変数「RRCAP」及び変数「RRCTR」に値を設定する。
【0256】
制御フレームを受信していないと判定された場合、状態管理部306は、変数「転送停止状態」を参照し、転送停止の状態であるか否かを判定する(ステップS814)。
【0257】
転送停止の状態であると判定された場合、状態管理部306は、フレーム分類/情報抽出部311から伝達された情報に基づいて、ステップS812においてフレームを受信したポートが、ブリッジ装置101に接続されているポート、すなわち、UPLINKポートであるか否かを判定する(ステップS815)。
【0258】
フレームを受信したポートがUPLINKポートであると判定された場合、状態管理部306は、処理対象であるフレームに対して、EdgeRelay128におけるフレーム転送処理を実行し、ステップ817に進む(ステップS816)。なお、EdgeRelay128におけるフレーム転送処理の詳細については後述する。
【0259】
状態管理部306は、フレーム転送処理の実行後、配送ポート決定部309から各ポートに配送されたフレームがあるか否かを判定する(ステップS817)。
【0260】
ポートに配送されたフレームがないと判定された場合、状態管理部306は、ステップ802に戻り同様の処理を実行する。
【0261】
ポートに配送されたフレームがあると判定された場合、状態管理部306は、送受信制御部313に配送されたフレームの送信を指示し、その後、ステップS802に戻り同様の処理を実行する(ステップS818)。
【0262】
ステップS814において、転送停止の状態でないと判定された場合、状態管理部306は、フレーム分類/情報抽出部311からから伝達された情報に基づいて、フレーム蓄積部312に蓄積されたフレームがあるか否かを判定する(ステップS819)。
【0263】
蓄積されたフレームがないと判定された場合、状態管理部306は、ステップS816に進む。
【0264】
蓄積されたフレームがあると判定された場合、状態管理部306は、蓄積されたフレーム、受信したフレームの順に転送処理の対象とし、ステップS816に進む(ステップS820)。
【0265】
ステップS812において、フレームを受信していないと判定された場合、状態管理部306は、変数「転送停止状態」を参照し、転送停止の状態であるか否かを判定する(ステップS821)。
【0266】
転送停止の状態であると判定された場合、状態管理部306は、ステップS802に戻り同様の処理を実行する。
【0267】
転送停止の状態でないと判定された場合、状態管理部306は、フレーム分類/情報抽出部311から伝達された情報に基づいて、フレーム蓄積部312に蓄積されたフレームがあるか否かを判定する(ステップS822)。
【0268】
蓄積されたフレームがないと判定された場合、状態管理部306は、ステップS802に戻り同様の処理を実行する。
【0269】
蓄積されたフレームがあると判定された場合、状態管理部306は、フレーム蓄積部312に蓄積されたフレームを処理対象とし、ステップS816に進む(ステップS823)。
【0270】
ステップS815において、フレームを受信したポートがUPLINKポートでないと判定された場合、状態管理部306は、現在転送停止の状態であるため、フレーム受信部314に受信フレームをそのままフレーム蓄積部312に蓄積するように指示し、ステップ802に戻り同様の処理を実行する(ステップS824)。
【0271】
以上で説明したEdgeRelay128が実行する処理の概略は以下のようになる。
【0272】
まず、EdgeRelay128は初期化処理を実行する。そして、遷移指示がある場合(ステップS802がYES)、EdgeRelay128は状態遷移処理を実行する(ステップS804)。EdgeRelay128は、処理の結果が出た場合(ステップS806、ステップS809、ステップS810)、応答を返し(ステップS807、ステップS811)、最初に戻る(ステップS802)。
【0273】
遷移指示がなく、かつ、制御フレームを受信した場合(ステップS813がYES)、EdgeRelay128は、状態遷移処理を実行し(ステップS804)、その後、最初に戻る(ステップS802)。
【0274】
遷移指示がなく、制御フレーム以外のフレームを受信し、かつ、転送停止の状態である場合(ステップS814がYES)、EdgeRelay128は、UPLINKポート以外のポートについては、受信フレームを蓄積する(ステップS824)。一方、転送停止の状態であり、かつ、フレームを受信したポートがUPLINKポートである場合、又は、転送停止の状態でない場合、EdgeRelay128は、フレーム転送処理を実行し(ステップS816)、実行結果に基づいてフレームを送信する(ステップS818)。
【0275】
遷移指示がなく、フレームを受信しておらず、かつ、転送停止の状態において蓄積されたフレームがある場合(ステップS822がYES)、EdgeRelay128は、蓄積フレームを処理対象とし(ステップS821)、フレーム転送処理を実行し(ステップS816)、実行結果に基づいてフレームを送信する(ステップS818)。
【0276】
(フレーム転送処理)
次に、EdgeRelay128におけるフレーム転送処理について説明する。
【0277】
図9は、本発明の第1の実施形態のEdgeRelay128におけるフレーム転送処理を説明するフローチャートである。
【0278】
EdgeRelay128におけるフレーム転送処理の開始が指示されると、開始状態となり処理が開始される(ステップS901)。
【0279】
EdgeRelay128は、現在の状態がS0状態604、すなわち、VEBモード601であるか否かを判定する(ステップS902)。具体的には、状態管理部306が、変数「RRSTAT」及び変数「RRREQ」を参照して、現在の状態がVEBモード601であるか否かを判定する。
【0280】
現在の状態がVEBモードであると判定された場合、EdgeRelay128は、ポート学習を実行し、ステップS904に進む(ステップS903)。具体的には、状態管理部306がポート学習部310にポート学習の実行を指示し、当該指示を受け付けたポート学習部310は、対象フレームの送信元MACアドレス及びVLAN IDを用いてポート学習を実行する。
【0281】
次に、EdgeRelay128は、配送ポートを検索する(ステップS904)。具体的には、配送ポート決定部309が、対象フレームの宛先MACアドレス及びVLAN IDに対応するポート、すなわち、学習済みのポートの検索をポート学習部310に指示する。対応するポートが見つかった場合には、当該ポート(1つ以上)が配送ポートに決定され、また、対応するポートが見つからなかった場合には、全ポートを配送ポートに決定される。なお、ポート学習処理の省略時において、対応ポートが見つからないフレームを受信した場合やマルチキャストフレームを受信した場合等に、特定の宛先を持つフレームに対して配送ポートを0個とし、当該フレームを廃棄するようにして転送帯域等の資源を節約してもよい。
【0282】
EdgeRelay128は、対象フレームを受信したポートを配送ポートから除外して、配送ポートを決定し、ステップS906に進む(ステップS905)。具体的には、配送ポート決定部309が、ステップS904において決定された配送ポートのうち、フレーム分類/情報抽出部311から伝達された対象フレームを受信したポートを除外し、残りのポートを新たな配送ポートとして決定する。
【0283】
EdgeRelay128は、配送ポートからフレームを配送して、処理を終了する(ステップS906、ステップS907)。具体的には、配送ポート決定部309が、決定された配送ポートに対象フレームを配送する。
【0284】
ステップS902において、現在の状態がVEBモードでないと判定された場合、EdgeRelay128は、現在の状態がS3状態607、すなわち、VEPAモードであるか否かを判定する(ステップS908)。具体的には、状態管理部306が、変数「RRSTAT」及び変数「RRREQ」を参照して、現在の状態がS3状態607であるか否かを判定する。
【0285】
現在の状態がVEPAモードであると判定された場合、EdgeRelay128は、フレームを受信したポートがブリッジ装置101に接続されているポート、すなわち、UPLINKポートであるか否かを判定する(ステップS909)。具体的には、状態管理部306が、フレーム分類/情報抽出部311から伝達された情報に基づいて、対象フレームを受信したポートがUPLINKポートであるか否かを判定する。
【0286】
対象フレームを受信したポートがUPLINKポートであると判定された場合、EdgeRelay128は、ステップS904に進む。
【0287】
対象フレームを受信したポートがUPLINKポートでないと判定された場合、EdgeRelay128は、ポート学習を実行し、ステップS911に進む(ステップS910)。具体的には、状態管理部306が、ポート学習部310にポート学習の実行を指示し、当該指示を受け付けたポート学習部310が対象フレームの送信元MACアドレス及びVLAN IDを用いてポート学習を実行する。
【0288】
EdgeRelay128は、ポート学習の実行後、配送ポートを決定してステップS906に進む(ステップS911)。具体的には、配送ポート決定部309が、UPLINKポートのみを配送ポートとして決定する。
【0289】
ステップS908において、現在の状態がVEPAモードでない、すなわち、TRANモードであると判定された場合、EdgeRelay128は、対象フレームを受信したポートがブリッジ装置101に接続されているポート、すなわち、UPLINKポートであるか否かを判定する(ステップS912)。具体的には、配送ポート決定部309が、フレーム分類/情報抽出部311から伝達された情報に基づいて、対象フレームを受信したポートがUPLINKポートであるか否かを判定する。
【0290】
対象フレームを受信したポートがUPLINKポートでないと判定された場合、EdgeRelay128は、ステップS903に進む。
【0291】
対象フレームを受信したポートがUPLINKポートであると判定された場合、EdgeRelay128は、送信元アドレスが登録済みであるか否かを判定する(ステップS913)。具体的には、配送ポート決定部309が、ポート学習部310に対象フレームの送信元アドレス及びVLAN IDに基づいて学習されているポートの検索を指示し、当該ポートが見つかったか否かを判定する。送信元アドレスが登録済みである場合、EdgeRelay128が接続する装置(仮想マシン130)から送信されたフレームであることを示す。
【0292】
送信元アドレスが登録済みでないと判定された場合、EdgeRelay128は、ステップS903に進む。
【0293】
送信元アドレスが登録済みであると判定された場合、EdgeRelay128は、フレームを廃棄して、処理を終了する(ステップS914)。具体的には、配送ポート決定部309が、送受信制御部313に対象フレームを廃棄するように指示する。
【0294】
以上で説明したように、EdgeRelay128におけるフレーム転送処理は、モードによって異なる。処理の概要を示すと以下の通りである。
【0295】
まず、EdgeRelay128は、どのモードで動作しているかを判定する(ステップS902、ステップS908)。
【0296】
VEBモード601で動作している場合、EdgeRelay128は、ポート学習を実行し(ステップS903)、配送ポートの検索結果から受信ポート以外のポートを配送ポートに決定し(ステップS904、ステップS905)、当該配送ポートにフレームを配送する(ステップS906)。
【0297】
VEPAモード602で動作している場合、EdgeRelay128は、UPLINKポートからフレームを受信すると(ステップS909がYES)、ポート学習は実行せず、VEBモード601の場合と同様にフレームを配送する(ステップS904、ステップS905、ステップS906)。一方、VEPAモード602で動作している場合に、UPLINKポート以外のポートからフレームを受信すると、EdgeRelay128は、ポート学習を実行し(ステップS910)、UPLINKポートにフレームを配送する(ステップS911、ステップS906)。
【0298】
TRANモード603で動作している場合、UPLINKポートからフレームを受信し、かつ、非UPLINKポートにおけるポート学習の結果から、送信元アドレスが非UPLINKポートに接続されていると判明している場合は、EdgeRelay128は、フレーム廃棄する(ステップS914)。一方、それ以外の場合には、EdgeRelay128は、VEBモード601と同様の処理を実行する。
【0299】
(状態遷移処理)
次に、ステップS805において実行される、EdgeRelay128における状態遷移処理について説明する。
【0300】
図10Aから
図10Fは、本発明の実施形態のEdgeRelay128における状態遷移処理を説明するフローチャートである。
【0301】
EdgeRelay128の状態の取得、及び、ブリッジ装置101のポートの状態情報を含む制御フレームの受信は、
図8において説明したため以下では省略する。
【0302】
なお、EdgeRelay128の状態の変更は、変数「RRSTAT」及び変数「RRREQ」の値を変更することによって実現される。したがって、EdgeRelay128の状態が変更された場合には、変数「RRSTAT」及び変数「RRREQ」の値が変更されたことを意味する。
【0303】
また、状態管理部306は変数「遷移待機開始時刻」及び「転送停止開始時刻」を保持し、これらの変数は、状態遷移処理の終了後、再び、状態遷移処理が実行される場合に、同一の値を参照できるものとする。
【0304】
さらに、状態管理部306は設定「遷移待機時間」及び設定「受信待機時間」を保持する。
【0305】
また、変数「転送停止状態」及び変数「遷移指示状態」は、
図8において説明した変数と同一のものである。
【0306】
なお、以下で説明する状態遷移処理は、遷移指示を受け付け又は制御フレームの受信を契機に実行される。以下の説明において、「状態情報を含む制御フレームを受信した」という表現は、状態遷移処理の契機となる制御フレームに状態情報(B0状態703、B1状態704、B2状態705又はB3状態706)が含まれていることを表すものとする。また、状態管理部306は、制御フレームの内容に従って変数「RRCAP」及び変数「RRCTR」を更新し、変数「RRCAP」及び変数「RRCTR」を参照してブリッジ装置101の状態情報を取得できる。
【0307】
EdgeRelay128における状態遷移処理が開始されると(ステップS1001)、状態管理部306は、変数「転送停止状態」を参照して、転送停止の状態であるか否かを判定する(ステップS1002)。
【0308】
なお、
図8で説明したように、遷移指示又は制御フレームの受信を契機に状態遷移処理が開始される。
【0309】
状態管理部306は、制御フレームに含まれる情報に従って変数「RRCAP」及び変数「RRCTR」を更新し、また、変数「RRCAP」及び変数「RRCTR」を参照することによってブリッジ装置101におけるポートの状態情報を取得できる。
【0310】
転送停止の状態であると判定された場合、状態管理部306は、ステップS1021に進む。
【0311】
転送停止の状態でないと判定された場合、状態管理部306は、B0状態703を含む制御フレームを受信したか否かを判定する(ステップS1003)。
【0312】
B0状態703を含む制御フレームを受信していないと判定された場合、状態管理部306は、ステップS1031に進む。
【0313】
B0状態703を含む制御フレームを受信したと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS2状態606又はS4状態608のいずれかに該当するか否かを判定する(ステップS1004)。
【0314】
ステップS1004の判定条件を満たすと判定された場合、状態管理部306は、EdgeRelay128の状態をS0状態604に変更し、ステップS1006に進む(ステップS1005)。
【0315】
状態管理部306は、現在の状態を通知するための状態情報を含む制御フレームを送信し、処理を終了する(ステップS1006、ステップS1007)。具体的には、状態管理部306は、制御フレームの生成を制御フレーム生成部308に指示し、生成された制御フレームをブリッジ装置101に送信する。
【0316】
ステップS1004において、ステップS1004の判定条件を満たさないと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS5状態609であるか否かを判定する(ステップS1008)。
【0317】
ステップS1008の判定条件を満たすと判定された場合、状態管理部306は、EdgeRelay128の状態をS1状態605に変更し、ステップS1010に進む(ステップS1009)。
【0318】
状態管理部306は、現在の時刻を変数「遷移待機開始時刻」に保存し、ステップS1006に進む(ステップS1010)。
【0319】
ステップS1008において、ステップS1008の判定条件を満たさないと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS3状態607であるか否かを判定する(ステップS1011)。
【0320】
ステップS1011の判定条件を満たすと判定された場合、状態管理部306は、EdgeRelay128の状態をS2状態606に変更し、ステップ1010に進む(ステップS1012)。
【0321】
ステップS1011の判定条件を満たさないと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS1状態605であるか否かを判定する(ステップS1013)。
【0322】
ステップS1013の判定条件を満たさないと判定された場合、すなわち、現在のEdgeRelay128の状態がS0状態604の場合、状態管理部306は、処理を終了する(ステップS1007)。
【0323】
ステップS1013の判定条件を満たすと判定された場合、状態管理部306は、遷移待機時間に設定された時間を経過したか否かを判定する(ステップS1014)。
【0324】
具体的には、状態管理部306は、現在の時刻から変数「遷移待機開始時刻」の時刻を減算して時刻差を算出し、算出された時刻差が設定「遷移待機時間」の値より大きいか否かを判定する。算出された時刻差が設定「遷移待機時間」の値より大きい場合には、遷移待機時間を経過したと判定される。
【0325】
遷移待機時間に設定された時間を経過したと判定された場合、状態管理部306は、ステップS1012に進む。一方、遷移待機時間に設定された時間を経過したと判定された場合、状態管理部306は、処理を終了する(ステップS1007)。
【0326】
ステップS1002において、転送停止の状態であると判定された場合、状態管理部306は、受信待機時間を経過したか否かを判定する(ステップS1021)。
【0327】
具体的には、状態管理部306は、現在の時刻から変数「転送停止開始時刻」の時刻を減算して時刻差を算出し、算出された時刻差が設定「受信待機時間」の値より大きいか否かを判定する。算出された時刻差が設定「受信待機時間」の値より大きい場合には、受信待機時間を経過したと判定される。
【0328】
受信待機時間を経過していないと判定された場合、状態管理部306は、処理を終了する(ステップS1007)。
【0329】
受信待機時間を経過したと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS3状態607であるか否かを判定する(ステップS1023)。
【0330】
ステップS1023の判定条件を満たすと判定された場合、状態管理部306は、EdgeRelay128の状態をS2状態606に変更し、ステップS1022Aに進む(ステップS1024)。
【0331】
そして、状態管理部306は、転送停止の状態を解除し、ステップS1010に進む(ステップS1022A)。具体的には、変数「転送停止状態」に、転送停止の状態以外の状態を示す値が設定される。
【0332】
ステップS1023の判定条件を満たさないと判定された場合、状態管理部306は、EdgeRelay128の状態をS3状態607に変更し、ステップS1022Bに進む(ステップS1025)。
【0333】
そして、状態管理部306は、転送停止の状態を解除し、ステップS1006に進む(ステップS1022B)。具体的には、変数「転送停止状態」に、転送停止の状態以外の状態を示す値が設定される。
【0334】
ステップS1003において、ステップS1003の判定条件を満たさないと判定された場合、状態管理部306は、B1状態704を含む制御フレームを受信し、又は、VEBモード601への遷移指示を受け付けたか否かを判定する(ステップS1031)。
【0335】
なお、状態管理部306は、変数「遷移指示状態」を参照することによって、VEBモード601への遷移指示を受け付けたか否かを判定できる。また、少なくともいずれかの条件に該当する場合には、ステップS1031の判定条件を満たすと判定される。
【0336】
ステップS1031の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1041に進む。
【0337】
ステップS1031の判定条件を満たすと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS3状態607であるか否かを判定する(ステップS1032)。
【0338】
ステップS1032の判定条件を満たすと判定された場合、状態管理部306は、ステップS1061に進む。
【0339】
ステップS1032の判定条件を満たさないと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS1状態605、S4状態608又はS5状態609のいずれかに該当するか否かを判定する(ステップS1033)。
【0340】
現在のEdgeRelay128の状態が、S1状態605、S4状態608又はS5状態609のいずれかに該当する場合には、ステップS1033の判定条件を満たすと判定される。
【0341】
ステップS1033の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1006に進む。
【0342】
ステップS1033の判定条件を満たすと判定された場合、状態管理部306は、B1状態704を含む制御フレームを受信し、又は、EdgeRelay128の状態がS1状態605であるか否かを判定する(ステップS1034)。少なくともいずれかの条件に該当する場合には、ステップS1034の判定条件を満たすと判定される。
【0343】
ステップS1034の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1036に進む。
【0344】
ステップ1034の判定条件を満たすと判定された場合、状態管理部306は、EdgeRelay128の状態をS2状態606に変更し、ステップS1010に進む(ステップS1035)。
【0345】
ステップS1034の判定条件を満たさないと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS5状態609であるか否かを判定する(ステップS1036)。
【0346】
ステップS1036の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1006に進む。
【0347】
ステップS1036の判定条件を満たすと判定された場合、状態管理部306は、EdgeRelay128の状態をS4状態608に変更し、ステップS1010に進む(ステップS1037)。
【0348】
ステップS1031において、ステップS1031の判定条件を満たさないと判定された場合、状態管理部306は、B2状態705を含む制御フレームを受信し、又は、VEPAモード602への遷移指示を受け付けたか否かを判定する(ステップS1041)。なお、状態管理部306は、変数「遷移指示状態」を参照することによって、VEPAモード602への遷移指示を受け付けたか否かを判定できる。少なくともいずれかの条件に該当する場合には、ステップS1041の判定条件を満たすと判定される。
【0349】
ステップS1041の判定条件を満たさないと判定された場合、状態管理部306は、ステップ1051に進む。
【0350】
ステップS1041の判定条件を満たすと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS0状態604、S2状態606、S4状態608又はS5状態609のいずれかに該当するか否かを判定する(ステップS1042)。
【0351】
現在のEdgeRelay128の状態が、S0状態604、S2状態606、S4状態608又はS5状態609のいずれかに該当する場合には、ステップS1042の判定条件を満たすと判定される。
【0352】
ステップS1042の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1006に進む。
【0353】
ステップS1042の判定条件を満たすと判定された場合、状態管理部306は、B2状態705を含む制御フレームを受信し、又は、EdgeRelay128の状態がS0状態604若しくはS2状態606のいずれかに該当するか否かを判定する(ステップS1043)。少なくともいずれかの条件に該当する場合には、ステップS1043の判定条件を満たすと判定される。
【0354】
ステップS1043の判定条件を満たすと判定された場合、状態管理部306は、EdgeRelay128の状態をS1状態605に変更し、ステップS1010に進む(ステップS1044)。
【0355】
ステップS1043の判定条件を満たさないと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS4状態608であるか否かを判定する(ステップS1045)。ステップS1045の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1006に進む。
【0356】
ステップS1045の判定条件を満たすと判定された場合、状態管理部306は、EdgeRelay128の状態をS5状態609に変更し、ステップS1010に進む(ステップS1046)。
【0357】
ステップS1041において、ステップS1041の判定条件を満たさないと判定された場合、すなわち、B3状態706を含む制御フレームを受信したと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS1状態605又はS5状態609のいずれかに該当するか否かを判定する(ステップS1051)。
【0358】
ステップS1051の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1061に進む。
【0359】
ステップS1051の判定条件を満たすと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS4状態608であるか否かを判定する(ステップS1052)。
【0360】
ステップS1052の判定条件を満たすと判定された場合、状態管理部306は、EdgeRelay128の状態をS2状態606に変更し、ステップS1010に進む(ステップS1053)。
【0361】
ステップS1052の判定条件を満たさないと判定された場合、状態管理部306は、EdgeRelay128の状態がS0状態604であるか否かを判定する(ステップS1054)。
【0362】
ステップS1054の判定条件を満たすと判定された場合、状態管理部306は、EdgeRelay128の状態をS1状態605に変更し、ステップS1010に進む(ステップS1055)。
【0363】
ステップS1055の判定条件を満たさないと判定された場合、状態管理部306は、現在のEdgeRelay128の状態がS2状態606であるか否かを判定する(ステップS1056)。
【0364】
ステップ1056の判定条件を満たさないと判定された場合、すなわち、現在のEdgeRelay128の状態がS3状態607であると判定された場合、状態管理部306は、処理を終了する(ステップS1007)。
【0365】
ステップS1056の判定条件を満たすと判定された場合、状態管理部306は、遷移待機時間を経過したか否かを判定する(ステップS1057)。なおステップS1057の処理は、ステップ1014と同一である。すなわち、現在の時刻と変数「遷移待機開始時刻」の時刻との差が設定「遷移待機時間」より大きい場合に、遷移待機時間を経過したと判定される。
【0366】
遷移待機時間を経過していないと判定された場合、状態管理部306は、処理を終了する(ステップS1007)。
【0367】
遷移待機時間を経過していると判定された場合、状態管理部306は、ステップS1010に進む。
【0368】
ステップS1032において判定条件を満たすと判定された場合、又は、ステップS1051において判定条件を満たすと判定された場合、状態管理部306は、転送停止開始時刻を記録して、ステップS1062に進む(ステップS1061)。具体的には、状態管理部306は、変数「遷移待機開始時刻」に現在の時刻を格納する。
【0369】
状態管理部306は、転送停止の状態に設定し、処理を終了する(ステップS1062、ステップS1007)。具体的には、状態管理部306は、変数「転送停止状態」に転送停止の状態であることを示す値を設定する。
【0370】
以上で説明したEdgeRelay128における状態遷移処理の概略は以下のようになる。
【0371】
EdgeRelay128における状態遷移処理は、遷移指示を受け付け、又は、制御フレームを受信すると開始される。
【0372】
状態管理部306は、まず、現在のEdgeRelay128の状態と、遷移指示の内容と、受信した制御フレームに含まれる状態情報と、経過時間とに基づいて、EdgeRelay128の状態を決定し、決定された状態に変更する。
【0373】
また、状態管理部306は、変更した状態を通知するための制御フレームをブリッジ装置101に転送する。さらに、状態管理部306は、転送停止の状態に設定することによってフレームの転送を停止し、又は、転送停止の状態を解除することによってフレームの転送を再開する。
【0374】
転送停止の状態に設定されている場合、状態管理部306は、一定時間経過後(ステップS1021がYES)、現在のEdgeRelay128の状態がS3状態607の場合にはS2状態606に変更し(ステップS1024)、S3状態607以外の状態(S1状態605又はS5状態609)の場合にはS3状態607に変更する(ステップS1025)。その後、状態管理部306は、転送停止の状態を解除する(ステップS1022A及びステップ1022B)。
【0375】
B0状態703を含む制御フレームを受信し(ステップS1003がYES)、かつ、EdgeRelay128の状態がS0状態604の場合(ステップS1013がNO)の場合、状態管理部306は、処理を終了する。
【0376】
B0状態703を含む制御フレームを受信し(ステップS1003がYES)、かつ、EdgeRelay128の状態がS1状態605の場合(ステップS1013がYES)の場合、一定時間経過した後(ステップS1014がYES)、S2状態606に変更し(ステップS1012)、遷移待機時刻の計測をリセットする(ステップS1010)。その後、状態管理部306は、変更後の状態に基づいて制御フレームを送信し、処理を終了する(ステップS1006、ステップS1007)。
【0377】
また、B0状態703を含む制御フレームを受信し(ステップS1003がYES)、かつ、EdgeRelay128の状態がS3状態607又はS5状態609の場合、状態管理部306は、状態を変更し(ステップS1009又はステップS1012)、遷移待機時刻の計測をリセットする(ステップS1010)。その後、状態管理部306は、変更後の状態に基づいて制御フレームを送信し、処理を終了する(ステップS1006、ステップS1007)。
【0378】
また、B0状態703を含む制御フレームが受信し(ステップS1003がYES)、かつ、EdgeRelay128の状態がS2状態606又はS4状態608のいずれかに該当する場合、状態管理部306は、S0状態604に変更し(ステップS1005)、変更後の状態に基づいて制御フレームを送信し、処理を終了する(ステップS1006、ステップS1007)。
【0379】
B3状態706を含む制御フレームを受信した場合も(ステップS1041がNO)、B0状態703の制御フレームを受信した場合と同様の処理が実行されるが、以下で説明する分岐A及び分岐Bが異なる。
【0380】
分岐Aでは、EdgeRelay128の状態がS1状態605又はS5状態609の場合(ステップS1051がYES)、フレームの転送が停止される(ステップS1062)。
【0381】
一方、分岐Bでは、EdgeRelay128の状態がS2状態606、かつ、一定時間経過した場合(ステップS1057がYES)、状態は変更されずS2状態606のままである。分岐Aについては、ステップS1032がNOである場合と合わせて後述する。
【0382】
分岐Bについては、状態管理部306は、EdgeRelay128の状態がS1状態605であり、かつ、一定時間経過後に(ステップS1014がYES)、VEPAモード602への遷移をあきらめてフェイルセーフとしてVEBモード601への遷移するために、S2状態606に状態を変更し、VEBモード601への遷移を試みる。
【0383】
これは、EdgeRelay128がVEPAモード602への遷移をブリッジ装置101に要求したがモードの遷移が成功せずVEBモード601で動作を継続しているときに、制御フレームがバッファされた等、何らかの理由で遅れてモードの遷移が成功することによって、EdgeRelay128がVEBモード601で動作して、一方でブリッジ装置101がRRモード702で動作する事態が起こる可能性を減らすためである。
【0384】
前述した各装置のモードの組み合わせでは、EdgeRelay128から送信されたフレームがEdgeRelay128に戻ってくる可能性があるため、フレームが重複し、ポート学習に不具合が起き、また、フレームの複製が際限なく実行されことによってフレームが増加して制御不能となる恐れがある。一方、EdgeRelay128がVEPAモード602で動作し、ブリッジ装置101がSWモード701で動作する場合では、EdgeRelay128が送信したフレームが失われる可能性あるが、前述したモードの組み合わせと比較して、危険な状態にはならない。
【0385】
なお、本実施形態では、遷移待機時間が経過した後にEdgeRelay128の状態を遷移させているのは、EdgeRelay128への遷移指示よりも、後述するブリッジ装置101への遷移指示を優先して実行するためであるが、本発明はこの実行順に限らない。
【0386】
例えば、ブリッジ装置101が遷移待機時間の経過後に状態を遷移するように構成を変更し、EdgeRelay128から前述した状態遷移の構成を省略することによって状態遷移の実行順序を逆にしてもよい。当該構成によって、EdgeRelay128の構成を簡素化できる。また、EdgeRelay128及びブリッジ装置101の両方で遷移待機時間の経過後に状態遷移の処理を実行させるように構成してもよい。これによって、状態遷移の失敗を低減することができる。
【0387】
なお、これら遷移待機時間中に状態遷移が生じる原因としては、制御フレームの宇宙線等を原因とするエラーによる喪失、EdgeRelay128又はブリッジ装置101による制御フレームの受信失敗若しくは処理失敗、又は処理に想定外に時間がかかっていることなどが考えられる。
【0388】
一方、B2状態705を含む制御フレームを受信し、又はVEPAモード602への遷移指示を受け付け(ステップS1041がYES)、かつ、EdgeRelay128の状態がS1状態605又はS3状態607である場合(ステップS1042がNO)、EdgeRelay128の状態そのままである。また、VEPAモード602への遷移指示を受信し(ステップS1041がYES)、かつ、EdgeRelay128の状態がS5状態609の場合も(ステップS1045がNO)、EdgeRelay128の状態そのままである。
【0389】
VEPAモード602への遷移指示を受信し、かつ、EdgeRelay128の状態がS4状態608の場合(ステップS1045がYES)、状態管理部306は、S5状態609に変更し(ステップS1046)、時間計測をリセット(ステップS1010)し、変更後の状態に基づいて制御フレームを送信する(ステップS1006)。
【0390】
また、それ以外の場合(ステップS1043がYES)、状態管理部306は、S1状態605に変更し(ステップS1044)、時間計測をリセットして(ステップS1010)、変更後の状態に基づいて制御フレームを送信する(ステップS1006)。
【0391】
B1状態704を含む制御フレームを受信し、又は、VEBモード601への遷移指示を受け付けた場合(ステップS1031がYES)も、ステップS1041がYESである場合と同様の動作となるが、S3状態607の場合(ステップS1032がYES)、状態管理部306は、転送停止の状態に設定する点が異なる(ステップS1062)。
【0392】
VEPAモード602への遷移が完了する場合(ステップS1051がYES)、又は、VEPAモード602からVEBモード601への遷移を開始する場合(ステップS1032がYES)の場合、状態管理部306は、受信待機時間が経過するまでの間は、フレームの転送を停止する。
【0393】
フレームの転送停止中にフレームを受信した場合、状態管理部306は、ブリッジ装置101に接続されたUPLINKポートから受信したフレームを先に処理し、UPLINK以外のポートから受信したフレームを蓄積して後で処理する。この動作によって、スイッチング処理の実行する装置(位置)がブリッジ装置101とEdgeRelay128とで切り替わる瞬間、すなわち、VEPAモード602とTRANモード603との間で状態が遷移する時のフレームの順序が維持できる。
【0394】
なお、受信待機時間は、EdgeRelay128とブリッジ装置101との往復とEdgeRelay128及びブリッジ装置101の処理時間をカバーする時間であるものとするが、一般的に数マイクロ秒〜数ミリ秒以下であり、転送停止を原因とする通信中断による通信の利用者に対する実質的な影響はない。
【0395】
また、転送停止中にブリッジ装置101から折り返され、UPLINKポートで受信されたフレームは、VEPAモード602からTRANモード603への遷移時はVEPAモード602の動作に基づいて転送されるためフレーム廃棄を抑止でき、TRANモード603からVEPAモード602への遷移時はTRANモード603の動作に基づいて廃棄されるためフレームの重複を防止でき、それぞれ正しく処理されることとなる。
【0396】
(ブリッジ装置101における動作)
次に、ブリッジ装置101が実行する処理について説明する。以下の説明において、変数名は変数に格納された値を表すものとする。
【0397】
図11A及び
図11Bは、本発明の第1の実施形態におけるブリッジ装置101が実行する処理を説明するフローチャートである。
【0398】
ブリッジ装置101が起動すると、ハードウェア及び設定の確認等、プログラムの初期化が実行された後、開始状態となる(ステップS1101)。
【0399】
なお、
図11A及び
図11Bに示す処理はポート毎に実行される。本実施形態では、状態管理部306が各ポートの状態を管理し、ポート毎に以下で説明する処理を実行するものとするが、本発明はこれに限らない。例えば、ポート毎又は複数のポートをまとめたグループ毎に状態管理部306又は全体制御部120を用意して並列に処理を実行させることによって処理を高速化してもよいし、一部の処理だけポート毎又はグループ毎に並列に処理を実行させてもよい。
【0400】
状態管理部306は、ポート毎に変数「RRCAP」及び変数「RRCTR」を管理しており、変数の値の組み合わせに基づいて、各ポートがB0状態703、B1状態704、B2状態705及びB3状態706のいずれの状態であるかを管理する。また、状態管理部306は、状態遷移が必要な場合に各状態を変更する。
【0401】
また、状態管理部306は、ポート毎に変数「RRSTAT」及び変数「RRREQ」を管理しており、変数の組み合わせに基づいて、ポートに接続されたEdgeRelay128の状態がS0状態604、S1状態605、S2状態606、S3状態607、S4状態608及びS5状態609のいずれの状態であるかを管理する。
【0402】
ここで、状態管理部306は、初期化においてB0状態703となるように設定する。また、状態管理部306は、初期化において、ブリッジ装置101のポートに接続されたEdgeRelay128の状態をS0状態604とする。
【0403】
ブリッジ装置101の状態管理部306は、開始状態になると、まず、遷移指示を受け付けたか否かを判定する(ステップS1102)。ここで、遷移指示は、SWモード701への遷移指示と又はRRモード702への遷移指示のいずれかであり、設定によって又は外部から与えられる。
【0404】
なお、ステップ1102の判定では、遷移指示を受け付ける度に1度だけ、遷移指示を受け付けたと判定されるものとする。すなわち、1回の遷移指示に対して、1回だけ判定結果が「YES」となるものとする。
【0405】
遷移指示を受け付けたと判定された場合、状態管理部306は、遷移指示に関する情報を記録し、ステップS1104に進む(ステップS1103)。具体的には、遷移指示を受け付けたこと、及び、当該遷移指示がSWモード701への遷移指示又はRRモード702への遷移指示のいずれであるかを示す変数「遷移指示状態」が記録される。
【0406】
状態管理部306は、ブリッジ装置101におけるポート状態遷移処理を実行し、ステップ1105に進む(ステップS1104)。なお、ブリッジ装置101におけるポート状態遷移処理の詳細については後述する。
【0407】
状態管理部306は、状態遷移処理が終了した後、変数「遷移指示状態」を参照して、遷移指示が記録されているか否かを判定する(ステップS1105)。変数「遷移指示状態」にSWモード701への遷移指示又はRRモード702への遷移指示を示す値が格納されている場合、遷移指示が記録されていると判定される。
【0408】
遷移指示が記録されていないと判定された場合、状態管理部306は、ステップS1102に戻り、同様の処理を実行する。
【0409】
ステップS1102において遷移指示を受け付けていないと判定された場合、状態管理部306は、フレーム分類/情報抽出部311から伝達された情報に基づいて、ポートがフレームを受信したか否かを判定する(ステップS1106)。
【0410】
ポートがフレームを受信していないと判定された場合、状態管理部306は、ステップS1102に戻り同様の処理を実行する。
【0411】
ポートがフレームを受信していると判定された場合、状態管理部306は、フレーム分類/情報抽出部311から伝達された情報に基づいて、ポートが制御フレームを受信したか否かを判定する(ステップS1107)。
【0412】
ポートが制御フレームを受信していないと判定された場合、状態管理部306は、ステップS1121に進む。
【0413】
ポートが制御フレームを受信したと判定された場合、状態管理部306は、制御フレーム処理部307から制御フレームの内容を取得し、変数「RRSTAT」及び変数「RRREQ」に値を設定して、ステップS1104に進む。
【0414】
ステップS1105において遷移指示が記録されていると判定された場合、状態管理部306は、変数「遷移指示状態」、変数「RRCAP」及び変数「RRCTR」を参照し、SWモード701への遷移指示が記録され、かつ、現在のブリッジ装置101のポートの状態がB0状態703であるか否かを判定する(ステップS1108)。
【0415】
ステップS1108の判定条件を満たすと判定された場合、状態管理部306は、受け付けた遷移指示に対して成功した旨を応答し、ステップS1110に進む(ステップS1109)。応答の方法としては、例えば、入出力装置を介して成功した旨を示す情報を出力し、ポートを介して成功した旨を示す情報を含むフレームを送信することによって応答する方法が考えられる。また、制御フレームによる状態の通知にあわせて当該情報を通知してもよい。なお、遷移指示の応答が必要ない場合には、当該処理は省略してもよい。
【0416】
状態管理部306は、変数「遷移指示状態」を消去し、ステップS1102に戻り同様の処理を実行する(ステップS1110)。ここで、変数「遷移指示状態」の消去方法としては、例えば、遷移指示を示す値とは異なる値を変数に代入する。なお、開始状態では変数「遷移指示状態」は消去されている状態とする。
【0417】
ステップS1108において、ステップS1108の判定条件を満たさないと判定された場合、状態管理部306は、変数「遷移指示状態」、変数「RRCAP」及び変数「RRCTR」を参照し、RRモード702への遷移指示が記録され、かつ、現在のブリッジ装置101のポートの状態がB3状態706であるか否かを判定する(ステップS1111)。
【0418】
ステップS1111の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1102に戻り同様の処理を実行する。ステップS1111の判定条件を満たすと判定された場合、状態管理部306は、ステップS1109に進む。
【0419】
ステップS1107において、ポートが制御フレームを受信していないと判定された場合、状態管理部306は、ポート学習部310にポート学習の実行を指示する(ステップS1121)。当該指示を受け付けたポート学習部310は、対象フレームの送信元MACアドレス及びVLAN IDを用いてポート学習を実行する。
【0420】
次に、状態管理部306は、配送ポート決定部309に対して、配送ポートの検索を指示し、ステップS1123に進む(ステップS1122)。当該指示を受け付けた配送ポート決定部309は、以下のような処理を実行する。
【0421】
まず、配送ポート決定部309は、対象フレームの宛先MACアドレス及びVLAN IDに基づいてポート学習部310に問い合わせをすることによって、学習済みのポートを検索する。
【0422】
学習済みのポートが見つかった場合、配送ポート決定部309は、当該ポート(1個以上)を配送ポートに決定し、学習済みのポートが見つからなかった場合、全ポートを配送ポートに決定する。
【0423】
次に、状態管理部306は、変数「RRCAP」及び変数「RRCTR」を参照し、現在のブリッジ装置101のポートのモードがRRモード702(B1状態704又はB3状態706)であるか否かを判定する(ステップS1123)。
【0424】
現在のブリッジ装置101のポートのモードがRRモード702であると判定された場合、状態管理部306は、配送ポート決定部309に配送ポートへのフレームの配送を指示する(ステップS1124)。
【0425】
状態管理部306は、配送ポート決定部309に問い合わせて、各ポートに配送されたフレームがあるか否かを判定する(ステップS1125)。各ポートに配送されたフレームがないと判定された場合、状態管理部306は、ステップS1102に戻り同様の処理を実行する。
【0426】
各ポートに配送されたフレームがあると判定された場合、状態管理部306は、送受信制御部313に配送されたフレームの送信を指示し、その後、ステップS1102に戻り同様の処理を実行する(ステップS1126)。
【0427】
ステップS1123において現在のブリッジ装置101のモードがRRモード702でないと判定された場合、状態管理部306は、配送ポートの除外を指示し、ステップS1124に進む(ステップS1127)。当該指示を受け付けた配送ポート決定部309は、ステップS1122において決定された配送ポートのうち、フレーム分類/情報抽出部311から伝達された対象フレームの受信ポートを除外し、残りのポートを新たな配送ポートとして決定する。
【0428】
以上で説明したブリッジ装置101が実行する処理の概略は以下のようになる。
【0429】
まず、ブリッジ装置101は、初期化を実行する。そして、遷移指示を受け付けた場合(ステップS1102がYES)、ブリッジ装置101はポート状態遷移処理を実行する(ステップS1104)。ブリッジ装置101は、処理の結果が出た場合(ステップS1108、ステップS1111)は応答を返し(ステップS1109)、最初に戻る(ステップS1102)。
【0430】
遷移指示を受け付けてなく、かつ、制御フレームを受信した場合(ステップS1107がYES)、ブリッジ装置101は、ポート状態遷移処理を実行し(ステップS1104)、その後、最初に戻る(ステップS1102)。
【0431】
遷移指示を受け付けてなく、かつ、制御フレーム以外のフレームを受信した場合(ステップS1007がNO)、ブリッジ装置101は、フレーム配送処理(ステップS1121〜1124、ステップS1127)を実行した後、フレームを送信する(ステップS1126)。
【0432】
なお、フレーム配送処理において、ブリッジ装置101のモードがRRモード702の場合、ブリッジ装置101は、配送ポートから受信ポートを除外しない。以上で説明した処理はポート毎に実行される。
【0433】
(ポート状態遷移処理)
次に、ブリッジ装置101におけるポート状態遷移処理について説明する。
【0435】
また、ブリッジ装置101の状態の取得、及び、EdgeRelay128の状態情報を含む制御フレームの受信は、
図11において説明したため以下では省略する。
【0436】
ブリッジ装置101の状態の変更は、変数「RRCAP」及び変数「RRCTR」の値を変更することによって実現される。したがって、ブリッジ装置101の状態が変更された場合には、変数「RRCAP」及び変数「RRCTR」の値が変更されたことを意味する。
【0437】
なお、ポート状態遷移処理は、遷移指示を受け付け、又は、制御フレームの受信を契機に実行され、以下の説明において「状態情報を含む制御フレームを受信した」という表現はポート状態遷移処理の契機となる制御フレームに状態情報(S0状態604、S1状態605、S2状態606、S3状態607、S4状態608又はS5状態609)が含まれていることを表すものとする。また、状態管理部306は、制御フレームに従って変数「RRSTAT」及び変数「RRREQ」を更新し、変数「RRSTAT」及び変数「RRREQ」を参照してEdgeRelay128の状態情報を取得できる。
【0438】
ブリッジ装置101におけるポート状態遷移処理が開始されると(ステップS1201)、状態管理部306は、ブリッジ装置101の状態がB0状態703であるか否かを判定する(ステップS1202)。
【0439】
ステップS1202の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1211に進む。
【0440】
ステップS1202の判定条件を満たすと判定された場合、状態管理部306は、変数「遷移指示状態」を参照して、RRモード702への遷移指示を受け付けたか否かを判定する(ステップS1203)。
【0441】
RRモード702への遷移指示を受け付けたと判定された場合、状態管理部306は、ブリッジ装置101の状態をB2状態705に変更し、ステップ1205に進む(ステップS1204)。
【0442】
状態管理部306は、現在のブリッジ装置101の状態情報を含む制御フレームの生成を制御フレーム生成部308に指示し、処理を終了する(ステップS1205、ステップS1206)。当該指示を受け付けた制御フレーム生成部308は、制御フレームを生成し、処理対象のポートに接続されたEdgeRelay128に制御フレームを送信する。
【0443】
ステップS1203においてRRモード702への遷移指示を受け付けていないと判定された場合、状態管理部306は、変数「遷移指示状態」を参照してSWモード701への遷移指示を受け付けたか否かを判定する(ステップS1207)。
【0444】
SWモード701への遷移指示を受け付けたと判定された場合、状態管理部306は、処理を終了する(ステップS1206)。
【0445】
SWモード701への遷移指示を受け付けていないと判定された場合、状態管理部306は、S1状態605又はS5状態609を含む制御フレームを受信したか否かを判定する(ステップS1208)。
【0446】
ステップS1208の判定条件を満たさないと判定された場合、状態管理部306は、ブリッジ装置101の状態を変更することなくステップS1210に進む。
【0447】
ステップS1208の判定条件を満たすと判定された場合、状態管理部306は、ブリッジ装置101の状態をB3状態706に変更し、ステップS1210に進む(ステップS1209)。
【0448】
状態管理部306は、S1状態605、S2状態606、S4状態608又はS5状態609のいずれかを含む制御フレームを受信したか否かを判定する(ステップS1210)。
【0449】
ステップS1210の判定条件を満たさないと判定された場合、状態管理部306は、処理を終了する(ステップS1206)。ステップS1210の判定条件を満たすと判定された場合、状態管理部306、ステップS1205に進む。
【0450】
ステップS1202において、ステップS1202の判定条件を満たさないと判定された場合、状態管理部306は、ブリッジ装置101の状態がB1状態704であるか否かを判定する(ステップS1211)。
【0451】
ステップS1211の判定条件を満たすと判定された場合、状態管理部306は、変数「遷移指示状態」を参照してRRモード702への遷移指示を受け付けたか否かを判定する(ステップS1212)。
【0452】
ステップS1212の判定条件を満たすと判定された場合、状態管理部306は、ブリッジ装置101の状態をB3状態706に変更し、ステップ1205に進む(ステップS1213)。
【0453】
ステップS1212の判定条件を満たさないと判定された場合、状態管理部306は、変数「遷移指示状態」を参照してSWモード701への遷移指示を受け付けたか否かを判定する(ステップS1214)。
【0454】
ステップS1214の判定条件を満たすと判定された場合、状態管理部306は、処理を終了する(ステップS1206)。
【0455】
ステップS1214の判定条件を満たさないと判定された場合、状態管理部306は、S0状態604、S2状態606又はS4状態608のいずれかを含む制御フレームを受信したか否かを判定する(ステップS1215)。
【0456】
ステップS1215の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1210に進む。
【0457】
ステップS1215の判定条件を満たすと判定された場合、状態管理部306は、ブリッジ装置101の状態をB0状態703に変更し、ステップS1210に進む(ステップS1216)。
【0458】
ステップS1211において、ステップS1211の判定条件を満たさないと判定された場合、状態管理部306は、ブリッジ装置101の状態がB2状態705であるか否かを判定する(ステップS1221)。
【0459】
ステップS1221の判定条件を満たすと判定された場合、状態管理部306は、変数「遷移指示状態」を参照してSWモード701への遷移指示を受け付けたか否かを判定する(ステップS1222)。
【0460】
ステップS1222の判定条件を満たすと判定された場合、状態管理部306は、ブリッジ装置101の状態をB0状態703に変更し、ステップ1205に進む(ステップS1223)。
【0461】
ステップS1222の判定条件を満たさないと判定された場合、状態管理部306は、状態管理部306は、変数「遷移指示状態」を参照してRRモード702への遷移指示を受け付けたか否かを判定する(ステップS1224)。
【0462】
ステップS1224の判定条件を満たすと判定された場合、状態管理部306は、処理を終了する(ステップS1206)。
【0463】
ステップS1224の判定条件を満たさないと判定された場合、状態管理部306は、S1状態605、S3状態607又はS5状態609のいずれかを含む制御フレームを受信したか否かを判定する(ステップS1225)。
【0464】
ステップS1225の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1210に進む。
【0465】
ステップS1225の判定条件を満たすと判定された場合、状態管理部306は、ブリッジ装置101の状態をB3状態706に変更し、ステップS1210に進む(ステップS1226)。
【0466】
ステップS1221において、ステップS1221の判定条件を満たさない、すなわち、ブリッジ装置101の状態がB3状態であると判定された場合、状態管理部306は、変数「遷移指示状態」を参照してSWモード701への遷移指示を受け付けたか否かを判定する(ステップS1231)。
【0467】
ステップS1231の判定条件を満たすと判定された場合、状態管理部306は、ブリッジ装置101の状態をB1状態704に変更し、ステップS1205に進む(ステップS1232)。
【0468】
ステップS1231の判定条件を満たさないと判定されて場合、状態管理部306は、変数「遷移指示状態」を参照してRRモード702への遷移指示を受け付けたか否かを判定する(ステップS1233)。
【0469】
ステップS1233の判定条件を満たすと判定された場合、状態管理部306は、処理を終了する(ステップS1206)。
【0470】
ステップS1233の判定条件を満たさないと判定された場合、状態管理部306は、S2状態606又はS4状態608を含む制御フレームを受信したか否かを判定する(ステップS1234)。
【0471】
ステップS1234の判定条件を満たさないと判定された場合、状態管理部306は、ステップS1210に進む。
【0472】
ステップS1234の判定条件を満たすと判定された場合、状態管理部306は、ブリッジ装置101の状態をB0状態703に変更し、ステップS1210に進む(ステップS1235)。
【0473】
以上で説明したブリッジ装置101におけるポート状態遷移処理の概略は以下の通りである。
【0474】
ブリッジ装置におけるポート状態遷移処理は、遷移指示を受け付け、又は、制御フレームを受信すると開始される。状態管理部306は、まず、現在のブリッジ装置101の状態と、遷移指示の内容と、受信した制御フレームに含まれるEdgeRelay128の状態情報とに基づいて、ブリッジ装置101の状態を決定し、決定された状態に変更する。また、状態管理部306は、変更した状態を通知するための制御フレームを転送する。
【0475】
B0状態703、かつ、RRモード702への遷移指示を受け付けた場合、状態管理部306は、ブリッジ装置101の状態をB2状態705に変更する(ステップS1204)。また、B3状態706、かつ、SWモード701への遷移指示を受け付けた場合、状態管理部306は、ブリッジ装置101の状態をB1状態704に変更する(ステップS1232)。
【0476】
B0状態703でS1状態605若しくはS5状態609を含む制御フレームを受信した場合(ステップS1208がYES)、B1状態704、かつ、RRモード702への遷移指示を受け付けた場合(ステップS1212がYES)、又は、B2状態705、かつ、S1状態605、S3状態607若しくはS5状態609のいずれかを含む制御フレームを受信した場合(ステップS1225がYES)、状態管理部306は、ブリッジ装置101の状態をB3状態706に変更する。
【0477】
B1状態704、かつ、S0状態604、S2状態606又はS4状態608を受信した場合(ステップS1215がYES)、B2状態705、かつ、SWモード701への遷移指示を受け付けた場合(ステップS1222がYES)、又は、B3状態706、かつ、S2状態606若しくはS4状態608を含む制御フレームを受信した場合(ステップS1234がYES)、状態管理部306は、ブリッジ装置101の状態をB0状態703に変更する。
【0478】
遷移指示を受け付け、又は、S1状態605、S2状態606、S4状態608若しくはS5状態609を含む制御フレームを受信することによって状態が変更された場合、状態管理部306は、変更後の状態を通知するための制御フレームを送信する(ステップS1205)。
【0479】
図10で説明したEdgeRelay128における状態遷移処理に比べると、ブリッジ装置101におけるポート状態遷移処理の方が単純となっている。これは、EdgeRelay128の状態の数が6つあるのに対して、ブリッジ装置101の状態の数が4つであり、また、時間経過に伴う処理及びフレームの転送停止に関する処理がないためである。
【0480】
次に、EdgeRelay128及びブリッジ装置101を含むシステムにおける動作の概略について説明する。以下、各装置のモードの組み合わせについて説明する。
【0481】
(EdgeRelay128がVEBモード601で動作し、ブリッジ装置101がSWモード701で動作する場合)
ここでは、EdgeRelay128はVEBモード601(S0状態604)で動作し、ブリッジ装置101はSWモード701(B0状態703)で動作しているものとする。この場合、EdgeRelay128及びブリッジ装置101は、互いに制御フレームを送受信しても状態は変化しない。
【0482】
仮想マシン130−1から仮想マシン130−2宛のフレームが送信された場合、初期状態ではEdgeRelay128及びブリッジ装置101は、共にポート学習が実行されていない。したがって、EdgeRelay128は、受信ポートを除く全ポート、すなわち、仮想マシン130−2とブリッジ装置101にフレームを転送し、同様に、ブリッジ装置101は、サーバ装置102−2及びノード装置104にフレームを転送する。
【0483】
仮想マシン130−2は、転送されたフレームの宛先が自分宛であるためフレームを受信し、フレームを用いて所定の処理を実行する。一方、サーバ装置102−2及びノード装置104は、転送されたフレームの宛先が自分宛でないためフレームを廃棄する。したがって、結果として仮想マシン130−2に正しくフレームが伝送される。
【0484】
このとき、EdgeRelay128及びブリッジ装置101は、送信元のアドレスに仮想マシン130−1のアドレスを含むフレームをどのポートから受信したかを学習する。
【0485】
次に、仮想マシン130−2から仮想マシン130−1宛のフレームが送信された場合、EdgeRelay128はポート学習の結果、仮想マシン130−1のアドレスのポートを学習済みであるため、仮想マシン130−1が接続されるポートにのみにフレームを転送する。また、仮想マシン130−1はフレームを受信し、フレームを用いて所定の処理を実行する。
【0486】
このとき、EdgeRelay128及びブリッジ装置101は、それぞれ、送信元のアドレスに仮想マシン130−2のアドレスを含むフレームをどのポートから受信したかを学習する。
【0487】
以降、同様の手順に従って、EdgeRelay128及びブリッジ装置101は、仮想マシン130−1及び仮想マシン130−2を学習済みであるとする。
【0488】
サーバ装置102−2やノード装置104から送信された仮想マシン130−1宛のフレームは、同様に、ブリッジ装置101、EdgeRelay128の順に経由して仮想マシン130−1に伝送される。
【0489】
仮想マシン130−1と仮想マシン130−2との間で送受信されるフレームの伝送経路は、EdgeRelay128及びブリッジ装置101の状態及びモードによって変化するが、それ以外のフレームの伝送経路は変化しないため以下の説明では省略する。
【0490】
現在、EdgeRelay128はVEBモード601(S0状態604)で動作し、ブリッジ装置101はSWモード701(B0状態703)で動作している。
【0491】
仮想マシン130−1から仮想マシン130−2宛のフレームが送信されると、EdgeRelay128が当該フレームのスイッチング処理を実行して、当該フレームを仮想マシン130−2に転送するため、ブリッジ装置101に当該フレームが転送されることはない。
【0492】
また、仮想マシン130−1からブロードキャストフレームが送信されると、EdgeRelay128から仮想マシン130−2とブリッジ装置101とにフレームが転送され、ブリッジ装置101は、受信ポートを除く全ポート、すなわち、サーバ装置102−2及びノード装置104にフレームを転送する。従って、仮想マシン130−2、サーバ装置102−2及びノード装置104にそれぞれフレームが転送されるため、正しくブロードキャストの通信が行える。
【0493】
(VEPAモード602への遷移指示を受け付け後、EdgeRelay128がTRANモード603で動作し、ブリッジ装置101がSWモード701で動作する場合)
次に、EdgeRelay128は、VEPAモード602への遷移指示を受け付けた場合、状態遷移処理を実行することによって状態をS1状態605に変更する。これに伴って、EdgeRelay128は、TRANモード603で動作する。また、EdgeRelay128は、S1状態605を含む制御フレームをブリッジ装置101に送信する。
【0494】
このとき、EdgeRelay128はTRANモード603(S1状態605)で動作し、ブリッジ装置101はSWモード701(B0状態703)で動作している。
【0495】
仮想マシン130−1から仮想マシン130−2宛のフレームが送信された場合、EdgeRelay128が当該フレームのスイッチング処理を実行して、当該フレームを仮想マシン130−2に転送するため、ブリッジ装置101に当該フレームが転送されることはない。
【0496】
また、仮想マシン130−2からブロードキャストフレームが送信されると、EdgeRelay128から仮想マシン130−2とブリッジ装置101とにフレームが転送され、ブリッジ装置101は、受信ポートを除く全ポート、すなわち、サーバ装置102−2及びノード装置104にフレームを転送する。従って、仮想マシン130−2、サーバ装置102−2及びノード装置104のそれぞれにフレームが転送されるため、正しくブロードキャストの通信が行える。
【0497】
(EdgeRelay128がTRANモード603で動作し、ブリッジ装置101がRRモード702で動作する場合)
ブリッジ装置101は、S1状態605を含む制御フレームを受信すると、ポート状態遷移処理を実行することによって状態をB3状態706に変更し、さらに、B3状態706を含む制御フレームをEdgeRelay128に送信する。このとき、EdgeRelay128はTRANモード603(S1状態605)で動作し、ブリッジ装置101はRRモード702(B3状態706)で動作している。
【0498】
仮想マシン130−1から仮想マシン130−2宛のフレームが送信された場合、EdgeRelay128が当該フレームのスイッチング処理を実行して、当該フレームを仮想マシン130に転送するため、ブリッジ装置101に当該フレームが転送されることはない。
【0499】
また、仮想マシン130−1からブロードキャストフレームが送信されると、EdgeRelay128から仮想マシン130−2とブリッジ装置101とにフレームが転送され、RRモード702で動作するブリッジ装置101は、受信ポートを含む全ポート、すなわち、EdgeRelay128、サーバ装置102−2及びノード装置104にフレームを転送する。
【0500】
一方、TRANモード603で動作するEdgeRelay128は、転送ポート管理表124に受信ポート以外のポートを示すエントリが存在するため、ブリッジ装置101から転送されたフレームの送信元(仮想マシン130−1)の情報が学習済みであると判定する(ステップS913がYES)。したがって、EdgeRelay128は、当該フレームを廃棄する。
【0501】
本発明ではTRANモード603を導入することによって、結果として、仮想マシン130−2、サーバ装置102−2及びノード装置104のそれぞれにフレームが転送されるため、正しくブロードキャストの通信が行える。
【0502】
(EdgeRelay128がVEPAモード602で動作し、ブリッジ装置101がRRモード702で動作する場合)
EdgeRelay128は、B3状態706を含む制御フレームを受信すると、状態遷移処理を実行して、ブリッジ装置101が接続されるUPLINKポートが受信したフレームの転送を継続し(ステップS815がYES)、一方、UPLINKポート以外のポートが受信したフレームの転送を受信待機時間の間停止して(ステップS1062)、フレームを蓄積する(ステップS824)。
【0503】
EdgeRelay128は、状態をS3状態607に変更することによってVEPAモード602での動作を開始した後、フレームの転送を再開し(ステップS1022B)、蓄積されたフレームから順に転送処理を実行する(ステップS821)。この結果、転送停止中にEdgeRelay128が受信したフレームは、正しい順序で転送される。また、EdgeRelay128は、S3状態607を含む制御フレームをブリッジ装置101に送信する。
【0504】
このとき、EdgeRelay128は、前半はTRANモード603で動作しているが転送停止の状態であり、後半は、VEPAモード602(S3状態607)で動作する。一方、ブリッジ装置101は前半及び後半いずれの場合でもRRモード702(B3状態706)で動作する。
【0505】
そのため、仮想マシン130−1から仮想マシン130−2宛のフレームが送信された場合、前半はEdgeRelay128に当該フレームが蓄積されるため、ブリッジ装置101に当該フレームが転送されることはない。
【0506】
後半では、EdgeRelay128が蓄積したフレームと新たに受信したフレームとのスイッチング処理を順に実行する。仮想マシン130−1から仮想マシン130−2宛のフレームが送信されている場合、ブリッジ装置101が接続されたポート(UPLINKポート)以外のポートから当該フレームを受信するため(ステップS909がNO)、当該フレームをブリッジ装置101に転送する。
【0507】
ブリッジ装置101は、EdgeRelay128から転送されたフレームのスイッチング処理を実行する。このとき、ブリッジ装置101は仮想マシン130−2の宛先を学習済みであるため、EdgeRelay128が接続されたポートに当該フレームを転送する。
【0508】
EdgeRelay128は、ブリッジ装置101が接続されたポート(UPLINKポート)からフレームを受信するため(ステップS909がYES)、仮想マシン130−2にフレームを転送する。仮想マシン130−2は、当該フレームを受信し、フレームを用いて所定の処理を実行する。
【0509】
すなわち、ブリッジ装置101と仮想マシン130−1との間で互いを宛先として送受信されるフレームは、EdgeRelay128を経由してブリッジ装置101に転送され、ブリッジ装置101によってスイッチング処理が実行され、さらに、EdgeRelay128を経由して宛先に伝送される。
【0510】
仮想マシン130−2からブロードキャストフレームが送信された場合も、仮想マシン130−1には同様の経路を通って1フレーム毎にフレームが伝送され、サーバ装置102−1及びノード装置104にはEdgeRelay128を経由してブリッジ装置101から1フレーム毎にフレームが伝送される。
【0511】
(EdgeRelay128がVEBモード601に遷移中の動作)
EdgeRelay128は、VEPAモード602への遷移指示を受け付けると、状態遷移処理を実行して、ブリッジ装置101が接続されたUPLINKポートから受信したフレームの転送を継続し(ステップS815がYES)、UPLINKポート以外のポートから受信したフレームの転送を受信待機時間の間は停止して(ステップS1062)、フレームを蓄積する(ステップS824)。
【0512】
EdgeRelay128は、S2状態606に変更することによってTRANモード603での動作を開始し、フレームの転送を再開し(ステップS1022A及びステップS1022B)、蓄積されたフレームから順に転送処理を実行する(ステップS820)。この結果、転送停止中の状態の場合にEdgeRelay128が受信したフレームは、正しい順序で転送される。
【0513】
また、EdgeRelay128は、S2状態606を含む制御フレームをブリッジ装置101に送信する。
【0514】
このとき、EdgeRelay128は、前半はVEPAモード602で動作しているが、転送停止の状態であり、後半はTRANモード603で動作し、フレームの転送を再開する。一方、ブリッジ装置101は前半及び後半いずれの場合でもRRモード702で動作する。
【0515】
そのため、仮想マシン130−1から仮想マシン130−2宛のフレームが送信され他場合、前半はEdgeRelay128に当該フレームが蓄積され、後半はEdgeRelay128が蓄積したフレームと当該フレームのスイッチング処理を順に実行して、当該フレームを仮想マシン130−2に転送するため、ブリッジ装置101に当該フレームが転送されることはない。
【0516】
また、仮想マシン130−1からブロードキャストフレームが送信されると、転送再開後にEdgeRelay128から仮想マシン130−2及びブリッジ装置101にフレームが転送される。RRモード702で動作するブリッジ装置101は、受信ポートを含む全ポート、すなわち、EdgeRelay128、サーバ装置102−2及びノード装置104にフレームを転送する。
【0517】
TRANモード603で動作するEdgeRelay128は、転送ポート管理表124に受信ポート以外のポートを示すエントリが存在するため、ブリッジ装置101から転送されたフレームの送信元(仮想マシン130−2)の情報を学習済みであると判定する(ステップS913がYES)。したがって、EdgeRelay128は、当該フレームを廃棄する。
【0518】
本発明ではTRANモード603を導入することによって、結果として、仮想マシン130−2、サーバ装置102−2及びノード装置104のそれぞれに当該フレームが転送されるため、正しくブロードキャストの通信が行える。
【0519】
ブリッジ装置101は、S2状態606を含む制御フレームを受信すると、ポート状態遷移処理を実行することによって状態をB0状態703に変更し、B0状態703を含む制御フレームをEdgeRelay128に送信する。このとき、EdgeRelay128はTRANモード603(S2状態606)で動作し、ブリッジ装置101はSWモード701(B0状態703)で動作する。当該モードの組み合わせにおける動作は前述したため説明を省略する。
【0520】
B0状態703を含む制御フレームを受信したEdgeRelay128は、状態遷移処理を実行することによって状態をS0状態604に変更して、VEBモード601で動作を開始し、また、S0状態604を含む制御フレームをブリッジ装置101に送信する。このとき、EdgeRelay128はVEBモード601(S0状態604)で動作し、ブリッジ装置101はSWモード701(B0状態703)で動作する。当該モードの組み合わせにおける動作は前述したため説明を省略する。
【0521】
(モード遷移の説明)
以上で示した手順によって、EdgeRelay128は、VEBモード601からTRANモード603を経て、フレームの転送を一時停止した後、VEPAモード602に遷移し、さらに、フレームの転送を一時停止した後、VEPAモード602からTRANモード603を経てVEBモード601に遷移する。
【0522】
また、EdgeRelay128のモードの遷移に対応して、ブリッジ装置101は、SWモード701からRRモード702に遷移し、さらに、RRモード702からSWモード701に遷移する。
【0523】
ブリッジ装置101と仮想マシン130−1との間で送受信されるフレームのスイッチング処理を実行する装置は、モードの変更に伴って、EdgeRelay128からブリッジ装置101に、ブリッジ装置101からEdgeRelay128に、通信を継続したまま動的に変更される。
【0524】
EdgeRelay128及びブリッジ装置101のモードの組み合わせは、VEBモード601とSWモード701、TRANモード603とSWモード701、TRANモード603とRRモード702、及びVEPAモード602とRRモード702のいずれかである。各組み合わせでの動作は前述したとおりである。
【0525】
VEPAモード602とTRANモード603との間でのモード遷移時にフレームの転送を一時停止させるのは、EdgeRelay128からRRモード702で動作するブリッジ装置101に転送され、ブリッジ装置101からEdgeRelay128に転送されるブロードキャストフレームと、TRANモード603で動作するEdgeRelay128がスイッチング処理を実行することによって転送されるフレームとが重複することを避けるためである。
【0526】
(遷移指示の契機)
本発明において、状態遷移の契機のひとつであるEdgeRelay128及びブリッジ装置101におけるモードの遷移指示は、ユーザ又は管理者からの指示するものとしているが、本発明はこれに限らない。
【0527】
例えば、EdgeRelay128又はブリッジ装置101に閾値を設定し、サーバ装置102又はブリッジ装置101のCPU使用率やメモリ使用量等が閾値を超えた場合に遷移指示を発行することによって、サーバ装置102又はブリッジ装置101の負荷変動に合わせてスイッチング処理を実行する装置を変更できるようにしてもよい。
【0528】
また、例えば、EdgeRelay128又はブリッジ装置101に時刻を設定し、設定された時刻になった場合に遷移指示を発行することによって、スイッチング処理を実行する装置を時間毎に変更できるようにしてもよい。
【0529】
以上に例示するように、本発明では、遷移指示をEdgeRelay128及びブリッジ装置101のいずれに行ってもよい。例えば、ブリッジ装置101にネットワーク管理者が遷移指示を与えて、ネットワーク機器の利用予定やモニタリング等のネットワーク管理の都合に合わせたスイッチング処理を実行する装置を変更してもよいし、例えば、サーバ管理者がEdgeRelay128に遷移指示を与えて、サーバ利用者が必要とするレイテンシ等のネットワーク要件に合わせてスイッチング処理を実行する装置を変更してもよい。
【0530】
(本実施形態の装置以外との接続)
ここで、EdgeRelay128と他のブリッジ装置(以下、他ブリッジ装置)を接続した場合、及びブリッジ装置101と他ブリッジ装置を接続した場合の動作について説明する。
【0531】
EdgeRelay128と他ブリッジ装置との接続に関しては、EdgeRelay128がTRANモード603で動作し、一定時間、制御フレームを受信しない場合に、状態をS0状態604に遷移する処理を追加すれば対応できる。
【0532】
まず、他ブリッジ装置がIEEE 802.1Qbgをサポートしない、すなわち、制御フレームを送信しない場合を説明する。
【0533】
EdgeRelay128と他ブリッジ装置とを接続した場合、初期状態ではEdgeRelay128はTRANモード603で動作する。仮想マシンの移動を伴わなければ、TRANモード603でも通信は正常に行われる。また、制御フレームが一定時間受信されず、S0状態604に遷移し、VEBモード601で動作するため、通信は正常に行われる。
【0534】
なお、VEPAモード602への遷移が指示された場合、EdgeRelay128は、一時的にTRANモード603に遷移するが、同様にVEBモード601に遷移することとなる。また、本発明のブリッジ装置101を他ブリッジ装置(Edge Relayとして動作)と接続した場合、初期状態ではB0状態703となっているため、SWモード701で動作し、通信は正常に行われる。RRモード702への遷移指示を行った場合でも、状態がB2状態705に遷移するが、ブリッジ装置101はSWモード701のまま動作するため、通信は正常に行われる。
【0535】
次に、他ブリッジ装置がIEEE 802.1Qbgに準拠している場合の動作を説明する。
【0536】
IEEE 802.1Qbgでは、RRCAPが「1」でRRREQが「1」の場合のみ、EVB BridgeのReflective Relay動作が有効となると規定されている。
【0537】
EdgeRelay128とIEEE 802.1Qbg準拠の他ブリッジ装置を接続し、他ブリッジ装置がReflective Relay機能を持たない場合、B0状態703を含む制御フレームのみを受信するため、EdgeRelay128は、制御フレームを受信していない時にはTRANモード603、制御フレームを受信した時にはVEBモード601で動作する。従って、通信は正常に行われる。VEPAモード602への遷移を指示した場合も同様である。
【0538】
また、他ブリッジ装置がReflective Relay機能を持つ場合、EdgeRelay128は、B2状態705又はB3状態706を含む制御フレームを受信することとなる。この場合、EdgeRelay128が受信するB2状態705を含む制御フレームを、B0状態703を含む制御フレームと置き換えて扱えば、EdgeRelay128へのモードの遷移指示も含めて動作する。
【0539】
一方、本発明のブリッジ装置101をIEEE 802.1Qbgに準拠する他ブリッジ装置(Edge Relayとして動作)と接続した場合、B0状態703をB2状態705に置き換えて扱うようにすれば、ブリッジ装置101への遷移指示以外は正常に動作する。ブリッジ装置101へのモード遷移指示は、他ブリッジ装置の挙動を完全には制御できないため遷移が完了しないことがあり、失敗することがある。また、遷移中の動作はIEEE 802.1Qbgでは規定されていないため、他ブリッジ装置における通信が正常に行われない可能性がある。
【0540】
したがって、本実施形態におけるEdgeRelay128(前述した若干の変更を含む)が他ブリッジ装置と接続し、他ブリッジ装置がIEEE 802.1Qbgに対応したReflective Relay機能を持つ場合、EdgeRelay128への遷移指示まで含めて、それ以外では遷移指示を除いて動作する。また、遷移指示を行った場合も含めて通信は正常に行われる。また、本実施形態におけるブリッジ装置101(前述した若干の変更を含む)は、他ブリッジ装置(Edge Relayとして動作)と接続される場合、EdgeRelay128への遷移指示を除いて動作し、通信も正常に行わる。
【0541】
第1の実施形態によれば、EdgeRelay128とブリッジ装置101との間の通信を継続したまま、動的にスイッチング処理を実行する装置を変更できる。また、前述の変更に必要な制御フレームにはIEEE 802.1Qbgの規定に準拠したものを用いているため、他のブリッジ装置と接続される場合、モード遷移指示以外では正常に動作して、通信も正常に行える。
【0542】
さらに、IEEE 802.1Qbgに準拠したEdgeRelay128と、Reflective Relay機能を持つブリッジ装置とを接続した場合、EdgeRelay128へのモード遷移指示も含めて動作可能となる。
【0543】
[第2の実施形態]
第1の実施形態では、EdgeRelay128はサーバ装置102において動作するプログラムであった。しかし、
図3で説明したように、EdgeRelay128とブリッジ装置101とのソフトウェア構成は同一であるため、ブリッジ装置101にEdgeRelay128の機能を含めることができる。本発明の第2の実施形態では、ブリッジ装置101にEdgeRelay128が含まれる点が第1の実施形態と異なる。
【0544】
以下、第1の実施形態との差異を中心に、第2の実施形態について説明する。
【0545】
本発明の第1の実施形態における計算機システムの論理的な構成を説明するブロック図である。
【0546】
(システム構成)
図13は、本発明の第2の実施形態における計算機システムの論理的な構成を説明するブロック図である。
【0547】
なお、サーバ装置102、ブリッジ装置1301及びEdgeRelay1302の構成は第1の実施形態と同一であるため説明を省略する。
【0548】
図13において、ブリッジ装置1301は、ブリッジ装置101と同一の構成であり、サーバ装置1303−1、サーバ装置1303−2及びサーバ装置1303−3はサーバ装置102と同一の構成であり、また、ノード装置1306はノード装置104と同一の構成である。また、ケーブル1307−1、ケーブル1307−2、ケーブル1308−1、ケーブル1308−2及びケーブル1311はケーブル105と同一の構成である。
【0549】
図13において、EdgeRelay1302は、EdgeRelay128が実行されたブリッジ装置101を示す。
【0550】
サーバ装置1303−1、サーバ装置1303−2及びサーバ装置1303−3は、いずれもイーサネットに準拠した入出力ポートを備えるネットワークノードである。EdgeRelay1302及びブリッジ装置1301が実行する処理は、第1の実施形態においてEdgeRelay128及びブリッジ装置101として同一であるため説明を省略する。
【0551】
第2の実施形態によれば、第1の実施形態と同様、EdgeRelay1302とブリッジ装置1301との間で、通信を継続したまま動的にスイッチング処理を実行する装置を変更できる。さらに、EdgeRelay1302はサーバ装置1303以外の装置上で実行されるため、仮想化機能を備えていない計算機でも、スイッチング処理を実行する装置を動的に変更することができる。
【0552】
[第3の実施形態]
本発明において、EdgeRelay128及びブリッジ装置101は、両者の機能を兼ねる装置又はプログラムを用いて実現してもよい。第3の実施形態では、ブリッジ装置101に機能を集約した場合を例に説明する。
【0553】
第3の実施形態におけるハードウェア構成及び論理的な構成は、第1の実施形態又は第2の実施形態と同一であるため省略する。以下では、第3の実施形態におけるブリッジ装置101の動作について説明する。
【0554】
図11A及び
図11Bで説明したブリッジ装置101の動作は、
図8A及び
図8Bにおける転送停止の状態に関係する処理を除けば、
図8A及び
図8Bで説明したEdgeRelay128のVEBモード601における動作と同様である。
【0555】
これは、ブリッジ装置101とEdgeRelay128との動作はいずれも、基本的な動作として、受信したフレームの転送処理と(ステップS816、ステップS820〜ステップS824、ステップS1121〜ステップS1127)、受け付けた遷移指示又は受信した制御フレームに従った状態の変更処理(ステップS805〜ステップS809、ステップS1104〜ステップS1105、ステップS1108〜ステップS1111)を実行するためである。
【0556】
なお、フレームの転送処理では、RRモード702の場合、ステップS1127の処理は実行されない点が異なり、状態の変更処理では、状態遷移処理と(ステップS804)、ポート状態遷移処理(ステップS1104)の内容に大きな違いがある。
【0557】
しかし、フレームの転送処理における違いは単なる条件分岐であるし、状態の変更処理における違いは、状態遷移処理(ステップS804)が全体の処理である一方でポート状態遷移処理(ステップS1104)はポート毎の処理であるため、ブリッジ装置101の動作とEdgeRelay128の動作を、同一装置内で実現して共存させることができる。例えば、EdgeRelay128の各ポートは、VEPAモード602においてUPLINKとして動作しているポートを除いて、変更を加えてブリッジ装置101のポートにおける動作をさせることができる。
【0558】
具体的には、
図9において、ステップS905に換えて、「状態管理部306は、当該ポートがRRモード702で動作するか否かを判定し、ポートがRRモード702で動作する場合にはステップS906に進み、ポートがRRモード702で動作していない場合にはステップ905に進むステップ」と、ステップS905とを置くことによって共存させられる。
【0559】
第3の実施形態によれば、EdgeRelay128の機能とブリッジ装置101の機能とを実現可能な装置又はソフトウェア(以下、同時実施装置という)を多段に接続可能となる。また、同時実施装置の一方を第1の実施形態又は第2の実施形態におけるブリッジ装置101に接続し、もう一方をEdgeRelay128に接続して、スイッチング処理位置の変更を目的に応じてEdgeRelay128、ブリッジ装置101、同時実施装置から自由に選択することが可能となる。
【0560】
特許請求の範囲に記載した以外の発明の観点の代表的なものとして、次のものがあげられる。
(1)演算処理装置と、前記演算処理装置に接続される記憶装置と、1以上のポートを備えるネットワークインタフェースとを備え、複数の転送モードで動作可能なフレーム転送装置におけるフレーム転送方法であって、
前記複数の転送モードは、第1の転送モード、第2の転送モード及び第3の転送モードを含み、
前記フレーム転送装置は、
前記フレームを受信する受信部と、
前記フレームを送信する送信部と、
前記フレームを送信するポートを決定するポート決定部と、
受信した前記フレームを解析するフレーム解析部と、
前記フレーム解析部によって解析された結果を蓄積する学習部と、
前記フレーム転送装置の転送モードを示すモード情報を保持し、前記モード情報に基づいて前記転送モードを切り替え、前記フレーム転送装置を制御する状態管理部と、
を備え、
前記方法は、
前記第1の転送モードでは、
前記フレーム転送装置が、前記ポートから受信した第1のフレームの解析の結果に基づいて、前記第1のフレームの転送処理を実行するステップを含み、
前記第2の転送モードでは、
前記フレーム転送装置が、他の前記フレーム転送装置が接続されたポートから第2のフレームを受信した場合、前記第2のフレームの解析の結果に基づいて、前記第2のフレームの転送処理を実行するステップと、
前記フレーム転送装置が、当該他のフレーム転送装置以外の装置が接続されたポートから第3のフレームを受信した場合、前記第3のフレームを当該他のフレーム転送装置に転送するステップと、を含み、
前記第3の転送モードでは、
前記フレーム転送装置が、前記他のフレーム転送装置が接続されたポートから第4のフレームを受信し、かつ、前記第4のフレームに対応する解析の結果が蓄積されている場合には、前記第4のフレームを廃棄するステップと、
前記フレーム転送装置が、当該他のフレーム転送装置以外の装置が接続されたポートから第5のフレームを受信した場合、又は、当該他のフレーム転送装置が接続されたポートから前記第4のフレームを受信し、かつ、前記第4のフレームに対応する解析の結果が蓄積されていない場合には、前記第4のフレームの解析の結果又は前記第5のフレームの解析の結果に基づいて、前記第4のフレーム又は前記第5のフレームの転送処理を実行するステップと、を含むことを特徴とするフレーム転送方法。
(2)前記フレーム転送装置は、前記転送モードが切り替えられる前は、前記第1の転送モード又は第2の転送モードのいずれかで動作し、
前記方法は、さらに、
前記第1の転送モード又は前記第2の転送モードから前記第3の転送モードを経由して、前記第1の転送モード又は前記第2の転送モードへ切り替えるステップを含むことを特徴とする(1)に記載のフレーム転送方法。
(3)前記第1のフレームの転送処理は、
前記第1のフレームの解析の結果に基づいて、前記第1のフレームを送信する送信ポートを検索するステップと、
前記送信ポートが1個以上検索された場合には、前記検索された1個以上のポートから前記第1のフレームを送信するステップと、
前記検索された送信ポートが0個の場合には、前記第1のフレームを廃棄するステップと、を含み、
前記第2のフレームの転送処理は、
前記他のフレーム転送装置が接続されるポートを除く前記ポートの中から前記第2のフレームを送信する前記送信ポートを検索するステップと、
前記送信ポートが1個以上検索された場合には、前記検索された1個以上のポートから前記第2のフレームを送信するステップと、
前記検索された送信ポートが0個の場合には、前記第2のフレームを廃棄するステップと、を含み、
前記第4のフレームの転送処理は、
前記他のフレーム転送装置が接続されるポートを除く前記ポートの中から前記第4のフレームを送信する前記送信ポートを検索するステップと、
前記送信ポートが1個以上検索された場合には、前記検索された1個以上のポートから前記第4のフレームを送信するステップと、
前記検索された送信ポートが0個の場合には、前記第4のフレームを廃棄するステップと、を含み、
前記第5のフレームの転送処理は、
前記第5のフレームの解析の結果を蓄積するステップと、
前記第5のフレームの解析の結果に基づいて、前記第5のフレームを送信する送信ポートを検索するステップと、
前記送信ポートが1個以上検索された場合には、前記検索された1個以上のポートから前記第5のフレームを送信するステップと、
前記検索された送信ポートが0個の場合には、前記第5のフレームを廃棄するステップと、を含むことを特徴とする(2)に記載のフレーム転送方法。
(4)前記フレーム転送装置は、
切替条件に関する情報を保持し、
前記切替条件が満たされた場合に、前記転送モードを切り替えることを特徴とする(3)に記載のフレーム転送方法。
(5)前記フレーム転送装置は、前記転送モードの切替指示を受け付けた場合に、前記転送モードを切り替えることを特徴とする(3)に記載のフレーム転送方法。
(6)前記転送モードの切替指示は、IEEE 802.1Qbgに規定され、前記フレーム転送装置及び前記他のフレーム転送装置の状態を示す情報を含むフレームによって送信されることを特徴とする(5)に記載のフレーム転送方法。
(7)前記方法は、さらに、前記転送モードを切り替える場合に、前記他のフレーム転送装置以外の装置が接続されたポートから受信したフレームの転送を所定時間停止するステップを含むことを特徴とする(3)に記載のフレーム転送方法。
(8)前記方法は、さらに、前記フレームの転送停止中に、前記他のフレーム転送装置以外の装置が接続されたポートからフレームを受信した場合、前記受信したフレームを蓄積するステップと、
前記フレームの転送停止状態が解除された後に、前記蓄積されたフレームを転送するステップと、を含むことを特徴とする(7)に記載のフレーム転送方法。