【文献】
S. Sivabalan, et al.,PCEP Extensions for Segment Routing, draft-ietf-pce-segment-routing-05.txt,Internet-Draft,IETF,2015年 5月31日
【文献】
Aguilar Cabadas, Pablo,PCE PROTOTYPE WITH SEGMENT ROUTING AND BGPLS SUPPORT,e-archivo.uc3m.es,Universidad Carlos III de Madrid. Departamento de. Ingenieria Telematica,2014年 7月18日,URL,https://e-archivo.uc3m.es/handle/10016/22342
(58)【調査した分野】(Int.Cl.,DB名)
ネットワークノードの最大セグメント識別子深度(MSD)を集中コントローラにシグナリングするための前記ネットワークノードであって、プロセッサとメモリとを有し、前記メモリは、
前記MSDを、タイプと長さと値とを含む属性TLV(Type Length Value)に符号化することであって、前記タイプは前記MSDのタイプを示し、前記長さは前記MSDの長さを示し、前記値は前記ネットワークノードが課すことが出来るセグメントルーティング(SR)ラベルの最大数であり、SRラベルはSRネットワークを介してパケットを操るために使用され、前記属性TLVの前記タイプは前記MSDがリンクMSDであることを示し、前記属性TLVの前記値は前記ネットワークノードのリンクによってサポートされる最低のMSDである、前記符号化することと、
前記属性TLVを前記集中コントローラに送信することであって、該集中コントローラはSRトンネルを計算するために前記属性TLVを使用し、該SRトンネルのラベルスタック深度は前記ネットワークノードによってサポートされる前記MSDを超えない、前記送信することと、
を前記ネットワークノードに実行させるための前記プロセッサによって実行可能な命令を含む、ネットワークノード。
【発明を実施するための形態】
【0012】
以下の説明は、ネットワークデバイスに関連付けられる最大セグメント識別子深度(MSD)値を呈示するための方法及び装置を説明する。以下の説明では、ロジック実装、オペレーションコード、オペランドを特定する手段、リソースパーティショニング/共有/複製実装、システムコンポーネントのタイプ及び相互関係、並びにロジックパーティショニング/統合選択などの多数の具体的詳細が、本発明の、より完全な理解をもたらすために記載されている。しかしながら、本発明がそのような具体的詳細なしに実践され得ることは、当業者には明らかであろう。他の例では、制御構造、ゲートレベル回路、及び完全なソフトウェア命令シーケンスは、本発明を不明確にしないために、詳細には示されていない。当業者であれば、含まれる説明を用いて、過度の実験を行うことなく適切な機能性を実装することが可能であろう。
【0013】
“1つの実施形態”、“一実施形態”、“一例としての実施形態”などへの本明細書における言及は、説明される実施形態が、特定の特徴、構造、又は特性を含み得るが、あらゆる実施形態が必ずしも当該特定の特徴、構造、又は特性を含まないかもしれないことを示している。さらに、そのような語句は、必ずしも同一の実施形態に言及しているものではない。さらに、特定の特徴、構造、又は特性が、一実施形態に関連して説明されるとき、明示的に説明されるか否かに関わらず、他の実施形態との関連においてそのような特徴、構造、又は特性を作用させることは、当業者の知識の範囲内にあると考えられる。
【0014】
括弧付きの文字及び破線枠のブロック(例えば、大きな破線、小さな破線、点線、及び点)は、本発明の実施形態に追加的な特徴を追加する任意の動作を例示するためにここで用いられ得る。一方、そのような表記は、これらだけが選択肢又は任意の動作であること、及び/若しくは実線枠のブロックが本発明のある実施形態において任意でないことを意味すると、解釈されるべきではない。
【0015】
以下の説明及び特許請求の範囲において、“連結される”及び“接続される”という用語が、それらの派生語とともに、使用され得る。これらの用語は、互いについての類義語として意図されないことを理解すべきである。“連結される”は、2つ以上のエレメントが、互いに協働し又はインタラクションすることを示すために使用され、2つ以上のエレメントは、互いに直接物理的に又は電気的に接触してもしていなくてもよい。“接続される”は、互いに連結される2つ以上のエレメント間の通信の確立を示すために使用される。
【0016】
電子デバイス又はコンピューティングデバイス(例えば、エンドステーション、ネットワークデバイス)は、非一時的な機械読取可能な媒体(例えば、磁気ディスク、光ディスク、読み取り専用メモリ、フラッシュメモリデバイス、相変化メモリなどの機械読取可能な記憶媒体)、及び一時的な機械読取可能な伝送媒体(例えば、電気、光、音、又は搬送波、赤外線信号などの他の形態の伝播信号)などの、機械読取可能な媒体を使用して、(ソフトウェア命令から構成される)コード及びデータを記憶し及び(内部的に、及び/又はネットワークを介した他の電子デバイスを用いて)送信する。さらに、そのような電子デバイスは、1つ以上の他のコンポーネント、例えば、(コード及び/又はデータを記憶するための)1つ以上の非一時的な機械読取可能な記憶媒体、並びに(伝播信号を用いてコード及び/又はデータを送信するための)ネットワーク接続、並びにいくつかの場合には、ユーザ入力/出力デバイス(例えば、キーボード、タッチスクリーン、及び/又はディスプレイ)へ連結される、1つ以上のプロセッサのセットなどのハードウェアを含む。プロセッサのセット及び他のコンポーネントの連結は、典型的には、電子デバイス(例えば、バス、及び、おそらくブリッジ)内の1つ以上の相互接続を通じて行われる。よって、所与の電子デバイスの非一時的な機械読取可能な媒体は、典型的には、電子デバイスの1つ以上のプロセッサ上で実行するための命令を記憶する。本発明の一実施形態の1つ以上の部分は、ソフトウェア、ファームウェア、及び/又はハードウェアの様々な組み合わせを使用して実装されてもよい。
【0017】
ここで用いられる、ネットワークデバイス(例えば、ルータ、スイッチ、ブリッジ)は、ネットワーク上の他の機器(例えば、他のネットワークデバイス、エンドステーション)を通信可能に相互接続する、ハードウェア及びソフトウェアを含むネットワーキング機器の1つである。いくつかのネットワークデバイスは、複数のネットワーキング機能(例えば、ルーティング、ブリッジング、スイッチング、レイヤ2アグリゲーション、セッションボーダ制御、サービス品質(QoS)、及び/若しくは加入者管理)のためのサポートを提供し、並びに/又は複数のアプリケーションサービス(例えば、データ、音声、及びビデオ)のためのサポートを提供する、“マルチサービスのネットワークデバイス”である。加入者エンドステーション(例えば、サーバ、ワークステーション、ラップトップ、ネットブック、パームトップ、携帯電話、スマートフォン、マルチメディア電話、ボイスオーバインターネットプロトコル(VOIP)電話、ユーザ機器、端末、ポータブルメディアプレーヤ、GPSユニット、ゲーミングシステム、セットトップボックス)は、インターネットを介して提供されるコンテンツ/サービス、及び/又はインターネット上に重畳される(例えば、インターネットを通じてトンネリングされる)仮想プライベートネットワーク(VPN)上で提供されるコンテンツ/サービスにアクセスする。コンテンツ及び/又はサービスは、典型的には、サービス若しくはコンテンツプロバイダに属する1つ以上のエンドステーション(例えば、サーバエンドステーション)、又はピアツーピア(P2P)サービスに参加しているエンドステーションによって提供され、例えば、公共のウェブページ(例えば、無料コンテンツ、ストアフロント、検索サービス)、個人的なウェブページ(例えば、ユーザ名/パスワードでアクセスされる、電子メールサービスを提供するウェブページ)、及び/又はVPN経由の企業ネットワークを含んでもよい。典型的には、加入者エンドステーションは、エッジネットワークデバイスに(例えば、アクセスネットワークへ連結される顧客構内機器を通じて(有線又は無線で))連結され、エッジネットワークデバイスは、他のエンドステーション(例えば、サーバエンドステーション)へ連結される他のエッジネットワークデバイスに(例えば、1つ以上のコアネットワークデバイスを通じて)連結される。
【0018】
ネットワークデバイスは、一般に制御プレーン及びデータプレーン(転送プレーン又はメディアプレーンと呼ばれることもある)に分割される。ネットワークデバイスがルータである(又は、ルーティング機能性を実装している)場合、制御プレーンは、典型的には、データ(例えば、パケット)がどのようにルーティングされるべきか(例えば、データのための次の中継点、及びそのデータのための発信ポート)を決定し、データプレーンは、そのデータを転送することを担当する。例えば、制御プレーンは、典型的には、他のネットワークデバイスと通信してルートを交換し、1つ以上のルーティングメトリックに基づきそれらのルートを選択する、1つ以上のルーティングプロトコル(例えば、BGP(border gateway protocol)、IGP(Interior Gateway Protocol(s))(例えば、OSPF(Open Shortest Path First)、IS−IS(Intermediate System to Intermediate System)、RIP(Routing Information Protocol))、LDP(Label Distribution Protocol)、RSVP(Resource Reservation Protocol)などの外部ゲートウェイプロトコル)を含む。
【0019】
制御プレーン又はネットワーク外部のコンポーネントは、ネットワークトポロジー及びトラフィックエンジニアリング情報を含む、ネットワーク内の接続の現在の状態に基づいて計算を実行してもよい。例えば、セグメントルーティングパスを決定するために、処理コンポーネント(例えば、制御プレーン、SDNコントローラ、PCE(Path Computation Element)など)は、それを適切に構成するために、SRネットワークのトポロジー及び各ネットワークデバイスのケイパビリティについての情報を収集する必要がある。セグメントルーティング(SR)では、ネットワークノード(例えば、SR対応ネットワークデバイス)は、ここでセグメントと呼ばれる命令のセットを利用することによって、ネットワークを通じてパケットを操る。セグメントは、SRネットワークの入口においてパケットの先頭に追加されるSRヘッダの一部として含められる。セグメントは、いかなるトポロジー上の又はサービスの命令を表すこともできる。SRアーキテクチャは、転送プレーンを変更することなく、MPLSのデータプレーンに適用されることができる。MPLSのデータプレーンに適用される場合、SRは、IS−IS又はOSPF以外のいかなるプロトコルも無しで、サービス(例えば、VPN(Virtual Private Network)、VPLS(Virtual Private Local LAN Service)、VPWS(Virtual Private Wire Service))を入口LSR(Label Switched Router)から出口LSRへトンネリングする能力を提供する。セグメントは、MPLSラベルとして符号化される。セグメントの順序付きリストは、ラベルのスタックとして符号化される。処理すべき次のセグメントは、スタックの一番上(top)にある。セグメントが完了すると、対応するラベルが、スタックからポップされる。
【0020】
具体的には、ネットワークノードが課すことが可能であるよりも深いSID(又はラベルスタック)を有するはずのパス/トンネルと共にネットワークノードをコントローラが構成しないように、制御プレーンは、構成中の各ネットワークノードの最大セグメント識別子(SID)深度(MSD)についての情報を収集する必要がある。“最大SID深度”(MSD)は、SRネットワークノードが、パケットに課すことが可能なSID(即ち、セグメント又はラベルスタック)の最大数を特定する。
【0021】
あるアプローチでは、制御プレーンは、PCEP(Path Computation Element Communication Protocol)を使用して、SRネットワークノードのMSDを取り込み得る。PCEPは、PCC(Path Computation Client)(例えば、制御プレーンにより構成されているネットワークノード)が、PCE(Path Computation Element)(例えば、制御プレーン)からのパス計算を要求することを可能にするルールのセットである。PCEPに従って、MSDは、“draft-ietf-pce-segment-routing”(参照によりここに取り入れられる)において議論されている、PCEP拡張“SR PCEケイパビリティ TLV/METRICオブジェクト”を介して制御プレーンに移送される。
【0022】
別のアプローチでは、各ネットワークノードについてのMSD値は、IGP(Interior Gateway Protocol(s))で制御プレーンへ移送され得る。このアプローチでは、RLSDCサブTLVと呼ばれるサブTLVが、それぞれ“draft-ietf-ospf-mpls-elc”及び“draft-ietf-isis-mpls-elc”(参照によりここに取り入れられる)内でOSPF及びIS−ISについて定義されているように、最大ラベルスタック深度(即ち、ネットワークデバイスのMSD)を読み取るネットワークノードのケイパビリティを広告するために定義されている。
【0023】
ネットワークコントローラにMSDを呈示することの困難性
PCEPは、ネットワークノードのMSDを別のネットワークデバイス(例えば、制御プレーン)に呈示するために使用され得るものの、PCEPがネットワークノード(具体的には、SRパス/トンネルのヘッドエンド)によってサポートされていないとき、又はネットワークノードがIGPルーティングに参加していない場合、制御プレーンは、構成中のネットワークノードのMSDを学習するいかなる方法も有しない。これによって、構成中のネットワークノードのラベルスタック深度に関して、制御プレーンが無作為の決定を行う結果となり、それは、ネットワークノードの誤った構成をもたらすことがあり、パケット破棄につながる。加えて、PCEP及びIGPは、制御プレーンがネットワークノード内のリンクのMSDを取得することを可能にせず、制御プレーンがグローバルノードMSDを得ることを可能にするのみである。
【0024】
ここに提示される実施形態は、以前のアプローチの限界を克服する。いくつかの実施形態によれば、BGP(border gateway protocol)スピーカとして動作するネットワークデバイスにより実装される、当該ネットワークデバイスに関連付けられた最大セグメント識別子深度(MSD)値をネットワークコントローラへ送信する方法が、開示される。これらの実施形態において、ネットワークデバイスのMSD値は、BGPリンクステート(BGP−LS)拡張メッセージに符号化される。BGP−LS拡張メッセージは、MSD値のタイプを示すタイプと、MSD値の長さを示す長さと、ネットワークデバイスの最も低いノードMSD値を示すMSD値と、を含む。他の実施形態において、MSD値は、ネットワークデバイスの各リンクについての最も低いMSD値を示すリンクMSD値である。BGP−LS拡張メッセージは、次いで、ネットワークコントローラへ送信され、ネットワークコントローラは、ネットワークデバイスを含むセグメントルーティングパスを計算する際にMSD値を使用する。
【0025】
“draft-ietf-idr-ls-distribution-11”(参照によりここに取り入れられる)において説明されている通りのBGP−LSは、リンクステート及びトラフィックエンジニアリング情報がネットワークから収集され、BGPルーティングプロトコルを使用して外部コンポーネント(例えば、制御プレーン、集中型コントローラ、PCEなど)と共有され得る仕組みを記述する。
【0026】
図1は、いくつかの実施形態に係る、最大セグメント識別子(SID)深度(MSD)の外部アプリケーションへの送信を可能にするSRネットワークを示すブロック図である。
【0027】
図1は、ネットワークエレメント(NE)170A〜H(ルータ、スイッチ、転送エレメント、データプレーンエレメント、又はノードと呼ばれることもある)を含む、データプレーン180(基盤レイヤ、ネットワーク転送プレーン、又は転送プレーン(ND転送プレーンと混同されるべきではない)と呼ばれることもある)へ連結される集中型制御プレーン176を示す。集中型制御プレーン176は、ネットワークコントローラ178を含み、ネットワークコントローラ178は、ネットワーク内の到達可能性を判定し、転送情報をデータプレーン180のNE170A〜Hへ配信する集中型到達可能性/転送情報モジュール(図示せず)を含む。これらの実施形態において、ネットワークインテリジェンスは、典型的にはNDとは別の電子デバイス上で稼働する集中型制御プレーン176に一元化される。
【0028】
図1は、また、集中型制御プレーン176が、アプリケーション188が存在するアプリケーションレイヤ186への上方インタフェース184を有することを示している。集中型制御プレーン176は、アプリケーション188のための仮想ネットワーク(論理転送プレーン、ネットワークサービス、又は上位のネットワーク(データプレーン180のNE170A〜Hが下位のネットワークである)と呼ばれることもある)を形成する能力を有する。よって、集中型制御プレーン176は、全てのND及び構成済みNE/VNEの全域的なビューを維持し、仮想ネットワークを下層のND群へ効率的にマッピングする(ハードウェア(ND、リンク、又はNDコンポーネント)の故障、追加、又は除去のいずれかを通じて物理ネットワークが変化する際に、これらのマッピングをメンテナンスすることを含む)。以下でさらに詳細に説明されるように、各ネットワークエレメントNE170A〜Hは、1つ又は複数のネットワークデバイスによって実装されてもよい。
【0029】
NE170Eは、ノードのケイパビリティ及び/又はノードのリンクのケイパビリティの標識であるMSD値を含む。いくつかの実施形態において、MSD値は、NE170Eにおいて静的に構成される、[0,254]のレンジ内の数値である。代替的な実施形態において、MSD値は、IGPノードから再配信される。いくつかの実施形態において、MSD値は、ネットワークデバイスに一意に関連付けられる。
【0030】
MSD値は、ノードMSD値であってもよく、ノードMSD値は、NE170Eによってサポートされるラベル(SID)の最大数を示す。いくつかの実施形態において、0という値は、NE170Eがいかなる長さのSRスタックをもプッシュするように動作可能ではなく、そうした機能性のために使用されるべきではないことを意味する。代替的に、MSD値は、リンクMSD値であってもよく、リンクMSD値は、NE170Eのリンクによってサポートされるラベル(SID)の最大数を示す。いくつかの実施形態において、0という値は、リンクがいかなる長さのSRスタックをもプッシュするように動作可能ではなく、そうした機能性のために使用されるべきではないことを意味する。
【0031】
NE170E及びネットワークコントローラ178は、BGPを含むように、及び、ネットワーク100においてBGPスピーカとして動作するように構成される。ピアリングのためのハンドシェイクの期間中に、2つのBGPスピーカ(NE170E及びネットワークコントローラ178)の間でOPENメッセージが交換される。NE170E及びネットワークコントローラ178は、セッションのケイパビリティを交渉する。2つのBGPスピーカ(NE170E及びネットワークコントローラ178)がリンクステートNLRI(Network Layer Reachability Information)を交換する目的で、それらは、BGPケイパビリティ広告を使用して、双方がそのようなNLRIを適切に処理することが可能であることを保証する。ケイパビリティのこの交渉は、NE170E及びネットワークコントローラ178の各1つが、NE170EのMSD値が符号化されるBGP−LS拡張メッセージの送信のために、ここで提示されるBGP−LSの新たな機能性をサポート可能であることの検証を含む。
【0032】
ケイパビリティの交渉に続いて、NE170Eは、タスクボックス(1)において、MSD値を、ネットワークコントローラ178へ送信されるべきBGPリンクステート(BGP−LS)拡張メッセージに符号化する。BGP−LS拡張メッセージは、MSD値のタイプを示すタイプと、MSD値の長さを示す長さと、セグメントルーティングパスを可能にするためにネットワークデバイスによりサポートされる最低のMSD値を示すMSD値と、を含む。
【0033】
いくつかの実施形態において、MSD値は、NE170EのノードMSD値である。これらの実施形態のうちのいくつかにおいて、ノードMSD値は、BGP−LSのOpaqueノード属性(Opaque Node Attribute)TLV(Type-Length-Value)内に符号化される。Opaqueノード属性TLVは、ネットワークエレメントによって広告されるノード属性TLVを搬送するエンベロープである。本発明の実施形態において、Opaqueノード属性TLVは、NE170EのノードMSD値を搬送するために使用される。NE170Eは、Opaqueノード属性TLVを使用して、自身の関連付けられるノードMSD値を他のBGPスピーカ(例えば、ネットワークコントローラ178)へ広告する。
図4Aは、いくつかの実施形態に係る、ネットワークエレメントのノードMSD値を含む、例示的なOpaqueノード属性TLVを示す。Opaqueノード属性TLVは、タイプTLV(Type-Length-Value)のコンテナ400である。タイプ410は、コンテナ400内で送信される値のタイプを識別する値を含み、長さ412は、コンテナ400内で送信される値の長さを特定し、Opaqueノード属性414は、NE170Eに関連付けられるMSD値を含む。いくつかの実施形態において、MSD値は、レンジ[0,254]からの値であり、NE170Eによりサポートされるラベル(SID)の最大数を示す。
【0034】
他の実施形態において、MSD値は、NE170EのリンクMSDである。Opaqueリンク属性(Opaque Link Attribute)TLVは、ネットワークエレメントによって広告されるリンク属性TLVを搬送するエンベロープである。NE170Eは、Opaqueリンク属性TLVを使用して、自身に関連付けられるリンクMSDを他のBGPスピーカ(例えば、ネットワークコントローラ178)へ広告する。
図4Bは、いくつかの実施形態に係る、ネットワークエレメントのリンクMSD値を含む、例示的なOpaqueリンク属性TLVを示す。Opaqueノード属性TLVは、タイプTLV(Type-Length-Value)のコンテナ402である。タイプ416は、コンテナ402内で送信される値のタイプ(例えば、リンクMSDタイプ)を識別する値を含み、長さ418は、コンテナ402内で送信される値の長さを特定し、Opaqueリンク属性420は、NE170Eに関連付けられるMSD値を含む。いくつかの実施形態において、リンクMSD値は、レンジ[0,254]からの値であり、NE170Eのリンクによりサポートされるラベル(SID)の最大数のうちの最も低い値を示す。
【0035】
図1を再び参照すると、タスクボックス(2)において、NE170EのMSD値が、ネットワークコントローラ178へ送信される。いくつかの実施形態において、BGP−LS拡張メッセージ内のMSD値(例えば、Opaqueノード属性TLV又はOpaqueリンク属性TLV)の符号化に続いて、メッセージが、NE170Eへ連結される全てのBGPスピーカへ広告される。
【0036】
タスクボックス(3)において、ネットワークコントローラ178は、BGP−LS拡張メッセージを復号して、ネットワークデバイスの最大セグメント識別子深度(MSD)値を抽出する。BGP−LS拡張メッセージは、MSD値のタイプを示すタイプと、MSD値の長さを示す長さと、セグメントルーティングを可能にするためにネットワークデバイスによりサポートされる最低のMSD値を示すMSD値と、を含む。いくつかの実施形態において、一旦メッセージが復号され、MSD値が抽出されると、計算されるルーティングパスのラベルスタック深度がネットワークエレメント170EによりサポートされるMSD値を超えないように、ネットワークコントローラ178によりそのMSD値を使用してNE170Eを含むセグメントルーティングパスが計算される。いくつかの実施形態において、MSD値は、ネットワークデバイスに一意に関連付けられる。
【0037】
いくつかの実施形態において、ネットワークエレメント170Eは、SRトンネル/パスのヘッドエンドであるネットワークノードである。よって、ネットワークコントローラ178へ送信されるMSD値は、ネットワークエレメント170EがそのMSD値に等しい最大深度の完全なラベル(SID)スタックをプッシュすることを可能にするSRパスを、当該ネットワークコントローラが計算できるようにする。
【0038】
このように、ここで提示される実施形態は、BGP−LS拡張を使用してネットワークノードのMSD値を外部アプリケーション(例えば、PCE/SDNコントローラ、ネットワークコントローラ)に呈示する効率的な方法を説明している。本実施形態によれば、外部アプリケーションは、ネットワークエレメントに関するMSD情報を従来のアプローチよりも良好な粒度で受信することが可能となる。ネットワークデバイスがネットワークノードのノードMSD値を呈示することしか可能にしない従前のアプローチとは対照的に、
図1〜
図4Bを参照して説明した仕組みは、ネットワークデバイスがノードMSD値を呈示できることに加えて、リンクレベルでその関連付けられるMSD値を呈示することを可能にする。
【0039】
フロー図における動作が、他の図面の例示的な実施形態を参照して説明されるであろう。しかしながら、それら他の図面を参照して議論されている実施形態とは別の本発明の実施形態によってフロー図の動作が実行されてもよいこと、及び、それら他の図面を参照して議論されている本発明の実施形態が、フロー図を参照して議論されている実施形態とは異なる動作を実行してもよいことが理解されるべきである。
【0040】
図2は、いくつかの実施形態に係る、ネットワークデバイスのMSD値を呈示するための、ネットワークデバイスにおいて実行される動作200のフロー図を示す。ブロック202において、NE170Eは、MSD値をBGPリンクステート(BGP−LS)拡張メッセージへ符号化する。BGP−LS拡張メッセージは、MSD値のタイプを示すタイプと、MSD値の長さを示す長さと、セグメントルーティングを可能にするためにネットワークデバイスによりサポートされる最低のMSD値を示すMSD値と、を含む。次いで、フローは、ブロック203に移る。
【0041】
ブロック203において、NE170Eは、MSD値を含むBGP−LS拡張メッセージをネットワークコントローラ178へ送信する。ネットワークコントローラ178は、受信したMSD値を使用して、ネットワークデバイスを含むセグメントルーティングパスを計算するように動作可能である。いくつかの実施形態において、ネットワークエレメント170Eは、SRトンネル/パスのヘッドエンドであるネットワークノードである。よって、コントローラへ送信されるMSD値によって、ネットワークエレメントがそのMSD値に等しい最大深度の完全なラベル(SID)スタックをプッシュすることを可能にするSRパスを、当該コントローラが計算することが可能とされる。
【0042】
図3は、いくつかの実施形態に係る、ネットワークコントローラにおいて実行される動作のフロー図を示す。ブロック302において、ネットワークコントローラ178は、BGP(border gateway protocol)スピーカとして動作するネットワークデバイス(例えば、NE170E)からBGPリンクステート(BGP−LS)拡張メッセージを受信する。次いで、フローは、ブロック304に移る。
【0043】
ブロック304において、ネットワークコントローラ178は、BGP−LS拡張メッセージを復号して、ネットワークデバイスの最大セグメント識別子深度(MSD)値を抽出する。BGP−LS拡張メッセージは、MSD値のタイプを示すタイプと、MSD値の長さを示す長さと、セグメントルーティングを可能にするためにネットワークデバイスによりサポートされる最低のMSD値を示すMSD値と、を含む。いくつかの実施形態において、MSD値は、ネットワークデバイスに一意に関連付けられる。
【0044】
ブロック306において、ネットワークコントローラは、抽出されたMSD値を使用して、ネットワークデバイスを含むセグメントルーティング(SR)パスであって、MSD値以下のラベルスタック深度を有する当該SRパスを計算する。いくつかの実施形態において、ネットワークエレメント170Eは、SRトンネル/パスのヘッドエンドであるネットワークノードである。よって、コントローラへ送信されるMSD値によって、ネットワークノードがそのMSD値に等しい最大深度の完全なラベル(SID)スタックをプッシュすることを可能にするSRパスを、当該コントローラが計算することが可能とされる。
【0045】
BGP−LS拡張メッセージに符号化されたMSD値を制御プレーンのネットワークコントローラへ送信するネットワークデバイスと共に本発明の実施形態が説明されているが、本発明は、それに限定されるわけではない。代替的な実施形態は、上記ネットワークデバイスへ連結され及びMSD値を含むBGP−LS拡張メッセージを復号するように動作可能な何らかのタイプのネットワークエレメントへMSD値が送信されるように実装されてもよい。
【0046】
アーキテクチャ
典型的には、ネットワークデバイスは、1つ以上のラインカードのセット、1つ以上の制御カードのセット、及び任意で、1つ以上のサービスカード(リソースカードと呼ばれることもある)のセットを含む。これらのカードは、1つ以上の相互接続の仕組み(例えば、ラインカードを連結する第1のフルメッシュ、及びカード全てを連結する第2のフルメッシュ)を通じて共に連結される。ラインカードのセットは、データプレーンを構成し、一方、制御カードのセットは、制御プレーンを提供し、ラインカードを通じて外部ネットワークデバイスとパケットを交換する。サービスカードのセットは、専門的な処理(例えば、レイヤ4からレイヤ7のサービス(例えば、ファイアウォール、インターネットプロトコルセキュリティ(IPsec)、侵入検出システム(IDS)、ピアツーピア(P2P)、ボイスオーバIP(VoIP)セッションボーダコントローラ、モバイルワイヤレスゲートウェイ(GPRS(Gateway General Packet Radio Service)サポートノード(GGSN)、EPC(Evolved Packet Core)ゲートウェイ)))を提供することができる。例として、サービスカードは、IPsecトンネルを終端し、付随する認証及び暗号化アルゴリズムを実行するために使用されてもよい。
【0047】
図5Aは、本発明のいくつかの実施形態に係る、例示的なネットワーク内のネットワークデバイス(ND)の間の接続性、及びNDの3つの例示的な実装を示す。
図5Aは、ND500A〜Hを示し、A−B、B−C、C−D、D−E、E−F、F−G、及びA−G、並びにHとA、C、D及びGの各々との間の直線によってそれらの接続性を示す。これらのNDは、物理デバイスであり、これらのND間の接続性は、無線であっても又は有線であってもよい(しばしばリンクと呼ばれる)。ND500A、E、及びFから延びる追加の直線は、これらのNDが、ネットワークのための入口及び出口ポイントとして動作することを示している(したがって、これらのNDは、エッジNDと呼ばれることもあり、他のNDはコアNDと呼ばれてもよい)。
【0048】
図5Aにおける例示的なNDの実装のうちの2つが:1)カスタムASIC(application-specific integrated-circuit)とプロプライエタリOS(operating system)とを使用する専用ネットワークデバイス502;及び、2)COTS(common off-the-shelf)プロセッサと標準OSとを使用する汎用ネットワークデバイス504である。
【0049】
専用ネットワークデバイス502は、計算リソース512(典型的には、1つ以上のプロセッサのセットを含む)、転送リソース514(典型的には、1つ以上のASIC及び/又はネットワークプロセッサを含む)、並びに物理ネットワークインタフェース(NI)516(物理ポートと呼ばれることもある)、並びにネットワーキングソフトウェア520を記憶している非一時的な機械読取可能な記憶媒体518を含むネットワーキングハードウェア510を含む。物理NIは、ND500A〜H間の接続性によって示されるように、ネットワーク接続を(例えば、ワイヤレスネットワークインタフェースコントローラ(WNIC)を通じて無線で、又はネットワークインタフェースコントローラ(NIC)に接続される物理ポートにケーブルでプラグ接続することを通じて)仲介するND内のハードウェアである。動作中に、BGP−LS MSD値エンコーダ520は、ネットワークハードウェア510によって実行されて、BGP−LS MSD値エンコーダインスタンス533A〜Rを含む1つ以上のネットワークソフトウェアインスタンス522のセットをインスタンス化してもよい。ネットワーキングソフトウェアインスタンス522の各々、及びそのネットワークソフトウェアインスタンスを実行するネットワーキングハードウェア510のその部分(そのネットワーキングソフトウェアインスタンス専用のハードウェア、及び/又はそのネットワーキングソフトウェアインスタンスとその他のネットワークソフトウェアインスタンス522によって一時的に共有されるハードウェアのタイムスライスとする)が、別々の仮想ネットワークエレメント530A〜Rを形成する。動作中に、BGP−LS MSD値エンコーダは、
図1、
図2、及び
図4A〜4Bを参照して説明した動作を実行するように動作可能である。仮想ネットワークエレメント(VNE)530A〜Rの各々は、(ローカル制御モジュール又は制御通信モジュールと呼ばれることもある)制御通信/構成モジュール532A〜R、及び転送テーブル534A〜Rを含み、それにより、所与の仮想ネットワークエレメント(例えば、530A)は、制御通信/構成モジュール(例えば、532A)、1つ以上の転送テーブルのセット(例えば、534A)、及びネットワーキングハードウェア510の仮想ネットワークエレメント(例えば、530A)を実行する部分を含む。
【0050】
専用ネットワークデバイス502は、しばしば物理的及び/又は論理的に、次のものを含むものと考えられる:1)制御通信/構成モジュール532A〜Rを実行する計算リソース512を含むND制御プレーン524(制御プレーンと呼ばれることもある);及び、2)転送テーブル534A〜R及び物理NI516を利用する転送リソース514を含むND転送プレーン526(転送プレーン、データプレーン、又はメディアプレーンと呼ばれることもある)。例として、NDがルータである(又はルーティング機能性を実装している)場合において、ND制御プレーン524(制御通信/構成モジュール532A〜Rを実行する計算リソース512)は、典型的には、データ(例えば、パケット)がどのようにルーティングされるべきか(例えば、データのための次の中継点、及びそのデータのためのアウトゴーイング物理NI)の制御に関与すること、並びに転送テーブル534A〜R内のそのルーティング情報を記憶することを担当し、ND転送プレーン526は、物理NI516についてのデータを受信すること、及び転送テーブル534A〜Rに基づいてそのデータを物理NI516のうちの適当なものへ転送することを担当する。
【0051】
図5Bは、本発明のいくつかの実施形態に係る、専用ネットワークデバイス502を実装するための例示的な方法を示す。
図5Bは、(典型的にはホットプラグ対応である)カード538を含む専用ネットワークデバイスを示す。いくつかの実施形態において、カード538には、2つのタイプ(ND転送プレーン526(ラインカードと呼ばれることもある)として動作する1つ以上、及び、ND制御プレーン524(制御カードと呼ばれることもある)を実装するように動作する1つ以上)があるが、代替的な実施形態において、単一のカードへ機能性が組み合わせられてもよく、及び/又は追加のカードタイプが含まれてもよい(例えば、カードの1つの追加タイプは、サービスカード、リソースカード、又はマルチアプリケーションカードと呼ばれる)。サービスカードは、専門的な処理(例えば、レイヤ4からレイヤ7のサービス(例えば、ファイアウォール、インターネットプロトコルセキュリティ(IPsec)(RFC4301及び4309)、セキュアソケットレイヤ(SSL)/トランスポートレイヤセキュリティ(TLS)、侵入検出システム(IDS)、ピアツーピア(P2P)、ボイスオーバIP(VoIP)セッションボーダコントローラ、モバイルワイヤレスゲートウェイ(GPRS(Gateway General Packet Radio Service)サポートノード(GGSN)、EPC(Evolved Packet Core)ゲートウェイ))を提供することができる。例として、サービスカードは、IPsecトンネルを終端し、付随する認証及び暗号化アルゴリズムを実行するために使用されてもよい。これらのカードは、バックプレーン536として示される1つ以上の相互接続の仕組み(例えば、ラインカードを連結する第1のフルメッシュ、及びカード全てを連結する第2のフルメッシュ)を通じて共に連結される。
【0052】
図5Aに戻ると、汎用ネットワークデバイス504は、(しばしば、COTSプロセッサである)1つ以上のプロセッサ542のセット、及び(物理NI546を含む)ネットワークインタフェースコントローラ544(NIC;ネットワークインタフェースカードとしてもいう)、並びにソフトウェア550を記憶している一時的な機械読取可能な記憶媒体548を含むハードウェア540を含む。動作中に、プロセッサ542は、ソフトウェア550を実行して、1つ以上のアプリケーション564A〜Rの1つ以上のセットをインスタンス化する。1つの実施形態が、仮想化を実装する一方、代替的な実施形態は、仮想化レイヤ554及びソフトウェアコンテナ562A〜Rによって表される仮想化の異なる形態を使用してもよい。例えば、そのような1つの代替的な実施形態は、オペレーティングシステムレベルの仮想化を実装し、その場合において、仮想化レイヤ554は、アプリケーションのセット564A〜Rのうちの1つを実行するために各々が使用され得る複数のソフトウェアコンテナ562A〜Rを有効化する、オペレーティングシステムのカーネル(又は、基本オペレーティングシステム上で稼働するシム(shim))を表す。本実施形態において、複数のソフトウェアコンテナ562A〜R(仮想化エンジン、仮想専用サーバ、又はjailとも呼ばれる)は、各々がユーザ空間インスタンス(典型的には、仮想メモリ空間)である。これらのユーザ空間インスタンスは、互いに分離されており、及び、オペレーティングシステムが実行されるカーネル空間から分離されている。明示的に許可されない限り、所与のユーザ空間内で稼働するアプリケーションのセットは、他のプロセスのメモリにアクセスできない。そのような別の代替的な実施形態は、完全仮想化を実装し、その場合において:1)仮想化レイヤ554は、ハイパバイザ(仮想マシンモニタ(VMM)と呼ばれることもある)、又はホストオペレーティングシステムのトップで稼働するハイパバイザを表し;及び、2)ソフトウェアコンテナ562A〜Rは、各々ハイパバイザにより実行される仮想マシンと呼ばれる強固に隔離された形態のソフトウェアコンテナを表し、ゲストオペレーティングシステムを含み得る。仮想マシンは、プログラムが物理的な非仮想化マシン上で実行されているかのように、プログラムを実行する物理マシンのソフトウェア実装である。アプリケーションは、概して、“ベアメタル”ホスト電子デバイス上で稼働するのとは対照的に、それらが仮想マシン上で稼働していることを知らないが、いくつかのシステムは、オペレーティングシステム又はアプリケーションが最適化のために仮想化の存在を認識することを可能にする、準仮想化を提供する。
【0053】
1つ以上のアプリケーション564A〜Rの1つ以上のセット、並びに、実装される場合は仮想化レイヤ554及びソフトウェアコンテナ562A〜Rをインスタンス化した結果は、まとめてソフトウェアインスタンス552と呼ばれる。アプリケーションの各セット564A〜R、実装される場合は対応するソフトウェアコンテナ562A〜R、並びにハードウェア540のそれらを実行する部分(その実行専用のハードウェア、及び/又はソフトウェアコンテナ562A〜Rによって一時的に共有されるハードウェアのタイムスライスとする)が、別々の仮想ネットワークエレメント560A〜Rを形成する。
【0054】
仮想ネットワークエレメント560A〜Rは、仮想ネットワークエレメント530A〜Rと同様、例えば、制御通信/構成モジュール532A及び転送テーブル534Aと同様の機能性を実行する(ハードウェア540のこの仮想化は、ネットワーク機能仮想化(NFV)と呼ばれることがある)。したがって、多くのネットワーク機器タイプを、業界標準の大容量サーバハードウェア、物理スイッチ、及び物理ストレージ上へ統合するために、NFVが使用されてもよく、それらはデータセンタ、ND、及び顧客構内機器(CPE)に位置し得るはずである。一方、本発明の様々な実施形態は、ソフトウェアコンテナ562A〜Rのうちの1つ以上を異なるように実装してもよい。例えば、本発明の実施形態は、各ソフトウェアコンテナ562A〜Rが1つのVNE560A〜Rに対応しているように示されているが、代替的な実施形態では、より精細なレベルの粒度で上記対応が実装されてもよい(例えば、ラインカード仮想マシンがラインカードを仮想化し、制御カード仮想マシンが制御カードを仮想化するなど)。理解されるべきこととして、ソフトウェアコンテナ562A〜RのVNEとの対応関係を参照してここで説明した技法は、そうしたより精細なレベルの粒度が使用される実施形態にもあてはまる。
【0055】
ある実施形態において、仮想化レイヤ554は、同様の転送サービスを物理イーサネットスイッチとして提供する仮想スイッチを含む。具体的には、この仮想スイッチは、ソフトウェアコンテナ562A〜R及びNIC544の間で、並びに任意で、ソフトウェアコンテナ562A〜R間で、トラフィックを転送する。さらにこの仮想スイッチは、ポリシーにより互いに通信することが許可されないVNE560A〜Rの間で、(例えば、仮想ローカルエリアネットワーク(VLAN)を履行することにより)ネットワーク隔離を実施してもよい。
【0056】
図5Aにおける第3の例示的なNDの実装例は、ハイブリッドネットワークデバイス506であり、それは、単一のND又はND内の単一のカードにおけるカスタムASIC/プロプライエタリOS、及びCOTSプロセッサ/標準OSの双方を含む。このようなハイブリッドネットワークデバイスのある実施形態において、プラットフォームVM(即ち、専用ネットワークデバイス502の機能性を実装するVM)が、ハイブリッドネットワークデバイス506内に存在するネットワーキングハードウェアに準仮想化を提供してもよい。
【0057】
上記のNDの例示的実装に関わらず、NDによって実装される複数のVNEのうちの単一のVNEを考慮する場合(例えば、VNEのうちの1つだけが、所与の仮想ネットワークの一部である)、又は単一VNEのみがNDによってその時点で実装されている状況では、そのVNEへ言及するために短縮期間型(shortened term)のネットワークエレメント(NE)が使用されることがある。さらに、上記例示的実装の全てにおいて、VNEの各々(例えば、VNE503A〜R、VNE560A〜R、及びハイブリッドネットワークデバイス506におけるそれら)は、物理NI(例えば、516、546)上でデータを受信し、そのデータを、物理NI(例えば、516、546)のうちの適切なものに転送する。例えば、IPルータの機能性を実装するVNEは、IPパケット内のIPヘッダ情報のうちのいくつかに基づいて、IPパケットを転送する。その場合に、IPヘッダ情報は、ソースIPアドレス、宛先IPアドレス、ソースポート、宛先ポート(“ソースポート”及び“宛先ポート”は、NDの物理ポートとは対照的に、ここではプロトコルポートをいう)、トランスポートプロトコル(例えば、UDP(user datagram protocol)(RFC768、2460、2675、4113、及び5405)、TCP(Transmission Control Protocol)(RFC793及び1180)、並びにDSCP(differentiated services)値(RFC2474、2475、2597、2983、3086、3140、3246、3247、3260、4594、5865、3289、3290、及び3317))を含む。
【0058】
図5Cは、本発明のいくつかの実施形態に係る、VNEが連結され得る多様な例示的な方法を示す。
図5Cは、ND500A内に実装されるVNE570A.1〜570A.P(及び、任意で、VNE570A.Q〜570A.R)、並びにND500H内のVNE570H.1を示す。
図5Cにおいて、VNE570A.1〜Pは、それらがND500Aの外部からパケットを受信し、パケットをND500Aの外部に転送することができるという意味で、互いに分離している。VNE570A.1は、VNE570H.1へ連結され、したがってそれらはそれぞれのND間でパケットを通信する。VNE570A.2〜570A.3は、随意的に、パケットをND500Aの外部に転送することなくそれ自体の間でパケットを転送してもよい。VNE570A.Pは、随意的に、VNE570A.Qを含みVNE570A.Rが後に続くVNEのチェーン内の最初のVNEであってもよい(これは、ダイナミックサービスチェーンと呼ばれることもあり、そこで、一連のVNEの中のVNEの各々が、異なるサービス、例えば、1つ以上のレイヤ4〜7ネットワークサービスを提供する)。
図5Cは、多様な例示的なVNE間の関係性を示しているが、代替的な実施形態は、他の関係性(例えば、より多くの/より少ないVNE、より多くの/より少ないダイナミックサービスチェーン、いくつかの共通VNE及びいくつかの異なるVNEを有する複数の異なるダイナミックサービスチェーン)をサポートしてもよい。
【0059】
図5AのNDは、インターネット又はプライベートネットワークの一部を形成してもよく、他の電子デバイス(図示せず、ワークステーション、ラップトップ、ネットブック、タブレット、パームトップ、携帯電話、スマートフォン、ファブレット、マルチメディアフォン、VOIP(Voice Over Internet Protocol)フォン、端末、ポータブルメディアプレーヤ、GPSユニット、ウェアラブルデバイス、ゲーミングシステム、セットトップボックス、インターネット対応家庭用電化製品を含むエンドユーザデバイスなど)が、ネットワークに(直接、又はアクセスネットワークなどの他のネットワークを通じて)連結されて、互いに(直接若しくはサーバを通じて)、並びに/又はアクセスコンテンツ及び/若しくはサービスにネットワーク(例えば、インターネット、又は/インターネット上に重畳された(例えば、インターネットを通じてトンネリングされた)VPN)を介して通信してもよい。このようなコンテンツ及び/又はサービスは、典型的には、サービス/コンテンツプロバイダに属する1つ以上のサーバ(図示せず)、又はピアツーピア(P2P)サービスに参加しているエンドユーザデバイス(図示せず)によって提供され、例えば、公共のウェブページ(例えば、無料コンテンツ、ストアフロント、検索サービス)、個人的なウェブページ(例えば、ユーザ名/パスワードでアクセスされる、電子メールサービスを提供するウェブページ)、及び/又はVPN経由の企業ネットワークを含んでもよい。例えば、エンドユーザデバイスは、エッジNDに(例えば、アクセスネットワークへ連結される顧客構内機器を通じて(有線又は無線で))連結されてもよく、エッジNDは、サーバとして動作する電子デバイスへ連結される他のエッジNDに(例えば、1つ以上のコアNDを通じて)連結される。一方、計算及び記憶仮想化を通じて、
図5AにおいてNDとして動作する電子デバイスのうちの1つ以上は、また、1つ以上のそのようなサーバ(例えば、汎用ネットワークデバイス504の場合、ソフトウェアコンテナ562A〜Rのうちの1つ以上が、サーバとして動作してもよく、ハイブリッドネットワークデバイス506についても同じことが言える。専用ネットワークデバイス502の場合、1つ以上のそのようなサーバが、計算リソース512によって実行される仮想化レイヤ上で稼働してもよい)をホスティングしてもよく、その場合、サーバは、そのNDのVNEと共設されていると言える。
【0060】
仮想ネットワークは、ネットワークサービス(例えば、L2及び/又はL3サービス)を提供する物理ネットワーク(
図5Aにおけるものなど)の論理的な抽象化である。仮想ネットワークは、ネットワークサービス(例えば、レイヤ2(L2、データリンク層)及び/若しくはレイヤ3(L3、ネットワーク層)サービス)を下位のネットワーク(例えば、トンネル(例えば、GRE(generic routing encapsulation)、L2TP(layer 2 tunneling protocol)、IPSec)を使用して上位のネットワークを作り出す、IP(Internet Protocol)ネットワークなどのL3ネットワーク)を介して提供する、上位のネットワーク(ネットワーク仮想化オーバレイと呼ばれることもある)として実装されてもよい。
【0061】
ネットワーク仮想化エッジ(NVE)は、下位のネットワークのエッジにあり、ネットワーク仮想化の実装に関係する。NVEのネットワークに面した側は、下位のネットワークを使用して他のNVEとの間でフレームをトンネリングする。NVEの外向きの側は、ネットワーク外部のシステムへデータを送信し、及びネットワーク外部のシステムからデータを受信する。仮想ネットワークインスタンス(VNI)は、NVE(例えば、ND上のNE/VNE、そのNE/VNEがエミュレーションによって複数VNEに分割されているND上のNE/VNEの一部)上の仮想ネットワークの固有のインスタンスである。1つ以上のVNIは、(例えば、ND上の異なるVNEとして)1つのNVE上にインスタンス化され得る。仮想アクセスポイント(VAP)は、外部システムを仮想ネットワークへ接続するためのNVE上の論理的な接続ポイントである。VAPは、論理インタフェース識別子(例えば、VLAN ID)によって識別される物理的な又は仮想的なポートであってよい。
【0062】
ネットワークサービスの例は、次を含む:1)イーサネットLANエミュレーションサービス(IETF(Internet Engineering Task Force)MPLS(Multiprotocol Label Switching)又はイーサネットVPN(EVPN)サービスと同様の、イーサネットベースのマルチポイントサービス) … そこでは、外部システムが、下位のネットワークを介したLAN環境によりネットワークをわたって相互接続される(例えば、NVEが、そのような異なる仮想ネットワークのための別個のL2 VNI(virtual switching instance)、及び下位のネットワークにわたるL3(例えば、IP/MPLS)トンネリングカプセル化を提供する);及び、2)仮想化IP転送サービス(サービス定義の視点からは、IETF IP VAN(例えば、BGP/MPLS IPVPN RFC4364)と同様) … そこでは、外部システムが、下位のネットワークを介したL3環境によりネットワークにわたって相互接続される(例えば、NVEが、そのような異なる仮想ネットワークのための別個のL3 VNI(転送及びルーティングインスタンス)、及び下位のネットワークにわたるL3(例えば、IP/MPLS)トンネリングカプセル化を提供する)。また、ネットワークサービスは、サービス品質ケイパビリティ(例えば、トラフィック分類マーキング、トラフィック調整及びスケジューリング)、セキュリティケイパビリティ(例えば、ネットワーク由来の攻撃から顧客構内を保護し、異常なルーティングアナウンスメントを回避するためのフィルタ)、並びに管理ケイパビリティ(例えば、フル検出及び処理)を含んでもよい。
【0063】
図5Dは、
図5AのNDの各々に単一のネットワークエレメント(NE)を有するネットワークを示しており、この簡易なアプローチにおいて、(一般に、従来のルータにより使用される)従来の分散型アプローチが、本発明のいくつかの実施形態に係る(ネットワーク制御とも呼ばれる)到達可能性/転送情報を維持するための集中型アプローチと対比される。具体的には、
図5Dは、
図5AのND500A〜Hと同一の接続性を有するネットワークエレメント(NE)570A〜Hを示す。
【0064】
図5Dは、分散型アプローチ72がNE570A〜Hにわたって到達可能性/転送情報を生成する役割を分散する。言い換えると、近隣探索及びトポロジー発見の処理が分散される。
【0065】
例えば、専用ネットワークデバイス502が使用されている場合において、ND制御プレーン524の制御通信/構成モジュール532A〜Rは、典型的には、他のNEと通信してルートを交換し、次いで1つ以上のルーティングメトリックに基づいてそれらのルートを選択する、1つ以上のルーティングプロトコル(例えば、BGP(border gateway protocol)(RFC4271)、IGP(Interior Gateway Protocol(s))(例えば、OSPF(RFC2328及び5340)、IS−IS(RFC1142)、RIP(バージョン1 RFC1058、バージョン2 RFC2453、及び次世代RFC2080))、LDP(RFC5036)、RSVP(RFC2205、2210、2211、2212、及びRSVP−トラフィックエンジニアリング(TE):LSPトンネルRFC3209のためのRSVPの拡張、GMPLS(Generalized Multi-Protocol Label Switching)シグナリングRSVP−TE RFC3473、RFC3936、4495、及び4558))を実装するための到達可能性/転送情報モジュールを含む。したがって、NE570A〜H(例えば、制御通信/構成モジュール532A〜Rを実行する計算リソース512)は、分散的にネットワーク内の到達可能性を判定し及びそれぞれの転送情報を計算することによって、データ(例えば、パケット)がどのようにルーティングされるべきか(例えば、データのための次の中継点、及びそのデータのための発信物理NI)を制御することに関与するそれらの役割を実行する。ルート及び隣接関係(adjacencies)は、ND制御プレーン524上の1つ以上のルーティング構造(例えば、ルーティング情報ベース(RIB)、ラベル情報ベース(LIB)、1つ以上の隣接構造)に記憶される。ND制御プレーン524は、ルーティング構造に基づいて、情報(例えば、隣接関係及びルーティング情報)と共にND転送プレーン526をプログラムする。例えば、ND制御プレーン524は、ND転送プレーン526上の1つ以上の転送テーブル534A〜R(例えば、転送情報ベース(FIB)、ラベル転送情報ベース(LFIB)、及び1つ以上の隣接関係構造)へ、隣接関係及びルーティング情報をプログラムする。レイヤ2転送の場合、NDは、そのデータ内のレイヤ2情報に基づいてデータを転送するために使用される、1つ以上のブリッジングテーブルを記憶することができる。上記の例は、専用ネットワークデバイス502を使用するが、同じ分散型アプローチ572が、汎用ネットワークデバイス504及びハイブリッドネットワークデバイス506上で実装されてもよい。
【0066】
図5Dは、(ソフトウェア定義ネットワーキング(SDN)としても知られる)集中型アプローチ574が、トラフィックの送信場所に関する決定を行うシステムを、選択された宛先へトラフィックを転送する下位システムから分離することを示す。例示された集中型アプローチ574は、集中型制御プレーン576(SDN制御モジュール、コントローラ、ネットワークコントローラ、OpenFlowコントローラ、SDNコントローラ、制御プレーンノード、ネットワーク仮想化権限、又は管理制御エンティティ)内の到達可能性/転送情報の生成の役割を有し、したがって、近隣探索及びトポロジー発見が一元的に行われる。集中型制御プレーン576は、NE570A〜H(スイッチ、転送エレメント、データプレーンエレメント、又はノードと呼ばれることもある)を含むデータプレーン580(基盤レイヤ、ネットワーク転送プレーン、又は転送プレーン(ND転送プレーンと混同されるべきでない)と呼ばれることもある)を有する下方インタフェース582を有する。集中型制御プレーン576は、ネットワークコントローラ578を含み、ネットワークコントローラ578は、ネットワーク内の到達可能性を判定し、(OpenFlowプロトコルを使用し得る)下方インタフェース582を介して転送情報をデータプレーン580のNE570A〜Hへ配信する集中型到達可能性/転送情報モジュール579を含む。よって、ネットワークインテリジェンスは、典型的にはNDとは別の電子デバイス上で稼働する集中型制御プレーン576に一元化される。
【0067】
例えば、専用ネットワークデバイス502がデータプレーン580内で使用される場合、ND制御プレーン524の制御通信/構成モジュール532A〜Rの各々は、典型的には、下方インタフェース582のVNE側を提供する制御エージェントを含む。この場合、ND制御プレーン524(制御通信/構成モジュール532A〜Rを実行する計算リソース512)は、データ(例えば、パケット)がどのようにルーティングされるか(例えば、データのための次の中継点、及びそのデータのための発信物理NI)を、集中型制御プレーン576と通信して集中型到達可能性/転送情報モジュール579から転送情報(いくつかの場合、到達可能性情報)を受信する制御エージェントを通じて制御することに関与する役割を実行する。(本発明のいくつかの実施形態において、制御通信/構成モジュール532A〜Rは、集中型制御プレーン576と通信することに加えて、分散型アプローチの場合よりも少ないとしても、到達可能性を判定し、及び/又は転送情報を計算する何らかの役割を果たしてもよいことを理解すべきである。そのような実施形態は、概して集中型アプローチ574の範疇であると見なされるが、ハイブリッドアプローチと見なされてもよい)。
【0068】
上記の例が専用ネットワークデバイス502を使用している一方で、同じ集中型アプローチ574が、汎用ネットワークデバイス504及びハイブリッドネットワークデバイス506を用いて実装されてもよい(例えば、VNE560A〜Rの各々が、データ(例えば、パケット)がどのようにルーティングされるか(例えば、データのための次の中継点、及びそのデータのための発信物理NI)を、集中型制御プレーン576と通信して集中型到達可能性/転送情報モジュール579から転送情報(いくつかの場合、到達可能性情報)を受信することによって制御する役割を実行する。(本発明のいくつかの実施形態において、VNE560A〜Rは、集中型制御プレーン576と通信することに加えて、分散型アプローチの場合よりも少ないとしても、到達可能性を判定し、及び/又は転送情報を計算する何らかの役割を果たし得ることを理解すべきである)。実際には、NFVは、SDNソフトウェアが実行され得る基盤を提供することによってSDNをサポートすることができ、NFV及びSDN双方が、コモディティサーバハードウェア及び物理スイッチを使用することを目的とするため、SDN技術の使用は、汎用ネットワークデバイス504又はハイブリッドネットワークデバイス506の実装において典型的に使用されるNFV技術を拡張することができる。
【0069】
図5Dは、また、集中型制御プレーン576が、アプリケーション588が存在するアプリケーションレイヤ586への上方インタフェース584を有することを示す。集中型制御プレーン576は、アプリケーション588のための仮想ネットワーク592(論理転送プレーン、ネットワークサービス、又は上位のネットワーク(データプレーン580のNE570A〜Hが下位のネットワークである)と呼ばれることもある)を形成する能力を有する。よって、集中型制御プレーン576は、全てのND及び構成済みNE/VNEを全体的に維持し、それは、仮想ネットワークを下位のNDに効率的にマッピングする(ハードウェア(ND、リンク、又はNDコンポーネント)の故障、追加、又は除去のいずれかを通じて物理ネットワークが変化する際に、これらのマッピングをメンテナンスすることを含む)。
【0070】
図5Dは、集中型アプローチ574とは別個に分散型アプローチ572を示しているが、ネットワーク制御の負荷が、本発明のある実施形態において、異なる形で分散され、又は2つが組み合わせられてもよい。例えば:1)実施形態は、概して、集中型アプローチ(SDN)574を使用してもよく、但しある機能へNEに委任される(例えば、分散型アプローチが、障害モニタリング、性能モニタリング、保護スイッチング、並びに近隣及び/又はトポロジー発見のためのプリミティブのうちの1つ以上を実装するために使用されてもよい);又は、2)本発明の実施形態は、集中型制御プレーン及び分散型プロトコルの双方によって近隣探索及びトポロジー発見を実行して、それらが合致しない例外を提起するために結果が比較されてもよい。このような実施形態は、概して集中型アプローチ574の範疇であると見なされるが、ハイブリッドアプローチと見なされてもよい。
【0071】
図5Dは、ND500A〜Hの各々が単一のNE570A〜Hを実装する単純な場合を示しているが、理解されるべきこととして、
図5Dを参照して説明したネットワーク制御のアプローチは、ND500A〜Hのうちの1つ以上が複数のVNE(例えば、VNE530A〜R、VNE560A〜R、ハイブリッドネットワークデバイス506内のそれら)を実装するネットワークに対しても動作する。代替的に、又は追加的に、ネットワークコントローラ578は、単一のND内の複数のVNEの実装をエミュレートしてもよい。具体的には、単一のND内に複数のVNEを実装する代わりに(又は、それに加えて)、ネットワークコントローラ578は、仮想ネットワーク592内の複数のVNEとして(仮想ネットワーク592の同じ1つに全てを、仮想ネットワーク592の異なる1つに各々を、又は何らかの組み合わせで)単一のND内のVNE/NEの実装を提示してもよい。例えば、ネットワークコントローラ578は、NDに、下位のネットワーク内に単一VNE(NE)を実装させてもよく、その際、集中型制御プレーン576内のそのNEのリソースを、仮想ネットワーク592内に存在する異なるVNEに論理的に分割する(上位のネットワーク内のこれらの異なるVNEが、下位のネットワーク内のND上の単一VNE/NE実装のリソースを共有する)。
【0072】
一方、
図5E及び
図5Fは、それぞれ、ネットワークコントローラ578が仮想ネットワーク592の別々の一部分として存在し得るNE及びVNEの例示的な抽象化を示す。
図5Eは、本発明のいくつかの実施形態に従って、ND500A〜Hの各々が単一のNE570A〜Hを実装し(
図5D参照)、但し集中型制御プレーン576が異なるND内にある複数のNE(NE570A〜C及びG〜H)を、
図5Dの仮想ネットワーク592のうちの1つにおける単一のNE570Iへ(それを表すように)抽象化した、単純な場合を示す。
図5Eは、この仮想ネットワークにおいて、NE570Iが、NE570D及び570Fへ連結され、それらの双方がNE570Eにも連結されることを示す。
【0073】
図5Fは、本発明のいくつかの実施形態に従って、複数のVNE(VNE570A.1及びVNE570H.1)が異なるND(ND500A及びND500H)上に実装され、互いに連結され、集中型制御プレーン576が、それら複数のVNEが
図5Dの仮想ネットワーク592のうちの1つの範囲内で単一VNE570Tに見えるようそれらを抽象化した場合を示す。したがって、NE又はVNEの抽象化は、複数のNDにわたることができる。
【0074】
本発明のいくつかの実施形態は、単一のエンティティ(単一の電子デバイス上で稼働するソフトウェアの単一インスタンス)として集中型制御プレーン576を実装するが、代替的な実施形態は、冗長性及び/又はスケーラビリティのために複数のエンティティにわたって機能性を分散してもよい(例えば、異なる電子デバイス上で稼働するソフトウェアの複数のインスタンス)。
【0075】
ネットワークデバイス実装と同様に、集中型制御プレーン576を実行する電子デバイス、及び、集中型到達可能性/転送情報モジュール579を含むネットワークコントローラ578は、多様なやり方(例えば、専用デバイス、汎用(例えば、COTS)デバイス、又はハイブリッドデバイス)で実装されてもよい。これらの電子デバイスは、計算リソース、セット又は1つ以上の物理NIC、及び集中型制御プレーンソフトウェアを記憶した非一時的な機械読取可能な記憶媒体を含むこととなる。例えば、
図6は、(しばしば、COTSプロセッサである)1つ以上のプロセッサのセット642、及び(物理NI646を含む)ネットワークインタフェースコントローラ644(NIC;ネットワークインタフェースカードともいう)、並びに集中型制御プレーン(CCP)ソフトウェア650を記憶する一時的な機械読取可能な記憶媒体648を含むハードウェア640を含む、汎用制御プレーン604を示す。
【0076】
計算仮想化を使用する実施形態において、プロセッサ642は、典型的には、ソフトウェアを実行して、仮想化レイヤ654及びソフトウェアコンテナ662A〜Rをインスタンス化する(例えば、オペレーティングシステムレベルの仮想化では、仮想化レイヤ654は、1つ以上のアプリケーションのセットを実行するために各々が使用され得る複数のソフトウェアコンテナ662A〜R(個別のユーザ空間インスタンスを表し、仮想化エンジン、仮想専用サーバ、又はjailとも呼ばれる)の作成を可能にするオペレーティングシステムのカーネル(又は、基本オペレーティングシステム上で稼働するシム)を表す。完全な仮想化では、仮想化レイヤ654は、ハイパバイザ(仮想マシンモニタ(VMM)と呼ばれることもある)、又はホストオペレーティングシステムのトップで稼働するハイパバイザを表し、ソフトウェアコンテナ662A〜Rは、各々ハイパバイザによって実行される仮想マシンと呼ばれる強固に隔離された形態のソフトウェアコンテナを表し、ゲストオペレーティングシステムを含んでもよい。準仮想化では、オペレーティングシステム、又は仮想マシンと共に動作するアプリケーションが、最適化のために仮想化の存在を認識してもよい。)再び、計算仮想化が使用される実施形態において、動作中に、CCPソフトウェア650のインスタンス(CCPインスタンス676Aとして示される)が、仮想レイヤ654上のソフトウェアコンテナ662A内で実行される。計算仮想化が使用されない実施形態において、ホストオペレーティングシステムのトップのCCPインスタンス676Aは、“ベアメタル”汎用制御プレーンデバイス604上で実行される。CCPインスタンス676A、並びに、実装される場合は仮想化レイヤ654及びソフトウェアコンテナ662A〜Rのインスタンス化は、まとめてソフトウェアインスタンス652と呼ばれる。
【0077】
いくつかの実施形態において、CCPインスタンス676Aは、ネットワークコントローラインスタンス678を含む。ネットワークコントローラインスタンス678は、(ネットワークコントローラ578のコンテキストをオペレーティングシステムに提供し、多様なNEと通信するミドルウェアレイヤである)集中型到達可能性/転送情報モジュールインスタンス679、並びに(プロトコル、ネットワーク状況認識、及びユーザインタフェースなどの多様なネットワーク動作に必要なインテリジェンスを提供する)ミドルウェアレイヤ上のCCPアプリケーションレイヤ680(アプリケーションレイヤと呼ばれることもある)を含む。より多くの抽象レベルにおいて、集中型制御プレーン576内のこのCCPアプリケーションレイヤ680は、仮想ネットワークビュー(ネットワークの論理ビュー)で動作し、ミドルウェアレイヤは、仮想ネットワークから物理ビューへの変換を提供する。
【0078】
集中型制御プレーン576は、CCPアプリケーションレイヤ680計算及び各フローにマッピングするミドルウェアレイヤに基づいて、関連メッセージをデータプレーン580へ送信する。フローは、ヘッダが所与のビットパターンに合致するパケットのセットとして定義されてもよい。この意味において、従来のIP転送もまた、フローベース転送であり、その中でフローは例えば宛先IPアドレスによって定義される。一方、他の実装では、フロー定義に使用される所要のビットパターンは、パケットヘッダ内により多くの(例えば、10以上の)フィールドを含んでもよい。データプレーン580の異なるND/NE/VNEは、異なるメッセージ、したがって異なる転送情報を受信してもよい。データプレーン580は、これらのメッセージを処理し、適切なフロー情報及び適切なNE/VNEの転送テーブル(フローテーブルと呼ばれることもある)内の対応するアクションをプログラムし、次いで、NE/VNEは、転送テーブル内の合致に基づいて、到来したパケットを、転送テーブル及び転送パケット内に表されるフローにマッピングする。
【0079】
OpenFlowなどの標準は、メッセージに使用されるプロトコル、及びパケットを処理するためのモデルを定義する。パケットを処理するためのモデルは、ヘッダ分析、パケット分類、及び転送決定を行うことを含む。ヘッダ分析は、既知のプロトコルのセットに基づいてパケットを解釈する方法を記述する。いくつかのプロトコルフィールドは、パケット分類において使用されるマッチ構造(又はキー)を構築するために使用される(例えば、第1のキーフィールドは、ソースメディアアクセス制御(MAC)アドレスであってもよく、第2のキーフィールドは、宛先MACアドレスであってもよい)。
【0080】
パケット分類は、メモリ内のルックアップを実行して、転送テーブル内のどのエントリ(転送テーブルエントリ又はフローエントリとも呼ばれる)が、マッチ構造又は転送テーブルエントリのキーに基づいてパケットに最も合致するかを判断することによって、パケットを分類することを包含する。転送テーブルエントリ内で表現される多くのフローがパケットに対応/合致してもよく、この場合、システムは、典型的には、定義された方式(例えば、照合される第1の転送テーブルエントリを選択すること)に従って多くの中から1つの転送テーブルエントリを決定するように構成されることが可能である。転送テーブルエントリは、照合基準の固有のセット(値又はワイルドカードのセット、又はパケットヘッダ内の固有のフィールドについて、又はいくつかの他のパケットコンテンツについて、照合ケイパビリティによって定義される、パケットのどの部分が特定の値/値の集合/ワイルドカードと比較されるべきかの指標)、及び合致するパケットの受信時にとられる、データプレーンのための1つ以上のアクションのセットの双方を含む。例えば、アクションは、ヘッダをパケットにプッシュすることであってもよく、具体的なポートを使用するパケットの場合、パケットをフラッディングすること、又は単にパケットを破棄することであってもよい。したがって、特定のTCP(transmission control protocol)宛先ポートを有するIPv4/IPv6パケットについての転送テーブルエントリは、これらのパケットが破棄されるべきであることを特定するアクションを含んでもよい。
【0081】
転送決定を行うこと及びアクションを実行することは、パケット分類中に識別される転送テーブルエントリに基づいて、パケット上の合致する転送テーブルエントリにおいて識別されるアクションのセットを実行することによって、発生する。
【0082】
一方、未知のパケット(例えば、OpenFlow用語で用いられる“missed packet”又は“match-miss”)が、データプレーン580に到達すると、パケット(又はパケットヘッダ及びコンテンツのサブセット)は、典型的には、集中型制御プレーン576に転送される。集中型制御プレーン576は、次いで、未知のパケットのフローに属するパケットに対処するように、転送テーブルエントリをデータプレーン580にプログラムする。一旦固有の転送テーブルエントリが集中型制御プレーン576によってデータプレーン580にプログラムされると、合致する資格(credentials)を伴う次のパケットは、その転送テーブルエントリに合致し、その合致するエントリに関連付けられるアクションのセットがとられることになる。
【0083】
ネットワークインタフェース(NI)は、物理的であっても又は仮想的であってもよく、IPのコンテキストにおいて、インタフェースアドレスは、NIに割り当てられたIPアドレスであり、それは物理NI又は仮想NIとされる。仮想NIは、別の仮想インタフェースで物理NIに関連付けられてもよく、又は自立していてもよい(例えば、ループバックインタフェース、ポイントツーポイントプロトコルインタフェース)。NI(物理又は仮想)は、番号が付されてもよく(IPアドレス付きNI)、又は番号が付されなくてもよい(IPアドレスなしNI)。ループバックインタフェース(及びそのループバックアドレス)は、管理のためにしばしば使用されるNE/VNE(物理又は仮想)の仮想NI(及びIPアドレス)の固有のタイプである。その場合、そのようなIPアドレスは、ノーダルループバックアドレスと呼ばれる。NDのNIに割り当てられたIPアドレスは、そのNDのIPアドレスと呼ばれる。より粒度の細かいレベルでは、ND上に実装されるNE/VNEに割り当てられるNIに割り当てられるIPアドレスがそのNE/VNEのIPアドレスと呼ばれ得る。
【0084】
図面のフロー図は、本発明のある実施形態によって実行される動作の具体的な順序を示しているが、そのような順序は例示である(例えば、代替的な実施形態は、異なる順序で動作を実行し、ある複数の動作を組み合わせ、ある複数の動作を重複させるなどしてもよい)と理解されるべきである。
【0085】
本発明は、複数の実施形態の観点で説明されているものの、本発明が説明された実施形態に限定されず、添付された特許請求の範囲の思想及びスコープの範囲内の修正及び変更と共に実践され得ることを、当業者は認識するであろう。従って、本説明は、限定ではなく例示と見なされるべきものである。