(57)【要約】【課題】Open Flowスイッチを含むExpEtherネットワークのネットワーク構成を動的に変更できる通信システムを提供する。【解決手段】通信システム５０は、E2カードを備えた通信装置と通信可能に接続され、E2カードが送受信するメッセージ内の、E2カードの実物理アドレスをE2カードに割り当てられた仮想アドレスに変更し、E2カードの仮想アドレスをE2カードの実物理アドレスに変更する指示が記載されたフローエントリを保持するOFS５２と、E2カードを管理するEEM５３と、OFCの機能を有する制御部５４とを有し、OFS５２と通信可能に接続された管理装置５１とを含む通信システムであって、E2カードが変更された場合、EEM５３は、変更後のE2カードの実物理アドレスの情報を変更後のE2カードから取得し、制御部５４は、フローエントリ内の変更前のE2カードの実物理アドレスを変更後のE2カードの実物理アドレスに変更する。【選択図】図１２
2016144142.tif 000002
【特許請求の範囲】
【請求項１】
Express Ether(E2)カードを備えた通信装置と通信可能に接続され、前記E2カードが送受信するメッセージ内の、E2カードの実物理アドレスを当該E2カードに割り当てられた仮想アドレスに変更し、E2カードの仮想アドレスを当該E2カードの実物理アドレスに変更する指示が記載されたフローエントリを保持するオープンフロースイッチと、
前記E2カードを管理するExpress Ether Manager(EEM)と、オープンフローコントローラの機能を有する制御部とを有し、前記オープンフロースイッチと通信可能に接続された管理装置とを含む通信システムであって、
前記E2カードが変更された場合、前記EEMは、変更後のE2カードの実物理アドレスの情報を前記変更後のE2カードから取得し、
前記制御部は、前記フローエントリ内の変更前のE2カードの実物理アドレスを変更後のE2カードの実物理アドレスに変更する
ことを特徴とする通信システム。
【請求項２】
E2カードが複数のEtherポートを有する場合、制御部は、正常に動作する１つのポートのみがメッセージを受信するように、フローエントリを設定する
請求項１記載の通信システム。
【請求項３】
オープンフロースイッチが管理装置に接続する際、制御部は、下記の２種類のフローエントリ
＜フローエントリＡ(ExpEther関連ブロードキャスト転送用)＞
[Match条件]
dst MAC = ブロードキャストアドレス
EtherType = ExpEther
[Action] 
To controller
＜フローエントリＢ(ExpEther関連フローのMISS HIT用)＞
[Match条件]
EtherType= ExpEther
[Action]
To controller
を、フローエントリＡの優先度がフローエントリＢの優先度よりも高くなるように前記オープンフロースイッチに設定する
請求項１または請求項２記載の通信システム。
【請求項４】
オープンフロースイッチは、E2SVカードを備えたサーバおよびE2IOカードを備えたI/Oサーバと通信可能に接続され、
ブロードキャスト情報の受信によりEEMが前記E2SVカードと前記E2IOカードを認識した後、認識された前記E2SVカードと前記E2IOカードを結びつけるためのGroup IDが設定されると、制御部は、前記E2SVカードと前記E2IOカードとの間でメッセージが伝送されるようにフローエントリを設定する
請求項１から請求項３のうちのいずれか１項に記載の通信システム。
【請求項５】
オープンフロースイッチは、E2IOカードを備えた複数のI/Oサーバと通信可能に接続され、
ブロードキャスト情報の受信によりEEMが前記E2IOカードを認識した後、認識された複数の前記E2IOカードを結びつけるためのGroup IDが設定されると、制御部は、複数の前記E2IOカードの間でメッセージが伝送されるようにフローエントリを設定する
請求項１から請求項４のうちのいずれか１項に記載の通信システム。
【請求項６】
Group ID未設定のE2IOカードから送信されたブロードキャスト情報を受信した際、前記E2IOカードが接続されたI/OデバイスのベンダID、デバイスID、およびクラスIDが新規に設定されたこと、または変更されたことが判明した場合、EEMは、EEA内のEEA Manager経由で、Group IDおよび前記EEAと前記E2IOカードとの間でメッセージが伝送されるようなフローエントリが一時的に設定されるよう制御部に指示する
請求項１から請求項５のうちのいずれか１項に記載の通信システム。
【請求項７】
ブロードキャスト情報が新規に受信された場合、EEMは、工場出荷時に記載されたカード名とシリアル番号を読み出し、同じカード名とシリアル番号を含むE2カードの情報が既に記憶部に存在する場合、前記ブロードキャスト情報を送信したE2カードに、記憶部に存在するE2カードと同じ仮想アドレスを割り当てる
請求項１から請求項６のうちのいずれか１項に記載の通信システム。
【請求項８】
既にGroup IDが設定されているE2SVカードからの、再接続後の最初のブロードキャスト情報の受信を契機に、EEMは、前記Group IDに属する全てのE2IOカードからの、内部にキャッシュしているブロードキャスト情報を前記E2SVカードに送信するよう制御部に指示する
請求項１から請求項７のうちのいずれか１項に記載の通信システム。
【請求項９】
管理装置と同様の機能を有する第２の管理装置を含み、前記管理装置と前記第２の管理装置とはアクティブ／スタンバイ構成で冗長化され、
前記管理装置の制御部と前記第２の管理装置の制御部は、同時にE2カードからのブロードキャスト情報を受信する
請求項１から請求項８のうちのいずれか１項に記載の通信システム。
【請求項１０】
E2カードを備えた通信装置と通信可能に接続され、前記E2カードが送受信するメッセージ内の、E2カードの実物理アドレスを当該E2カードに割り当てられた仮想アドレスに変更し、E2カードの仮想アドレスを当該E2カードの実物理アドレスに変更する指示が記載されたフローエントリを保持するオープンフロースイッチと、前記E2カードを管理するEEMと、オープンフローコントローラの機能を有する制御部とを有し、前記オープンフロースイッチと通信可能に接続された管理装置とを含む通信システムにおいて実行される通信方法であって、
前記E2カードが変更された場合、前記EEMは、変更後のE2カードの実物理アドレスの情報を前記変更後のE2カードから取得し、
前記制御部は、前記フローエントリ内の変更前のE2カードの実物理アドレスを変更後のE2カードの実物理アドレスに変更する
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムおよび通信方法に関し、特にオープンフロー(Open Flow)を使用することによってExpress Etherネットワークを制御する通信システムおよび通信方法に関する。
【背景技術】
【０００２】
Express Ether（以下、ExpEtherという。）は、PCI Express(登録商標)バスをEthernet(登録商標)上に拡張する“PCI Express over Ether”を実現する技術である。ExpEtherでは、PCI expressの仕様で規定されたTLP(Transaction Layer Packet)がカプセル化され、ネットワークを経由して送受信される。
【０００３】
Express Etherカード（以下、E2カードという。）は、Express Etherに対応したインタフェースカードである。E2SVカードは、コンピュータやサーバのPCI expressバスに接続されるE2カードである。また、E2IOカードは、PCI expressに対応したI/Oデバイスが接続されるE2カードである。E2カードに内蔵されるDIP(Dual In-line Package)スイッチの設定により、E2カードは、E2SVカードとしても、E2IOカードとしても使用される。
【０００４】
図１３は、既存のExpEtherネットワークの構成例を示す説明図である。図１３に示すExpEtherネットワーク構成には、管理サーバと、サーバと、レイヤ２スイッチ(L2SW)と、I/O BOXとが含まれている。
【０００５】
図１３に示すように、各サーバは、E2SVカードを備えている。また、各I/O BOXは、E2IOカードを備えている。E2IOカードは、PCI deviceに接続されている。また、管理サーバには、EEM(Express Ether Manager)が実装されている。EEMは、E2カードを管理するリモート管理ソフトウェアである。
【０００６】
EEMがE2SVカードとE2IOカードに同一のGroup IDを割り当てることによって、割り当てられたE2SVカードとE2IOカードとの間で、L2SWを介して高速なデータ転送が行われる。
【０００７】
以下、ExpEtherのプロトコルやE2カードの仕様、および運用方法など、ExpEtherネットワークにおける課題をいくつか説明する。
【０００８】
まず、E2カードの仕様に関する課題を説明する。管理サーバは、E2カードからのブロードキャスト情報を受信することによって、E2カードを認識する。仕様上E2カードは、自身のデバイス情報を数秒毎にブロードキャストする。よって、デバイス情報は、L2SWの、情報が送信される必要のないポートにまで出力される。すなわち、E2カードによるブロードキャストは、E2SVカードとE2IOカードとの間の高速なデータ転送の障害になる可能性がある。
【０００９】
E2カード自身は、受信したブロードキャスト情報内の、メッセージに含まれるGroup IDの値を参照することによって、不要なブロードキャスト情報であるか否か判断する。不要なブロードキャスト情報である場合、E2カードは、ブロードキャスト情報を廃棄する。
【００１０】
ブロードキャストとGroup IDとを関連付ける方法には、Group IDをメッセージのペイロードに記述する方法と、Group IDをタグVLAN(Virtual Local Area Network)に割り当てる方法がある。ブロードキャストとGroup IDとの関係は、E2カードに内蔵されるDIPスイッチにより変更される。
【００１１】
また、他にもE2カードの仕様に関する課題がある。現行のE2カードは、障害回避のために複数のポートを有する。複数のポートを有するE2カードは、各ポートから交互にブロードキャストする。
【００１２】
E2カードが各ポートに対して同じMAC(Media Access Control)アドレスを使用するか、異なるMACアドレスを使用するかは、カードの製造元に依存する。ユーザは、各ポートに対して同じMACアドレスを使用するE2カードと、各ポートに対して異なるMACアドレスを使用するE2カードとを、混在させて使用できない。
【００１３】
各ポートに対して同じMACアドレスを使用するE2カードを複数使用する場合、ユーザには、ポート毎にネットワークを分けることが求められる。しかし、E2SVカードのポートとE2IOカードのポートが一個ずつ使用不能になると、ポートの組合せによっては、E2SVカードとE2IOカードとの間で通信不能になる可能性がある。
【００１４】
図１４は、既存のExpEtherネットワークの冗長構成例を示す説明図である。図１４に示すネットワーク構成では、各ポートに対して同じMACアドレスを使用するE2カードが複数使用されている。図１４に示すE2SV1とE2SV2は、それぞれE2SVカードである。また、E2IO1とE2IO2は、それぞれE2IOカードである。
【００１５】
図１４に示すExpEtherネットワークにおいて、E2SV2の上側のポートとE2IO1の上側のポートとを結ぶ通信経路が構成されている。また、E2SV2の下側のポートとE2IO1の下側のポートとを結ぶ通信経路が構成されている。E2SV2は、２つの通信経路のいずれかを介して、E2IO1と通信する。
【００１６】
図１４に示す楕円内のポートである、E2SV2の上側のポートとE2IO1の下側のポートの両方に異常が発生した場合、通信経路が２つとも使用不能になる。よって、E2SV2とE2IO1との間の通信が不能になる。
【００１７】
また、各ポートに対して異なるMACアドレスを使用するE2カードを使用する場合、管理サーバは、MACアドレスをE2カードのIDとして使用できない。よって、MACアドレスの代わりにE2カードの製品番号などをE2カードのIDとして使用することが考えられる。しかし、複数の製造元が異なる規定で設定した製造番号をIDとして使用することは、製造番号のフォーマットが異なると管理が面倒になることや、値が重複する可能性もあることから、適切ではないと考えられる。
【００１８】
また、各ポートに対して同じMACアドレスを使用するE2カードと、各ポートに対して異なるMACアドレスを使用するE2カードとの間で通信が行われる場合、同じMACアドレスを使用するE2カードが、複数のE2カードと通信していると誤認識する可能性がある。
【００１９】
次に、運用方法に関する課題を説明する。現行のE2SVカードは、運用中に同一のGroup IDで対応付けられたE2IOカードのMACアドレスが変更になると、MACアドレスが変更されたE2IOカードを同一のE2IOカードとみなすことができない。
【００２０】
運用中にE2IOカードが交換された場合、E2IOカードのMACアドレスが変更される。E2IOカードが交換されると、変更されたE2IOカードに接続されているI/Oデバイスが同じでも、E2SVカードは、E2IOカードを別のカードとして認識する。別のカードとして認識された場合、E2SVカード内部で管理されているPCI express switchのdownstreamポート番号が変更される可能性がある。
【００２１】
E2SVカード側で上記の問題に対応する場合、すなわちI/O固定化処理を行う場合、ハードウェア設定の変更が求められるため、多くのコストがかかる。
【００２２】
また、他にもE2カードの運用方法に関する課題がある。E2IOカードからのブロードキャスト情報を受信しただけでは、EEMは、E2IOカードに接続されているI/OデバイスのデバイスID、ベンダIDおよびクラスIDしか得ることができない。EEMは、E2IOカードからのブロードキャスト情報から、他のデバイス固有情報を取得できない。
【００２３】
他のデバイス固有情報が取得されない場合、EEMを使用するユーザが行うサーバとI/Oデバイスの関連付けの作業に制限が生じる。例えば、ユーザは関連付けの際、サーバＡにはディスクサイズが５TBのハードディスクが必要、サーバＢにはポートが３つ以上あるネットワークカードが必要、などの情報を指定できない。
【００２４】
また、EEMやE2カードは、通信相手であるE2カードとの通信の切断を、すぐに検知できないという課題がある。通信切断をすぐに検知するには、E2カードからのブロードキャスト情報の送信間隔を極端に短くし、所定期間ブロードキャスト情報が受信できないことを確認するという方法を取るしかない。
【００２５】
上記の方法において、ブロードキャスト情報の送信間隔は、10ms〜100msまで短くされる。送信間隔が10ms〜100msまで短くされる理由には、コンピュータが起動直後にBIOS(Basic Input/Output System)経由で通信先のPCI expressを認識するために、起動後100ms以内にE2IOカードからのブロードキャスト情報を受信しなくてはならないこともある。
【００２６】
各ポートに対して異なるMACアドレスを使用するE2カードが使用される場合、障害対策のために、図１５に示すようなネットワークが構成される。図１５は、各ポートに対して異なるMACアドレスを使用するE2カードが使用された場合のExpEtherネットワークの構成例を示す説明図である。
【００２７】
図１５に示すようなレガシーネットワークでは、STP(Spanning Tree Protocol)アルゴリズム、またはRSTP(Rapid STP)アルゴリズムが使用される。しかし、STPアルゴリズムやRSTPアルゴリズムが使用される場合、ネットワークの切り替えに最遅で秒単位の時間を要する。すなわち、ネットワーク切り替えが、PCI expressのタイムアウト時間までに完了しない可能性がある。
【００２８】
上述した課題のうち、特にExpEtherシステムにおけるネットワーク経路を柔軟に制御できないという課題を解決するために、ネットワーク構成にOpen Flowの技術を導入することが考えられる。
【００２９】
Open Flowの技術が導入された場合、OFS(Open Flow Switch)およびOFC(Open Flow Controller)は、ポートやOFSのリンクダウンを検知できる。検知した後、OFSおよびOFCは、ポートの切り替えやフローの迂回を行う。具体的には、OFSは、port statusイベントやLLDP(Link Layer Discovery Protocol)を使用したトポロジ検知機能により、ポート障害やリンク障害を検知できる。
【００３０】
また、OFCは、外向きのポートのport statusを受信した場合、受信したメッセージをEEMに転送する。EEMは、E2カードが接続されている両方のポートからのリンクが同時に切れた場合、E2カードとの通信が切断されているとみなす。また、片方のポートからのリンクが切断された場合でも、EEMは、E2カードに障害が発生したことを認識できる。なお、Open Flow 1.1以降でサポートされているOFSのfast failover機能を併用すれば、より高速にポートが切り替えられる。
【００３１】
上記のように、OFSやOFCは、E2カードとの通信の切断を高速に検知できる。よって、Open Flowの技術を導入する場合、E2カードが送信するブロードキャスト情報の送信間隔を長くできる。
【００３２】
ExpEtherのネットワークにOpen Flowの技術を適用したシステムとして、特許文献１〜２に記載されているシステムがある。
【００３３】
特許文献１には、ソフトウェアベースで大容量フローテーブルを構成する高速なスイッチノードを実現する通信制御システムが記載されている。特許文献１に記載されている通信制御システムは、ExpEtherのネットワーク構成を含む。
【００３４】
特許文献２には、Open Flowを使用してiSCSI(Internet Small Computer System Interface)のSAN(Storage Area Network)を制御する通信システムが記載されている。特許文献２に記載されている通信システムは、Open Flowを使用して、ストレージなどのI/Oデバイスを制御する。
【先行技術文献】
【特許文献】
【００３５】
【特許文献１】国際公開ＷＯ２０１２／１２８２８２号公報
【特許文献２】国際公開ＷＯ２０１２／１７３１７２号公報
【特許文献３】特許第５４６７５４１号公報
【発明の概要】
【発明が解決しようとする課題】
【００３６】
特許文献１に記載されている通信制御システムでは、単一のPCI expressのスイッチノードを使用する場合のみが想定されており、複数の汎用のOFSが使用されたPCI expressのネットワークを構成することは想定されていない。また、特許文献１に記載されている通信制御システムは、ExpEtherのブロードキャストの処理方法や、MACアドレスの動的変更の方法なども対象にしていない。
【００３７】
特許文献２に記載されている通信システムでは、IngressポートやEgressポートにおいてMACアドレスを書き換えることは想定されていない。また、特許文献２に記載されている通信システムは、カード交換や、カードのポートの冗長化にも対応していない。
【００３８】
また、特許文献３には、PCI expressが使用されたネットワークを制御する、Open Flowの技術が適用された通信制御システムが記載されている。
【００３９】
特許文献３に記載されている通信制御システムでは、PCI expressのインタフェースを有する制御サーバが、PCI expressとLANのインタフェースを備えるフォワーディングエンジンを制御する。すなわち、特許文献３に記載されている通信制御システムは、ExpEtherネットワーク自体を対象にしていない。
【００４０】
また、複雑なExpEtherネットワークをOpen Flowの仕組みを用いて制御する場合、PCI expressの高速な通信速度が保障されたまま柔軟に拡張できることが求められる。しかし、Open FlowネットワークをそのままExpEtherネットワークに適用した場合、パケットインによる転送速度の低下が生じるという課題がある。
【００４１】
既存のP-flowなどのリアクティブ型のOpen Flowシステムでは、パケットインアーキテクチャが使用される。パケットインが行われることによって、ユニキャストにおけるファーストパケットの転送時間が遅くなる。また、パケットインにより、パケットの到着順の逆転が発生する可能性もある。特許文献２に記載されている通信システムでは、リアクティブ型のOpen Flowが使用されているため、管理ソフトウェアに対するID情報の問合せがパケットインにより行われる。
【００４２】
また、相互認証時などにおいて、E2SVカードはE2IOカードに対してユニキャストしない。ユニキャストが行われない場合、E2カード間でデータ転送が行われる時に、パケットインが発生する可能性がある。また、ExpEtherは、I/Oデバイス間のデータ転送もサポートしている。よって、E2IOカード側のメモリ領域間でデータが転送される時などに、パケットインが発生する可能性がある。
【００４３】
パケットインが発生する課題は、既存の方法を用いても解決される。しかし、既存の方法を用いる場合、P-flowの制約にExpEtherのプロトコル仕様を合わせたり、タイムアウトによりOFSが自発的にフローエントリを消さない（Ageoutの抑制）ように設定したりすることが求められる。なお、タイムアウトの時間は、通常分単位である。すなわち、既存の方法を用いたとしても、既存のネットワークを共用する仕組みや、切断に対応する仕組みを新たに作成することが求められる。
【００４４】
また、プロアクティブ型のOpen Flowシステムでは、パケットインは発生しない。しかし、プロアクティブ型のOpen Flowシステムでは、OFSに予めフローエントリを設定することが求められる。
【００４５】
設定するフローエントリの内容を決定するために、ユーザには、同じグループに属するE2IOカードとE2SVカードが接続されるポートや、E2カードのMACアドレスなどをE2カードの接続前に予め把握することが求められる。よって、プロアクティブ型のOpen Flowシステムを用いる方法は、ユーザがE2IOカードの接続後にI/Oデバイスのデバイス固有情報を参照してグループ化するような運用方法にそぐわない。
【００４６】
そこで、本発明は、Open Flowスイッチを含むExpEtherネットワークのネットワーク構成を動的に変更できる通信システムおよび通信方法を提供することを目的とする。
【課題を解決するための手段】
【００４７】
本発明による通信システムは、E2カードを備えた通信装置と通信可能に接続され、E2カードが送受信するメッセージ内の、E2カードの実物理アドレスを当該E2カードに割り当てられた仮想アドレスに変更し、E2カードの仮想アドレスを当該E2カードの実物理アドレスに変更する指示が記載されたフローエントリを保持するオープンフロースイッチと、E2カードを管理するEEMと、オープンフローコントローラの機能を有する制御部とを有し、オープンフロースイッチと通信可能に接続された管理装置とを含む通信システムであって、E2カードが変更された場合、EEMは、変更後のE2カードの実物理アドレスの情報を変更後のE2カードから取得し、制御部は、フローエントリ内の変更前のE2カードの実物理アドレスを変更後のE2カードの実物理アドレスに変更することを特徴とする。
【００４８】
本発明による通信方法は、E2カードを備えた通信装置と通信可能に接続され、E2カードが送受信するメッセージ内の、E2カードの実物理アドレスを当該E2カードに割り当てられた仮想アドレスに変更し、E2カードの仮想アドレスを当該E2カードの実物理アドレスに変更する指示が記載されたフローエントリを保持するオープンフロースイッチと、E2カードを管理するEEMと、オープンフローコントローラの機能を有する制御部とを有し、オープンフロースイッチと通信可能に接続された管理装置とを含む通信システムにおいて実行される通信方法であって、E2カードが変更された場合、EEMは、変更後のE2カードの実物理アドレスの情報を変更後のE2カードから取得し、制御部は、フローエントリ内の変更前のE2カードの実物理アドレスを変更後のE2カードの実物理アドレスに変更することを特徴とする。
【発明の効果】
【００４９】
本発明によれば、Open Flowスイッチを含むExpEtherネットワークのネットワーク構成を動的に変更できる。
【図面の簡単な説明】
【００５０】
【図１】本発明による通信システムの構成例を示すブロック図である。
【図２】本発明による通信システムの他の構成例を示すブロック図である。
【図３】EEMが作成するデバイスツリーの一例を示す説明図である。
【図４】仮想マシンに実装されるEEA１４０の構成例を示すブロック図である。
【図５】E2カードの構成例を示す説明図である。
【図６】ExpEtherメッセージのフォーマットを示す説明図である。
【図７】通信システム２０によるデバイス情報取得処理の動作を示すシーケンス図である。
【図８】通信システム２０によるグループ化処理の動作を示すシーケンス図である。
【図９】通信システム２０によるカード交換対応処理の動作を示すシーケンス図である。
【図１０】通信システム２０による同期処理の動作を示すシーケンス図である。
【図１１】本発明による通信システムの他の構成例を示すブロック図である。
【図１２】本発明による通信システムの概要を示すブロック図である。
【図１３】既存のExpEtherネットワークの構成例を示す説明図である。
【図１４】既存のExpEtherネットワークの冗長構成例を示す説明図である。
【図１５】各ポートに対して異なるMACアドレスを使用するE2カードが使用された場合のExpEtherネットワークの構成例を示す説明図である。
【発明を実施するための形態】
【００５１】
［構成の説明］
以下、本発明の実施形態を、図面を参照して説明する。図１は、本発明による通信システムの構成例を示すブロック図である。図１に示す通信システム１０は、管理サーバと、サーバと、OFSと、I/Oサーバとを含む。
【００５２】
図１４に示す既存のExpEtherネットワークの冗長構成例と比較すると、図１に示す例では、L2SWがOFSに置き換えられている。なお、図１に示す通信システム１０において、各サーバは、仮想のE2IOカードと通信していると認識する。同様に、各I/Oサーバは、仮想のE2SVカードと通信していると認識する。
【００５３】
その理由は、各サーバおよび各I/Oサーバに接続されているE2カードは、EEMにより割り当てられた仮想MACアドレスで同一グループのE2カードを認識するためである。管理サーバのEEMは、管理する各E2カードの実MACアドレスに対して仮想MACアドレスを割り当てている。
【００５４】
また、OFSが保持するフローエントリには、実MACアドレスと仮想MACアドレスとの対応関係が記載されているためである。各サーバおよび各I/Oサーバから送信されるパケットは、対応関係が記載されたフローエントリに従って転送される。
【００５５】
図２は、本発明による通信システムの他の構成例を示すブロック図である。図２に示す通信システム２０は、管理サーバ１００、２００と、OFS３００と、サーバ４００と、I/Oサーバ５００とを含む。図２に示すExpEtherネットワークには、単一のOFSが含まれる。
【００５６】
図２に示す通信システム２０では、２台の管理サーバが１台のOFSに接続されている。２台の管理サーバは、ホットスタンバイ型のアクティブ／スタンバイ構成をとる。稼働系と待機系との間のイベント同期は、リンク６００を介して行われる。
【００５７】
本実施形態における管理サーバ１００〜２００は、例えば、Linux(登録商標)のようなUNIX(登録商標) OS(Operating System)が搭載されたサーバである。管理サーバ１００は、OFC１１０と、EEM１２０と、EEA(Express Ether Agent)１４０が実装されたVM(Virtual Machine：仮想マシン)１３０と、DB１５０と、E2SVカード１６０とを含む。
【００５８】
管理サーバ１００のPCI expressスロットには、EEA１４０が使用するE2SVカード１６０が接続されている。なお、OFC１１０、EEM１２０およびEEA１４０は、管理サーバ１００以外のサーバにより別々に構成されていてもよい。
【００５９】
OFC１１０は、管理サーバ１００で動作するソフトウェアである。本実施形態において、OFC１１０は、Linuxのユーザ空間で動作するdaemonとして実装される。
【００６０】
OFC１１０は、Open Flowメッセージの送受信、トポロジ情報の管理、経路計算および経路情報の管理、各OFSに設定されるフローエントリ情報の作成などを行う。OFC１１０は、パケットインにより受信したExpEtherパケットを、EEM１２０に転送できる。また、本実施形態において、OFC１１０は、E2カードの実MACアドレスと仮想MACアドレスとを対応付ける。
【００６１】
図２に示すリンク７０１、７０２は、OFC１１０、２１０からのフローエントリ設定や、パケットインおよびパケットアウトなどが行われる際に使用される、Open Flow Channelと呼ばれるOpen Flowの管理ネットワークである。OFS３００の２つのポートmngは、Open Flowの管理ネットワークであるリンク７０１、７０２がそれぞれ接続されるマネージメントポートである。なお、Open Flow 1.0では、Open Flow Channelはsecure channelと呼ばれている。
【００６２】
EEM１２０は、管理サーバ１００で動作するソフトウェアである。EEM１２０は、ネットワーク上のE2カードのリモート制御およびリモート管理を行う。また、EEM１２０は、ソケットAPI(Application Programming Interface)を介して、OFC１１０を制御できる。
【００６３】
EEM１２０は、E2カードから定期的にブロードキャストで送信されるデバイス情報を受信する。受信したデバイス情報を基に、EEM１２０は、図３に示すようなデバイスツリーを作成する。図３は、EEMが作成するデバイスツリーの一例を示す説明図である。
【００６４】
EEM１２０は、該当するE2SVカードからのブロードキャスト情報が受信される前に、E2SVカードが接続するOFSの受信ポートにリンク状態の変化があった場合、または所定期間ブロードキャスト情報が受信されなかった場合、E2SVカードが再接続したとみなす。
【００６５】
EEM１２０には、GUI(Graphical User Interface)またはCLI(Command-Line Interface)などのユーザインタフェースが設けられている。よって、ユーザは、ユーザインタフェースを介して、デバイスツリー情報を基にE2SVカードとE2IOカードをグループ化できる。
【００６６】
なお、1台のPCに複数のPCI expressカードが接続されている場合と同様に、ExpEtherシステムにおいても、ユーザは、1個のE2SVカードに対して、複数のE2IOカードをグルーピングできる。
【００６７】
EEM１２０が、サーバ４００に接続されているE2SVカード４０１の情報を取得する処理を説明する。E2SVカード４０１からブロードキャストされるデバイス情報には、E2SVカード４０１が接続されるサーバ４００のFRU(Field Replacement Unit)情報が格納される。FRU情報は、サーバ４００のOSにおいて動作するE2SVカード４０１のデバイスドライバによって、E2SVカード４０１内の不揮発メモリに書き込まれる。
【００６８】
EEM１２０は、リンク８００を経由して、E2SVカード４０１が接続されたサーバ４００に対してサーバ４００のIP(Internet Protocol)アドレスをキーにFRU情報を問い合わせる。なお、リンク８００はIPネットワークである。
【００６９】
問い合わせの結果、EEM１２０は、サーバ４００とE2SVカード４０１との対応関係を把握できる。サーバ４００とE2SVカード４０１との対応情報は、デバイスツリーとしてDB１５０に格納される。
【００７０】
EEM１２０は、リモート制御によりFRU情報を取得する際、IPMI(Intelligent Platform Management Interface)の仕様で定義されているRMCP(Remote Management Control Protocol)を使用する。
【００７１】
管理サーバ１００には、Linux OSで動作するホスト型の仮想化ソフトウェアが実装される。仮想化ソフトウェアは、例えば、VMware（登録商標）である。なお、仮想化ソフトウェアは、ハイパーバイザ型でもよい。仮想化ソフトウェアにおいて、VM１３０が稼働する。
【００７２】
EEA１４０は、VM１３０で動作するモジュールである。EEA１４０は、EEM１２０からの命令を受けて、E2IOカードに接続されるI/Oデバイスからデバイス固有の情報を取得し、EEM１２０に返却する。EEM１２０は、ソケットを使用してEEA１４０と通信する。
【００７３】
情報を取得する際、EEA１４０は、管理サーバ１００に接続されたE2SVカード１６０を経由して、E2IOカードにアクセスする。EEA１４０が取得したI/Oデバイス固有情報は、デバイスツリーに登録され、ユーザがグルーピングをする際の参考情報として使用される。
【００７４】
DB１５０は、管理サーバ１００で動作するデータベースアプリケーションを備えたデータベースである。データベースは、稼働系と待機系との間でイベント同期が行われる際に、ストレージ内でミラーリングされる領域に配置される。
【００７５】
DB１５０には、EEA１４０が管理するデバイスツリー情報や、OFC１１０が管理する経路情報およびトポロジ情報が格納される。
【００７６】
なお、図２に示す管理サーバ２００に含まれるOFC２１０、EEM２２０、VM２３０、EEA２４０、DB２５０およびE2SVカード２６０は、それぞれOFC１１０、EEM１２０、VM１３０と、EEA１４０、DB１５０およびE2SVカード１６０と同様の処理を行うため、管理サーバ２００に含まれる各部の説明は省略する。
【００７７】
次に、EEA１４０の構成を説明する。図４は、仮想マシンに実装されるEEA１４０の構成例を示すブロック図である。
【００７８】
図４に示すEEA１４０は、EEA Manager１４１と、OS１４２とを含む。また、図４に示すように、EEA１４０は、EEM１２０およびE2SVカード１６０と、通信可能に接続する。なお、EEA２４０も、図４に示すEEA１４０の構成と同様の構成をとる。
【００７９】
EEA１４０には、LinuxなどのUNIX OSであるOS１４２が搭載されている。搭載されるOSとして、GUIなどが搭載されていない最小構成のOSが想定される。図４に示すように、OS１４２には、PCI expressドライバ、ネットワークドライバ、ネットワークカードドライバ、ブロックデバイスドライバ、ストレージドライバおよびExpEtherデバイスドライバが含まれる。
【００８０】
EEA Manager１４１は、OS１４２のユーザ空間において動作するアプリケーションである。EEA Manager１４１は、EEM１２０とのソケット通信、E2IOカードに接続されたI/Oデバイスへのアクセス、管理サーバ１００に接続されたE2SVカード１６０へのレジスタアクセスなどを行う。
【００８１】
EEA Manager１４１は、PCI expressドライバ、ネットワークドライバ、ブロックデバイスドライバなどのデバイスドライバを介して、I/Oデバイス固有の情報を取得する。I/Oデバイスのデバイス固有情報を取得したら、EEA Manager１４１は、取得した情報をEEM１２０に通知する。
【００８２】
情報を取得する際、EEA Manager１４１は、直接デバイスドライバにアクセスする代わりに、ifconfigコマンドやdfコマンドなどのUNIXコマンドを発行することによっても情報を取得できる。なお、ifconfigコマンドは、ネットワークカード情報を取得するためのコマンドである。また、dfコマンドは、ディスク容量情報を取得するためのコマンドである。
【００８３】
また、EEA Manager１４１は、SYSFSファイルシステムを経由しても情報を取得できる。SYSFSファイルシステムを経由する場合、EEA Manager１４１は、/sys配下のファイルからPCI expressの情報を取得できる。
【００８４】
接続されているI/Oデバイスがネットワークカードである場合、EEA Manager１４１は、ネットワークドライバを用いて「ポート数」などの情報を取得できる。また、接続されているI/Oデバイスがハードディスクなどのストレージデバイスである場合、EEA Manager１４１は、ブロックデバイスドライバを用いて「ディスク容量」などの情報を取得できる。
【００８５】
また、EEA Manager１４１は、ExpEtherデバイスドライバを用いてE2SVカード１６０へのレジスタアクセスを行う。E2SVカード１６０に対するGroup IDの設定や、ブロードキャストの送信開始または送信停止の指示の出力などの、E2SVカード１６０の状態変更処理は、レジスタアクセスにより行われる。
【００８６】
次に、E2カードの構成を説明する。図５は、E2カードの構成例を示す説明図である。図５に示すように、E2カードにおけるEthernetポートは、通信障害に対応するために冗長化されている。
【００８７】
図５において、サーバは、E2IOカードに接続されたI/Oデバイスを、PCI expressカード上にあるデバイスとして認識する。その結果、サーバは、ExpEtherの設定を意識せずに、I/Oデバイスと通信できる。
【００８８】
図５において、E2IOカード内のPCI express制御部は、PCI express switchにおけるdownstream portとして動作する。また、E2SVカード内のPCI express制御部は、PCI express switchにおけるupstream portとして動作する。その結果、E2カード間で、PCI expressで規定されたメッセージであるTLPの送受信が行われる。
【００８９】
E2カード内のEthernet制御部は、E2カード間の通信のために、TLPをEthernetフレームに乗せるカプセル化を行う。さらに、E2カードがPCI express switchとしての信頼性を確保できるように、Ethernet制御部は、パケットの順序制御や再送制御も行う。
【００９０】
次に、E2カード間の通信や、EEMとE2カードとの間の通信において使用されるExpEtherメッセージを説明する。ExpEtherメッセージは、type値にExpEther固有のプロトコルIDが設定されたEthernetのL2フレームである。
【００９１】
図６は、ExpEtherメッセージのフォーマットを示す説明図である。ExpEtherメッセージの初期値は、E2カードのDIPスイッチにより設定される。
【００９２】
図６に示すように、ExpEtherメッセージには、フォーマット１とフォーマット２の２種類のフォーマットが存在する。EEMは、ExpEtherメッセージにどちらのフォーマットを使用するか設定できる。
【００９３】
セキュリティが保障されたネットワークを運用する場合、タグVLANのIDが設定されるフォーマット２が使用される。レガシーL2SWが使用される場合など、スイッチ側でのVLAN設定が求められる場合には、フォーマット１が使用される。
【００９４】
仕様上、ExpEtherメッセージには下記の４つのメッセージが含まれる。
【００９５】
１つ目は、E2カードのデバイス情報である。デバイス情報は、E2カードが定期的にブロードキャストで送信する情報である。デバイス情報は、EEMがデバイスツリーを作成するために求められる情報である。デバイス情報には下記の情報が含まれる。
【００９６】
E2SVカードおよびE2IOカードに共通して含まれる情報は、Group ID、モデル名やシリアル番号などを示すE2カードのFRU情報、エラーの有無、およびE2SVカードからの情報であるかE2IOカードからの情報であるかが判断されるためのフラグである。
【００９７】
E2SVカードに固有のパラメータは、PCI expressのdownstreamポート番号と、E2IOカードのMACアドレスとの対応情報である。
【００９８】
E2IOカードに固有のパラメータは、E2SVカードのMACアドレス、I/OデバイスのベンダID、デバイスIDおよびクラスIDである。
【００９９】
２つ目は、Group ID設定情報である。Group ID設定情報は、EEMがE2カードのGroup IDを設定するために使用される。E2カードが保有するGroup IDの初期値は０である。
【０１００】
本実施形態において、１から４０９３までの値がGroup IDとして使用される。また、０の値はGroup ID未設定を意味する。本実施形態では、Group IDが削除される場合、Group ID＝０が設定される。
【０１０１】
３つ目は、E2カードリセット情報である。E2カードリセット情報は、EEMが、E2カードをソフトリセットするために使用される。
【０１０２】
４つ目は、メッセージフォーマット切り替え情報である。メッセージフォーマット切り替え情報は、EEMが、E2カードが送受信するメッセージフォーマットを切り替えるために使用される。
【０１０３】
なお、OFS３００が管理サーバ１００または管理サーバ２００に接続する際、OFCは、下記の２種類のフローエントリをOFS３００に設定する。設定する際、OFCは、フローエントリＡの優先度がフローエントリＢの優先度よりも高くなるように設定する。
【０１０４】
＜フローエントリＡ(ExpEther関連ブロードキャスト転送用)＞
[Match条件]
dst MAC = ブロードキャストアドレス
EtherType = ExpEther
[Action] 
To controller
＜フローエントリＢ(ExpEther関連フローのMISS HIT用)＞
[Match条件]
EtherType= ExpEther
[Action]
To controller
【０１０５】
なお、フローエントリに記載されている「To controller」は、OFCが接続されている制御ポートに出力する、すなわちパケットインさせることを意味する。２種類のフローエントリが設定されることによって、通信システム２０は、Groupが異なるE2カード、またはGroup未設定のE2カードに対して、不要なブロードキャスト情報の転送を防ぐことができる。
【０１０６】
なお、E2カード間のパケット転送用フローエントリは、フローエントリＡの優先度よりも低く、フローエントリＢの優先度よりも高い優先度で、OFS３００に設定される。また、OFCは、Group IDが設定されてもリンクアップしていないポートに対するフローエントリをOFS３００に設定しない。
【０１０７】
なお、本実施形態の管理サーバ１００、２００は、例えば、記憶媒体に格納されているプログラムに従って処理を実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によって実現される。また、管理サーバ１００、２００は、ハードウェアによって実現されてもよい。
【０１０８】
［動作の説明］
以下、本実施形態の通信システム２０の動作を図７〜図１０を参照して説明する。通信システム２０の動作には、デバイス情報取得処理、グループ化処理、カード交換対応処理、同期処理が含まれる。
【０１０９】
最初に、通信システム２０によるデバイス情報取得処理を、図７を参照して説明する。図７は、通信システム２０によるデバイス情報取得処理の動作を示すシーケンス図である。
【０１１０】
EEMは、ブロードキャストで受信したE2カードのデバイス情報を参照して、I/OデバイスのID情報（ベンダID、デバイスIDおよびクラスID）が変更されていた場合、または新規に設定されていた場合に、EEA経由で上記のID以外のI/Oデバイス情報を取得する。
【０１１１】
Group ID未設定のE2IOカード５０１に、I/Oデバイス５０２が接続する（ステップA1）。E2IOカード５０１は、I/Oデバイス５０２のデバイス情報をブロードキャストで送信する（ステップA1.1）。定期的にE2カードからブロードキャストで送信されるデバイス情報は、EEMが作成するデバイスツリーの構成情報として使用される。また、デバイス情報は、E2カード間の相互認証のためにも使用される。
【０１１２】
OFS３００は、フローエントリに該当しない情報が入力されたため、OFC１１０に対してパケットインを行う（ステップA1.1.1）。OFC１１０は、受信したパケットインメッセージに含まれる、E2IOカード５０１からのデバイス情報を、カプセル化してEEM１２０にブロードキャスト転送する（ステップA1.1.1.1）。転送する際、OFC１１０は、E2IOカード５０１に割り当てられた仮想MACアドレスの値もEEM１２０に通知する。すなわち、EEM１２０には、E2IOカード５０１の実MACアドレスと仮想MACアドレスの両方が通知される。
【０１１３】
通知された情報を基に、EEM１２０は、デバイスツリーを更新する（ステップA1.1.1.1.1）。更新した後、EEM１２０は、Group IDと、管理サーバ１００に接続されているE2SVカード１６０の仮想MACアドレスおよびE2IOカード５０１の仮想MACアドレスの組合せとを、OFC１１０に通知する（ステップA1.1.1.1.2〜ステップA1.1.1.1.3）。また、EEM１２０は、EEA１４０に対して、E2SVカード１６０に関する仮Group IDを設定するよう指示する（ステップA1.1.1.1.4）。
【０１１４】
EEM１２０から通知された情報を基に、OFC１１０は、EEA１４０とE2IOカード５０１との間でPCI express仕様のTLP通信が可能になるようなフローエントリを、OFS３００に設定する（ステップA1.1.1.1.3.1）。次いで、OFC１１０は、仮Group IDが設定されているので、パケットアウトによりブロードキャストで送信された情報を、OFS３００の対象ポートに対して転送する（ステップA1.1.1.1.3.2）。
【０１１５】
ブロードキャスト情報の送信元MACアドレスは、E2SVカード１６０の仮想MACアドレスに書き換えられている。また、ブロードキャスト情報の出力ポートは、E2SVカード１６０と同じ仮Group IDが設定されたE2IOカード５０１と接続されている、OFS３００のポート番号に設定されている。
【０１１６】
パケットアウトメッセージを受信したOFS３００は、E2IOカード５０１に対して、ブロードキャスト情報と、通知された仮Group IDの設定を指示するメッセージを送信する（ステップA1.1.1.1.3.2.1）。
【０１１７】
次いで、EEA１４０は、管理サーバ１００に接続されているE2SVカード１６０に対して仮Group IDを設定し、ブロードキャスト可能状態に変更するために、E2SVカード１６０内のFPGA(Field Programmable Gate Array)に対してレジスタアクセスを行う（ステップA1.1.1.1.4.1）。
【０１１８】
レジスタアクセスを行った後、EEA１４０は、E2SVカード１６０を介してE2IOカード５０１に対してブロードキャストする（ステップA2）。ブロードキャスト情報を受信したOFS３００は、設定されたフローエントリに従って、E2IOカード５０１に対して受信内容をブロードキャストする（ステップA2.1）
【０１１９】
次いで、E2IOカード５０１は、デバイス情報をブロードキャストする（ステップA3）。OFS３００は、フローエントリに該当しない情報が入力されたため、OFC１１０に対してパケットインを行う（ステップA3.1）。OFC１１０は、EEM１２０にパケットインメッセージの内容をブロードキャスト転送する（ステップA3.1.1）。
【０１２０】
OFC１１０は、OFS３００にパケットアウトメッセージを送信する（ステップA3.1.2）。パケットアウトメッセージを受けて、OFS３００は、受信したE2IOカード５０１からのデバイス情報を、EEA１４０にブロードキャストする（ステップA3.1.2.1）。その結果、EEA１４０は、E2SVカード１６０と対になるE2IOカード５０１の情報を取得する。
【０１２１】
EEA１４０は、E2SVカード１６０を介して、I/Oデバイス５０２の固有情報を取得する（ステップA4）。I/Oデバイス５０２は、EEA１４０に対して、E2IOカード５０１を介してデバイスの固有情報を送信する（ステップA4.1）。ステップA4〜A4.1では、EEA１４０とE2IOカード５０１との間でPCI expressメッセージの送受信処理が行われている。
【０１２２】
次いで、EEA１４０は、EEM１２０に対してI/Oデバイス５０２のI/Oデバイスコンフィグレーション情報を通知する（ステップA5）。EEM１２０は、EEA Manager１４１から通知されたデバイス固有情報を受け取ると、一時的に設定したGroup IDおよびフローエントリを削除する。
【０１２３】
通知を受けたEEM１２０は、EEA１４０に対して、設定された仮Group IDを削除するよう指示する（ステップA5.1）。指示を受けたEEA１４０は、管理サーバ１００に接続されているE2SVカード１６０内のFPGAに対してレジスタアクセスを行う。レジスタアクセスにより、EEA１４０は、E2SVカード１６０から仮Group IDを削除し、E2SVカード１６０をブロードキャスト送信停止の状態に設定する（ステップA5.1.1）。
【０１２４】
次に、EEM１２０は、OFC１１０に対して設定された仮Group IDを削除するよう指示する（ステップA5.2）。指示を受けたOFC１１０は、仮Group IDに対応するフローエントリを削除する（ステップA5.2.1）。
【０１２５】
また、OFC１１０は、E2IOカード５０１に対して、未設定であることを示すGroup IDを設定する（ステップA5.2.2）。本実施形態において、未設定であることを示すGroup IDは０である。Group IDが設定された後、通信システム２０は、デバイス情報取得処理を終了する。
【０１２６】
次に、通信システム２０によるグループ化処理を、図８を参照して説明する。図８は、通信システム２０によるグループ化処理の動作を示すシーケンス図である。
【０１２７】
E2IOカード５０１およびE2SVカード４０１が、デバイス情報を定期的にブロードキャストする（ステップB1、B2）。OFS３００は、フローエントリに該当しない情報が入力されたため、OFC１１０に対してパケットインを行う（ステップB1.1、B2.1）。
【０１２８】
OFC１１０は、受信したパケットインメッセージに含まれる、E2IOカード５０１またはE2SVカード４０１からのデバイス情報を、カプセル化してEEM１２０にブロードキャスト転送する（ステップB1.1.1、B2.1.1）。転送する際、OFC１１０は、E2IOカード５０１またはE2SVカード４０１に割り当てられた仮想MACアドレスの値もEEM１２０に通知する。
【０１２９】
ユーザは、EEM１２０に設けられたGUIを介して、デバイスであるE2SVカード４０１とE2IOカード５０１のグループ化を行う（ステップB3）。グルーピングする際、ユーザは、E2カードからブロードキャストされたデバイス情報を基に作成されたデバイスツリーを参照する。グループ化により、E2SVカード４０１とE2IOカード５０１に同一のGroup IDが与えられる。
【０１３０】
EEM１２０は、ユーザにより設定されたGroup IDと、E2SVカード４０１の仮想MACアドレスおよびE2IOカード５０１の仮想MACアドレスの組合せとを、OFC１１０に通知する（ステップB3.1）。EEM１２０から通知された情報を基に、OFC１１０は、E2SVカード４０１とE2IOカード５０１との間でPCI express仕様のTLP通信が可能になるようなフローエントリを、OFS３００に設定する（ステップB3.1.1）。
【０１３１】
通信システムの構成が、例えば、図２に示すような構成の場合、すなわち単一のOFSのみを含む構成の場合、ステップB3.1.1において、以下に示すようなフローエントリがOFS３００に対して複数設定される。
【０１３２】
[Match条件]
EtherType = ExpEther
in_port = 送信側E2カードが接続されたポート番号
src_mac = 送信側E2カードの実MACアドレス
dst_mac = 受信側E2カードの仮想MACアドレス
[Action]
src_mac = 送信側E2カードの仮想MACアドレス
dst_mac = 受信側E2カードの実MACアドレス
Group(fast failover)
Bucket0（通常時） →  受信側E2カードが接続されたポート番号A
Bucket1（迂回用） →  受信側E2カードが接続されたポート番号B
【０１３３】
なお、サーバ４００に接続されているE2SVカード４０１のポート０から送信されるメッセージの、転送用のフローエントリの例を以下に示す。
【０１３４】
[Match条件]
EtherType = ExpEther
in_port = OFS３００のポート５
src_mac = E2SVカード４０１の実MACアドレス
dst_mac = E2IOカード５０１の仮想MACアドレス
[Action]
src_mac = E2SVカード４０１の仮想MACアドレス
dst_mac = E2IOカード５０１の実MACアドレス
Group(fast failover)
Bucket0（通常時）→ OFS３００のポート７
Bucket1（迂回用）→ OFS３００のポート８
【０１３５】
上記のフローエントリに記載されているように、送信元のE2カードの実MACアドレスは、E2カードの仮想MACアドレスに書き換えられる。また、出力ポートには、同じGroup IDが設定されている送信先のE2カードが接続しているOFS３００のポート番号が設定されている。上記のように、出力ポートには、通常時に使用されるポートと、障害発生時に迂回用として使用されるポートの両方を設定できる。
【０１３６】
通信システムが複数のOFSを含む場合、パケットが上記のフローエントリにヒットすると、egress側のOFSが、送信元MACアドレスをE2SVカードの仮想MACアドレス、またはE2IOカードの仮想MACアドレスに書き換える。また、OFSは、送信先MACアドレスも仮想MACアドレスから実MACアドレスに書き換える。なお、パケットの送信先アドレス書き換え設定、および出力ポート設定は、OFSの既存機能であるfast failover機能を使用すると、リンク障害発生時に障害発生時用に高速に切り替えられる。
【０１３７】
受信側のポートが両方正常に稼働している場合、OFC１１０は、最初にブロードキャスト情報を送信したポートをマスターポートとして扱うようにフローエントリを設定する。受信側のポートが両方正常に稼働している場合、受信側のE2カードは、送信側のE2カードの全てのポートから出力されたメッセージを受け付ける。
【０１３８】
次いで、E2IOカード５０１およびE2SVカード４０１がブロードキャストすると（ステップB4、B5）、OFS３００は、OFC１１０に対してパケットインを行う（ステップB4.1、B5.1）。
【０１３９】
Group IDが設定されているので、OFC１１０は、パケットアウトによりブロードキャストで送信された情報を、OFS３００の対象ポートに対して転送する（ステップB4.1.2、B5.1.2）。ブロードキャストで送信された情報が転送されるOFS３００のポートは、EEM１２０からのグループID設定情報を基に算出される。転送される際、ブロードキャスト情報の送信元MACアドレスは、仮想MACアドレスに変換されている。
【０１４０】
OFS３００は、転送された情報を、送信先のE2カードに向けてブロードキャストする（ステップB4.1.2.1、B5.1.2.1）。ブロードキャストした後、通信システム２０は、グループ化処理を終了する。
【０１４１】
なお、Group IDが設定されたE2SVカードから再接続後の最初のブロードキャスト情報を受信した場合、EEM１２０は、Group IDに属する全てのE2IOカードからの、内部にキャッシュされているブロードキャスト情報をE2SVカードに送信するようOFC１１０に指示してもよい。
【０１４２】
次に、通信システム２０によるカード交換対応処理を、図９を参照して説明する。図９は、通信システム２０によるカード交換対応処理の動作を示すシーケンス図である。
【０１４３】
図９は、図２に示すOFS３００のポート７とポート８に接続されているE2IOカード５０１を、E2IOカード５０３に交換する場合の通信システム２０の動作を示す。なお、E2IOカードの交換時における交換前と交換後のI/Oデバイス、およびE2IOカードが接続するスイッチのポートは同じである。
【０１４４】
ユーザは、EEM１２０をカード交換モードに設定する（ステップC1）。なお、EEM１２０には、E2IOカードの交換時に該当するポートを、ユーザがカード交換モードに設定できる手段が予め備えられているとする。
【０１４５】
ユーザの設定により、EEM１２０は、OFC１１０をカード交換モードに設定する（ステップC1.1）。設定する際、EEM１２０は、引数としてE2IOカード５０１の仮想MACアドレスを指定する。
【０１４６】
次いで、ユーザは、E2IOカード５０１を取り外す（ステップC2）。取り外した後、ユーザは、E2IOカード５０３を、E2IOカード５０１が接続されていたポートと同じポート７とポート８に接続する（ステップC3）。
【０１４７】
接続された後、E2IOカード５０３はデバイス情報をブロードキャストする（ステップC3.1）。OFS３００は、OFC１１０に対してパケットインを行う（ステップC3.1.1）。OFC１１０は、受信したパケットインメッセージに含まれる、E2IOカード５０３からのデバイス情報を、EEM１２０にブロードキャスト転送する（ステップC3.1.1.1）。
【０１４８】
EEM１２０は、受信したデバイス情報に基づいて、デバイスツリーを更新する（ステップC3.1.1.1.1）。更新する際、EEM１２０は、E2IOカード５０１に割り当てられていた仮想MACアドレスと同じ仮想MACアドレスを、E2IOカード５０３に割り当てる。EEM１２０がデバイスツリーを更新した後、OFC１１０は、フローエントリにおけるE2IOカード５０１の実MACアドレスをE2IOカード５０３の実MACアドレスに変更する。
【０１４９】
なお、ブロードキャスト情報が新規に受信された場合、EEM１２０は、ブロードキャスト情報から工場出荷時に記載されたカード名とシリアル番号を読み出し、同じカード名とシリアル番号を含むE2カードの情報がDB１５０に存在するか否か検索する。検索した結果該当するE2カードの情報がDB１５０に存在した場合、EEM１２０は、ブロードキャスト情報を送信したE2カードに、DB１５０に存在するE2カードと同じ仮想MACアドレスを割り当ててもよい。
【０１５０】
OFC１１０は、OFS３００に対してパケットアウトを行う（ステップC3.1.1.2）。パケットアウトの際、OFC１１０は、ブロードキャスト情報内の、送信元であるE2IOカード５０３の実MACアドレスを、E2IOカード５０１に割り当てられていた仮想MACアドレスと同じ仮想MACアドレスに書き換える。
【０１５１】
OFS３００は、パケットアウトで送信されたブロードキャスト情報を、E2SVカード４０１に対して転送する（ステップC3.1.1.2.1）。
【０１５２】
次いで、ユーザは、EEM１２０のカード交換モードを解除する（ステップC4）。ユーザの設定により、EEM１２０は、OFC１１０のカード交換モードを解除する（ステップC4.1）。解除した後、通信システム２０は、カード交換対応処理を終了する。
【０１５３】
次に、通信システム２０による同期処理を、図１０を参照して説明する。図１０は、通信システム２０による同期処理の動作を示すシーケンス図である。図１０は、クラスタ切り替え時における稼働系と待機系との間の同期処理を示す。
【０１５４】
同期処理により、フローエントリの設定途中や、更新情報を含むブロードキャスト情報の受信中に系の切り替えが発生した場合などに生じる不具合が回避される。フローエントリ設定中の状態は、例えば、OFCがflow modおよびbarrier requestを送信した後の状態、またはbarrier replyを受信する前の状態である。発生する不具合として、例えば、切り替え後の状態と、OFSやE2カードが保持している状態情報との不一致による不具合が考えられる。
【０１５５】
図１０において、管理サーバ１００が稼働系、管理サーバ２００が待機系である。また、E2SVカード４０１とE2IOカード５０１には、既に同一のGroup IDが設定されている。
【０１５６】
よって、通常時にE2SVカード４０１がブロードキャストすると（ステップD1）、OFS３００は、管理サーバ１００に対してパケットインを行う（ステップD2）。管理サーバ１００はパケットアウトを行い（ステップD2.1）、OFS３００はE2IOカード５０１に向けてブロードキャストする（ステップD2.1.1）。
【０１５７】
なお、待機系である管理サーバ２００のEEM２２０は、E2カードからブロードキャストで通知されたデバイス情報を、所定時間メモリに保持する。所定時間は、例えば、数十秒から数分である。稼働系に障害が発生した時、EEM２２０は、同期されたDB２５０に保持される内容と、メモリに保持されているデバイス情報を比較する。比較により差分が発見されれば、EEM２２０は、差分がなくなるようにDB２５０に保持されている内容を更新する。
【０１５８】
管理サーバ１００が、自身に障害が発生したことを検知する（ステップD3）。障害検知を契機に、管理サーバ１００は、管理サーバ２００に対してクラスタ切り替えを行うよう指示する（ステップD3.1）。
【０１５９】
稼働系と待機系との間の共有データは、ミラーディスクである共有ディスク、または管理サーバ１００から管理サーバ２００へのイベント通知などを介して同期される。共有データには、OFC１１０が保有する経路情報や、デバイスツリーなどのEEM１２０が管理するデバイス情報などが含まれる。
【０１６０】
クラスタ切り替えの指示を受けて、管理サーバ２００は、OFS３００に対してロールリクエストを発行する（ステップD3.1.1）。ロールリクエストには、OFS３００を、Open Flowメッセージを送信できるマスタOFCに設定する指示が記載されている。ロールリクエストを発行した後、管理サーバ２００は、アクティブ状態への遷移を開始する。
【０１６１】
アクティブ状態への遷移を開始した後、管理サーバ２００は、管理サーバ１００に対して再起動するよう指示する（ステップD4）。指示を受けて、管理サーバ１００は再起動する。再起動した後、管理サーバ１００はスタンバイ状態になる。
【０１６２】
次いで、管理サーバ２００は、デバイス情報を比較する（ステップD5）。具体的には、管理サーバ２００のEEM２２０が、メモリに保持されているデバイス情報と、同期処理が行われた後にDB２５０に保存されているデバイス情報とを比較する。比較した際に両者に差分があれば、EEM２２０は、差分がなくなるようにDB２５０に保存されている情報を更新する。
【０１６３】
クラスタ切り替え後、新しく稼働系となった管理サーバ２００のOFC２１０は、旧稼働系のOFC１１０によるフローエントリ設定中の障害などに備え、フローエントリの状態整合処理（以下、Audit処理という。）を行う。Audit処理において、OFC２１０は、接続されている全てのOFSからフローエントリ情報を取得し、OFC２１０側の情報と比較する。比較した際に両者に差分があれば、OFC２１０は、差分がなくなるようにフローエントリを再設定する。
【０１６４】
管理サーバ２００は、multipart requestメッセージやreplyメッセージを使用して、OFS３００に対して保存されているフローエントリ一覧の取得を要求する（ステップD6）。要求を受けて、OFS３００は、管理サーバ２００に対してフローエントリの一覧を通知する（ステップD6.1）。
【０１６５】
フローエントリ一覧の通知を受けて、管理サーバ２００は、フローエントリの情報を比較する（ステップD6.1.1）。具体的には、管理サーバ２００は、OFS３００から取得したフローエントリ情報と、同期処理が行われた後にDB２５０に保存されているフローエントリ情報とを比較する。比較した際に両者に差分があれば、管理サーバ２００は、差分がなくなるように、OFS３００に対してフローエントリを再設定する。
【０１６６】
フローエントリの差分の反映まで終えた時点で、管理サーバ２００は、アクティブ状態への遷移を完了する。管理サーバ２００がアクティブ状態に遷移した後、E2IOカード５０１がブロードキャストすると（ステップD7）、OFS３００は、管理サーバ２００に対してパケットインを行う（ステップD7.1）。管理サーバ２００はパケットアウトを行い（ステップD7.1.1）、OFS３００はE2IOカード５０１に向けてブロードキャストする（ステップD7.1.1.1）。管理サーバ２００がアクティブ状態に遷移した後、通信システム２０は、同期処理を終了する。
【０１６７】
本実施形態における通信システムは、ExpEtherネットワークを、１または複数のOFSを用いて実現する。通信システムでは、E2カードのMACアドレス仮想化やカード交換モードの導入により、宛先MACアドレスの動的変更によるリンク障害時のHW(hardware)リンクアグリゲーションや、E2SVカードとE2IOカードとの間の相互認証の順序保証が容易に実現される。
【０１６８】
本実施形態では、Open Flowネットワークが利用されたExpEtherシステムにおけるネットワーク構成が、動的に変更される。その理由は、本実施形態における通信システムが、E2カードのMACアドレスを仮想化する方法を導入しているためである。よって、宛先MACアドレスを動的に変更することによって、リンク障害に耐えられるHWリンクアグリゲーションが、容易に実現される。すなわち、ユーザは、異なるMACアドレスが割り当てられた複数のポートを有するE2カードを使用する場合でも、ポート障害に対応するための送信先MACアドレスの変更をカード側で行わずに済む。
【０１６９】
また、本実施形態における通信システムにおいて、ユーザは、同一のMACアドレスが割り当てられた複数のポートを有するE2カードを、単一のネットワークに接続できる。また、ユーザは、同一のMACアドレスが割り当てられた複数のポートを有するE2カードと、異なるMACアドレスが割り当てられた複数のポートを有するE2カードとを混在させて使用できる。その理由は、通信システムにおいてE2カードのMACアドレスが仮想的に取り扱われており、管理サーバが、通信構成に不具合のないようにMACアドレスと仮想MACアドレスとの対応関係を調整できるためである。
【０１７０】
また、本実施形態における通信システムは、ExpEtherネットワークにおける通信負荷を下げることができる。その理由は、E2カードのブロードキャストによる送信情報が、ネットワーク全体に流れないようにするためのフローエントリがOFSに設定されるためである。
【０１７１】
また、本実施形態における通信システムは、E2SVカードのポートとE2IOカードのポートがそれぞれ少なくとも１つ正常であれば、データ転送を実施できる。その理由は、OFCが、フローエントリの内容をポートごとに指定できるためである。
【０１７２】
また、本実施形態における通信システムは、パケットインアーキテクチャを使用せずに、予想されるフロー情報を事前に設定するプロアクティブ型ではないOpen Flowネットワークを実現する。すなわち、通信システムが、ユニキャストのパケットインを行わないため、E2SVカードとE2IOカードとの間のデータ転送速度は低下しない。
【０１７３】
また、本実施形態における通信システムのEEMは、EEAと連携することによって、E2IOカードに接続されたストレージ、ネットワークカードなどのI/Oデバイスの、より具体的なデバイス固有情報を管理できる。
【０１７４】
また、本実施形態における通信システムの管理サーバは冗長化構成をとり、一方の管理サーバ側で障害が発生しても、ExpEtherネットワークにおける通信に影響がないように同期処理が行われる。
【実施例】
【０１７５】
本実施例では、複数のOFSを含む冗長化されたOpen FlowネットワークをExpEtherネットワークに適用した場合における、E2SVカードからE2IOカードへのメッセージ送信を図１１を参照して説明する。図１１は、本発明による通信システムの他の構成例を示すブロック図である。
【０１７６】
図１１に示す通信システム３０は、OFS３１０〜３６０と、サーバ４１０と、I/Oサーバ５１０とを含む。サーバ４１０は、E2SVカードを備える。I/Oサーバ５１０は、E2IOカードを備える。なお、OFS３１０〜３６０はOFS３００と、サーバ４１０はサーバ４００と、I/Oサーバ５１０はI/Oサーバ５００と、それぞれ同じ機能を有する。
【０１７７】
図１１に示すように、OFS３１０、３２０、３５０および３６０には、IngressフローとEgressフローが設定される。IngressフローとEgressフローは、EEMからGroup IDを設定されたことを契機に、すなわちE2SVカードとE2IOカードとの接続が設定されたことを契機に、OFCが設定するフローである。
【０１７８】
図１１に示すように、OFS３３０、３４０にはCoreフローが設定される。Coreフローは、LLDPが使用されたトポロジ検出を契機にOFCが設定するフローである。
【０１７９】
OFS３１０に設定される、Ingressフローに対応するフローエントリの例を以下に示す。
【０１８０】
[Match条件]
EtherType = ExpEther
in_port = port1
src_mac = E2SVカードの実MACアドレス
dst_mac = E2IOカードの仮想MACアドレス
[Action]
src_mac = X, dst_mac = Y
out_port = port2
【０１８１】
XとYには、フローIDの情報と転送先のOFSの情報が含まれる。本実施例では、XとYに含まれるフローIDの情報はフローID=1である。また、転送先のOFSはOFS３５０である。また、out_portに指定されるポートは、OFSの経路選択アルゴリズムから導出される。
【０１８２】
OFS３５０に設定される、Egressフローに対応するフローエントリの例を以下に示す。
【０１８３】
[Match条件]
src_mac, dst_macに含まれるフローIDの情報がフローID=1、かつ転送先のOFSがOFS３５０
[Action]
src_mac = E2SVカードの仮想MACアドレス
dst_mac = E2IOカードの実MACアドレス
Group(fast failover)
Bucket0（通常時）→ out_port = port2
Bucket1（迂回用）→ out_port = port3
【０１８４】
OFS３６０に設定される、迂回用Egressフローに対応するフローエントリの例を以下に示す。
【０１８５】
[Match条件]
in_port = port3
src_mac, dst_macに含まれるフローIDの情報がフローID=1、かつ転送先のOFSがOFS３５０
[Action]
src_mac = E2SVカードの仮想MACアドレス
dst_mac = E2IOカードの実MACアドレス
out_port = port4
【０１８６】
上記のフローエントリが各OFSに設定されることによって、例えば、OFS３５０のport２で障害が発生した場合でも、OFS３６０を経由してI/Oサーバ５１０までフローが到達する。
【０１８７】
次に、本発明の概要を説明する。図１２は、本発明による通信システムの概要を示すブロック図である。本発明による通信システム５０は、E2カードを備えた通信装置（例えば、サーバ４００やI/Oサーバ５００）と通信可能に接続され、E2カードが送受信するメッセージ内の、E2カードの実物理アドレスをE2カードに割り当てられた仮想アドレスに変更し、E2カードの仮想アドレスをE2カードの実物理アドレスに変更する指示が記載されたフローエントリを保持するOFS５２（例えば、OFS３００）と、E2カードを管理するEEM５３（例えば、EEM１２０）と、OFCの機能を有する制御部５４（例えば、OFC１１０）とを有し、OFS５２と通信可能に接続された管理装置５１（例えば、管理サーバ１００）とを含む通信システムであって、E2カードが変更された場合、EEM５３は、変更後のE2カードの実物理アドレスの情報を変更後のE2カードから取得し、制御部５４は、フローエントリ内の変更前のE2カードの実物理アドレスを変更後のE2カードの実物理アドレスに変更する。
【０１８８】
そのような構成により、通信システムは、Open Flowスイッチを含むExpEtherネットワークのネットワーク構成を動的に変更できる。
【０１８９】
また、E2カードが複数のEtherポートを有する場合、制御部５４は、正常に動作する１つのポートのみがメッセージを受信するように、フローエントリを設定してもよい。
【０１９０】
そのような構成により、通信システムは、一方のポートに異常が発生しても、通信に影響を与えずに済む。
【０１９１】
また、OFS５２が管理装置５１に接続する際、制御部５４は、下記の２種類のフローエントリ
＜フローエントリＡ(ExpEther関連ブロードキャスト転送用)＞
[Match条件]
dst MAC = ブロードキャストアドレス
EtherType = ExpEther
[Action] 
To controller
＜フローエントリＢ(ExpEther関連フローのMISS HIT用)＞
[Match条件]
EtherType= ExpEther
[Action]
To controller
を、フローエントリＡの優先度がフローエントリＢの優先度よりも高くなるようにOFS５２に設定してもよい。
【０１９２】
そのような構成により、通信システムは、Groupが異なるE2カード、またはGroup未設定のE2カードに対する不要なブロードキャストの転送を防ぐことができる。
【０１９３】
また、OFS５２は、E2SVカードを備えたサーバおよびE2IOカードを備えたI/Oサーバと通信可能に接続され、ブロードキャスト情報の受信によりEEM５３がE2SVカードとE2IOカードを認識した後、認識されたE2SVカードとE2IOカードを結びつけるためのGroup IDが設定されると、制御部５４は、E2SVカードとE2IOカードとの間でメッセージが伝送されるようにフローエントリを設定してもよい。
【０１９４】
そのような構成により、通信システムは、サーバとI/Oデバイスとの間のデータを高速に転送できる。
【０１９５】
また、OFS５２は、E2IOカードを備えた複数のI/Oサーバと通信可能に接続され、ブロードキャスト情報の受信によりEEM５３がE2IOカードを認識した後、認識された複数のE2IOカードを結びつけるためのGroup IDが設定されると、制御部５４は、複数のE2IOカードの間でメッセージが伝送されるようにフローエントリを設定してもよい。
【０１９６】
そのような構成により、通信システムは、複数のI/Oデバイス間のデータを高速に転送できる。
【０１９７】
また、Group ID未設定のE2IOカードから送信されたブロードキャスト情報を受信した際、E2IOカードが接続されたI/OデバイスのベンダID、デバイスID、およびクラスIDが新規に設定されたこと、または変更されたことが判明した場合、EEM５３は、EEA（例えば、EEA１４０）内のEEA Manager（例えば、EEA Manager１４１）経由で、Group IDおよびEEAとE2IOカードとの間でメッセージが伝送されるようなフローエントリが一時的に設定されるよう制御部５４に指示してもよい。
【０１９８】
そのような構成により、通信システムは、E2カードを備えるサーバが新規にOFSに接続した場合でも、E2カードのデバイス情報を取得できる。
【０１９９】
また、ブロードキャスト情報が新規に受信された場合、EEM５３は、工場出荷時に記載されたカード名とシリアル番号を読み出し、同じカード名とシリアル番号を含むE2カードの情報が既に記憶部に存在する場合、ブロードキャスト情報を送信したE2カードに、記憶部に存在するE2カードと同じ仮想アドレスを割り当ててもよい。
【０２００】
そのような構成により、通信システムは、E2カードを備えるサーバがOFSに再度接続した場合でも、既存のフローエントリを活用できる。
【０２０１】
また、既にGroup IDが設定されているE2SVカードからの、再接続後の最初のブロードキャスト情報の受信を契機に、EEM５３は、Group IDに属する全てのE2IOカードからの、内部にキャッシュしているブロードキャスト情報をE2SVカードに送信するよう制御部５４に指示してもよい。
【０２０２】
そのような構成により、通信システムは、E2カードが送信するブロードキャスト情報の送信間隔を長くしても、E2SVカードが接続されたコンピュータのBIOSでI/Oデバイスが認識されないという不具合を防ぐことができる。
【０２０３】
また、通信システム５０は、管理装置５１と同様の機能を有する第２の管理装置を含み、管理装置５１と第２の管理装置とはアクティブ／スタンバイ構成で冗長化され、管理装置５１の制御部と第２の管理装置の制御部は、同時にE2カードからのブロードキャスト情報を受信してもよい。
【０２０４】
そのような構成により、通信システムは、ホットスタンバイ型で管理装置を冗長化できる。
【０２０５】
また、カード交換モードにおいて、制御部５４は、E2SVカード−E2IOカード間のフローエントリを削除せず、EEM５３は、交換後のカードからの最初のブロードキャスト情報の受信を契機に、交換後のカードに対して、交換前のカードと同じ仮想アドレスの割り当てと、同じGroup IDの設定を行ってもよい。
【０２０６】
そのような構成により、通信システムは、OFSに接続するE2カードが交換された場合にも、滞りなくExpEther通信を実行できる。
【産業上の利用可能性】
【０２０７】
本発明は、Open Flowネットワークを使用したサーバによる遠隔I/Oデバイス制御の用途に適用可能である。また、コンピュータとI/Oデバイスの関連付けを、外部の管理サーバが制御および管理する用途にも適用可能である。
【符号の説明】
【０２０８】
１０、２０、３０、５０  通信システム
５１  管理装置
５２、３００、３１０、３２０、３３０、３４０、３５０、３６０  OFS
５３、１２０、２２０  EEM
５４  制御部
１００、２００  管理サーバ
１１０、２１０  OFC
１３０、２３０  VM
１４０、２４０  EEA
１４１  EEA Manager
１４２  OS
１５０、２５０  DB
１６０、２６０、４０１  E2SVカード
４００、４１０  サーバ
５００、５１０  I/Oサーバ
５０１、５０３  E2IOカード
５０２  I/Oデバイス
６００、７０１、７０２、８００  リンク
【図１】
2016144142.tif 000003
【図２】
2016144142.tif 000004
【図３】
2016144142.tif 000005
【図４】
2016144142.tif 000006
【図５】
2016144142.tif 000007
【図６】
2016144142.tif 000008
【図７】
2016144142.tif 000009
【図８】
2016144142.tif 000010
【図９】
2016144142.tif 000011
【図１０】
2016144142.tif 000012
【図１１】
2016144142.tif 000013
【図１２】
2016144142.tif 000014
【図１３】
2016144142.tif 000015
【図１４】
2016144142.tif 000016
【図１５】
2016144142.tif 000017