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

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

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

特許7475491仮想ポート識別子を使用するフロー処理オフロード
<>
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図1
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図2
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図3
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図4
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図5
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図6
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図7
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図8
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図9
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図10
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図11
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図12
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図13
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図14
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図15
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図16
  • 特許-仮想ポート識別子を使用するフロー処理オフロード 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-18
(45)【発行日】2024-04-26
(54)【発明の名称】仮想ポート識別子を使用するフロー処理オフロード
(51)【国際特許分類】
   H04L 49/60 20220101AFI20240419BHJP
   H04L 49/25 20220101ALI20240419BHJP
   H04L 49/35 20220101ALI20240419BHJP
   G06F 13/10 20060101ALI20240419BHJP
   G06F 13/12 20060101ALI20240419BHJP
【FI】
H04L49/60
H04L49/25
H04L49/35
G06F13/10 330C
G06F13/12 340C
【請求項の数】 23
(21)【出願番号】P 2022564064
(86)(22)【出願日】2021-07-17
(65)【公表番号】
(43)【公表日】2023-07-19
(86)【国際出願番号】 US2021042115
(87)【国際公開番号】W WO2022066267
(87)【国際公開日】2022-03-31
【審査請求日】2022-12-20
(31)【優先権主張番号】17/114,994
(32)【優先日】2020-12-08
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/084,436
(32)【優先日】2020-09-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/114,975
(32)【優先日】2020-12-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】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)【発明者】
【氏名】ムラーリ, スリヴィディヤ
【審査官】和平 悠希
(56)【参考文献】
【文献】特開2019-161319(JP,A)
【文献】特開2015-039166(JP,A)
【文献】特開2017-147597(JP,A)
【文献】特表2015-515798(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-12/66
H04L 41/00-101/695
G06F 13/10
G06F 13/12
(57)【特許請求の範囲】
【請求項1】
ホスト・コンピュータに接続された物理ネットワーク・インタフェース・カード(pNIC)において前記ホスト・コンピュータのためにフロー処理オフロード(FPO)を提供するための方法であって、前記方法は、
前記pNICの第1のインタフェースにおいて特定のデータ・メッセージ・フローのデータ・メッセージを受信することであって、前記pNICは、前記特定のデータ・メッセージ・フローのデータ・メッセージのための宛先として特定の仮想ポート識別子(VPID)を指定するフロー・エントリを記憶する、ことと、
VPIDの集合及び物理ポート識別子(PPID)の対応する集合を記憶するマッピング・テーブルにおいてルックアップを実行することによって、前記特定のVPIDを使用して、前記受信されたデータ・メッセージの宛先としてPPIDを識別することと、
前記識別されたPPIDに関連付けられた前記pNICの第2のインタフェースへ前記データ・メッセージを転送することと、を有する方法。
【請求項2】
請求項1に記載の方法であって、
前記フロー・エントリは、前記特定のデータ・メッセージ・フロー内の第1のデータ・メッセージを、前記第1のデータ・メッセージの宛先を決定するために処理し、前記第1のデータ・メッセージの前記処理の結果に基づいて前記pNICに前記フロー・エントリを提供するフロー処理及びアクション・ジェネレータから受信され、
前記マッピング・テーブルは、前記フロー処理及びアクション・ジェネレータによって受信されたVPID及びPPIDに関する構成データに基づいてマッピングの前記集合を生成する前記フロー処理及びアクション・ジェネレータから前記pNICにおいて受信されたVPIDとPPIDとの間のマッピングを記憶する、方法。
【請求項3】
請求項2に記載の方法であって、データ・メッセージ・フローの集合ためのデータ・メッセージ処理に影響を与える変更の後に、前記pNICは、前記フロー処理及びアクション・ジェネレータから受信された更新に基づいて前記マッピング・テーブルを更新し、
データ・メッセージ処理に影響を与える前記変更は、(i)前記pNICの前記インタフェースと、(ii)前記ホスト・コンピュータ上で実行されるマシンの前記インタフェースとのうちの少なくとも1つに関する変更を含む、方法。
【請求項4】
請求項3に記載の方法であって、前記変更は、前記ホスト・コンピュータ上で実行されるマシンの第1のvNICと前記pNICの第1のインタフェースとの間の関連付けから、前記第1のvNICと前記pNICの第2のインタフェースとの間の関連付けへの変更であり、前記第1のvNICは第1のVPIDに関連付けられ、前記pNICの前記第1のインタフェースは第1のPPIDに関連付けられ、前記pNICの前記第2のインタフェースは第2のPPIDに関連付けられ、前記マッピング・テーブルへの前記更新は、前記第1のPPIDへの前記第1のVPIDのマッピングを、前記第2のPPIDへの前記第1のVPIDのマッピングに更新し、前記受信されたデータ・メッセージは第1のデータ・メッセージであり、前記識別されたPPIDは前記第1のPPIDであり、前記方法は、
前記マッピング・テーブルが更新された後に、前記特定のデータ・メッセージ・フローの第2のデータ・メッセージを受信することと、
(i)前記特定のデータ・メッセージ・フローのデータ・メッセージのための前記宛先として前記第1のVPIDを指定する前記フロー・エントリと、(ii)前記第1のVPIDに関連付けられたPPIDについての前記更新されたマッピング・テーブルにおけるルックアップとに基づいて、前記受信されたデータ・メッセージの宛先として前記第2のPPIDを識別することと、
前記第2のPPIDに関連付けられた前記pNICの前記第2のインタフェースへ前記データ・メッセージを転送することと、をさらに有する、方法。
【請求項5】
請求項4に記載の方法であって、
前記第2のPPIDは複数のVPIDに関連付けられ、
前記第2のPPIDへの前記第1のVPIDの前記マッピングは、前記第1のVPIDへ宛てられたデータ・メッセージが、前記第2のPPIDに関連付けられた前記pNICの前記第2のインタフェースへ、前記第1のVPIDとともに転送されるべきであることのインジケーションを含み、
前記第2のデータ・メッセージを前記pNICの前記第2のインタフェースへ転送することは、前記第1のVPIDとともに前記データ・メッセージを転送することを含み、前記第1のVPIDは、前記第2のデータ・メッセージを前記第1のvNICへ向かわせるために前記ホスト・コンピュータ上で実行されるソフトウェア・スイッチによって使用される、方法。
【請求項6】
請求項5に記載の方法であって、前記マッピング・テーブルを更新する前に、
前記第1のPPIDは前記第1のVPIDのみに関連付けられ、
前記第1のVPIDに宛てられたデータ・メッセージは、前記ソフトウェア・スイッチを横断することなく前記第1のvNICに配信され、
前記VPIDは、前記第1のPPIDに関連付けられた前記pNICの前記第2のインタフェースへデータ・メッセージとともに転送されていない、方法。
【請求項7】
請求項3に記載の方法であって、前記ホスト・コンピュータは、前記pNICに接続された複数のホスト・コンピュータにおける第1のホスト・コンピュータであり、前記pNICは、前記複数のホスト・コンピュータにおける各ホスト・コンピュータのためにFPOを提供し、各ホスト・コンピュータは、前記複数のホスト・コンピュータにおける異なるホストに関連付けられていないPPIDの少なくとも1つの集合に関連付けられる、方法。
【請求項8】
請求項7に記載の方法であって、データ・メッセージ処理に影響を与える前記変更は、前記第1のホスト・コンピュータから前記複数のホスト・コンピュータにおける第2のホスト・コンピュータへマシンがマイグレーションすることを含み、前記フロー処理及びアクション・ジェネレータから受信される前記更新は、前記マシンに関連付けられたVPIDのための、前記第2のホスト・コンピュータに関連付けられたPPIDの前記集合内のPPIDへの新たなマッピングを含み、前記新たなマッピングは、前記マシンに関連付けられた前記VPIDの、前記第1のホスト・コンピュータに関連付けられたPPIDの前記集合内のPPIDへの以前のマッピングに置き換わる、方法。
【請求項9】
請求項7に記載の方法であって、前記フロー処理及びアクション・ジェネレータは、前記pNICの処理ユニットの集合と、前記複数のホスト・コンピュータのうちの1つにおける処理ユニットの集合とのうちの少なくとも1つで実行される、方法。
【請求項10】
請求項3に記載の方法であって、
データ・メッセージ処理に影響を与える前記変更は、データ・メッセージの特定の集合を外部の宛先へ転送するために使用する物理アップリンク・ポートの選択への変更であり、
前記pNICは、第1のPPIDに関連付けられた第1の物理アップリンク・ポートと、第2のPPIDに関連付けられた第2の物理アップリンク・ポートとを含み、
第1のVPIDは、データ・メッセージの前記特定の集合に関連付けられたフロー・エントリにおける宛先VPIDとして指定され、
前記マッピング・テーブルへの前記更新は、前記第1のPPIDへの前記第1のVPIDのマッピングを、前記第2のPPIDへの前記第1のVPIDのマッピングに更新する、方法。
【請求項11】
請求項10に記載の方法であって、前記物理アップリンク・ポートの前記選択への前記変更は、前記第1の物理アップリンク・ポートの障害と、データ・メッセージの前記特定の集合のために使用する物理アップリンク・ポートを選択するために実行される負荷分散動作とのうちの少なくとも1つに基づく、方法。
【請求項12】
請求項1に記載の方法であって、前記特定のVPIDは第1のVPIDであり、前記特定のデータ・メッセージ・フローは第1のデータ・メッセージ・フローであり、前記データ・メッセージは第1のデータ・メッセージであり、前記フロー・エントリは第1のフロー・エントリであり、前記方法は、
前記pNICのインタフェースにおいて第2のデータ・メッセージ・フローの第2のデータ・メッセージを受信することであって、前記pNICは、前記第2のデータ・メッセージ・フローのデータ・メッセージのための宛先として第2のVPIDを指定する第2のフロー・エントリを記憶する、ことと、
前記第2のVPIDのためのマッピングが前記マッピング・テーブルに現れないことを判定することと、
フロー処理及びアクション・ジェネレータに関連付けられた前記pNICのインタフェースへ前記データ・メッセージを転送することと、
前記第2のデータ・メッセージ・フローのデータ・メッセージのための宛先として第3のVPIDと指定する第3のフロー・エントリを受信することであって、前記第3のVPIDは、対応するPPIDとともに前記マッピング・テーブルに現れる、ことと、
前記第2のフロー・エントリを削除することと、をさらに有する、方法。
【請求項13】
請求項12に記載の方法であって、
前記pNICの前記インタフェースへ前記データ・メッセージを転送することは、前記転送されるデータ・メッセージとともに、前記第2のフロー・エントリの識別子を前記フロー処理及びアクション・ジェネレータへ送信することを含み、
前記第2のフロー・エントリを削除することは、前記フロー処理及びアクション・ジェネレータから受信された前記第2のフロー・エントリを削除することの命令に応じて前記フロー・エントリを削除することを含む、方法。
【請求項14】
請求項1に記載の方法であって、前記受信されるデータ・メッセージは、特定のPPIDに関連付けられている前記pNICの第3のインタフェースにおいて受信され、前記方法は、
前記特定のPPIDを、対応する変換されたVPIDに変換するために前記マッピング・テーブルを使用することと、
前記変換されたVPIDに基づいて前記特定のデータ・メッセージ・フローのための前記フロー・エントリを識別することと、をさらに有する、方法。
【請求項15】
請求項1に記載の方法であって、前記特定のVPIDは第1のVPIDであり、前記特定のデータ・メッセージ・フローは第1のデータ・メッセージ・フローであり、前記データ・メッセージは第1のデータ・メッセージであり、前記フロー・エントリは第1のフロー・エントリであり、前記識別されたPPIDは第1のPPIDであり、前記pNICは、複数のVPIDに関連付けられた第3のインタフェースを含み、前記方法は、
2のデータ・メッセージに関連付けられた第2のVPIDとともに、前記pNICの前記第3のインタフェースにおいて第2のデータ・メッセージ・フローの前記第2のデータ・メッセージを受信することと、
前記第2のVPIDに基づいて前記第2のデータ・メッセージ・フローのデータ・メッセージのための宛先として第3のVPIDを指定する第2のフロー・エントリを識別することと、
前記マッピング・テーブルにおいてルックアップを実行することによって、前記第3のVPIDを使用して、前記第2のデータ・メッセージの宛先として第2のPPIDを識別することと、
前記第2のPPIDに関連付けられた前記pNICの第4のインタフェースへ前記データ・メッセージを転送することと、をさらに有する、方法。
【請求項16】
少なくとも1つの処理ユニットによって実行された場合に請求項1乃至15の何れか1項に記載の方法を実施するプログラム。
【請求項17】
電子デバイスであって、
処理ユニットの集合と、
前記処理ユニットのうちの少なくとも1つによって実行された場合に請求項1乃至15の何れか1項に記載の方法を実施するプログラムを記憶するマシン可読媒体と、を備える、電子デバイス。
【請求項18】
請求項1乃至15の何れか1項に記載の方法を実施するための手段を備えるシステム。
【請求項19】
ホスト・コンピュータ上で実行されるマシンの集合のためのフロー処理オフロード(FPO)を実行するために前記ホスト・コンピュータに接続された物理ネットワーク・インタフェース・カード(pNIC)であって、前記pNICは、
前記ホスト・コンピュータ上で実行されるマシンの前記集合のインタフェースの仮想ポート識別子(VPID)と、前記pNICのインタフェースの物理ポート識別子(PPID)との間のマッピングの集合を記憶するメモリ・ユニットの第1の集合と、
データ・メッセージ・フローの集合のためのフロー・エントリの集合を記憶するメモリ・ユニットの第2の集合であって、各フロー・エントリは、VPIDを使用して宛先を指定する、メモリ・ユニットの第2の集合と、
受信されたデータ・メッセージについて、(1)前記データ・メッセージの宛先としてVPIDを指定するフロー・エントリを識別し、(2)前記受信されたデータ・メッセージのための出口インタフェースとして前記pNICのインタフェースを識別するために前記VPID及びマッピングの前記集合を使用するFPOハードウェアと、を備える、pNIC。
【請求項20】
請求項19に記載のpNICであって、
VPIDとPPIDとの間のマッピングの前記集合は、フロー処理及びアクション・ジェネレータによって受信されたVPID及びPPIDに関する構成データに基づいてマッピングの前記集合を生成する前記フロー処理及びアクション・ジェネレータから前記pNICにおいて受信され、
フロー・エントリの前記集合は、第1のデータ・メッセージの宛先を決定するためにデータ・メッセージ・フローの前記集合における各データ・メッセージ・フローにおける前記第1のデータ・メッセージを処理し、前記データ・メッセージ・フローのための前記第1のデータ・メッセージの前記処理の結果に基づいてデータ・メッセージ・フローの前記集合における前記データ・メッセージ・フローのための前記フロー・エントリを前記pNICに提供する前記フロー処理及びアクション・ジェネレータから受信される、pNIC。
【請求項21】
請求項20に記載のpNICであって、前記フロー処理及びアクション・ジェネレータは、前記pNICの処理ユニットの集合と、前記ホスト・コンピュータの処理ユニットの集合との少なくとも一方で実行される、pNIC。
【請求項22】
請求項19に記載のpNICであって、メモリ・ユニットの前記第1及び第2の集合のうちの少なくとも1つは、コンテンツ・アドレス可能メモリ・ユニットである、pNIC。
【請求項23】
請求項19に記載のpNICであって、前記pNICは、(1)前記ホスト・コンピュータのソフトウェア・スイッチに接続するための物理機能と、(2)仮想機能とのうちの少なくとも1つとして構成された1つのインタフェースを備える、pNIC。
【発明の詳細な説明】
【技術分野】
【0001】
通常はサーバに関連付けられたより多くの動作が、プログラマブル・ネットワーク・インタフェース・コントローラ(ネットワーク・インタフェース・カード)にプッシュされている。プログラマブルNICにプッシュされる動作の一部は、仮想化計算ノードのためのフロー処理を含む。これらのプログラマブルNICがより普及し、仮想化ネットワークに代わってより多くのフロー処理を実行するため、フロー処理への最適化は、プログラマブルNICの機能を強化するだろう。したがって、プログラマブルNICにオフロードされたフロー処理を最適化することが望ましい。
【発明の概要】
【0002】
本発明のいくつかの実施形態は、物理ネットワーク・カード又は物理ネットワーク・コントローラ(pNIC)を構成して、pNICに接続されたホスト・コンピュータにフロー処理オフロード(FPO)を提供するための方法を提供する。ホスト・コンピュータは、仮想ネットワーク内の計算ノード(例えば、仮想マシン、ポッド、コンテナなど)の集合をホストする。計算ノードの集合はそれぞれ、仮想ネットワーク・コントローラによってそれぞれローカルに一意の仮想ポート識別子(VPID)を割り当てられたインタフェース(仮想NIC、ポートなど)の集合に関連付けられる。pNICは、pNICによって物理ポート識別子(PPID)が割り当てられたインタフェース(物理ネットワークに接続された物理ポート、ペリフェラル・コンポーネント・インタコネクト・エクスプレス(PCIe)ポート、物理機能(PF)、仮想機能(VF)など)の集合を含む。本方法は、VPIDとPPIDとの間のマッピングの集合をpNICに提供することを含む。本方法はまた、計算ノードを移行し、pNICの異なるインタフェースへ接続し、異なるVPIDが割り当てられる際にマッピングへの更新を送信することを含む。いくつかの実施形態の方法は、フロー処理及び動作ジェネレータによって実行される。いくつかの実施形態において、フロー処理及びアクション・ジェネレータはホスト・コンピュータの処理ユニット上で実行され、一方、他の実施形態において、フロー処理及びアクション・ジェネレータは、フロー処理ハードウェア及びプログラマブル処理ユニットの集合を含むpNICの処理ユニットの集合上で実行される。
【0003】
本方法は、計算ノードの集合に関連付けられたデータ・メッセージ・フローの集合のためのフロー・エントリの集合をpNICに提供することをさらに含む。いくつかの実施形態において、フロー・エントリの集合は、VPIDを使用して、マッチング基準の集合及びアクションの一方又は両方を規定する。いくつかの実施形態において、アクションは宛先を指定する。いくつかの実施形態において、各宛先は、VPIDに関して指定され、pNICは、マッピングの集合を使用して、VPIDをPPID(すなわち、出口インタフェース)に解決する。いくつかの実施形態において、各フロー・エントリは、特定のデータ・メッセージ・フローのためのものであり、データ・メッセージ・フローにおいて受信された第1のデータ・メッセージに基づいて生成される。いくつかの実施形態において、フロー・エントリは、仮想(例えば、ソフトウェア)スイッチによって実行されるデータ・メッセージ処理の結果に基づいて生成され、pNICがデータ・メッセージ・フロー内の後続のデータ・メッセージを処理することを可能にするためにpNICに提供される。
【0004】
いくつかの実施形態において、pNICは、接続されたホスト・コンピュータ上で実行される計算ノードの集合のためのフロー処理を実行するために、フロー・エントリの集合及びマッピングをネットワーク処理ハードウェアに記憶する。いくつかの実施形態において、フロー・エントリ及びマッピング・テーブルは、高速ルックアップを実行するために、別個のメモリ・キャッシュ(例えば、コンテンツ・アドレス可能メモリ(CAM)、3値CAM(TCAM)など)に記憶される。いくつかの実施形態において、pNICは、pNICのインタフェースにおいてデータ・メッセージを受信し、ネットワーク処理ハードウェアによって記憶されたフロー・エントリの集合においてルックアップを実行して、データ・メッセージに関連付けられたマッチング基準に基づいてデータ・メッセージのためのアクションを識別する。いくつかの実施形態において、フロー・エントリは、データ・メッセージ・フローを識別するための基準の集合と、VPIDによって識別されるインタフェースへデータ・メッセージを転送することを指定するアクションとを含む。受信されたデータ・メッセージのための宛先としてVPIDを指定するフロー・エントリが存在するならば、pNICは、VPID対PPIDマッピングにおいてルックアップを実行して、VPIDに関連付けられたpNICのインタフェースを識別する。その後、pNICは、指定された宛先VPIDにマッピングされたPPIDによって識別されるpNICのインタフェースへデータ・メッセージを転送する。
【0005】
いくつかの実施形態において、ネットワーク処理ハードウェアはまた、他のフロー・エントリと一致しないデータ・メッセージの宛先としてpNICのインタフェースを識別するデフォルト・フロー・エントリでプログラムされる。いくつかの実施形態において、識別されたインタフェースは、データ・メッセージをフロー処理及びアクション・ジェネレータの仮想(例えば、ソフトウェア)スイッチへ転送するために使用されるインタフェースである。いくつかの実施形態において、仮想スイッチは、第1のデータ・メッセージ処理(例えば、低速パス処理)を実行し、処理の結果に基づいて、データ・メッセージが属するデータ・メッセージ・フロー内の後続のデータ・メッセージを処理するために、フロー・エントリをネットワーク処理ハードウェアへ返す。
【0006】
いくつかの実施形態は、計算ノードがpNICの異なるインタフェースに接続する場合に、VPID対PPIDマッピングを更新するための方法を提供する。いくつかの実施形態において、pNICの異なるインタフェースへ接続することは、計算ノードがpNICの異なるインタフェースにマイグレーションされること、又はpNICが複数のホスト・コンピュータのためにFPOを提供する場合にはpNICの異なるインタフェースに接続される異なるホスト・コンピュータにマイグレーションされることにさえ起因して生じる。いくつかの実施形態において、pNICの異なるインタフェースに接続することは、VMが(例えば、VFに接続された)パススルー・モードから(例えば、PFに接続された)エミュレート・モードに、又はその逆に遷移することに基づく。そのような場合、計算ノード・インタフェースが現在異なるpNICインタフェースに(すなわち、異なるPPIDで)接続されているにもかかわらず、宛先として計算ノード・インタフェースのVPIDを識別するフロー・エントリは、依然として有効である。これらのフロー・エントリに一致するデータ・メッセージは、現在接続されているpNICインタフェースのPPIDへのVPIDの更新されたマッピングを識別するマッピング・テーブル内のルックアップに基づいて、計算ノード・インタフェースに現在接続されているpNICインタフェースに向けられる。
【0007】
いくつかの実施形態において、本方法は、リンク・アグリゲーション(例えば、LACP、トランキング、バンドリング、チーミングなど)が可能にされる物理ネットワークに接続された複数の物理ポート(PP)をpNICが含む場合も扱う。いくつかの実施形態において、物理ネットワークに接続された第1のPPの第1のPPIDへの第1のVPIDのマッピングは、(1)第1のPPの障害の場合、又は(2)VPIDに関連付けられたトラフィックを第1のPPの代わりに第2のPPへ向かわせるための更新された負荷分散決定の場合に、物理ネットワークに接続された第2のPPの第2のPPIDに第1のVPIDをマッピングするように更新される。
【0008】
いくつかの実施形態において、計算ノード・インタフェースの構成の変更後に新たなVPIDが割り当てられる計算ノード・インタフェースについて、vNICが依然としてpNICの同じインタフェースに接続されている場合であっても、PPIDに対する更新されたVPIDが必要とされる。いくつかの実施形態において、更新されたVPID対PPIDマッピングの任意のものについて、フロー処理及びアクション・ジェネレータは、命令の集合(例えば、2つの別個の命令又は2つのアクションを実行するための単一の命令)を送信して、無効なVPID対PPIDマッピングを削除し、VPIDとPPIDとの間の更新された関連付けのための新たなVPID対PPIDマッピングを作成する。計算ノード・インタフェースの構成が変わったため、いくつかの以前のデータ・メッセージ・フローもはや有効ではなく、それらのデータ・メッセージ・フローのフロー・エントリに一致する任意のデータ・メッセージは、計算ノード・インタフェースの新たな構成に基づいて評価するために、フロー処理及びアクション・ジェネレータの仮想スイッチにリダイレクトされる。いくつかの実施形態において、仮想スイッチへのリダイレクトは、「故障」(例えば、マッピング・テーブル内にVPIDについてのエントリがないことを示すヌル結果又は他の結果)を返すVPID対PPIDマッピング・テーブル内のルックアップに基づく。いくつかの実施形態において、フロー・エントリに一致するがVPID対PPIDマッピングとの一致に失敗したデータ・メッセージは、ネットワーク処理ハードウェアによって記憶されたフロー・エントリの集合から無効なフロー・エントリ(すなわち、もはや存在しないVPIDを指すフロー・エントリ)を削除するようにフロー処理及びアクション・ジェネレータがpNICに命令することを可能にするために、データ・メッセージが一致したフロー・エントリの識別子とともにフロー処理及びアクション・ジェネレータへ転送される。
【0009】
いくつかの実施形態において、フロー処理及びアクション・ジェネレータは、ソース宛先VPIDとして識別された各VPIDについて生成されたフロー・エントリに関する情報を記憶する。特定の計算ノード・インタフェースのためのVPIDが(例えば、上述されたように)無効化され、新たな構成が有効になった場合に、フロー処理及びアクション・ジェネレータは、無効化されたVPIDに関連付けられたフロー・エントリを識別し、ネットワーク処理ハードウェアによって記憶されたフロー・エントリの集合から、識別されたフロー・エントリを削除するようにpNICに指示できる。このプロセスは、構成変更が有効になる前に実行される必要はなく、処理能力が利用可能な場合にフロー処理及びアクション・ジェネレータ及びpNICによってバックグラウンド・プロセスとして実行されうる。
【0010】
無効化されたVPIDを宛先として指定するフロー・エントリを削除することにより、VPIDは、再利用されたVPIDに現在関連付けられている計算ノード・インタフェースに向けられている無効化されたVPIDに以前関連付けられていた計算ノード・インタフェースに関連付けられていた古いフローに関係なく再利用されることが可能になる。これに加えて、いくつかの実施形態において、ネットワーキング処理ハードウェアは、特定の時間量の間、使用されていない(すなわち、フロー・エントリに一致するデータ・メッセージが受信されていない)フロー・エントリをエイジングするためのプロセスを実行する。したがって、そのような実施形態において、VPIDは、特定の時間量(例えば、特定の時間量に、無効化されたVPIDに向けられた以前にアクティブであったフローのためのタイムアウトを加えた量)に基づく時間量の後に、無効化されたフロー・エントリを削除するようにpNICにフロー処理及びアクション・ジェネレータが命令しなくても、安全に再使用されうる。いくつかの実施形態において、VPIDは、PPIDよりも多くのビットを有し、VPID対PPIDマッピングがスパースである(すなわち、取りうるPPIDの個数と少なくとも同じ個数の未使用のVPIDが存在する)ように構成される。
【0011】
いくつかの実施形態において、マッピング・テーブルは、データ・メッセージが受信されるPPIDに関連付けられたVPIDを識別するためにも使用される。PPIDにおいて受信されたデータ・メッセージは、PPIDがマッピングするVPIDに関連付けられ、フロー・エントリの集合におけるルックアップはVPID並びに他のマッチング基準の集合に基づいて実行される。複数のVPIDに関連付けられたPPID、例えば、それぞれが異なるVPIDを有する複数の計算ノード・インタフェースに接続された仮想スイッチのインタフェースに接続されたpNICの物理機能(PF)について、PFにおいて受信されたデータ・メッセージは、異なるソースからのトラフィックを区別するためにVPIDにすでに関連付けられている。これに加えて、いくつかの実施形態は、仮想スイッチに接続されたPFを識別するPPIDにマッピングするVPIDについて、マッピング・テーブル内に、マッピング・エントリに一致する転送されたデータ・メッセージとともにVPIDが含まれるべきであるというインジケーション(例えば、マッピング・エントリに関連付けられたフラグ・ビット)を含む。
【0012】
いくつかの実施形態において、マッピング・テーブルは、仮想スイッチに接続するVPIDのマッピングでプログラムされず、ネットワーキング処理ハードウェアは、フロー・エントリに一致するがマッピング・テーブル内のエントリに一致しない任意のデータ・メッセージを、仮想スイッチに接続された(すなわち、フロー処理及びアクション・ジェネレータの)pNICインタフェースに、一致するフロー・エントリ内で指定された宛先VPIDとともに送信するようにプログラムされる。その後、仮想スイッチは、宛先VPID又はデータ・メッセージの他のマッチング基準に基づいてデータ・メッセージを転送できる。いくつかの実施形態において、仮想スイッチは、記憶されたフロー・エントリに基づく高速パス処理パイプラインと、仮想ネットワークの構成及び受信されたデータ・メッセージの特性に基づく低速パス処理パイプラインとを含む。
【0013】
上記の発明の概要は、本発明のいくつかの実施形態の簡単な紹介としての役割を果たすことを意図している。これは、本書に開示されるすべての発明の主題の導入又は概略であることを意味するものではない。以下の発明を実施するための形態、及び発明を実施するための形態において参照される図面は、発明の概要及び他の実施形態において説明される実施形態をさらに説明する。したがって、本書によって説明される実施形態のすべてを理解するために、発明の概要、詳細な説明、図面、及び特許請求の範囲の完全なレビューが必要とされる。さらに、特許請求の範囲の主題は主題の趣旨から逸脱することなく他の特定の形態で実施されうるため、特許請求の範囲の主題は、発明の概要、詳細な説明、及び図面における例示的な詳細によって限定されるべきではなく、むしろ添付の特許請求の範囲によって規定されるべきである。
【図面の簡単な説明】
【0014】
本発明の新規な特徴が添付の特許請求の範囲に記載されている。しかし、説明のために、本発明のいくつかの実施形態が以下の図に説明される。
【0015】
図1】物理NICにおいてホスト・コンピュータにFPOを提供するように構成された例示的なシステムを示す。
【0016】
図2図1のpNICを、図1のマッピング・テーブル及びフロー・エントリ・テーブルに投入するフロー処理及びアクション・ジェネレータ(FPAG)とともに示す。
【0017】
図3】VPID対PPIDマッピング・エントリを生成するためのマッピング・ジェネレータと、SDNコントローラの集合及びSDNマネージャの集合と対話するローカル・コントローラとを含むFPAGのより詳細な図を示す。
【0018】
図4】pNICの汎用プロセッサの集合でFPAGが実行されるシステムを示す。
【0019】
図5】pNICに接続されたすべてのサーバを代表して複数のサーバのうちの1つでFPAGが実行されるシステムを示す。
【0020】
図6】フロー処理を実行するためにpNICのマッピング・テーブルに記憶されるべきVPID対PPIDマッピングを提供するためにいくつかの実施形態において実行されるプロセスを概念的に示す。
【0021】
図7】フロー処理及びアクション・ジェネレータからFPOハードウェアにフロー・エントリを提供するプロセスを概念的に示す。
【0022】
図8】pNICで受信されたデータ・メッセージを処理するためのプロセスを概念的に示す。
【0023】
図9】マッピング・テーブル及びフロー処理テーブルを記憶するpNICのフロー処理ハードウェアを示す。
【0024】
図10】pNICの1つの仮想機能からpNICの別の仮想機能へのVMマイグレーションを示す。
【0025】
図11】pNICの仮想機能に接続された1つのホスト・コンピュータから、pNICの仮想機能に接続された別のホスト・コンピュータへのVMマイグレーションを示す。
【0026】
図12】時刻「T1」においてパススルー・モードからエミュレート・モードに遷移するVMを含むシステムを示す。
【0027】
図13】VMのvNICの構成に対する変更がvNICのVPIDを変更させるシステムの選択された要素を示す。
【0028】
図14】リソースが利用可能である際に実行されうるバックグラウンド処理として無効なフロー・エントリを削除するための処理を概念的に示す。
【0029】
図15】無効化されたVPIDを指定するフロー・エントリを削除するためにFPOハードウェアによって実行されるプロセスを概念的に示す。
【0030】
図16】物理ネットワーク・ポートのリンク・アグリゲーションが使用可能にされたシステムを示す。
【0031】
図17】本発明のいくつかの実施形態が実施されるコンピュータ・システムを概念的に示す。
【発明を実施するための形態】
【0032】
本発明の以下の詳細な説明では、本発明の多数の詳細、例、及び実施形態が記載され、説明される。しかし、本発明は記載された実施形態に限定されず、議論される特定の詳細及び例のうちのいくつかがなくても本発明が実施されうることが当業者には明らかであり、明白であろう。
【0033】
本発明のいくつかの実施形態は、物理ネットワーク・カード又は物理ネットワーク・コントローラ(pNIC)を構成して、pNICに接続されたホスト・コンピュータのためにフロー処理オフロード(FPO)を提供するための方法を提供する。ホスト・コンピュータは、仮想又は論理ネットワーク内の計算ノード(例えば、仮想マシン(VM)、ポッド、コンテナなど)の集合をホストする。計算ノードの集合はそれぞれ、フロー処理及びアクション・ジェネレータによってローカルに一意の仮想ポート識別子(VPID)をそれぞれ割り当てられたインタフェース(仮想NIC、ポートなど)の集合に関連付けられる。pNICは、pNICによって物理ポート識別子(PPID)が割り当てられたインタフェース(物理ネットワークに接続された物理ポート、物理機能(PF)及び仮想機能(VF)を含むペリフェラル・コンポーネント・インタコネクト・エクスプレス(PCIe)ポートなど)の集合を含む。
【0034】
本書で使用されるように、物理機能(PF)及び仮想機能(VF)は、PCIeインタフェースを使用してpNICによって公開されるポートを指す。PFは、別個に構成可能なPCIeインタフェース(例えば、同じpNIC上の他のPFとは別個のもの)を有する一意のリソースとして認識されるpNICのインタフェースを指す。VFは、別個に構成可能ではなく、一意のPCIeリソースとして認識されない仮想化されたインタフェースを指す。いくつかの実施形態において、ホスト・コンピュータ上で実行される計算ノードがホスト・コンピュータの仮想スイッチを横断することなくpNICからデータ・メッセージを受信することを可能にするパススルー・メカニズムを提供するためにVFが提供される。いくつかの実施形態において、VFは、pNIC上で実行される仮想化ソフトウェアによって提供される。
【0035】
いくつかの実施形態において、仮想ネットワークは、論理スイッチ、ルータ、ゲートウェイなどのような1つ以上の論理転送要素を含む1つ以上の論理ネットワークを含む。いくつかの実施形態において、いくつかの物理転送要素(PFE)を構成することによって論理転送要素(LFE)が規定され、そのうちのいくつか又はすべては、デプロイされた計算ノード(例えば、VM、ポッド、コンテナなど)とともにホスト・コンピュータ上で実行される。いくつかの実施形態において、PFEは、デプロイされた計算ノードの異なる2つ以上の部分集合を接続するために2つ以上のLFEを実装するように構成される。いくつかの実施形態において、仮想ネットワークは、NSX-T(商標)によってデプロイされるもののようなソフトウェア定義ネットワーク(SDN)であり、SDNマネージャ及びSDNコントローラの集合を含む。いくつかの実施形態において、SDNマネージャの集合はネットワーク要素を管理し、SDNのための所望の転送挙動を実装するようにネットワーク要素を構成するようにSDNコントローラの集合に指示する。いくつかの実施形態において、SDNコントローラの集合は、ネットワーク要素を構成するために、ホスト・コンピュータ上のローカル・コントローラと対話する。いくつかの実施形態において、これらのマネージャ及びコントローラは、VMware、Inc.によってライセンスされたNSX-Tマネージャ及びコントローラである。
【0036】
本書で使用されるように、データ・メッセージは、ネットワークを介して送信される特定のフォーマットのビットのコレクションを指す。当業者は、データ・メッセージという用語が、ネットワークを介して送信されるビットの様々なフォーマット化されたコレクションを指すために本文書において使用されることを認識するだろう。これらのビットのフォーマットは、標準化プロトコル又は非標準化プロトコルによって指定されうる。標準化プロトコルに従うデータ・メッセージの例は、イーサネット(登録商標)フレーム、IPパケット、TCPセグメント、UDPデータグラムなどを含む。また、本書で使用されるように、L2、L3、L4、及びL7レイヤ(又はレイヤ2、レイヤ3、レイヤ4、及びレイヤ7)への参照は、それぞれ、OSI(オープン・システム・インタコネクション)レイヤ・モデルの2番目のデータ・リンク・レイヤ、3番目のネットワーク・レイヤ、4番目のトランスポート・レイヤ、及び7番目のアプリケーション・レイヤへの参照である。
【0037】
図1は、物理NIC120においてホスト・コンピュータ110のためにFPOを提供するように構成された例示的なシステム100を示す。ホスト・コンピュータ110は、パススルー・モードでpNIC120に接続するホストされた仮想マシン(VM)111a~nの第1の集合を含む。図1に示される実施形態において、各VM111a~nは、PCIeバス131を通じてpNIC120の物理機能(PF)134aの仮想機能(VF)133a~nに接続する仮想NIC(例えば、vNIC112a~n)を有する。仮想マシン(111a~n及び113a~m)及び仮想スイッチ115は、仮想化ソフトウェア114内で実行されるように示される。VF133a~nは、仮想化ソフトウェア135によって提供される。いくつかの実施形態において、仮想化ソフトウェア135は、計算ノード(例えば、VM111a~n)間におけるPCIe接続されたデバイスのリソースの効率的な共有を可能にするシングル・ルートI/O仮想化(SR-IOV)を提供するための製造者仮想化ソフトウェアである。他の実施形態において、仮想化ソフトウェア135は、ハイパーバイザ・プログラム(例えば、スマートNICのリソースを仮想化するために特別に設計されたESX(商標)又はESXio(商標))である。
【0038】
いくつかの実施形態において、vNIC112a~nとVF133a~nとの間の接続は、ホスト・コンピュータ110上のVFドライバ118a~nによって使用可能にされる。ホスト・コンピュータ110はまた、ホスト・コンピュータ110の仮想スイッチ115に接続するVM113a~mの第2の集合を含む。仮想スイッチ115は、PCIeバス131を通じてPF134mを通じてpNIC120に接続する。いくつかの実施形態において、PF134a~mはまた、ホスト・コンピュータ110又は接続されたホスト・デバイスの集合に、別個のPCIe接続されたデバイスとして現れるように、仮想化ソフトウェア135によって仮想化される。VM及びvNICは、本発明の実施形態において実装されてもよい計算ノード及びインタフェースの単なる一例である。
【0039】
pNIC120はまた、pNIC120とVM111a~n及びvNIC112a~nとを物理ネットワークに接続する物理ネットワーク・ポート121を含む。PCIeバス131及び物理ネットワーク・ポート121は、VM111a~n及びvNIC112a~nのためのフロー処理を実行するために、フロー処理オフロード(FPO)ハードウェア140に接続する。FPOハードウェア140は、フロー処理を行うためのフロー・エントリの集合を記憶するフロー・エントリ・テーブル143を含む。いくつかの実施形態において、フロー・エントリは、マッチング基準の集合と、マッチング基準に一致するデータ・メッセージに対して行うべきアクションとを指定する。マッチング基準の集合とアクションとの一方又は両方は、計算ノード・インタフェースを識別するためにVPIDを使用する。いくつかの実施形態において、追加のマッチング基準は、データ・メッセージのヘッダ値(例えば、L2、L3、L4などに関するヘッダ値)を含む。いくつかの実施形態において、行いうるアクションは、データ・メッセージを破棄すること、又はデータ・メッセージをVPIDへ転送することを含む。
【0040】
FPOハードウェア140はまた、マッピング・テーブル142を含む。マッピング・テーブル142は、pNIC120のインタフェースへのフロー・エントリにおいて指定されたVPIDを解決するために使用されるVPID対PPIDマッピングの集合を含む。マッピング・テーブル142はVPIDをPPIDにマッピングし、PPIDはpNIC120のインタフェースを識別する。いくつかの実施形態において、PPIDはpNIC120によって割り当てられ、VPIDはフロー処理及びアクション・ジェネレータ(図示せず)によってpNIC120の特定のインタフェースに割り当てられ、関連付けられる。以下の例で説明されるように、VPIDに関して宛先を指定し、マッピング・テーブルを使用してpNICのインタフェースを識別することにより、計算ノードのインタフェースが、pNICの1つのインタフェースとの間の関連付けをpNICの別のインタフェースとの関連付けに変更しても、フロー・エントリが有効なままであることが可能になる。
【0041】
図2は、図1のpNIC120を、マッピング・テーブル142及びフロー・エントリ・テーブル143を投入するフロー処理及びアクション・ジェネレータ(FPAG)260とともに示す。いくつかの実施形態において、FPAG260は、図1の仮想スイッチ115に置き換わる(例えば、仮想スイッチ261及びローカル・キャッシュ262はホスト・コンピュータ110においてデータ・メッセージを転送するために使用される)。FPAG260は、生成されたフロー・エントリのすべてを記憶するローカル・キャッシュ262を含み、FPAG260において受信されたいくつかのデータ・メッセージについて、受信されたデータ・メッセージについて実行するためのアクションをpNIC120に提供する。いくつかの実施形態において、FPAG260は、ホスト・コンピュータ(例えば、ホスト・コンピュータ110)上で実行され、ローカル・キャッシュ262は、pNIC120にオフロードされないデータ・メッセージ処理のための高速パスとして機能する。
【0042】
FPAG260はまた、仮想スイッチ261を含み、これは、次に、低速パス・プロセッサ263と、フロー・ジェネレータ264とを含む。低速パス・プロセッサ263は、FPOハードウェア140が有効なフロー・エントリを記憶しないデータ・メッセージに対して低速パス処理を実行する。低速パス処理の結果は、その後、フロー処理をFPOハードウェア140にオフロードするためのフロー・エントリを生成するためにフロー・ジェネレータ264によって使用される。例えば、低速パス処理は、特定の転送ルールが、データ・メッセージ・フローに適用され、データ・メッセージが属するフローを一意に識別する基準の集合と、当該フローに属する将来のデータ・メッセージのために行うべきアクションとを供給することを示してもよい。いくつかの実施形態において、基準の低減された集合を使用する特定の転送ルールについて、生成されたフロー・エントリは、アクションを決定するために特定の転送ルールによって使用されないデータ・メッセージ特性についてフロー・エントリによって指定されたマッチング基準の集合内にワイルドカード値を含む。図9は、フロー・ジェネレータ264によって生成されるフロー・エントリにおいて指定されてもよい基準及びアクションのタイプをより詳細に説明する。
【0043】
いくつかの実施形態において、仮想ネットワークは、SDNマネージャの集合及びSDNコントローラの集合を含むソフトウェア定義ネットワーク(SDN)である。図3は、PPID対VPIDマッピング・エントリを生成するためのマッピング・ジェネレータ368と、SDNコントローラ366の集合及びSDNマネージャ367の集合と対話するローカル・コントローラ365とを含むFPAG260のより詳細な図を示す。いくつかの実施形態において、ローカル・コントローラ365は、ローカルにホストされた計算ノード及び管理されたスイッチング要素(例えば、仮想スイッチ261)のための構成情報を受信する。いくつかの実施形態において、ローカル・コントローラ365は、SDNコントローラ366の集合から計算ノード・インタフェースのためのVPIDを受信するか、又は計算ノード・インタフェースにVPIDをローカルに割り当てるかのいずれかである。さらに、いくつかの実施形態において、ローカル・コントローラ365は、pNIC120のインタフェースのPPIDを識別し、計算ノード・インタフェースとpNIC120のインタフェースとの間の接続を構成するために、pNIC120と対話する。
【0044】
いくつかの実施形態において、ローカル・コントローラ365は、SDN(又はSDNの論理転送要素の集合)のために規定されたデータ・メッセージ処理パイプラインを実装するために必要な転送ルール及び追加ポリシー(例えば、ファイアウォール・ポリシー、暗号化ポリシーなど)で低速パス・プロセッサ263を構成する。いくつかの実施形態において、ローカル・コントローラ365はまた、異なるインタフェースのVPID及びPPIDと、VPID対PPIDマッピングを生成するためのインタフェース間の接続とを識別するために、pNIC120及びSDNコントローラ366から受信された情報をマッピング・ジェネレータ368に提供する。さらに、ローカル・コントローラ365は、構成変更がVPID対PPIDマッピングに影響を与える場合にマッピング・ジェネレータ368に通知し、マッピング・ジェネレータ368が新たな又は更新されたVPID対PPIDマッピングを生成することを可能にし、適用可能な場合に、削除されなければならないマッピングを識別する。FPAG260はpNIC120とは別個のものとして図2及び図3に示されているが、以下に説明するいくつかの実施形態において、FPAG260は、pNIC120の処理ユニット上に実装される。
【0045】
図4は、FPAG460がpNIC420の汎用プロセッサ450の集合上で実行されるシステム400を示す。図4はまた、pNIC420が、PCIeバス432を介して物理機能の集合434a~iにおいて、それぞれ計算ノード(例えば、VM411a~x)の集合をホストする複数のサーバ410a~nに接続する実施形態を示す。いくつかの実施形態において、PCIeバス432は、ホスト・コンピュータ又は周辺デバイスのセットに接続するための別個のPCIeバスの集合であり、PF434a~iは、別個のPCIeバスのためのPFとして実装されても実装されなくてもよい物理的に別個のインタフェースである。FPAG460は、サーバ410a~nのそれぞれのためのフロー・エントリを生成し、別個の内部PCIeバス431を使用して(いくつかの実施形態において、図示しない物理機能を通じて)、pNIC420の他の要素と通信する。
【0046】
図5は、FPAG560が、pNIC520に接続されたすべてのサーバ510a~nを代表して、複数のサーバ510a~nのうちの1つのサーバ510a上で実行されるシステム500を示す。図5はまた、いくつかの実施形態において、FPAG560を実行しないサーバ(例えば、サーバ510n)が仮想スイッチ515を実行することを示す。いくつかの実施形態において、仮想スイッチ515は、FPAG560によって行われる転送決定を実装し、完全なネットワーク・スタックを必要としない軽量仮想スイッチである。いくつかの実施形態において、仮想スイッチ515は、エミュレートされたVM513a~m(例えば、パススルー・モードで構成されていないvNICを有するVM)の集合に接続する。
【0047】
本方法は、VPIDとPPIDとの間のマッピングの集合をpNICに提供することを含む。図6は、フロー処理を実行するためにpNICのマッピング・テーブルに記憶されるべきVPID対PPIDマッピングを提供するためにいくつかの実施形態において実行されるプロセス600を概念的に示す。いくつかの実施形態において、プロセス600は、フロー処理及びアクション・ジェネレータ(例えば、マッピング・ジェネレータ368)及びフロー処理オフロード(FPO)ハードウェア140によって実行される。いくつかの実施形態において、フロー処理及びアクション・ジェネレータはpNIC上に実装されるが、他の実施形態において、フロー処理及びアクション・ジェネレータはpNICに接続されたホスト・コンピュータ上に実装される。プロセス600は、pNICに接続されている計算ノード(例えば、VM、ポッド、コンテナなど)に関連付けられたVPIDの集合を(605において)識別することによって始まる。いくつかの実施形態において、フロー処理及びアクション・ジェネレータは、計算ノードの集合と、計算ノードの集合に関連付けられたVPIDとを識別するために、仮想ネットワークを管理するネットワーク管理コンピュータの集合と通信する。
【0048】
プロセス600はまた、識別された計算ノード・インタフェースに接続されたpNICのインタフェース及びそれらのpNICインタフェースに関連付けられたPPIDを(610において)識別する。いくつかの実施形態において、PPIDは、PPIDについてpNICに問い合わせることによって、フロー処理及びアクション・ジェネレータによって識別される。いくつかの実施形態において、フロー処理及びアクション・ジェネレータは、pNICのすべてのインタフェース及びそれらのPPIDを認識し、各計算ノード・インタフェースが接続するpNICのインタフェースを決定する。
【0049】
計算ノード・インタフェースのための識別されたVPID、及びそれらが接続するpNICのインタフェースのPPIDに基づいて、フロー処理及びアクション・ジェネレータは、VPIDとPPIDとの間のマッピングの集合を(615において)生成する。生成されたマッピングの集合は、pNICのFPOハードウェアへ(620において)送信される。いくつかの実施形態において、生成されたマッピングの集合は、フロー処理及びアクション・ジェネレータを実行する処理ユニットとFPOハードウェアとの間のPCIe接続のPFを使用してFPOハードウェアへ送信される。上述のように、フロー処理及びアクション・ジェネレータを実行する処理ユニットはホスト・コンピュータの処理ユニットであるが、他の実施形態において、pNICは、処理ユニットだけでなくFPOハードウェアを含む統合NIC(例えば、プログラマブルNIC、スマートNICなど)である。
【0050】
FPOハードウェアは、フロー処理及びアクション・ジェネレータから送信されたVPID対PPIDマッピングを(625において)受信する。受信されたVPID対PPIDマッピングは、FPOハードウェアのマッピング・テーブルに(630において)記憶される。いくつかの実施形態において、マッピング・テーブルは、VPIDに基づいてPPIDを、又はPPIDに基づいてVPIDを識別するために使用されうるメモリ・キャッシュ(例えば、コンテンツ・アドレス可能メモリ(CAM)、3値CAM(TCAM)など)に記憶される。当業者は、プロセス600がVPID対PPIDの初期マッピングを記述し、特定の動作が様々な実施形態において、複数の動作を表すか、又は異なる順序で実行される(例えば、動作605の前に動作610があってもよい)こと、及びプロセス600の記述が同じ結果を達成するための均等の処理を除外することを意味しないことを理解するだろう。
【0051】
本方法はまた、計算ノードがマイグレーションし、pNICの異なるインタフェースへ接続し、異なるVPIDに割り当てられるなどの際に、マッピングへ更新を送信することを含む。当業者は、いくつかの実施形態において、フロー処理及びアクション・ジェネレータがVPID又はVPIDとPPIDとの間の関連付けのいずれかへの変更を検出するごとに、特定のVPID対PPIDマッピングのための変更されたプロセス600が実行されることを理解するだろう。例えば、動作605は、仮想ネットワークの特定の構成変更によって追加、移動、又は無効化されるVPIDの特定の集合を識別し、動作610は、pNICのPPIDの集合に対するVPIDの追加又は移動された集合の現在の関連付けを識別する。(615において)マッピング・エントリを生成することは、識別されたPPIDの集合にマッピングされたVPIDの追加又は移動された集合に対してのみ実行される。さらに、いくつかの実施形態において、(620において)更新されたVPID対PPIDマッピングのための生成されたマッピングを送信することは、検出された構成変更に基づいて無効である以前に送信されたVPID対PPIDマッピングを削除することの命令を送信すること(VPIDを無効にすること、又は異なるPPIDによって識別されるインタフェースに接続するようにVPIDを移動すること)を含む。
【0052】
本方法は、計算ノードの集合に関連付けられたデータ・メッセージ・フローの集合のためのフロー・エントリの集合をpNICに提供することをさらに含む。いくつかの実施形態において、フロー・エントリの集合は、VPIDを使用して、マッチング基準の集合及びアクションの一方又は両方を規定する。いくつかの実施形態において、アクションは宛先を指定する。いくつかの実施形態において、各宛先は、VPIDに関して指定され、pNICはマッピングの集合を使用して、VPIDをPPID(すなわち、出口インタフェース)に解決する。いくつかの実施形態において、各フロー・エントリは、特定のデータ・メッセージ・フローのためのものであり、データ・メッセージ・フローにおいて受信された第1のデータ・メッセージに基づいて生成される。いくつかの実施形態において、フロー・エントリは、仮想(例えば、ソフトウェア)スイッチによって実行されデータ・メッセージ処理の結果に基づいて生成され、pNICがデータ・メッセージ・フロー内の後続のデータ・メッセージを処理することを可能にするためにpNICに提供される。
【0053】
図7は、フロー処理及びアクション・ジェネレータからFPOハードウェアにフロー・エントリを提供するためのプロセス700を概念的に示す。プロセス700は、(1)データ・メッセージが属するデータ・メッセージ・フローのためのフロー・エントリと、(2)FPOハードウェアによって記憶されたVPID対PPIDマッピングとの両方と一致しないデータ・メッセージをFPOハードウェアで(705において)受信することによって始まる。これに代えて、データ・メッセージは、デフォルト・ルールに一致するデータ・メッセージのための宛先として、フロー処理及びアクション・ジェネレータに接続されたインタフェースを識別するデフォルト・ルールのみに一致してもよい。いくつかの実施形態において、受信されたデータ・メッセージは、データ・メッセージ・フローにおける第1のデータ・メッセージである。FPOハードウェアは、(710において)データ・メッセージを(例えば、低速パス処理のために)フロー処理及びアクション・ジェネレータへ転送する。
【0054】
フロー処理及びアクション・ジェネレータは、同じデータ・メッセージ・フロー内の後続のデータ・メッセージに対して行うアクションを決定するために、処理パイプラインを通じてデータ・メッセージを(715において)処理する。例えば、いくつかの実施形態において、処理パイプラインは、データ・メッセージ・フローのデータ・メッセージを破棄するか、又はデータ・メッセージ・フローのデータ・メッセージのための宛先を識別する(場合によっては転送前のカプセル化又はカプセル化解除を伴う)ことの決定をもたらす、他の動作(例えば、ファイアウォール、ミドルボックス・サービスなど)の集合とともに論理転送動作の集合を含む。いくつかの実施形態において、データ・メッセージ・フローのデータ・メッセージのための宛先を識別することは、データ・メッセージ・フローのデータ・メッセージの宛先である計算ノード・インタフェースのVPIDを識別することを含む。
【0055】
(1)属するデータ・メッセージ・フローを識別する受信されたデータ・メッセージの特性、及び(2)データ・メッセージを処理することに基づいて行うべきと決定されたアクションに基づいて、フロー処理及びアクション・ジェネレータは、(720において)FPOハードウェアがデータ・メッセージ・フローの後続のデータ・メッセージを処理するために使用するためのフロー・エントリを生成する。フロー処理及びアクション・ジェネレータは、(725において)生成されたフロー・エントリをFPOハードウェアへ送信する。上述のように、いくつかの実施形態において、生成されたフロー・エントリは、フロー処理及びアクション・ジェネレータを実行する処理ユニットとFPOハードウェアとの間のPCIe接続のPFを使用してFPOハードウェアへ送信される。
【0056】
FPOハードウェアは、フロー処理及びアクション・ジェネレータから送信されたフロー・エントリを(730において)受信する。受信されたフロー・エントリは、FPOハードウェアのフロー・エントリの集合(例えば、フロー・エントリ・テーブル)に(735において)記憶される。いくつかの実施形態において、フロー・エントリの集合は、受信されたデータ・メッセージに関連付けられたマッチング基準の集合を指定するフロー・エントリを識別するために使用されうるメモリ・キャッシュ(例えば、コンテンツ・アドレス可能メモリ(CAM)、3値CAM(TCAM)など)に記憶される。
【0057】
いくつかの実施形態において、pNICは、接続されたホスト・コンピュータ上で実行される計算ノードの集合のためのフロー処理を実行するために、フロー・エントリの集合及びマッピングをネットワーク処理ハードウェアに記憶する。いくつかの実施形態において、フロー・エントリ及びマッピング・テーブルは、高速ルックアップを実行するために別個のメモリ・キャッシュ(例えば、コンテンツ・アドレス可能メモリ(CAM)、3値CAM(TCAM)など)に記憶される。図8は、pNICにおいて受信されたデータ・メッセージを処理するためのプロセス800を概念的に示す。いくつかの実施形態において、プロセス800は、pNICのFPOハードウェアによって実行される。プロセス800は、FPOハードウェアによって処理されるべきpNICのインタフェースにおいてデータ・メッセージを(805において)受信することによって始まる。いくつかの実施形態において、データ・メッセージは、物理ネットワークに接続されたpNICの物理ポートで受信されるデータ・メッセージ、及びホスト・コンピュータに接続されたpNICのインタフェースにおいて受信されるデータ・メッセージのうちの1つである。
【0058】
プロセス800は、受信されたデータ・メッセージがFPOハードウェアによって記憶されたフロー・エントリと一致するかどうかを(810において)判定する。いくつかの実施形態において、受信されたデータ・メッセージに一致するフロー・エントリをFPOハードウェアが記憶するかどうかを決定することは、受信されたデータ・メッセージの特性(例えば、5タプル、OSIモデルの異なるレイヤにおけるヘッダ値、メタデータなど)に基づく、記憶されたフロー・エントリの集合におけるルックアップに基づく。受信されたデータ・メッセージがフロー・エントリと一致しないと(810において)判定されたならば、プロセス800は、低速パス処理のためにデータ・メッセージをフロー処理及びアクション・ジェネレータへ(815において)転送し、受信されたデータ・メッセージが属するデータ・メッセージ・フローのためのフロー・エントリを(820において)受信し、データ・メッセージ・フローの後続のデータ・メッセージを処理するためのフロー・エントリを(825において)記憶することに進む。動作815~825は、動作815~825に対応する図7の動作710、730及び735の説明とともに、上記でより詳細に説明される。
【0059】
受信されたデータ・メッセージがフロー・エントリと一致すると判定されたならば、プロセス800は、一致するフロー・エントリが、フロー・エントリに一致するデータ・メッセージが宛先VPIDに転送されることを指定するかどうかを(830において)判定することに進む。データ・メッセージが宛先VPIDに転送されることをフロー・エントリが指定するとプロセス800が決定するならば、プロセス800は、VPIDのためのマッピングがマッピング・テーブル内に存在するかどうかを(835において)決定する。いくつかの実施形態において、VPIDのためのマッピングがマッピング・テーブルに存在するかどうかを決定することは、VPIDに基づいてコンテンツ・アドレス可能メモリ(CAM)を検索することを含む。フロー・エントリが宛先VPIDを指定しない(例えば、データ・メッセージが破棄されるべきであることをフロー・エントリが指定する)とプロセス800が(830において)決定するか、又はVPIDのためのマッピングがマッピング・テーブル内に存在するとプロセス800が(835において)決定するならば、フロー・エントリにおいて指定されたアクションが(800において)実行され、処理が終了する。
【0060】
VPIDがマッピング・テーブル内にないとプロセス800が(835において)判定したならば、プロセス800は動作815~825に戻る。いくつかの実施形態において、VPIDがマッピング・テーブル142内にないと決定することは、(動作815~825に関連付けられた)低速パス処理に関連付けられたインタフェースにデータ・メッセージを向けるデフォルト結果を返すVPIDルックアップに基づく。他の実施形態において、マッピング・テーブル142にデフォルト・エントリを含める代わりに、いくつかの実施形態は「障害」を返すVPIDルックアップ(例えば、マッピング・テーブル内にVPIDのエントリがないことを示すヌル結果又は他の結果)に基づいて、VPIDがマッピング・テーブル内にないと判定する。マッピング・テーブル142にデフォルト・エントリがないいくつかの実施形態において、FPOハードウェア140は、障害が返されるすべてのデータ・メッセージを仮想スイッチに向かわせるように構成される。以下の図9及び図13を参照して以下で説明するように、フロー・エントリは、VPIDに関連付けられた計算ノード・インタフェースが再構成され、新たなVPIDが割り当てられる場合にもはや有効ではないVPIDを識別してもよい。
【0061】
図9は、マッピング・テーブル942を記憶するpNICのフロー処理オフロード・ハードウェア940と、フロー処理テーブル943とを示す。いくつかの実施形態において、フロー処理テーブル943は、CAMに記憶され、マッチング基準950の集合及びアクション960を指定するフロー・エントリ951~956の集合を含む。図示される実施形態において、マッチング基準950の集合は、ソースIPアドレス(SIP)、ソースMAC(SMAC)アドレス、ソース・ポート(SPort)、宛先IPアドレス(DIP)、宛先MAC(DMAC)アドレス、宛先ポート(DPort)、及びメタデータを含む。いくつかの実施形態において、メタデータはユーザによって構成可能であるか、又はメタデータのタイプと、当該タイプのメタデータに対する一致値とが、マッチング基準の集合において識別される。
【0062】
例えば、フロー・エントリ951及び952はマッチング基準950の集合内のVLAN識別子を指定し、フロー・エントリ954はマッチング基準950の集合内のVXLAN識別子を指定する。いくつかの実施形態において、データ・メッセージが受信されるpNICのインタフェースを識別するPPIDがVPIDに変換された後に、データ・メッセージに関連付けられるメタデータ基準(特性)としてVPIDの集合(すなわち、VPID0001~0003)を指定するフロー・エントリ955のように、内部的に追加される追加のタイプのメタデータも指定される。いくつかの実施形態において、VPID0001~0003は、フロー・エントリ955が物理ネットワークから受信されたデータ・メッセージにのみ適用されるように、物理ネットワークに接続するpNICインタフェースに関連付けられる。
【0063】
いくつかの実施形態において、IPアドレスは、IPアドレスの範囲(例えば、ある他のアプリケーション又はユーザ・グループへのアクセスを許可されるべきである又は許可されるべきでない特定のアプリケーション又はユーザ・グループに割り当てられたIPアドレスの範囲)を表すIPプレフィックスを識別するためのクラスレス・ドメイン間ルーティング表記として指定される。例えば、フロー・エントリ953は、最初の28ビットに一致する任意のIPアドレスが一致するように、IPアドレス「IP4」及び28ビットのマスク長を示すソースIP範囲IP4/28を指定する。同様に、フロー・エントリ953は、最初の30ビットに一致する任意のIPアドレスが一致するように、IPアドレス「IP5」及び30ビットのマスク長を示す宛先IP範囲IP5/30を指定する。さらに、いくつかの実施形態において、フロー・エントリは、受信されたデータ・メッセージの関連付けられた特性の任意の値に対する一致と見なされる(「*」によって識別される)ワイルドカード値を使用する少なくとも1つの基準を含む。例えば、ルール952~956はすべて、ワイルドカード値を使用して少なくとも1つの基準(例えば、データ・メッセージ特性)を指定する。
【0064】
いくつかの実施形態において、フロー・エントリは、複数のフロー・エントリに一致するデータ・メッセージについて、最も高い優先度を有するフロー・エントリにおいて指定されたアクションがデータ・メッセージについて行われるように、優先度が割り当てられる。いくつかの実施形態において、優先度は、低速パス処理中にフロー・エントリを生成する場合のフロー・エントリのマッチング基準の特異性によって決定され、生成されたフロー・エントリに含まれる。いくつかの実施形態において、高い優先度のルールに一致しないデータ・メッセージを、低速パス処理に関連付けられたVPID(例えば、VPID5000)に(例えば、フロー処理及びアクション・ジェネレータの仮想スイッチに)向かわせるデフォルト・ルール956が指定される。
【0065】
いくつかの実施形態において、各フロー・エントリは、当該フロー・エントリに一致するデータ・メッセージに関連付けられたアクションを含む。いくつかの実施形態において、アクションは、転送動作(FWD)と、転送されるべきでないパケットのDROPと、パケットのヘッダの変更及び変更されたヘッダの集合と、(関連付けられた宛先の集合とともに)パケットの複製と、宛先への転送前にカプセル化解除を必要とするカプセル化されたパケットのカプセル化解除(DECAP)と、宛先への転送前にカプセル化を必要とするパケットのカプセル化(ENCAP)とを含む。いくつかの実施形態において、いくつかのアクションは、一連のアクションを指定する。例えば、フロー・エントリ954は、ソースIPアドレス「IP6」と、任意のソースMACアドレスと、ソース・ポート「Port6」と、宛先IPアドレス「IP7」と、宛先MACアドレス「MAC7」と、ソース・ポート「4789」と、データ・メッセージがVXLAN「VXLAN2」に関連付けられていることを示すメタデータとを有するデータ・メッセージがカプセル化解除され、VPID「3189」へ転送されることを指定する。いくつかの実施形態において、識別されたVPIDは、ホスト・コンピュータ上で実行される計算ノードの特定のインタフェースに関連付けられたVPIDである。DECAPアクションを指定するいくつかのフロー・エントリによって識別されるVPIDは、低速パス処理を介して、カプセル化解除されたデータ・メッセージを処理するためのフロー処理及びアクション・ジェネレータの仮想スイッチに接続する物理機能のためのVPIDである。DECAPアクションを指定する他のフロー・エントリについて、インタフェース識別子(例えば、VPID又はPPID)は、FPOハードウェアが内部データ・メッセージ(カプセル化解除されたデータ・メッセージ)を処理することを可能にするFPOハードウェアのループバック・インタフェースのための識別子である。いくつかの実施形態において、DECAPアクションを指定するフロー・エントリはまた、FPOハードウェアによるカプセル化解除されたデータ・メッセージのさらなる処理を明示的に指定する。
【0066】
いくつかの実施形態において、マッピング・テーブル942は、CAMに記憶され、「VPID」フィールド970内のVPIDと、「PPID」フィールド980内の対応するPPIDと、「VPID付加」フィールド990内の、データ・メッセージに関連付けられたVPIDを、転送されるデータ・メッセージに付加すべきかどうかを示すフラグ・ビットとを指定する、VPID対PPIDマッピング971~975の集合を含む。マッピング・テーブルは、図1図6図7及び図8に関連して上述したように、フロー・エントリにおいて指定されたVPIDを、pNICのインタフェースに関連付けられたPPIDに解決するために、及び、pNICのインタフェースにおいて受信されたいくつかのデータ・メッセージについて、PPIDをVPIDに解決するために使用される。図9は、フロー・エントリの集合において指定されたすべてのVPIDがマッピング・テーブル内にエントリを有するわけではないことを示す。例えば、(フロー・エントリ955において指定される)VPID5472は、VPIDフィールド970にエントリを有していない。
【0067】
マッピング・テーブル942内に発見されないVPIDについて、いくつかの実施形態は、VPIDフィールド970内のワイルドカード976を指定するデフォルト・エントリ975を規定する。図9に示される実施形態において、無効なVPIDに関連付けられたデータ・メッセージを、特定のPPIDに関連付けられたpNICのインタフェース、この場合に、フロー処理及びアクション・ジェネレータの仮想スイッチに接続されたインタフェースに関連付けられたPPID986(「1111」)に向かわせるために、デフォルト・エントリ975がマッピング・テーブル942に含まれる。いくつかの実施形態において、非デフォルト・フロー・エントリ(例えば、951~955)に一致したデフォルト・マッピング・テーブル・エントリ975に一致するデータ・メッセージは、無効なVPID及びフロー・エントリを示す。他の実施形態において、マッピング・テーブル942にデフォルト・エントリを含める代わりに、いくつかの実施形態は、「障害」(例えば、マッピング・テーブル内にVPIDのためのエントリがないことを示すヌル結果又は他の結果)を返すVPIDルックアップのためのアクションを規定する。例えば、アクションは、フロー・エントリに一致するが、VPIDルックアップから障害を返すすべてのデータ・メッセージが仮想スイッチへ転送されることを指定し、いくつかの実施形態において、無効なVPIDを指定する一致フロー・エントリの識別子を(例えば、メタデータ内に)含む。
【0068】
そのような場合、いくつかの実施形態は、データ・メッセージをフロー処理及びアクション・ジェネレータの仮想スイッチへ転送する場合に、フロー・エントリ識別子を含む。フロー・エントリ識別子は、識別されたフロー・エントリがFPOハードウェアによって記憶されたフロー・エントリの集合から除去されるべきであることをフロー処理及びアクション・ジェネレータが識別することを可能にするように、メタデータ・フィールドに記憶される又はデータ・メッセージに付加される。VPIDは、関連付けられた計算ノード・インタフェースが構成を変更し、新たなVPIDが割り当てられたため、又は関連付けられた計算ノードがシャットダウンされたため、無効であってもよい。計算ノード・インタフェースに新たなVPIDが割り当てられているならば、新たに割り当てられたVPIDをpNICの関連付けられたインタフェースのPPIDにマッピングするマッピング・エントリがマッピング・テーブルに提供され、無効なVPIDに関連付けられたフロー・エントリは、上述のように、及び図14及び図15に関連してさらに説明するように、最終的に削除される。
【0069】
いくつかの実施形態において、複数のVPIDが単一のPPIDに関連付けられる。例えば、マッピング・テーブル・エントリ972、974及び975はすべて、PPID1111に関連付けられる。いくつかの実施形態において、VPID付加フィールド990は、宛先VPIDがデータ・メッセージとともに転送されるべきデータ・メッセージを識別するために使用される。上述したように、PPID1111は、フロー処理・アクション・ジェネレータの仮想スイッチに接続されたpNICのインタフェースに関連付けられている。いくつかの実施形態において、仮想スイッチは、複数のエミュレートされた計算ノードのためのpNICへの単一の接続を提供し、VPID(例えば、VPID2225)を付加することによって、仮想スイッチが、ローカル高速パス処理又は他の形態の最小処理を使用して、VPIDに関連付けられたデータ・メッセージをその宛先へ転送することができる。これに加えて、いくつかの実施形態において、リターン・パス上で、データ・メッセージは、VPIDに関連付けられ、VPID付加フラグは、データ・メッセージをFPOハードウェア940に提供する前に、VPIDが削除されるべきではないことを示す。他の実施形態において、(例えば、データ・メッセージのメタデータ・フィールドに記憶された)データ・メッセージに関連付けられたVPIDは、デフォルトで維持される。リターン・パスにVPIDを付加(又は維持)することにより、FPOハードウェア940が、同じインタフェースを使用して、pNICに接続された異なる計算ノードを区別することが可能となる。
【0070】
図10図13は、異なるタイプのVM構成変更と、VM構成変更に関連付けられたマッピング・テーブルへの更新とを示す。同様の符号(例えば、1010、1110及び1210)を有する要素は、同様の機能要素を表す。図10は、pNIC1020の1つの仮想機能1033aからpNIC1020の別の仮想機能1033nへの時刻「T1」におけるVM1011a「マイグレーション」を示す。いくつかの実施形態において、この「マイグレーション」は、仮想機能1033aの障害、又は仮想ネットワークのコントローラによって決定される他の理由のために生じる。仮想機能1033aはPPID9123によって識別され、仮想機能1033nはPPID9234によって識別される。時刻T1において、VM1011aのvNIC1012aは、仮想機能1033aから切断され、仮想機能1033nに接続する。また、時刻T1(又はほぼ時刻T1)において、FPAG1060は、PPID9123の代わりにPPID9234に関連付けるために、更新されたVPID対PPIDマッピングをVPID1000へ送信する。他の実施形態において、VPID1000とPPID9123との間の以前の関連付けが削除され、VPID1000とPPID9234との間の新たなマッピングがFPAG1060によって追加される。図示のように、フロー・エントリ・テーブル1043は、時刻T0(T1の前)と時刻T1とで同じであり、マッピング・テーブル1042は、時刻T0と時刻T1との間に更新される。
【0071】
図11は、pNIC1120の仮想機能1133aに接続された1つのホスト・コンピュータ1110aから、pNIC1120の仮想機能1133nに接続された別のホスト・コンピュータ111Onへの時刻「T1」におけるVM1111aのマイグレーションを示す。仮想機能1133aはPPID9123によって識別され、仮想機能1133nはPPID9234によって識別される。時刻T1において、VM1111aはシャットダウンされ、仮想機能1133aから切断され、ホスト・コンピュータ111Onにマイグレーションし、仮想機能1133nに接続する。また、時刻T1(又はほぼ時刻T1)において、FPAG1160は、(1)以前のVPID対PPIDマッピングを削除し、(2)新たな接続のために新たなVPID対PPIDマッピングを追加するための命令の集合を送信する。図示されるように、フロー・エントリ・テーブル1143は、時刻T0(T1の前)と時刻T1とで同じであり、マッピング・テーブル1142は、時刻T0とT1との間に更新される。
【0072】
図12は、時刻「T1」においてパススルー・モードからエミュレート・モードに遷移するVM1211aを含むシステム1200を示す。いくつかの実施形態において、パススルー・モードは、pNIC1220とVM1211aとの間の直接通信を可能にする仮想機能1233aにvNIC1212aが接続されるモードであり、エミュレート・モードは、pNIC1220とVM1211aとの間の通信が仮想スイッチ1215を介するモードである。いくつかの実施形態において、仮想スイッチ1215は、低速パス処理を実行しないが、代わりに、FPOハードウェア又はFPAG1260のいずれかによって提供されるフロー処理に依存する、軽量仮想スイッチである。仮想スイッチ1215は、図示される実施形態において、物理機能1234に接続する。いくつかの実施形態において、仮想スイッチは、複数の計算ノードに接続し、(1)仮想機能よりも大きい帯域幅を有し、(2)仮想機能よりも大きい構成可能性を有する物理機能を通じてpNICに接続する。したがって、VPID対PPIDマッピングは、物理機能1234のPPID1111を複数のVPIDに関連付ける。時刻T1において、VM1211aのvNIC1212aは、仮想機能1233aから切断され、仮想スイッチ1215に接続する。また、時刻T1(又はほぼ時刻T1)において、FPAG1260は、PPID9123の代わりにPPID1111に関連付けるために、更新されたVPID対PPIDマッピングをVPID1000へ送信する。他の実施形態において、VPID1000とPPID9123との間の以前の関連付けが削除され、VPID1000とPPID1111との間の新たなマッピングがFPAG1260によって追加される。これに加えて、PPID1111によって識別されるPF1234へデータ・メッセージを転送する場合にvNIC1212aに関連付けられたVPIDが維持されるべきであることを示すために、関連付けられた「VPID付加フィールド」内の値を時刻T0における「0」から時刻T1における「1」に変更するように、VPID対PPIDマッピングが更新又は置換される。図示されるように、フロー・エントリ・テーブル1243は時刻T0(T1の前)と時刻T1とで同じであり、マッピング・テーブル1242は時刻T0と時刻T1との間に更新される。
【0073】
図13は、時刻「T1」におけるVM1311aのvNIC1312aの構成への変更がvNIC1312aのVPIDを変更させるシステム1300の選択された要素を示す。vNIC1312aは、構成変更の前後両方で、PPID9123によって識別される仮想機能1333aに接続される。時刻T1において、vNIC1312aは、実質的に異なるvNICであり、新たなVPID3000が割り当てられるように再構成される。また、時刻T1(又はほぼ時刻T1)において、FPAG1360は、(1)以前のVPID対PPIDマッピングを削除し、(2)新たなVPIDについて新たなVPID対PPIDマッピングを追加するための命令の集合を送信する。図示されるように、マッピング・テーブル1342は、新たに割り当てられたVPIDを考慮するために、時刻T0と時刻T1との間に更新される。以前のVPID(すなわち、VPID1000)を宛先として指定するフロー・エントリに対するマッピング・テーブル・ルックアップは今や、障害を生成し(又は、デフォルト・マッピングにヒットし)、上記の図9に関連して説明されたように、FPAG1360に向けられる。
【0074】
図10図12はすべて、特定の計算ノード・インタフェース(すなわち、vNIC1012a、1112a及び1212a)を識別するVPIDが、遷移又はマイグレーション全体にわたって同じままであるシナリオを示す。このような場合、FPOハードウェアに提供されるフロー・エントリは依然として有効であり、VPID対PPIDマッピング・テーブルの更新によって、既存のデータ・メッセージ・フローは、個々のフロー・エントリを更新することなく、又は変更が有効になる前に既存のフロー・エントリを無効にしなければならないことなく、現在のPPID(及び宛先計算ノード・インタフェース)に向けられる。しかし、図13に示されるシナリオでは、既存のフローのためのフロー・エントリは無効である(存在しなくなった宛先VPIDを指定する)。いくつかの実施形態において及びいくつかのデータ・メッセージ・フローについて、構成変更は特定の既存のデータ・メッセージ・フローを許可又はサポートせず、各データ・メッセージ・フローが再検証されなければならないため、システムはすべてのフロー・エントリを無効として扱う。しかし、図10図12のシナリオと同様に、フロー・エントリを更新又は削除しなければならないことなく、計算ノード・インタフェース及びVPIDへの変更が有効になる。
【0075】
図14は、リソースが利用可能である場合に実行されうるバックグラウンド・プロセスとして、無効なフロー・エントリを削除するためのプロセス1400を概念的に示す。いくつかの実施形態において、プロセス1400は、FPAGによって実行される。いくつかの実施形態において、プロセス1400は、各VPIDについてFPAGによって生成されたフロー・エントリに関するFPAGにおいて記憶された情報に基づいて、これに加えて又はこれに代えて、FPOハードウェアから受信された情報に基づいて実行される。プロセス1400は、無効化された(すなわち、もはや計算ノード・インタフェースに関連付けられていない)VPIDを識別することによって始まる。いくつかの実施形態において、無効化されたVPIDを識別することは、VPIDもはや計算ノード・インタフェースに関連付けられていない(例えば、以前はVPIDに関連付けられていた計算ノード・インタフェースが現在は異なるVPIDに関連付けられている)というローカル・コントローラからの通知に基づく。いくつかの実施形態において、無効化されたVPIDを識別することは、FPOハードウェアから、フロー・エントリに一致したが、VPID対PPIDマッピングとの一致に失敗したデータ・メッセージを受信することを含む。いくつかの実施形態において、FPOハードウェアから受信されたデータ・メッセージは、無効化されたVPIDをメタデータ内に含むか、又は無効化されたVPIDを識別するためにデータ・メッセージとともに制御メッセージを送信する。
【0076】
プロセス1400は、その後、無効化されたVPIDに関連するフロー・エントリの集合を(1410において)識別する。いくつかの実施形態において、FPAGは、ソース又は宛先のいずれかとしてVPIDを指定して生成された各フロー・エントリを記憶する。識別され、無効化されたVPIDに基づいて、FPAGは、無効化されたVPIDを指定する各エントリをソース又は宛先のいずれかとして識別できる。いくつかの実施形態において、FPAGは、無効化されたVPIDに関連付けられたフロー・エントリのすべてを識別するのではなく、その代わりに、FPOハードウェアから受信されたデータ・メッセージに基づいて、無効なVPIDに関連するフロー・エントリを識別する。いくつかの実施形態において、FPOハードウェアから受信されたデータ・メッセージは、(例えば、メタデータ内に、又は制御メッセージのコンテンツとして)、マッピング・テーブル内のルックアップから障害を生成した(又はデフォルト・ルールにヒットする)FPOハードウェアにおいて受信されたデータ・メッセージと一致するフロー・エントリのためのフロー・エントリ識別子を含む。いくつかの実施形態において、VPIDルックアップから障害を生成した受信データ・メッセージのための新たなフロー・エントリを生成するために、(図7の)動作715~725も実行されることを当業者は理解するだろう。
【0077】
プロセス1400は、その後、FPOハードウェアから、識別されたフロー・エントリを削除するための命令の集合を(1415において)生成する。いくつかの実施形態において、命令の集合は、複数のフロー・エントリを削除するための単一の命令として生成されるが、他の実施形態において、命令の集合は、識別された各フロー・エントリを削除するための別個の命令を含む。いくつかの実施形態において、命令の集合は、リソースが利用可能である場合に、バックグラウンド・プロセスとして生成される。
【0078】
命令の集合は、FPOハードウェアにそのストレージからフロー・エントリを削除させるために、FPOハードウェアへ(1420において)送信される。その後、FPOハードウェアは、無効化されたフロー・エントリを削除し、プロセス1400は終了する。いくつかの実施形態において、FPOハードウェアはまた、他のより高い優先度のプロセスに必要とされるリソースを消費しないバックグラウンド・プロセスとして命令を処理するだけである。いくつかの実施形態において、FPOハードウェアは、無効化されたVPIDをFPAGが再利用することを可能にするために、フロー・エントリの識別された集合が削除されたことの確認を送信うる。無効なフロー・エントリが削除される前に、更新されたVPID対PPIDマッピングに基づいて構成変更が有効になりうるので、プロセス1400及びFPOハードウェアにおける命令の処理は、バックグラウンド・プロセスとして実行されることが可能である。FPOハードウェアのリソースを節約し、VPIDのために以前に生成されたフロー・エントリが削除された後に、無効化されたVPIDが再使用されることを可能にするために、フロー・エントリが削除される。
【0079】
図15は、無効化されたVPIDを指定するフロー・エントリを削除するためにFPOハードウェアによって実行されるプロセス1500を概念的に示す。プロセス1500は、無効化されたVPIDを宛先として指定するフロー・エントリに一致するデータ・メッセージを(1505において)受信することによって始まる。データ・メッセージは、ワイルドカード値又は値の範囲をマッチング基準として指定するフロー・エントリの基準に一致する、既存のフロー又は新たなフローのデータ・メッセージであってもよい。
【0080】
その後、プロセス1500は、一致するフロー・エントリ内の宛先として指定されたVPIDに対してVPID対PPIDマッピングが存在しないと(1510において)判定する。いくつかの実施形態において、判定は、障害を生成するマッピング・テーブル内のルックアップに基づくか、又はデフォルト・マッピングが返される唯一の一致であることに基づく。いくつかの実施形態において、非デフォルトの宛先が識別されるまで、データ・メッセージに一致したフロー・エントリの識別子が維持される(例えば、データ・メッセージとともに転送される)。
【0081】
その後、プロセス1500は、FPOハードウェアからフロー・エントリを(1515において)削除する。いくつかの実施形態において、FPOハードウェアは、マッピング・テーブル内に非デフォルトの一致が見つからないならば、フロー・エントリが自動的に無効化(例えば、削除)されるべきかどうかを示すビットとともに、フロー・エントリを記憶する。いくつかの実施形態において、FPOハードウェアは、フロー・エントリとともに記憶されたビットに基づいて、又はフロー・エントリとともにフラグ・ビットを記憶することに基づかないデフォルト挙動として、データ・メッセージに一致したフロー・エントリを自動的に無効化し、プロセス1500は終了する。いくつかの実施形態において、(1515において)フロー・エントリを無効化することは、宛先PPIDに解決されなかった(すなわち、マッピング・テーブル内のルックアップから非デフォルトの一致を生成しなかった)フロー・エントリであるとフロー・エントリを識別するデータ・メッセージをFPAGに送信することを含む。その後、FPGAは、フロー・エントリを無効化(又は削除)するためにFPOハードウェアによって受信される命令を生成するためにプロセス1400を実行する。受信された命令に基づいて、FPOハードウェアはフロー・エントリを無効化(又は削除)し、プロセス1500は終了する。
【0082】
いくつかの実施形態において、FPOはまた、特定の時間量にわたってフロー・エントリが使用されていないことに基づいて、フロー・エントリを無効化する(例えば、エイジング・アウトする)ための内部プロセスを有する。いくつかのそのような実施形態において、FPOハードウェアは、フロー・エントリがデータ・メッセージに最後に一致した時刻に関するデータを記憶する。フロー・エントリがデータ・メッセージに最後に一致した時刻から経過した時間がエイジング・アウト閾値時間よりも大きいならば、フロー・エントリは削除される(又は無効化される)。したがって、少なくともエイジング・アウト閾値時間と同じ大きさの再使用閾値時間の後、無効化されたVPIDが再使用されうる。いくつかの実施形態において、エイジング・アウト閾値がFPOハードウェア上で満たされたことを保証するために、再使用閾値時間は、平均データ・メッセージ・フローがタイムアウトする時間にエイジング・アウト時間を加えた時間以上に設定される。いくつかの実施形態において、VPIDの再利用をさらに容易にするために、VPIDは、PPIDよりも多くのビットを有するように規定される。いくつかの実施形態において、PPIDのビット数は、pNICが有するPFの数及び各PFがサポートするVFの数に基づく。16ビットのPPIDを仮定すると、いくつかの実施形態において、VPID対PPIDマッピングの所望のスパース性に応じて、VPIDは18又は20ビットである。
【0083】
いくつかの実施形態において、マッピング・テーブルは、データ・メッセージが受信されるPPIDに関連付けられたVPIDを識別するための逆マッピングの集合を含む。一部の実施形態において、逆マッピングは、プロセス600に類似するプロセスを使用して生成されるが、PPIDへのVPID並びにPPIDへのVPIDのマッピングを(615において)生成する。いくつかの実施形態において、逆マッピングは、別個の逆マッピング・テーブルに記憶される。上述のように、特定のPPIDは、複数のVPIDに関連付けられてもよい。ホスト・コンピュータ上で実行される計算ノードから受信されるデータ・メッセージについて、FPOハードウェアにデータ・メッセージを提供する際に、VPIDが付加される(又は維持される)。
【0084】
図16は、物理ネットワーク・ポート1621a~nのリンク・アグリゲーションが有効にされるシステム1600を示す。いくつかの実施形態において、各物理ネットワーク・ポート1621a~nは異なるVPIDに関連付けられる。図示されるように、すべての物理ポート1621a~nは、リンク・アグリゲーション・グループ1690に含まれる。物理ポート障害の場合に、VPID対PPIDマッピングは、障害が発生した物理ポートに関連付けられたVPIDが機能的物理ポートに関連付けられるように更新されうる。図16は、物理ポート1621nの障害前後のマッピング・テーブル1642を示す。時刻T0における当初のマッピング・テーブル1642は、VPID00000nとPPID000nとの間のマッピングを含み、物理ポート1621nの障害後、マッピング・テーブル1642は、時刻T1において、PPID0001へのVPID00000nの新たなマッピングを含むように更新される。これにより、VPID00000nを宛先として指定するフロー・エントリを無効化し書き換えることなく、pNIC1620から向けられたデータ・メッセージを物理ポート1621aから送出することができる。図16のT1に示されるように、少なくとも1つの物理ポートが複数のVPIDに関連付けられている。PPIDを特定のVPIDに解決するために、いくつかの実施形態は、(PPIDからVPIDへの)逆マッピングが一貫した結果を生成するように、VPID対PPIDマッピングの集合に優先度を関連付ける。
【0085】
障害が発生したリンクに関連付けられたフロー・エントリを書き換える必要なしにリンク障害の場合に迅速にフェイル・オーバすることに加えて、マッピング・テーブルの使用は、関連付けられたフロー・エントリを書き換えることなく、更新されるべき複数の物理ポートにわたってデータ・メッセージを配布するために負荷分散決定が行われることも可能にする。例えば、リンク・アグリゲーション・グループ内の特定の物理ポートの帯域幅が変わるならば、特定の物理ポートに以前に送信されたデータ・メッセージの集合は、いくつかの実施形態において、特定の物理ポートに関連付けられたVPIDが現在、異なる物理ポートのPPIDにマッピングするようにVPID対PPIDマッピングを更新することによって、異なる物理ポートにリダイレクトされる。いくつかの実施形態において、各物理ポートには、物理ポートのPPIDにマッピングされる複数のVPIDが割り当てられる(例えば、図16の物理ポート1621aは少なくとも2つのポートにマッピングされる)。いくつかの実施形態において、一次VPIDは、逆ルックアップのために各特定の物理ポートに割り当てられ、二次VPIDの集合は、pNICから出るために(例えば、リンク・アグリゲーション・プロトコルの負荷分散によって)分散されたデータ・メッセージ・トラフィックの一部にそれぞれ使用されるように割り当てられる。いくつかの実施形態において、割り当てられたVPIDは、フロー・エントリが特定の物理ポートを通じて出るために生成される際に、ラウンドロビン方式(又は何らかの他の選択メカニズム)で使用される。いくつかの実施形態において、各ポートに対して複数のVPIDを使用することにより、更新された負荷分散決定をより細かい粒度で行うことができる。例えば、10個のVPIDが単一の物理ポートに関連付けられているならば、各VPIDは、別々に再マッピングされてもよく、オール・オア・ナッシング・アプローチではなく、物理ポート上のデータ・メッセージ負荷の10%の再バランスを可能にする。当業者は、10という数が例としてのみ提供され、同じ宛先物理ポートのために複数のVPIDを指定するフロー・エントリを生成することと、複数のVPID対PPIDマッピングを更新することとの複雑さで再バランスの粒度を調和させるために、より多い又はより少ないVPIDが割り当てられてもよいことを理解するだろう。
【0086】
上記の特徴及びアプリケーションの多くは、コンピュータ可読記憶媒体(コンピュータ可読媒体とも呼ばれる)に記録された命令の集合として指定されるソフトウェア・プロセスとして実装される。これらの命令が1つ以上の処理ユニット(例えば、1つ以上のプロセッサ、プロセッサのコア、又は他の処理ユニット)によって実行される場合に、それらは、処理ユニットに、命令に示されたアクションを実行させる。コンピュータ可読媒体の例は、CD-ROM、フラッシュ・ドライブ、RAMチップ、ハード・ドライブ、EPROMなどを含むが、これらに限定されない。コンピュータ可読媒体は、無線又は有線接続を介して通過する搬送波及び電気信号を含まない。
【0087】
本明細書において、「ソフトウェア」という用語は、リード・オンリ・メモリに常駐するファームウェア、又はプロセッサによって処理するためにメモリに読み込むことができる、磁気ストレージに記憶されたアプリケーションを含むことが意味される。また、いくつかの実施形態において、複数のソフトウェア発明は、別個のソフトウェア発明を残しながら、より大きなプログラムのサブパーツとして実装されうる。いくつかの実施形態において、複数のソフトウェア発明は、別個のプログラムとして実装されうる。最後に、本書に記載されるソフトウェア発明を一緒に実装する別個のプログラムの任意の組合せは、本発明の範囲内である。いくつかの実施形態において、ソフトウェア・プログラムは、1つ以上の電子システム上で動作するようにインストールされた場合に、ソフトウェア・プログラムの動作を実行(execute)及び実行(perform)する1つ以上の特定のマシン実装を規定する。
【0088】
図17は、本発明のいくつかの実施形態が実施されるコンピュータ・システム1700を概念的に示す。コンピュータ・システム1700は、上述のホスト、コントローラ及びマネージャのいずれかを実装するために使用されうる。このように、上述のプロセスのいずれかを実行するために使用されうる。このコンピュータ・システムは、様々なタイプの非一時的機械可読媒体と、様々な他のタイプの機械可読媒体のためのインタフェースとを含む。コンピュータ・システム1700は、バス1705と、処理ユニット1710と、システム・メモリ1725と、リード・オンリ・メモリ1730と、永久記憶デバイス1735と、入力デバイス1740と、出力デバイス1745とを含む。
【0089】
バス1705は、コンピュータ・システム1700の多数の内部デバイスを通信可能に接続するすべてのシステム・バス、周辺バス及びチップセット・バスを集合的に表す。例えば、バス1705は、処理ユニット1710を、リード・オンリ・メモリ1730、システム・メモリ1725、及び永久記憶デバイス1735と通信可能に接続する。
【0090】
これらの様々なメモリ・ユニットから、処理ユニット1710は、本発明のプロセスを実行するために、実行すべき命令及び処理すべきデータを読み出す。処理ユニットは、様々な実施形態において、単一のプロセッサであってもよいし、マルチコア・プロセッサであってもよい。リード・オンリ・メモリ(ROM)1730は、処理ユニット1710及びコンピュータ・システムの他のモジュールによって必要とされる静的データ及び命令を記憶する。一方、永久記憶装置1735は、読み書き可能なメモリ・デバイスである。このデバイスは、コンピュータ・システム1700がオフであっても命令及びデータを記憶する不揮発性メモリ・ユニットである。本発明のいくつかの実施形態は、永久記憶デバイス1735として(磁気又は光ディスク及びその対応するディスク・ドライブのような)大容量記憶デバイスを使用する。
【0091】
他の実施形態は、取り外し可能な記憶デバイス(フロッピー・ディスク、フラッシュ・ドライブなど)を永久記憶デバイスとして使用する。永久記憶デバイス1735と同様に、システム・メモリ1725は、読み書きメモリ・デバイスである。しかし、記憶デバイス1735とは異なり、システム・メモリは、ランダム・アクセス・メモリのような揮発性の読み書きメモリである。システム・メモリは、プロセッサが実行時に必要とする命令及びデータの一部を記憶する。いくつかの実施形態において、本発明のプロセスは、システム・メモリ1725、永久記憶デバイス1735、及び/又はリード・オンリ・メモリ1730に記憶される。これらの様々なメモリ・ユニットから、処理ユニット1710はいくつかの実施形態のプロセスを実行するために、実行すべき命令及び処理すべきデータを読み出す。
【0092】
バス1705はまた、入力デバイス1740及び出力デバイス1745に接続する。入力デバイス1740は、ユーザが情報を通信し、要求をコンピュータ・システムに選択することを可能にする。入力デバイス1740は、英数字キーボード及びポインティング・デバイス(「カーソル制御デバイス」とも呼ばれる)を含む。出力デバイス1745は、コンピュータ・システム1700によって生成された画像を表示する。出力デバイス1745は、プリンタ及び、陰極線管(CRT)又は液晶ディスプレイ(LCD)のような表示デバイスを含む。いくつかの実施形態は、入力デバイス及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含む。
【0093】
最後に、図17に示されるように、バス1705はまた、ネットワーク・アダプタ(図示せず)を介してコンピュータ・システム1700をネットワーク1765に結合する。このようにして、コンピュータ1700は、(ローカル・エリア・ネットワーク(「LAN」)、ワイド・エリア・ネットワーク(「WAN」)、又はイントラネットのような)コンピュータのネットワーク、又は(インターネットのような)ネットワークのネットワークの一部でありうる。コンピュータ・システム1700の任意の又はすべての構成要素が本発明と併せて使用されてもよい。
【0094】
いくつかの実施形態は、機械可読又はコンピュータ可読媒体(代替的に、コンピュータ可読記憶媒体、機械可読媒体、又は機械可読記憶媒体と呼ばれる)にコンピュータ・プログラム命令を記憶するマイクロプロセッサのような電子コンポーネントを含む。そのようなコンピュータ可読媒体のいくつかの例は、RAM、ROM、リード・オンリ・コンパクト・ディスク(CD-ROM)、記録可能コンパクト・ディスク(CD-R)、書き換え可能コンパクト・ディスク(CD-RW)、リード・オンリ・デジタル多用途ディスク(例えば、DVD-ROM、二重層DVD-ROM)、様々な記録可能/書き換え可能DVD(例えば、DVD-RAM、DVD-RW、DVD+RWなど)、フラッシュメモリ(例えば、SDカード、ミニSDカード、マイクロSDカードなど)、磁気及び/又はソリッド・ステート・ハード・ドライブ、リード・オンリ及び記録可能Blu-Ray(登録商標)ディスク、超密度光ディスク、任意の他の光学又は磁気媒体、並びにフロッピー・ディスクを含む。コンピュータ可読媒体は、少なくとも1つの処理ユニットによって実行可能であり、様々な動作を実行するための命令の集合を含むコンピュータ・プログラムを記憶してもよい。コンピュータ・プログラム又はコンピュータ・コードの例は、コンパイラによって生成されるような機械コード、及びインタプリタを使用してコンピュータ、電子コンポーネント、又はマイクロプロセッサによって実行される高レベル・コードを含むファイルを含む。
【0095】
上記の説明は主に、ソフトウェアを実行するマイクロプロセッサ又はマルチコア・プロセッサに言及するが、いくつかの実施形態は特定用途向け集積回路(ASIC)又はフィールド・プログラマブル・ゲート・アレイ(FPGA)のような1つ以上の集積回路によって実行される。いくつかの実施形態において、そのような集積回路は、回路自体に記憶されている命令を実行する。
【0096】
本明細書で使用される場合、「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」という用語はすべて、電子デバイス又は他の技術のデバイスを指す。これらの用語は、人間又は人間のグループを除外する。本明細書のために、「表示する」又は「表示している」という用語は、電子デバイス上に表示することを意味する。この明細書で使用されるように、「コンピュータ可読媒体」、「コンピュータ可読媒体」、及び「機械可読媒体」という用語は、コンピュータによって可読である形態で情報を記憶する有形の物理オブジェクトに完全に限定される。これらの用語は、任意の無線信号、有線ダウンロード信号、及び任意の他の刹那の又は一時的な信号を除外する。
【0097】
本発明を多数の特定の詳細を参照して説明してきたが、当業者は本発明が本発明の精神から逸脱することなく他の特定の形態で実施されうることを認識するのであろう。また、上記のいくつかの例はコンテナ・ポッドを参照しているが、他の実施形態はポッドの外側のコンテナを使用する。したがって、当業者は、本発明が前述の例示的な詳細によって限定されるべきではなく、むしろ添付の特許請求の範囲によって定義されるべきであることを理解するだろう。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17