以下の説明において、論理実装、演算コード、オペランドを指定するための手段、リソースパーティショニング/共有/複製の実装、システムコンポーネントのタイプおよび相互関係、ならびに論理パーティショニング/融合を選ぶことなどの数多くの具体的詳細が、本発明のより徹底的な理解を提供するために明記される。しかしながら、そのような具体的詳細なしに本発明を実践することができることは、当業者によって認識されるであろう。他の事例において、制御構造、ゲートレベル回路、および全ソフトウェア命令のシーケンスは、本発明を曖昧にしないように詳細には示されていない。当業者は、含まれる説明により、過度の実験をせずに適切な機能性を実装することができるであろう。
本明細書における「一実施形態(one embodiment、an embodiment)」、「例示的な実施形態」などへの言及は、説明される実施形態が特定の特徴、構造、または特性を含み得ることを指し示すが、あらゆる実施形態が必ずしもその特定の特徴、構造、または特性を含まなくてもよい。その上、そのような言い回しは、必ずしも同じ実施形態に言及しているのではない。さらに、特定の特徴、構造、または特性がある実施形態に関して説明されるとき、明示的に説明されているか否かにかかわらず、他の実施形態に関してそのような特徴、構造、または特性を影響させることは、当業者の知識の範囲内であるものとする。
角括弧付きテキストおよび破線枠のブロック(たとえば、大破線、小破線、点鎖線、および点)が、いくつかの実施形態に追加的な特徴を追加するオプションの動作を表すために本明細書で使用されることがある。しかしながら、そのような表記は、これらだけがオプションもしくはオプションの動作である、および/または一定の実施形態において実線枠のブロックはオプションではない、と意味するように取られるべきでない。
以下の説明および特許請求の範囲において、「結合される(coupled)」および「接続される(connected)」という用語が、その派生語と共に使用されることがある。これらの用語は、互いに同義語として意図されないことを理解すべきである。「結合される」は、互いに直接物理的にまたは電気的に接触していてもいなくてもよい2つ以上のエレメントが、互いに協働する、または相互作用することを指し示すために使用される。「接続される」は、互いに結合された2つ以上のエレメント間での通信の確立を指し示すために使用される。
SRネットワークにおいて、コントローラは、1つまたは複数のセグメント識別子(SID)(「ラベルスタック」とも称される)を決定することを課せられてよく、セグメント識別子は、ネットワークトラフィックにSRネットワークにおける特定のパスを通過することを許可するために、ネットワークエレメントによって、そのトラフィックに追加されることになる。たとえば、ネットワークエレメント(たとえば、SRネットワーク区間のエッジにおけるエッジルータ)は、SRネットワークにわたって転送されることになるパケットを受信し、パケットの中に挿入されることになる設定されたSIDの組を決定し、SIDのラベルを追加することができる。これらのSIDは、トラフィックがどのように転送されるべきかを迅速に識別するために、SRネットワークにおける他のネットワークエレメントによって検査されてよい。パケットがSRネットワークを通して動くにつれ、これらのSIDは、特定のセグメント(またはパスの区間)が完了されると、剥がされて(または「ポップされて」)よい。それに応じて、コントローラは、SIDの特定の組をトラフィックに位置付けるために、トラフィックを最初に受信するネットワークエレメントを設定して、トラフィックが適切に転送されることを保証することができる。
しかしながら、(ネットワークエレメントの機能性を提供する)多くのネットワークデバイスは、ハードウェアおよび/またはソフトウェアに基づいた限定を有しており、これにより、ネットワークデバイスがどのようにトラフィックを処理することができるかが限定される。たとえば、異なるネットワークデバイスは、異なる数のSIDをトラフィックの中に挿入する異なる性能を有し、ネットワークデバイスの異なるコンポーネント(たとえば、ラインカード)でさえ、すなわち、単一のネットワークデバイス内でさえ、異なる数のSIDをトラフィックの中に挿入する異なる性能を有することがある。たとえば、単一のネットワークデバイスが4つのラベルのみを投入することができる第1のラインカードを用いることがあり、同時にその単一のネットワークデバイスの第2のラインカードが12のラベルを投入することがあり、また同時にその単一のネットワークデバイスの第3のラインカードが16のラベルを投入することがある。
したがって、集中型コントローラ(たとえば、パス計算エレメント(PCE)またはSDNコントローラ)によってSRトンネルが計算されるとき、特定のノードがトラフィックの中に挿入できるものよりも深い(すなわち、大きい)SIDの組を有するパス/トンネルを、コントローラが作成しようとしないように、コントローラがそのノードの「最大SID深度」(すなわち、「MSD」)を知っていることが重要である。
たとえば、コントローラが、6つのラベル(SID)の挿入を要求する一組のトラフィックのためにパスを選択する場合、トラフィックの中に3つのラベルを挿入する能力しか持たないネットワークエレメントによって、このパスを実装することはできない。そのような状況においては、ネットワーク輻輳、ドロップしたトラフィック、およびネットワーク障害を引き起こしかねない多様な問題が生じ得る。
それに応じて、パス計算エレメント通信プロトコル(PCEP)の拡張を使用する(たとえば、コントローラと、転送プレーンとしてサーブするそのネットワークエレメントとの間のサウスバウンドインターフェースを介して、おそらくはPCEP OPENメッセージ内でTLVを使用する)、この問題に向けた取り組みが、ネットワークエレメントのためのMSD値をコントローラに提供することをネットワークエレメントに許可することによってなされてきた。したがって、ネットワークエレメントは、投入することができるSIDの最大深度を報告することができ、コントローラは、トラフィックのためのパスを決定するときにこの最大深度を考慮に入れることができ、それにより、コントローラは、ネットワークエレメントによって挿入され得るよりも多いSIDを有するパスを作成しないようにする。
この進展は確かに有用であるものの、PCEPが使用されていない(または使用できない)多くの環境においてはなおも不十分であり、したがって、ネットワークエレメントは、そのMSDをコントローラに報告することができない。たとえば、多くの環境において、一定のネットワークエレメント(たとえば、SRトンネルのヘッドエンドにあるネットワークエレメント)は、PCEPをサポートしていない。(加えて、この情報を提供するためのボーダーゲートウェイプロトコル(BGP)を使用するためのいかなる取り組みも、多くの配置におけるネットワークエレメントがやはりBGPをサポートしない、すなわち「話さない」ことがあるので、同様に問題となる)
さらに、単一のネットワークデバイスが多数のリンク上で多数の性能(たとえば、異なるラインカードからの異なる性能)を有することがある環境において、上述したPCEPアプローチは、デバイスのいくつかのコンポーネントの能力を事実上「無駄にする」。たとえば、PCEPを使用することは、念のために、ネットワークエレメントが、そのMSD値として、そのコンポーネントの全部がサポートすることができる最も小さい/最も低いMSD性能を報告しなければならないことは明らかである。したがって、これらのコンポーネントがより大きな数のSIDを投入し得るのに、そのようなSIDを、コントローラが使用のためにネットワークエレメントに提供することを許可されないという理由で、そうすることができないため、これは、いかなるより大きな性能のコンポーネントの余った性能も「無駄にする」。たとえば、3つのラベルを投入できる第1のラインカードを有し、かつ16のラベルを投入できる第2のラインカードを有するネットワークデバイスの場合、ネットワークデバイスは、3つのみのMSD値を報告し返す必要があり、したがって、コントローラは、3つのラベルのパスしかネットワークデバイスに提供することができない。すなわち、第2のラインカードがより大きなSIDの組を扱うことができるという事実にもかかわらず、ネットワークデバイスが利用することができるパスをひどく限定するものと思われる。
それに応じて、これらの欠点を是正することができる改善された技法が望ましい。
本明細書で説明されるように、いくつかの実施形態において、OSPFプロトコルまたは中間システム間(IS−IS)プロトコルなどのラベル配布プロトコル(LDP)を使用して、MSD値をコントローラに報告し返し、それによって、PCEPが利用される必要性を排除することができる。その上、いくつかの実施形態において、ネットワークエレメントは、そのリンク(たとえば、ラインカード)の多数についてのMSDを(コントローラに)オプションで報告することができ、それにより、SIDに対処することができるそれらのリンクのためのより長いSIDの組を検討する、および/または導入することによって、コントローラにネットワークの性能をより十分に利用することを許可することができる。
図1は、いくつかの実施形態に従って、最大ノードおよび/またはリンクセグメント識別子深度を明らかにするように設定されたSR対応ネットワーク120内で、通信可能に結合されたネットワークエレメント102A〜102Fのシステム100を表す高レベルブロック図である。このシステムは、コントローラ104と、SRネットワーク120の転送プレーンとしてサーブする6つのネットワークエレメントA〜F(102A〜102F)とを含む。この例において、コントローラ104と、少なくともネットワークエレメント「A」102Aとの間には、PCEPチャネル116は存在しないものと仮定する。とりわけ、PCEPチャネル116は、他のネットワークエレメントB〜F(102B〜102F)の間には存在しても、しなくてもよい。
この例において、丸印「1」によって表すように、ネットワークエレメント「A」102Aは、MSD値112(たとえば、2)を決定し、MSD値112をTLVエレメント110内でアドバタイズする。いくつかの実施形態において、このTLVエレメント110は、OSPF LSAまたはIS−IS TLV内などのIGPアドバタイズの一部として送られる。当業者に知られているように、このアドバタイズは、ネットワークエレメント「A」102Aがコントローラと直接通信していないと思われるとき、多様な物理通信パスを移動することができ、代わりに、アドバタイズされたTLV110が、他のIGP参加ノードへと通じるそのインターフェースの1つもしくは複数(または全部)に送り出されてもよく、結局のところ、アドバタイズされたTLV110は、丸印「2」でコントローラ104に提供されてよい。
この時点で、コントローラ104は、ネットワークエレメント「A」102Aで最初に受信される、SRネットワーク120を通過することになるトラフィックのためのパスを決定する際に、ネットワークエレメント「A」102AのMSD値112を使用することができる。それに応じて、識別可能なトラフィックのグループ(たとえば、パケット150Aなどの、フローまたは他の一意に識別可能なトラフィックのタイプ)のためのパスを作成しようとするとき、コントローラ104は、プログラムされるべき候補のパスのその検討を、ネットワークエレメント「A」102Aによって投入されることになるSIDの同数(またはより小さな数)を要求するパスのみに限定することができる。したがって、いくつかの実施形態において、MSD値112は、TE要件/制約と同様にコントローラ104によって処遇され、したがって、最終的に選択され得るパスの可能性を限定することができる。
この例において、コントローラ104は、丸印「3」で、ネットワークエレメント「A」102Aの報告されたMSD値112を超えないSIDの数を有するパス114で、ネットワークエレメント「A」102Aをプログラムすることになる(たとえば、SID152の組などのパス情報を含むデータと共にネットワークエレメント「A」102Aにメッセージを送信する)。ここで、有効なパス122が選択され、パス122は、たとえば、ネットワークエレメント「C」102Cおよびネットワークエレメント「E」102Eを通過するために、1つまたは2つのSIDを利用することができる。その後、トラフィック(たとえば、丸印「4」でのパケット150A)を受信すると、ネットワークエレメント「A」102Aは、SIDの組を識別し、SIDの組をそのトラフィックの中に投入することができ、丸印「5」で、有効なパス122を使用して、トラフィック(転送されるパケット150B)がその宛先に向けて送られるという結果になる。
例証のために、図1はまた、コントローラ104によって検討されている可能性があるものの、報告されたMSD値112よりも大きなSIDラベルスタック、たとえば4つのラベルを要求するという事実のために無効なパス124を示している。とりわけ、先行システムは、コントローラ104がネットワークエレメント「A」102Aの性能に気付いていないせいで、このパスを利用しようとしていた可能性があり、このことは、本明細書で説明される実施形態であれば回避できるネットワーク問題を招いていたことになる。
先に説明したように、MSD値112は、OSPFおよびIS−ISを含む多様なIGPプロトコルを使用してアドバタイズすることができるが、これらのプロトコルに限定はされない。
OSPF
たとえば、図2は、いくつかの実施形態に従って、最大ノードセグメント識別子深度を明らかにするために使用され得る、OSPFノードMSD TLVエレメント110A、OSPFノードMSD TLV110Aを搬送するOSPFv2ルータ情報オペークLSA210、およびOSPFノードMSD TLV110Aを搬送するOSPFv3ルータ情報オペークLSA250を表す。
いくつかの実施形態において、OSPFノードMSD TLV110Aは、ノード(またはネットワークエレメント)レベルの粒度の「ノード」MSD値112Aをアドバタイズするために利用されてよい。多数の異なるサポートされるSID深度が単一のネットワークエレメントに適用され得る(たとえば、ネットワークデバイスが異なる投入可能なSID深度を持つ多数の異なるラインカードを有する)いくつかの実施形態において、MSD値は、サポートされる多数のSID深度のうちの最も低い値であってよい。このOSPFノードMSD TLV110Aは、OSPFノードMSD TLV110Aそれ自体を識別する一意の値(たとえば、特定のシステムにおいて、または特定の標準に従って、利用されるTLVの特定の組内で一意)であってよい2バイトの型の値202、TLV110Aの「値」部分の、すなわちノードMSD値112Aの、長さを指し示す2バイトの長さ値204を含む。
いくつかの実施形態において、ノードMSD値112Aは、ゼロ(「0」)から254の範囲で数を表現する値を含む2バイト値である。いくつかの実施形態において、ゼロの値は、送信する側のネットワークエレメントの、任意の深度のSIDをプッシュする能力が不足していることを表現することができ、その他の値は、ノードによってサポートされるSIDのその特定の数を表現することができる。再度、いくつかの実施形態において、(たとえば、ネットワークエレメントにおけるラインカードの異なるタイプのために)サポートされるSID投入可能な深度の多数の異なるリンクレベル値が可能であるとき、この値は、ノードによってサポートされる最も低い値を表現することができる。とりわけ、いくつかの実施形態において、このOSPFノードMSD TLV110Aの使用はオプションであり、したがって、TLV110Aは、アドバタイズされても、されなくてもよい。
しかしながら、いくつかの実施形態において、OSPFノードMSD TLV110Aは、インターネットエンジニアリングタスクフォース(IETF)リクエストフォーコメント(RFC)4970によって説明されているOSPFv2ルータ情報オペークLSA210によって搬送されてもよい。このOSPFv2ルータ情報オペークLSA210は、2バイトのリンク状態(LS)エイジ212フィールドと、1バイトのオプション214フィールドと、「9」または「10」または「11」の表現を搬送する1バイトと、「4」の表現(オペークタイプ値)を搬送する1バイトと、「0」の表現(オペークID値)を搬送する3バイトと、アドバタイズするルータ216識別子の4バイトと、LSシーケンス番号218の4バイトと、LSチェックサム220の2バイトと、続くTLV224のサイズの長さ222の2バイトと、この新しいノードMSD TLV110Aを搬送することができるTLV224とを含むことができる。
同様に、いくつかの実施形態において、OSPFノードMSD TLV110Aは、やはりIETF RFC4970によって説明されているOSPFv3ルータ情報オペークLSA250によって搬送されてもよい。このOSPFv3ルータ情報オペークLSA250は、OSPFv2ルータ情報オペークLSA210といくつかの同様の、およびいくつかの異なるフィールド/値を含み、同様に、そのTLV224フィールドにおいて新しいノードMSD TLV110Aを搬送する。
上に示唆したように、いくつかの実施形態において、ネットワークエレメントは、ネットワークエレメントのSID投入サイズについて異なる性能を報告することができる。図3を見てみると、いくつかの実施形態に従って、最大リンクセグメント識別子深度を明らかにするために使用され得る、OSPFリンクMSDサブTLVエレメント110B、OSPFリンクMSDサブTLVを搬送するOSPFv2拡張リンクTLV308、およびOSPFリンクMSDサブTLVを搬送するOSPFv2リンクTLV330の例証が提供されている。
いくつかの実施形態において、ネットワークエレメントは、1つまたは複数のOSPFリンクMSDサブTLV110Bをアドバタイズすることができ、たとえば、ネットワークエレメントのリンクごとに1つ、アドバタイズすることができる。リンクMSDサブTLV110Bは、リンクMSDサブTLV110Bそれ自体を特定のコンテキスト内で識別する一意の識別子を含む2バイトの型302フィールド、TLVの「値」部分の、すなわちリンクMSD値112Bの、長さを指し示す2バイトの長さ値304を含むことができる。いくつかの実施形態において、リンクMSD値112Bは、0〜254の範囲における数である2バイト値であってよく、ここで、0は、任意の深度のSIDをプッシュする能力が不足していることを表現し、その他の値は、その特定のリンクについてのSIDのその数を表現する。
それに応じて、いくつかの実施形態において、ネットワークエレメントは、多数のOSPFリンクMSDサブTLV110Bを使用して、異なるMSD値(すなわちリンクMSD値112B)をアドバタイズすることができる。
1つまたは複数のリンクMSDサブTLV110Bを搬送するために使用され得る1つの例示的なOSPFメッセージは、IETF RFC7684によって説明されているOSPFv2拡張リンクTLV308であり、TLV308自体は、OSPFv2拡張リンクオペークLSA内で搬送されてよい。OSPFv2拡張リンクTLV308は、2バイトの型310と、2バイトの長さ312と、1バイトのリンクタイプ314と、予約済み空間の3バイトと、4バイトのリンク識別子318と、4バイトのリンクデータ320値と、ゼロ以上のサブTLV324とを含むことができ、サブTLV324で、1つまたは複数のリンクMSDサブTLV110Bがオプションで搬送されてもよい。
同様に、いくつかの実施形態において、ネットワークエレメントは、IETF RFC3630によって説明されているOSPFv2リンクTLV330を使用することができ、TLV330自体は、TE LSAによって搬送されてよい。OSPFv2リンクTLV330は、型332、長さ334、および可変数のサブTLV336を含むことができ、サブTLV336は、リンクタイプサブTLV338、リンク識別子サブTLV340、およびオプションで、リンクMSDサブTLV110B、ローカルインターフェースIPアドレス342、リモートインターフェースIPアドレス344、TEメトリック346、最大帯域幅348、最大予約可能な帯域幅350、予約されていない帯域幅352、および/またはアドミングループ354値を含む。いくつかの実施形態において、各OSPFv2リンクTLV330は、1つのみのリンクMSDサブTLV110Bを搬送することができ、したがって、多数のリンクMSDサブTLV110Bをアドバタイズするためには、多数のOSPFv2リンクTLV330が、(たとえば、TE LSA内で)ネットワークエレメントによって送られてよい。
加えて、図4は、いくつかの実施形態に従って、最大リンクセグメント識別子深度を明らかにするために使用され得る、図3のOSPFリンクMSDサブTLVを搬送するOSPFv3ルータ−リンクTLV400を表す。OSPFv3ルータ−リンクTLV400は、2バイトのルータ−リンクタイプ210(たとえば、「1」の値を有する)と、2バイトの長さ212と、1バイトの型214と、1バイトの0の表現と、2バイトのメトリック402と、4バイトのインターフェース識別子404と、4バイトの近隣インターフェース識別子406と、4バイトの近隣ルータ識別子408と、リンクMSDサブTLV110Bを搬送することができる可変量のサブTLV418とを含むことができる。
IS−IS
先に説明したように、PCEPを使用せずに、ネットワークエレメントの最大ノードおよび/またはリンクセグメント識別子深度をコントローラに対して明らかにするために、さまざまなIGPプロトコルを利用することができる。たとえば、いくつかの実施形態は、IS−ISを利用する。図5は、いくつかの実施形態に従って、最大ノードセグメント識別子深度を明らかにするために使用され得る、IS−ISノードMSDサブTLVエレメント110C、およびIS−ISノードMSDサブTLVを搬送するIS−ISルータ性能TLV506を表す。
いくつかの実施形態において、IS−ISノードMSDサブTLVエレメント110Cは、特定のコンテキスト内で、IS−ISノードMSDサブTLVエレメント110Cを、IS−ISノードMSDサブTLVエレメント110Cであるとして一意に(たとえば、特定の用法シナリオにおける全てのタイプのサブTLVにわたって一意である)識別する値を搬送する、1バイトの型502を含む。IS−ISノードMSDサブTLVエレメント110Cはまた、ノードMSD値112Aを搬送するサブTLVの「値」区間の、長さを指し示す1バイトの長さ504値を含むことができ、ノードMSD値112Aは、いくつかの実施形態において2バイトである。
図2に関して提示されたノードMSD値112Aと同様に、このノードMSD値112Aもまた、ゼロ(「0」)から254の範囲で数を表現する2バイト値であってよい。いくつかの実施形態において、ゼロの値は、送信する側のネットワークエレメントの、任意の深度のSIDをプッシュする/投入する能力が不足していることを表現することができ、その他の値は、ノードによってプッシュされ得る/投入され得るその特定の数のSIDを表現することができる。再度、いくつかの実施形態において、(たとえば、ネットワークエレメントにおける異なるタイプのラインカードのために)サポートされるSID投入可能な深度の多数の異なるリンクレベル値が可能であるとき、この値は、ノードによってサポートされる最も低い値を表現することができる。
IS−ISを利用するシステムにおいて、IS−ISノードMSDサブTLVエレメント110Cは、たとえば、IETF RFC4971によって規定されるように、IS−ISルータ性能TLV506を使用してアドバタイズされてよい。いくつかの実施形態において、このIS−ISルータ性能TLV506は、1バイトの型508と、1バイトの長さ510値と、可変長の「値」512区間とを含む。いくつかの実施形態において、可変長の値512区間は、4バイトのルータ識別子514と、フラグ516の1バイトと、(オプションで)IS−ISノードMSDサブTLVエレメント110Cを搬送することができる可変量のサブTLV324とを含むことができる。
OSPFでのように、リンクレベルMSD値が、IS−ISを利用するシステムにおいて同様にアドバタイズされてもよい。図6は、いくつかの実施形態に従って、最大リンクセグメント識別子深度を明らかにするために使用され得る、IS−ISリンクMSDサブTLVエレメント110D、および数個のタイプのIS−IS TLV(606/630)を表す。
いくつかの実施形態において、新しいIS−ISリンクMSDサブTLV110Dが、リンク毎のMSD値を搬送するために使用されてよい。たとえば、IS−ISリンクMSDサブTLV110Dは、このサブTLVの型を一意に識別する1バイトの型602、2バイトのリンクMSD値112BであるサブTLVの「値」区間の、1バイトの長さ604値を含むことができる。
IS−ISリンクMSDサブTLV110Dは、使用のコンテキストに応じて、多様な異なるIS−IS TLVによって搬送されてよい。たとえば、1つまたは複数のIS−ISリンクMSDサブTLV110Dは、IETF RFC5035によって説明されているようにIS−IS「型22」拡張IS到達可能性TLV606Aによって、またはIETF RFC5311によって説明されているようにIS−IS「型23」IS近隣属性TLV606Bによって搬送されてもよい。
これらのTLV606A〜606Bは、1バイトの(「22」または「23」の)型608と、TLVの「値」、すなわち7バイトのシステムIDおよび擬似ノード番号612の、1バイトの長さ610と、3バイトのデフォルトメトリック614と、1バイトのサブTLV長さ616と、1つまたは複数のIS−ISリンクMSDサブTLV110Dを含むことができる可変数のサブTLVとを含むことができる。
同様に、IS−ISリンクMSDサブTLV110Dは、IETF RFC5120によって説明されているように「型222」IS−ISマルチ−トポロジ(MT)IS TLV630Aによって、またはIETF RFC5311によって説明されているように「型223」IS−IS MT IS近隣属性TLV630Bにおいて搬送されてもよい。これらのTLV630A〜630Bは、1バイトの(「222」または「223」の)型632と、1バイトの長さ634と、予約済み4ビットと、MT識別子636の12ビットと、TLV606(たとえば、上に表すIS−IS拡張IS到達可能性TLV606A)とを含むことができる。
いくつかの実施形態において、特定のリンクについて1つのみのIS−ISリンクMSDサブTLV110Dが存在する。いくつかの実施形態において、1つのみのIS−ISリンクMSDサブTLV110Dが、特定のTLV(たとえば、上で説明したような型22/23/222/223TLV)によって搬送されるが、いくつかの実施形態においては、多数の、すなわち多数のリンクについての、IS−ISリンクMSDサブTLV110Dが、これらのTLV(たとえば、型22/23/222/223)のうちのただ1つの中に詰め込まれてもよい。
フローおよびシステムコンポーネント
図7Aは、いくつかの実施形態に従って、最大ノードおよび/またはリンクセグメント識別子深度を明らかにするためのフロー700を表す。このフロー図および図8Aのフロー図における動作を、他の図の例示的な実施形態を参照して説明する。しかしながら、フロー図の動作が、他の図を参照して議論される以外の実施形態によって実施されてもよく、これらの他の図を参照して議論される実施形態が、フロー図を参照して議論されるのとは異なる動作を実施してもよいことを理解すべきである。とはいえ、いくつかの実施形態において、フロー700は、SR対応ネットワーク120のエッジで「エッジ」ルータとして働くことができる/SRトンネル/パスの「ヘッド」エンドとして働くことができる、ネットワークエレメント「A」102Aなどの、図1のネットワークエレメントによって実施されてよい。
ブロック705で、フロー700は、MSD値を含むTLVエレメントを送信することを含む。この送信は、SRネットワークにおけるネットワークエレメントによって実施されてよく、SRネットワークにおける他のネットワークエレメントへと通じるそのリンクのうちの1つもしくは複数(または全部)に送り出されてよい。MSD値は、ネットワークエレメントが受信パケットのパケットヘッダの中にプッシュすることができるSIDラベルの最大数を識別して、SRネットワークを通した受信パケットの転送を可能にする。いくつかの実施形態において、TLVエレメントは、サブTLVであり、いくつかの実施形態においては、TLVエレメントは、「レギュラー」TLVエレメントである。
いくつかの実施形態において、TLVエレメントは、OSPFアドバタイズの一部(たとえば、LSA)であり、いくつかの実施形態においては、TLVエレメントは、IS−ISアドバタイズの一部(たとえば、TLV)である。TLVエレメントは、直接的または間接的に(たとえば、他のネットワークエレメントを介して)、最終的にはコントローラに提供されてよい。
さまざまな実施形態において、TLVエレメントは、OSPFv2ルータ情報オペークLSA210、OSPFv3ルータ情報オペークLSA250、OSPFv2拡張リンクTLV308、OSPFv2リンクTLV330、OSPFv3ルータ−リンクTLV400、IS−ISルータ性能TLV506、IS−IS「型22」拡張IS到達可能性TLV606A、IS−IS「型23」IS近隣属性TLV606B、「型222」IS−ISマルチ−トポロジ(MT)IS TLV630A、および/または「型223」IS−IS MT IS近隣属性TLV630Bによって搬送されてよい。
ブロック710で、フロー700はまた、SRネットワークを通して受信パケットを転送するために利用されることになるパスについてのデータを、コントローラから受信することを含む。データは、パスに関連付けられた任意の受信パケットの中にプッシュされることになる1つまたは複数のSIDラベルの組を含む。とりわけ、SIDラベルの組は、ブロック705で最初に送信されたMSD値よりも少ない、またはMSD値に等しい数のSIDラベルを含む。
オプションとして、ブロック715、720、725で、フロー700は、1つまたは複数のパケット(たとえば、ブロック710に関して説明されたパスに関連付けられていてよい)を受信すること、変更パケットをもたらすために、1つまたは複数のラベルの組(たとえば、SIDの組)を受信パケットの中にプッシュすること、およびパスに従って変更パケットを送信することを含むことができる。
図7Bは、いくつかの実施形態に従って、図7Aのフロー700を実施することができるネットワークエレメント102Aの高レベルブロック図750を表す。
本明細書で図示された各モジュールを物理的に別々のユニットとして実装することは、厳密には必要ではない。いくつかまたは全部のモジュールを1つの物理ユニットに組み合わせてもよい。また、モジュールは、厳密にハードウェアで実装される必要はない。ハードウェアとソフトウェアとの組合せを通して、ユニットを実装してもよいことが想定される。たとえば、電子デバイス752は、モジュールの機能を実施するために、非一時的なストレージ媒体またはファームウェアに記憶されたプログラム命令を実行する1つまたは複数の中央処理ユニットを含むことができる。
電子デバイス752は、ネットワークエレメント102Aを実装し、送信モジュール754と、受信モジュール756とを含むことができる。
送信モジュール754は、MSD値を含むTLVエレメントを送信するように適合されてよく、ここでMSD値は、ネットワークエレメントが受信パケットのパケットヘッダの中にプッシュすることができるSIDラベルの最大数を識別して、SRネットワークを通した受信パケットの転送を可能にする。TLVエレメントは、OSPFプロトコルを利用して送信されてよい。いくつかの実施形態において、送信モジュール754は、図7Aのフロー700のブロック705を実施することができる。
受信モジュール756は、SRネットワークを通して受信パケットを転送するために利用されることになるパスについてのデータを、コントローラから受信するように適合されてよく、ここでデータは、パスに関連付けられた受信パケットの中にプッシュされることになる1つまたは複数のSIDラベルの組を含み、SIDラベルの組は、MSD値よりも少数の、またはMSD値に等しい数のSIDラベルを有する。いくつかの実施形態において、受信モジュール756は、図7Aのフロー700のブロック710を実施することができる。
いくつかの実施形態において、電子デバイス752は、図7Aのフロー700のブロック715、720、および/または725を実施するための1つもしくは複数のモジュールなどの、表されていない他のモジュールを含むことができ、場合により、本明細書で開示される他の動作を実施するための、表されていない他のモジュールを含むことができる。したがって、図示された実施形態は、例証であり、限定するものではない。
図8Aは、いくつかの実施形態に従って、明らかにされた最大ノードおよび/またはリンクセグメント識別子深度を利用するためのフロー800を表す。いくつかの実施形態において、フロー800は、図1のコントローラ104などのコントローラによって実施されてよい。
ブロック805で、フロー800は、SRネットワークの複数のネットワークエレメントのうちの第1のネットワークエレメントから、MSD値を含むTLVエレメントを受信することを含む。MSD値は、第1のネットワークエレメントが受信パケットのパケットヘッダの中にプッシュすることができるSIDラベルの最大数を識別して、SRネットワークを通した受信パケットの転送を可能にする。
いくつかの実施形態において、TLVエレメントは、OSPFアドバタイズの一部(たとえば、LSA)であり、いくつかの実施形態においては、TLVエレメントは、IS−ISアドバタイズの一部(たとえば、TLV)である。TLVエレメントは、直接的または間接的に(たとえば、他のネットワークエレメントを介して)、発信するネットワークエレメントからコントローラに提供されてよい。
いくつかの実施形態において、TLVエレメントは、サブTLVであり、いくつかの実施形態においては、TLVエレメントは、「レギュラー」TLVエレメントである。
さまざまな実施形態において、TLVエレメントは、OSPFv2ルータ情報オペークLSA210、OSPFv3ルータ情報オペークLSA250、OSPFv2拡張リンクTLV308、OSPFv2リンクTLV330、OSPFv3ルータ−リンクTLV400、IS−ISルータ性能TLV506、IS−IS「型22」拡張IS到達可能性TLV606A、IS−IS「タイプ23」IS近隣属性TLV606B、「型222」IS−ISマルチ−トポロジ(MT)IS TLV630A、および/または「型223」IS−IS MT IS近隣属性TLV630Bによって搬送されてよい。
ブロック810で、フロー800は、MSD値に基づいて、識別可能なトラフィックの組について、複数のネットワークエレメントのうちの第1のネットワークエレメントから第2のネットワークエレメントへのパスを決定することを含む。パスは、1つまたは複数のSIDラベルの組によって表現されてよい。セグメント識別子ラベルの組におけるSIDラベルの数は、必然的にブロック805で受信したMSD値よりも少ない、またはMSD値に等しい。
いくつかの実施形態において、ブロック810は、いかなる選択されたパスもMSD値を超える対応する数のSIDを有することがないように、受信したMSD値を制約として使用してパス発見プロセスを実施することを含む。たとえば、いくつかの実施形態において、ブロック810は、パスの候補の組を識別することと、第1のネットワークエレメントによって報告されたMSD値を超える、(たとえば、第1のネットワークエレメントによって)トラフィックの中にプッシュされることになるSIDの数を、パスが要求することになるという決定に基づいて、候補のパスのうちの1つまたは複数を検討から排除することとを含む。
MSD値が第1のネットワークエレメントの第1のリンクについての「リンク」MSD値である実施形態において、ブロック805はまた、第1のネットワークエレメントの1つまたは複数の追加リンクについての1つまたは複数の追加のMSD値を受信することを含んでもよい。このケースにおいて、それらのさまざまなリンクを使用するパスを識別しようとするときに、さまざまなリンクのMSD性能を検討することができるように、ブロック810の決定は、これらのMSD値のうちの1つまたは複数に基づくことができる。
ブロック815で、フロー800は、SRネットワークを通して受信パケットを転送するためにネットワークエレメントによって利用されることになるパスについてのデータを、第1のネットワークエレメントに送信することを含む。データは、識別可能なトラフィックの組の受信パケットの中にプッシュされることになるSIDラベルの組を含む。
図8Bは、いくつかの実施形態に従って、図8Aのフロー800を実施することができるコントローラ104の高レベルブロック図850を表す。
本明細書で図示された各モジュールを物理的に別々のユニットとして実装することは、厳密には必要ではない。いくつかまたは全部のモジュールを1つの物理ユニットに組み合わせてもよい。また、モジュールは、厳密にハードウェアで実装される必要はない。ハードウェアとソフトウェアとの組合せを通して、ユニットを実装してもよいことが想定される。たとえば、電子デバイス852は、モジュールの機能を実施するために、非一時的なストレージ媒体またはファームウェアに記憶されたプログラム命令を実行する1つまたは複数の中央処理ユニットを含むことができる。
電子デバイス852は、受信モジュール854、決定モジュール856、および/または送信モジュール858を含むことができるコントローラ104を実装することができる。
受信モジュール854は、セグメントルーティングネットワークの複数のネットワークエレメントのうちの第1のネットワークエレメントから、MSD値を含むTLVエレメントを受信するように適合されてよく、MSD値は、第1のネットワークエレメントが受信パケットのパケットヘッダの中にプッシュすることができるSIDラベルの最大数を識別して、SRネットワークを通した受信パケットの転送を可能にする。TLVエレメントは、OSPFプロトコルを利用して送られてよい。いくつかの実施形態において、受信モジュール854は、図8Aのフロー800のブロック805を実施することができる。
決定モジュール856は、MSD値に基づいて、1つまたは複数のSIDラベルの組を含む識別可能なトラフィックの組について、複数のネットワークエレメントのうちの第1のネットワークエレメントから第2のネットワークエレメントへのパスを決定するように適合されてよく、SIDラベルの組におけるSIDラベルの数は、MSD値よりも少ない、またはMSD値に等しい。いくつかの実施形態において、決定モジュール856は、図8Aのフロー800のブロック810を実施することができる。
送信モジュール858は、SRネットワークを通して受信パケットを転送するためにネットワークエレメントによって利用されることになるパスについてのデータを、第1のネットワークエレメントに送信するように適合されてよく、ここでデータは、識別可能なトラフィックの組の受信パケットの中にプッシュされることになるSIDラベルの組を含む。いくつかの実施形態において、送信モジュール858は、図8Aのフロー800のブロック815を実施することができる。
いくつかの実施形態において、コントローラ104は、本明細書で開示される他の動作を実施するための、表されていない他のモジュールを含むことができる。したがって、図示された実施形態は、例証であり、限定するものではない。
上で説明したように、いくつかの実施形態は、電子デバイスを利用する。電子デバイスは、マシン可読ストレージ媒体(たとえば、磁気ディスク、光学ディスク、読み出し専用メモリ(ROM)、フラッシュメモリデバイス、相変化メモリ)、およびマシン可読伝送媒体(搬送体とも呼ばれる)(たとえば、電気、光、無線、音響信号、または搬送波、赤外線信号などの他の形態の伝播信号)などの、マシン可読媒体(コンピュータ可読媒体とも呼ばれる)を使用して、コード(たとえば、ソフトウェア命令からなり、時にコンピュータプログラムコードもしくはコンピュータプログラムと称される)および/またはデータを、(内部的に、および/またはネットワーク上で他の電子デバイスを用いて)記憶および/または送信することができる。したがって、多くの電子デバイス(たとえば、コンピュータまたは「コンピューティングデバイス」)は、プロセッサの組で実行するためのコードを記憶する、および/またはデータを記憶するために、1つまたは複数のマシン可読ストレージ媒体に結合された1つまたは複数のプロセッサの組などの、ハードウェアおよびソフトウェアを含むことができる。
たとえば、不揮発性メモリは、電子デバイスがオフにされるとき(電源が取り外されるとき)でもコード/データを持続することができるので、電子デバイスは、コードを収容する不揮発性メモリを含むことができる。電子デバイスがオンにされている間、その電子デバイスのプロセッサによって実行されることになるコードのその部分は、通常、より低速の不揮発性メモリから、その電子デバイスの揮発性メモリ(たとえば、動的ランダムアクセスメモリ(DRAM)、静的ランダムアクセスメモリ(SRAM))の中にコピーされる。多くの電子デバイスはまた、(伝播する信号を使用してコードおよび/またはデータを送信および/または受信するために)ネットワーク接続を確立する、または別のやり方で他の電子デバイスと通信するために、1つまたは複数の物理ネットワークインターフェースの組を含む。本明細書で説明されるさまざまな実施形態の1つまたは複数の部分は、ソフトウェア、ファームウェア、および/またはハードウェアの異なる組合せを使用して実装されてよい。
ネットワークデバイス(ND)は、1つまたは複数のネットワークにおいて、他の電子デバイス(たとえば、他のネットワークデバイス、エンドユーザデバイス)を通信可能に相互接続する電子デバイスである。いくつかのネットワークデバイスは、多数のネットワーキング機能(たとえば、ルーティング、ブリッジング、スイッチング、レイヤ2アグリゲーション、セッションボーダー制御、サービス品質、および/もしくはサブスクライバ管理)のためのサポートを提供する、ならびに/または、多数のアプリケーションサービス(たとえば、データ、ボイス、およびビデオ)のためのサポートを提供する「多数サービスのネットワークデバイス」である。
図9Aは、いくつかの実施形態に従って、例示的なネットワーク内のネットワークデバイス(ND)間の接続性、ならびに3つの例示的なNDの実装を表す。図9Aは、ND900A〜900Hを示し、900A〜900B、900B〜900C、900C〜900D、900D〜900E、900E〜900F、900F〜900G、および900A〜900Gの間の、ならびに900Hと、900A、900C、900D、および900Gの各々との間のそれらの接続性を線として示す。これらのNDは、物理デバイスであり、これらのND間の接続性は、ワイヤレスであってもワイヤードであってもよい(しばしばリンクと称される)。ND900A、900E、および900Fから延びる(かつ終点で終わるように表していない)追加の線は、これらのNDがネットワークのための入口ポイントおよび出口ポイントとして働くことを表し、したがって、これらのNDは、時に「エッジ」NDと称され、一方他のNDは、「コア」NDと呼ばれてもよい。
図9Aにおける例示的なND実装のうちの2つは、1)カスタム特定用途向け集積回路(ASIC)と専用オペレーティングシステム(OS)とを含むことができる専用ネットワークデバイス902、および、2)コモンオフザシェルフ(COTS)コンポーネント(たとえば、プロセッサ)と潜在的に「標準の」OSとを使用することができる汎用ネットワークデバイス904である。
専用ネットワークデバイス902は、ネットワーキングハードウェア910を含み、ネットワーキングハードウェア910は、計算リソース912(通常、1つまたは複数のプロセッサの組を含む)、転送リソース914(通常、1つまたは複数のASICおよび/またはネットワークプロセッサを含む)、および物理ネットワークインターフェース(NI)916(時に物理ポートと呼ばれる)、ならびにネットワーキングソフトウェア920をその中に記憶した非一時的なマシン可読ストレージ媒体918を備える。
いくつかの実施形態において、ネットワーキングソフトウェア920は、MSDアドバタイズモジュール933Aを実装するために有用なMSDアドバタイズモジュールコード990Aを含むことができ、MSDアドバタイズモジュール933Aは、図7のフロー700の動作、およびこの説明全体を通して議論される動作を含む、本明細書で開示される動作を実施することができる。たとえば、MSDアドバタイズモジュール933Aは、本明細書で説明されるようにMSD値を送信するように設定された、OSPFおよび/またはIS−ISルーティングエンジンのインスタンスを備えることができる。これらのMSD値は、たとえば、物理ネットワークインターフェース916の性能に基づいて決定されてよい。
物理NIは、ND900A〜900Hの間の接続性によって示されるようなネットワーク接続が、(たとえば、ワイヤレスネットワークインターフェースコントローラ(WNIC)を通してワイヤレスで、またはネットワークインターフェースコントローラ(NIC)に接続された物理ポートにケーブルを差し込むことによって)そこを通して行われる、NDにおけるハードウェアである。
動作中、ネットワーキングソフトウェア920は、ネットワーキングハードウェア910によって実行されて、1つまたは複数のネットワーキングソフトウェアインスタンス922の組をインスタンス化することができる。ネットワーキングソフトウェアインスタンス922の各々、およびそのネットワーキングソフトウェアインスタンスを実行するネットワーキングハードウェア910のその部分(そのネットワーキングソフトウェアインスタンスに専用のハードウェアであれ、および/またはネットワーキングソフトウェアインスタンス922の他のインスタンスと共にそのネットワーキングソフトウェアインスタンスによって一時的に共有されるハードウェアのタイムスライスであれ)は、(別々の)仮想ネットワークエレメント930A〜930Rを形成することができる。仮想ネットワークエレメント(VNE)930A〜930Rの各々は、制御通信および設定モジュール932A〜932R(時にローカル制御モジュールまたは制御通信モジュールと称される)、および転送テーブル934A〜934Rを含み、それにより、所与の仮想ネットワークエレメント(たとえば、930A)は、制御通信および設定モジュール(たとえば、932A)、1つまたは複数の転送テーブルの組(たとえば、934A)、ならびに仮想ネットワークエレメント(たとえば、930A)を実行するネットワーキングハードウェア910のその区間を含む。
いくつかの実施形態において、仮想ネットワークエレメント(VNE)930A〜930Rの制御通信および設定モジュール(たとえば、932A)のうちの1つまたは複数は、MSDアドバタイズモジュールコード990Aの実行によって、インスタンス化される、または実装されるMSDアドバタイズモジュール933Aを含むことができる。
専用ネットワークデバイス902は、しばしば、物理的におよび/または論理的に、1)制御通信および設定モジュール932A〜932Rを実行する計算リソース912を備えるND制御プレーン924(時に制御プレーンと称される)と、2)転送テーブル934A〜934Rおよび物理NI916を利用する転送リソース914を備えるND転送プレーン926(時に転送プレーン、データプレーン、または媒体プレーンと称される)とを含むと考えられる。例として、NDがルータである(またはルーティング機能性を実装している)場合、ND制御プレーン924(制御通信および設定モジュール932A〜932Rを実行する計算リソース912)は、通常、どのようにデータ(たとえば、パケット)をルーティングすべきか(たとえば、データの次ホップおよびそのデータのための送出物理NI)の制御に関与することと、そのルーティング情報を転送テーブル934A〜934Rに記憶することとを担当し、ND転送プレーン926は、物理NI916上でそのデータを受信することと、転送テーブル934A〜934Rに基づいて、物理NI916のうちの適切な1つにそのデータを転送することとを担当する。
図9Bは、いくつかの実施形態に従って、専用ネットワークデバイス902を実装するための例示的なやり方937を表す。図9Bは、(通常、ホットプラグ可能な)カード938を含む専用ネットワークデバイスを表す。いくつかの実施形態において、カード938は、2つのタイプのカード(ND転送プレーン926として動作する1つまたは複数(時にラインカードと呼ばれる)、およびND制御プレーン924を実装するように動作する1つまたは複数(時に制御カードと呼ばれる))であるが、代替実施形態は、単一のカード上に機能性を組み合わせても、および/または、追加のカードタイプを含んでもよい(たとえば、ある追加のタイプのカードは、サービスカード、リソースカード、またはマルチアプリケーションカードと呼ばれる)。サービスカードは、特化した処理(たとえば、レイヤ4からレイヤ7のサービス(たとえば、ファイヤーウォール、インターネットプロトコルセキュリティ(IPSec)、セキュアソケットレイヤ(SSL)/トランスポートレイヤセキュリティ(TLS)、侵入検出システム(IDS)、ピアツーピア(P2P)、ボイスオーバIP(VoIP)セッションボーダーコントローラ、モバイルワイヤレスゲートウェイ(ゲートウェイ汎用パケット無線サービス(GPRS)サポートノード(GGSN)、エボルブドパケットコア(EPC)ゲートウェイ))を提供することができる。例として、サービスカードは、IPsecトンネルを終端し、付随する認証および暗号化アルゴリズムを実行するために使用されてもよい。これらのカードは、バックプレーン936として表す1つまたは複数の相互接続メカニズム(たとえば、ラインカードを結合する第1のフルメッシュ、およびカードの全部を結合する第2のフルメッシュ)を通して、一緒に結合される。
本明細書で開示される実施形態のコンテキスト内で、カード938は、トラフィックの中に投入することができるSIDの異なる深度を潜在的に有することができ、したがって、異なるMSD値を有することができる。たとえば、いくつかの一般的な配置シナリオにおいて、カード938は、異なるベンダによって製造されるカードを含む、または同じ製造元からの異なるモデルであるカードを含むことができ、これらのカード938は、異なるSID投入性能を有していてよい。
図9Aに戻ると、汎用ネットワークデバイス904は、ハードウェア940を含み、ハードウェア940は、1つまたは複数のプロセッサ942(しばしば、COTSプロセッサである)の組、およびネットワークインターフェースコントローラ944(NIC;ネットワークインターフェースカードとしても知られる)(物理NI946を含む)、ならびに、ソフトウェア950をその中に記憶した非一時的なマシン可読ストレージ媒体948を備える。
本明細書で説明される動作(たとえば、図7のフロー700)を実施するために、ソフトウェア950は、アプリケーション964A〜964Rの部分であってよいMSDアドバタイズモジュール(表さず)を実装するためにプロセッサ942によって実行され得るMSDアドバタイズモジュールコード990Bを含むことができる。それに応じて、このMSDアドバタイズモジュールは、「ノード」および/または「リンク」のMSD値をアドバタイズすることができ、MSD値は、NIC944の性能に基づいて決定されてよく、かつOSPFまたはIS−ISなどのIGPを使用してアドバタイズされてよい。
動作中、プロセッサ942は、ソフトウェア950を実行して、1つまたは複数のアプリケーション964A〜964Rの1つまたは複数の組をインスタンス化する。ある実施形態は、仮想化を実装しないが、代替実施形態は、異なる形態の仮想化を使用してもよい。たとえば、そのような1つの代替実施形態において、仮想化レイヤ954は、アプリケーション964A〜964Rの組のうちの1つ(または複数)を実行するために各々使用され得るソフトウェアコンテナと呼ばれる多数のインスタンス962A〜962Rの作成を見込んだ、オペレーティングシステムのカーネル(または基本オペレーティングシステム上で実行されるシム(shim))を表現する。ここで多数のソフトウェアコンテナ(仮想化エンジン、仮想プライベートサーバ、またはジェイル(jail)とも呼ばれる)は、ユーザ空間(通常、仮想メモリ空間)であり、ユーザ空間は、互いから分離され、かつオペレーティングシステムが稼働するカーネル空間から分離されている。ここで所与のユーザ空間において稼働するアプリケーションの組は、明示的に許可されない限り、他のプロセスのメモリにアクセスすることはできない。そのような別の代替実施形態において、仮想化レイヤ954は、ハイパーバイザ(時に仮想マシンモニタ(VMM)と称される)、またはホストオペレーティングシステムの上部で実行されるハイパーバイザを表現し、アプリケーション964A〜964Rの組の各々は、ハイパーバイザの上部で稼働する仮想マシンと呼ばれるインスタンス962A〜962R(いくつかのケースにおいて強固に隔離された形態のソフトウェアコンテナと考えられてよい)内のゲストオペレーティングシステムの上部で稼働する。すなわち、ゲストオペレーティングシステムおよびアプリケーションは、「ベアメタル」ホスト電子デバイス上で稼働するのとは対照的に、自身が仮想マシン上で稼働していることを知らないことがある、または、オペレーティングシステムおよび/もしくはアプリケーションは、準仮想化を通して、最適化目的のための仮想化の存在に気付くことがある。さらに他の代替実施形態においては、アプリケーションのうちの1つ、いくつか、または全部が、ユニカーネル(unikernel)として実装され、ユニカーネルは、アプリケーションによって必要とされる特定のOSサービスを提供する(たとえば、OSサービスのドライバ/ライブラリを含むライブラリオペレーティングシステム(LibOS)からの)限定された組のライブラリのみを、アプリケーションで直接コンパイルすることによって生成されてよい。ユニカーネルは、ハードウェア940上で直接稼働するように、ハイパーバイザ上で直接稼働するように(このケースでは、ユニカーネルは時にLibOS仮想マシン内で稼働するように記述される)、またはソフトウェアコンテナ内で稼働するように実装され得るので、実施形態を、仮想化レイヤ954によって表現されるハイパーバイザ上で直接稼働するユニカーネルで、インスタンス962A〜962Rによって表現されるソフトウェアコンテナ内で稼働するユニカーネルで、またはユニカーネルと上で説明した技法との組合せ(たとえば、両方がハイパーバイザ上で直接稼働するユニカーネルと仮想マシン、異なるソフトウェアコンテナ内で稼働するユニカーネルとアプリケーションの組)として、完全に実装することができる。
1つまたは複数のアプリケーション964A〜964Rの1つまたは複数の組のインスタンス化、ならびに実装される場合の仮想化は、ソフトウェアインスタンス952と総称される。アプリケーション964A〜964Rの各組、実装される場合の対応する仮想化構成体(たとえば、インスタンス962A〜962R)、およびそれらを実行するハードウェア940のその部分(その実行に専用のハードウェアであれ、および/または一時的に共有されるハードウェアのタイムスライスであれ)は、別々の仮想ネットワークエレメント960A〜960Rを形成する。
仮想ネットワークエレメント960A〜960Rは、仮想ネットワークエレメント930A〜930Rと同様の機能性、たとえば、制御通信および設定モジュール932A、ならびに転送テーブル934Aと同様の機能性を実施する(ハードウェア940のこの仮想化は、時にネットワーク機能仮想化(NFV)と称される)。したがって、NFVは、多くのネットワーク機器のタイプを、データセンタ、ND、および顧客構内機器(CPE)に設置されることがある、業界標準の大容量のサーバハードウェア、物理スイッチ、および物理ストレージ上で統合するために使用されてよい。本発明の実施形態を、1つのVNE960A〜960Rに対応する各インスタンス962A〜962Rを用いて表すが、代替実施形態は、この対応を、より細かいレベルの粒度で(たとえば、ラインカード仮想マシンがラインカードを仮想化する、制御カード仮想マシンが制御カードを仮想化する、など)実装してもよい。インスタンス962A〜962RのVNEへの対応を参照して本明細書で説明される技法はまた、そのようなより細かいレベルの粒度および/またはユニカーネルが使用される実施形態にも適用されることを理解すべきである。
一定の実施形態において、仮想化レイヤ954は、同様の転送サービスを物理イーサネットスイッチとして提供する仮想スイッチを含む。具体的には、この仮想スイッチは、インスタンス962A〜962RとNIC944との間で、ならびにオプションで、インスタンス962A〜962R間でトラフィックを転送する。加えて、この仮想スイッチは、ポリシーにより互いに通信することが許されていないVNE960A〜960R間で、(たとえば、仮想ローカルエリアネットワーク(VLAN)を順守することによって)ネットワーク隔離を施行することができる。
図9Aにおける第3の例示的なND実装は、単一のNDまたはND内の単一のカードに、カスタムASIC/専用OSと、COTSプロセッサ/標準OSの両方を含む、ハイブリッドネットワークデバイス906である。そのようなハイブリッドネットワークデバイスの一定の実施形態において、プラットフォームVM(すなわち、専用ネットワークデバイス902の機能性を実装するVM)は、ハイブリッドネットワークデバイス906に存在するネットワーキングハードウェアに準仮想化を提供することができる。
上の例示的なNDの実装にかかわらず、NDによって実装される多数のVNEのうちの単一のVNEが考えられているとき(たとえば、VNEのうちの1つのみが所与の仮想ネットワークの一部である)、または単一のVNEのみがNDによって現時点で実装されている場合、そのVNEを指すために、短縮された期間のネットワークエレメント(NE)が時に使用される。また、上の例示的な実装の全てにおいて、VNEの各々(たとえば、VNE930A〜930R、VNE960A〜960R、およびハイブリッドネットワークデバイス906におけるVNE)は、物理NI(たとえば、916、946)上でデータを受信し、そのデータを、物理NI(たとえば、916、946)のうちの適切な1つに転送する。たとえば、IPルータ機能性を実装するVNEは、IPパケットにおけるIPヘッダ情報のうちのいくつかに基づいて、IPパケットを転送する。ここでIPヘッダ情報は、ソースIPアドレス、宛先IPアドレス、ソースポート、宛先ポート(ここで「ソースポート」および「宛先ポート」は、NDの物理ポートとは対照的に、本明細書ではプロトコルポートを指す)、トランスポートプロトコル(たとえば、ユーザデータグラムプロトコル(UDP)、伝送制御プロトコル(TCP))、ならびに差別化サービス(DSCP)の値を含む。
図9Cは、本発明のいくつかの実施形態に従って、VNEが結合され得るさまざまな例示的なやり方を表す。図9Cは、ND900Aにおいて実装されるVNE970A.1〜970A.P(およびオプションでVNE970A.Q〜970A.R)、ならびにND900HにおけるVNE970H.1を示す。図9Cにおいて、VNE970A.1〜Pは、それらがND900Aの外からパケットを受信し、ND900Aの外にパケットを転送することができるという意味で、互いから分離している。VNE970A.1は、VNE970H.1に結合されており、したがって、これらのVNEは自身のそれぞれのND間でパケットを通信する。VNE970A.2〜970A.3は、オプションで、パケットをND900Aの外に転送せずに、自身の間でパケットを転送してもよい。VNE970A.Pは、オプションで、VNE970A.Rが後に続くVNE970A.Qを含むVNEのチェイン(これは、時に動的サービスチェイニングと称され、ここで一連のVNEにおけるVNEの各々は、異なるサービス、たとえば、1つまたは複数のレイヤ4〜7のネットワークサービスを提供する)における最初のVNEであってもよい。図9Cは、VNE間のさまざまな例示的な関係を表しているが、代替実施形態は、他の関係(たとえば、より多くの/より少数のVNE、より多くの/より少数の動的サービスチェイン、いくつかの共通VNEおよびいくつかの異なるVNEを有する多数の異なる動的サービスチェイン)をサポートしてもよい。
図9AのNDは、たとえば、インターネットまたはプライベートネットワークの一部を形成することができ、他の電子デバイス(図示せず;ワークステーション、ラップトップ、ネットブック、タブレット、パームトップ、モバイルフォン、スマートフォン、ファブレット、マルチメディアフォン、ボイスオーバインターネットプロトコル(VoIP)フォン、端末、ポータブルメディアプレーヤ、全地球測位システム(GPS)ユニット、ウェアラブルデバイス、ゲーミングシステム、セットトップボックス、インターネット対応家庭用電化製品を含むエンドユーザデバイスなど)は、(直接、またはアクセスネットワークなどの他のネットワークを通して)ネットワークに結合されて、ネットワーク(たとえば、インターネット、またはインターネット上に重畳された(たとえば、インターネットを通してトンネリングされた)仮想プライベートネットワーク(VPN))上で、(直接もしくはサーバを通して)互いに、ならびに/または、アクセスコンテンツおよび/もしくはサービスと通信することができる。そのようなコンテンツおよび/またはサービスは、通常、サービス/コンテンツプロバイダに属する1つもしくは複数のサーバ(図示せず)によって、またはピアツーピア(P2P)サービスに参加する1つもしくは複数のエンドユーザデバイス(図示せず)によって提供され、たとえば、パブリックウェブページ(たとえば、無料コンテンツ、ストアフロント、検索サービス)、プライベートウェブページ(たとえば、電子メールサービスを提供する、ユーザ名/パスワードでアクセスされるウェブページ)、および/またはVPN上の企業ネットワークを含んでもよい。たとえば、エンドユーザデバイスは、エッジNDに(たとえば、アクセスネットワークに結合された顧客構内機器を通して(ワイヤードまたはワイヤレスで))結合されてもよく、エッジNDは、サーバとして働く電子デバイスに結合される他のエッジNDに(たとえば、1つまたは複数のコアNDを通して)結合される。しかしながら、計算およびストレージの仮想化を通して、図9AにおいてNDとして動作する電子デバイスのうちの1つまたは複数もまた、1つまたは複数のそのようなサーバをホストすることができ(たとえば、汎用ネットワークデバイス904のケースでは、ソフトウェアインスタンス962A〜962Rのうちの1つまたは複数が、サーバとして動作してもよく、ハイブリッドネットワークデバイス906についても同じことが当てはまる。専用ネットワークデバイス902のケースでは、1つまたは複数のそのようなサーバはまた、計算リソース912によって実行される仮想化レイヤ上で稼働してもよい)、このケースにおいて、サーバは、そのNDのVNEと共設されていると言われる。
仮想ネットワークは、ネットワークサービス(たとえば、L2および/またはL3サービス)を提供する物理ネットワーク(図9Aにあるものなど)の論理的抽象化である。仮想ネットワークは、オーバーレイネットワーク(時にネットワーク仮想化オーバーレイと称される)として実装されてよく、オーバーレイネットワークは、アンダーレイネットワーク(たとえば、トンネル(たとえば、総称ルーティングカプセル化(GRE)、レイヤ2トンネリングプロトコル(L2TP)、IPSec)を使用してオーバーレイネットワークを作り出すIPネットワークなどのL3ネットワーク)にわたってネットワークサービス(たとえば、レイヤ2(L2、データリンクレイヤ)および/またはレイヤ3(L3、ネットワークレイヤ)サービス)を提供する。
ネットワーク仮想化エッジ(NVE)は、アンダーレイネットワークのエッジにあり、ネットワーク仮想化の実装に関与する。NVEのネットワークに面した側は、アンダーレイネットワークを使用して、他のNVEへと、および他のNVEからフレームをトンネルする。NVEの外向きの側は、ネットワークの外のシステムにデータを送信し、ネットワークの外のシステムからデータを受信する。仮想ネットワークインスタンス(VNI)は、NVE(たとえば、ND上のNE/VNE、そのNE/VNEがエミュレーションを通して多数のVNEに分割されているND上のNE/VNEの一部)上の仮想ネットワークの固有のインスタンスである。1つまたは複数のVNIが、(たとえば、ND上の異なるVNEとして)NVE上にインスタンス化されてよい。仮想アクセスポイント(VAP)は、外部システムを仮想ネットワークに接続するためのNVE上の論理的接続ポイントである。VAPは、論理インターフェース識別子(たとえば、VLAN ID)を通して識別される物理的または仮想的なポートであってよい。
ネットワークサービスの例は以下を含む:1)イーサネットLANエミュレーションサービス(IETF MPLSまたはイーサネットVPN(EVPN)サービスと同様のイーサネットベースのマルチポイントサービス)、ここでは外部システムが、アンダーレイネットワーク上でのLAN環境によってネットワークにわたって相互接続される(たとえば、NVEが、そのような異なる仮想ネットワークのための別々のL2 VNI(仮想スイッチングインスタンス)、およびアンダーレイネットワークにわたるL3(たとえば、IP/MPLS)トンネリングカプセル化を提供する)、ならびに、2)仮想化されたIP転送サービス(サービス規定の観点からはIETF IP VPN(たとえば、BGP/MPLS IPVPN)と同様)、ここでは外部システムが、アンダーレイネットワーク上でのL3環境によってネットワークにわたって相互接続される(たとえば、NVEが、そのような異なる仮想ネットワークのための別々のL3 VNI(転送およびルーティングインスタンス)、およびアンダーレイネットワークにわたるL3(たとえば、IP/MPLS)トンネリングカプセル化を提供する)。ネットワークサービスはまた、サービス品質性能(たとえば、トラフィック分類マーキング、トラフィック調整およびスケジューリング)、セキュリティ性能(たとえば、ネットワーク発信の攻撃から顧客構内を保護し、不正形式のルート告知を回避するためのフィルタ)、ならびに管理性能(たとえば、十分な検出および処理)を含むことができる。
図9Dは、本発明のいくつかの実施形態に従って、図9AのNDの各々の上に単一のネットワークエレメントを有するネットワークを表し、この端的なアプローチ内で(従来のルータによって一般的に使用される)従来の分散型アプローチを、(ネットワーク制御とも呼ばれる)到達可能性および転送情報を維持するための集中型アプローチと対比させる。具体的には、図9Dは、図9AのND900A〜Hと同じ接続性を有するネットワークエレメント(NE)970A〜970Hを表す。
図9Dは、分散型アプローチ972が、NE970A〜970Hにわたって到達可能性および転送情報を生成することに対する責務を分散すること、言い換えると、近隣探索およびトポロジ探索のプロセスが分散されることを表す。
たとえば、専用ネットワークデバイス902が使用されている場合、ND制御プレーン924の制御通信および設定モジュール932A〜932Rは、通常、他のNEと通信してルートを交換し、次いで1つまたは複数のルーティングメトリックに基づいてそれらのルートを選択する1つまたは複数のルーティングプロトコル(たとえば、BGPなどの外側のゲートウェイプロトコル、インテリアゲートウェイプロトコル(IGP)(たとえば、OSPF、IS−IS、ルーティング情報プロトコル(RIP)、LDP、リソース予約プロトコル(RSVP)(RSVP−TE:LSPトンネルのためのRSVPの拡張、および一般化マルチプロトコルラベルスイッチング(GMPLS)シグナリングRSVP−TEを含む))を実装するための到達可能性および転送情報モジュールを含む。したがって、NE970A〜970H(たとえば、制御通信および設定モジュール932A〜932Rを実行する計算リソース912)は、ネットワーク内で到達可能性を分散的に決定し、それらのそれぞれの転送情報を計算することによって、どのようにデータ(たとえば、パケット)をルーティングすべきか(たとえば、データの次ホップおよびそのデータのための送出物理NI)の制御における関与に対してその責務を果たす。ルートおよび隣接関係は、ND制御プレーン924上の1つまたは複数のルーティング構造(たとえば、ルーティング情報ベース(RIB)、ラベル情報ベース(LIB)、1つまたは複数の隣接関係構造)に記憶される。ND制御プレーン924は、ルーティング構造に基づいた情報(たとえば、隣接関係およびルート情報)で、ND転送プレーン926をプログラムする。たとえば、ND制御プレーン924は、ND転送プレーン926上の1つまたは複数の転送テーブル934A〜934R(たとえば、転送情報ベース(FIB)、ラベル転送情報ベース(LFIB)、および1つまたは複数の隣接関係構造)の中に、隣接関係およびルート情報をプログラムする。レイヤ2転送の場合、NDは、そのデータにおけるレイヤ2情報に基づいてデータを転送するために使用される、1つまたは複数のブリッジングテーブルを記憶することができる。上の例は、専用ネットワークデバイス902を使用するが、同じ分散型アプローチ972が、汎用ネットワークデバイス904およびハイブリッドネットワークデバイス906上で実装されてもよい。
図9Dは、(SDNとしても知られる)集中型アプローチ974が、トラフィックが送られる場所についての判断を行うシステムを、選択された宛先へトラフィックを転送する基礎をなすシステムから分断することを表す。表した集中型アプローチ974は、集中型制御プレーン976(時にSDN制御モジュール、コントローラ、ネットワークコントローラ、OpenFlowコントローラ、SDNコントローラ、制御プレーンノード、ネットワーク仮想化権限、または管理制御エンティティと称される)において到達可能性および転送情報の生成に対する責務を有し、したがって、近隣探索およびトポロジ探索のプロセスが集中化される。
集中型制御プレーン976は、NE970A〜970H(時にスイッチ、転送エレメント、データプレーンエレメント、またはノードと称される)を含むデータプレーン980(時にインフラストラクチャレイヤ、ネットワーク転送プレーン、または転送プレーン(これをND転送プレーンと混同すべきでない)と称される)を伴うサウスバウンドインターフェース982を有する。集中型制御プレーン976は、ネットワークコントローラ978を含み、ネットワークコントローラ978は、ネットワーク内の到達可能性を決定し、サウスバウンドインターフェース982上で転送情報をデータプレーン980のNE970A〜970Hへ配信する(OpenFlowプロトコルを使用してよい)、集中型到達可能性および転送情報モジュール979を含む。したがって、ネットワークインテリジェンスは、通常、NDとは別々の電子デバイス上で実行される集中型制御プレーン976に集中化される。
いくつかの実施形態において、集中型到達可能性および転送情報モジュール979は、図8Aのフロー800の動作などの、本明細書で開示される動作を実施するように動作可能な、MSDアウェアパス選択モジュール981を含む。
たとえば、専用ネットワークデバイス902がデータプレーン980において使用される場合、ND制御プレーン924の制御通信および設定モジュール932A〜932Rの各々は、通常、サウスバウンドインターフェース982のVNE側を提供する制御エージェントを含む。このケースにおいて、ND制御プレーン924(制御通信および設定モジュール932A〜932Rを実行する計算リソース912)は、集中型制御プレーン976と通信して、集中型到達可能性および転送情報モジュール979から転送情報(およびいくつかのケースでは到達可能性情報)を受信する制御エージェントを通して、どのようにデータ(たとえば、パケット)をルーティングすべきか(たとえば、データの次ホップおよびそのデータのための送出物理NI)の制御における関与に対してその責務を果たす(本発明のいくつかの実施形態において、制御通信および設定モジュール932A〜932Rはまた、集中型制御プレーン976と通信することに加えて、到達可能性を決定すること、および/または転送情報を計算することにおいて、分散型アプローチのケースよりも少ないとしても、何らかの役割を果たしてもよいことを理解すべきである。そのような実施形態は、概して集中型アプローチ974の範疇に入ると考えられるが、ハイブリッドアプローチともまた考えられてよい)。
上の例は、専用ネットワークデバイス902を使用しているが、同じ集中型アプローチ974が、汎用ネットワークデバイス904で実装されてもよく(たとえば、VNE960A〜960Rの各々が、集中型制御プレーン976と通信して、集中型到達可能性および転送情報モジュール979から転送情報(およびいくつかのケースでは到達可能性情報)を受信することによって、どのようにデータ(たとえば、パケット)をルーティングすべきか(たとえば、データの次ホップおよびそのデータのための送出物理NI)を制御することに対してその責務を果たす。本発明のいくつかの実施形態において、VNE960A〜960Rはまた、集中型制御プレーン976と通信することに加えて、到達可能性を決定すること、および/または転送情報を計算することにおいて、分散型アプローチのケースよりも少ないとしても、何らかの役割を果たしてもよいことを理解すべきである)、かつハイブリッドネットワークデバイス906で実装されてもよい。実際、NFVは、SDNソフトウェアがその上で稼働できるインフラストラクチャを提供することによってSDNをサポートすることができ、NFVおよびSDNの両方がコモディティサーバハードウェアおよび物理スイッチの活用を狙いとしているので、SDN技法の使用は、汎用ネットワークデバイス904またはハイブリッドネットワークデバイス906の実装において通常使用されるNFV技法を高めることができる。
図9Dはまた、集中型制御プレーン976が、アプリケーション988を常駐させるアプリケーションレイヤ986へのノースバウンドインターフェース984を有することを示す。集中型制御プレーン976は、アプリケーション988のための仮想ネットワーク992(時に論理転送プレーン、ネットワークサービス、または(データプレーン980のNE970A〜970Hがアンダーレイネットワークである状態の)オーバーレイネットワークと称される)を形成する能力を有する。したがって、集中型制御プレーン976は、全てのNDおよび設定されたNE/VNEの包括的視点を維持し、仮想ネットワークを、基礎をなすNDに効率的にマップする(ハードウェア(ND、リンク、またはNDコンポーネント)の障害、追加、または取り外しのいずれかを通して物理ネットワークが変化するときに、これらのマッピングを維持することを含む)。
図9Dは、集中型アプローチ974とは別々に分散型アプローチ972を示しているが、ネットワーク制御の取り組みは、一定の実施形態において、異なって分散されても、または2つが組み合わせられてもよい。たとえば、1)実施形態は、概して集中型アプローチ(SDN)974を使用してよいが、一定の機能をNEに委任させてもよい(たとえば、分散型アプローチが、故障モニタリング、パフォーマンスモニタリング、保護スイッチング、ならびに近隣探索および/もしくはトポロジ探索のためのプリミティブのうちの1つもしくは複数を実装するために使用されてもよい)、または、2)本発明の実施形態が、集中型制御プレーンおよび分散型プロトコルの両方を介して近隣探索およびトポロジ探索を実施し、それらが一致しない例外を発生させるために、結果が比較されてもよい。そのような実施形態は、概して集中型アプローチ974の範疇に入ると考えられるが、ハイブリッドアプローチともまた考えられてよい。
図9Dは、ND900A〜Hの各々が単一のNE970A〜970Hを実装する単純なケースを表しているが、図9Dを参照して説明したネットワーク制御のアプローチはまた、ND900A〜900Hのうちの1つまたは複数が、多数のVNE(たとえば、VNE930A〜930R、VNE960A〜960R、ハイブリッドネットワークデバイス906におけるVNE)を実装するネットワークにも役立つことを理解すべきである。代替として、または加えて、ネットワークコントローラ978がまた、単一のNDにおける多数のVNEの実装をエミュレートしてもよい。具体的には、単一のNDにおいて多数のVNEを実装する代わりに(または、それに加えて)、ネットワークコントローラ978が、単一のNDにおけるVNE/NEの実装を、仮想ネットワーク992における多数のVNEとして(仮想ネットワーク992の同じ1つに全部を、仮想ネットワーク992の異なる1つに各々を、または何らかの組合せで)提示してもよい。たとえば、ネットワークコントローラ978は、NDに、アンダーレイネットワークにおいて単一のVNE(NE)を実装させ、次いで集中型制御プレーン976内でそのNEのリソースを論理的に分割して、仮想ネットワーク992において異なるVNEを提示することができる(ここで、オーバーレイネットワークにおけるこれらの異なるVNEは、アンダーレイネットワークにおけるND上の単一のVNE/NE実装のリソースを共有している)。
一方、図9Eおよび図9Fは、それぞれ、ネットワークコントローラ978が仮想ネットワーク992の異なる1つの部分として提示することができるNEおよびVNEの例示的な抽象化を表す。図9Eは、いくつかの実施形態に従って、ND900A〜Hの各々が単一のNE970A〜970Hを実装し(図9Dを参照されたい)、しかし集中型制御プレーン976が、異なるNDにおけるNEの多数(NE970A〜970Cおよび970G〜970H)を、図9Dの仮想ネットワーク992の1つにおける単一のNE970Iの中に(表現するように)抽象化している、単純なケースを表す。図9Eは、この仮想ネットワークにおいて、NE970Iが、NE970Dおよび970Fに結合されており、その両方がさらにNE970Eに結合されていることを示す。
図9Fは、本発明のいくつかの実施形態に従って、多数のVNE(VNE970A.1およびVNE970H.1)が異なるND(ND900AおよびND900H)上に実装され、互いに結合され、集中型制御プレーン976が、これらの多数のVNEが図9Dの仮想ネットワーク992のうちの1つ内で単一のVNE970Tとして見えるように、VNEを抽象化しているケースを表す。したがって、NEまたはVNEの抽象化は、多数のNDに及ぶことができる。
いくつかの実施形態は、集中型制御プレーン976を単一のエンティティ(たとえば、単一の電子デバイス上で稼働するソフトウェアの単一のインスタンス)として実装するが、代替実施形態は、冗長性および/またはスケーラビリティ目的のために多数のエンティティ(たとえば、異なる電子デバイス上で稼働するソフトウェアの多数のインスタンス)にわたって機能性を散らしてもよい。
ネットワークデバイス実装と同様に、集中型制御プレーン976を稼働させる電子デバイス、およびしたがって集中型到達可能性および転送情報モジュール979を含むネットワークコントローラ978は、多様なやり方(たとえば、専用デバイス、汎用(たとえば、COTS)デバイス、またはハイブリッドデバイス)で実装されてよい。これらの電子デバイスは、計算リソース、1つまたは複数の物理NICの組、および集中型制御プレーンソフトウェアをその上に記憶した非一時的なマシン可読ストレージ媒体を含む。たとえば、図10は、汎用制御プレーンデバイス1004を表し、汎用制御プレーンデバイス1004は、1つまたは複数のプロセッサ1042(しばしば、COTSプロセッサである)の組、およびネットワークインターフェースコントローラ1044(NIC;ネットワークインターフェースカードとしても知られる)(物理NI1046を含む)、ならびに集中型制御プレーン(CCP)ソフトウェア1050をその中に記憶した非一時的なマシン可読ストレージ媒体1048を備えるハードウェア1040を含む。
いくつかの実施形態において、CCPソフトウェア1050は、MSDアウェアパス選択モジュールコード1081を含み、MSDアウェアパス選択モジュールコード1081は、プロセッサ1042によって実行されるとき、特定の実装に応じて、集中型到達可能性および転送情報モジュールインスタンス1079および/またはCCPアプリケーションレイヤ1080内で、MSDアウェアパス選択モジュール981のコンポーネントを提供することができる。
計算仮想化を使用する実施形態において、プロセッサ1042は、通常、ソフトウェアを実行して、仮想化レイヤ1054をインスタンス化する(たとえば、一実施形態において、仮想化レイヤ1054は、1つまたは複数のアプリケーションの組を実行するために各々使用され得るソフトウェアコンテナ(別々のユーザ空間を表現し、仮想化エンジン、仮想プライベートサーバ、またはジェイルとも呼ばれる)と呼ばれる多数のインスタンス1062A〜Rの作成を見込んだ、オペレーティングシステムのカーネル(または基本オペレーティングシステム上で実行されるシム)を表現する。別の実施形態において、仮想化レイヤ1054は、ハイパーバイザ(時に仮想マシンモニタ(VMM)と称される)、またはホストオペレーティングシステムの上部で実行されるハイパーバイザを表現し、アプリケーションは、ハイパーバイザによって稼働される仮想マシンと呼ばれるインスタンス1062A〜R(いくつかのケースにおいて強固に隔離された形態のソフトウェアコンテナと考えられてよい)内のゲストオペレーティングシステムの上部で稼働する。別の実施形態において、アプリケーションは、ユニカーネルとして実装され、ユニカーネルは、アプリケーションによって必要とされる特定のOSサービスを提供する(たとえば、OSサービスのドライバ/ライブラリを含むライブラリオペレーティングシステム(LibOS)からの)限定された組のライブラリのみを、アプリケーションで直接コンパイルすることによって生成されてよく、ユニカーネルは、ハードウェア1040上で直接稼働するか、仮想化レイヤ1054によって表現されるハイパーバイザ上で直接稼働するか(このケースでは、ユニカーネルは時にLibOS仮想マシン内で稼働するように記述される)、またはインスタンス1062A〜Rのうちの1つによって表現されるソフトウェアコンテナ内で稼働することができる)。再度、計算仮想化が使用される実施形態において、動作中、CCPソフトウェア1050のインスタンス(CCPインスタンス1076Aとして表す)は、仮想化レイヤ1054上で(たとえば、インスタンス1062A内で)実行される。計算仮想化が使用されない実施形態においては、CCPインスタンス1076Aが、「ベアメタル」汎用制御プレーンデバイス1004上で、ユニカーネルとして、またはホストオペレーティングシステムの上部で実行される。CCPインスタンス1076A、ならびに、実装される場合、仮想化レイヤ1054およびインスタンス1062A〜Rのインスタンス化は、ソフトウェアインスタンス1052と総称される。
いくつかの実施形態において、CCPインスタンス1076Aは、ネットワークコントローラインスタンス1078を含む。ネットワークコントローラインスタンス1078は、(ネットワークコントローラ978のコンテキストをオペレーティングシステムに提供し、さまざまなNEと通信するミドルウェアレイヤである)集中型到達可能性および転送情報モジュールインスタンス1079と、(プロトコル、ネットワーク状況アウェアネス、およびユーザインターフェースなどのさまざまなネットワーク動作に要求されるインテリジェンスを提供する)ミドルウェアレイヤ上のCCPアプリケーションレイヤ1080(時にアプリケーションレイヤと称される)とを含む。さらなる抽象レベルにおいて、集中型制御プレーン976内のこのCCPアプリケーションレイヤ1080は、仮想ネットワークビュー(ネットワークの論理ビュー)と連携し、ミドルウェアレイヤは、仮想ネットワークから物理ビューへの変換を提供する。
集中型制御プレーン976は、CCPアプリケーションレイヤ1080の計算およびフローごとのミドルウェアレイヤのマッピングに基づいて、該当するメッセージをデータプレーン980へ送信する。フローは、そのヘッダが所与のビットパターンに合致するパケットの組として規定されてもよい。この意味において、従来のIP転送もまた、フローベースの転送であり、ここでフローは、たとえば宛先IPアドレスによって規定される。しかしながら、他の実装において、フロー規定に使用される所与のビットパターンは、パケットヘッダにより多くの(たとえば、10以上の)フィールドを含んでもよい。データプレーン980の異なるND/NE/VNEは、異なるメッセージ、したがって異なる転送情報を受信してもよい。データプレーン980は、これらのメッセージを処理し、適切なフロー情報および適切なNE/VNEの転送テーブル(時にフローテーブルと称される)における対応するアクションをプログラムし、次いでNE/VNEは、着信パケットを転送テーブルに表現されるフローにマップし、転送テーブルにおける合致に基づいて、パケットを転送する。
OpenFlowなどの標準は、メッセージに使用されるプロトコル、ならびにパケットを処理するためのモデルを規定する。パケットを処理するためのモデルは、ヘッダ構文解析、パケット分類、および転送判断を行うことを含む。ヘッダ構文解析は、よく知られたプロトコルの組に基づいてパケットをどのように解釈するかを記述する。いくつかのプロトコルフィールドは、パケット分類で使用されることになるマッチ構造(またはキー)を構築するために使用される(たとえば、第1のキーフィールドはソースメディアアクセス制御(MAC)アドレスであってよく、第2のキーフィールドは宛先MACアドレスであってよい)。
パケット分類は、転送テーブルにおけるどのエントリ(転送テーブルエントリまたはフローエントリとも称される)が、転送テーブルエントリのマッチ構造またはキーに基づいてパケットに最もよく合致するかを決定することによって、パケットを分類するために、メモリのルックアップを実行することを伴う。転送テーブルエントリにおいて表現される多くのフローが、あるパケットに対応/合致してもよく、このケースにおいて、システムは、通常、規定された方式(たとえば、合致した最初の転送テーブルエントリを選択すること)に従って、多くの中から1つの転送テーブルエントリを決定するように設定されることが可能である。転送テーブルエントリは、合致基準の固有の組(パケットヘッダにおける固有のフィールドについて、または何らかの他のパケットコンテンツについて合致性能によって規定されるような、値もしくはワイルドカードの組、または、パケットのどの区間を特定の値/ワイルドカードと比較すべきかの指示)と、合致するパケットの受信時に取る、データプレーンのための1つまたは複数のアクションの組との両方を含む。たとえば、アクションは、ヘッダをパケット上にプッシュすること、特定のポートを使用するパケットの場合にパケットをフラッディングすること、または単にパケットをドロップすることであってもよい。したがって、特定の伝送制御プロトコル(TCP)宛先ポートを有するIPv4/IPv6パケットのための転送テーブルエントリは、これらのパケットをドロップすべきことを指定するアクションを収容することがある。
転送判断を行うこと、およびアクションを実施することは、パケット分類中に識別された転送テーブルエントリに基づいて、合致した転送テーブルエントリにおいて識別されたアクションの組を、パケット上で実行することによって行われる。
しかしながら、未知のパケット(たとえば、OpenFlow用語において使用される「missed packet」または「match−miss」)がデータプレーン980に到着するとき、パケット(またはパケットヘッダおよびコンテンツのサブセット)は、通常、集中型制御プレーン976に転送される。集中型制御プレーン976は次いで、未知のパケットのフローに属するパケットに対処するように、転送テーブルエントリをデータプレーン980の中にプログラムすることになる。固有の転送テーブルエントリが集中型制御プレーン976によってデータプレーン980の中にプログラムされると、合致する資格を有する次のパケットが、その転送テーブルエントリに合致し、その合致するエントリに関連付けられたアクションの組が取られることになる。
ネットワークインターフェース(NI)は、物理的であっても仮想的であってもよく、IPのコンテキストにおいて、インターフェースアドレスは、物理NIであれ、仮想NIであれ、NIに割り当てられたIPアドレスである。仮想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アドレスと称されてもよい。
所与の宛先のためのルーティングシステムによる次ホップ選択は、1つのパスに解決することがあるが(すなわち、ルーティングプロトコルが最短パス上で1つの次ホップを生成することができる)、ルーティングシステムが多数の実現可能な次ホップがあると決定する(すなわち、ルーティングプロトコルが生成した転送ソリューションが最短パス上の2つ以上の次ホップ、すなわち多数の等コスト次ホップを提案する)場合、いくつかの追加基準が使用される。たとえば、無接続ネットワークにおいては、ECMP(等コストマルチパス化、マルチパス転送、およびIPマルチパスとしても知られる)が使用されてよい(たとえば、典型的な実装は、パケットフローの順序付けを保つために、特定のヘッダフィールドを基準として使用して、特定のパケットフローのパケットが常に同じ次ホップに転送されることを保証する)。マルチパス転送の目的のために、パケットフローは、順序付け制約を共有するパケットの組として規定される。例として、特定のTCP伝達シーケンスにおけるパケットの組は、順序正しく到着する必要があり、そうでないとTCP論理は、順序通りでない配信を輻輳と解釈して、TCP伝達速度を減速させることになる。
仮想接続および仮想チャネルと同義語である仮想回路(VC)は、パケットモード通信を用いて配信される接続指向型の通信サービスである。仮想回路通信と回路スイッチングとは、その両方が接続指向型であることから類似しており、両方のケースにおいて、データは正しい順序で配信され、接続確立フェーズ中にシグナリングオーバーヘッドが要求されることを意味する。仮想回路は、異なるレイヤに存在してもよい。たとえば、レイヤ4で、伝送制御プロトコル(TCP)などの接続指向型のトランスポートレイヤデータリンクプロトコルは、IPなどの無接続パケットスイッチングネットワークレイヤプロトコルに依拠してよく、ここで異なるパケットは、異なるパス上でルーティングされてよく、したがって、順序通りでなく配信されることがある。基礎をなす信頼できない無接続のIPプロトコルの上部にTCPで信頼できる仮想回路が確立された場合、仮想回路は、ソースおよび宛先のネットワークソケットアドレスペア、すなわち送信者および受信者のIPアドレスおよびポート番号によって識別される。しかしながら、順序通りでない配信を防ぐために、TCPが受信者側でのセグメント番号付けおよび並べ替えを含むので、仮想回路が可能である。仮想回路はまた、レイヤ3(ネットワークレイヤ)およびレイヤ2(データリンクレイヤ)で可能である。そのような仮想回路プロトコルは、接続指向型のパケットスイッチングに基づいており、データが同じネットワークパスに沿って、すなわち、同じNE/VNEを通って常に配信されることを意味する。そのようなプロトコルにおいて、パケットは、個々にルーティングされず、完全なアドレス指定情報は、各データパケットのヘッダに提供されない。小さな仮想チャネル識別子(VCI)のみが、各パケットにおいて要求され、ルーティング情報は、接続確立フェーズ中にNE/VNEに伝達される。スイッチングは、完全なアドレスを分析するのではなく、テーブルにおいて仮想チャネル識別子をルックアップすることのみを伴う。データが常に同じパス上で配信されるネットワークレイヤおよびデータリンクレイヤの仮想回路プロトコルの例は以下である:VCが仮想チャネル識別子(VCI)によって識別されるX.25;VCがVCIによって識別されるフレームリレー;回路が仮想パス識別子(VPI)と仮想チャネル識別子(VCI)のペアによって識別される非同期伝達モード(ATM);汎用パケット無線サービス(GPRS);および仮想回路上でIPのために使用され得るマルチプロトコルラベルスイッチング(MPLS)(各回路はラベルによって識別される)。
一定のND(たとえば、一定のエッジND)は、回路の階層構造を使用する。回路の階層構造の葉ノードは、サブスクライバ回路である。サブスクライバ回路は、階層構造に親回路を有し、親回路は、通常、多数のサブスクライバ回路のアグリゲーション、ならびにしたがってエンドユーザデバイスのアクセスネットワーク接続性をNDに提供するために使用されるネットワークセグメントおよびエレメントを表現する。これらの親回路は、サブスクライバ回路の物理または論理アグリゲーション(たとえば、仮想ローカルエリアネットワーク(VLAN)、永久仮想回路(PVC)(たとえば、非同期伝達モード(ATM)のための)、回路グループ、チャネル、擬似ワイヤ、NDの物理NI、およびリンクアグリゲーショングループ)を表現することができる。回路グループは、回路のさまざまな組が、設定目的、たとえばアグリゲートレート制御のために、一緒にグループ化されるのを許可する仮想構成体である。擬似ワイヤは、レイヤ2ポイントツーポイント接続指向型サービスのエミュレーションである。リンクアグリゲーショングループは、帯域幅アグリゲーションおよび冗長性の目的のために、多数の物理NIを合体させる仮想構成体である。したがって、親回路は、物理的または論理的に、サブスクライバ回路をカプセル化する。
各VNE(たとえば、仮想ルータ、仮想ブリッジ(仮想プライベートLANサービス(VPLS)において仮想スイッチインスタンスとして働くことができる))は、通常、独立してアドミニストレーション可能である。たとえば、多数の仮想ルータのケースにおいて、仮想ルータの各々は、システムリソースを共有することができるが、その管理ドメイン、AAA(認証、認可、およびアカウンティング)名前空間、IPアドレス、およびルーティングデータベースに関しては、他の仮想ルータから分離している。サービスおよび/またはコンテンツプロバイダのサブスクライバに、直接ネットワークアクセスおよび/または異なるクラスのサービスを提供するために、多数のVNEが、エッジNDにおいて用いられてよい。
一定のND内で、物理NIから独立している「インターフェース」は、上位レイヤプロトコルおよびサービス情報(たとえば、レイヤ3アドレス指定)を提供するために、VNEの一部として設定されてよい。AAAサーバにおけるサブスクライバ記録は、他のサブスクライバ設定要件に加えて、対応するサブスクライバが、ND内でどのコンテキスト(たとえば、VNE/NEのうちのどれ)にバインドされるべきかを識別する。本明細書で使用されるとき、バインディングは、物理エンティティ(たとえば、物理NI、チャネル)または論理エンティティ(たとえば、サブスクライバ回路もしくは論理回路(1つもしくは複数のサブスクライバ回路の組)などの回路)と、ネットワークプロトコル(たとえば、ルーティングプロトコル、ブリッジングプロトコル)がその上でそのコンテキストのために設定されるコンテキストのインターフェースとの間で、関連付けを形成する。何らかの上位レイヤプロトコルインターフェースが設定され、その物理エンティティに関連付けられるときに、サブスクライバデータは、その物理エンティティ上を流れる。
いくつかのNDは、VPN(仮想プライベートネットワーク)(たとえば、レイヤ2VPNおよび/またはレイヤ3VPN)を実装するためのサポートを提供する。たとえば、プロバイダのネットワークと顧客のネットワークとが結合される場所のNDは、それぞれ、PE(プロバイダエッジ)およびCE(顧客エッジ)と称される。レイヤ2VPNにおいて、転送は、通常、VPNのどちらかのエンドのCE上で実施され、トラフィックは、ネットワークにわたって(たとえば、他のNDによって結合された1つまたは複数のPEを通して)送られる。レイヤ2回路は、CEとPEとの間で設定される(たとえば、イーサネットポート、ATM永久仮想回路(PVC)、フレームリレーPVC)。レイヤ3VPNにおいて、ルーティングは、通常、PEによって実施される。例として、多数のVNEをサポートするエッジNDが、PEとして配置されてよく、VNEは、VPNプロトコルで設定されてよく、したがって、そのVNEは、VPN VNEと称される。
いくつかのNDは、VPLS(仮想プライベートLANサービス)のためのサポートを提供する。たとえば、VPLSネットワークにおいて、エンドユーザデバイスは、他のNDによって結合されたPEを通して結合されたCEに結合することによって、VPLSネットワークを通して提供されるコンテンツ/サービスにアクセスする。VPLSネットワークは、トリプルプレイネットワークアプリケーション(たとえば、データアプリケーション(たとえば、高速インターネットアクセス)、ビデオアプリケーション(たとえば、IPTV(インターネットプロトコルテレビジョン)などのテレビジョンサービス、VoD(ビデオオンデマンド)サービス)、およびボイスアプリケーション(たとえば、VoIPサービス))、VPNサービス、その他を実装するために使用されてよい。VPLSは、マルチポイント接続性のために使用され得るレイヤ2VPNのタイプである。VPLSネットワークはまた、別々の地理的場所でCEに結合されたエンドユーザデバイスが、あたかもローカルエリアネットワーク(LAN)において互いに直接アタッチされているかのように(エミュレートLANと称される)、ワイドエリアネットワーク(WAN)にわたって互いに通信するのを許可する。
VPLSネットワークにおいて、各CEは通常、アタッチメント回路(たとえば、CEとPEとの間の仮想リンクまたは接続)を介したPEのブリッジモジュールに、場合によってアクセスネットワーク(ワイヤードおよび/またはワイヤレス)を通して、アタッチする。PEのブリッジモジュールは、エミュレートLANインターフェースを通して、エミュレートLANにアタッチする。各ブリッジモジュールは、MACアドレスを擬似ワイヤおよびアタッチメント回路にマップする転送テーブルを維持することによって、「仮想スイッチインスタンス」(VSI)として働く。PEは、(CEから受信した)フレームを、それらのフレームに含まれたMAC宛先アドレスフィールドに基づいて、宛先(たとえば、他のCE、他のPE)へと転送する。
図面におけるフロー図は、本発明の一定の実施形態によって実施される動作の特定の順序を示しているが、そのような順序は例示である(たとえば、代替実施形態が、異なる順序で動作を実施する、一定の動作を組み合わせる、一定の動作を重複させるなどしてもよい)ことを理解すべきである。
本発明を数点の実施形態に関して説明してきたが、本発明は、説明された実施形態に限定されず、付属の特許請求の範囲の趣旨および範囲内での変更形態および改変形態により実践されてもよいことを当業者は認めるであろう。したがって、本説明は、限定ではなく、例証とみなされるべきである。