IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヴィーエムウェア, インコーポレイテッドの特許一覧

特開2024-20367データプレーン回路におけるスライスベース動作の実行
<>
  • 特開-データプレーン回路におけるスライスベース動作の実行 図1
  • 特開-データプレーン回路におけるスライスベース動作の実行 図2
  • 特開-データプレーン回路におけるスライスベース動作の実行 図3
  • 特開-データプレーン回路におけるスライスベース動作の実行 図4
  • 特開-データプレーン回路におけるスライスベース動作の実行 図5
  • 特開-データプレーン回路におけるスライスベース動作の実行 図6
  • 特開-データプレーン回路におけるスライスベース動作の実行 図7
  • 特開-データプレーン回路におけるスライスベース動作の実行 図8
  • 特開-データプレーン回路におけるスライスベース動作の実行 図9
  • 特開-データプレーン回路におけるスライスベース動作の実行 図10
  • 特開-データプレーン回路におけるスライスベース動作の実行 図11
  • 特開-データプレーン回路におけるスライスベース動作の実行 図12
  • 特開-データプレーン回路におけるスライスベース動作の実行 図13
  • 特開-データプレーン回路におけるスライスベース動作の実行 図14
  • 特開-データプレーン回路におけるスライスベース動作の実行 図15
  • 特開-データプレーン回路におけるスライスベース動作の実行 図16
  • 特開-データプレーン回路におけるスライスベース動作の実行 図17
  • 特開-データプレーン回路におけるスライスベース動作の実行 図18
  • 特開-データプレーン回路におけるスライスベース動作の実行 図19
  • 特開-データプレーン回路におけるスライスベース動作の実行 図20
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024020367
(43)【公開日】2024-02-14
(54)【発明の名称】データプレーン回路におけるスライスベース動作の実行
(51)【国際特許分類】
   H04L 47/12 20220101AFI20240206BHJP
   H04L 49/60 20220101ALI20240206BHJP
   H04L 47/32 20220101ALI20240206BHJP
   H04L 45/64 20220101ALI20240206BHJP
【FI】
H04L47/12
H04L49/60
H04L47/32
H04L45/64
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023193038
(22)【出願日】2023-11-13
(62)【分割の表示】P 2022503988の分割
【原出願日】2020-07-26
(31)【優先権主張番号】16/568,332
(32)【優先日】2019-09-12
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/568,325
(32)【優先日】2019-09-12
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/568,330
(32)【優先日】2019-09-12
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/891,425
(32)【優先日】2019-08-26
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/568,322
(32)【優先日】2019-09-12
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】514097912
【氏名又は名称】ヴィーエムウェア エルエルシー
【氏名又は名称原語表記】VMware LLC
【住所又は居所原語表記】3401 Hillview Ave., Palo Alto, CA 94303, U.S.A
(74)【代理人】
【識別番号】100087642
【弁理士】
【氏名又は名称】古谷 聡
(74)【代理人】
【識別番号】100082946
【弁理士】
【氏名又は名称】大西 昭広
(74)【代理人】
【識別番号】100195693
【弁理士】
【氏名又は名称】細井 玲
(74)【代理人】
【識別番号】100203242
【弁理士】
【氏名又は名称】河戸 春樹
(74)【代理人】
【識別番号】100212657
【弁理士】
【氏名又は名称】塚原 一久
(72)【発明者】
【氏名】コミュラ, ラジャ
(72)【発明者】
【氏名】ポリチュロノポウロス, コンスタンティン
(72)【発明者】
【氏名】スリダール, タユマナヴァン
(72)【発明者】
【氏名】ボルドロー, マークアンドレ
(72)【発明者】
【氏名】チョー, エドワード
(72)【発明者】
【氏名】グプタ, オジャス
(72)【発明者】
【氏名】キッド, ロベルト
(72)【発明者】
【氏名】オイコモノウ, ジョージオス
(72)【発明者】
【氏名】ティデマン, ジェレミー
(57)【要約】      (修正有)
【課題】ネットワーク内のハードウェア転送エレメント(HFE)においてデータメッセージに対してネットワークスライスベースの動作を実行する。
【解決手段】方法は、データメッセージ・フロー125、130を受信した場合、HFE105に、受信したデータメッセージ・フローに関連付けられたネットワークスライスを識別させる。このネットワークスライスは、ネットワーク内の1つ以上のコンピュータ上で実行される1つ以上のマシンを含む、いくつかのネットワークエレメントによってデータメッセージ上で実行されるべき動作セットに関連付けられる。方法はまた、ネットワークスライスを識別すると、識別したスライスに関連付けられたデータメッセージに適用されるルールに基づいて、データメッセージ・フローをHFEで処理する。
【選択図】図1
【特許請求の範囲】
【請求項1】
ハードウェア転送エレメントであって、
スライスベースのデータプレーン転送動作を前記転送エレメントによって受信されたデータメッセージセットに対して実行するデータプレーン転送回路と、
処理ユニットのセットと、前記処理ユニットのセットによる実行のためのプログラムを特定するスライス識別子(ID)を記憶する非一時的な機械可読媒体とを備える制御プレーン回路と、
を備え、
前記プログラムはデータメッセージに関連付けられたネットワークスライスのスライスIDを特定し、前記スライスIDを前記データプレーン転送回路に提供して前記提供されたスライスIDに基づくスライスベースの転送動作を実行させることを特徴とするハードウェア転送エレメント。
【請求項2】
前記データプレーン転送回路は前記制御プレーン回路へ、前記制御プレーン回路が前記スライスIDを特定する必要がある各データメッセージを提供することを特徴とする請求項1に記載のハードウェア転送エレメント。
【請求項3】
前記データプレーン転送回路は前記制御プレーン回路へ、前記制御プレーン回路が前記スライスIDを特定する必要がある各データメッセージのフロー識別子を提供することを特徴とする請求項1に記載のハードウェア転送エレメント。
【請求項4】
前記制御プレーン回路は、データメッセージに対する前記スライスIDに、前記データプレーン転送回路がレコードであって、前記データメッセージのフロー識別子と前記スライスIDとを関連付けるレコードを格納するように設定するための設定命令を提供し、
別のデータメッセージのフロー識別子と前記レコードのフロー識別子とが一致した後、前記データプレーン回路は、前記スライスIDに基づいて転送動作を特定するレコードを識別するために前記レコードのスライスIDを使用する、
ことを特徴とする請求項1に記載のハードウェア転送エレメント。
【請求項5】
前記非一時的な機械可読は、前記スライスID特定プログラムがスライスIDを識別するデータメッセージに対してスライスベースのサービス動作のセットを実行するための1つ以上のサービスプログラムのセットをさらに格納することを特徴とする請求項1に記載のハードウェア転送エレメント。
【請求項6】
前記制御プレーン回路は、前記スライスID特定プログラムが前記スライスIDを特定するそれぞれのスライスIDに対して、前記データプレーン転送回路に前記スライスIDを識別するように設定し、
前記データプレーン転送回路がフローに対して設定される前に、前記サービスプログラムのセットは前記フロー内のデータメッセージのグループに対して前記スライスベースの動作セットを実行し、前記制御プレーン回路は前記グループ内の処理された前記データメッセージを前記データプレーン転送回路に提供してネットワーク内に転送させる
ことを特徴とする請求項5に記載のハードウェア転送エレメント。
【請求項7】
前記制御プレーン回路はネットワークインタフェースコントローラを備え、
前記制御プレーン回路は、前記スライスID特定プログラムが前記スライスIDを特定するスライスIDのそれぞれに対して、前記データプレーン転送回路に前記スライスIDを識別するように設定し、
前記データプレーン転送回路がフローに対して設定される前に、前記サービスプログラムのセットは前記フロー内のデータメッセージのグループに対して前記スライスベースの動作セットを実行し、前記制御プレーン回路は前記グループ内の処理された前記データメッセージをネットワーク内に転送するために前記ネットワークインタフェースコントローラを使用する
ことを特徴とする請求項5に記載のハードウェア転送エレメント。
【請求項8】
前記プログラムは、少なくとも1つのコンテナがデータプレーン転送動作の第2のセットを実行するように定義されたLinux(登録商標)オペレーティングシステムであることを特徴とする請求項1に記載のハードウェア転送エレメント。
【請求項9】
前記プログラムはコンテナマシンであることを特徴とする請求項1に記載のハードウェア転送エレメント。
【請求項10】
前記プログラムは前記処理ユニットのセットによって実行されるハイパーバイザ上で実行される仮想マシンであることを特徴とする請求項1に記載のハードウェア転送エレメント。
【請求項11】
前記プログラムは、データプレーン転送動作の前記第2のセットのサブセットを少なくとも実行する少なくとも1つのモジュールを備えるハイパーバイザであることを特徴とする請求項1に記載のハードウェア転送エレメント。
【請求項12】
ハイパーバイザおよび仮想マシンを実行する複数のホストコンピュータを備えるデータセンタ内で動作するハードウェア転送エレメント(HFE)であって、
データプレーン転送回路と、
処理回路と、
前記処理回路による実行のためのハイパーバイザであって、ホストコンピュータのセットにおいて実行される前記ハイパーバイザと同様の前記ハイパーバイザを格納する非一時的な機械可読媒体とを備え、
前記ハイパーバイザは、
前記データプレーン転送回路を設定するための制御情報を受信し、
前記データプレーン転送回路を、前記ハイパーバイザが前記データプレーン転送回路に設定データを提供することを可能にする抽象化レイヤを介して設定し、
前記データプレーン転送回路によって転送されたデータメッセージに関するデータを、前記抽象化レイヤを通して受信する、
ための命令セットを含むことを特徴とするハードウェア転送エレメント。
【請求項13】
前記抽象化レイヤはネットワークインタフェースコントローラ(NIC)形式からデータプレーン転送回路のための形式に通信を変換するための変換レイヤを備えることを特徴とする請求項12に記載のハードウェア転送エレメント。
【請求項14】
前記抽象化レイヤはデータプレーンとは独立した形式からデータプレーン転送回路のための形式に通信を変換するための変換レイヤを備え、
前記ホストコンピュータのセットの各ホストコンピュータの前記ハイパーバイザは、データプレーンとは独立した形式から前記ホストコンピュータのネットワークインタフェースコントローラ(NIC)のための形式に通信を変換する変換レイヤを備える
ことを特徴とする請求項12に記載のハードウェア転送エレメント。
【請求項15】
前記HFE上の前記ハイパーバイザおよび前記ホストコンピュータのセットは前記HFEおよび前記ホストコンピュータのセットを設定するための共通のプラットフォームを提供することを特徴とする請求項12に記載のハードウェア転送エレメント。
【請求項16】
前記HFEおよび前記ホストコンピュータのセットを設定するための前記共通のプラットフォームは、前記HFEおよび前記ホストコンピュータのセットに、グループ識別子に基づく同一の転送またはサービスルールを処理するよう設定されることを可能にする請求項12に記載のハードウェア転送エレメント。
【請求項17】
前記グループ識別子は前記データセンタ内のポートグループを特定するポートグループの識別子であることを特徴とする請求項12に記載のハードウェア転送エレメント。
【請求項18】
前記グループ識別子はネットワークスライスに関連付けられたスライス識別子であることを特徴とする請求項12に記載のハードウェア転送エレメント。
【発明の詳細な説明】
【技術分野】
【0001】
【背景技術】
【0002】
[0001] 近年、ソフトウェア定義型データセンタ(SDDC)、およびSDDCにおけるコンピュータサービスとネットワークサービスを定義し、制御するためのソフトウェアツールが普及している。これらのツールのいくつかは、複数の物理構造(複数のホストコンピュータなど)にまたがる論理ネットワークリソース(論理スイッチ、論理ルータ、論理ミドルボックス・エレメントなど)を定義する。しかし、これらのツールの多くは、これらのデータセンタのアンダーレイネットワークエレメントであるSDDCの大部分を無視することが多い。これらのネットワークエレメントの例は、ハードウェアスイッチ(例えば、トップオブラックスイッチ、スパインスイッチ等)、ハードウェアルータ、ハードウェアミドルボックス機器(アプライアンス)等を含む。
【発明の概要】
【0003】
[0002] 本発明のいくつかの実施形態は、ネットワーク内のハードウェア転送エレメント(HFE)においてデータメッセージに対してネットワークスライスベースの動作を実行する新規な方法を提供する。受信したデータメッセージ・フローの場合、この方法はHFEに、受信したデータメッセージ・フローに関連付けられたネットワークスライスを識別させる。いくつかの実施形態におけるこのネットワークスライスは、ネットワーク内の1つ以上のコンピュータ上で実行される1つ以上のマシンを含む、いくつかのネットワークエレメントによってデータメッセージ上で実行されるべき動作セットに関連付けられる。いくつかの実施形態におけるネットワークはテレコミュニケーションネットワークであり、動作はネットワークがそのデバイス(例えば、ネットワーク内のモバイルデバイス)からのデータメッセージに対して実行するサービス動作チェーンの一部である。ネットワークスライスが識別されると、方法は、識別されたスライスに関連付けられたデータメッセージに適用されるルールに基づいて、データメッセージ・フローをHFEで処理する。
【0004】
[0003] いくつかの実施形態では、HFEがデータメッセージを受信し、ネットワーク内でデータメッセージを転送するデータプレーン(DP)回路(例えば、特定用途向け集積回路、ASIC)を含む。これらの実施形態のいくつかでは、DP回路がネットワークスライスに関連付けられたスライス識別子を識別することによって、フローのネットワークスライスを識別する。次に、これらの実施形態のDP回路は、(1)スライス識別子を使用してDP回路に格納されたルールを識別し、(2)識別されたルールに関連付けられたデータメッセージに対して動作を実行することによって、データメッセージ・フローを処理する。いくつかの実施形態におけるHFEはまた、データメッセージを処理するためのルールをDP回路に設定する設定データを提供するための制御プレーン回路(例えば、マイクロプロセッサおよび関連するプログラム)を含む。
【0005】
[0004] いくつかの実施形態では、DP回路がデータメッセージ・フローについて識別するスライス識別子を、ルールのルール識別子の一部であるスライス識別子と一致させることによって、受信したデータメッセージ・フローに関連付けられたルールを識別する。いくつかの実施形態における識別されたルールは、データメッセージ・フローをHFEの特定のポートに転送するための転送動作を指定する転送ルールである。いくつかの実施形態では、スライスベースの転送ルールがネットワーク内の同じ宛先への異なるパス(通信経路)のネクストホップを特定するネクストホップ転送ルールである。他の実施形態では、スライスベースの転送ルールがネットワーク内の異なる宛先への異なるパスの異なるネクストホップを特定するネクストホップ転送ルールである。例えば、いくつかの実施形態では、異なるスライスベース転送ルールが異なるスライス識別子に関連付けられたデータメッセージ・フローを処理するために、異なるデータセンタに接続された異なるポートを選択する。いくつかの実施形態では、スライスベースの転送ルールは、複数の物理的な転送エレメントにまたがるように定義された論理的な転送エレメントの論理的な転送動作を特定することができる。
【0006】
[0005] いくつかの実施形態における識別されたルールは、データメッセージ・フロー上で実行するミドルボックス・サービス動作に関連付けられたミドルボックス・サービスルールである。例えば、いくつかの実施形態では、識別されたルールがフローの関連スライス識別子に基づいて、フローのデータメッセージをドロップするか許可するかを決定するファイアウォールルールである。他の実施形態では、識別されたルールがその関連付けられたスライス識別子に基づいて、データメッセージ・フローに対して実行するロードバランシング動作を特定するロードバランシングルールである。いくつかの実施形態におけるこのロードバランシング動作は、これらのデータメッセージ・フローに関連付けられたスライス識別子に基づいて、ネットワーク内のいくつかの異なる宛先または異なる経路間でデータメッセージ負荷を分散する。
【0007】
[0006] 上述したように、いくつかの実施形態は、ネットワークスライスに対して、ネットワークスライスに関連付けられたデータメッセージ・フローに対して実行する動作セットを特定する。いくつかの実施形態におけるこれらの動作は、ネットワーク内のいくつかのデバイスによって実行されるいくつかの動作を含む。いくつかの実施形態では、これらのデバイスがネットワークスライスに関連付けられた少なくとも1つ以上の動作を実行するために、ホストコンピュータ上で実行するマシンを含む。いくつかの実施形態では、これらのマシンが仮想マシン(VM)および/またはコンテナを含む。また、いくつかの実施形態では、これらのマシンが実行する動作がテレコミュニケーションネットワークによって実現される仮想ネットワーク機能(VNF)である。これらのVNFは、ネットワークを通過するデータメッセージ・フロー上でテレコミュニケーションネットワークのインフラストラクチャによって実行されるサービスチェーンの一部である。いくつかの実施形態では、異なるネットワークスライスがテレコミュニケーションネットワークを通過する異なるタイプのトラフィックに対応する。
【0008】
[0007] HFEは受信したデータメッセージ・フローのためのネットワークスライスを識別するために、異なる実施形態において異なる技術を使用する。いくつかの実施形態では、HFEがフローのデータメッセージを、HFEとは別の外部デバイスに転送する。この外部デバイスは受信したデータメッセージを分析し、関連付けられたフローに対するスライス識別子を識別し、フローの後続のデータメッセージをフローのスライスIDと一致させるために使用するマッチレコードを用いてHFE(例えば、HFEのCP回路へのAPI(アプリケーションプログラミングインターフェース)コールを介してHFE DP回路)を設定する。いくつかの実施形態では、この外部デバイスは、HFEがマッチレコードで設定される前に、受信したデータメッセージをそれらのネクストホップの宛先に転送する。外部デバイスはいくつかの実施形態ではスタンドアロン機器であり、他の実施形態では、関連付けられたスライス識別子を確認するために、HFEから受信したデータメッセージを分析するためにマシンが実行するホストコンピュータである。
【0009】
[0008] 他の実施形態では、HFEのDP回路が受信したデータメッセージ・フローをHFEのCP回路に転送し、HFEのCP回路は次に、受信したデータメッセージのスライス識別子を識別し、このスライス識別子を、処理のためにデータメッセージと共にDP回路に戻す。いくつかの実施形態では、CP回路がフローの後続のデータメッセージをフローのスライスIDと一致させるために使用するマッチレコードをHFE(例えば、そのCP回路を介してHFE DP回路)に設定する設定データの一部としてスライス識別子を提供する。
【0010】
[0009] いくつかの実施形態ではCP回路がリソース共有プログラムを実行し、このプログラムの上で実行するマシンは受信したデータメッセージのスライス識別子を識別する。いくつかの実施形態において、プログラムは仮想化プログラム(例えば、ハイパーバイザ)またはLinux(登録商標)オペレーティングシステムであり、マシンは、仮想マシンまたはコンテナである。いくつかの実施形態では、CP回路のリソース共有プログラムがデータメッセージ属性をスライス識別子に関連付けるコンテキストエンジンを含むハイパーバイザである。このコンテキストエンジンは、受信したデータメッセージ・フローの属性のセットを使用して、受信したフローのスライス識別子を識別する。
【0011】
[0010] いくつかの実施形態では、CP回路上で実行されるコンテキストエンジンがホストコンピュータ上で実行されるハイパーバイザのコンテキストエンジンから、スライス識別子を有するデータメッセージ属性に照合するレコードを受信する。他の実施形態では、CP回路のコンテキストエンジンがネットワークマネージャまたはコントローラのセットとして動作する1つ以上のサーバのセットから、スライス識別子とデータメッセージ属性とを照合するレコードを受信する。さらに他の実施形態では、コンテキストエンジンがデータメッセージ・フローの属性セット(例えば、その5つまたは7つのタプル識別子)と、ハイパーバイザの上で実行される仮想マシン(VM)からのスライス識別子とを関連付けるレコードを受信する。
【0012】
[0011] いくつかの実施形態では、HFEのCP回路上で実行されるハイパーバイザがネットワーク内のホストコンピュータ上で実行されるハイパーバイザと同じまたは同様である。これらの類似または同一のハイパーバイザは、ネットワーク内のマネージャおよび/またはコントローラがホストコンピュータ上で実行されるHFE、ホストコンピュータ、およびソフトウェア転送エレメントの両方を管理できる共通プラットフォームを提供する。具体的には、これらの実施形態ではマネージャおよび/またはコントローラがホストコンピュータおよびこれらのホストコンピュータ上で実行されるソフトウェア転送エレメントを管理および/または制御するように、HFEのCP回路を管理および/または制御する。いくつかの実施形態では、HFEのCP回路上で実行されるハイパーバイザがホストコンピュータハイパーバイザと同じNIC(ネットワークインターフェースコントローラ)データモデル抽象化をHFEのデータプレーン回路に使用する。HFEのCP回路上で実行されるハイパーバイザの場合、これらの実施形態は、変換プラグインを使用して、データプレーン回路とのハイパーバイザ通信をNICデータモデルフォーマットからDP回路モデルフォーマットに変換する。
【0013】
[0012] 前述の概要は、本発明のいくつかの実施形態の簡単な紹介として役立つことを意図している。これは、本明細書に開示される全ての発明の主題の紹介または概略であることを意味するものではない。以下の詳細な説明および詳細な説明において参照される図面は、概要において説明される実施形態ならびに他の実施形態をさらに説明する。したがって、本文書によって説明されるすべての実施形態を理解するために、概要、詳細な説明、図面、および特許請求の範囲の完全な検討が必要である。さらに、特許請求される主題は、概要、詳細な説明、および図面における例示的な詳細によって限定されるべきではない。
【図面の簡単な説明】
【0014】
[0013] 本発明の新規な特徴は、添付の特許請求の範囲に記載されている。しかしながら、説明の目的のために、本発明のいくつかの実施形態を以下の図面に記載する。
図1】[0014] 図1は、異なるネットワークスライスに対応する異なるスライス識別子に関連付けられた異なるデータメッセージ・フローで異なる動作チェーンを実行するいくつかのネットワークエレメントを含む、ソフトウェア定義型データセンタ(SDDC)の例を示す。
図2】[0015] 図2は、いくつかの実施形態のハードウェア転送エレメント(HFE)の例を示す。
図3】[0016] 図3は、スライスベースのルールに基づいて、異なる経路に沿って同じ宛先にデータメッセージを転送するデータプレーン(DP)回路の例を示す。
図4】[0017] 図4は、データセンタ・ネットワークの異なるセグメントの開始を定義するいくつかの実施形態に係る2つのHFEを示す。
図5】[0018] 図5は、スライスベースのルールに基づいて、異なる経路に沿って異なる宛先にデータメッセージを転送するDP回路の一例を示す。
図6】[0019] 図6は、DP回路が2つの異なるスライスIDに関連付けられた2つの異なるデータメッセージ・フローを、2つの異なるデータセンタ内の2つの異なるマシンセットに転送する例を示す。
図7】[0020] 図7は、データメッセージ・フローに関連付けられたスライスIDに基づいて、異なるクラスタ内の異なる宛先ノードに異なるデータメッセージ・フローを分配するためにロードバランシング動作を実行するDP回路を有するロードバランサを示す。
図8】[0021] 図8は、データメッセージ・フローに関連付けられたスライスIDに基づいて、異なるデータメッセージ・フローを許可するか、ドロップするか、またはリダイレクトするかを決定するためにファイアウォール動作を実行するDP回路を有するファイアウォール機器を示す。
図9】[0022] 図9は、HFEが新しいフロー内のデータメッセージの初期セットのためのスライス識別子を外部デバイスにオフロードする技術を示す。
図10】[0023] 図10は、いくつかの実施形態における、図9のDP回路の動作を概念的に示すプロセスを提示する。
図11】[0024] 図11は、新たに受信したデータメッセージ・フローに関連付けられたスライスIDを識別するためのHFEのための別のアプローチを示す。
図12】[0025] 図12は、スライス識別を容易にするために制御プレーン(CP)回路上で実行されるハイパーバイザおよびコンテキストエンジンの例を示す。
図13】[0026] 図13は、いくつかの実施形態においてHFEのCP回路がHFEのDP回路によって処理されるデータメッセージのためのサービスチェーンの1つ以上のサービス動作を実行する1つ以上のマシンを実行することを示す。
図14】[0027] 図14は、同様のハイパーバイザを実行するCP回路およびホストコンピュータを示す。
図15】[0028] 図15は、いくつかの実施形態ではHFEのCP回路上で実行されるハイパーバイザがホストコンピュータ上で実行されるハイパーバイザと同じまたは類似のデータモデル抽象化を使用することを示す。
図16】[0029] 図16は、SD-WAN(ソフトウェア定義ワイドアクセスネットワーク)動作を実行するためにスライスベースのHFEを使用する例を示す。
図17】[0029] 図17は、SD-WAN(ソフトウェア定義ワイドアクセスネットワーク)動作を実行するためにスライスベースのHFEを使用する例を示す。
図18】[0030] 図18は、ホストコンピュータのためのイングレス(入口)フロー制御を実施するいくつかのHFEの例を示す。
図19】[0031] 図19図18のホストコンピュータの入口フロー制御を実施するために、サーバセットがHFEを設定するために使用するプロセスを示している。
図20】[0032] 図20は、本発明のいくつかの実施形態が実施されるコンピュータシステムを概念的に示す。
【発明を実施するための形態】
【0015】
[0034] 以下の発明の詳細な説明では、本発明の多数の詳細、実施例、および実施形態が記載され、説明される。しかし、本発明は記載された実施形態に限定されず、本発明は記載された特定の詳細および例のいくつかがなくても実施され得ることが、当業者には明らかであり、明らかであろう。
【0016】
[0035] 本発明のいくつかの実施形態は、ネットワーク内のハードウェア転送エレメント(HFE)において、データメッセージ・フローに基づいてネットワークスライスベースの動作を実行する新たな方法を提供する。HFEによって受信されたデータメッセージ・フローに対して、本方法は、(1)受信したデータメッセージ・フローに関連付けられたネットワークスライスを識別し、次いで、(2)識別されたネットワークスライスに基づいて、受信したデータメッセージ・フローに対して動作を実行するHFEを有する。
【0017】
[0036] いくつかの実施形態では、識別されたネットワークスライスがネットワークエレメント・セットによって受信したデータメッセージ・フロー上で実行される必要がある動作セットに関連付けられる。ある実施形態ではネットワークスライスがネットワークスライスに関連付けられたデータメッセージ上で実行する動作セットを指し、他の実施形態ではネットワークスライスがネットワークスライスに関連付けられたデータメッセージ上で動作セットを実行するネットワークエレメントを指す。HFEに加えて、ネットワークエレメントのセットは、典型的にはデータメッセージ・フローとネットワークスライスとの関連付けに基づいて、データメッセージに対して1つ以上の動作を実行する他のエレメントを含む。ネットワークエレメントのセットは、いくつかの実施形態において、ネットワーク内の1つ以上のコンピュータ上で実行される1つ以上のマシンを含む。
【0018】
[0037] いくつかの実施形態におけるHFEは、受信したデータメッセージ・フローに関連付けられたスライス識別子を識別することによって、受信したデータメッセージ・フローに関連付けられたネットワークスライスを識別する。以下でさらに説明するように、HFEは、例えば、HFEが実行するプログラムを使用することによって、または他のデバイスおよび/またはプログラムを使用することによって、異なる実施形態で異なる受信したデータメッセージ・フローのスライス識別子(ID)を識別する。
【0019】
[0038] 受信したデータメッセージのスライスIDを取得した後、いくつかの実施形態におけるHFEは(1)スライス識別子を使用してそのルールの1つを識別し、(2)識別されたルールに関連付けられたデータメッセージ・フローに対して動作を実行することによって、データメッセージ・フローを処理する。いくつかの実施形態では、HFEがそのルール識別子の一部としてスライスIDを有するいくつかのルールを格納する。これらの実施形態では、HFEがメッセージの関連スライス識別子をルールの識別子内のスライス識別子と照合することによって、フローのデータメッセージをルールに照合する。
【0020】
[0039] いくつかの実施形態では、1つ以上のサービスチェーンが各ネットワークスライスについて定義することができ、各サービスチェーンはチェーンのネットワークスライスに関連付けられたデータメッセージ・フローに対して実行する1つ以上の順序付けられた動作シーケンス(たとえば、計算(コンピュート)動作、転送動作、および/またはサービス動作など)を特定する。いくつかの実施形態では、ネットワークスライスがネットワーク(例えば、1つ以上のデータセンタのネットワーク)内のリソース(例えば、計算リソース、転送リソース、サービスリソースなど)のグループである。いくつかの実施形態では、ネットワークスライスのリソースのグループによってデータメッセージ・フローが処理されるように、1つ以上のデータメッセージ・フローのグループをネットワークスライスに関連付けることができる。
【0021】
[0040] 例えば、いくつかの実施形態では、ネットワークが複数のネットワークスライスを定義することができるテレコミュニケーションネットワーク(例えば、5Gテレコミュニケーションネットワーク)である。5Gテレコミュニケーションネットワークのためのそのようなスライスの例は、ブロードバンドデータを処理するためのモバイルブロードバンドスライス、IoTデータを処理するためのIoT(Internet of Things)スライス、遠隔測定(テレメトリ)データを処理するための遠隔測定スライス、Voice over IPデータのためのVOIP(voice over IP)スライス、ビデオ会議データを処理するためのビデオ会議スライス、ナビゲーションデータを処理するためのデバイスナビゲーションスライスなどを含む。
【0022】
[0041] 本明細書では、データメッセージがネットワークを介して送信される特定のフォーマットのビットの集合を指す。当業者であれば、「データメッセージ」という用語は、イーサネットフレーム、IPパケット、TCPセグメント、UDPデータグラムなど、ネットワークを介して送信され得る様々なフォーマットされたビットの集合を参照するために本明細書で使用され得ることが認識されるのであろう。また、本明細書で使用されるように、L2、L3、L4、およびL7レイヤ(またはレイヤ2、レイヤ3、レイヤ4、およびレイヤ7)への参照は、OSI(Open System Interconnection)レイヤモデルの第2のデータリンク層、第3のネットワーク層、第4のトランスポート層、および第7のアプリケーション層への参照である。
【0023】
[0042] 図1は、異なるネットワークスライスに対応する異なるスライス識別子に関連付けられた異なるデータメッセージ・フローに対して異なる動作チェーンを実行するいくつかのネットワークエレメントを含む、ソフトウェア定義型データセンタ(SDDC)100の例を示す。この例におけるネットワークエレメントは、HFE 105と、2セットのホストコンピュータ115および117上で実行される2セットのマシン110および112とを含む。この例におけるSDDC 100はまた、HFE 105およびホストコンピュータ115および117を管理および制御するための1つ以上のサーバ120のセットを含む。
【0024】
[0043] この例では、HFE 105が2つの異なるネットワークスライスに関連付けられた2つの異なるデータメッセージ・フロー125および130を受信する。この例のデータメッセージ・フローには、対応するネットワークスライスを識別するスライスID(カプセル化ヘッダなど) は含まれていない。したがって、HFE 105は、各データメッセージ・フロー125または130のスライスIDを識別する。HFE 105が、データメッセージ・フローのスライス識別子を識別するために異なる実施形態で使用する異なる技術について、以下で説明する。
【0025】
[0044] 特定のデータメッセージ・フローに対するスライスIDを識別した後、HFE 105は、(1)識別されたスライスIDを使用して、データメッセージ・フローを転送するためのルールを選択し、(2)フローのデータメッセージを、選択されたルールに基づいてマシン110または112のセットに転送する。例えば、いくつかの実施形態では、HFE 105がいくつかのネクストホップ転送ルールを格納する。これらの各ルールは、ルールに一致するフローのデータメッセージのネクストホップを指定する。各ルールには、スライス識別子を含むルール識別子もある。いくつかの実施形態では、転送ルールのルール識別子が他のデータメッセージ属性(例えば、他のヘッダフィールド)も含むことができる。
【0026】
[0045] HFE 105は、そのフローの識別されたスライスIDを1つ以上の転送ルールのルール識別子と照合することによって、転送ルールとデータメッセージを照合する。いくつかの実施形態におけるこの照合はまた、データメッセージのフローの1つ以上のヘッダ値(例えば、フローの5つまたは7つのタプル識別子における1つ以上の属性)を使用する。データメッセージを転送ルールと照合した後、HFE 105は次に、一致する転送ルールによって指定されたネクストホップ宛先を使用して、データメッセージをマシン110または112の2つのセットのうちの1つに転送する。この例では、フロー125の一部であるデータメッセージがマシンセット110に送られ、フロー130の一部であるデータメッセージがマシンセット112に送られる。
【0027】
[0046] 図1の例では、2つのマシンセット110または112が2つの異なるネットワークスライスに関連付けられた2つの異なる動作チェーンを実行する。図に示すように、各チェーンでは、一部のマシンは同じホストコンピュータ上で実行でき、他のマシンは他のホストコンピュータ上で実行できる。また、この例では、異なるチェーンが異なる数の動作を有する。しかしながら、当業者はいくつかの実施形態において、異なる代替チェーンが同じ数の動作を有することができ、または、異なるセットの計算リソース(例えば、コンピュータ、仮想マシン、コンテナなど)およびネットワークリソース(例えば、スイッチ、ルータ、ミドルボックス設備など)によって実行される同じ動作さえも有することができることを理解するであろう。
【0028】
[0047] いくつかの実施形態におけるマシンは、仮想マシン(VM)および/またはコンテナを含む。また、いくつかの実施形態では、マシンが実行する動作がテレコミュニケーションネットワークによって実現される仮想ネットワーク機能(VNF)である。VNFは、ネットワークを通過するデータメッセージ上でテレコミュニケーションネットワークのインフラストラクチャによって実行されるサービスチェーンの一部である。いくつかの実施形態では、異なるネットワークスライスがテレコミュニケーションネットワークを通過する異なるタイプのトラフィックに対応する。
【0029】
[0048] サーバセット120は特定のスライスIDに関連付けられた特定のネットワークスライスに関するデータメッセージを処理するために、マシンセット110または112の各々を配備し、設定する。例えば、ある実施形態ではマシンセット110がスライスID Aに関連付けられたデータメッセージを処理するように配備され設定され、一方、マシンセット112はスライスID Bに関連付けられたデータメッセージを処理するように配備され設定される。
【0030】
[0049] また、いくつかの実施形態では、セット110および112内の1つ以上のマシンが、(1)データメッセージ・フローに関連付けられたスライスIDを識別し、(2)識別されたスライスIDに基づいて、フローのデータメッセージに対して実行する動作を選択することによって、それらの動作を実行する。しかし、他の実施形態では、マシン110および112がこれらのメッセージフローのスライスIDに基づいて、それらが処理するデータメッセージに対して実行する動作を選択しない。代わりに、これらの実施形態では、これらのマシンが単に配備され、特定のスライスIDに関連付けられたデータメッセージを処理するように構成される。
【0031】
[0050] HFE 105は、いくつかの実施形態ではトップオブラック(TOR)スイッチである。他の実施形態では、ゲートウェイ、例えば、ネットワークの南北境界にあるゲートウェイである。さらに他の実施形態では、HFE 105がミドルボックス機器(ミドルボックス設備)である。また、データメッセージ・フローのためのスライスIDを識別した後、いくつかの実施形態では、HFE 105がこのフローのデータメッセージをヘッダでカプセル化し、各データメッセージのカプセル化ヘッダにスライスIDを挿入して、後続のネットワークエレメントがそれらの動作を実行する際にスライスIDを使用できるようにする。
【0032】
[0051] 図2は、いくつかの実施形態のHFE 105の一例を示す。図示のように、HFE 105は、データプレーン(DP)回路205、制御プレーン(CP)回路210、転送エレメント(FE)ポート215のセット、およびDPポート220のセットを含む。HFE 105は、ネットワーク内の送信元および/または宛先コンピュータに接続するエッジ転送エレメント、またはネットワーク内の他の転送エレメントに接続する非エッジ転送エレメントとすることができる。有線または無線接続を介して、HFE 105はそのFEポート215から処理するデータメッセージを受信し、そのFEポート215から処理されたデータメッセージを送信する。この例では、HFE 105がソースマシン222からデータメッセージを受信し、第1のサービスチェーンに沿って第1のホップ224にデータメッセージを転送するものとして示されている。
【0033】
[0052] DP回路205は、HFE 105が受信したデータメッセージを処理する。DPポート220はFEポート215からデータメッセージを受信し、そこにデータメッセージを送信する。DP回路205は、いくつかの入口(Ingress)メッセージ処理パイプライン225と、いくつかの出口(Egress)メッセージ処理パイプライン230と、入口パイプライン225を出口パイプライン230に接続するクロスバースイッチ235とを有する特定用途向け集積回路(ASIC)である。各入口または出口パイプラインはいくつかのメッセージ処理ステージ240を含み、各ステージは、データメッセージに対して1つ以上の動作を実行することができる。
【0034】
[0053] いくつかの実施形態では、メッセージ処理ステージ240がデータメッセージの関連付けられた属性セット(例えば、ヘッダ値、スライスIDなど)を、それが格納する1つ以上のルールと照合しようとする。一致するルールが見つかると、メッセージ処理ステージ240は一致するルールに関連付けられた動作(すなわち、アクション)を実行する。いくつかの実施形態では、CP回路210は、メッセージ処理ステージ240がデータメッセージを処理する際に使用するルールをDP回路205に設定する設定データを提供する。いくつかの実施形態におけるCP回路210は、制御プレーンプログラムを格納するメモリと、制御プレーンプログラムを実行するプロセッサ(例えば、x86マイクロプロセッサ)とを含む。
【0035】
[0054] 関連付けられたネットワークスライスに基づいてデータメッセージ・フローを処理するために、DP回路205は以下で説明するいくつかの技術のうちの1つを使用して、最初に、そのネットワークスライスを指定するフローに関連付けられたスライスIDを識別する。フローのスライスIDを識別した後、これらの実施形態のDP回路205は、(1)スライス識別子を使用してDP回路205に格納されたルールを識別し、(2)識別されたルールに関連付けられたフローのデータメッセージに対して動作を実行することによって、データメッセージ・フローを処理する。
【0036】
[0055] 図2に示されるように、入口パイプライン225におけるメッセージ処理ステージ240aはいくつかのレコード252を格納するマッチアクション・テーブル250を含み、各レコードは照合(マッチ)タプル254とアクションタプル256を有している。いくつかの実施形態ではレコード252がマッチタプルおよびアクションタプルが異なるテーブルに格納される際の概念的なレコードであるが、アドレス指定スキームを介して関連付けられる(例えば、アクションタプルは対応するマッチタプルが格納されるマッチテーブル内の位置に対応する位置にあるそのアクションテーブルに格納される)。各レコードのマッチタプル(ルールとも呼ばれる)はデータメッセージ属性のセット(例えば、送信元および宛先IP、送信元および宛先ポート、プロトコル、送信元および宛先MACアドレスである7つのデータメッセージのタプル識別子のいずれか)を指定する。一方、レコードのアクションタプルは、レコードのマッチタプルに一致するデータメッセージに対して実行するアクションを指定する。
【0037】
[0056] メッセージ処理ステージ240は受信したデータメッセージの属性のセットをレコードのマッチタプルと比較して、データメッセージがレコードと一致するかどうかを判定し、一致する場合は、レコードのアクションタプルによって指定されたアクションを実行する。各ルールのマッチタプルは、ルールを一意に識別するため、実質的にルールの識別子である。図示されるように、マッチアクションテーブル250のレコード252のマッチタプル254は、スライスIDを含む。さらに、レコード252のマッチタプルはデータメッセージの他の属性(例えば、送信元および宛先IP、送信元および宛先ポート、およびプロトコルのその5つのタプル識別子のいずれか)を含むことができる。
【0038】
[0057] ソースマシン222からのデータメッセージ・フローを、フローに関連付けられたスライスIDに基づいてそのサービスチェーンに沿って最初のホップに転送するために、いくつかの実施形態でのメッセージ処理ステージ240aは、フローの受信したデータメッセージに関連付けられたスライスIDと、マッチ-アクションテーブル250で1つ以上のレコード252の1つ以上のマッチタプル254とを比較して、一致するスライスIDを有するレコードを識別する。
【0039】
[0058] 一致するレコードを見つけた後、いくつかの実施形態におけるメッセージ処理段階240aは、一致するレコードのアクションタプルから出口ポートIDを取得する。この出口ポートIDは、受信したデータメッセージがDP回路から出るべきDP出口ポートを特定する。この例では、識別されたDP出口ポートがデータメッセージのフローに関連付けられたスライスIDによって識別されるネットワークスライスのサービスチェーンの最初のホップに関連付けられる。
【0040】
[0059] 出口ポート識別子はその後、識別された出口ポートに関連付けられた出口パイプラインにデータメッセージを送るために、他のメッセージ処理ステージ240および/またはクロスバースイッチ235によって使用される。次に、出口パイプラインは識別された出口ポートにこのデータメッセージを提供し、次に、データメッセージを第1ホップサービスノード224に転送するデータメッセージをそれに関連付けられたFE出口ポートに提供する。
【0041】
[0060] いくつかの実施形態では、DP回路205のスライスベースの転送ルールがネットワーク内の同じ宛先への異なる経路の次のホップを特定するネクストホップ転送ルールである。図3はこの例を示す。この図は、HFE 105のDP回路205が2つの異なるスライスID AおよびBに関連付けられた2つの異なるデータメッセージ・フロー125および130を2つの異なるマシンセット110および112に転送して、それぞれのデータメッセージ・フロー上で2つの異なる動作セットを実行することを示す。
【0042】
[0061] それぞれのマシンセット110または112によって処理された後、各データメッセージ・フロー125または130は、そのマシンセット内の最後のマシンの最後のホストコンピュータのソフトウェア転送エレメントによって、同じ宛先ノード305に転送される。いくつかの実施形態では、宛先ノード305は別のマシンである。他の実施形態では、宛先ノード305がミドルボックス・アプライアンス、または両方のデータメッセージ・フロー上で同じミドルボックス・サービス動作を実行するミドルボックス・アプライアンスのクラスタ(同じ仮想IPアドレスなど、同じ仮想ネットワーク・アドレスに関連付けられている)である。
【0043】
[0062] さらに別の実施形態では、この宛先ノード305がデータセンタ・ネットワークの別のセグメントに関連する別のハードウェア転送エレメントである。これらの実施形態のいくつかでは図4に示すように、HFE 105および305はデータセンタ・ネットワークの異なるセグメントの開始を定義し、この例では3つのHFE 105、305および405はネットワークの2つのセグメント402および404を定義し、HFE 105はこれらのフローに関連付けられたスライスIDに基づいて2つの経路410および415に沿ってデータメッセージ・フローを転送し、一方、HFE 305はスライスIDに基づいて3つの経路420、425および430に沿ってデータメッセージ・フローを転送する。
【0044】
[0063] いくつかの実施形態では、DP回路205のスライスベースの転送ルールがネットワーク内の異なる宛先への異なる経路の次のホップを特定するネクストホップ転送ルールである。図5はこの例を示す。この図はデータセンタ内の2つの異なる宛先エンドノード(例えば、宛先計算ノード)512および514で終端する2つの異なる経路506および508に沿って、2つの異なるスライスID AおよびBに関連付けられた2つの異なるデータメッセージ・フロー125および130を転送するHFE 105のDP回路205を示す。
【0045】
[0064] 図6は、HFE 105のDP回路205が2つの異なるスライスID AおよびBに関連付けられた2つの異なるデータメッセージ・フロー125および130を、2つの異なるデータセンタ605および610内の2つの異なるマシンセット110および112に転送する例を示す。いくつかの実施形態では、異なるタイプのスライスに対するデータメッセージ・フローが処理のために異なるデータセンタに送られる。例えば、いくつかの実施形態ではモバイルテレメトリデータ(例えば、テレメトリスライス)のためのデータメッセージ・フローは1つのデータセンタに送信され、デバイスナビゲーションデータ(すなわち、ナビゲーションスライス)のためのデータメッセージ・フローは別のデータセンタに送信され、VOIPデータ(例えば、オーディオブロードバンドスライス)はさらに別のデータセンタに送信される。
【0046】
[0065] いくつかの実施形態では、データメッセージ・フローに基づいてネットワークスライスベースの動作を実行するHFEは、提供するミドルボックス・サービスの一部としてこれらの動作を実行するミドルボックス・アプライアンス(ミドルボックス設備)である。例えば、図7は、データメッセージ・フローに関連付けられたスライスIDに基づいて、異なるクラスタ内の異なる宛先ノードに異なるデータメッセージ・フローを分配するためにロードバランシング動作を実行するDP回路720を有するロードバランサ700を示す。この図は宛先ノード710および712の2つの異なるクラスタ715および717を示し、一方は4つの宛先ノードを持ち、他方は6つの宛先ノードを持つ。
【0047】
[0066] ロードバランシングルール755によって示されるように、いくつかの実施形態では、ロードバランサ700がこれらのデータメッセージ・フローに関連付けられたスライス識別子に基づいて選択されるロードバランシング基準に基づいて、ネットワーク内のいくつかの異なる宛先の間でデータメッセージ負荷を分散する。具体的には、示されるように、いくつかの実施形態におけるロードバランサ700のDP回路720はいくつかのルール755を含むマッチアクションテーブル750を有し、その各々はスライスIDを含むマッチタプル760と、ロードバランシング基準のセット(例えば、重み値のセット)を含むアクションタプル765とを有する。
【0048】
[0067] データメッセージ・フローに関連付けられたスライスIDを識別した後、DP回路720は、フローのスライスIDをルール755の1つのマッチタプル760と照合し、次いで、その一致(マッチ)するルールのアクションタプル765を使用して、マッチするスライスIDに関連付けられたデータメッセージ・フローをクラスタ715/717内のいくつかの宛先ノード710/712の間で分配するためのロードバランシング基準のセットを選択する。異なる宛先ノードの中から選択する代わりに、他の実施形態におけるロードバランシング動作は例えば、再び、これらのデータメッセージ・フローに関連付けられたスライス識別子に基づいて選択されるロードバランシング基準に基づいて、ネットワーク内の同じ宛先へのいくつかの異なる経路の間でデータメッセージ負荷を分散する。
【0049】
[0068] 図8は、データメッセージ・フローに関連付けられたスライスIDに基づいて、異なるデータメッセージ・フローを許可するか、ドロップするか、またはリダイレクトするかを決定するためにファイアウォール動作を実行するDP回路820を有するファイアウォール設備(アプライアンス)800を示す。具体的には図示のように、いくつかの実施形態におけるファイアウォール設備800のDP回路820はいくつかのルール855を含むマッチアクションテーブル850を有し、その各々は(1)スライスIDを含むマッチタプル860と、(2)許可、ドロップ、またはリダイレクトなどのファイアウォールアクションを指定するアクションタプル765とを有する。
【0050】
[0069] データメッセージ・フローに関連付けられたスライスIDを識別した後、DP回路820は、(1)処理中のデータメッセージのスライスIDをルール855のうちの1つのマッチタプル860と照合し、(2)その一致するルールのアクションタプル865を使用して、データメッセージに対して実行するファイアウォールアクションを識別し、(3)識別されたファイアウォールアクションをデータメッセージに対して実行する。他の実施形態は、他のスライスベースのミドルボックス・サービス動作(宛先ネットワークアドレス変換など)を実行する。
【0051】
[0070] ミドルボックスの実施形態(図7および図8を参照して上述したものなど)または転送エレメントの実施形態(図1図6を参照して上述したものなど)では、HFEがデータメッセージ・フローに関連付けられたスライス識別子を最初に識別するためにいくつかの技術のうちの1つを使用し、その後、スライス識別子を使用して、そのミドルボックスまたは転送動作をフロー上で実行する。ここで、いくつかのそのような技術を、図9~12を参照して説明する。
【0052】
[0071] 図9は、HFE 900が新しいフロー980内のデータメッセージの初期セット902のスライス識別を外部デバイス905にオフロードし、新しいデータメッセージ・フローのスライスIDを識別した後、HFE 900のDP回路920を再設定して、このフローで受信するデータメッセージの後のセット904のスライスIDを識別できるようにする技術を示す。このアプローチの下ではHFE 900が新しいデータメッセージ・フローで受信する1つ以上のデータメッセージの初期セット902を外部デバイス905に転送し(これはHFEとは別である)、この外部デバイスはこれらのデータメッセージを分析して、データメッセージ・フローに関連付けられたスライスIDを識別することができる。
【0053】
[0072] デバイス905は、いくつかの実施形態ではスタンドアロン機器である。しかしながら、図9に示される実施形態では、デバイスは、関連付けられたスライス識別子を確認するためにHFE 900から受信されたデータメッセージを分析するがホストコンピュータ上で実行されるスライス識別VM 950である。米国特許出願第16/443,812号は、いくつかの実施形態ではデバイス905がデータメッセージ・フローに関連付けられたスライスIDを識別するために使用するプロセスを開示している。米国特許出願第16/443,812号は、参照により本明細書に組み込まれる。
【0054】
[0073] 新しいフロー内のデータメッセージの初期セットのスライスIDを識別した後、デバイス905はスライスIDに基づいて転送ルールを識別し、次いで、この転送ルールに基づいて識別するネクストホップ960にこれらの初期データメッセージを転送する。いくつかの実施形態ではデバイス905がHFE 900と同じスライスベースの転送ルールを有し、それにより、デバイス905はHFE 900が受信する初期データメッセージを、いったん再設定されると、同じフロー内の後続データメッセージを転送するのと同じ方法で転送することができる。外部デバイスがスライス識別VM 950であるとき、VMは新しいフローのスライスIDを特定し、そのハイパーバイザ954のソフトウェア転送エレメント952は転送ルールを処理して、データメッセージの初期セットをネクストホップ960に転送する転送動作を実行する。
【0055】
[0074] また、新しいフロー内のデータメッセージの初期セットのスライスIDを識別した後、デバイス905はHFEのCP回路925へのAPIコール内にスライスIDおよびフローの識別子(たとえば、5つまたは7つのタプル識別子)を含む。このAPIコールは、CP回路925に、そのマッチタプルの一部としてフローIDを有し、そのアクションタプルの一部としてスライスIDを有するマッチアクションレコードをDP回路920内に作成するように指示する。図示のように、CP回路925は、次いで、設定データをDP回路920に提供して、受信したスライスIDをデータメッセージの属性セットに関連付けるレコードを記憶するように設定する。
【0056】
[0075] DP回路920はこのレコードを格納すると、フロー980内の後続のデータメッセージを処理し、これらの後続のデータメッセージのスライスIDを生成するために、このレコードを使用することができる。次に、このスライスIDにより、DP回路920は後続のデータメッセージを、そのマッチタプルの一部としてスライスIDおよびフローIDを有し、そのアクションタプルの一部としてDP出口ポートIDを有するマッチ-アクション・レコードとマッチさせることができる。このマッチ-アクション・レコードを通して、DP回路920は後続のデータメッセージのためのDP出口ポートIDを識別することができ、その後、DP出口ポートは、識別されたDP出口ポートを介して、その関連付けられたFE出口ポートからネクストホップ960へ送信される。
【0057】
[0076] 図9に示す例ではHFE 900、DP回路920、および外部デバイス905はネクストホップ転送動作のみを実行する。他の実施形態では、これらのコンポーネントが他の動作を実行する。例えば、いくつかの実施形態では、DP回路920がスライスベースのミドルボックス動作を実行する。これらの実施形態のうちのいくつかでは、外部デバイス905はまた、DP回路920がフロー内の後続のデータメッセージのセットに対して実行するのと同じデータメッセージの初期セットに対して同じミドルボックス・サービス動作を実行することができるように、DP回路920と同じスライスベースのミドルボックスルール(例えば、ファイアウォールルールなど)を処理する。
【0058】
[0077] 図10は、いくつかの実施形態におけるHFE 900のDP回路920の動作を概念的に示すプロセス1000を示す。図示のように、プロセス1000は、DP回路920が転送すべきデータメッセージを受信すると(1005において)開始する。1010において、プロセス1000は受信したデータメッセージのフロー識別子(例えば、その5つまたは7つのタプル識別子)が、マッチレコードを特定するスライスIDと一致するか否かを判定する。一致しない場合、データメッセージは、DP回路920がスライスID特定デバイス905に転送しなければならないデータメッセージの初期セット902の一部である。
【0059】
[0078] したがって、1015において、プロセスは、スライスID特定デバイス905に関連付けられたDP出力ポートを識別する。次に、1020で、DP回路920のクロスバースイッチ235は、1015で識別された出口ポートに関連付けられた出口パイプラインにデータメッセージを転送する。次に、この出口パイプラインは識別されたDP出口ポートに(1025で)データメッセージを提供し、その後、メッセージを関連付けられたFE出口ポートに送信して、ネットワークに沿って送信する。
【0060】
[0079] データメッセージ(およびおそらく同じフロー内の他のデータメッセージ)をスライスID特定デバイス905に(1025で)送信した後の所定の期間、デバイス905は、データメッセージのタプルをスライスIDに関連付けるマッチレコードを用いてDP回路920を設定するようにCP回路925に指示する。これに応じて、CP回路925は図10の動作1030によって概念的に図示されるように、このレコードによってDP回路920を設定する。この動作の外部デバイス905およびCP回路925に対する部分的な依存性、ならびに、デバイス905および回路925に依存する時間におけるインスタンスでのその発生を示すために、図10は、破線の矢印を使用して、動作1025から動作1030までの流れを図示する。1030で、DP回路920は、データメッセージのフロー識別子を、デバイス905およびCP回路925によって提供されるスライスIDに関連付けるレコードを格納する。
【0061】
[0080] DP回路920が受信したデータメッセージのフロー識別子を、マッチレコードを特定するスライスIDと照合し(1010)、DP回路920は、一致するレコードからスライスIDを取り出す(1035)。次に、取り出したスライスIDを(1040で)使用して、受信したデータメッセージを、スライスIDとネクストホップの出口ポートとを関連付けるマッチ-アクション・テーブルに保存されているネクストホップ転送ルールと照合する。
【0062】
[0081] このレコードからネクストホップ・レコードおよび出口ポートを識別した後(1040で)、DP回路920のクロスバースイッチ235は、1040で識別された出口ポートに関連付けられた出口パイプラインにデータメッセージを転送する(1045)。次に、この出口パイプラインは識別されたDP出口ポートに(1050で)データメッセージを提供し、その後、メッセージを関連付けられたFE出口ポートに送信して、ネットワークに沿って送信する。1050の後、プロセス1000は終了する。
【0063】
[0082] いくつかの実施形態では、HFEおよびそのCP/DP回路が別のタイプの転送エレメントまたはミドルボックス機器(アプライアンス)で使用される場合、プロセス1000と同様のプロセスが使用される。具体的には、これらの実施形態ではDP回路が新しいフロー内のデータメッセージの初期セットのスライス識別および処理を、外部デバイス(例えば、ホストコンピュータ上で実行されるVM)にオフロードする。新しいデータメッセージ・フローのスライスIDを識別した後、これらの実施形態の外部デバイスはDP回路がこのフローで受信するデータメッセージの後のセットのスライスIDを識別できるようにDP回路を(そのHFEのその関連付けられたCP回路を介して)再設定し、その結果、DP回路は、これらのデータメッセージの後のセットに対してスライスIDベースの転送またはミドルボックス・サービス動作を実行することができる。
【0064】
[0083] 図11は、新たに受信したデータメッセージ・フローに関連付けられたスライスIDを識別するためのHFEのための別のアプローチを示す。このアプローチでは、HFEのDP回路1120が新しいデータメッセージ・フローに関連付けられたスライスIDを識別するために、新しいフローの1つ以上のデータメッセージの初期セットを分析するためにHFEのCP回路1125に転送する。いくつかの実施形態では、CP回路が特定のデータメッセージ・フローのスライスIDを識別するために、上記に組み込まれた米国特許出願第16/443,812号に記載された技術を使用するマシン(例えば、コンテナまたはVM)または他のプログラムを実行する。新しいデータメッセージ・フローのスライスIDを識別した後、CP回路は、このスライス識別子を、処理のために初期セット内のデータメッセージと共にDP回路に戻す。
【0065】
[0084] 他の実施形態では、CP回路が解析したデータメッセージをDP回路に提供して転送する代わりに、DP回路がCP回路によるスライスID識別を実行するように設定されるまで、DP回路から受信したデータメッセージをネクストホップの宛先に(例えば、転送エレメントまたはCP回路の1つ以上のネットワークインタフェースカードを介して)転送する。いくつかの実施形態では、CP回路およびDP回路がL2転送動作および/またはL3転送動作を実行する。
【0066】
[0085] いくつかの実施形態では、CP回路1125がプログラムを実行するためのプロセッサ1150(例えば、マルチコアプロセッサ)と、プログラムを記憶するためのメモリ1175とを含む。メモリ内の2つのプログラムは、リソース共有プログラムと、新しいデータメッセージ・フローのためのスライス識別子を識別するためにリソース共有プログラムの上で実行するスライス識別マシンである。例えば、示されるように、いくつかの実施形態におけるプログラムは仮想化プログラム1110(例えば、ハイパーバイザ)であり、マシンは、仮想マシン1115である。さらに示されるように、他の実施形態におけるプログラムはLinux(登録商標)オペレーティングシステム1120であり、マシンはコンテナ1125である。いくつかの実施形態では、VM 1115またはコンテナ1125が上に組み込まれた米国特許出願第16/443,812号に開示された方法論を使用して、データメッセージに関連付けられたスライスIDを識別する。
【0067】
[0086] VMの例またはコンテナの例のいずれにおいても、いくつかの実施形態におけるCP回路は、(1)フローの識別子(例えば、5つまたは7つのタプル識別子)を含むマッチタプルと、(2)関連付けられたスライスIDを含むアクションタプルと、を有するマッチ-アクションレコードを記憶するように設定する設定データをDP回路1120に提供する。このレコードを記憶した後、DP回路1120は、それを使用して、メッセージのフローIDをレコードのマッチタプルと照合することによって、フロー内の各受信したデータメッセージのためのデータプレーン内のスライスIDを生成する。
【0068】
[0087] 次いで、このスライスIDは、DP回路1120がデータメッセージを、そのマッチタプルの一部としてスライスIDおよびフローIDを有し、そのアクションタプルの一部としてDP出口ポートIDを有する、以前に設定されたマッチ-アクション・レコードと照合することを可能にする。このマッチ-アクション・レコードを通して、DP回路1120は後続のデータメッセージのためのDP出口ポートIDを識別することができ、その後、DP出口ポートは、識別されたDP出口ポートを通して、その関連付けられたFE出口ポートに送信され、次いで、ネクストホップに転送される。DP回路1120がミドルボックス・サービスを実施する場合、スライスIDは図7および図8を参照して上述した動作と同様に、ミドルボックス動作を実行するようにDP回路に指示するマッチ-アクション・ルールに一致する。
【0069】
[0088] データメッセージ・フローに関連付けられたスライスIDを識別するためにCPプログラムの上で実行するマシン(コンテナまたはVM)を有する代わりに、CP回路は、フロー属性をスライス識別子に関連付けるコンテキストエンジンを含むハイパーバイザを実行する。図12は、CP回路1225上で実行されるそのようなハイパーバイザ1205およびコンテキストエンジン1210の例を示す。この例では、ハイパーバイザ1205がDP回路1220から新しいフローまたはその属性セットのデータメッセージを受信し始めた後、受信したデータメッセージまたはフローの属性セットをコンテキストエンジン1210に提供する。
【0070】
[0089] コンテキストエンジン1210は、受信したデータメッセージの属性セットを使用して、新しく受信したフローのスライスIDを識別する。いくつかの実施形態では、CP回路1225上で実行されるコンテキストエンジンがホストコンピュータ1230上で実行されるハイパーバイザのコンテキストエンジン1235から、スライス識別子とデータメッセージ属性とが一致するレコードを受信する。これらのホストコンピュータ1230上のコンテキストエンジン1235はこれらのVM上で動作するゲストイントロスペクション(GI)エージェント1245から、ホストコンピュータ上で実行されるVM1252から始まるデータメッセージ・フローに関するコンテキスト属性を収集し、これらのコンテキスト属性をデータストア1250に格納する。収集されたコンテキスト属性および事前設定されたルールに基づいて、いくつかの実施形態におけるホスト側コンテキストエンジン1235はデータメッセージ・フローのためのスライス識別子を生成する。例えば、データメッセージ・フローに含まれるトラフィックタイプ(VM上で実行されるGIエージェントまたはそのホスト上で実行されるDPIエージェントによって検出される)を、スライス識別子にトラフィックタイプを関連付けるルールとマッピングすることによって生成される。
【0071】
[0090] いくつかの実施形態ではホスト・コンテキストエンジンが(例えば、オーバーレイトンネルまたはRPCメッセージを介して)CP回路のコンテキストエンジン1210に、スライス識別子とデータメッセージ属性とが一致するレコードを直接提供し、一方、他の実施形態ではホスト・コンテキストエンジンがネットワークマネージャまたはコントローラのセットとして動作する1つ以上のサーバのセットを介して、このデータを間接的に提供する。デバイス上で実行されるハイパーバイザ間でコンテキスト属性(スライス識別子など)を配布するためのいくつかのメカニズムが、参照により本明細書に組み込まれる米国特許出願第2018/0159733号および第2018/0181423号に記載されている。米国特許出願第2018/0159733号および第2018/0181423号に記載されているデバイスのいくつかはコンピュータであるが、いくつかの実施形態は米国特許出願第2018/0159733号および第2018/0181423号に開示されているメカニズムを使用して、コンテキスト属性(スライス識別子など)を、転送エレメントおよびミドルボックスデバイス上で実行されているハイパーバイザに配布する。
【0072】
[0091] 図13は、いくつかの実施形態ではHFE 1300のCP回路1325がHFEのDP回路1320によって処理されるデータメッセージのためのサービスチェーンの1つ以上のサービス動作を実行する1つ以上のマシンを実行することを示す。具体的には、CPプロセッサ1335によって実行されるハイパーバイザやオペレーティングシステム(例えばLinux(登録商標) OS)のようなリソース共有プログラムを格納するCP回路メモリ1330を示す。また、DP回路1320によってCP回路1325に転送されたデータメッセージに対するチェーン動作をサービスする(VMまたはコンテナなどの)いくつかのサービスマシン1340を実施するためのプログラムを記憶するCP回路メモリ1330も示す。いくつかの実施形態では、サービスマシン1340によって実行されるサービスチェーン動作がスライスID特定動作を含む。
【0073】
[0092] 結合的に、または代替的に、いくつかの実施形態では、サービスマシン1340によって実行されるサービスチェーン動作がミドルボックス・サービス動作、ならびに計算および転送動作を含む。図示のように、いくつかの実施形態では、リソース共有プログラム1305およびサービスマシン1340がハイパーバイザ1305aおよびサービスVM(SVM)1340aである。以下でさらに説明するように、ハイパーバイザ1305aはSVMを互いに、およびそのポート1390を介してCP回路1325の1つ以上のNICに通信可能に接続するためのソフトウェア転送エレメント1360(たとえば、ソフトウェアスイッチ)を含む。
【0074】
[0093] そのようなサービスマシンを実行するために、いくつかの実施形態におけるCP回路1325は、今日のいくつかのハードウェア転送エレメントにおいて典型的に使用されるプロセッサおよびメモリよりも、より強力なプロセッサおよびより多くのメモリを有する。DP回路1320によって転送されたデータメッセージに対して1つ以上のサービス動作を実行した後、いくつかの実施形態では、CP回路1325がこれらのデータメッセージをDP回路1320に戻して、データメッセージをネットワーク内の次の宛先に転送する。
【0075】
[0094] 他の実施形態ではDP回路1320によって転送されたデータメッセージに対して1つ以上のサービス動作を実行した後、CP回路1325はNIC、CP回路1325、またはHFE 1300を介してネットワーク内の次の宛先にデータメッセージを転送する。また、いくつかの実施形態では、CP回路1325がデータメッセージ・フローについて識別するスライスIDを用いてDP回路1320を設定する。しかしながら、これらの実施形態のいくつかではDP回路1320に転送するように解析するデータメッセージを提供する代わりに、これらの実施形態ではCP回路1325は、DP回路1320がCP回路1325によってスライスID識別情報を実行するように設定されるまで、データメッセージをそのネクストホップ宛先に転送する。いくつかの実施形態では、CP回路1325およびDP回路1320がL2転送動作および/またはL3転送動作を実行する。
【0076】
[0095] CP回路1325によって実行されるマシンは仮想データプレーンとしてサービス提供し、一方、DP回路1320は、物理データプレーンとしてサービス提供する。換言すれば、HFE 1300は、DP回路1320によって実現される物理的なものと、サービスマシン1340を実行するCP回路1325によって実現される別の仮想的なものとの、2つの同時に実行されるデータプレーンを有する。いくつかの実施形態では、HFE 1300がその仮想データプレーン(そのCP回路1325によって実施される)を使用して、その物理DP回路内で処理することができないデータメッセージを処理し、例えば、その仮想データプレーンを使用して、フローのスライスIDを生成し、またはサービスチェーン内でサービス動作を実行する。
【0077】
[0096] HFE CP回路1325のリソース共有プログラム1305がハイパーバイザ1305aである実施形態では、1つ以上のソフトウェア転送エレメントがこのハイパーバイザ上で実行されて、HFEの仮想データプレーンを実施する。このようなソフトウェア転送エレメントの例はソフトウェアスイッチ(例えば、ESXハイパーバイザ上で動作するESXスイッチ)、ソフトウェアルータ等を含む。いくつかの実施形態では、このソフトウェア転送エレメントがCP回路1325がDP回路1320から受信するデータメッセージを処理して、ハイパーバイザ1305a上で実行中のSVM1340aにデータメッセージを転送し、および/またはデータメッセージについてネットワーク内のネクストホップを識別する。
【0078】
[0097] 他のHFEおよび/またはホストコンピュータ上のソフトウェア転送エレメントとともに、いくつかの実施形態では、HFE1300のCP回路1325上で実行されるソフトウェア転送エレメントが複数のHFEおよび/または複数のホストコンピュータにまたがる1つ以上の論理転送エレメントを実施する。したがって、いくつかの実施形態では、HFEのCP回路のソフトウェア転送エレメントが論理転送動作(たとえば、論理ネットワーク識別子に基づくルックアップ動作)を実行する。
【0079】
[0098] いくつかの実施形態では、HFEのCP回路上で実行されるハイパーバイザがネットワーク内のホストコンピュータ上で実行されるハイパーバイザと同じまたは同様である。図14は、そのような一例を示す。この例では、類似または同一のハイパーバイザが共通のプラットフォームを提供し、それを介して、共通のマネージャ1405およびコントローラ1410のセットがホストコンピュータ1450上で実行されるHFE1400、ホストコンピュータ1450、およびSFE1455を管理し、制御する。
【0080】
[0099] いくつかの実施形態では、マネージャ1405およびコントローラ1410がホストコンピュータ1450およびホストSFE1455を管理および/または制御するように、HFEのCP回路1425を管理および制御する。例えば、共通ハイパーバイザプラットフォームを介して、マネージャ1405およびコントローラ1410はいくつかの実施形態ではホストコンピュータの複数のソフトウェア転送エレメントおよびHFEの複数のDP回路にまたがる論理転送エレメント(例えば、論理オーバーレイ転送エレメント)を定義する。
【0081】
[00100] また、この共通プラットフォームを介して、マネージャ1405およびコントローラ1410は、同じスライス識別子に基づいてスライスベースの動作を実行するようにホストSFE1455およびHFE DP回路1420を設定する。そのようなスライスベースの動作の例は、スライスベースの転送動作および/またはスライスベースのミドルボックス動作を含む。共通のハイパーバイザプラットフォームを介して、いくつかの実施形態におけるマネージャ1405およびコントローラ1420は、共通のスライス識別子のセットを使用して、ハードウェアおよびソフトウェアSDDCリソース(HFEおよびSFEを実行するホストコンピュータおよびミドルボックスインスタンスを含む)にわたるネットワークスライスの共通のセットを定義する。
【0082】
[00101] いくつかの実施形態におけるハードウェアおよびソフトウェアリソースはそれらの動作を実行するために(例えば、それらが処理しなければならないルールを選択するために)共通スライス識別子を使用する。共通スライス識別子はまた、マネージャ1405およびコントローラ1410によって使用されて、上述のように、異なるネットワークスライスのためのSDDC内の専用のコンピューティングおよびネットワークリソースの異なるセットを定義する。
【0083】
[00102] いくつかの実施形態ではスライスベースの動作を実行するようにホストSFE1455およびHFE DP回路1420を設定することに加えて、マネージャ1405およびコントローラ1410はより一般的なセキュリティグループ識別子に基づいてネットワーク動作も実行するようにSFEおよびHFEを設定することもできる。より一般的なセキュリティグループの例は、データセンタ・ポートグループ、管理ポートグループ、仮想ストレージポートグループ、仮想マシン・モビリティポートグループなどのポートグループを含む。一部の実施形態におけるポートグループIDはポート上で同じ転送および/またはサービスポリシーを適用するために、データセンタ内の特定のポートを一緒に関連付ける方法である。
【0084】
[00103] いくつかの実施形態では、マネージャ1405及びコントローラ1410がHFE CP回路1425と相互作用することによって、HFE DP回路1420を設定する。具体的にはいくつかの実施形態ではマネージャ1405およびコントローラ1410がハイパーバイザ1430を使用して、設定データおよびコンテキストデータをHFE CP回路1425に提供し、その結果、CP回路1425は対応するDP回路1420を設定して、スライスベースの転送動作および/またはスライスベースのミドルボックス動作を実行することができる。
【0085】
[00104] いくつかの実施形態では、マネージャ1405およびコントローラ1410がハイパーバイザ1430を使用して、HFE1400のCP回路1425上およびホストコンピュータ1450上で実行されるコンピューティングエレメントを配備し、設定する。他の実施形態では、コンピューティングマネージャ1405およびコンピューティングコントローラ1410がHFE1400のCP回路上で実行するようにコンピューティングエレメントを配備および設定しない。
【0086】
[00105] 図14のマネージャ1405およびコントローラ1410の別々のクラスタは、ホストコンピュータ1450およびHFE1400上のハイパーバイザ1435リソースを管理および制御するための別々の管理および制御プレーンを提供する。いくつかの実施形態ではマネージャ1405がホストコンピュータ1450およびHFE1400上のリソースを定義し、一方、コントローラ1410はこれらのリソースを設定する。しかし、他の実施形態は、これらのリソースを管理/制御するための別個の管理プレーンおよび制御プレーンを有さず、むしろ、管理プレーン動作および制御プレーン動作の両方を行うためにサーバの1つのクラスタのみを使用する。
【0087】
[00106] 図15は、いくつかの実施形態ではHFEのCP回路1525上で実行されるハイパーバイザ1505がホストコンピュータ1550上で実行されるハイパーバイザ1510として共通データモデルの抽象化1555を使用することを示す。ハイパーバイザ1505および1510は、異なるトランスレータ(変換器)1515および1517を使用して、HFE DP回路1520およびホストNIC1525へのそれぞれの通信を、DP回路1520およびNIC1527によって解読可能なデータフォーマットに変換する。これらのトランスレータはまた、DP回路1520およびNIC 1527からハイパーバイザ1505および1510への通信を、共通データモデルフォーマット1555に戻すように変換する。
【0088】
[00107] いくつかの実施形態では、これらのトランスレータはプラグインとして実装される。また、いくつかの実施形態ではハイパーバイザ1510とホストネットワークインタフェースカード1527との間の通信のためにトランスレータは使用されず、これらの実施形態における共通データモデル抽象化はホストネットワークインタフェースカードのために定義されたデータモデルである。このような実施形態はトランスレータを使用して、データプレーン回路のハイパーバイザ通信をNICデータモデルフォーマットからDP回路モデルフォーマットに変換し、逆変換を実行するだけである。
【0089】
[00108] 図16は、SD-WAN(ソフトウェア定義ワイドアクセスネットワーク)のエッジデバイス1600としてスライスベースのHFEを使用する例を示す。このエッジHFEはエンティティの特定のローカルエリアネットワーク(LAN)で作動し、この位置にある複数の装置1610(例えば、コンピュータ、タブレット、スマートフォンなど)を、MPLSリンク1602、広帯域インターネットリンク1604、および5G無線リンク1606などの複数のネットワークリンクを介してエンティティのWANに接続する。WANは複数のネットワーク1620(例えば、プライベート・テレコミュニケーションネットワーク、インターネット、MPLSプロバイダのネットワーク等)にまたがって、異なるLANによって提供される異なる位置(例えば、異なるデータセンタ及びブランチ)を接続する。
【0090】
[00109] 処理する各データメッセージ・フローに対して、エッジHFE1600はデータメッセージ・フローに関連付けられたスライスIDを識別し、このスライスIDのためのネットワークリンク(例えば、リンク1602、1604、または1606)を選択し(例えば、スライスIDを使用してリンク選択ルールを識別し、次にこのルールによって特定されたリンクを選択する)、次にデータメッセージ・フローを選択されたネットワークリンクに沿ってその宛先に経路指定する。いくつかの実施形態では、データメッセージ・フローがそのスライスIDを識別するヘッダ(例えば、カプセル化ヘッダ)を有する。他の実施形態では、エッジHFEが異なるフローIDをスライスIDに関連付けるルールで設定される。さらに他の実施形態では、エッジHFEが外部デバイス(図9のスライスID特定回路905など)、またはそのCP回路のモジュール/マシン(図11または図12に示すよう)を使用して、データメッセージ・フローのスライスIDを識別する。
【0091】
[00110] 図17に、別のSD-WAN の例を示す。この例では、スライスベースのHFE 1700がテナントスライスIDに基づいて異なるテナントの異なるLANノードを接続するためのマルチテナント・パブリッククラウドゲートウェイとして使用される。テナントごとに、パブリッククラウドゲートウェイ1700は、テナントの2つ以上のLAN(しばしば異なる物理的な場所にある)を接続することによって、テナントのSD-WANを確立する。この例では、パブリッククラウドゲートウェイ1700がテナントAの支店(ブランチオフィス)1702とデータセンタ1704と、テナントBの支店1706とデータセンタ1708とを接続している。
【0092】
[00111] ゲートウェイ1700は処理するデータメッセージ・フローごとに、データメッセージ・フローに関連付けられたスライスIDを特定し、このスライスIDに関連付けられたネクストホップ・ルーティングテーブルを選択し、ネクストホップ・ルーティングテーブルを使用してデータメッセージ・フローを宛先にルーティングする。ゲートウェイは異なる実施形態においてスライスIDを異なって識別し、例えば、いくつかの実施形態ではデータメッセージ・フローのヘッダ(例えば、カプセル化ヘッダ)からスライスIDを取り出し、他の実施形態ではフローIDをスライスIDに関連付ける事前設定されたテーブルを使用し、またはさらに他の実施形態では外部デバイス、またはそのCP回路のモジュール/マシンを使用する。
【0093】
[00112] いくつかの実施形態のHFEはデバイスへの出口側トラフィックに関する統計を収集し、収集された統計をサーバのセットに報告し、HFEによってデバイスに転送されるフローの量を調整するために新しい出口側の制限を受信することによって、デバイスの入口側フロー制御を実施するように設定され得る。いくつかの実施形態では、HFEがデータメッセージをドロップして、それらが受信する出口側の制限によって指定されたしきい値の下に留まるか、またはそのようなしきい値に到達したときにデータメッセージの送信を遅延させる。
【0094】
[00113] 図18は、いくつかのHFE1800がホストコンピュータ、ホストコンピュータ上で実行されるマシン、サーバ、または任意の他の種類のデバイスとすることができるデバイス1805に対する入口フロー制御を実施する、このような技術の1つを示す。この例では、各HFEがデバイス1805に送信するデータメッセージ・フローに関する統計を生成する。いくつかの実施形態では、HFEがデータメッセージの数、バイトカウントなど、任意の数の異なる統計を生成することができる。いくつかの実施形態におけるこれらの統計はフロー固有であり、すなわち、HFEは、いくつかの異なるフローのそれぞれについての統計値を計算する。フローは個々の5タプルまたは7タプルのフローとすることができ、あるいは、いくつかの個々のフローを含む統合フロー(例えば、同じ送信元IPアドレスおよび宛先IPアドレスを有するすべての個々のフローを包含する統合フロー)とすることができる。フローベースであることに加えて、またはフローベースである代わりに、いくつかの実施形態では、HFEは、デバイスが受信する特定のネットワークスライスのトラフィックの量を定量化するために、各スライスIDについての統計を生成する。
【0095】
[00114] HFEは生成された統計をサーバ1820のセット(例えば、コントローラまたはマネージャ)に提供し、これは、次に、統計を分析して、デバイス1805に転送されるトラフィックの量が閾値を超えるか否かを判定する。この閾値に達すると、サーバセット1820はHFEへの新しい出口の制限(例えば、すべてのフロー、特定のフロー、特定のスライスID、またはフローとスライスIDの特定の組合せなど)を証明する。次いで、HFEはこれらの新しい出口制限を使用して、それらがデバイス1805に送信するデータメッセージの量を制御する(例えば、すべてのフロー、特定のフロー、特定のスライスID、またはフローとスライスIDの特定の組合せなど)。
【0096】
[00115] 上述のように、いくつかの実施形態では、HFEがデータメッセージをドロップして、それらが受信する出口側の制限によって指定されたしきい値の下に留まるようにするか、またはそのようなしきい値に達したときにデータメッセージの送信を遅延させる。また、いくつかの実施形態では、サーバセット1820がホスト1805へのデータメッセージ・フローを調整するために、同じ新しい出口制限を各HFE1800に、または異なる新しい出口制限を異なるHFE 1800に配布することができる。
【0097】
[00116] 図19は、いくつかの実施形態において、サーバセット1820が特定のスライスIDに対する入口データメッセージ負荷を装置1805に制御するために実行する処理1900を示す。このプロセスは、いくつかの実施形態ではデバイス1805が特定のスライスのためのある量を超えるデータメッセージを処理しないことを保証するために使用される。図示のように、プロセスはHFEがデバイス1805に転送することができる特定のスライスのデータメッセージ負荷(例えば、1秒当たりのバイト数など)の出口側の制限をHFE1800に分配することによって(1905で)開始する。
【0098】
[00117] いくつかの実施形態ではプロセスがAPIコールを介してこれらの制限をHFE CP回路に分配し、次いで、HFE CP回路はこれらの制限を観察するようにHFE DP回路を設定する。上述のように、いくつかの実施形態では、HFEがデータメッセージをドロップして、それらが受信する出口側の制限によって指定されたしきい値の下に留まるようにするか、またはそのようなしきい値に達したときにデータメッセージの送信を遅延させる。また、いくつかの実施形態では、サーバセット1820が各HFE 1800に同じ出口制限を、または異なるHFE 1800に異なる出口制限を分配することができる。
【0099】
[00118] ある期間後に、サーバセットは、デバイス1805に転送された特定のスライスのデータメッセージ負荷に関する統計をHFEから収集する(1910で)。いくつかの実施形態における収集された統計は、サーバセットによって配布される制限に関連付けられる。たとえば、制限が1秒あたりのバイト数で表される場合、収集された統計は、HFEがデバイスに配布した1秒あたりの平均バイト数、または特定のスライスの期間に配布された合計バイト数を表す。
【0100】
[00119] 1915で、プロセスは、特定のスライスについてHFEから収集された統計を統合する。次に、それは(1920にて)統合した統計が所望の閾値量(例えば、所望の1秒あたりの合計バイト数)を超えるか否かを判定する。超えない場合、プロセスは1910に戻り、報告された統計の次のバッチを待つ。他方、特定のスライスの統合した統計値がしきい値量を超える場合、プロセスは、(1925で)デバイスに転送することができる特定のスライスのデータメッセージ・フローに関する新しい出口制限を算出する。
【0101】
[00120] 例えば、デバイスが特定のスライスに対して100Mbits/秒を超えて受信すべきでない場合、サーバセット1820は、HFEがデバイス1805に対するこの制限の50%を超えて動作することはないという仮定に基づいて、各HFEに50Mbits/秒の制限を最初に分配しうる。ただし、収集された統計には3つのHFEが35Mbits/秒、45Mbits/秒、および50Mbits/秒をデバイスに送信し、この合計が全体の制限を100Mbits/秒超過していることが、ある期間に示される可能性がある。したがって、サーバセットは、各HFE の個々の限度を33 Mbits/秒にカットして、その集約が全体的な限度を超えないようにする場合がある。
【0102】
[00121] (1925で)新しい制限を計算した後、プロセスは(1930で)これらの新しい制限をHFEに分配する。この場合も、いくつかの実施形態ではプロセスがAPIコールを介してこれらの制限をHFE CP回路に分配し、次いで、HFE CP回路はこれらの制限を監視するようにHFE DP回路を設定する。上述したように、いくつかの実施形態では、HFEがデータメッセージを、それらが受信する新しい出口側制限によって特定されたしきい値の下に留まるようにドロップするか、またはそのようなしきい値に達したときにデータメッセージの送信を遅延させる。また、いくつかの実施形態では、サーバセット1820が同じ新しい出口制限を各HFE1800に、または異なる新しい出口制限を異なるHFE1800に配布することができる。1930の後、プロセスは1910に戻り、報告された統計の次のバッチを待つ。
【0103】
[00122] 上述の特徴およびアプリケーションの多くは、コンピュータ可読記憶媒体(コンピュータ可読媒体とも呼ばれる)に記録された命令のセットとして規定されるソフトウェアプロセスとして実施される。これらの命令が1つ以上の処理ユニット(例えば、1つ以上のプロセッサ、プロセッサのコア、または他の処理ユニット)によって実行されるとき、それらは、処理ユニット(1つ以上)に、命令に示されたアクションを実行させる。コンピュータ可読媒体の例としてはCD-ROM、フラッシュドライブ、RAMチップ、ハードドライブ、EPROM等があるが、これらに限定されない。コンピュータ可読媒体は、無線または有線接続を介して通過する搬送波および電気信号を含まない。
【0104】
[00123] この明細書において、「ソフトウェア」という用語は、プロセッサによって処理するためにメモリに読み込むことができる、読み取り専用メモリに存在するファームウェア、または磁気記憶装置に記憶されたアプリケーションを含むことを意味する。また、いくつかの実施形態では、複数のソフトウェア発明が別個のソフトウェア発明を残しながら、より大きなプログラムのサブパーツとして実施することができる。いくつかの実施形態では、複数のソフトウェア発明を別個のプログラムとして実施することもできる。最後に、本明細書で説明されるソフトウェア発明を共に実施する別個のプログラムの任意の組合せは、本発明の範囲内である。いくつかの実施形態では、ソフトウェアプログラムが1つ以上の電子システム上で動作するようにインストールされると、ソフトウェアプログラムの動作を実行し実行する1つ以上の特定のマシンの実装を定義する。
【0105】
[00124] 図20は、本発明のいくつかの実施形態が実施されるコンピュータシステム2000を概念的に示す。コンピュータシステム2000は、上述のホスト、CP回路、コントローラ、およびマネージャのいずれかを実施するために使用することができる。このように、それは、上述のプロセスのいずれかを実行するために使用することができる。このコンピュータシステムは、様々なタイプの非一時的機械可読媒体と、様々な他のタイプの機械可読媒体のためのインタフェースとを含む。コンピュータシステム2000は、バス2005、処理ユニット2010、システムメモリ2025、読み出し専用メモリ2030、永久記憶装置2035、入力デバイス2040、および出力デバイス2045を含む。
【0106】
[00125] バス2005は、コンピュータシステム2000の多数の内部デバイスを通信可能に接続するすべてのシステムバス、周辺バス、およびチップセットバスを集合的に表す。例えば、バス2005は、処理ユニット2010を、読み出し専用メモリ2030、システムメモリ2025、および永久記憶装置2035と通信可能に接続する。
【0107】
[00126] これらの様々なメモリユニットから、処理ユニット2010は本発明のプロセスを実行するために、実行すべき命令および処理すべきデータを取り出す。処理ユニットは、様々な実施形態において、単一プロセッサまたはマルチコアプロセッサであってもよい。読み出し専用メモリ2030は、処理ユニット2010およびコンピュータシステムの他のモジュールによって必要とされる静的データおよび命令を格納する。一方、永久記憶装置2035は、読み書き可能な記憶装置である。このデバイスは、コンピュータシステム2000がオフのときでも命令およびデータを格納する不揮発性メモリユニットである。本発明のいくつかの実施形態は、永久記憶装置2035として大容量記憶装置(磁気または光ディスクおよびその対応するディスクドライブなど)を使用する。
【0108】
[00127] 他の実施形態では、永久記憶装置として取り外し可能な記憶装置(フロッピーディスク、フラッシュドライブなど)を使用する。永久記憶装置2035と同様に、システムメモリ2025は、読み書き記憶デバイスである。しかしながら、記憶デバイス2035とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性読み出し/書き込みメモリである。システムメモリには、プロセッサが実行時に必要とする命令とデータの一部が格納される。いくつかの実施形態では、本発明のプロセスがシステムメモリ2025、永久記憶装置2035、および/または読み出し専用メモリ2030に記憶される。これらの様々なメモリユニットから、処理ユニット2010はいくつかの実施形態のプロセスを実行するために、実行する命令および処理するデータを取り出す。
【0109】
[00128] バス2005はまた、入出力デバイス2040および2045にも接続する。入力デバイスはユーザが情報を伝達し、コンピュータシステムにコマンドを選択することを可能にする。入力デバイス2040は、英数字キーボード及びポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)を含む。出力デバイス2045は、コンピュータシステムによって生成された画像を表示する。出力デバイスは、プリンタと、ブラウン管(CRT)または液晶ディスプレイ(LCD)などの表示デバイスとを含む。いくつかの実施形態は、入力デバイスおよび出力デバイスの両方として機能するタッチスクリーンなどのデバイスを含む。
【0110】
[00129] 最後に、図20に示すように、バス2005は、ネットワークアダプタ(図示せず)を介してコンピュータシステム2000をネットワーク2065に結合する。このようにして、コンピュータは、コンピュータのネットワーク(ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、またはイントラネットなど)の一部、またはネットワーク(インターネットなど)のネットワークであってもよい。コンピュータシステム2000の任意のまたはすべてのコンポーネントを、本発明と併せて使用することができる。
【0111】
[00130] いくつかの実施形態はコンピュータプログラム命令を、機械可読又はコンピュータ可読媒体(代替的にはコンピュータ可読記憶媒体、機械可読媒体、又は機械可読記憶媒体と称される)に記憶するマイクロプロセッサ、記憶装置及びメモリ等の電子コンポーネントを含む。このようなコンピュータ可読媒体のいくつかの例としては、RAM、ROM、読取り専用コンパクトディスク(CD-ROM)、記録可能コンパクトディスク(CD-R)、書き換え可能コンパクトディスク(CD-RW)、読取り専用ディジタル汎用ディスク(例えば、DVD-ROM、二重層DVD-ROM)、様々な記録可能/書き換え可能DVD(例えば、DVD-RAM、DVD-RW、DVD+RW等)、フラッシュメモリ(例えば、SDカード、ミニSDカード、マイクロSDカード等)、磁気及び/又はソリッドステートハードドライブ、読取り専用及び記録可能なブルーレイ(登録商標)ディスク、超密度光ディスク、任意の他の光又は磁気媒体、及びフロッピーディスクがある。コンピュータ可読媒体は少なくとも1つの処理ユニットによって実行可能であり、様々な動作を実行するための命令のセットを含むコンピュータプログラムを記憶することができる。コンピュータプログラムまたはコンピュータコードの例としては、コンパイラによって生成されるようなマシンコードと、インタープリタを使用してコンピュータ、電気コンポーネント、またはマイクロプロセッサによって実行される上位レベルのコードを含むファイルがある。
【0112】
[00131] 上記の議論は主に、ソフトウェアを実行するマイクロプロセッサまたはマルチコアプロセッサに言及しているが、いくつかの実施形態は特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などの1つ以上の集積回路によって実行される。一部の実施形態では、このような集積回路が回路自体に記憶された命令を実行する。
【0113】
[00132] 本明細書で使用されている「コンピュータ」、「サーバ」、「プロセッサ」、「メモリ」という用語は、すべて電子的またはその他の技術的デバイスを指す。これらの用語は、人々または人々のグループを除外する。本明細書の目的のために、用語「表示する」または「表示する」は、電子デバイス上に表示することを意味する。本明細書で使用されるように、「コンピュータ可読媒体」、「コンピュータ可読媒体」、および「機械可読媒体」という用語は、コンピュータによって可読な形で情報を記憶する有形の物理オブジェクトに完全に制限される。これらの用語は、任意の無線信号、有線ダウンロード信号、および任意の他の一時的または過渡的な信号を除外する。
【0114】
[00133] 本発明を多数の特定の詳細を参照して説明してきたが、当業者であれば、本発明の精神から逸脱することなく、他の特定の形態で本発明を実施できることを理解するであろう。したがって、当業者は、本発明が前述の例示的な詳細によって限定されるべきではなく、むしろ添付の特許請求の範囲によって定義されるべきであることを理解するのであろう。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
【手続補正書】
【提出日】2023-12-04
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数のハードウェア転送エレメント(HFE)を含むデータセンター内のコンピュータへの入口側データメッセージトラフィックのためのサービスレベルを強制する方法であって、
前記HFEから、前記コンピュータへ転送されたデータメッセージに関する出口側の統計を受信することと、
前記データメッセージトラフィックが前記コンピュータへの入口側データメッセージトラフィックのための第1の閾値レベルを超えたかどうかを判定するために前記受信された統計を集約して分析することと、
前記第1の閾値を超えた際に、前記HFEから前記コンピュータへの前記データメッセージトラフィックを削減するためのセカンダリ閾値レベルのセットを前記HFEへ配布することと、
を含む、方法。
【請求項2】
請求項1に記載の方法であって、前記セカンダリ閾値レベルのセットは、すべてのHFEへ配布された同一の第2の閾値レベルを含む、方法。
【請求項3】
請求項1に記載の方法であって、前記セカンダリ閾値レベルのセットは、少なくとも2つの異なるHFEへ配布された少なくとも2つの異なる第2の閾値レベルを含む、方法。
【請求項4】
請求項1に記載の方法であって、配布された前記セカンダリ閾値レベルのセットに基づいて、HFEから前記コンピュータへのデータメッセージトラフィックがセカンダリ閾値レベルに達した際に、前記HFEはデータメッセージをドロップするかまたは遅延させる、方法。
【請求項5】
請求項1に記載の方法であって、
前記出口側の統計を受信する前に、各HFEから前記コンピュータへのデータメッセージトラフィックの制限を定義するために前記HFEへプライマリ閾値レベルの以前のセットを配布することをさらに含む、方法。
【請求項6】
請求項5に記載の方法であって、前記プライマリ閾値レベルのセットは、全てのHFEへ配布された同一のプライマリ閾値レベルを含む、方法。
【請求項7】
請求項5に記載の方法であって、前記プライマリ閾値レベルのセットは、少なくとも2つの異なるHFEへ配布された少なくとも2つの異なるプライマリ閾値レベルを含む、方法。
【請求項8】
請求項1に記載の方法であって、前記データメッセージトラフィックは、2つ以上のデータメッセージフローのグループを特定する特定のグループ識別子に関連付けられたデータメッセージトラフィックを含む、方法。
【請求項9】
請求項1に記載の方法であって、前記データメッセージトラフィックは、ネットワーク内のネットワークスライスに関連付けられた特定のスライス識別子に関連付けられたデータメッセージトラフィックを含む、方法。
【請求項10】
請求項9に記載の方法であって、前記コンピュータは前記ネットワークスライスに関連付けられたマシンを実行する、方法。
【請求項11】
少なくとも1つの処理ユニットによって実行するためのプログラムであって、請求項1から10の何れか一項に記載の方法を実装するための命令セットを含む前記プログラムを格納する非一時的な機械可読媒体。
【請求項12】
ネットワーク内で動作するためのハードウェア転送エレメント(HFE)であって、
複数のメッセージ処理ステージおよびポートのセットを含み、第1のデータメッセージのセットに対して第1のデータプレーン転送動作セットを実行し、前記第1のデータメッセージのセットを前記ポートのセットを介して転送するためのデータプレーン転送回路を実施する特定用途向け集積回路と、
ネットワークインタフェースコントローラ(NIC)と、
マイクロプロセッサと、前記NICを介して転送される第2のデータメッセージのセットに対して第2のデータプレーン転送動作セットを実行するための、前記マイクロプロセッサによる実行のためのプログラムを格納するメモリと、
を備え、前記第1および第2のデータプレーン転送動作セットの両方は、前記データメッセージに対する前記ネットワーク内のネクストホップネットワークエレメントを識別するために前記HFEによって受信される前記データメッセージのネクストホップ転送動作を備える、ハードウェア転送エレメント。
【請求項13】
請求項12に記載のハードウェア転送エレメントであって、前記プログラムは、前記データプレーン転送回路が特定の前記データメッセージのための前記ネクストホップを識別できない場合に、前記データプレーン転送回路から前記プログラムによって処理されるべき特定のデータメッセージを受信する、ハードウェア転送エレメント。
【請求項14】
請求項12に記載のハードウェア転送エレメントであって、前記第1および第2のデータプレーン転送動作セットは、前記ハードウェア転送エレメントによって受信されたデータメッセージ上で実行されるレイヤ2転送動作を含む、ハードウェア転送エレメント。
【請求項15】
請求項12に記載のハードウェア転送エレメントであって、前記第2のデータプレーン転送動作セットは、前記データプレーン転送回路によって受信された第3のデータメッセージのセットに対して実行するための1つ以上のサービス動作セットを含む、ハードウェア転送エレメント。
【請求項16】
請求項15に記載のハードウェア転送エレメントであって、前記第3のデータメッセージのセットはネットワークスライスに関連付けられ、前記サービス動作セットは前記ネットワークスライスに関連付けられたデータメッセージに対して実行される動作のサービスチェーンの一部である、ハードウェア転送エレメント。
【請求項17】
請求項12に記載のハードウェア転送エレメントであって、前記第2のデータプレーン転送動作セットは前記データプレーン転送回路によって受信された複数のデータメッセージフローのそれぞれに関連付けられたスライス識別子(ID)を生成し、前記スライスIDを前記データプレーン転送回路へ提供して前記提供されたスライスIDに基づいてスライスベースの転送動作を実行するためのスライスID特定動作を含む、ハードウェア転送エレメント。
【請求項18】
請求項12に記載のハードウェア転送エレメントであって、前記データプレーン転送回路は前記ハードウェア転送エレメントの物理的な第1のデータプレーンであり、前記マイクロプロセッサによる実行のための前記プログラムは仮想的な第2のデータプレーンを実施する、ハードウェア転送エレメント。
【請求項19】
請求項12に記載のハードウェア転送エレメントであって、前記プログラムは前記第2のデータプレーン転送動作セットを実行するよう定義された少なくとも1つのコンテナを有するLinux(登録商標)オペレーティングシステムである、ハードウェア転送エレメント。
【請求項20】
請求項12に記載のハードウェア転送エレメントであって、前記プログラムは前記第2のデータプレーン転送動作セットの少なくともサブセットを実行する少なくとも1つのモジュールを備えるハイパーバイザである、ハードウェア転送エレメント。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0065
【補正方法】変更
【補正の内容】
【0065】
[0084] 他の実施形態では、CP回路が解析したデータメッセージをDP回路に提供して転送する代わりに、DP回路がCP回路によるスライスID識別を実行するように設定されるまで、DP回路から受信したデータメッセージをネクストホップの宛先に(例えば、転送エレメントまたはCP回路の1つ以上のネットワークインタフェースコントローラを介して)転送する。いくつかの実施形態では、CP回路およびDP回路がL2転送動作および/またはL3転送動作を実行する。
【外国語明細書】