JP7475491B2 - 仮想ポート識別子を使用するフロー処理オフロード - Google Patents

仮想ポート識別子を使用するフロー処理オフロード Download PDF

Info

Publication number
JP7475491B2
JP7475491B2 JP2022564064A JP2022564064A JP7475491B2 JP 7475491 B2 JP7475491 B2 JP 7475491B2 JP 2022564064 A JP2022564064 A JP 2022564064A JP 2022564064 A JP2022564064 A JP 2022564064A JP 7475491 B2 JP7475491 B2 JP 7475491B2
Authority
JP
Japan
Prior art keywords
flow
data message
vpid
pnic
ppid
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022564064A
Other languages
English (en)
Other versions
JP2023530564A (ja
Inventor
ブーン エス. アン,
ウェンイ ジャン,
グオリン ヤン,
ジン ヘオ,
スリヴィディヤ ムラーリ,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VMware LLC
Original Assignee
VMware LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by VMware LLC filed Critical VMware LLC
Publication of JP2023530564A publication Critical patent/JP2023530564A/ja
Application granted granted Critical
Publication of JP7475491B2 publication Critical patent/JP7475491B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/1735Network adapters, e.g. SCI, Myrinet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/781Centralised allocation of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

通常はサーバに関連付けられたより多くの動作が、プログラマブル・ネットワーク・インタフェース・コントローラ(ネットワーク・インタフェース・カード)にプッシュされている。プログラマブルNICにプッシュされる動作の一部は、仮想化計算ノードのためのフロー処理を含む。これらのプログラマブルNICがより普及し、仮想化ネットワークに代わってより多くのフロー処理を実行するため、フロー処理への最適化は、プログラマブルNICの機能を強化するだろう。したがって、プログラマブルNICにオフロードされたフロー処理を最適化することが望ましい。
本発明のいくつかの実施形態は、物理ネットワーク・カード又は物理ネットワーク・コントローラ(pNIC)を構成して、pNICに接続されたホスト・コンピュータにフロー処理オフロード(FPO)を提供するための方法を提供する。ホスト・コンピュータは、仮想ネットワーク内の計算ノード(例えば、仮想マシン、ポッド、コンテナなど)の集合をホストする。計算ノードの集合はそれぞれ、仮想ネットワーク・コントローラによってそれぞれローカルに一意の仮想ポート識別子(VPID)を割り当てられたインタフェース(仮想NIC、ポートなど)の集合に関連付けられる。pNICは、pNICによって物理ポート識別子(PPID)が割り当てられたインタフェース(物理ネットワークに接続された物理ポート、ペリフェラル・コンポーネント・インタコネクト・エクスプレス(PCIe)ポート、物理機能(PF)、仮想機能(VF)など)の集合を含む。本方法は、VPIDとPPIDとの間のマッピングの集合をpNICに提供することを含む。本方法はまた、計算ノードを移行し、pNICの異なるインタフェースへ接続し、異なるVPIDが割り当てられる際にマッピングへの更新を送信することを含む。いくつかの実施形態の方法は、フロー処理及び動作ジェネレータによって実行される。いくつかの実施形態において、フロー処理及びアクション・ジェネレータはホスト・コンピュータの処理ユニット上で実行され、一方、他の実施形態において、フロー処理及びアクション・ジェネレータは、フロー処理ハードウェア及びプログラマブル処理ユニットの集合を含むpNICの処理ユニットの集合上で実行される。
本方法は、計算ノードの集合に関連付けられたデータ・メッセージ・フローの集合のためのフロー・エントリの集合をpNICに提供することをさらに含む。いくつかの実施形態において、フロー・エントリの集合は、VPIDを使用して、マッチング基準の集合及びアクションの一方又は両方を規定する。いくつかの実施形態において、アクションは宛先を指定する。いくつかの実施形態において、各宛先は、VPIDに関して指定され、pNICは、マッピングの集合を使用して、VPIDをPPID(すなわち、出口インタフェース)に解決する。いくつかの実施形態において、各フロー・エントリは、特定のデータ・メッセージ・フローのためのものであり、データ・メッセージ・フローにおいて受信された第1のデータ・メッセージに基づいて生成される。いくつかの実施形態において、フロー・エントリは、仮想(例えば、ソフトウェア)スイッチによって実行されるデータ・メッセージ処理の結果に基づいて生成され、pNICがデータ・メッセージ・フロー内の後続のデータ・メッセージを処理することを可能にするためにpNICに提供される。
いくつかの実施形態において、pNICは、接続されたホスト・コンピュータ上で実行される計算ノードの集合のためのフロー処理を実行するために、フロー・エントリの集合及びマッピングをネットワーク処理ハードウェアに記憶する。いくつかの実施形態において、フロー・エントリ及びマッピング・テーブルは、高速ルックアップを実行するために、別個のメモリ・キャッシュ(例えば、コンテンツ・アドレス可能メモリ(CAM)、3値CAM(TCAM)など)に記憶される。いくつかの実施形態において、pNICは、pNICのインタフェースにおいてデータ・メッセージを受信し、ネットワーク処理ハードウェアによって記憶されたフロー・エントリの集合においてルックアップを実行して、データ・メッセージに関連付けられたマッチング基準に基づいてデータ・メッセージのためのアクションを識別する。いくつかの実施形態において、フロー・エントリは、データ・メッセージ・フローを識別するための基準の集合と、VPIDによって識別されるインタフェースへデータ・メッセージを転送することを指定するアクションとを含む。受信されたデータ・メッセージのための宛先としてVPIDを指定するフロー・エントリが存在するならば、pNICは、VPID対PPIDマッピングにおいてルックアップを実行して、VPIDに関連付けられたpNICのインタフェースを識別する。その後、pNICは、指定された宛先VPIDにマッピングされたPPIDによって識別されるpNICのインタフェースへデータ・メッセージを転送する。
いくつかの実施形態において、ネットワーク処理ハードウェアはまた、他のフロー・エントリと一致しないデータ・メッセージの宛先としてpNICのインタフェースを識別するデフォルト・フロー・エントリでプログラムされる。いくつかの実施形態において、識別されたインタフェースは、データ・メッセージをフロー処理及びアクション・ジェネレータの仮想(例えば、ソフトウェア)スイッチへ転送するために使用されるインタフェースである。いくつかの実施形態において、仮想スイッチは、第1のデータ・メッセージ処理(例えば、低速パス処理)を実行し、処理の結果に基づいて、データ・メッセージが属するデータ・メッセージ・フロー内の後続のデータ・メッセージを処理するために、フロー・エントリをネットワーク処理ハードウェアへ返す。
いくつかの実施形態は、計算ノードがpNICの異なるインタフェースに接続する場合に、VPID対PPIDマッピングを更新するための方法を提供する。いくつかの実施形態において、pNICの異なるインタフェースへ接続することは、計算ノードがpNICの異なるインタフェースにマイグレーションされること、又はpNICが複数のホスト・コンピュータのためにFPOを提供する場合にはpNICの異なるインタフェースに接続される異なるホスト・コンピュータにマイグレーションされることにさえ起因して生じる。いくつかの実施形態において、pNICの異なるインタフェースに接続することは、VMが(例えば、VFに接続された)パススルー・モードから(例えば、PFに接続された)エミュレート・モードに、又はその逆に遷移することに基づく。そのような場合、計算ノード・インタフェースが現在異なるpNICインタフェースに(すなわち、異なるPPIDで)接続されているにもかかわらず、宛先として計算ノード・インタフェースのVPIDを識別するフロー・エントリは、依然として有効である。これらのフロー・エントリに一致するデータ・メッセージは、現在接続されているpNICインタフェースのPPIDへのVPIDの更新されたマッピングを識別するマッピング・テーブル内のルックアップに基づいて、計算ノード・インタフェースに現在接続されているpNICインタフェースに向けられる。
いくつかの実施形態において、本方法は、リンク・アグリゲーション(例えば、LACP、トランキング、バンドリング、チーミングなど)が可能にされる物理ネットワークに接続された複数の物理ポート(PP)をpNICが含む場合も扱う。いくつかの実施形態において、物理ネットワークに接続された第1のPPの第1のPPIDへの第1のVPIDのマッピングは、(1)第1のPPの障害の場合、又は(2)VPIDに関連付けられたトラフィックを第1のPPの代わりに第2のPPへ向かわせるための更新された負荷分散決定の場合に、物理ネットワークに接続された第2のPPの第2のPPIDに第1のVPIDをマッピングするように更新される。
いくつかの実施形態において、計算ノード・インタフェースの構成の変更後に新たなVPIDが割り当てられる計算ノード・インタフェースについて、vNICが依然としてpNICの同じインタフェースに接続されている場合であっても、PPIDに対する更新されたVPIDが必要とされる。いくつかの実施形態において、更新されたVPID対PPIDマッピングの任意のものについて、フロー処理及びアクション・ジェネレータは、命令の集合(例えば、2つの別個の命令又は2つのアクションを実行するための単一の命令)を送信して、無効なVPID対PPIDマッピングを削除し、VPIDとPPIDとの間の更新された関連付けのための新たなVPID対PPIDマッピングを作成する。計算ノード・インタフェースの構成が変わったため、いくつかの以前のデータ・メッセージ・フローもはや有効ではなく、それらのデータ・メッセージ・フローのフロー・エントリに一致する任意のデータ・メッセージは、計算ノード・インタフェースの新たな構成に基づいて評価するために、フロー処理及びアクション・ジェネレータの仮想スイッチにリダイレクトされる。いくつかの実施形態において、仮想スイッチへのリダイレクトは、「故障」(例えば、マッピング・テーブル内にVPIDについてのエントリがないことを示すヌル結果又は他の結果)を返すVPID対PPIDマッピング・テーブル内のルックアップに基づく。いくつかの実施形態において、フロー・エントリに一致するがVPID対PPIDマッピングとの一致に失敗したデータ・メッセージは、ネットワーク処理ハードウェアによって記憶されたフロー・エントリの集合から無効なフロー・エントリ(すなわち、もはや存在しないVPIDを指すフロー・エントリ)を削除するようにフロー処理及びアクション・ジェネレータがpNICに命令することを可能にするために、データ・メッセージが一致したフロー・エントリの識別子とともにフロー処理及びアクション・ジェネレータへ転送される。
いくつかの実施形態において、フロー処理及びアクション・ジェネレータは、ソース宛先VPIDとして識別された各VPIDについて生成されたフロー・エントリに関する情報を記憶する。特定の計算ノード・インタフェースのためのVPIDが(例えば、上述されたように)無効化され、新たな構成が有効になった場合に、フロー処理及びアクション・ジェネレータは、無効化されたVPIDに関連付けられたフロー・エントリを識別し、ネットワーク処理ハードウェアによって記憶されたフロー・エントリの集合から、識別されたフロー・エントリを削除するようにpNICに指示できる。このプロセスは、構成変更が有効になる前に実行される必要はなく、処理能力が利用可能な場合にフロー処理及びアクション・ジェネレータ及びpNICによってバックグラウンド・プロセスとして実行されうる。
無効化されたVPIDを宛先として指定するフロー・エントリを削除することにより、VPIDは、再利用されたVPIDに現在関連付けられている計算ノード・インタフェースに向けられている無効化されたVPIDに以前関連付けられていた計算ノード・インタフェースに関連付けられていた古いフローに関係なく再利用されることが可能になる。これに加えて、いくつかの実施形態において、ネットワーキング処理ハードウェアは、特定の時間量の間、使用されていない(すなわち、フロー・エントリに一致するデータ・メッセージが受信されていない)フロー・エントリをエイジングするためのプロセスを実行する。したがって、そのような実施形態において、VPIDは、特定の時間量(例えば、特定の時間量に、無効化されたVPIDに向けられた以前にアクティブであったフローのためのタイムアウトを加えた量)に基づく時間量の後に、無効化されたフロー・エントリを削除するようにpNICにフロー処理及びアクション・ジェネレータが命令しなくても、安全に再使用されうる。いくつかの実施形態において、VPIDは、PPIDよりも多くのビットを有し、VPID対PPIDマッピングがスパースである(すなわち、取りうるPPIDの個数と少なくとも同じ個数の未使用のVPIDが存在する)ように構成される。
いくつかの実施形態において、マッピング・テーブルは、データ・メッセージが受信されるPPIDに関連付けられたVPIDを識別するためにも使用される。PPIDにおいて受信されたデータ・メッセージは、PPIDがマッピングするVPIDに関連付けられ、フロー・エントリの集合におけるルックアップはVPID並びに他のマッチング基準の集合に基づいて実行される。複数のVPIDに関連付けられたPPID、例えば、それぞれが異なるVPIDを有する複数の計算ノード・インタフェースに接続された仮想スイッチのインタフェースに接続されたpNICの物理機能(PF)について、PFにおいて受信されたデータ・メッセージは、異なるソースからのトラフィックを区別するためにVPIDにすでに関連付けられている。これに加えて、いくつかの実施形態は、仮想スイッチに接続されたPFを識別するPPIDにマッピングするVPIDについて、マッピング・テーブル内に、マッピング・エントリに一致する転送されたデータ・メッセージとともにVPIDが含まれるべきであるというインジケーション(例えば、マッピング・エントリに関連付けられたフラグ・ビット)を含む。
いくつかの実施形態において、マッピング・テーブルは、仮想スイッチに接続するVPIDのマッピングでプログラムされず、ネットワーキング処理ハードウェアは、フロー・エントリに一致するがマッピング・テーブル内のエントリに一致しない任意のデータ・メッセージを、仮想スイッチに接続された(すなわち、フロー処理及びアクション・ジェネレータの)pNICインタフェースに、一致するフロー・エントリ内で指定された宛先VPIDとともに送信するようにプログラムされる。その後、仮想スイッチは、宛先VPID又はデータ・メッセージの他のマッチング基準に基づいてデータ・メッセージを転送できる。いくつかの実施形態において、仮想スイッチは、記憶されたフロー・エントリに基づく高速パス処理パイプラインと、仮想ネットワークの構成及び受信されたデータ・メッセージの特性に基づく低速パス処理パイプラインとを含む。
上記の発明の概要は、本発明のいくつかの実施形態の簡単な紹介としての役割を果たすことを意図している。これは、本書に開示されるすべての発明の主題の導入又は概略であることを意味するものではない。以下の発明を実施するための形態、及び発明を実施するための形態において参照される図面は、発明の概要及び他の実施形態において説明される実施形態をさらに説明する。したがって、本書によって説明される実施形態のすべてを理解するために、発明の概要、詳細な説明、図面、及び特許請求の範囲の完全なレビューが必要とされる。さらに、特許請求の範囲の主題は主題の趣旨から逸脱することなく他の特定の形態で実施されうるため、特許請求の範囲の主題は、発明の概要、詳細な説明、及び図面における例示的な詳細によって限定されるべきではなく、むしろ添付の特許請求の範囲によって規定されるべきである。
本発明の新規な特徴が添付の特許請求の範囲に記載されている。しかし、説明のために、本発明のいくつかの実施形態が以下の図に説明される。
物理NICにおいてホスト・コンピュータにFPOを提供するように構成された例示的なシステムを示す。
図1のpNICを、図1のマッピング・テーブル及びフロー・エントリ・テーブルに投入するフロー処理及びアクション・ジェネレータ(FPAG)とともに示す。
VPID対PPIDマッピング・エントリを生成するためのマッピング・ジェネレータと、SDNコントローラの集合及びSDNマネージャの集合と対話するローカル・コントローラとを含むFPAGのより詳細な図を示す。
pNICの汎用プロセッサの集合でFPAGが実行されるシステムを示す。
pNICに接続されたすべてのサーバを代表して複数のサーバのうちの1つでFPAGが実行されるシステムを示す。
フロー処理を実行するためにpNICのマッピング・テーブルに記憶されるべきVPID対PPIDマッピングを提供するためにいくつかの実施形態において実行されるプロセスを概念的に示す。
フロー処理及びアクション・ジェネレータからFPOハードウェアにフロー・エントリを提供するプロセスを概念的に示す。
pNICで受信されたデータ・メッセージを処理するためのプロセスを概念的に示す。
マッピング・テーブル及びフロー処理テーブルを記憶するpNICのフロー処理ハードウェアを示す。
pNICの1つの仮想機能からpNICの別の仮想機能へのVMマイグレーションを示す。
pNICの仮想機能に接続された1つのホスト・コンピュータから、pNICの仮想機能に接続された別のホスト・コンピュータへのVMマイグレーションを示す。
時刻「T1」においてパススルー・モードからエミュレート・モードに遷移するVMを含むシステムを示す。
VMのvNICの構成に対する変更がvNICのVPIDを変更させるシステムの選択された要素を示す。
リソースが利用可能である際に実行されうるバックグラウンド処理として無効なフロー・エントリを削除するための処理を概念的に示す。
無効化されたVPIDを指定するフロー・エントリを削除するためにFPOハードウェアによって実行されるプロセスを概念的に示す。
物理ネットワーク・ポートのリンク・アグリゲーションが使用可能にされたシステムを示す。
本発明のいくつかの実施形態が実施されるコンピュータ・システムを概念的に示す。
本発明の以下の詳細な説明では、本発明の多数の詳細、例、及び実施形態が記載され、説明される。しかし、本発明は記載された実施形態に限定されず、議論される特定の詳細及び例のうちのいくつかがなくても本発明が実施されうることが当業者には明らかであり、明白であろう。
本発明のいくつかの実施形態は、物理ネットワーク・カード又は物理ネットワーク・コントローラ(pNIC)を構成して、pNICに接続されたホスト・コンピュータのためにフロー処理オフロード(FPO)を提供するための方法を提供する。ホスト・コンピュータは、仮想又は論理ネットワーク内の計算ノード(例えば、仮想マシン(VM)、ポッド、コンテナなど)の集合をホストする。計算ノードの集合はそれぞれ、フロー処理及びアクション・ジェネレータによってローカルに一意の仮想ポート識別子(VPID)をそれぞれ割り当てられたインタフェース(仮想NIC、ポートなど)の集合に関連付けられる。pNICは、pNICによって物理ポート識別子(PPID)が割り当てられたインタフェース(物理ネットワークに接続された物理ポート、物理機能(PF)及び仮想機能(VF)を含むペリフェラル・コンポーネント・インタコネクト・エクスプレス(PCIe)ポートなど)の集合を含む。
本書で使用されるように、物理機能(PF)及び仮想機能(VF)は、PCIeインタフェースを使用してpNICによって公開されるポートを指す。PFは、別個に構成可能なPCIeインタフェース(例えば、同じpNIC上の他のPFとは別個のもの)を有する一意のリソースとして認識されるpNICのインタフェースを指す。VFは、別個に構成可能ではなく、一意のPCIeリソースとして認識されない仮想化されたインタフェースを指す。いくつかの実施形態において、ホスト・コンピュータ上で実行される計算ノードがホスト・コンピュータの仮想スイッチを横断することなくpNICからデータ・メッセージを受信することを可能にするパススルー・メカニズムを提供するためにVFが提供される。いくつかの実施形態において、VFは、pNIC上で実行される仮想化ソフトウェアによって提供される。
いくつかの実施形態において、仮想ネットワークは、論理スイッチ、ルータ、ゲートウェイなどのような1つ以上の論理転送要素を含む1つ以上の論理ネットワークを含む。いくつかの実施形態において、いくつかの物理転送要素(PFE)を構成することによって論理転送要素(LFE)が規定され、そのうちのいくつか又はすべては、デプロイされた計算ノード(例えば、VM、ポッド、コンテナなど)とともにホスト・コンピュータ上で実行される。いくつかの実施形態において、PFEは、デプロイされた計算ノードの異なる2つ以上の部分集合を接続するために2つ以上のLFEを実装するように構成される。いくつかの実施形態において、仮想ネットワークは、NSX-T(商標)によってデプロイされるもののようなソフトウェア定義ネットワーク(SDN)であり、SDNマネージャ及びSDNコントローラの集合を含む。いくつかの実施形態において、SDNマネージャの集合はネットワーク要素を管理し、SDNのための所望の転送挙動を実装するようにネットワーク要素を構成するようにSDNコントローラの集合に指示する。いくつかの実施形態において、SDNコントローラの集合は、ネットワーク要素を構成するために、ホスト・コンピュータ上のローカル・コントローラと対話する。いくつかの実施形態において、これらのマネージャ及びコントローラは、VMware、Inc.によってライセンスされたNSX-Tマネージャ及びコントローラである。
本書で使用されるように、データ・メッセージは、ネットワークを介して送信される特定のフォーマットのビットのコレクションを指す。当業者は、データ・メッセージという用語が、ネットワークを介して送信されるビットの様々なフォーマット化されたコレクションを指すために本文書において使用されることを認識するだろう。これらのビットのフォーマットは、標準化プロトコル又は非標準化プロトコルによって指定されうる。標準化プロトコルに従うデータ・メッセージの例は、イーサネット(登録商標)フレーム、IPパケット、TCPセグメント、UDPデータグラムなどを含む。また、本書で使用されるように、L2、L3、L4、及びL7レイヤ(又はレイヤ2、レイヤ3、レイヤ4、及びレイヤ7)への参照は、それぞれ、OSI(オープン・システム・インタコネクション)レイヤ・モデルの2番目のデータ・リンク・レイヤ、3番目のネットワーク・レイヤ、4番目のトランスポート・レイヤ、及び7番目のアプリケーション・レイヤへの参照である。
図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(商標))である。
いくつかの実施形態において、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は、本発明の実施形態において実装されてもよい計算ノード及びインタフェースの単なる一例である。
pNIC120はまた、pNIC120とVM111a~n及びvNIC112a~nとを物理ネットワークに接続する物理ネットワーク・ポート121を含む。PCIeバス131及び物理ネットワーク・ポート121は、VM111a~n及びvNIC112a~nのためのフロー処理を実行するために、フロー処理オフロード(FPO)ハードウェア140に接続する。FPOハードウェア140は、フロー処理を行うためのフロー・エントリの集合を記憶するフロー・エントリ・テーブル143を含む。いくつかの実施形態において、フロー・エントリは、マッチング基準の集合と、マッチング基準に一致するデータ・メッセージに対して行うべきアクションとを指定する。マッチング基準の集合とアクションとの一方又は両方は、計算ノード・インタフェースを識別するためにVPIDを使用する。いくつかの実施形態において、追加のマッチング基準は、データ・メッセージのヘッダ値(例えば、L2、L3、L4などに関するヘッダ値)を含む。いくつかの実施形態において、行いうるアクションは、データ・メッセージを破棄すること、又はデータ・メッセージをVPIDへ転送することを含む。
FPOハードウェア140はまた、マッピング・テーブル142を含む。マッピング・テーブル142は、pNIC120のインタフェースへのフロー・エントリにおいて指定されたVPIDを解決するために使用されるVPID対PPIDマッピングの集合を含む。マッピング・テーブル142はVPIDをPPIDにマッピングし、PPIDはpNIC120のインタフェースを識別する。いくつかの実施形態において、PPIDはpNIC120によって割り当てられ、VPIDはフロー処理及びアクション・ジェネレータ(図示せず)によってpNIC120の特定のインタフェースに割り当てられ、関連付けられる。以下の例で説明されるように、VPIDに関して宛先を指定し、マッピング・テーブルを使用してpNICのインタフェースを識別することにより、計算ノードのインタフェースが、pNICの1つのインタフェースとの間の関連付けをpNICの別のインタフェースとの関連付けに変更しても、フロー・エントリが有効なままであることが可能になる。
図2は、図1のpNIC120を、マッピング・テーブル142及びフロー・エントリ・テーブル143を投入するフロー処理及びアクション・ジェネレータ(FPAG)260とともに示す。いくつかの実施形態において、FPAG260は、図1の仮想スイッチ115に置き換わる(例えば、仮想スイッチ261及びローカル・キャッシュ262はホスト・コンピュータ110においてデータ・メッセージを転送するために使用される)。FPAG260は、生成されたフロー・エントリのすべてを記憶するローカル・キャッシュ262を含み、FPAG260において受信されたいくつかのデータ・メッセージについて、受信されたデータ・メッセージについて実行するためのアクションをpNIC120に提供する。いくつかの実施形態において、FPAG260は、ホスト・コンピュータ(例えば、ホスト・コンピュータ110)上で実行され、ローカル・キャッシュ262は、pNIC120にオフロードされないデータ・メッセージ処理のための高速パスとして機能する。
FPAG260はまた、仮想スイッチ261を含み、これは、次に、低速パス・プロセッサ263と、フロー・ジェネレータ264とを含む。低速パス・プロセッサ263は、FPOハードウェア140が有効なフロー・エントリを記憶しないデータ・メッセージに対して低速パス処理を実行する。低速パス処理の結果は、その後、フロー処理をFPOハードウェア140にオフロードするためのフロー・エントリを生成するためにフロー・ジェネレータ264によって使用される。例えば、低速パス処理は、特定の転送ルールが、データ・メッセージ・フローに適用され、データ・メッセージが属するフローを一意に識別する基準の集合と、当該フローに属する将来のデータ・メッセージのために行うべきアクションとを供給することを示してもよい。いくつかの実施形態において、基準の低減された集合を使用する特定の転送ルールについて、生成されたフロー・エントリは、アクションを決定するために特定の転送ルールによって使用されないデータ・メッセージ特性についてフロー・エントリによって指定されたマッチング基準の集合内にワイルドカード値を含む。図9は、フロー・ジェネレータ264によって生成されるフロー・エントリにおいて指定されてもよい基準及びアクションのタイプをより詳細に説明する。
いくつかの実施形態において、仮想ネットワークは、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と対話する。
いくつかの実施形態において、ローカル・コントローラ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の処理ユニット上に実装される。
図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の他の要素と通信する。
図5は、FPAG560が、pNIC520に接続されたすべてのサーバ510a~nを代表して、複数のサーバ510a~nのうちの1つのサーバ510a上で実行されるシステム500を示す。図5はまた、いくつかの実施形態において、FPAG560を実行しないサーバ(例えば、サーバ510n)が仮想スイッチ515を実行することを示す。いくつかの実施形態において、仮想スイッチ515は、FPAG560によって行われる転送決定を実装し、完全なネットワーク・スタックを必要としない軽量仮想スイッチである。いくつかの実施形態において、仮想スイッチ515は、エミュレートされたVM513a~m(例えば、パススルー・モードで構成されていないvNICを有するVM)の集合に接続する。
本方法は、VPIDとPPIDとの間のマッピングの集合をpNICに提供することを含む。図6は、フロー処理を実行するためにpNICのマッピング・テーブルに記憶されるべきVPID対PPIDマッピングを提供するためにいくつかの実施形態において実行されるプロセス600を概念的に示す。いくつかの実施形態において、プロセス600は、フロー処理及びアクション・ジェネレータ(例えば、マッピング・ジェネレータ368)及びフロー処理オフロード(FPO)ハードウェア140によって実行される。いくつかの実施形態において、フロー処理及びアクション・ジェネレータはpNIC上に実装されるが、他の実施形態において、フロー処理及びアクション・ジェネレータはpNICに接続されたホスト・コンピュータ上に実装される。プロセス600は、pNICに接続されている計算ノード(例えば、VM、ポッド、コンテナなど)に関連付けられたVPIDの集合を(605において)識別することによって始まる。いくつかの実施形態において、フロー処理及びアクション・ジェネレータは、計算ノードの集合と、計算ノードの集合に関連付けられたVPIDとを識別するために、仮想ネットワークを管理するネットワーク管理コンピュータの集合と通信する。
プロセス600はまた、識別された計算ノード・インタフェースに接続されたpNICのインタフェース及びそれらのpNICインタフェースに関連付けられたPPIDを(610において)識別する。いくつかの実施形態において、PPIDは、PPIDについてpNICに問い合わせることによって、フロー処理及びアクション・ジェネレータによって識別される。いくつかの実施形態において、フロー処理及びアクション・ジェネレータは、pNICのすべてのインタフェース及びそれらのPPIDを認識し、各計算ノード・インタフェースが接続するpNICのインタフェースを決定する。
計算ノード・インタフェースのための識別されたVPID、及びそれらが接続するpNICのインタフェースのPPIDに基づいて、フロー処理及びアクション・ジェネレータは、VPIDとPPIDとの間のマッピングの集合を(615において)生成する。生成されたマッピングの集合は、pNICのFPOハードウェアへ(620において)送信される。いくつかの実施形態において、生成されたマッピングの集合は、フロー処理及びアクション・ジェネレータを実行する処理ユニットとFPOハードウェアとの間のPCIe接続のPFを使用してFPOハードウェアへ送信される。上述のように、フロー処理及びアクション・ジェネレータを実行する処理ユニットはホスト・コンピュータの処理ユニットであるが、他の実施形態において、pNICは、処理ユニットだけでなくFPOハードウェアを含む統合NIC(例えば、プログラマブルNIC、スマートNICなど)である。
FPOハードウェアは、フロー処理及びアクション・ジェネレータから送信されたVPID対PPIDマッピングを(625において)受信する。受信されたVPID対PPIDマッピングは、FPOハードウェアのマッピング・テーブルに(630において)記憶される。いくつかの実施形態において、マッピング・テーブルは、VPIDに基づいてPPIDを、又はPPIDに基づいてVPIDを識別するために使用されうるメモリ・キャッシュ(例えば、コンテンツ・アドレス可能メモリ(CAM)、3値CAM(TCAM)など)に記憶される。当業者は、プロセス600がVPID対PPIDの初期マッピングを記述し、特定の動作が様々な実施形態において、複数の動作を表すか、又は異なる順序で実行される(例えば、動作605の前に動作610があってもよい)こと、及びプロセス600の記述が同じ結果を達成するための均等の処理を除外することを意味しないことを理解するだろう。
本方法はまた、計算ノードがマイグレーションし、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を移動すること)を含む。
本方法は、計算ノードの集合に関連付けられたデータ・メッセージ・フローの集合のためのフロー・エントリの集合をpNICに提供することをさらに含む。いくつかの実施形態において、フロー・エントリの集合は、VPIDを使用して、マッチング基準の集合及びアクションの一方又は両方を規定する。いくつかの実施形態において、アクションは宛先を指定する。いくつかの実施形態において、各宛先は、VPIDに関して指定され、pNICはマッピングの集合を使用して、VPIDをPPID(すなわち、出口インタフェース)に解決する。いくつかの実施形態において、各フロー・エントリは、特定のデータ・メッセージ・フローのためのものであり、データ・メッセージ・フローにおいて受信された第1のデータ・メッセージに基づいて生成される。いくつかの実施形態において、フロー・エントリは、仮想(例えば、ソフトウェア)スイッチによって実行されデータ・メッセージ処理の結果に基づいて生成され、pNICがデータ・メッセージ・フロー内の後続のデータ・メッセージを処理することを可能にするためにpNICに提供される。
図7は、フロー処理及びアクション・ジェネレータからFPOハードウェアにフロー・エントリを提供するためのプロセス700を概念的に示す。プロセス700は、(1)データ・メッセージが属するデータ・メッセージ・フローのためのフロー・エントリと、(2)FPOハードウェアによって記憶されたVPID対PPIDマッピングとの両方と一致しないデータ・メッセージをFPOハードウェアで(705において)受信することによって始まる。これに代えて、データ・メッセージは、デフォルト・ルールに一致するデータ・メッセージのための宛先として、フロー処理及びアクション・ジェネレータに接続されたインタフェースを識別するデフォルト・ルールのみに一致してもよい。いくつかの実施形態において、受信されたデータ・メッセージは、データ・メッセージ・フローにおける第1のデータ・メッセージである。FPOハードウェアは、(710において)データ・メッセージを(例えば、低速パス処理のために)フロー処理及びアクション・ジェネレータへ転送する。
フロー処理及びアクション・ジェネレータは、同じデータ・メッセージ・フロー内の後続のデータ・メッセージに対して行うアクションを決定するために、処理パイプラインを通じてデータ・メッセージを(715において)処理する。例えば、いくつかの実施形態において、処理パイプラインは、データ・メッセージ・フローのデータ・メッセージを破棄するか、又はデータ・メッセージ・フローのデータ・メッセージのための宛先を識別する(場合によっては転送前のカプセル化又はカプセル化解除を伴う)ことの決定をもたらす、他の動作(例えば、ファイアウォール、ミドルボックス・サービスなど)の集合とともに論理転送動作の集合を含む。いくつかの実施形態において、データ・メッセージ・フローのデータ・メッセージのための宛先を識別することは、データ・メッセージ・フローのデータ・メッセージの宛先である計算ノード・インタフェースのVPIDを識別することを含む。
(1)属するデータ・メッセージ・フローを識別する受信されたデータ・メッセージの特性、及び(2)データ・メッセージを処理することに基づいて行うべきと決定されたアクションに基づいて、フロー処理及びアクション・ジェネレータは、(720において)FPOハードウェアがデータ・メッセージ・フローの後続のデータ・メッセージを処理するために使用するためのフロー・エントリを生成する。フロー処理及びアクション・ジェネレータは、(725において)生成されたフロー・エントリをFPOハードウェアへ送信する。上述のように、いくつかの実施形態において、生成されたフロー・エントリは、フロー処理及びアクション・ジェネレータを実行する処理ユニットとFPOハードウェアとの間のPCIe接続のPFを使用してFPOハードウェアへ送信される。
FPOハードウェアは、フロー処理及びアクション・ジェネレータから送信されたフロー・エントリを(730において)受信する。受信されたフロー・エントリは、FPOハードウェアのフロー・エントリの集合(例えば、フロー・エントリ・テーブル)に(735において)記憶される。いくつかの実施形態において、フロー・エントリの集合は、受信されたデータ・メッセージに関連付けられたマッチング基準の集合を指定するフロー・エントリを識別するために使用されうるメモリ・キャッシュ(例えば、コンテンツ・アドレス可能メモリ(CAM)、3値CAM(TCAM)など)に記憶される。
いくつかの実施形態において、pNICは、接続されたホスト・コンピュータ上で実行される計算ノードの集合のためのフロー処理を実行するために、フロー・エントリの集合及びマッピングをネットワーク処理ハードウェアに記憶する。いくつかの実施形態において、フロー・エントリ及びマッピング・テーブルは、高速ルックアップを実行するために別個のメモリ・キャッシュ(例えば、コンテンツ・アドレス可能メモリ(CAM)、3値CAM(TCAM)など)に記憶される。図8は、pNICにおいて受信されたデータ・メッセージを処理するためのプロセス800を概念的に示す。いくつかの実施形態において、プロセス800は、pNICのFPOハードウェアによって実行される。プロセス800は、FPOハードウェアによって処理されるべきpNICのインタフェースにおいてデータ・メッセージを(805において)受信することによって始まる。いくつかの実施形態において、データ・メッセージは、物理ネットワークに接続されたpNICの物理ポートで受信されるデータ・メッセージ、及びホスト・コンピュータに接続されたpNICのインタフェースにおいて受信されるデータ・メッセージのうちの1つである。
プロセス800は、受信されたデータ・メッセージがFPOハードウェアによって記憶されたフロー・エントリと一致するかどうかを(810において)判定する。いくつかの実施形態において、受信されたデータ・メッセージに一致するフロー・エントリをFPOハードウェアが記憶するかどうかを決定することは、受信されたデータ・メッセージの特性(例えば、5タプル、OSIモデルの異なるレイヤにおけるヘッダ値、メタデータなど)に基づく、記憶されたフロー・エントリの集合におけるルックアップに基づく。受信されたデータ・メッセージがフロー・エントリと一致しないと(810において)判定されたならば、プロセス800は、低速パス処理のためにデータ・メッセージをフロー処理及びアクション・ジェネレータへ(815において)転送し、受信されたデータ・メッセージが属するデータ・メッセージ・フローのためのフロー・エントリを(820において)受信し、データ・メッセージ・フローの後続のデータ・メッセージを処理するためのフロー・エントリを(825において)記憶することに進む。動作815~825は、動作815~825に対応する図7の動作710、730及び735の説明とともに、上記でより詳細に説明される。
受信されたデータ・メッセージがフロー・エントリと一致すると判定されたならば、プロセス800は、一致するフロー・エントリが、フロー・エントリに一致するデータ・メッセージが宛先VPIDに転送されることを指定するかどうかを(830において)判定することに進む。データ・メッセージが宛先VPIDに転送されることをフロー・エントリが指定するとプロセス800が決定するならば、プロセス800は、VPIDのためのマッピングがマッピング・テーブル内に存在するかどうかを(835において)決定する。いくつかの実施形態において、VPIDのためのマッピングがマッピング・テーブルに存在するかどうかを決定することは、VPIDに基づいてコンテンツ・アドレス可能メモリ(CAM)を検索することを含む。フロー・エントリが宛先VPIDを指定しない(例えば、データ・メッセージが破棄されるべきであることをフロー・エントリが指定する)とプロセス800が(830において)決定するか、又はVPIDのためのマッピングがマッピング・テーブル内に存在するとプロセス800が(835において)決定するならば、フロー・エントリにおいて指定されたアクションが(800において)実行され、処理が終了する。
VPIDがマッピング・テーブル内にないとプロセス800が(835において)判定したならば、プロセス800は動作815~825に戻る。いくつかの実施形態において、VPIDがマッピング・テーブル142内にないと決定することは、(動作815~825に関連付けられた)低速パス処理に関連付けられたインタフェースにデータ・メッセージを向けるデフォルト結果を返すVPIDルックアップに基づく。他の実施形態において、マッピング・テーブル142にデフォルト・エントリを含める代わりに、いくつかの実施形態は「障害」を返すVPIDルックアップ(例えば、マッピング・テーブル内にVPIDのエントリがないことを示すヌル結果又は他の結果)に基づいて、VPIDがマッピング・テーブル内にないと判定する。マッピング・テーブル142にデフォルト・エントリがないいくつかの実施形態において、FPOハードウェア140は、障害が返されるすべてのデータ・メッセージを仮想スイッチに向かわせるように構成される。以下の図9及び図13を参照して以下で説明するように、フロー・エントリは、VPIDに関連付けられた計算ノード・インタフェースが再構成され、新たなVPIDが割り当てられる場合にもはや有効ではないVPIDを識別してもよい。
図9は、マッピング・テーブル942を記憶するpNICのフロー処理オフロード・ハードウェア940と、フロー処理テーブル943とを示す。いくつかの実施形態において、フロー処理テーブル943は、CAMに記憶され、マッチング基準950の集合及びアクション960を指定するフロー・エントリ951~956の集合を含む。図示される実施形態において、マッチング基準950の集合は、ソースIPアドレス(SIP)、ソースMAC(SMAC)アドレス、ソース・ポート(SPort)、宛先IPアドレス(DIP)、宛先MAC(DMAC)アドレス、宛先ポート(DPort)、及びメタデータを含む。いくつかの実施形態において、メタデータはユーザによって構成可能であるか、又はメタデータのタイプと、当該タイプのメタデータに対する一致値とが、マッチング基準の集合において識別される。
例えば、フロー・エントリ951及び952はマッチング基準950の集合内のVLAN識別子を指定し、フロー・エントリ954はマッチング基準950の集合内のVXLAN識別子を指定する。いくつかの実施形態において、データ・メッセージが受信されるpNICのインタフェースを識別するPPIDがVPIDに変換された後に、データ・メッセージに関連付けられるメタデータ基準(特性)としてVPIDの集合(すなわち、VPID0001~0003)を指定するフロー・エントリ955のように、内部的に追加される追加のタイプのメタデータも指定される。いくつかの実施形態において、VPID0001~0003は、フロー・エントリ955が物理ネットワークから受信されたデータ・メッセージにのみ適用されるように、物理ネットワークに接続するpNICインタフェースに関連付けられる。
いくつかの実施形態において、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つの基準(例えば、データ・メッセージ特性)を指定する。
いくつかの実施形態において、フロー・エントリは、複数のフロー・エントリに一致するデータ・メッセージについて、最も高い優先度を有するフロー・エントリにおいて指定されたアクションがデータ・メッセージについて行われるように、優先度が割り当てられる。いくつかの実施形態において、優先度は、低速パス処理中にフロー・エントリを生成する場合のフロー・エントリのマッチング基準の特異性によって決定され、生成されたフロー・エントリに含まれる。いくつかの実施形態において、高い優先度のルールに一致しないデータ・メッセージを、低速パス処理に関連付けられたVPID(例えば、VPID5000)に(例えば、フロー処理及びアクション・ジェネレータの仮想スイッチに)向かわせるデフォルト・ルール956が指定される。
いくつかの実施形態において、各フロー・エントリは、当該フロー・エントリに一致するデータ・メッセージに関連付けられたアクションを含む。いくつかの実施形態において、アクションは、転送動作(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ハードウェアによるカプセル化解除されたデータ・メッセージのさらなる処理を明示的に指定する。
いくつかの実施形態において、マッピング・テーブル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にエントリを有していない。
マッピング・テーブル942内に発見されないVPIDについて、いくつかの実施形態は、VPIDフィールド970内のワイルドカード976を指定するデフォルト・エントリ975を規定する。図9に示される実施形態において、無効なVPIDに関連付けられたデータ・メッセージを、特定のPPIDに関連付けられたpNICのインタフェース、この場合に、フロー処理及びアクション・ジェネレータの仮想スイッチに接続されたインタフェースに関連付けられたPPID986(「1111」)に向かわせるために、デフォルト・エントリ975がマッピング・テーブル942に含まれる。いくつかの実施形態において、非デフォルト・フロー・エントリ(例えば、951~955)に一致したデフォルト・マッピング・テーブル・エントリ975に一致するデータ・メッセージは、無効なVPID及びフロー・エントリを示す。他の実施形態において、マッピング・テーブル942にデフォルト・エントリを含める代わりに、いくつかの実施形態は、「障害」(例えば、マッピング・テーブル内にVPIDのためのエントリがないことを示すヌル結果又は他の結果)を返すVPIDルックアップのためのアクションを規定する。例えば、アクションは、フロー・エントリに一致するが、VPIDルックアップから障害を返すすべてのデータ・メッセージが仮想スイッチへ転送されることを指定し、いくつかの実施形態において、無効なVPIDを指定する一致フロー・エントリの識別子を(例えば、メタデータ内に)含む。
そのような場合、いくつかの実施形態は、データ・メッセージをフロー処理及びアクション・ジェネレータの仮想スイッチへ転送する場合に、フロー・エントリ識別子を含む。フロー・エントリ識別子は、識別されたフロー・エントリがFPOハードウェアによって記憶されたフロー・エントリの集合から除去されるべきであることをフロー処理及びアクション・ジェネレータが識別することを可能にするように、メタデータ・フィールドに記憶される又はデータ・メッセージに付加される。VPIDは、関連付けられた計算ノード・インタフェースが構成を変更し、新たなVPIDが割り当てられたため、又は関連付けられた計算ノードがシャットダウンされたため、無効であってもよい。計算ノード・インタフェースに新たなVPIDが割り当てられているならば、新たに割り当てられたVPIDをpNICの関連付けられたインタフェースのPPIDにマッピングするマッピング・エントリがマッピング・テーブルに提供され、無効なVPIDに関連付けられたフロー・エントリは、上述のように、及び図14及び図15に関連してさらに説明するように、最終的に削除される。
いくつかの実施形態において、複数の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に接続された異なる計算ノードを区別することが可能となる。
図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との間に更新される。
図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との間に更新される。
図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との間に更新される。
図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に向けられる。
図10~図12はすべて、特定の計算ノード・インタフェース(すなわち、vNIC1012a、1112a及び1212a)を識別するVPIDが、遷移又はマイグレーション全体にわたって同じままであるシナリオを示す。このような場合、FPOハードウェアに提供されるフロー・エントリは依然として有効であり、VPID対PPIDマッピング・テーブルの更新によって、既存のデータ・メッセージ・フローは、個々のフロー・エントリを更新することなく、又は変更が有効になる前に既存のフロー・エントリを無効にしなければならないことなく、現在のPPID(及び宛先計算ノード・インタフェース)に向けられる。しかし、図13に示されるシナリオでは、既存のフローのためのフロー・エントリは無効である(存在しなくなった宛先VPIDを指定する)。いくつかの実施形態において及びいくつかのデータ・メッセージ・フローについて、構成変更は特定の既存のデータ・メッセージ・フローを許可又はサポートせず、各データ・メッセージ・フローが再検証されなければならないため、システムはすべてのフロー・エントリを無効として扱う。しかし、図10~図12のシナリオと同様に、フロー・エントリを更新又は削除しなければならないことなく、計算ノード・インタフェース及びVPIDへの変更が有効になる。
図14は、リソースが利用可能である場合に実行されうるバックグラウンド・プロセスとして、無効なフロー・エントリを削除するためのプロセス1400を概念的に示す。いくつかの実施形態において、プロセス1400は、FPAGによって実行される。いくつかの実施形態において、プロセス1400は、各VPIDについてFPAGによって生成されたフロー・エントリに関するFPAGにおいて記憶された情報に基づいて、これに加えて又はこれに代えて、FPOハードウェアから受信された情報に基づいて実行される。プロセス1400は、無効化された(すなわち、もはや計算ノード・インタフェースに関連付けられていない)VPIDを識別することによって始まる。いくつかの実施形態において、無効化されたVPIDを識別することは、VPIDもはや計算ノード・インタフェースに関連付けられていない(例えば、以前はVPIDに関連付けられていた計算ノード・インタフェースが現在は異なるVPIDに関連付けられている)というローカル・コントローラからの通知に基づく。いくつかの実施形態において、無効化されたVPIDを識別することは、FPOハードウェアから、フロー・エントリに一致したが、VPID対PPIDマッピングとの一致に失敗したデータ・メッセージを受信することを含む。いくつかの実施形態において、FPOハードウェアから受信されたデータ・メッセージは、無効化されたVPIDをメタデータ内に含むか、又は無効化されたVPIDを識別するためにデータ・メッセージとともに制御メッセージを送信する。
プロセス1400は、その後、無効化されたVPIDに関連するフロー・エントリの集合を(1410において)識別する。いくつかの実施形態において、FPAGは、ソース又は宛先のいずれかとしてVPIDを指定して生成された各フロー・エントリを記憶する。識別され、無効化されたVPIDに基づいて、FPAGは、無効化されたVPIDを指定する各エントリをソース又は宛先のいずれかとして識別できる。いくつかの実施形態において、FPAGは、無効化されたVPIDに関連付けられたフロー・エントリのすべてを識別するのではなく、その代わりに、FPOハードウェアから受信されたデータ・メッセージに基づいて、無効なVPIDに関連するフロー・エントリを識別する。いくつかの実施形態において、FPOハードウェアから受信されたデータ・メッセージは、(例えば、メタデータ内に、又は制御メッセージのコンテンツとして)、マッピング・テーブル内のルックアップから障害を生成した(又はデフォルト・ルールにヒットする)FPOハードウェアにおいて受信されたデータ・メッセージと一致するフロー・エントリのためのフロー・エントリ識別子を含む。いくつかの実施形態において、VPIDルックアップから障害を生成した受信データ・メッセージのための新たなフロー・エントリを生成するために、(図7の)動作715~725も実行されることを当業者は理解するだろう。
プロセス1400は、その後、FPOハードウェアから、識別されたフロー・エントリを削除するための命令の集合を(1415において)生成する。いくつかの実施形態において、命令の集合は、複数のフロー・エントリを削除するための単一の命令として生成されるが、他の実施形態において、命令の集合は、識別された各フロー・エントリを削除するための別個の命令を含む。いくつかの実施形態において、命令の集合は、リソースが利用可能である場合に、バックグラウンド・プロセスとして生成される。
命令の集合は、FPOハードウェアにそのストレージからフロー・エントリを削除させるために、FPOハードウェアへ(1420において)送信される。その後、FPOハードウェアは、無効化されたフロー・エントリを削除し、プロセス1400は終了する。いくつかの実施形態において、FPOハードウェアはまた、他のより高い優先度のプロセスに必要とされるリソースを消費しないバックグラウンド・プロセスとして命令を処理するだけである。いくつかの実施形態において、FPOハードウェアは、無効化されたVPIDをFPAGが再利用することを可能にするために、フロー・エントリの識別された集合が削除されたことの確認を送信うる。無効なフロー・エントリが削除される前に、更新されたVPID対PPIDマッピングに基づいて構成変更が有効になりうるので、プロセス1400及びFPOハードウェアにおける命令の処理は、バックグラウンド・プロセスとして実行されることが可能である。FPOハードウェアのリソースを節約し、VPIDのために以前に生成されたフロー・エントリが削除された後に、無効化されたVPIDが再使用されることを可能にするために、フロー・エントリが削除される。
図15は、無効化されたVPIDを指定するフロー・エントリを削除するためにFPOハードウェアによって実行されるプロセス1500を概念的に示す。プロセス1500は、無効化されたVPIDを宛先として指定するフロー・エントリに一致するデータ・メッセージを(1505において)受信することによって始まる。データ・メッセージは、ワイルドカード値又は値の範囲をマッチング基準として指定するフロー・エントリの基準に一致する、既存のフロー又は新たなフローのデータ・メッセージであってもよい。
その後、プロセス1500は、一致するフロー・エントリ内の宛先として指定されたVPIDに対してVPID対PPIDマッピングが存在しないと(1510において)判定する。いくつかの実施形態において、判定は、障害を生成するマッピング・テーブル内のルックアップに基づくか、又はデフォルト・マッピングが返される唯一の一致であることに基づく。いくつかの実施形態において、非デフォルトの宛先が識別されるまで、データ・メッセージに一致したフロー・エントリの識別子が維持される(例えば、データ・メッセージとともに転送される)。
その後、プロセス1500は、FPOハードウェアからフロー・エントリを(1515において)削除する。いくつかの実施形態において、FPOハードウェアは、マッピング・テーブル内に非デフォルトの一致が見つからないならば、フロー・エントリが自動的に無効化(例えば、削除)されるべきかどうかを示すビットとともに、フロー・エントリを記憶する。いくつかの実施形態において、FPOハードウェアは、フロー・エントリとともに記憶されたビットに基づいて、又はフロー・エントリとともにフラグ・ビットを記憶することに基づかないデフォルト挙動として、データ・メッセージに一致したフロー・エントリを自動的に無効化し、プロセス1500は終了する。いくつかの実施形態において、(1515において)フロー・エントリを無効化することは、宛先PPIDに解決されなかった(すなわち、マッピング・テーブル内のルックアップから非デフォルトの一致を生成しなかった)フロー・エントリであるとフロー・エントリを識別するデータ・メッセージをFPAGに送信することを含む。その後、FPGAは、フロー・エントリを無効化(又は削除)するためにFPOハードウェアによって受信される命令を生成するためにプロセス1400を実行する。受信された命令に基づいて、FPOハードウェアはフロー・エントリを無効化(又は削除)し、プロセス1500は終了する。
いくつかの実施形態において、FPOはまた、特定の時間量にわたってフロー・エントリが使用されていないことに基づいて、フロー・エントリを無効化する(例えば、エイジング・アウトする)ための内部プロセスを有する。いくつかのそのような実施形態において、FPOハードウェアは、フロー・エントリがデータ・メッセージに最後に一致した時刻に関するデータを記憶する。フロー・エントリがデータ・メッセージに最後に一致した時刻から経過した時間がエイジング・アウト閾値時間よりも大きいならば、フロー・エントリは削除される(又は無効化される)。したがって、少なくともエイジング・アウト閾値時間と同じ大きさの再使用閾値時間の後、無効化されたVPIDが再使用されうる。いくつかの実施形態において、エイジング・アウト閾値がFPOハードウェア上で満たされたことを保証するために、再使用閾値時間は、平均データ・メッセージ・フローがタイムアウトする時間にエイジング・アウト時間を加えた時間以上に設定される。いくつかの実施形態において、VPIDの再利用をさらに容易にするために、VPIDは、PPIDよりも多くのビットを有するように規定される。いくつかの実施形態において、PPIDのビット数は、pNICが有するPFの数及び各PFがサポートするVFの数に基づく。16ビットのPPIDを仮定すると、いくつかの実施形態において、VPID対PPIDマッピングの所望のスパース性に応じて、VPIDは18又は20ビットである。
いくつかの実施形態において、マッピング・テーブルは、データ・メッセージが受信されるPPIDに関連付けられたVPIDを識別するための逆マッピングの集合を含む。一部の実施形態において、逆マッピングは、プロセス600に類似するプロセスを使用して生成されるが、PPIDへのVPID並びにPPIDへのVPIDのマッピングを(615において)生成する。いくつかの実施形態において、逆マッピングは、別個の逆マッピング・テーブルに記憶される。上述のように、特定のPPIDは、複数のVPIDに関連付けられてもよい。ホスト・コンピュータ上で実行される計算ノードから受信されるデータ・メッセージについて、FPOハードウェアにデータ・メッセージを提供する際に、VPIDが付加される(又は維持される)。
図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マッピングの集合に優先度を関連付ける。
障害が発生したリンクに関連付けられたフロー・エントリを書き換える必要なしにリンク障害の場合に迅速にフェイル・オーバすることに加えて、マッピング・テーブルの使用は、関連付けられたフロー・エントリを書き換えることなく、更新されるべき複数の物理ポートにわたってデータ・メッセージを配布するために負荷分散決定が行われることも可能にする。例えば、リンク・アグリゲーション・グループ内の特定の物理ポートの帯域幅が変わるならば、特定の物理ポートに以前に送信されたデータ・メッセージの集合は、いくつかの実施形態において、特定の物理ポートに関連付けられたVPIDが現在、異なる物理ポートのPPIDにマッピングするようにVPID対PPIDマッピングを更新することによって、異なる物理ポートにリダイレクトされる。いくつかの実施形態において、各物理ポートには、物理ポートのPPIDにマッピングされる複数のVPIDが割り当てられる(例えば、図16の物理ポート1621aは少なくとも2つのポートにマッピングされる)。いくつかの実施形態において、一次VPIDは、逆ルックアップのために各特定の物理ポートに割り当てられ、二次VPIDの集合は、pNICから出るために(例えば、リンク・アグリゲーション・プロトコルの負荷分散によって)分散されたデータ・メッセージ・トラフィックの一部にそれぞれ使用されるように割り当てられる。いくつかの実施形態において、割り当てられたVPIDは、フロー・エントリが特定の物理ポートを通じて出るために生成される際に、ラウンドロビン方式(又は何らかの他の選択メカニズム)で使用される。いくつかの実施形態において、各ポートに対して複数のVPIDを使用することにより、更新された負荷分散決定をより細かい粒度で行うことができる。例えば、10個のVPIDが単一の物理ポートに関連付けられているならば、各VPIDは、別々に再マッピングされてもよく、オール・オア・ナッシング・アプローチではなく、物理ポート上のデータ・メッセージ負荷の10%の再バランスを可能にする。当業者は、10という数が例としてのみ提供され、同じ宛先物理ポートのために複数のVPIDを指定するフロー・エントリを生成することと、複数のVPID対PPIDマッピングを更新することとの複雑さで再バランスの粒度を調和させるために、より多い又はより少ないVPIDが割り当てられてもよいことを理解するだろう。
上記の特徴及びアプリケーションの多くは、コンピュータ可読記憶媒体(コンピュータ可読媒体とも呼ばれる)に記録された命令の集合として指定されるソフトウェア・プロセスとして実装される。これらの命令が1つ以上の処理ユニット(例えば、1つ以上のプロセッサ、プロセッサのコア、又は他の処理ユニット)によって実行される場合に、それらは、処理ユニットに、命令に示されたアクションを実行させる。コンピュータ可読媒体の例は、CD-ROM、フラッシュ・ドライブ、RAMチップ、ハード・ドライブ、EPROMなどを含むが、これらに限定されない。コンピュータ可読媒体は、無線又は有線接続を介して通過する搬送波及び電気信号を含まない。
本明細書において、「ソフトウェア」という用語は、リード・オンリ・メモリに常駐するファームウェア、又はプロセッサによって処理するためにメモリに読み込むことができる、磁気ストレージに記憶されたアプリケーションを含むことが意味される。また、いくつかの実施形態において、複数のソフトウェア発明は、別個のソフトウェア発明を残しながら、より大きなプログラムのサブパーツとして実装されうる。いくつかの実施形態において、複数のソフトウェア発明は、別個のプログラムとして実装されうる。最後に、本書に記載されるソフトウェア発明を一緒に実装する別個のプログラムの任意の組合せは、本発明の範囲内である。いくつかの実施形態において、ソフトウェア・プログラムは、1つ以上の電子システム上で動作するようにインストールされた場合に、ソフトウェア・プログラムの動作を実行(execute)及び実行(perform)する1つ以上の特定のマシン実装を規定する。
図17は、本発明のいくつかの実施形態が実施されるコンピュータ・システム1700を概念的に示す。コンピュータ・システム1700は、上述のホスト、コントローラ及びマネージャのいずれかを実装するために使用されうる。このように、上述のプロセスのいずれかを実行するために使用されうる。このコンピュータ・システムは、様々なタイプの非一時的機械可読媒体と、様々な他のタイプの機械可読媒体のためのインタフェースとを含む。コンピュータ・システム1700は、バス1705と、処理ユニット1710と、システム・メモリ1725と、リード・オンリ・メモリ1730と、永久記憶デバイス1735と、入力デバイス1740と、出力デバイス1745とを含む。
バス1705は、コンピュータ・システム1700の多数の内部デバイスを通信可能に接続するすべてのシステム・バス、周辺バス及びチップセット・バスを集合的に表す。例えば、バス1705は、処理ユニット1710を、リード・オンリ・メモリ1730、システム・メモリ1725、及び永久記憶デバイス1735と通信可能に接続する。
これらの様々なメモリ・ユニットから、処理ユニット1710は、本発明のプロセスを実行するために、実行すべき命令及び処理すべきデータを読み出す。処理ユニットは、様々な実施形態において、単一のプロセッサであってもよいし、マルチコア・プロセッサであってもよい。リード・オンリ・メモリ(ROM)1730は、処理ユニット1710及びコンピュータ・システムの他のモジュールによって必要とされる静的データ及び命令を記憶する。一方、永久記憶装置1735は、読み書き可能なメモリ・デバイスである。このデバイスは、コンピュータ・システム1700がオフであっても命令及びデータを記憶する不揮発性メモリ・ユニットである。本発明のいくつかの実施形態は、永久記憶デバイス1735として(磁気又は光ディスク及びその対応するディスク・ドライブのような)大容量記憶デバイスを使用する。
他の実施形態は、取り外し可能な記憶デバイス(フロッピー・ディスク、フラッシュ・ドライブなど)を永久記憶デバイスとして使用する。永久記憶デバイス1735と同様に、システム・メモリ1725は、読み書きメモリ・デバイスである。しかし、記憶デバイス1735とは異なり、システム・メモリは、ランダム・アクセス・メモリのような揮発性の読み書きメモリである。システム・メモリは、プロセッサが実行時に必要とする命令及びデータの一部を記憶する。いくつかの実施形態において、本発明のプロセスは、システム・メモリ1725、永久記憶デバイス1735、及び/又はリード・オンリ・メモリ1730に記憶される。これらの様々なメモリ・ユニットから、処理ユニット1710はいくつかの実施形態のプロセスを実行するために、実行すべき命令及び処理すべきデータを読み出す。
バス1705はまた、入力デバイス1740及び出力デバイス1745に接続する。入力デバイス1740は、ユーザが情報を通信し、要求をコンピュータ・システムに選択することを可能にする。入力デバイス1740は、英数字キーボード及びポインティング・デバイス(「カーソル制御デバイス」とも呼ばれる)を含む。出力デバイス1745は、コンピュータ・システム1700によって生成された画像を表示する。出力デバイス1745は、プリンタ及び、陰極線管(CRT)又は液晶ディスプレイ(LCD)のような表示デバイスを含む。いくつかの実施形態は、入力デバイス及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含む。
最後に、図17に示されるように、バス1705はまた、ネットワーク・アダプタ(図示せず)を介してコンピュータ・システム1700をネットワーク1765に結合する。このようにして、コンピュータ1700は、(ローカル・エリア・ネットワーク(「LAN」)、ワイド・エリア・ネットワーク(「WAN」)、又はイントラネットのような)コンピュータのネットワーク、又は(インターネットのような)ネットワークのネットワークの一部でありうる。コンピュータ・システム1700の任意の又はすべての構成要素が本発明と併せて使用されてもよい。
いくつかの実施形態は、機械可読又はコンピュータ可読媒体(代替的に、コンピュータ可読記憶媒体、機械可読媒体、又は機械可読記憶媒体と呼ばれる)にコンピュータ・プログラム命令を記憶するマイクロプロセッサのような電子コンポーネントを含む。そのようなコンピュータ可読媒体のいくつかの例は、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つの処理ユニットによって実行可能であり、様々な動作を実行するための命令の集合を含むコンピュータ・プログラムを記憶してもよい。コンピュータ・プログラム又はコンピュータ・コードの例は、コンパイラによって生成されるような機械コード、及びインタプリタを使用してコンピュータ、電子コンポーネント、又はマイクロプロセッサによって実行される高レベル・コードを含むファイルを含む。
上記の説明は主に、ソフトウェアを実行するマイクロプロセッサ又はマルチコア・プロセッサに言及するが、いくつかの実施形態は特定用途向け集積回路(ASIC)又はフィールド・プログラマブル・ゲート・アレイ(FPGA)のような1つ以上の集積回路によって実行される。いくつかの実施形態において、そのような集積回路は、回路自体に記憶されている命令を実行する。
本明細書で使用される場合、「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」という用語はすべて、電子デバイス又は他の技術のデバイスを指す。これらの用語は、人間又は人間のグループを除外する。本明細書のために、「表示する」又は「表示している」という用語は、電子デバイス上に表示することを意味する。この明細書で使用されるように、「コンピュータ可読媒体」、「コンピュータ可読媒体」、及び「機械可読媒体」という用語は、コンピュータによって可読である形態で情報を記憶する有形の物理オブジェクトに完全に限定される。これらの用語は、任意の無線信号、有線ダウンロード信号、及び任意の他の刹那の又は一時的な信号を除外する。
本発明を多数の特定の詳細を参照して説明してきたが、当業者は本発明が本発明の精神から逸脱することなく他の特定の形態で実施されうることを認識するのであろう。また、上記のいくつかの例はコンテナ・ポッドを参照しているが、他の実施形態はポッドの外側のコンテナを使用する。したがって、当業者は、本発明が前述の例示的な詳細によって限定されるべきではなく、むしろ添付の特許請求の範囲によって定義されるべきであることを理解するだろう。

Claims (23)

  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。
JP2022564064A 2020-09-28 2021-07-17 仮想ポート識別子を使用するフロー処理オフロード Active JP7475491B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US202063084436P 2020-09-28 2020-09-28
US63/084,436 2020-09-28
US17/114,975 US11606310B2 (en) 2020-09-28 2020-12-08 Flow processing offload using virtual port identifiers
US17/114,975 2020-12-08
US17/114,994 US11792134B2 (en) 2020-09-28 2020-12-08 Configuring PNIC to perform flow processing offload using virtual port identifiers
US17/114,994 2020-12-08
PCT/US2021/042115 WO2022066267A1 (en) 2020-09-28 2021-07-17 Flow processing offload using virtual port identifiers

Publications (2)

Publication Number Publication Date
JP2023530564A JP2023530564A (ja) 2023-07-19
JP7475491B2 true JP7475491B2 (ja) 2024-04-26

Family

ID=80821809

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022564064A Active JP7475491B2 (ja) 2020-09-28 2021-07-17 仮想ポート識別子を使用するフロー処理オフロード

Country Status (7)

Country Link
US (3) US11792134B2 (ja)
EP (1) EP4127953A1 (ja)
JP (1) JP7475491B2 (ja)
CN (1) CN116171565A (ja)
AU (1) AU2021349770B2 (ja)
CA (1) CA3180645A1 (ja)
WO (1) WO2022066267A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11689455B2 (en) 2020-05-28 2023-06-27 Oracle International Corporation Loop prevention in virtual layer 2 networks
US11593278B2 (en) * 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US12021759B2 (en) 2020-09-28 2024-06-25 VMware LLC Packet processing with hardware offload units
US11792134B2 (en) 2020-09-28 2023-10-17 Vmware, Inc. Configuring PNIC to perform flow processing offload using virtual port identifiers
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US20220100432A1 (en) 2020-09-28 2022-03-31 Vmware, Inc. Distributed storage services supported by a nic
US11652743B2 (en) 2020-12-30 2023-05-16 Oracle International Corporation Internet group management protocol (IGMP) of a layer-2 network in a virtualized cloud environment
US11671355B2 (en) 2021-02-05 2023-06-06 Oracle International Corporation Packet flow control in a header of a packet
WO2022173555A1 (en) * 2021-02-13 2022-08-18 Oracle International Corporation Invalidating cached flow information in a cloud infrastructure
US11777897B2 (en) 2021-02-13 2023-10-03 Oracle International Corporation Cloud infrastructure resources for connecting a service provider private network to a customer private network
US20220263754A1 (en) * 2021-02-13 2022-08-18 Oracle International Corporation Packet flow in a cloud infrastructure based on cached and non-cached configuration information
US11995024B2 (en) 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
WO2023249748A1 (en) * 2022-06-21 2023-12-28 Vmware, Inc. Accelerating data message classification with smart nics
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US11671350B1 (en) 2022-08-15 2023-06-06 Red Hat, Inc. Data request servicing using multiple paths of smart network interface cards

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015039166A (ja) 2013-07-25 2015-02-26 カビウム・インコーポレーテッド 仮想スイッチを有するネットワークインタフェースカードおよびトラフィックフローポリシの適用
JP2015515798A (ja) 2012-03-21 2015-05-28 マイクロソフト コーポレーション ネットワーキング・デバイスの仮想化のためのパケット処理のオフロード
JP2017147597A (ja) 2016-02-17 2017-08-24 株式会社Nttドコモ 通信装置、経路管理サーバ、通信方法、および仮想ポート割当方法
JP2019161319A (ja) 2018-03-08 2019-09-19 富士通株式会社 情報処理装置、情報処理システム及びプログラム

Family Cites Families (243)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035105A (en) 1996-01-02 2000-03-07 Cisco Technology, Inc. Multiple VLAN architecture system
US6393483B1 (en) 1997-06-30 2002-05-21 Adaptec, Inc. Method and apparatus for network interface card load balancing and port aggregation
US5884313A (en) 1997-06-30 1999-03-16 Sun Microsystems, Inc. System and method for efficient remote disk I/O
US5887134A (en) 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US6687758B2 (en) 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US5974547A (en) 1998-03-20 1999-10-26 3Com Corporation Technique for reliable network booting of an operating system to a client computer
US8225002B2 (en) 1999-01-22 2012-07-17 Network Disk, Inc. Data storage and data sharing in a network of heterogeneous computers
US6496935B1 (en) 2000-03-02 2002-12-17 Check Point Software Technologies Ltd System, device and method for rapid packet filtering and processing
JP4168574B2 (ja) 2000-06-02 2008-10-22 株式会社日立製作所 パケット転送装置、パケット転送制御方法、及びパケット転送装置の設定方法
US7792923B2 (en) 2000-10-13 2010-09-07 Zhe Khi Pak Disk system adapted to be directly attached to network
US7231430B2 (en) 2001-04-20 2007-06-12 Egenera, Inc. Reconfigurable, virtual processing system, cluster, network and method
EP1482708A2 (en) 2001-04-20 2004-12-01 Egenera, Inc. Virtual networking system and method in a processing system
US7360242B2 (en) 2001-11-19 2008-04-15 Stonesoft Corporation Personal firewall with location detection
US7321936B2 (en) 2002-04-18 2008-01-22 Ardence, Inc. System for and method of streaming data to a computer in a network
US7546364B2 (en) 2002-05-16 2009-06-09 Emc Corporation Replication of remote copy data for internet protocol (IP) transmission
US7313623B2 (en) 2002-08-30 2007-12-25 Broadcom Corporation System and method for TCP/IP offload independent of bandwidth delay product
US20080008202A1 (en) 2002-10-31 2008-01-10 Terrell William C Router with routing processors and methods for virtualization
US7424710B1 (en) 2002-12-18 2008-09-09 Vmware, Inc. TCP/IP offloading for virtual machines
JP4157409B2 (ja) 2003-03-31 2008-10-01 富士通株式会社 仮想パス構築装置および仮想パス構築方法
US7366181B2 (en) 2003-09-06 2008-04-29 Fujitsu Limited Virtual private network (VPN) with channelized ethernet over sonet (EoS) interface and method
US20050105538A1 (en) 2003-10-14 2005-05-19 Ananda Perera Switching system with distributed switching fabric
JP4391265B2 (ja) 2004-02-26 2009-12-24 株式会社日立製作所 ストレージサブシステムおよび性能チューニング方法
WO2005099201A2 (en) 2004-04-03 2005-10-20 Troika Networks, Inc. System and method of providing network node services
US7404192B2 (en) 2004-08-03 2008-07-22 International Business Machines Corporation Apparatus, system, and method for isolating a storage application from a network interface driver
US8285907B2 (en) 2004-12-10 2012-10-09 Intel Corporation Packet processing in switched fabric networks
US7747836B2 (en) 2005-03-08 2010-06-29 Netapp, Inc. Integrated storage virtualization and switch system
US7480780B2 (en) 2005-04-19 2009-01-20 Hitachi, Ltd. Highly available external storage system
US20070056038A1 (en) 2005-09-06 2007-03-08 Lok Technology, Inc. Fusion instrusion protection system
US7743198B2 (en) 2005-09-08 2010-06-22 International Business Machines Corporation Load distribution in storage area networks
US8230153B2 (en) 2006-01-20 2012-07-24 Broadcom Corporation Method and system for HBA assisted storage virtualization
KR101490327B1 (ko) 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US8381209B2 (en) 2007-01-03 2013-02-19 International Business Machines Corporation Moveable access control list (ACL) mechanisms for hypervisors and virtual machines and virtual port firewalls
US7853998B2 (en) 2007-03-22 2010-12-14 Mocana Corporation Firewall propagation
US8111707B2 (en) 2007-12-20 2012-02-07 Packeteer, Inc. Compression mechanisms for control plane—data plane processing architectures
US20080267177A1 (en) 2007-04-24 2008-10-30 Sun Microsystems, Inc. Method and system for virtualization of packet encryption offload and onload
US20090089537A1 (en) 2007-09-28 2009-04-02 Sun Microsystems, Inc. Apparatus and method for memory address translation across multiple nodes
US7945436B2 (en) 2007-11-06 2011-05-17 Vmware, Inc. Pass-through and emulation in a virtual machine environment
US7792057B2 (en) 2007-12-21 2010-09-07 At&T Labs, Inc. Method and system for computing multicast traffic matrices
CN101540826A (zh) 2008-03-21 2009-09-23 张通 一种应用于电视机的多媒体装置及一种电视机
JP5164628B2 (ja) 2008-03-24 2013-03-21 株式会社日立製作所 ネットワークスイッチ装置、サーバシステム及びサーバシステムにおけるサーバ移送方法
US20090249471A1 (en) 2008-03-27 2009-10-01 Moshe Litvin Reversible firewall policies
US8793117B1 (en) 2008-04-16 2014-07-29 Scalable Network Technologies, Inc. System and method for virtualization of networking system software via emulation
US20110060859A1 (en) 2008-04-21 2011-03-10 Rishabhkumar Shukla Host-to-host software-based virtual system
US8478835B2 (en) 2008-07-17 2013-07-02 Netapp. Inc. Method and system for using shared memory with optimized data flow to improve input/output throughout and latency
US8375151B1 (en) 2009-02-12 2013-02-12 Siliconsystems, Inc. Command portal for securely communicating and executing non-standard storage subsystem commands
US8667187B2 (en) 2008-09-15 2014-03-04 Vmware, Inc. System and method for reducing communication overhead between network interface controllers and virtual machines
US8442059B1 (en) 2008-09-30 2013-05-14 Gridiron Systems, Inc. Storage proxy with virtual ports configuration
US8250267B2 (en) 2008-10-31 2012-08-21 Netapp, Inc. Control I/O offload in a split-path storage virtualization system
US8161099B2 (en) 2008-12-17 2012-04-17 Microsoft Corporation Techniques to automatically syndicate content over a network
US8144582B2 (en) 2008-12-30 2012-03-27 International Business Machines Corporation Differentiating blade destination and traffic types in a multi-root PCIe environment
US8589919B2 (en) 2009-04-28 2013-11-19 Cisco Technology, Inc. Traffic forwarding for virtual machines
JP4810585B2 (ja) 2009-05-11 2011-11-09 株式会社日立製作所 リモートスキャンをサポートする計算機
US9621516B2 (en) 2009-06-24 2017-04-11 Vmware, Inc. Firewall configured with dynamic membership sets representing machine attributes
US8352482B2 (en) 2009-07-21 2013-01-08 Vmware, Inc. System and method for replicating disk images in a cloud computing based virtual machine file system
US8756387B2 (en) 2010-03-05 2014-06-17 International Business Machines Corporation Method and apparatus for optimizing the performance of a storage system
US8346919B1 (en) 2010-03-30 2013-01-01 Chelsio Communications, Inc. Failover and migration for full-offload network interface devices
US8954962B2 (en) 2010-09-22 2015-02-10 Juniper Networks, Inc. Automatically reconfiguring physical switches to be in synchronization with changes made to associated virtual system
US8804747B2 (en) 2010-09-23 2014-08-12 Cisco Technology, Inc. Network interface controller for virtual and distributed services
JP5594049B2 (ja) 2010-10-18 2014-09-24 富士通株式会社 仮想計算機移動方法、コンピュータ及びプログラム
US9135044B2 (en) 2010-10-26 2015-09-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Virtual function boot in multi-root I/O virtualization environments to enable multiple servers to share virtual functions of a storage adapter through a MR-IOV switch
US20120167082A1 (en) 2010-12-23 2012-06-28 Sanjay Kumar Direct sharing of smart devices through virtualization
CN103416025B (zh) 2010-12-28 2016-11-02 思杰系统有限公司 用于经由云桥添加vlan标签的系统和方法
US9191327B2 (en) 2011-02-10 2015-11-17 Varmour Networks, Inc. Distributed service processing of network gateways using virtual machines
US9148895B2 (en) 2011-03-25 2015-09-29 Hewlett-Packard Development Company, L.P. Bridge mode firewall mobility
US8825900B1 (en) 2011-04-05 2014-09-02 Nicira, Inc. Method and apparatus for stateless transport layer tunneling
US8918615B2 (en) 2011-04-27 2014-12-23 Hitachi, Ltd. Information storage system including a plurality of storage systems that is managed using system and volume identification information and storage system management method for same
US20120290695A1 (en) 2011-05-13 2012-11-15 International Business Machines Corporation Distributed Policy Service
US9154327B1 (en) * 2011-05-27 2015-10-06 Cisco Technology, Inc. User-configured on-demand virtual layer-2 network for infrastructure-as-a-service (IaaS) on a hybrid cloud network
US20120320918A1 (en) 2011-06-14 2012-12-20 International Business Business Machines Bridge port between hardware lan and virtual switch
US9900224B2 (en) 2011-08-04 2018-02-20 Midokura Sarl System and method for implementing and managing virtual networks
US8660124B2 (en) 2011-08-05 2014-02-25 International Business Machines Corporation Distributed overlay network data traffic management by a virtual server
US9203703B2 (en) 2011-08-17 2015-12-01 Nicira, Inc. Packet conflict resolution
US8856518B2 (en) 2011-09-07 2014-10-07 Microsoft Corporation Secure and efficient offloading of network policies to network interface cards
US9158458B2 (en) 2011-09-21 2015-10-13 Os Nexus, Inc. Global management of tiered storage resources
US8930529B1 (en) 2011-09-27 2015-01-06 Palo Alto Networks, Inc. Policy enforcement with dynamic address object
US9047109B1 (en) 2012-06-20 2015-06-02 Palo Alto Networks, Inc. Policy enforcement in virtualized environment
JP5714187B2 (ja) 2011-11-15 2015-05-07 ニシラ, インコーポレイテッド ミドルボックスを備えるネットワークのアーキテクチャ
WO2013095392A1 (en) * 2011-12-20 2013-06-27 Intel Corporation Systems and method for unblocking a pipeline with spontaneous load deferral and conversion to prefetch
US8660129B1 (en) 2012-02-02 2014-02-25 Cisco Technology, Inc. Fully distributed routing over a user-configured on-demand virtual network for infrastructure-as-a-service (IaaS) on hybrid cloud networks
US9479461B2 (en) 2012-03-16 2016-10-25 Hitachi, Ltd. Computer system and method for communicating data between computers
US9325562B2 (en) 2012-05-15 2016-04-26 International Business Machines Corporation Overlay tunnel information exchange protocol
US20140165196A1 (en) 2012-05-22 2014-06-12 Xockets IP, LLC Efficient packet handling, redirection, and inspection using offload processors
US10454760B2 (en) 2012-05-23 2019-10-22 Avago Technologies International Sales Pte. Limited Layer-3 overlay gateways
US9059868B2 (en) 2012-06-28 2015-06-16 Dell Products, Lp System and method for associating VLANs with virtual switch ports
JP5958164B2 (ja) 2012-08-07 2016-07-27 富士通株式会社 制御装置、方法及びプログラム、並びにシステム及び情報処理方法
US10057318B1 (en) 2012-08-10 2018-08-21 Dropbox, Inc. System, method, and computer program for enabling a user to access and edit via a virtual drive objects synchronized to a plurality of synchronization clients
US9008085B2 (en) 2012-08-15 2015-04-14 International Business Machines Corporation Network interface card having overlay gateway functionality
US9130879B2 (en) 2012-08-24 2015-09-08 Vmware, Inc. Methods and systems for offload processing of encapsulated packets
US9697093B2 (en) 2012-09-05 2017-07-04 Veritas Technologies Llc Techniques for recovering a virtual machine
US9317508B2 (en) 2012-09-07 2016-04-19 Red Hat, Inc. Pro-active self-healing in a distributed file system
US8953618B2 (en) 2012-10-10 2015-02-10 Telefonaktiebolaget L M Ericsson (Publ) IP multicast service leave process for MPLS-based virtual private cloud networking
US9571507B2 (en) 2012-10-21 2017-02-14 Mcafee, Inc. Providing a virtual security appliance architecture to a virtual cloud infrastructure
WO2014064756A1 (ja) * 2012-10-22 2014-05-01 株式会社日立製作所 ストレージプールから実記憶領域を仮想ボリュームへ割り当てる方法及び計算機システム
US8931046B2 (en) 2012-10-30 2015-01-06 Stateless Networks, Inc. System and method for securing virtualized networks
US8949418B2 (en) 2012-12-11 2015-02-03 International Business Machines Corporation Firewall event reduction for rule use counting
US9116727B2 (en) 2013-01-15 2015-08-25 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Scalable network overlay virtualization using conventional virtual switches
US9348638B2 (en) 2013-01-17 2016-05-24 Xockets, Inc. Offload processor modules for connection to system memory, and corresponding methods and systems
US9378161B1 (en) 2013-01-17 2016-06-28 Xockets, Inc. Full bandwidth packet handling with server systems including offload processors
US9935841B2 (en) 2013-01-28 2018-04-03 Intel Corporation Traffic forwarding for processing in network environment
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9130901B2 (en) 2013-02-26 2015-09-08 Zentera Systems, Inc. Peripheral firewall system for application protection in cloud computing environments
US9384021B2 (en) 2013-02-27 2016-07-05 Dell Products L.P. System and method for virtualization aware server maintenance mode
US9143582B2 (en) 2013-03-08 2015-09-22 International Business Machines Corporation Interoperability for distributed overlay virtual environments
US9374241B2 (en) 2013-03-14 2016-06-21 International Business Machines Corporation Tagging virtual overlay packets in a virtual networking system
US9197551B2 (en) 2013-03-15 2015-11-24 International Business Machines Corporation Heterogeneous overlay network translation for domain unification
CN103621026B (zh) 2013-04-01 2017-06-13 华为技术有限公司 虚拟机的数据交换方法、装置和系统
US9483431B2 (en) 2013-04-17 2016-11-01 Apeiron Data Systems Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA)
US9325739B1 (en) 2013-04-29 2016-04-26 Amazon Technologies, Inc. Dynamic security policy generation
US9215177B2 (en) 2013-06-24 2015-12-15 Wmware, Inc. System and method for distribution of policy enforcement point
US10073971B2 (en) 2013-06-28 2018-09-11 Microsoft Technology Licensing, Llc Traffic processing for network performance and security
US9130775B2 (en) 2013-07-10 2015-09-08 Cisco Technology, Inc. Support for virtual extensible local area network segments across multiple data center sites
US9218193B2 (en) 2013-07-12 2015-12-22 International Business Machines Corporation Distributed virtual machine image management for cloud computing
US20150052280A1 (en) 2013-08-19 2015-02-19 Emulex Design & Manufacturing Corporation Method and system for communications-stack offload to a hardware controller
US9152593B2 (en) 2013-09-06 2015-10-06 Cisco Technology, Inc. Universal PCI express port
US10341296B2 (en) 2013-09-13 2019-07-02 Vmware, Inc. Firewall configured with dynamic collaboration from network services in a virtual network environment
US10193771B2 (en) 2013-12-09 2019-01-29 Nicira, Inc. Detecting and handling elephant flows
US9124536B2 (en) 2013-12-12 2015-09-01 International Business Machines Corporation Managing data flows in overlay networks
US11075948B2 (en) 2014-01-10 2021-07-27 Arista Networks, Inc. Method and system for virtual machine aware policy management
US9652247B2 (en) 2014-01-24 2017-05-16 Nec Corporation Capturing snapshots of offload applications on many-core coprocessors
US10164905B2 (en) 2014-02-06 2018-12-25 Mellanox Technologies, Ltd. Efficient management of network traffic in a multi-CPU server
US9215213B2 (en) 2014-02-20 2015-12-15 Nicira, Inc. Method and apparatus for distributing firewall rules
JP6217839B2 (ja) 2014-03-04 2017-10-25 日本電気株式会社 パケット処理装置、パケット処理方法およびプログラム
US9384033B2 (en) 2014-03-11 2016-07-05 Vmware, Inc. Large receive offload for virtual machines
US9696942B2 (en) 2014-03-17 2017-07-04 Mellanox Technologies, Ltd. Accessing remote storage devices using a local bus protocol
US9215210B2 (en) 2014-03-31 2015-12-15 Nicira, Inc. Migrating firewall connection state for a firewall service virtual machine
US9906494B2 (en) 2014-03-31 2018-02-27 Nicira, Inc. Configuring interactions with a firewall service virtual machine
US9529773B2 (en) 2014-05-02 2016-12-27 Cavium, Inc. Systems and methods for enabling access to extensible remote storage over a network as local storage via a logical storage controller
US9674147B2 (en) 2014-05-06 2017-06-06 At&T Intellectual Property I, L.P. Methods and apparatus to provide a distributed firewall in a network
US9594634B2 (en) 2014-06-02 2017-03-14 Intel Corporation Techniques to efficiently compute erasure codes having positive and negative coefficient exponents to permit data recovery from more than two failed storage units
US9729512B2 (en) * 2014-06-04 2017-08-08 Nicira, Inc. Use of stateless marking to speed up stateful firewall rule processing
US9825913B2 (en) * 2014-06-04 2017-11-21 Nicira, Inc. Use of stateless marking to speed up stateful firewall rule processing
CN111669362B (zh) * 2014-06-09 2022-04-08 华为技术有限公司 信息处理方法、网络节点、验证方法和服务器
WO2015199719A1 (en) 2014-06-27 2015-12-30 Hewlett Packard Enterprise Development L.P. Security policy based on risk
WO2016003489A1 (en) 2014-06-30 2016-01-07 Nicira, Inc. Methods and systems to offload overlay network packet encapsulation to hardware
US9692698B2 (en) 2014-06-30 2017-06-27 Nicira, Inc. Methods and systems to offload overlay network packet encapsulation to hardware
US9419897B2 (en) 2014-06-30 2016-08-16 Nicira, Inc. Methods and systems for providing multi-tenancy support for Single Root I/O Virtualization
US9832168B2 (en) 2014-07-01 2017-11-28 Cable Television Laboratories, Inc. Service discovery within multi-link networks
EP3189623A4 (en) 2014-09-05 2018-05-09 Hewlett-Packard Enterprise Development LP Firewall port access rule generation
US9483187B2 (en) 2014-09-30 2016-11-01 Nimble Storage, Inc. Quality of service implementation in a networked storage system with hierarchical schedulers
US9692727B2 (en) 2014-12-02 2017-06-27 Nicira, Inc. Context-aware distributed firewall
US20160162302A1 (en) 2014-12-07 2016-06-09 Strato Scale Ltd. Fast initiation of workloads using memory-resident post-boot snapshots
US9672070B2 (en) 2014-12-17 2017-06-06 International Business Machines Corporation Efficient validation of resource access consistency for a set of virtual devices
US9699060B2 (en) 2014-12-17 2017-07-04 Vmware, Inc. Specializing virtual network device processing to avoid interrupt processing for high packet rate applications
US10445123B2 (en) 2015-01-19 2019-10-15 Vmware, Inc. Hypervisor exchange with virtual-machine consolidation
US20160239330A1 (en) 2015-02-12 2016-08-18 Alcatel-Lucent Usa Inc. Dynamic Reconfiguration Of Resources In A Virtualized Network
US9756015B2 (en) 2015-03-27 2017-09-05 International Business Machines Corporation Creating network isolation between virtual machines
US9380027B1 (en) 2015-03-30 2016-06-28 Varmour Networks, Inc. Conditional declarative policies
US9525697B2 (en) 2015-04-02 2016-12-20 Varmour Networks, Inc. Delivering security functions to distributed networks
US9680706B2 (en) 2015-06-30 2017-06-13 Nicira, Inc. Federated firewall management for moving workload across data centers
US9787641B2 (en) 2015-06-30 2017-10-10 Nicira, Inc. Firewall rule management
US10025740B2 (en) 2015-09-14 2018-07-17 Cavium, Inc. Systems and methods for offloading link aggregation to a host bus adapter (HBA) in single root I/O virtualization (SRIOV) mode
US10162793B1 (en) 2015-09-29 2018-12-25 Amazon Technologies, Inc. Storage adapter device for communicating with network storage
US9756407B2 (en) 2015-10-01 2017-09-05 Alcatel-Lucent Usa Inc. Network employing multi-endpoint optical transceivers
US10333897B2 (en) 2015-10-23 2019-06-25 Attala Systems Corporation Distributed firewalls and virtual network services using network packets with security tags
US9967288B2 (en) 2015-11-05 2018-05-08 International Business Machines Corporation Providing a common security policy for a heterogeneous computer architecture environment
JP2017108231A (ja) * 2015-12-08 2017-06-15 富士通株式会社 通信制御プログラム、通信制御方法及び情報処理装置
US10069859B2 (en) 2015-12-16 2018-09-04 Verizon Digital Media Services Inc. Distributed rate limiting
US10037424B1 (en) 2015-12-22 2018-07-31 Amazon Technologies, Inc. Isolated virtual environments for untrusted applications
EP3386157B1 (en) * 2015-12-30 2020-03-04 Huawei Technologies Co., Ltd. Packet transmission method, device and system
JP6549996B2 (ja) 2016-01-27 2019-07-24 アラクサラネットワークス株式会社 ネットワーク装置、通信方法、及び、ネットワークシステム
US11038845B2 (en) 2016-02-23 2021-06-15 Nicira, Inc. Firewall in a virtualized computing environment using physical network interface controller (PNIC) level firewall rules
US10873566B2 (en) 2016-02-23 2020-12-22 Nicira, Inc. Distributed firewall in a virtualized computing environment
US9916269B1 (en) 2016-04-14 2018-03-13 Amazon Technologies, Inc. Packet queueing for network device
US20180024964A1 (en) 2016-07-19 2018-01-25 Pure Storage, Inc. Disaggregated compute resources and storage resources in a storage system
US20180032249A1 (en) 2016-07-26 2018-02-01 Microsoft Technology Licensing, Llc Hardware to make remote storage access appear as local in a virtualized environment
CN107733670B (zh) * 2016-08-11 2020-05-12 新华三技术有限公司 一种转发策略配置方法和装置
US20180088978A1 (en) 2016-09-29 2018-03-29 Intel Corporation Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container
US10545861B2 (en) 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US20180109471A1 (en) * 2016-10-13 2018-04-19 Alcatel-Lucent Usa Inc. Generalized packet processing offload in a datacenter
SG11201800020UA (en) 2016-11-09 2018-06-28 Huawei Tech Co Ltd Packet processing method in cloud computing system, host, and system
US20180150256A1 (en) 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10503427B2 (en) 2017-03-10 2019-12-10 Pure Storage, Inc. Synchronously replicating datasets and other managed objects to cloud-based storage systems
US10516728B2 (en) * 2017-03-10 2019-12-24 Microsoft Technology Licensing, Llc Virtual filtering platform in distributed computing systems
US10050884B1 (en) 2017-03-21 2018-08-14 Citrix Systems, Inc. Method to remap high priority connection with large congestion window to high latency link to achieve better performance
TWI647934B (zh) * 2017-04-21 2019-01-11 思銳科技股份有限公司 網路拓樸實機模擬方法與系統
US11146508B2 (en) 2017-05-12 2021-10-12 Xilinx, Inc. Data processing system
US11093284B2 (en) 2017-05-12 2021-08-17 Xilinx, Inc. Data processing system
US10958729B2 (en) 2017-05-18 2021-03-23 Intel Corporation Non-volatile memory express over fabric (NVMeOF) using volume management device
CN108984312B (zh) 2017-06-02 2022-03-25 伊姆西Ip控股有限责任公司 数据读写的方法和设备
US10225233B2 (en) 2017-06-07 2019-03-05 Nicira, Inc. Media access control (MAC) address learning in virtualized computing environments
US10976962B2 (en) 2018-03-15 2021-04-13 Pure Storage, Inc. Servicing I/O operations in a cloud-based storage system
US20190044809A1 (en) * 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
AU2018340854B2 (en) 2017-09-27 2023-02-16 Canopus Networks Assets Pty Ltd Process and apparatus for identifying and classifying video-data
US11108751B2 (en) 2017-10-27 2021-08-31 Nicira, Inc. Segmentation of encrypted segments in networks
TWI654857B (zh) 2017-12-25 2019-03-21 中華電信股份有限公司 用於流量交換之緩衝排程方法
US10740181B2 (en) 2018-03-06 2020-08-11 Western Digital Technologies, Inc. Failed storage device rebuild method
US10728172B2 (en) 2018-03-28 2020-07-28 Quanta Computer Inc. Method and system for allocating system resources
US11509606B2 (en) 2018-06-29 2022-11-22 Intel Corporation Offload of storage node scale-out management to a smart network interface controller
US10445272B2 (en) 2018-07-05 2019-10-15 Intel Corporation Network function virtualization architecture with device isolation
US10785161B2 (en) * 2018-07-10 2020-09-22 Cisco Technology, Inc. Automatic rate limiting based on explicit network congestion notification in smart network interface card
US10531592B1 (en) 2018-07-19 2020-01-07 Quanta Computer Inc. Smart rack architecture for diskless computer system
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US10795612B2 (en) 2018-07-31 2020-10-06 EMC IP Holding Company LLC Offload processing using storage device slots
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US11483245B2 (en) 2018-09-13 2022-10-25 Intel Corporation Technologies for filtering network traffic on ingress
US11489791B2 (en) 2018-10-31 2022-11-01 Intel Corporation Virtual switch scaling for networking applications
US10880210B2 (en) 2018-12-26 2020-12-29 Juniper Networks, Inc. Cloud network having multiple protocols using virtualization overlays across physical and virtualized workloads
US11385981B1 (en) 2018-12-28 2022-07-12 Virtuozzo International Gmbh System and method for deploying servers in a distributed storage to improve fault tolerance
US10567308B1 (en) * 2019-01-28 2020-02-18 Dell Products L.P. Virtual machine virtual fabric login system
US11150963B2 (en) 2019-02-28 2021-10-19 Cisco Technology, Inc. Remote smart NIC-based service acceleration
US20200133909A1 (en) 2019-03-04 2020-04-30 Intel Corporation Writes to multiple memory destinations
US11943340B2 (en) 2019-04-19 2024-03-26 Intel Corporation Process-to-process secure data movement in network functions virtualization infrastructures
US10999084B2 (en) 2019-05-31 2021-05-04 Microsoft Technology Licensing, Llc Leveraging remote direct memory access (RDMA) for packet capture
US11010103B2 (en) 2019-06-20 2021-05-18 Western Digital Technologies, Inc. Distributed batch processing of non-uniform data objects
US11916800B2 (en) 2019-06-28 2024-02-27 Intel Corporation Dynamic virtual cut-through and dynamic fabric bandwidth allocation between virtual cut-through and store-and-forward traffic
US11494210B2 (en) 2019-07-25 2022-11-08 EMC IP Holding Company LLC Maintaining management communications across virtual storage processors
US11420117B2 (en) 2019-08-09 2022-08-23 Sony Interactive Entertainment LLC Methods implementing doorbell register/file identification table with high-speed data communication fabric for cloud gaming data storage and retrieval
US11159453B2 (en) 2019-08-22 2021-10-26 International Business Machines Corporation Fabric-based storage-server connection
LU101361B1 (en) 2019-08-26 2021-03-11 Microsoft Technology Licensing Llc Computer device including nested network interface controller switches
US11714763B2 (en) 2019-10-16 2023-08-01 Intel Corporation Configuration interface to offload capabilities to a network interface
US11438229B2 (en) 2020-01-16 2022-09-06 Dell Products L.P. Systems and methods for operating system deployment and lifecycle management of a smart network interface card
US11962501B2 (en) * 2020-02-25 2024-04-16 Sunder Networks Corporation Extensible control plane for network management in a virtual infrastructure environment
US11941458B2 (en) 2020-03-10 2024-03-26 Sk Hynix Nand Product Solutions Corp. Maintaining storage namespace identifiers for live virtualized execution environment migration
US11343152B2 (en) 2020-04-07 2022-05-24 Cisco Technology, Inc. Traffic management for smart network interface cards
US11740919B2 (en) 2020-05-18 2023-08-29 Dell Products L.P. System and method for hardware offloading of nested virtual switches
US11689455B2 (en) * 2020-05-28 2023-06-27 Oracle International Corporation Loop prevention in virtual layer 2 networks
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
US20200319812A1 (en) 2020-06-03 2020-10-08 Intel Corporation Intermediary for storage command transfers
US20200314011A1 (en) 2020-06-16 2020-10-01 Manasi Deval Flexible scheme for adding rules to a nic pipeline
US20200328192A1 (en) 2020-06-26 2020-10-15 Intel Corporation Stacked die network interface controller circuitry
US11374858B2 (en) 2020-06-30 2022-06-28 Pensando Systems, Inc. Methods and systems for directing traffic flows based on traffic flow classifications
US11733907B2 (en) 2020-08-05 2023-08-22 EMC IP Holding Company LLC Optimize recovery time objective and costs of cloud based recovery
US10997106B1 (en) * 2020-09-22 2021-05-04 Pensando Sytems Inc. Inter-smartNIC virtual-link for control and datapath connectivity
US11221972B1 (en) 2020-09-23 2022-01-11 Pensando Systems, Inc. Methods and systems for increasing fairness for small vs large NVMe IO commands
US20220100432A1 (en) 2020-09-28 2022-03-31 Vmware, Inc. Distributed storage services supported by a nic
US12021759B2 (en) 2020-09-28 2024-06-25 VMware LLC Packet processing with hardware offload units
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US11792134B2 (en) 2020-09-28 2023-10-17 Vmware, Inc. Configuring PNIC to perform flow processing offload using virtual port identifiers
US20220100491A1 (en) 2020-09-28 2022-03-31 Vmware, Inc. Integrated installation of resource sharing software on computer and connected network interface card
CN116348841A (zh) 2020-09-28 2023-06-27 Vm维尔股份有限公司 Nic支持的分布式存储服务
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US20220164451A1 (en) 2020-11-23 2022-05-26 Verizon Patent And Licensing Inc. Smart network interface card-based inline secure communication service
US20210194828A1 (en) * 2020-12-07 2021-06-24 Intel Corporation Architecture for smart switch centered next generation cloud infrastructure
US11645104B2 (en) 2020-12-22 2023-05-09 Reliance Jio Infocomm Usa, Inc. Intelligent data plane acceleration by offloading to distributed smart network interfaces
US20220206908A1 (en) 2020-12-30 2022-06-30 Oracle International Corporation Techniques for replicating state information for high availability
US11445028B2 (en) 2020-12-30 2022-09-13 Dell Products L.P. System and method for providing secure console access with multiple smart NICs using NC-SL and SPDM
US11552904B2 (en) 2021-01-19 2023-01-10 Reliance Jio Infocomm Usa, Inc. Architecture for high performing data plane applications with smart network interface on compute servers
US20210232528A1 (en) 2021-03-22 2021-07-29 Intel Corporation Configurable device interface
US11640363B2 (en) 2021-07-01 2023-05-02 Dell Products L.P. Managing a smart network interface controller (NIC) of an information handling system
US20220351326A1 (en) 2021-07-06 2022-11-03 Intel Corporation Direct memory writes by network interface of a graphics processing unit
US11757796B2 (en) 2021-09-29 2023-09-12 Mellanox Technologies, Ltd. Zero-copy processing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015515798A (ja) 2012-03-21 2015-05-28 マイクロソフト コーポレーション ネットワーキング・デバイスの仮想化のためのパケット処理のオフロード
JP2015039166A (ja) 2013-07-25 2015-02-26 カビウム・インコーポレーテッド 仮想スイッチを有するネットワークインタフェースカードおよびトラフィックフローポリシの適用
JP2017147597A (ja) 2016-02-17 2017-08-24 株式会社Nttドコモ 通信装置、経路管理サーバ、通信方法、および仮想ポート割当方法
JP2019161319A (ja) 2018-03-08 2019-09-19 富士通株式会社 情報処理装置、情報処理システム及びプログラム

Also Published As

Publication number Publication date
CA3180645A1 (en) 2022-03-31
EP4127953A1 (en) 2023-02-08
US20230396563A1 (en) 2023-12-07
US11606310B2 (en) 2023-03-14
CN116171565A (zh) 2023-05-26
US11792134B2 (en) 2023-10-17
AU2021349770B2 (en) 2023-11-23
US20220103487A1 (en) 2022-03-31
WO2022066267A1 (en) 2022-03-31
AU2021349770A1 (en) 2023-04-20
JP2023530564A (ja) 2023-07-19
US20220103478A1 (en) 2022-03-31

Similar Documents

Publication Publication Date Title
JP7475491B2 (ja) 仮想ポート識別子を使用するフロー処理オフロード
JP7417816B2 (ja) ゲストvmモビリティを使用したサービスの提供
US10911360B2 (en) Anycast edge service gateways
US11108593B2 (en) Methods and systems to offload overlay network packet encapsulation to hardware
US20200396206A1 (en) Implementing logical network security on a hardware switch
US9590907B2 (en) Service chaining in a cloud environment using software defined networking
EP3228060B1 (en) Context-aware distributed firewall
US10992590B2 (en) Path maximum transmission unit (PMTU) discovery in software-defined networking (SDN) environments
CN114342342A (zh) 跨多个云的分布式服务链
US10887386B2 (en) Adaptive data mirroring in virtual networks
US20230179475A1 (en) Common connection tracker across multiple logical switches
US11936562B2 (en) Virtual machine packet processing offload
US10938594B1 (en) Transparent demilitarized zone providing stateful service between physical and logical networks
US10877822B1 (en) Zero-copy packet transmission between virtualized computing instances
US11606294B2 (en) Host computer configured to facilitate distributed SNAT service
CN115733782A (zh) 用于数据包处理操作的双用户空间-内核空间数据路径
CN114303343A (zh) 使用分布式边缘服务的流量优化

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230309

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221220

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20231128

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20231205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240305

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240319

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240416

R150 Certificate of patent or registration of utility model

Ref document number: 7475491

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150