(54)【発明の名称】DSCP(Differentiated Services Code Point)およびECN(Explicit Congestion Notification)をモニタリングするデータプレーンのための方法および装置
【文献】
J. Hedin, G. Mirsky, S. Baillargeon,Differentiated Service Code Point and Explicit Congestion Notification Monitoring in Two-Way Active Measurement Protocol (TWAMP),Internet-Draft,IETF Network Working Group,2015年11月 4日,[2019年6月19日検索],URL,https://tools.ietf.org/pdf/draft-ietf-ippm-type-p-monitor-03.pdf
(58)【調査した分野】(Int.Cl.,DB名)
セッションセンダとセッションリフレクタの間の順方向および逆方向における単一のテストセッションにおいて、DSCP(Differentiated Services Code Point)およびECN(Explicit Congestion Notification)が変更されたかを判定するためのテストを実行する前記セッションセンダを実装するネットワークデバイスにより実行される方法であって、
複数のDSCPおよびECNは、前記単一のテストセッションを用いてテストされ、
前記方法は、
前記セッションリフレクタが前記単一のテストセッションにおける前記複数のDSCPの使用をサポートしていると判定されたことに応じて、前記単一のテストセッションが開始された場合に、第1の最初フォワードDSCPおよびECNを決定することと、
前記第1の最初フォワードDSCPおよびECNを含む第1のテストパケットを生成することと、
前記単一のテストセッションにおいて、前記第1のテストパケットを前記セッションリフレクタへ送信することと、
第2の最初フォワードDSCPおよびECNを決定することと、
前記第2の最初フォワードDSCPおよびECNを含む第2のテストパケットを生成することと、
前記単一のテストセッションにおいて、前記第2のテストパケットを前記セッションリフレクタへ送信することと
を有することを特徴とする方法。
セッションセンダとセッションリフレクタの間の順方向および逆方向における単一のテストセッションにおいて、DSCP(Differentiated Services Code Point)およびECN(Explicit Congestion Notification)が変更されたかを判定するためのテストを実行する前記セッションセンダを実装するネットワークデバイスにより実行される方法であって、
複数のDSCPおよびECNは、前記単一のテストセッションを用いてテストされ、
前記方法は、
前記セッションリフレクタが前記単一のテストセッションにおける前記複数のDSCPの使用をサポートしていると判定されたことに応じて、前記単一のテストセッションが開始された場合に、前記セッションセンダと前記セッションリフレクタとの間で用いられるべき、最初フォワードDSCPおよびECNと、最初リバースDSCPおよびECNとをネゴシエートすることと、
前記最初フォワードDSCPおよびECNを用いて第1のテストパケットを生成することと、
シーケンス番号を含む前記第1のテストパケットを、前記セッションリフレクタへ送信することと、
前記シーケンス番号と共に、前記セッションリフレクタから第2のテストパケットを受信することと、
前記シーケンス番号を用いて、前記第1のテストパケットと前記第2のテストパケットとを関連付けることと、
前記単一のテストセッションにおいて、前記複数のDSCPおよびECNのそれぞれがテストされるまで、前記複数のDSCPおよびECNのそれぞれの反復することと
を有することを特徴とする方法。
セッションセンダとセッションリフレクタの間の順方向および逆方向における単一のテストセッションにおいて、DSCP(Differentiated Services Code Point)およびECN(Explicit Congestion Notification)が変更されたかを判定するためのテストを実行する前記セッションリフレクタを実装するネットワークデバイスにより実行される方法であって、
複数のDSCPおよびECNは、前記単一のテストセッションを用いてテストされ、
前記方法は、
前記セッションリフレクタが前記単一のテストセッションにおける前記複数のDSCPの使用をサポートしていると判定されたことに応じて、前記単一のテストセッションが開始された場合に、前記単一のテストセッション内にて、セッションセンダから第1のテストパケットを受信することと、
前記第1のテストパケット内の最終フォワードDSCPおよびECNを識別することと、
前記第1のテストパケット内の最初リバースDSCPおよびECNを識別することと、
前記最終フォワードDSCPおよびECNと、前記最初リバースDSCPおよびECNを含む第2のテストパケットを生成することと、
前記単一のテストセッション内にて、前記第2のテストパケットを前記セッションセンダへ送信することと、
前記単一のテストセッションにおいて、前記複数のDSCPおよびECNのそれぞれがテストされるまで、前記複数のDSCPおよびDCNを反復することと
を有することを特徴とする方法。
最初フォワードDSCPおよびECNと、前記最初リバースDSCPおよびECNとを、前記セッションセンダとネゴシエートすること、を更に有することを特徴とする請求項7に記載の方法。
セッションセンダとセッションリフレクタの間の順方向および逆方向における単一のテストセッションにおいて、DSCP(Differentiated Services Code Point)およびECN(Explicit Congestion Notification)が変更されたかを判定するためのテストを実行する、前記セッションセンダを実装するネットワークデバイスであって、
複数のDSCPおよびECNは、前記単一のテストセッションを用いてテストされ、
前記ネットワークデバイスは、
テストセッションマネージャを格納している非一時的マシン読み込み可能媒体と、
前記非一時的マシン読み込み可能媒体に結合されたプロセッサと
を有し、
前記プロセッサは、前記テストセッションマネージャを実行し、
前記テストセッションマネージャは、前記セッションリフレクタが前記単一のテストセッションにおける前記複数のDSCPの使用をサポートしていると判定されたことに応じて、前記単一のテストセッションが開始された場合に、第1の最初フォワードDSCPおよびECNを決定し、前記第1の最初フォワードDSCPおよびECNを含む第1のテストパケットを生成し、前記単一のテストセッションにおいて、前記セッションリフレクタへ前記第1のテストパケットを送信し、第2の最初フォワードDSCPおよびECNを決定し、前記第2の最初フォワードDSCPおよびECNを含む第2のテストパケットを生成し、前記単一のテストセッションにおいて、前記セッションリフレクタへ前記第2のテストパケットを送信するように構成される
ことを特徴とするネットワークデバイス。
前記テストセッションマネージャは更に、第1の最初リバースDSCPおよびECNを決定し、前記第1のテストパケットは、前記第1の最初リバースDSCPおよびECNを含み、同じテストセッション内にて、第1の最終フォワードDSCPおよびECNと、最終リバースDSCPおよびECNとを含む第3のテストパケットを受信するように構成されることを特徴とする請求項12に記載のネットワークデバイス。
前記テストセッションマネージャは更に、第1の最初リバースDSCPおよびECNを決定し、前記第1のテストパケットは、前記第1の最初リバースDSCPおよびECNを含み、同じテストセッション内にて、最終フォワードDSCPおよびECNと、最終リバースDSCPおよびECNを含む第3のテストパケットを受信するように構成されることを特徴とする請求項16に記載のコンピューティングデバイス。
複数のネットワークデバイスを含むSDN(Software Defined Networking)ネットワークの制御プレーンを実装するように構成された制御プレーンデバイスであって、
前記制御プレーンデバイスは、セッションセンダとセッションリフレクタの間の順方向および逆方向における単一のテストセッションにおいて、DSCP(Differentiated Services Code Point)およびECN(Explicit Congestion Notification)が変更されたかを判定するためのテストを実行する、前記セッションセンダを実装する方法を実行するように構成され、
複数のDSCPおよびECNは、前記単一のテストセッションを用いてテストされ、
前記制御プレーンデバイスは、
テストセッションマネージャを格納している非一時的マシン読み込み可能媒体と、
前記非一時的マシン読み込み可能媒体に結合されたプロセッサと
を有し、
前記プロセッサは、前記テストセッションマネージャを実行し、
前記テストセッションマネージャは、前記セッションリフレクタが前記単一のテストセッションにおける前記複数のDSCPの使用をサポートしていると判定されたことに応じて、前記単一のテストセッションか開始された場合に、次の最初フォワードDSCPおよびECNを決定し、次の最初リバースDSCPおよびECNを決定し、前記次の最初フォワードDSCPおよびECNと、前記次の最初リバースDSCPおよびECNを含む第1のテストパケットを生成し、前記単一のテストセッションにおいて、前記セッションリフレクタへ前記第1のテストパケットを送信し、最終フォワードDSCPおよびECNと、最終リバースDSCPおよびECNを含む第2のテストパケットを、同じテストセッションにて受信し、前記単一のテストセッションにおいて前記複数のDSCPおよびECNのそれぞれがテストされるまで、前記複数のDSCPおよびECNのそれぞれを反復する、ように構成される
ことを特徴とする制御プレーンデバイス。
【発明を実施するための形態】
【0014】
以下の説明は、データトラフィック計測のための、より具体的には、TWAMP(Two−Way Active Measurement Protocol)または類似のプロトコルを用いるDSCP(Differentiated Service Code Point)およびECN(Explicit Congestion Notification)の複数の組み合わせをテストするための方法および装置を示す。実施形態は、単一のテストセッションを用いて複数の組み合わせのテストを可能とする。単一のテストセッションを使用すると、複数のテストセッションのセットアップと切断によってオーバーヘッドが発生する複数のDSCPとECNの組み合わせをテストする際のオーバーヘッドが減少する。既存技術は、テストされるべきDSCPおよびECNの各組み合せに対して、別個のテストセッションを必要とし、それにより、追加の計算や記憶のリソースを必要としている。本実施形態では、主に、TWAMPを用いるテストセッションを実装することに関連して述べられるが、当業者は、原理やプロセスが、ping、SLA(Service−Level Agreement)テスト、および類似の技術を含む他の類似のテストセッション技術に適用可能であると理解してよい。
【0015】
以下の説明において、論理構成、オペコード、オペランドを記述する手段、リソースの分割/共有/統合の構成、システム構成のタイプおよび相互関係、および、論理の分割/統合の選択は、本願発明のより一層の理解を提供するために説明される。しかしながら、当業者により、本発明はそのような特定の詳細を順守されなくてもよいと理解されるであろう。他の例において、制御構成、ゲートレベル回路、および完全なソフトウェア命令シーケンスは、本発明を分かりにくくしないように、詳細には示されていない。当業者は、説明を含めて、過度の実験をすることなく適切な機能を実装することができるであろう。
【0016】
“一実施形態”、”実施形態”、”一例の実施形態”などに対する明細書中の参照は、説明された実施形態が、特定の特徴、構成、または、特性を含んでよいことを示すが、全ての実施形態は、特定の特徴、構成、または特性を含むことを必要としない。加えて、そのようなフレーズは、いくつかの実施形態を参照することを必要としない。更に、特定の特徴、構成、または、特性が実施形態と関連付けて説明された場合、明示的に記載されているか否かに関わらず、そのような特徴、構造、または特性に影響を与えることは、当業者の知識の範囲内であると提示される。
【0017】
点線の枠線(例えば、大きな破線、小さな破線、点線、点)を有するブラケットテキストおよびブロックは、本発明の実施形態に追加の特徴を付加する任意の動作を例示するために、ここでは用いられてよい。しかし、そのような表記は、これらが唯一のオプションまたはオプションの操作であること、および/または、実線の境界を有するブロックが本発明の特定の実施形態ではオプションではないこと、を意味するものではない。
【0018】
以下の説明および請求項において、「結合された」および「接続された」という用語は、それらの派生語と共に使用されてもよい。これらの用語は、互いに同義語として意図されていないことを理解されるべきである。「結合された」は、互いに直接的に物理的または電気的に接触していてもいなくてもよい、2つ以上の要素が互いに協働または相互作用することを示すために使用される。「接続された」は、互いに結合された2つ以上の要素間の通信の確立を示すために使用される。
【0019】
電子デバイスは、(ソフトウェア命令で構成され、時にはコンピュータプログラムコードまたはコンピュータプログラムと呼ばれる)コードおよび/またはデータを、マシン読み取り可能記憶媒体(例えば、磁気ディスク、光ディスク、ROM(Read Only Memory)、フラッシュメモリデバイス、相変化メモリ)やマシン読み取り可能送信媒体(搬送波とも呼ばれる)(例えば、搬送波、赤外線信号などの、電気信号、光学信号、無線信号、音響信号、または他の形態の伝搬信号)のようなマシン読み取り可能な媒体(コンピュータ可読媒体とも呼ばれる)を用いて、(内部でおよび/またはネットワーク上の他の電子デバイスとともに)格納したり、送信したりする。したがって、電子デバイス(例えば、コンピュータ)は、1組のプロセッサ上で実行するためのコードを格納するため、および/または、データを格納するために、1つまたは複数のマシン読み取り可能記憶媒体に格納された1つまたは複数のプロセッサのセットなどのハードウェアおよびソフトウェアを含む。例えば、電子デバイスは、不揮発性メモリが、電子デバイスがオフされている(電源が切られている)場合でもコード/データを持続することができるため、コードが格納された不揮発性メモリを含むことができ、電子デバイスがオンにされている間に、その電子デバイスのプロセッサによって実行されるコードの部分は、通常、より低速の不揮発性メモリから、電子デバイスの揮発性メモリ(例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory))にコピーされる。典型的な電子デバイスはまた、他の電子デバイスとのネットワーク接続(伝播信号を使用してコードおよび/またはデータを送信および/または受信する)を確立するための1つまたは複数の物理ネットワークインターフェースを含む。本発明の実施形態の1つまたは複数の部分は、ソフトウェア、ファームウェア、および/またはハードウェアの異なる組み合わせを使用して実装されてもよい。
【0020】
ネットワークデバイス(ND)は、ネットワーク上の他の電子デバイス(例えば、他のネットワークデバイス、エンドユーザデバイス)を通信可能に相互接続する電子デバイスである。いくつかのネットワークデバイスは、複数のネットワーキング機能(例えば、ルーティング、ブリッジング、スイッチング、レイヤ2アグリゲーション、セッションボーダーコントロール、Quality of Service、および/または、加入者管理)をサポート、および/または、複数のアプリケーションサービス(例えば、データ、音声、およびビデオ)をサポートする「マルチサービスネットワークデバイス」である。
【0021】
概要
TWAMP(Two−Way Active Measurement Protocol)テストセッションは、セッションセンダとセッションリフレクタとの間で交換されるテストパケットで使用される、特定のDSCP(Differentiated Services Code Point)およびECN(Explicit Congestion Notification)を用いて行われる。DSCPおよびECNは、セッションセンダとセッションリフレクタとの間の順パスおよび逆パスで変更されないままになると予測されるTWAMPテストセッションで利用されるTWAMPテストパケットのフィールドである。TWAMPに対するDSCPおよびECNモニタリング拡張は、オペレータがテストパケット内のDSCPフィールドの、意図されているか間違っている、データトラフィックの再マーキング、およびECNフィールドの変更を検出できるように定義されることができる。これらのフィールドのモニタリングは、2つのテストポイント(すなわちセッションセンダとセッションリフレクタ)の間の順方向および逆方向に行うことができる。しかし、DSCPとECNの複数の組み合わせの結果、DSCPとECNのすべての組み合わせ、またはこれらの値のサブセットまでテストしてモニタリングするには、各DSCPとECNの組み合わせ(いくつかの実施形態では、同じDSCPとECNの組合せの繰り返しテストすることを含む)ごとに個別のテストセッションを確立する必要があります。したがって、TWAMPテストセッションをネゴシエートおよび確立するためにTWAMP制御プロトコルが使用される場合、送信元および宛先のUDP(User Datagram Protocol)ポート番号を含む、テストパラメータが再ネゴシエートされ、DSCPとECNのモニタリングの結果に影響する可能性がある。TWAMPがCLI(Command Line Interface)またはNMS(Network Management Service)/中央コントローラによって制御される場合は、別々のテストセッションが、各DSCPとECNの組み合わせをテストしてモニタするために設定される必要がある。
【0022】
既存のTWAMP制御プロトコルに準拠して、CLIまたは中央コントローラを使用して、テストセッションのDSCPおよびECNフィールドの特定の値を含む、パラメータを構成することができる。いくつかの実施形態では、DSCPおよびECNモニタリングTWAMP拡張は、テストセッションの順方向および逆方向のDSCPおよびECNの変化の検出を可能にするために利用されるが、依然としてこれらのDSCPおよびECN値の単一の組み合わせについてのみである。既存のTWAMPテストプロトコルでは、セッションセンダとセッションリフレクタによって設定されたDSCP値とECN値が、特定のテストセッションの存続期間にわたって同一のままである必要がある。別々のTWAMPテストセッションを用いて複数のDSCPとECNの組み合わせをテストすると、組み合わせ(1:1)ごとに各テストセッションを設定および解除する際に、かなりのオーバーヘッドが発生する。本発明の実施形態は、従来技術のこの制限を克服する。
【0023】
実施形態は、対応する返されたTWAMPテストパケットにおけるDSCPおよびECNの値として、受信されたTWAMPテストパケットに定義された特定のDSCPおよびECNの値を使用するように、セッションリフレクタに指示するメカニズムを追加することによって、DSCPおよびECNをモニタリングするためのTWAMPプロセスの欠点を克服する。必要なDSCPおよびECNを含むようにTWAMPを拡張する特定のDSCPおよびECNモニタリングTWAMP拡張と組み合わせにおいて、この実施形態は、単一のテストセッションにおける包括的なDSCPおよびECNモニタリングを可能にするためのこの情報を利用できる一組の方法およびシステムを提供する。
【0024】
実施形態は、セッションリフレクタによる特定のDSCPおよびECNモニタリングモードを要求するために、DSCPおよびECNの一方的な双方向モニタリングのパラメータをネゴシエートするネットワークエンティティによって用いられる方法および装置を提供することによって、既存のTWAMPプロトコルの限界を克服する。実施形態は、あるテストシングルトンで使用されるDSCPおよびECNハンドリングモードを指定するために、IP(Internet Protocol)ネットワークにおいてDSCPおよびECNモニタリングを実装するネットワークデバイスによって用いられる方法および装置を提案する。RFC5357は、TWAMPテストセッションのパラメータをネゴシエートし、信号を送るために使用できるTWAMP制御プロトコルを規定している。サーバグリーティングメッセージのモードフィールドにあるサーバは、セッションリフレクタの機能を一覧表示する。セットアップ応答メッセージのモードフィールドの制御クライアントは、セッションセンダに代わってモードを要求する。各サーバおよび制御クライアントは、アドバタイズされた能力を比較し、それに応じてセッションセンダおよびセッションリフレクタのテストモードを設定する。
【0025】
一実施形態では、DSCPおよびECNモニタリングは、順方向および逆方向に実施される。セッションリフレクタがDSCPおよびECNのモニタリングの両方のTWAMP拡張をサポートしているかどうかのチェックが行われる。TWAMP拡張とは、RFC5357で定義されているベーシックTWAMPの機能の変更と拡張を指す。セッションリフレクタがDSCPおよびECNモニタリングを処理できる場合、セッションリフレクタは少なくとも往復テストを処理するように設定できる(すなわち、セッションリフレクタは、DSCPおよびECNモニタリングTWAMP拡張をサポートする)。セッションリフレクタがDSCPおよびECNモニタリングをサポートしない場合、制御クライアントとサーバとの間のTWAMP制御プロトコルネゴシエーションは、TWAMPテストセッションを開始しない(すなわち、セッションリフレクタがDSCPおよびECNモニタリング拡張をサポートできない場合)。コマンドラインインターフェイス(CLI)または中央コントローラ(SDNネットワークなど)が、TWAMPテストセッションのパラメータを設定するために使用される場合、モードの選択は、CLI、Netconf、または同様のクエリのいずれかに応答して、セッションセンダおよびセッションリフレクタによって報告された機能に基づいて実行できる。セッションリフレクタが、DSCPおよびECNモニタリングまたは同様のTWAMP拡張をサポートする場合、順方向および逆方向のより詳細な独立したテストが可能である。これらの実施形態は、往復および/または別個の順方向および逆方向のテストの単一のTWAMPテストセッション内で、新しいタイプのIP性能測定、DSCPおよびECNモニタリングの実行を可能にすることによって、既存のTWAMP実装に対して利点を提供する。実施形態の特徴は、ここでは単一のテストセッションの複数のDSCP TWAMP拡張と呼ばれるTWAMPの拡張として実施することができる。
【0026】
図1Aは、TWAMP(Two−Way Active Measurement Protocol)のクライアント制御エンティティのためのプロセスの一実施形態のフローチャートである。制御クライアントプロセスのこの実施形態は、制御クライアントが、サーバまたはサーバおよびセッションリフレクタを実装するネットワークデバイスと通信するネットワークデバイスによって実装される場合に実現される。制御クライアントを実装するネットワークデバイスは、いくつかの実施形態では、セッションセンダも実装することができる。プロセスは、TWAMPの制御プレーンであるTWAMP制御プロトコルの動作のコンテキスト内で開始される。サーバおよび制御クライアントは、セッションセンダおよびセッションリフレクタの特性および/または能力に関する情報を含むメッセージを交換している。制御クライアントは、このネゴシエーションを開始するためにTCP接続を確立する。
【0027】
TCP接続が確立された後、制御クライアントは、セッションリフレクタの特性および能力を含むサーバからのグリーティングメッセージを受信する(ブロック101)。サーバグリーティングメッセージは、特に、セッションリフレクタがDSCPおよびECNモニタリングのTWAMP拡張および/または単一のテストセッション多重DSCP TWAMP拡張または同様の機能をサポートするかどうかに関する情報を含むことができる。これらのTWAMPへの拡張は、セッションセンダに、複数のDSCPおよびECNが同じテストセッションでテストされるテストセッションを生成し、利用できるようにし、かつ、単一のテストセッションが、セッションセンダとセッションリフレクタの間の順方向と逆方向の両方で独立したテストを可能にするテストセッションを可能にする。
【0028】
制御クライアントのプロセスは、TWAMP拡張のサポートに対し、セッションリフレクタの受信した特性をチェックする。プロセスは、セッションリフレクタが単一のテストセッションの複数のDSCP TWAMP拡張をサポートしているかどうか、つまり、セッションリフレクタが単一のテストセッションで複数のDSCPの使用をサポートしているかどうかをチェックする(ブロック103)。セッションリフレクタが単一のテストセッションで複数のDSCPをサポートしない場合、所望の単一のテストセッションプロセスを実行することができないので、プロセスは終了することができる(ブロック109)。他の実施形態では、プロセスは、複数のテストセッションを使用してテストを実行することを取り消してもよい。セッションリフレクタが単一のテストセッションの複数のDSCPをサポートする場合、セットアップ応答メッセージは、制御クライアントによってサーバに送信されるように準備される。このセットアップ応答メッセージは、テストセッションがセッションリフレクタのこの機能を利用しようとしていることを意味する、DSCPおよびECNテストが関連するテストセッションで利用されることを示すように更新することができる(ブロック105)。
【0029】
次に、制御クライアントは、セッションリフレクタがDSCPおよびECNモニタリングをサポートしているかどうかをチェックする(ブロック107)。セッションリフレクタがDSCPおよびECNモニタリングをサポートする場合、プロセスは、DSCPおよびECNモニタリングが実施されることを示す指標をセットアップ応答メッセージに追加する(ブロック111)。セッションリフレクタがDSCPおよびECNモニタリングをサポートしない場合、プロセスは、セットアップ応答メッセージをサーバに転送することができる(ブロック115)。サーバは、この情報とフィードバックを使用して、TWAMPを用いるテストセッションの望ましい構成をサポートするようにセッションリフレクタを構成することができる。このプロセスの実施は、制御クライアントを実装するネットワークデバイスによって実行されるTWAMPモジュールを介して行うことができる。
【0030】
図1Bは、SDN(Software Defined Networking)コントローラによって実施されるTWAMPテストセッションのオーケストレータのためのプロセスの一実施形態のフローチャートである。この実施形態では、セッションリフレクタおよびセッションセンダの能力を決定するプロセスは、中央コントローラによって実行されるオーケストレータの形式のテストセッションマネージャによって実装される。制御クライアントの実装と同様に、テストセッションマネージャは、セッションリフレクタおよび/またはセッションセンダの特性を判定しなければならない(ブロック151)。セッションリフレクタおよび/またはセッションセンダは、その能力を中央コントローラのオーケストレータに直接報告することができ、または制御クライアントおよびサーバは、これらの能力をそれぞれ報告することができる。能力が報告されると、セッションリフレクタが単一のテストセッションにおいて複数のDSCPの使用をサポートするかどうかの判定が行われる(ブロック153)。これがサポートされている場合、DSCPおよびECNテストが実行されることを示すために、セッションリフレクタまたはサーバに送信される構成メッセージが更新される(ブロック155)。単一のテストセッション内の複数のDSCPがサポートされていない場合、セッションリフレクタがそれをサポートすることができないので、プロセスは、テストセッションの設定を終了する(ブロック159)。これにより、各DSCPとECNの組み合わせごとに個別のテストセッションを使用する標準のDSCPおよびECNテストを使用してよい。
【0031】
構成メッセージの更新に続いて、DSCPおよびECNモニタリングのサポートがセッションリフレクタおよび/またはセッションセンダによってサポートされているか否かの判定が行われる(ブロック157)。セッションリフレクタ(およびセッションセンダ)がDSCPおよびECNモニタリングをサポートする場合、DSCPおよびECNモニタリングが利用されることを示すインジケータを追加するように構成メッセージを更新することができる(ブロック161)。DSCPおよびECNモニタリングがサポートされていない場合、構成メッセージは完了し、セッションリフレクタまたはサーバに送信して構成を実装することができる(ブロック165)。セッションリフレクタの構成について説明したが、当業者であれば、セッションセンダが、生成され、設定され、送信された同様の設定メッセージと同じ方法で、DSCPおよびECNテストのためのテストセッションに参加するように同様に構成することができると理解するであろう。
【0032】
図2は、TWAMPのサーバのためのプロセスの一実施形態のフローチャートである。サーバは、DSCPおよびECNテストのためのTWAMPテストセッションを確立するためのセッションリフレクタの構成を実行することができる。このプロセスは、セッションリフレクタが単一のテストセッションにおける複数のDSCP(例えば、単一のテストセッションの複数のDSCP TWAMP拡張を介して)およびTWAMPに対するDSCPおよびECNモニタリングの拡張をサポートするかどうかを示すセッションリフレクタの特性と能力を含むサーバグリーティングメッセージを制御クライアントに送信することにより、開始できる(ブロック201)。このメッセージを送信することに応答して、サーバは、制御クライアントからセットアップ応答メッセージを受信することができる。セットアップ応答メッセージは、単一のテストセッションにおける複数のDSCPの使用およびテストセッションに対するDSCPおよびECNモニタリングパラメータを含むテストセッションパラメータを示すことができる(ブロック203)。次いで、サーバは、受信したDSCPおよびECNテストパラメータに従ってセッションリフレクタを構成することができる(ブロック205)。
【0033】
図3は、TWAMPのセッションセンダのためのプロセスの一実施形態のフローチャートである。制御クライアントは、セッションリフレクタとのTWAMPテストセッションを開始するようにセッションセンダを構成する。次いで、セッションセンダは、テストされる次の最初フォワードDSCPおよびECNを決定し、テストされる次の最初リバースDSCPおよびECNを決定する(ブロック301)。次に、セッションセンダは、次の最初フォワードDSCPおよびECN(例えば、IPヘッダまたは同様の位置)および次の最初リバースDSCPおよびECN(例えば、第1のテストパケットのペイロードまたは同様の位置)を含む第1のテストパケットを生成する(ブロック303)。セッションセンダは、単一のテストセッション内での使用のために、上述のような選択されたフォワードおよびリバースDSCPおよびECNを有する生成された第1のテストパケットを送信する(ブロック305)。さらなる実施形態では、第1のテストパケットは、テストパケットのセットのうちの1つとして送信されてもよい。これらのテストパケットは、同じDSCPとECNの組み合わせを持つことができる。このようにして、プロセスは、いくつかが異なる方法で処理またはルーティングされることによりセット内のテストパケットのいずれかが変更されたかどうかを判定することができ、1つのテストパケットではなくセットを送信すると、そのような発生を見つける可能性が高まる。しかしながら、明確にするために、実施形態は、主として、単一のテストパケットを送信することを参照して説明される。当業者であれば、原理、プロセス、および構成がテストパケットのセットの使用を包含することを理解するであろう。
【0034】
第1のテストパケットは、テストする組み合わせのセットを反復する任意のアルゴリズムを使用して選択できる2つのセットのDSCPおよびECNを含む。2つのセットのうちの1つは、順方向(例えば、順方向のIPヘッダ内にあってよい)および逆方向のための第2のセット(例えば、セットは、逆方向のために第2のテストパケットが生成されたときに、セッションリフレクタにより用いられるペイロードの中にあってよい)である。このようにして、2つの方向(すなわち、セッションセンダからセッションリフレクタへ、次いで、セッションリフレクタからセッションセンダへ)を別々にテストすることができる。指定された最初フォワードDSCPおよびECNがセッションリフレクタに(すなわち、順方向にて)到達し、最初リバースDSCPおよびECNがセッションセンダに(すなわち、逆方向にて)到着した場合、この組み合わせのためのDSCPおよびECNテストは、DSCPおよびECNが各方向に変更されていないことを示すことで成功である。DSCPまたはECNがいずれかの方向に変更された場合、特定の方向にて変更が発生したことを知ることができ、ラウンドトリップテストのみが可能である(つまり、同じDSCPおよびECNが、順方向および逆方向にて用いられている)場合には知ることはできない。
【0035】
第1のテストパケットの送信に応答して、セッションセンダは、セッションリフレクタに到達した最終フォワードDSCPおよびECN、および最終リバースDSCPおよびECNを有する第2のテストパケットを受信する(ブロック307)。第1のテストパケットおよび第2のテストパケットのそれぞれの順方向および逆方向の送信は、同一のテストセッションで生じる。テストセッションは開いたままであり、このプロセスは、順方向および逆方向に使用されるDSCPおよびECNの別個のセットを用いて、任意の数のDSCPおよびECNの組み合わせを反復することができる。第2のテストパケットは、第1のテストパケットに応答して送信されるが、テストパケットの送信および受信は、別々のプロセスによって並列に処理することができる。このプロセスは、分かりやすくするために単一のプロセスとして示される。しかしながら、セッションリフレクタによって返されるテストパケットは、テストパケットのシリアル処理に限定されず、任意の順序で処理することができる。
【0036】
いくつかの実施形態では、受信した第2のテストパケットが有効なテストパケットであるかどうかのチェックを行ってよい(ブロック309)。有効性のチェックは、受信した第2のテストパケットのコンテンツおよびフォーマットを認証または同様に分析することができる。第2のテストパケットが有効でない場合、第1のテストパケットを再送信することができる。有効な応答の第2テストパケットを得るために、第1のテストパケットを再送する試行回数に制限を設けてよい。パケットが有効である場合、または有効性のチェックが行われない場合、プロセスは、第2のテストパケットから最終フォワードおよび最終リバースDSCPおよびECNを受け取る(ブロック311)。この情報は、テストされた各DSCPおよびECNの組み合わせの成功と失敗の追跡を可能にするために、どのデータ構造にも関連付けられて格納されることができる。テストパケットのセットが送受信される場合、セットのそれぞれは、別個にまたはグループとして受け取られおよび分析されてもよい。
【0037】
次いで、フォワードおよびリバースDSCPおよびECNの組合せの全てがテストされたかどうかの判定が行われる(ブロック317)。そうであれば、指定されたDSCPおよびECNの組合せのすべてをテストするプロセスが完了する(ブロック319)。追加のDSCPおよびECNの組み合わせが順方向または逆方向のいずれかでテストが残っている場合、次のDSCPおよびECNの組み合わせがテストされると決定される(ブロック301)。次に、DSCPおよびECNの指定されたサブセット(すべてのDSCPおよびECNの組み合わせまたはそのサブセットを含むことができる)がすべてテストされるまで、同一のテストセッション(すなわち、同一のTCP接続およびTWAMPテストセッション)内で処理が継続される。
【0038】
図4は、TWAMPのセッションリフレクタのためのプロセスの一実施形態のフローチャートである。セッションリフレクタはサーバによって設定される。セッションリフレクタは、テストセッション内でセッションセンダから第1のテストパケットを受信する(ブロック401)。上述したように、第1のテストパケットは、テストパケットのセットの1つであることができるが、それぞれがセッションリフレクタで受信されたときに別個に処理される。いくつかの実施形態(不図示)では、第1のテストパケットを検証することができ、有効でない場合、第1のテストパケットを再送信する要求を行ってよい。セッションリフレクタは、受信した第1テストパケットを検査し、順方向の最終DSCPおよびECNを識別して受け取られる(ブロック403)。次に、逆方向のための第2のテストパケットにおいて利用されるDSCPおよびECNのセットが識別される(ブロック405)。逆方向で使用されるDSCPおよびECNは、受信された第1のテストパケットのペイロードまたは同様のセクションに存在することができる。構成が中央コントローラまたはCLIを介するものなどの他の実施形態では、リバースDSCPおよびECNは、サーバによって提供され得るか、またはセッションリフレクタで同様に構成される。
【0039】
次いで、セッションリフレクタによって第2のテストパケットが生成される(ブロック407)。逆方向の決定されたDSCPおよびECNは、他の関連情報とともに第2のテストパケットに挿入することができる。第2のテストパケットに挿入される情報は、第1のテストパケットの最終フォワードDSCPおよびECNを含むことができ、それによって逆方向のテストとは別に順方向の結果を報告する。第1のテストパケットの最終フォワードDSCPおよびECNは、第2のテストパケットのペイロードに挿入することができる。次いで、生成された第2のテストパケットは、プロセスの前の反復と同様に順方向に対して使用されたのと同じテストセッションでセッションセンダに送信される(ブロック409)。セッションリフレクタがDSCPおよびECNモニタリングをサポートしない実施形態では、別個のリバースDSCPおよびECNの識別は実行されず、セッションリフレクタによって受信されたのと同じDSCPおよびECNが応答メッセージで利用される。
【0040】
図5は、TWAMPのセッションセンダのエンティティのためのプロセスの1つの例示的な実施形態のフローチャートである。このプロセスは、テストセッションの実施例である。この実施例では、セッションセンダは、最初リバースDSCPおよびECNを含むペイロードと、最初フォワードDSCPおよびECNを有するIPヘッダとを含む第1のテストパケットを生成する(ブロック501)。いくつかの実施形態では、第1のテストパケットは、同一のDSCPおよびECNを有する任意の数のテストパケットを有するテストパケットのセットの一部であってもよい。ペイロードに配置されたDSCPおよびECNは、逆方向のテストに使用される。IPヘッダのDSCPおよびECNは、順方向のテストのためのものである。次いで、第1のテストパケットは、セッションリフレクタへ送信される(ブロック503)。第1のテストパケットに応答して、セッションリフレクタは、第2のテストパケットを返す(ブロック505)。第2のテストパケットは、第1のテストパケットから順方向にてセッションリフレクタによって受信された実際のDSCPおよびECNを識別する最終フォワードDSCPおよびECNをペイロードに含み、これは、第1のセッションセンダから送信された最初フォワードDSCPおよびECNと比較されることができる。第2のテストパケットのIPヘッダは、最終リバースDSCPおよびECNを含む。最終リバースDSCPおよびECNは、第1のテストパケットに含まれていた期待される最初リバースDSCPおよびECNと比較することができる。最終フォワードおよびリバースDSCPおよびECNが、最初フォワードおよびリバースDSCPおよびECNと異なる場合、セッションセンダは、所与のDSCPとECNの組み合わせがそれぞれ順方向または逆方向に正しく処理されているかどうかを判定できる。このプロセスは、単一のTWAMPテストセッション内で実行されることができる。
【0041】
図6は、TWAMPのセッションリフレクタのエンティティのための別のプロセスの一実施例のフローチャートである。このプロセスは、
図5のセッションセンダのプロセスを補完する実施例である。プロセスはセッションリフレクタによって実装される。セッションリフレクタは、セッションセンダから第1のテストパケットを受信する(ブロック601)。第1のテストパケットは、リバーステストに用いられる最初リバースDSCPおよびECNを有するペイロードを含む。IPヘッダは、順方向にてDSCPとECNが変更されずに転送されているかどうかを確認するためにセッションセンダに返すことができる最終フォワードDSCPおよびECNであるDSCPおよびECNの第2のセットを有する。
【0042】
セッションリフレクタは、セッションセンダから受信したメッセージのペイロードに指定された最初リバースDSCPおよびECNを含むIPヘッダを有する第2のテストパケットを生成する(ブロック603)。第2のテストパケットは、受信した第1のテストパケットのIPヘッダからの最終フォワードDSCPおよびECNも含む。これは、セッションセンダによりチェックされる第2のテストパケットのペイロードに配置することができる。第2のテストパケットが完了すると、それをセッションセンダへ送信することができる(ブロック605)。
【0043】
図7は、セッションセンダのTWAMPのためのさらなるプロセスの別の例示的な実施形態のフローチャートである。この代替の実施形態では、逆方向のテストのためのDSCPおよび/またはECNは、第1のテストパケットでは送信されない。代わりに、制御クライアント/セッションセンダおよびサーバ/リフレクタによって別個にネゴシエートされる。この場合、セッションセンダとセッションリフレクタとの間で利用されるDSCPおよびECNは、TWAMPの制御メッセージの交換または同様の機構の使用によってネゴシエートされる(ブロック701)。次いで、第1のテストパケットは、合意された順方向の最初フォワードDSCPおよびECNを使用して、セッションセンダにより生成される(ブロック703)。合意された最初フォワードDSCPおよびECNを有する第1のテストパケットは、次に、シーケンス番号と共にセッションリフレクタに送信される(ブロック705)。ネゴシエートされたDSCPとECNの組み合わせは、同じテストセッション内で送信される任意の数のテストパケットに利用できるが、テストパケットが生成されるたびにシーケンス番号が上がるであろう。次いで、同じシーケンス番号を有する第2のテストパケットがセッションリフレクタによって返され、セッションセンダによって受信される(ブロック707)。第2のテストパケットは、シーケンス番号を使用して第1のテストパケットに関連付けられる(ブロック709)。関連付けられた検証は、セッションセンダで実行されることができる。逆方向にて利用されるDSCPおよびECNは、同じであっても別個にネゴシエートされてもよい。
【0044】
図8は、TWAMPのセッションリフレクタのエンティティのためのさらなるプロセスの別の例示的な実施形態のフローチャートである。この代替の実施形態では、逆方向テストのためのDSCPおよびECNは、第1のテストパケットでは送信されない。代わりに、制御クライアント/セッションセンダおよびサーバ/セッションリフレクタによって別個にネゴシエートされる。これは、
図7のセッションセンダのためのプロセスを補完する。この場合、セッションセンダとセッションリフレクタとの間で利用されるリバースDSCPとECNは、TWAMPの制御メッセージの交換または同様のメカニズムを使用してネゴシエートされる(ブロック801)。次いで、第1のテストパケットは、順方向の合意済の最初DSCPおよびECNを使用して、セッションリフレクタにより受信される(ブロック803)。次に、合意済みのリバースDSCPおよびECNを有する第2のテストパケットは、受信された第1のテストパケット内のシーケンス番号を使用してセッションリフレクタによって生成される(ブロック805)。ネゴシエートされたDSCPおよびECNは、同じテストセッション内でテストされる任意の数のテストパケットに利用できる。ただし、テストパケットが区別されるように、各テストパケットが生成されるたびに、シーケンス番号が進められる。次いで、同じシーケンス番号を有する第2のテストパケットがセッションリフレクタによって送信される(ブロック807)。
【0045】
図9は、セッションセンダとセッションリフレクタの間のテストセッションの例である。この例では、セッションセンダがセッションリフレクタと通信するシナリオを示す。セッションセンダとセッションリフレクタは、セッションセンダとセッションリフレクタとの間にTCP(Transmission Control Protocol)などの接続を確立する。セッションセンダは、DSCPおよびECNモニタ(例えば、テストセッションマネージャまたは同様のコンポーネントの一部として)を含む。セッションセンダは、逆方向の最初リバースDSCPおよびECN(例えば、DSCP A1およびECN B1)を有するペイロードと、別のDSCPおよびECNの組み合わせ(例えば、DSCP X1およびECN Y1)を有するIPヘッダを含む第1のテストパケットを生成し、送信する。ルートに沿った第1のテストパケットは、DSCPがZ1になるように変更される。DSCPおよびECNは、任意の中間ネットワークデバイスによって変更されることができる。
【0046】
セッションリフレクタは、IPと、UDPまたはTCPポートを介して第1のテストパケットを受信する。セッションリフレクタは、テストセッションマネージャまたは同様のコンポーネントにDSCPおよびECNパケットプロセッサを含むことができる。セッションリフレクタは、第1のテストパケットペイロードに指定されたDSCPおよびECNを含むIPヘッダを有する第2のテストパケットを生成する。第1のテストパケットのIPヘッダ(例えば、DSCP Z1およびECN Y1)で受信された最終フォワードDSCPおよびECNも、セッションセンダにて検証されるペイロード内にて、第2のテストパケットに加えられる。受信された第1のテストパケットペイロードで指定された最初リバースDSCPおよびECN(例えば、DSCP A1およびECN B1)は、送信された第2のテストパケット内のIPヘッダのDSCPおよびECNとして利用される。送信された第2のテストパケットは、セッションセンダにて受信される。この例では、IPヘッダ内のECNが変更されている(例えば、ECN C1)。したがって、順方向および逆方向のテストは分離され、セッションセンダは順方向および逆方向に固有のDSCPおよびECNの変更を識別することができる。
【0047】
これやその他のフロー図における動作は、他の図の例示的な実施形態を参照して説明される。しかしながら、フロー図の動作は、他の図を参照して論じられたもの以外の本発明の実施形態によって実行することができ、これらの他の図を参照して説明された本発明の実施形態は、フロー図を参照して説明されたものとは異なる動作を実行可能である。
【0048】
アーキテクチャ
図10Aは、本発明のいくつかの実施形態に係る、例示的なネットワーク内のネットワークデバイス(ND)の間の接続を示し、3つのNDの実装例を示す。
図10Aは、ND1000A−H、およびそれらの接続性を、AB、BC、CD、DE、EF、FG及びAG間の線、並びにHとA、C、D及びGそれぞれとの間の線により示している。これらのNDは物理デバイスであり、これらのND間の接続は、無線または有線(リンクとも呼ばれる)であってよい。ND1000A、E、およびFから延びる追加の線は、これらのNDがネットワークの入口点および出口点として機能することを示している(したがって、これらのNDは、エッジNDと呼ばれ、他のNDはコアNDと呼ばれる)。
【0049】
図10Aの例示的なNDの実装のうちの2つは、1)カスタムASIC(Application−Specific Integrate−Circuits)および専用のオペレーティングシステム(OS)を使用する専用ネットワークデバイス1002、および、2)COTS(Common Off−The−Shelf)プロセッサおよび標準OSを使用する汎用ネットワークデバイス1004である。
【0050】
専用ネットワークデバイス1002は、計算リソース1012(通常、1または複数のプロセッサのセットを含む)、転送リソース1014(通常、1または複数のASICおよび/またはネットワークプロセッサを含む)、物理ネットワークインターフェース(NI)1016(しばしば、物理ポートと呼ばれる)、および、ネットワーキングソフトウェア1020を格納した非一時的マシン読み取り可能記憶媒体1018を含む。物理NIは、ND1000A−H間の接続によって示されるような,ネットワーク接続(例えば、無線ネットワークインターフェースコントローラ(WNIC)を介して無線接続すること、またはネットワークインターフェイスコントローラ(NIC)に接続された物理ポートにケーブルを差し込むことなど)を行うNDのハードウェアである。動作中、ネットワーキングソフトウェア1020は、ネットワーキングハードウェア1010によって実行され、1または複数のネットワーキングソフトウェアインスタンス1022のセットをインスタンス化してよい。ネットワーキングソフトウェアインスタンス1022のそれぞれ、および、ネットワークインスタンスを実行するネットワーキングハードウェア1010の一部(ネットワーキングソフトウェアインスタンスに専用のハードウェアおよび/またはそのネットワーキングソフトウェアインスタンスによって他のネットワーキングソフトウェアインスタンス1022と一時的に共有されるハードウェアのタイムスライスであってもよい)は、別個の仮想ネットワークエレメント1030A−Rを形成する。仮想ネットワークエレメント(VNE)1030A〜Rのそれぞれは、所与の仮想ネットワークエレメント(例えば、1030A)は、制御通信および構成モジュール(例えば、1032A)、1または複数の転送テーブル(例えば、1034A)のセット、および、仮想ネットワークエレメント(例えば、1030A)を実行するネットワーキングハードウェア1010の一部を含むように、制御通信および構成モジュール1032A〜R(ローカル制御モジュールまたは制御通信モジュールとも呼ばれる)および転送テーブル1034A〜Rを含む。
【0051】
ソフトウェア1020は、ネットワーキングハードウェア1010によって実行されると、ネットワーキングハードウェア1010に本発明の1または複数の実施形態の動作を部分ネットワーキングソフトウェアインスタンス1022として実行させるコードを含むことができる。ソフトウェア1020は、サーバ、制御クライアントセッションセンダ、および/またはセッションリフレクタの方法を実装する、DSCPおよびECNモニタおよび/またはDSCPおよびECNパケットプロセッサを包含するテストセッションマネージャ1064Aを含む。一実施形態では、テストセッションマネージャ1064Aは、サーバまたは制御クライアントによって実装され、DSCPおよびECNモニタリングは、セッションセンダによって実装され、DSCPおよびECNパケットプロセッサはセッションリフレクタによって実装される。
【0052】
専用ネットワークデバイス1002は、大抵、物理的および/または論理的に、1)制御通信および構成モジュール1032A−Rを実行するコンピューティングリソース1012を含むND制御プレーン1024(制御プレーンと呼ばれることもある)、および、2)転送テーブル1034A−Rおよび物理NI1016を利用する転送リソース1014を含むND転送プレーン1026(転送プレーン、データプレーン、またはメディアプレーンと呼ばれることもある)、を含むように考慮される。例として、NDがルータ(または、ルーティング機能を実装している)場合、ND制御プレーン1024(制御通信および構成モジュール1032A〜Rを実行する計算リソース1012)は、通常、データ(例えば、パケット)がどのようにルーティングされるべきかを制御し、そのルーティング情報を転送テーブル1034A〜Rに格納することに関与し、ND転送プレーン1026は、物理NI1016上のデータを受信し、転送テーブル1034A〜Rに基づいて物理NI1106のうちの適切なものからそのデータを転送することに関与する。
【0053】
図10Bは、本発明のいくつかの実施形態による専用ネットワークデバイス1002を実装する例示的な方法を示す。
図10Bは、カード1038(通常、ホット・プラガブル)を含む専用ネットワークデバイスを示す。いくつかの実施形態では、カード1038は、2つのタイプ(ND転送プレーン1026(ラインカードと呼ばれることもある)として実装するように動作する1または複数のもの、および、ND制御プレーン1024(制御カードと呼ばれることもある)として実装するように動作する1または複数のもの)であり、代替的な実施形態は、機能を単一のカード上に組み合わせる、および/または、追加のカードタイプ(例えば、1つの追加のタイプのカードは、サービスカード、リソースカード、または、マルチアプリケーションカードと呼ばれる)を含んでよい。サービスカードは、専用の処理(例えば、レイヤ4からレイヤ7のサービス(例えば、ファイアウォール、IPsec(Internet Protocol Security)、SSL(Secure Socket Layer)/TLS(Transport Layer Security)、IDS(Intrusion Detection System)、P2P(peer−to−peer)、VoIP(Voice over IP)セッションボーダーコントローラ、モバイルワイヤレスゲートウェイ(GGSN(Gateway GPRS(General Packet Radio Service) Support Node、EPC(Evolved Packet Core)ゲートウェイ))を提供することができる。例として、サービスカードは、IPsecトンネルを終了させ、付随する認証や暗号化アルゴリズムを実行するために用いられてよい。これらのカードは、バックプレーン1036として示された1または複数の相互接続メカニズムを介して互いに結合される(例えば、ラインカードを結合する第1のフルメッシュ、および、すべてのカードを結合する第2のフルメッシュ)。
【0054】
図10Aに戻ると、汎用ネットワークデバイス1004は、1または複数のプロセッサ1042(大抵、COTSプロセッサである)、および、ネットワークインターフェイスコントローラ1044(NIC;ネットワークインターフェースカードとしても知られる)(物理NI1046を含む)、並びに、ソフトウェア1050を記憶した非一時的なマシン読み取り可能記憶媒体1048の組を備えるハードウェア1040を含む。動作中、プロセッサ1042は、ソフトウェア1050を実行し、1または複数のアプリケーション1064A〜Rの1または複数の組をインスタンス化する。一実施形態では仮想化を実装していないが、代替の実施形態では、仮想化レイヤ1054およびソフトウェアコンテナ1062A〜Rによって表される、異なる形態の仮想化を用いてよい。例えば、そのような別の実施形態の1つは、オペレーティングシステムレベルの仮想化を実装し、その場合、仮想化レイヤ1054は、それぞれがアプリケーション1064A〜1066Rのセットのうちの1つを実行するために使用される複数のソフトウェアコンテナ1062A〜Rの作成を可能にするオペレーティングシステム(または、基本オペレーティングシステム上で実行するシム)のカーネルを表す。この実施形態では、複数のソフトウェアコンテナ1062A〜R(仮想化エンジン、仮想プライベートサーバ、または、ジャイルとも呼ばれる)は、それぞれユーザ空間インスタンス(通常、仮想メモリ空間)である。これらのユーザ空間インスタンスは、互いに独立しており、オペレーティングシステムが実行されているカーネル空間から分離されている。所与のユーザ空間で実行されているアプリケーションのセットは、明示的に許可されていない限り、他のプロセスのメモリにアクセスできない。そのような代替の実施形態とは別のものは、完全な仮想化を実装し、この場合、1)仮想化レイヤ1054がハイパーバイザ(仮想マシンモニタ(VMM)と呼ばれることもある)、または、ホストオペレーティングシステムの上で実行されているハイパーバイザを表し、および、2)ソフトウェアコンテナ1062A〜Rがそれぞれ、ハイパーバイザによって実行されている仮想マシンと呼ばれる綿密に隔離された形態のソフトウェアを表し、ゲストオペレーティングシステムを含んでよい。仮想マシンは、物理的で非仮想化されたマシン上で実行されているかのうようにプログラムを実行する物理マシンのソフトウェア実装であり、いくつかのシステムでは、最適化の目的のために仮想化の存在をオペレーティングシステムやアプリケーションが知ることを可能となる準仮想化を提供しているが、「ベアメタル(bare metal)」ホスト電子デバイス上で実行していることとは対照的に、アプリケーションは、一般的には、仮想マシン上で実行しているかを知らない。
【0055】
1または複数のアプリケーション1064A〜Rの1または複数のセット、および、仮想化レイヤ1054およびソフトウェアコンテナ1062A−Rのインスタンス化は、実装されている場合には、ソフトウェアインスタンス1052と総称される。アプリケーション1064A、実装されている場合には対応するソフトウェアコンテナ1062A〜R、および、それらを実行するハードウェア1040の一部(ソフトウェアコンテナ1062A〜Rによって一時的に共有されるハードウェアの実行および/またはタイムスライスに専用のハードウェアである)の各セットは、別個の仮想ネットワークエレメント1060A〜Rを形成する。
【0056】
仮想ネットワークエレメント1060A〜Rは、例えば、制御通信および構成モジュール1032Aおよび転送テーブル1034Aと同様に、仮想ネットワークエレメント1030A〜Rへの同様の機能を実行する(ハードウェア1040の仮想化は、NFV(Network Function Virtualization)と呼ばれることもある)。したがって、NFVは、データセンター、ND、およびCPE(Customer Premise Equipment)に配置できる、業界標準の大容量サーバハードウェア、物理スイッチ、および物理ストレージに、多くのネットワーク装備のタイプを統合するために用いられてよい。しかし、本発明の異なる実施形態では、1または複数のソフトウェアコンテナ1062A〜Rを別々に実装してよい。例えば、本発明の実施形態は、1つのVNE1060A〜Rに対応する各ソフトウェアコンテナ1062A〜Rを用いて図示されているが、代替の実施形態は、この対応関係をより細かいレベルの粒度(例えば、ラインカード仮想マシンはラインカードを仮想化し、制御カード仮想マシンは制御カードを仮想化する、など)で実装してよい。ソフトウェアコンテナ1062A〜RのVNEへの対応に関連して本明細書に記載された技術は、そのような細かいレベルの粒度が使用される実施形態にも適用されることを理解されたい。
【0057】
特定の実施形態では、仮想化レイヤ1054は、物理イーサネットスイッチと同様の転送サービスを提供する仮想スイッチを含む。具体的には、この仮想スイッチは、ソフトウェアコンテナ1062A〜RとNIC1044との間、および任意でソフトウェアコンテナ1062A〜Rの間で、トラフィックを転送する。さらに、この仮想スイッチは、ポリシーが互いに通信することを許可していない(例えば、VLAN(Virtual Local Area Network)を尊重することにより)VNE1060A〜Rの間のネットワークの分離を強制してよい。
【0058】
ソフトウェア1050は、プロセッサ1042によって実行されると、プロセッサ1042に、本発明の1または複数の実施形態の動作を部分ソフトウェアコンテナ1062A〜Rとして実行させるコードを含むことができる。ソフトウェア1050は、サーバ、制御クライアント、セッションセンダ、および/または、セッションリフレクタの方法を実装する、DSCPおよびECNモニタ、および/または、DSCPおよびECNパケットプロセッサを包含するテストセッションマネージャ1065Aを含むことができる。一実施形態では、テストセッションマネージャ1064Aはサーバまたは制御クライアントによって実装され、DSCPおよびECNモニタリングはセッションセンダによって実装され、DSCPおよびECNパケットプロセッサはセッションリフレクタによって実装される。
【0059】
図10Aにおける第3の例示的なNDの実装は、単一のND、または、ND内の単一のカードに、カスタムASIC/専有OSおよびCOTSプロセッサ/標準OSの両方を含むハイブリッドネットワークデバイス1006である。そのようなハイブリッドネットワークデバイスの特定の実施形態では、プラットフォームVM(すなわち、専用ネットワークデバイス1002の機能を実装するVM)は、ハイブリッドネットワークデバイス1006に存在するネットワーキングハードウェアに準仮想化を提供することができる。
【0060】
NDの上記例示の実装に関わらず、NDにより実装された複数のVNEのうちの1つが考慮されている(例えば、VNEのうちの1つだけが所との仮想ネットワークの一部である)場合や、単一のVNEのみがNDにより現在実装されている場合は、短期間ネットワークエレメント(NE)は、そのVNEを参照するために使用されることがある。上記例示の実装のすべてにおいても、VNE(例えば、VNE1030A〜R、VNE1060A〜R、およびハイブリッドネットワークデバイス1006におけるVNE)のそれぞれは、物理NI(例えば、1016、1046)上でデータを受信し、物理NI(例えば、1016、1046)のうちの適切なものからそのデータを転送する。例えば、IPルータ機能を実装しているVNEは、IPパケットを、IPパケット内のIPヘッダ情報の一部に基づいて転送する。ここで、IPヘッダ情報は、送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポート(ここで、「送信元ポート」および「宛先ポート」は、NDの物理ポートとは対照的にプロトコルポートを指す)、トランスポートプロトコル(例えば、UDP(User Datagram Protocol)、TCP(Transmission Control Protocol)、およびDSCP(Differentiated Services Code Point))の値を含む。
【0061】
図10Cは、本発明のいくつかの実施形態に従ってVNEを結合する様々な例示的な方法を示す。
図10Cは、ND1000AおよびND1000HのVNE1070H.1に実装されたVNE1070A.1−1070A.P(および、オプションでVNE1070A.Q〜1070A.R)を示す。
図10Cでは、VNE1070A.1−Pは、ND1000Aの外部からパケットを受信し、ND1000Aの外部にパケットを転送できるという意味で、互いに分離している。VNE1070A.1は、VNE1070H.1と結合されているため、それぞれのND間でパケットを通信する。VNE1070A.2〜1070A.3は、オプションとして、ND1000Aの外部にパケットを転送することなく、パケットを転送してよい。VNE1070A.Pは、オプションとして、VNE1070A.Qの後にVNE1070A.Rを含むVNEの連鎖内の最初のものであってもよい(これは、動的サービスチェーニング(dynamic service chaining)と呼ばれることがあり、一連のVNE内の各VNEは、異なるサービス(例えば、1または複数のレイヤ4〜7)ネットワークサービスを提供する)。
図10Cは、VNE間の様々な例示的な関係を示しているが、代替の実施形態は、他の関係(例えば、より多くの/より少ないVNE、より多くの/より少ない動的サービスチェーン、いくつかの共通のVNEといくつかの異なるVNEを有する複数の異なる動的サービスチェーン)をサポートしてよい。
【0062】
図10AのNDは、例えば、インターネットまたはプライベートネットワークの一部を形成してよい。また、他の電子デバイス(不図示;ワークステーション、ラップトップ、ネットブック、タブレット、パームトップ、携帯電話、スマートフォン、ファブレット、マルチメディアフォン、VoIP(Voice over Internet Protocol)フォン、端末、ポータブルメディアブレーヤ、GPSユニット、ウェアラブルデバイス、ゲーミングシステム、セットトップボックス、インターネットへの接続が可能な家電製品を含むエンドユーザデバイス)が、ネットワーク(例えば、インターネット、または、インターネット上に配置された(例えば、トンネリングされて)VPN(Virtual Private Network))を超えて互いに通信し、および/または、コンテンツおよび/またはサービスにアクセスするために、ネットワークと結合されてよい(直接的、または、アクセスネットワークのような他のネットワークを介して)。そのようなコンテンツおよび/またはサービスは、通常、サービス/コンテンツプロバイダまたはP2P(peer−to−peer)サービスに参加する1または複数のエンドユーザデバイス(不図示)に属する1または複数のサーバ(不図示)により提供され、例えば、公開されているウェブページ(例えば、フリーコンテンツ、店頭、検索サービス)、プライベートウェブページ(例えば、Eメールサービスを提供するユーザ名/パスワードにてアクセスされるウェブページ)、および/またはVPNを介した企業ネットワークを含んでよい。例えば、エンドユーザデバイスは、サーバとして動作している電子デバイスに結合された他のエッジNDと(例えば、1または複数のコアNDを介して)結合されたエッジNDと(例えば、アクセスネットワークと(有線または無線で)結合された加入者宅内機器を介して)結合されてよい。しかしながら、計算および格納の仮想化を通じて、
図10AにおいてNDとして動作している1または複数の電子デバイスは、そのような1または複数のサーバをホストしてもよい(例えば、汎用ネットワークデバイス1004の場合、1または複数のソフトウェアコンテナ1062A〜Rはサーバとして動作してよく、ハイブリッドネットワークデバイス1006においても同様であり、専用ネットワークデバイス1002の場合、そのような1または複数のサーバは計算リソース1012により実行される仮想化レイヤ上にて動作されることができる)。このような場合、サーバは、NDのVNEと共同設置されていると言われる。
【0063】
仮想ネットワークは、ネットワークサービス(例えば、L2および/またはL3サービス)を提供する(
図10Aのような)物理ネットワークの論理的な抽象化である。仮想ネットワークは、オーバーレイネットワークを作成するためのトンネル(例えば、GRE(Generic Routing Encapsulation)、L2TP(Layer 2 tunneling Protocol)、IPSec)を使用するIP(Internet Protocol)ネットワークのような、L3)を用いるアンダーレイネットワークの上の、ネットワークサービス(例えば、レイヤ2(L2、データリンクレイヤ)および/またはレイヤ3(L3、ネットワークレイヤ)サービス)を提供するオーバーレイネットワーク(ネットワーク仮想化オーバーレイと呼ばれることもある)として実施することができる。
【0064】
NVE(Network Virtualization Edge)は、アンダーレイネットワークのエッジに位置し、ネットワーク仮想化の実装に加わる。NVEのネットワーク側は、アンダーレイネットワークを使用して、他のNVEとの間でフレームをトンネリングする。NVEの外向き側は、ネットワーク外のシステムとの間でデータを送受信する。NVI(Virtual Network Instance)は、NVE上の仮想ネットワークの特定のインスタンスである(例えば、ND上のNE/VNE、ND上のNE/VNEの一部、そのNE/VNEは、エミュレーションを介して複数のVNEに分割される)。1または複数のVNIは、NVE上にインスタンス化することができる(例えば、ND上の異なるVNEとして)。VAP(Virtual Access Point;仮想アクセスポイント)は、外部システムを仮想ネットワークに接続するためのNVE上の論理接続ポイントである。VAPは、論理インタフェース識別子(例えば、VLAN ID)により識別される物理的または仮想的なポートとすることができる。
【0065】
ネットワークサービスの例は、以下を含む。1)イーサネットLANエミュレーションサービス(IETF(Internet Engineering Task Force)MPLS(Multiprotocol Label Switching)に類似するイーサネットベースのマルチポイントサービス、または、EVPN(Ethernet VPN)サービス)であり、外部システムは、アンダーレイネットワークの上のLAN環境によりネットワークを介して相互接続される(例えば、NVEは、そのような異なる仮想ネットワークのための別個のL2 VNI(仮想スイッチングインスタンス)や、アンダーレイネットワークの上のL3(例えば、IP/MPLS)トンネリングカプセル化を提供する)。2)仮想化されたIP転送サービス(サービス定義の観点からIETF IP VPN(例えば、BGP(Border Gateway Protocol)/MPLS IPVPN)に類似する)であり、外部システムは、アンダーレイネットワークの上のL3環境によりネットワークを介して相互接続される(例えば、NVEは、そのような異なる仮想ネットワークのための別個のL3 VNI(転送およびルーティングインスタンス)や、アンダーレイネットワークの上のL3(例えば、IP/MPLS)トンネリングカプセル化を提供する)。ネットワークサービスは、サービス品質の機能(例えば、トラック分類マーキング、トラフィック調整、およびスケジューリング)、セキュリティ機能(例えば、不正なルートアナウンスメントを回避するために、ネットワーク上の攻撃から加入者宅内を保護するためのフィルタ)、および、管理機能(例えば、完全な検知と処理)を含んでもよい。
【0066】
図10Dは、
図10Aの各ND上の単一のネットワークエレメントを有するネットワークを示し、この単純な転送アプローチの中では、従来の分散型アプローチ(従来のルータで一般的に使用されている)と、本発明の実施形態に係る、到達可能性と転送情報(ネットワーク制御とも呼ばれる)を維持するための集中化されたアプローチとを対比させる。具体的には、
図10Dは、
図10AのND1000A〜Hと同じ接続性を有するネットワークエレメント(NE)1070A〜Hを示す。
【0067】
図10Dは、分散型アプローチ1072がNE1070A〜Hを介して到達可能性および転送情報を生成するための能力を分散している。言い換えると、ネイバー発見およびトポロジ発見の処理が分散されている。
【0068】
例えば、専用ネットワークデバイス1002が用いられている場合、ND制御プレーン1024の制御コミュニケーションおよび構成モジュール1032A〜Rは、通常、到達可能性および転送情報モジュールを含み、1または複数のルーティングプロトコル(例えば、BGP(Border Gateway Protocol)のような外部ゲートウェイプロトコル、IGP(Interior Gateway Protocol)(例えば、OSPF(Open Shortest Path First)、IS−IS(Intermediate System to Intermediate System)、RIP(Routing Information Protocol))、LDP(Label Distribution Protocol)、RSVP(Resource Reservation Protocol)、およびRSVP−TE(Traffic Engineering)(LSPトンネルに対するRSVPへの拡張、他のNEと通信してルートを交換し、1または複数のルーティングメトリックに基づいてこれらのルートを選択するGMPLS(Generalized Multi−Protocol Label Switching)シグナリングRSVP−TE)を実装する。したがって、NE1070A−H(例えば、制御通信および構成モジュール1032A〜Rを実行する計算リソース1012)は、ネットワーク内の到達可能性を分散的に決定し、それらのそれぞれの転送情報を計算することにより、データ(例えば、パケット)がどのようにルーティングされるべきかを制御すること(例えば、データの次のホップおよびそのデータの送信物理NI)に関与するための能力を実行する。ルートおよび隣接は、ND制御プレーン1024上の1または複数のルーティング構造(例えば、RIB(Routing Information Base)、LIB(Label Information Base)、1または複数の隣接構造)に格納される。ND制御プレーン1024は、ルーティング構造に基づいて、情報(例えば、隣接性および経路情報)を有するND転送プレーン1026をプログラムする。例えば、ND制御プレーン1024は、隣接性および経路情報を、ND転送プレーン1026上の1または複数の転送テーブル1034A〜R(例えば、FIB(Forwarding Information Base)、LFIB(Label Forwarding Information Base)、および1または複数の隣接性構造)にプログラムする。レイヤ2転送に関し、NDは、データのレイヤ2情報に基づいてそのデータを転送するために用いられる1または複数のブリッジテーブルを格納することができる。上記の例では、専用ネットワークデバイス1002が用いるが、同じ分散型アプローチ1072は、汎用ネットワークデバイス1004やハイブリッドネットワークデバイス1006上に実装することができる。
【0069】
図10Dは、選択された宛先にトラフィックを転送する下層のシステムから、どこにトラフィックが送信されるかを決定するシステムを切り離す集中型アプローチ1074(SDN(Software Defined Networking)としても知られている)を示す。図示された集中型アプローチ1074は、中央制御プレーン1076(SDN制御モジュール、コントローラ、ネットワークコントローラ、OpenFlowコントローラ、SDNコントローラ、制御プレーンノード、ネットワーク仮想化機関とも呼ばれる)内の到達可能性および転送情報の生成の機能を有し、したがって、ネイバー発見およびトポロジ発見のプロセスが集中化される。集中型制御プレーン1076は、NE1070A〜1070E(スイッチ、転送エレメント、データプレーンエレメント、またはノードとも呼ばれる)を含むデータプレーン1080(インフラストラクチャ層、ネットワーク転送プレーン、または転送プレーン(ND転送プレーンと混同してはならない)とも呼ばれる)とのサウスバウンドインターフェース1082を有する。集中型制御プレーン1076は、ネットワーク内の到達可能性を判定し、サウスバウンドインターフェース1082(OpenFlowプロトコルを用いてもよい)を介して、データプレーン1080のNE1070A〜Hにその転送情報を配信する集中型の到達可能性および転送情報モジュール1079を含むネットワークコントローラ1078を含む。したがって、ネットワークインテリジェンスは、通常、NDとは別個の電子デバイス上で実行する集中型制御プレーン1076に集約される。
【0070】
例えば、専用ネットワークデバイス1002がデータプレーン1080で用いられる場合、ND制御プレーン1024の制御通信および構成モジュール1032A〜Rのそれぞれは、通常、サウスバウンドインターフェース1082のVNE側を提供する制御エージェントを含む。この場合、ND制御プレーン1024(制御通信および構成モジュール1032A〜Rを実行している計算リソース1012)は、集中型の到達可能性および転送情報モジュール1079から転送情報(場合によっては到達可能性情報)を受信するために、集中制御プレーン1076と通信する制御エージェントを介して、データ(例えば、パケット)がどのようにルーティングされるべきかを制御すること(例えば、データの次のホップおよびデータの出力する物理NI)に関与する機能を実行する(本発明のいくつかの実施形態では、制御通信および構成モジュール1032A〜Rは、集中型制御プレーン1076と通信することに加えて、到達可能性を決定することおよび/または転送情報を計算することにおいて何らかの役割を果たしてもよいが、分散型アプローチの場合よりも少ない。そのような実施形態は、一般に、集中型アプローチ1074に該当すると考えられるが、ハイブリッド型アプローチと見なすこともできる)。
【0071】
上記の例では、専用ネットワークデバイス1002を使用しているが、同じ集中型アプローチ1074は、汎用ネットワークデバイス1004(例えば、VNE1060A〜Rの各々は、集中型到達可能性および転送情報モジュール1079から転送情報(場合によっては到達可能性情報)を受信するために集中型制御プレーン1076と通信することにより、データ(例えば、パケット)がどのようにルーティングされるべきか(例えば、データの次のホップおよび出力物理NI)を制御するための機能を実行する。本発明のいくつかの実施形態では、VNE1060A〜Rは、集中型制御プレーン1076と通信することに加えて、到達可能性を決定すること、および/または、転送情報を計算することにおいて何らかの役割を果たしてもよいが、分散型アプローチの場合よりも少ない。)、およびハイブリッドネットワークデバイス1006で実装されることができる。 実際に、SDN技術の使用は、SDNソフトウェアを実行することができるインフラストラクチャを提供することにより、NFVがSDNをサポートすることができるため、汎用ネットワークデバイス1004またはハイブリッドネットワークデバイス1006の実装で通常使用されるNFV技術を向上させることができ、NFVとSDNは両方ともコモディティサーバハードウェアと物理スイッチを利用することを意図する。
【0072】
いくつかの実施形態では、集中型制御プレーン1064は、ネットワークデバイスによって実行されると、ネットワークデバイスに、テストセッションマネージャまたはオーケストレータ1081の一部として、本発明の1または複数の実施形態の動作を実行させるコードを含むことができる。セストセッションマネージャまたはオーケストレータ1081は、上述のようにセッションセンダおよびセッションリフレクタを構成する。
【0073】
図10Dはまた、集中型制御プレーン1076がアプリケーション1088に存在するアプリケーション層1086へのノースバウンドインターフェース1084を有することを示す。集中型制御プレーン1076は、アプリケーション1088に対する仮想ネットワーク1092(トン理転送プレーン、ネットワークサービス、または(データプレーン1080のNE1070A〜Hがアンダーレイネットワークである)オーバーレイネットワークとも呼ばれる)を形成する能力を有する。したがって、集中型制御プレーン1076は、すべてのNDおよび設定されたNE/VNEの全体像を維持し、(物理ネットワークがハードウェア(ND、リンク、またはNDコンポーネント)の障害、追加、または削除によって変更された場合、これらのマッピングを維持することも含めて)仮想ネットワークを基盤となるNDに効率的にマッピングする。
【0074】
図10Dは、集中型アプローチ1074とは別個の分散型アプローチ1072を示しているが、ネットワーク制御の取り組みは、本発明の特定の実施形態において、異なる方法で分散されてもよいし、2つが組み合わせられてもよい。例えば、1)実施形態は、一般に、集中型アプローチ(SDN)1074を用いてよいが、NEに委譲された特定の機能を有する(例えば、分散型アプローチは、障害監視、性能監視、保護スイッチング、ネイバーおよび/またはトポロジ発見のためのプリミティブのうちの1または複数を実装するために用いられてよい)、または、2)本発明の実施形態は、集中型制御プレーンおよび分散型プロトコルの両方を介してネイバー発見およびトポロジ発見を実行してよく、それらが一致しない場合に例外を発生させるために比較される。そのような実施形態は、一般に、集中型アプローチ1074に該当すると考えられるが、ハイブリッド型アプローチと見なすこともできる。
【0075】
図10Dは、各ND1000A〜Hが単一のNE1070A〜Hを実装する単純なケースを示しているが、
図10Dを参照して説明したネットワーク制御アプローチは、1または複数のND1000A〜Hが複数のVNE(例えば、VNE1030A〜R、VNE1060A〜R、ハイブリッドネットワークデバイス1006内のVNE)を実装するネットワークでも機能すると理解されるべきである。これに代えてまたは加えて、ネットワークコントローラ1078は、単一のNDで複数のVNEの実装をエミュレートしてもよい。具体的には、単一のNDに複数のVNEを実装する代わりに(またはそれに加えて)、ネットワークコントローラ1078は、仮想ネットワーク1092内の複数のVNEとして単一のND内にVNE/NEの実装を提示してもよい(すべてが仮想ネットワーク1092のうちの同じものにある、それぞれが仮想ネットワーク1092のうちの異なるものにある、もしくはいくつかの組み合わせ)。例えば、ネットワークコントローラ1078は、NDにアンダーレイネットワーク内の単一のVNE(NE)を実装させ、その後、仮想ネットワーク1092に異なるVNEを提示するために、集中型制御プレーン1076内でそのNEのリソースを論理的に分割してよい(オーバーレイネットワーク内のこれらの異なるVNEは、アンダーレイネットワーク内のND上の単一のVNE/NE実装のリソースを共有している)。
【0076】
一方、
図10Eおよび10Fは、ネットワークコントローラ1078が仮想ネットワーク1092のうちの異なるネットワークの一部として存在してよいNEおよびVNEの例示的な抽象をそれぞれ示す。
図10Eは、本発明のいくつかの実施形態に関し、ND1000A〜Hのそれぞれが単一のNE1070A〜Hを実装するが(
図10D参照)、集中型制御プレーン1076は、
図10Dの画像ネットワーク1092のうちの一つにおいて、異なるND(NE1070A〜CおよびGH)内の複数のNEを単一のNE1070Iに(表現するために)抽象化していることを示す。
図10Eは、この仮想ネットワークにおいて、NE1070IがNE1070Dおよび1070Fに結合されており、どちらもまだNE1070Eに結合されていることを示す。
【0077】
図10Fは、本発明のいくつかの実施形態に関し、複数のVNE(VNE1070A.1およびVNE1070H.1)が異なるND(ND1000AおよびND1000H)上に実装され、互いに結合され、
図10Dの仮想ネットワーク1092のうちの1つの中に単一のVNE1070Tとして現れるように、中央制御プレーン1076がこれらの複数のVNEを抽象化した場合を示す。したがって、NEまたはVNEの抽象化は、複数のNDに及ぶことができる。
【0078】
本発明のいくつかの実施形態は、単一のエンティティ(例えば、単一の電子デバイス上で動作するソフトウェアの単一インスタンス)として集中制御プレーン1076を実装するが、代替の実施形態は、冗長性および/または拡張性を目的として、複数のエンティティにわたって機能を広げることができる(例えば、異なる電子デバイス上で動作する複数のインスタンス)。
【0079】
ネットワークデバイス実装と同様に、集中型制御プレーン1076を実行する電子デバイス、ひいては、集中型到達可能性および転送情報モジュール1079を含むネットワークコントローラ1078は、様々な方法で実装されてよい(例えば、専用デバイス、汎用(例えば、COTS)デバイス、または、ハイブリッドデバイス)。これらの電子デバイスは、同様に、計算リソース、1または複数の物理NICのセット、および集中型制御プレーンソフトウェアが格納された非一時的な機械可読記憶媒体を含む。例えば、
図11は、(しばしばCOTSプロセッサである)1または複数のプロセッサ1142、および、ネットワークインターフェイスコントローラ1144(NIC、ネットワークインターフェースカードとも呼ばれる)(物理NI1146を含む)、および集中型制御プレーン(CCP)ソフトウェア1150を格納した非一時的マシン読み取り可能記憶媒体1148のセットを含むハードウェア1140を含む汎用制御プレーンデバイス1104を示す。
【0080】
計算の仮想化を用いる実施形態では、プロセッサ1142は、通常、仮想化レイヤ1154およびソフトウェアコンテナ1162A〜Rをインスタンス化するためにソフトウェアを実行する(例えば、オペレーティングシステムレベルでの仮想化では、仮想化レイヤ1154は、1または複数のアプリケーションの組を実行するためにそれぞれ用いることができる複数のソフトウェアコンテナ1162A〜R(別個のユーザ空間インスタンスを表し、仮想化エンジン、仮想化プライベートサーバ、またはジャイルとも呼ばれる)の作成を可能にするオペレーティングシステム(または、基本オペレーティングシステム上で実行するシム)のカーネルを表す;フル仮想化では、仮想化レイヤ1154は、ハイパーバイザ(VMM(Virtual Machine Monitor)とも呼ばれる)やホストオペレーティングシステムの上で実行しているハイパーバイザを表し、ソフトウェアコンテナ1162A〜Rはそれぞれ、ハイパーバイザにより動作され、ゲストオペレーティングシステムを含んでよい仮想マシンと呼ばれる綿密に隔離された形式のソフトウェアコンテナを表す;パラ仮想化では、仮想マシンで動作するオペレーティングシステムまたはアプリケーションは、最適化の目的で仮想化の存在を認識している可能性がある)。また、計算の仮想化を用いる実施形態では、動作中、CCPソフトウェア1150(CCPインスタンス1176Aとして示される)のインスタンスが仮想化レイヤ1154上のソフトウェアコンテナ1162内で実行される。計算の仮想化が用いられない実施形態では、ホストオペレーティングシステムの上のCCPインスタンス1176Aは、「ベアメタル(bare metal)」汎用制御プレーンデバイス1104上で実行される。CCPインスタンス1176A、および、実装されている場合には仮想化レイヤ1154およびソフトウェアコンテナ1162A〜Rのインスタンス化は、ソフトウェアインスタンス1152と総称される。
【0081】
いくつかの実施形態では、CCPインスタンス1176Aは、ネットワークコントローラインスタンス1178を含む。ネットワークコントローラインスタンス1178は、集中型到達可能性および転送情報モジュールインスタンス1179(オペレーティングシステムにネットワークコントローラ1078のコンテキストを提供し、様々なNEと通信するミドルウェアである)、および、ミドルレイヤ(プロトコル、ネットワーク状況認識、および、ユーザインターフェースなどの様々なネットワーク動作に対して要求されるインテリジェンスを提供する)上のCCPアプリケーションレイヤ1180(アプリケーションレイヤとも呼ばれる)を含む。より抽象的なレベルでは、中央制御プレーン1076内のこのCCPアプリケーション層1180は、仮想ネットワークビュー(ネットワークの論理ビュー)を用いて動作し、ミドルウェアレイヤは、仮想ネットワークから物理ビューへの変換を提供する。
【0082】
いくつかの実施形態では、制御プレーンデバイス1104は、実行されると、制御プレーンデバイスに、テストセッションマネージャまたはオーケストレータ1181の一部として本発明の1または複数の実施形態の動作を実行させるコードを含むことができる。テストセッションマネージャまたはオーケストレータ1181は、上記のようにセッションセンダおよびセッションリフレクタを構成する。
【0083】
集中制御プレーン1076は、CCPアプリケーション層1180の計算および各フローのミドルウェアレイヤマッピングに基づいて、関連するメッセージをデータプレーン1080に送信する。フローは、ヘッダがビットの所与のパターンと一致するパケットのセットとして定義されてよい。この趣旨において、従来のIP転送は、フローが宛先IPアドレスなどで定義されるフローベースの転送でもある。しかし、他の実装形態では、フロー定義に使用されるビットの所与のパターンは、パケットヘッダ内により多くのフィールド(例えば、10以上)を含んでよい。データプレーン1080の異なるND/NE/VNEは、異なるメッセージ、したがって異なる転送情報を受信してよい。データプレーン1080は、これらのメッセージを処理し、適切なフロー情報および対応するアクションを、適切なNE/VNEの転送テーブル(フローテーブルとも呼ばれる)にプログラムし、次いで、NE/VNEは、着信パケットを転送テーブルに表されたフローにマッピングし、転送テーブル内の一致に基づいて転送パケットを転送する。
【0084】
OpenFlowのような標準は、メッセージのために使用されるプロトコルと、パケットを処理するためのモデルとを定義する。パケットを処理するためのモデルは、ヘッダ解析、パケット分類、および転送決定を行うことを含む。ヘッダ解析では、よく知られたプロトコルのセットに基づいてパケットを解釈する方法が説明される。いくつかのプロトコルフィールドは、パケット分類に用いられるであとうマッチ構造(またはキー)を構築するために使用される(例えば、第1のキーフィールドは送信元MAC(Media Access Control)アドレスであり、第2のキーフィールドは宛先MACアドレスである)。
【0085】
パケット分類は、転送テーブルのエントリ(転送テーブルエントリまたはフローエントリとも呼ばれる)が、転送テーブルエントリのマッチ構造またはキーに基づいて、最も一致するパケットを決定することにより、パケットを識別するために、メモリ内のルックアップを実行することを含む。転送テーブルエントリに表された多くのフローがパケットに対応するか一致する可能性がある。この場合、システムは、通常、定義されたスキームに関する多くの中から1つの転送テーブルを決定するように構成される(例えば、一致する第1の転送テーブルを選択すること)。転送テーブルエントリは、マッチ基準(値またはワイルドカードのセット、マッチング機能によって定義される、パケットヘッダにおける特定のフィールドに対するまたはいくつかの他のパケットの内容に対する、パケットのどの部分を特定の値/値/ワイルドカードと比較すべきかの指示)の特定の組と、一致するパケットを受信するためにデータプレーンに対する1または複数のアクションの両方を含む。例えば、アクションは、特定のポートを使用しているパケットに対して、ヘッダをパケットにプッシュしたり、パケットをフラッディングしたり、単純にパケットをドロップするようにしてよい。したがって、特定のTCP(Transmission Control Protocol)宛先ポートを有するIPv4/IPv6パケットの転送テーブルエントリは、これらのパケットをドロップすべきであることを指定するアクションを含むことができる。
【0086】
転送決定を行い、アクションを実行することは、パケット分類の間に識別された転送テーブルエントリに基づいて、パケット上の一致する転送テーブルエントリで識別されたアクションのセットを実行することによって行われる。
【0087】
しかしながら、未知のパケット(例えば、「欠落パケット」または「OpenFlow用語で使用される「マッチミス(match−miss)」)がデータプレーン1080に到着すると、パケット(または、パケットヘッダおよびコンテンツのサブセット)は、通常、集中型制御プレーン1076に転送される。集中型制御プレーン1076は、未知のパケットのフローに属するパケットを受け入れるために、データプレーン1080に転送テーブルエントリをプログラムするであろう。特定の転送テーブルエントリが集中型制御プレーン1076によってデータプレーン1080にプログラムされると、一致するクレデンシャルを持つ次のパケットは、その転送テーブルエントリと一致し、一致したエントリに関連付けられた一連のアクションを実行するであろう。
【0088】
前述の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対するトランザクションのアルゴリズムおよび記号表現に関して示されている。これらのアルゴリズム記述および表現は、データ処理技術の当業者が、当業者の業務の内容を当業者に最も効果的に伝えるために使用される方法である。アルゴリズムは、ここでは一般的に、所望の結果を導くトランザクションの自己一貫したシーケンスであると考えられる。トランザクションは、物理量の物理的操作を必要とするものである。通常、必ずしも必要ではないが、これらの量は、記憶、転送、結合、比較、およびその他の操作が可能な電気信号または磁気信号の形式をとる。これらの信号をビット、値、要素、記号、文字、用語、数字などと呼ぶことは、主に一般的な使用のために、時には便利であることが判明している。
【0089】
しかしながら、これらの用語および類似の用語は全て、適切な物理量に関連し、これらの量に適用される便利なラベルに過ぎないことに留意すべきである。上記の説明から明らかなように特に明記しない限り、明細書の全体にわたって、「処理する」、「計算する」、「算出する」、「決定する」、または「表示する」などの用語を利用する説明は、コンピュータシステムのレジスタおよびメモリ内の物理(電子)量として表されるデータを、コンピュータシステムのメモリ、レジスタ、または他の情報ストレージ、転送または表示装置内の物理量として同様に表される他のデータに操作および変換する、コンピュータシステムまたは類似の電子デバイスのアクション及び処理を指す。
【0090】
本明細書で示されるアルゴリズムおよびディスプレイは、特定のコンピュータまたは他の装置に本質的に関連するものではない。様々な汎用システムが、本明細書の教示に従ってプログラムと共に使用されてもよく、また、必要な方法のトランザクションを実行するためにより特化された装置を構築することが好適であると証明されてもよい。様々なこれらのシステムに必要な構造は、上記の説明から明らかであろう。さらに、本発明の実施形態は、特定のプログラミング言語を参照して説明されてはいない。本明細書で説明する本発明の実施形態の教示を実装するために、様々なプログラミング言語が用いられてもよいことが理解されるであろう。
【0091】
前述の明細書では、本発明の実施形態がその特定の例示的な実施形態を参照して説明された。添付の特許請求の範囲に記載された本発明のより広い趣旨および範囲から逸脱することなく、様々な変更がなされ得ることは明らかであろう。したがって、明細書および図面は、限定的な意味ではなく例示的な意味であるとみなされるべきである。
【0092】
説明の全体を通して、本発明の実施形態は、フロー図を用いて示された。これらのフロー図に記載されているトランザクションおよびトランザクションの順序は、説明の目的でのみ意図されており、本発明の限定として意図されていないことを理解されたい。当業者であれば、添付の特許請求の範囲に記載された本発明のより広い趣旨および範囲から逸脱することなく、フロー図に変形を加えることができることを認識するであろう。