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

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

▶ インテル・コーポレーションの特許一覧

特表2023-530064スイッチ管理したリソース割り当ておよびソフトウェア実行
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-07-13
(54)【発明の名称】スイッチ管理したリソース割り当ておよびソフトウェア実行
(51)【国際特許分類】
   H04L 45/586 20220101AFI20230706BHJP
   H04L 45/645 20220101ALI20230706BHJP
   H04L 45/76 20220101ALI20230706BHJP
【FI】
H04L45/586
H04L45/645
H04L45/76
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022568889
(86)(22)【出願日】2020-12-11
(85)【翻訳文提出日】2022-12-22
(86)【国際出願番号】 US2020064670
(87)【国際公開番号】W WO2021257111
(87)【国際公開日】2021-12-23
(31)【優先権主張番号】16/905,761
(32)【優先日】2020-06-18
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】コナー、パトリック
(72)【発明者】
【氏名】ハーン、ジェイムズ アール.
(72)【発明者】
【氏名】リートケ、ケビン
(72)【発明者】
【氏名】デューバル、スコット ピー.
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA03
5K030HA08
5K030HC13
5K030HD07
5K030KA01
5K030KA03
5K030KX11
5K030LB05
5K030LE03
5K030LE10
(57)【要約】
本明細書に記載される例は、2つ以上の物理サーバのラックのためのスイッチデバイスに関し、スイッチデバイスは、2つ以上の物理サーバに結合され、スイッチデバイスは、受信したパケットのパケットプロトコル処理終端を実行し、受信したパケットのヘッダを含まない受信したパケットからのペイロードデータをラック内の宛先物理サーバの宛先バッファに提供する。いくつかの例において、スイッチデバイスは少なくとも1つの中央処理ユニットを備え、少なくとも1つの中央処理ユニットは、受信したパケットに対してパケット処理動作を実行する。いくつかの例において、物理サーバが少なくとも1つの仮想化実行環境(VEE)を実行し、少なくとも1つの中央処理ユニットが、VEEを実行する物理サーバによってアクセスされるデータを含むパケットのパケット処理のためにVEEを実行する。
【特許請求の範囲】
【請求項1】
2つ以上の物理サーバのラックのためのスイッチデバイスにより、受信したパケットのパケットプロトコル処理終端を実行して、受信したパケットのヘッダを含まない前記受信したパケットからのペイロードデータを前記ラックにおける宛先物理サーバの宛先バッファに提供する段階であって、前記スイッチデバイスは、前記2つ以上の物理サーバに結合される、段階を備える、方法。
【請求項2】
前記スイッチデバイスが少なくとも1つの中央処理ユニットを備え、前記少なくとも1つの中央処理ユニットが、前記受信されたパケットに対してパケット処理動作を実行する、請求項1に記載の方法。
【請求項3】
物理サーバが、少なくとも1つの仮想化実行環境(VEE)を実行し、
前記少なくとも1つの中央処理ユニットが、前記少なくとも1つのVEEを実行する前記物理サーバによってアクセスされるデータを含むパケットのパケット処理ためのVEEを実行する、
請求項2に記載の方法。
【請求項4】
前記スイッチデバイスが、対応する宛先デバイスに対するメモリアドレスのマッピングを格納し、
前記ラックにおける物理サーバからのメモリトランザクションの受信に基づいて、前記スイッチデバイスが前記メモリトランザクションを実行する、
請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記スイッチデバイスが前記メモリトランザクションを実行することが、
読み取り要求の場合、前記スイッチデバイスが、前記マッピングに基づいて前記ラックに接続された物理サーバまたは異なるラックの別のデバイスからデータを取得し、前記データを前記スイッチデバイスによって管理されるメモリに格納することを含む、
請求項4に記載の方法。
【請求項6】
前記スイッチデバイスが、対応する宛先デバイスに対するメモリアドレスのマッピングを格納し、
前記ラックにおける物理サーバからのメモリトランザクションの受信に基づき、
前記マッピングに従って別のラックにおける宛先サーバに関連付けられているメモリトランザクションに関連付けられたメモリアドレスに基づいて、前記メモリトランザクションを前記宛先サーバに伝送し、
前記メモリトランザクションに対する応答を受信し、
前記ラックのメモリに前記応答を格納する、
請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記スイッチデバイスが少なくとも1つの中央処理ユニットを備え、前記少なくとも1つの中央処理ユニットが、前記ラックに関連付けられた1つまたは複数の物理サーバの制御プレーンを実行し、
前記制御プレーンが、前記1つまたは複数の物理サーバからテレメトリデータを収集し、前記テレメトリデータに基づいて、前記ラックの物理サーバに対する仮想化実行環境(VEE)の実行の割り当て、前記ラックの物理サーバから前記スイッチデバイスの少なくとも1つの中央処理ユニット上での実行へのVEEの移行、前記ラックの物理サーバから前記ラックの別の物理サーバ上での実行へのVEEの移行、または、前記ラックの物理サーバ上で実行するVEEによるアクセスのための前記ラックの物理サーバのメモリの割り当てのうちの1つまたは複数を実行する、
請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記スイッチデバイスが少なくとも1つの中央処理ユニットを含み、前記少なくとも1つの中央処理ユニットは、前記ラックの一部である1つまたは複数の物理サーバのための制御プレーンを実行し、
前記制御プレーンが、前記ラックの1つまたは複数の物理サーバ間で仮想化実行環境(VEE)の実行を分散させ、VEEを選択的に終端させるかまたはVEEを前記ラックの別の物理サーバ上もしくは前記スイッチデバイス上での実行に移行させる
請求項1から7のいずれか一項に記載の方法。
【請求項9】
少なくとも1つのプロセッサを含むスイッチであって、前記少なくとも1つのプロセッサは、受信したパケットのパケット終端処理を実行し、関連付けられた受信したパケットのヘッダを含まない、前記受信したパケットからのペイロードデータを、接続を通じて、宛先物理サーバの宛先バッファにコピーする、スイッチ
を備える装置。
【請求項10】
前記少なくとも1つのプロセッサが仮想化実行環境(VEE)を実行し、前記VEEが前記パケット終端処理を実行する、請求項9に記載の装置。
【請求項11】
前記接続を通じた物理サーバからのメモリトランザクションの受信に基づいて、前記少なくとも1つのプロセッサが、対応する宛先デバイスへのメモリアドレスのマッピングに基づく前記メモリトランザクションを実行する
請求項9または10に記載の装置。
【請求項12】
前記メモリトランザクションを実行するために、前記少なくとも1つのプロセッサが、
読み取り要求の場合、前記接続を通じて前記少なくとも1つのプロセッサまたは異なるラックの別のデバイスに接続された物理サーバからデータを取得し、前記少なくとも1つのプロセッサによって管理されるメモリに前記データを格納する
請求項11に記載の装置。
【請求項13】
前記スイッチに関連付けられたラック内の物理サーバからのメモリトランザクションの受信に基づき、
対応する宛先デバイスへのメモリアドレスの前記マッピングに従った、別のラックにおける宛先サーバに関連付けられている前記メモリトランザクションに関連付けられたメモリアドレスに基づいて、前記少なくとも1つのプロセッサが前記宛先サーバへの前記メモリトランザクションの伝送を実行し、
前記少なくとも1つのプロセッサが、前記メモリトランザクションに対する応答にアクセスし、かつ、
前記少なくとも1つのプロセッサが、前記ラックのメモリに前記応答を格納させる
請求項12に記載の装置。
【請求項14】
前記少なくとも1つのプロセッサが、前記スイッチに関連付けられたラックの一部である1つまたは複数の物理サーバの制御プレーンを実行し、
前記制御プレーンが、前記1つまたは複数の物理サーバからテレメトリデータを収集し、前記テレメトリデータに基づいて、前記ラックの物理サーバへの仮想化実行環境(VEE)の実行の割り当て、前記ラックの物理サーバから前記スイッチの前記少なくとも1つの中央処理ユニット上での実行へのVEEの移行、前記ラックの物理サーバから前記ラックの別の物理サーバ上での実行へのVEEの移行、または、前記ラックの物理サーバ上で実行しているVEEによるアクセスのための前記ラックのサーバのメモリの割り当てのうちの1つまたは複数を実行する
請求項9から13のいずれか一項に記載の装置。
【請求項15】
前記少なくとも1つのプロセッサが、前記スイッチに関連付けられたラックの一部である1つまたは複数の物理サーバのための制御プレーンを実行し、
前記制御プレーンが、前記ラックの1つまたは複数の物理サーバ間で仮想化実行環境(VEE)の実行を分散させ、VEEを選択的に終端させるかまたは前記ラックの別の物理サーバ上または前記スイッチの一部である少なくとも1つのプロセッサ上での実行へとVEEを移行させる
請求項9から14のいずれか一項に記載の装置。
【請求項16】
前記接続が、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、または任意のタイプのダブルデータレート(DDR)のうちの1つまたは複数と互換性がある、請求項9から15のいずれか一項に記載の装置。
【請求項17】
スイッチに、
前記スイッチにおいて制御プレーンを実行して、1つまたは複数の物理サーバからテレメトリデータを収集させ、前記テレメトリデータに基づいて、前記スイッチを含むラックの物理サーバへの仮想化実行環境(VEE)の実行の割り当て、前記ラックの物理サーバから前記スイッチの少なくとも1つの中央処理ユニット上での実行へのVEEの移行、前記ラックの物理サーバから前記ラックの別の物理サーバ上での実行へのVEEの移行、または、前記ラックの物理サーバ上で実行しているVEEによるアクセスのための前記ラックのサーバのメモリの割り当てのうちの1つまたは複数を実行させる
コンピュータプログラム。
【請求項18】
前記スイッチに、
対応する宛先デバイスへのメモリアドレスのマッピングを格納する手順と、
接続を通じた物理サーバからのメモリトランザクションの受信に基づき、かつ、対応する宛先デバイスへのメモリアドレスのマッピングに基づいて、前記接続を通じて前記スイッチに接続された物理サーバまたは異なるラックの別のデバイスからデータを取得し、前記スイッチによって管理されるメモリに前記データを格納する手順と
を実行させる請求項17に記載のコンピュータプログラム。
【請求項19】
前記スイッチに、
対応する宛先デバイスへのメモリアドレスのマッピングを格納する手順と、
前記スイッチに関連付けられたラックにおけるサーバからのメモリトランザクションの受信に基づき、
前記マッピングに従った別のラックにおける宛先サーバに関連付けられている前記メモリトランザクションに関連付けられたメモリアドレスに基づいて、前記宛先サーバへの前記メモリトランザクションの伝送を実行する手順と、
前記メモリトランザクションに対する応答を受信する手順と、
前記ラックのメモリに前記応答を格納する手順と
を実行させる請求項17または18に記載のコンピュータプログラム。
【請求項20】
前記スイッチと前記ラックの1つまたは複数の物理サーバとの間の接続が、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、または任意のタイプのダブルデータレート(DDR)のうちの1つまたは複数と互換性がある
請求項17から19のいずれか一項に記載のコンピュータプログラム。
【請求項21】
請求項17から20のいずれか一項に記載のコンピュータプログラムを格納しているコンピュータ可読記憶媒体。
【請求項22】
ネットワークデバイスであって、
受信したパケットのネットワークプロトコル終端を実行する回路と、
少なくとも1つのイーサネットポートと、
ラック内の異なる物理サーバに接続される複数の接続とを備え、受信したパケットのネットワークプロトコル終端を実行する前記回路が、関連付けられたヘッダを含まない受信したパケットのペイロードを物理サーバに提供する
ネットワークデバイス。
【請求項23】
前記回路が、対応する宛先デバイスへのメモリアドレスのマッピングを格納し、前記ラック内の物理サーバからのメモリトランザクションの受信に基づいて、前記回路が前記メモリトランザクションを実行する
請求項22に記載のネットワークデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
[優先権の主張]
本願は、米国特許法365条(c)の下で、2020年6月18日に出願された、「SWITCH-MANAGED RESOURCE ALLOCATION AND SOFTWARE EXECUTION」と題された米国出願第16/905,761の優先権を主張し、これはその全体が本明細書に組み込まれている。
【背景技術】
【0002】
クラウドコンピューティングのコンテキストでは、クラウドサービスプロバイダ(CSP)は、サービスとしてのインフラストラクチャ(IaaS)、サービスとしてのソフトウェア(SaaS)、またはサービスとしてのプラットフォーム(PaaS)などの使用のための様々なサービスを他の企業または個人に提供する。コンピュート、メモリ、ストレージ、アクセラレータ、ネットワークなどを含むハードウェアインフラストラクチャは、CSPおよびその顧客によって提供されるソフトウェアスタックを実行およびサポートする。
【0003】
CSPは、パケットが解析され、カプセル化解除され、復号され、適切な仮想マシン(VM)に送信される、複雑なネットワーキング環境の経験を有し得る。いくつかの場合では、サービスレベル合意(SLA)要件を実現するためにパケットフローが均衡され、計量される。いくつかの場合では、データセンタ内のサーバにおいてネットワーク処理が行われる。しかしながら、パケット量の増大ならびにパケット処理アクティビティの量および複雑性の増大により、サーバへの負荷が高まっている。パケット処理のために中央処理ユニット(CPU)または他のサーバプロセッサリソースが使用されるが、CPUおよび他のプロセッサリソースは、支払い請求できるかまたはパケット処理よりも高い収益を生み出す他のサービスに使用することができる。この問題の影響は、100Gbpsおよびより高速のネットワークなどの高いビットレートのネットワークデバイスを使用する場合に著しく増大する。
【図面の簡単な説明】
【0004】
図1A】例示的なスイッチシステムを示す。
図1B】例示的なスイッチシステムを示す。
図1C】例示的なスイッチシステムを示す。
図1D】例示的なスイッチシステムを示す。
【0005】
図2A】ラック内のリソースを管理するシステムの例示的な概観を示す。
【0006】
図2B】様々な管理階層の例示的な概観を示す。
【0007】
図3】スイッチがメモリアクセス要求に応答することができる例示的なシステムを示す。
【0008】
図4A】サーバ上で、およびスイッチにおいて実行するMemcachedサーバの例を示す。
【0009】
図4B】単一の要求のためのイーサネット(登録商標)パケットフローを示す。
【0010】
図5A】パケットがスイッチにおいて終端し得る例示的なシステムを示す。
図5B】パケットがスイッチにおいて終端し得る例示的なシステムを示す。
図5C】パケットがスイッチにおいて終端し得る例示的なシステムを示す。
【0011】
図6】オーケストレーション制御プレーンを実行して、どのデバイスが仮想化実行環境を実行するかを管理するスイッチの一例を示す。
【0012】
図7A】サーバから別のサーバへの仮想化実行環境の移行の一例を示す。
【0013】
図7B】仮想化実行環境の移行の一例を示す。
【0014】
図8A】例示的なプロセスを示す。
図8B】例示的なプロセスを示す。
図8C】例示的なプロセスを示す。
【0015】
図9】システムを示す。
【0016】
図10】環境を示す。
【0017】
図11】例示的なネットワーク要素を示す。
【発明を実施するための形態】
【0018】
データセンタ内で、南北トラフィック(north-south traffic)はデータセンタの内外に流れるパケットを含み得る一方、東西トラフィック(east-west traffic)はデータセンタ内のノード(例えば、サーバのラック)間を流れるパケットを含み得る。南北トラフィックは顧客に顧客提供するためのプロダクトと見なされ得る一方、東西トラフィックはオーバヘッドと見なされ得る。東西トラフィック量は、南北トラフィックよりも著しく高いレートで増大しており、データセンタの総保有コスト(TCO)を低減しながら、適用可能なSLAに準拠するために東西トラフィックフローをタイムリーに処理することはデータセンタ内で増大する課題である。
【0019】
データセンタ内でより速いトラフィックレートを提供するためにデータセンタ内でネットワークスピードを高める(例えば、100Gbpsイーサネット以上)は、トラフィック増大に対処する様式である。しかしながら、ネットワークスピードの増大は、さらにより多くのパケット処理アクティビティを伴う可能性があり、これは、そうでなければ他のタスクに使用され得るプロセッサリソースを使用する。
【0020】
いくつかの解決手段は、専用ハードウェアを含むネットワークコントローラハードウェアにタスクをオフロードすることによって、CPU利用を低減させ、パケット処理を加速させる。しかしながら、専用ハードウェアは現在のワークロードに限定されており、将来の異なるワークロードまたはパケット処理アクティビティに対応する柔軟性を有しない場合がある。
【0021】
いくつかの解決手段は、プロトコルの簡略化を通じてパケット処理のオーバヘッドを低減しようとするが、依然として、パケット処理を実行するために著しいCPU利用率を使用する。
【0022】
システム概要様々な実施形態は、サーバプロセッサ利用の低減する試み、および、十分に速いパケット処理を提供しながらデータセンタ内の東西トラフィックの増大を低減または制御する試みを提供する。様々な実施形態は、1つまたは複数のCPUまたは他のアクセラレータデバイスを包括的に含む、インフラストラクチャオフロード機能を有するスイッチを提供する。様々な実施形態は、スイッチがパケット処理またはネットワーク終端を実行し、他のタスクを実行するためにサーバCPUを空けることを可能にするために特定のパケット処理ネットワークインタフェースカード(NIC)機能を有するスイッチを提供する。スイッチは、サーバクラスプロセッサ、スイッチブロック、アクセラレータ、オフロードエンジン、三値連想メモリ(TCAM)、およびパケット処理パイプラインを含み得る、またはそれらにアクセスし得る。パケット処理パイプラインは、P4または他のプログラミング言語によってプログラマブルであり得る。スイッチは、様々な接続を使用して1つまたは複数のCPUまたはホストサーバに接続され得る。例えば、ダイレクトアタッチ銅(DAC)、光ファイバケーブル、または他のケーブルを使用して、スイッチを1つまたは複数のCPU、計算ホスト、ラック内のサーバを含むサーバにスイッチを接続することができる。いくつかの例において、ビットエラーレート(BER)を低減するために、接続の長さは6フィート(約1.8メートル)未満であってよい。スイッチへの言及は、複数の接続されたスイッチまたは分散したスイッチを指す場合があり、ラックは、ラックを2つの半ラックに、またはポッド(例えば、1つまたは複数のラック)に論理的に分割する複数のスイッチを含み得ることに留意されたい。
【0023】
ラックスイッチの様々な実施形態は、(1)高速接続による、パケット伝送レート、応答レイテンシ、キャッシュミス、仮想化実行環境要求などのテレメトリ集約、(2)少なくともテレメトリに基づく、スイッチに接続されたサーバリソースのオーケストレーション、(3)少なくともテレメトリに基づく、様々なサーバ上で実行している仮想実行環境のオーケストレーション、(4)ネットワーク終端およびプロトコル処理、(5)メモリトランザクションに関連付けられたデータを取得し、リクエスタにデータを提供する、または、メモリトランザクションに関連付けられたデータを取得することができるターゲットにメモリトランザクションを転送することによるメモリトランザクションの完了、(6)ラックまたはラックのグループ内の1つまたは複数のサーバによるアクセスのためのデータのキャッシュ、(7)スイッチにおけるMemcachedリソースの管理、(8)パケット処理(例えば、適用可能なプロトコルに従ったヘッダ処理)を実行するための1つまたは複数の仮想化実行環境の実行、(9)負荷バランシングまたは冗長性のためのスイッチもしくはサーバまたはその両方における仮想化実行環境実行の管理、あるいは(10)スイッチとサーバとの間、またはサーバからサーバへの仮想化実行環境の移行のうちの1つまたは複数を実行するように構成され得る。したがって、ラックスイッチの動作への向上により、支払い請求できるまたは価値を付加したサービスのための使用のためにサーバCPUサイクルを空けることができる。
【0024】
様々な実施形態は、サーバの代わりにスイッチにおいてネットワーク処理を終端させることができる。例えば、スイッチはプロトコル終端、復号、カプセル化解除、受信確認(ACK)、完全性チェックを実行することができ、ネットワーク関連タスクは、サーバにより対応されるのではなく、スイッチによって実行され得る。スイッチは、既知のプロトコルまたは計算用の専用オフロードエンジンを含み得、ソフトウェアまたはフィールドプログラマブルゲート(FPGA)を介して新たなプロトコルまたはベンダ固有のプロトコルを処理して将来のニーズを柔軟にサポートするように拡張可能またはプログラム可能であり得る。
【0025】
スイッチにおけるネットワーク終端により、サービス機能チェーン処理のために潜在的に異なるサーバ、またはさらには異なるラック上にある複数のVEEによる処理のためのデータの転送が低減または排除され得る。スイッチはネットワーク処理を実行し、処理の後に、得られたデータをラック内の宛先サーバに提供することができる。
【0026】
いくつかの例において、スイッチは、サーバがターゲットデバイスを決定してサーバがメモリ入力/出力(I/O)要求を別のサーバまたはターゲットデバイスに伝送するためにI/O要求をサーバに向ける代わりに、I/O要求をターゲットデバイスに向けることによって、メモリI/O要求を管理することができる。サーバは、メモリプール、ストレージプールまたはサーバ、計算サーバを含み得るか、または他のリソースを提供し得る。様々な実施形態は、サーバ1がメモリにアクセスするI/O要求を発行し、ニアメモリにサーバ2がアクセスし、ファーメモリにサーバ3がアクセスするシナリオ(例えば、2レベルメモリ(2LM)、メモリプーリング、またはシンメモリプロビジョニング)で使用され得る。例えば、スイッチは、システム2を対象にしたメモリへの読み取りまたは書き込みを要求するサーバ1から要求を受信することができる。スイッチは、要求によって参照されたメモリアドレスが、サーバ3に関連付けられたメモリ内にあることを識別するように構成され得、スイッチは、サーバ3に要求を伝送し得るサーバ2に要求を送信する代わりにサーバ3に要求を転送することができる。そのため、スイッチは、メモリトランザクションを完了するのにかかる時間を低減することができる。いくつかの例において、スイッチは、同じラック上のデータのキャッシュを実行して、データの次の要求の東西トラフィックを低減することができる。
【0027】
スイッチは、サーバ2およびサーバ3がメモリアドレスに関連付けられるデータのコヒーレンシまたは一貫性を維持することができるように、サーバ3のメモリへのアクセスが生じたことをサーバ2に通知し得ることに留意されたい。サーバ2がキャッシュラインを書き込みまたはダーティ(修正)キャッシュラインをポストした場合、コヒーレンシプロトコルおよび/または生産者消費者モデルを使用してサーバ2およびサーバ3に格納されたデータの一貫性を維持することができる。
【0028】
いくつかの例において、スイッチはオーケストレーション、ハイパーバイザ機能を実行し、ならびにサービスチェーン機能を管理することができる。スイッチは、ラックの集約されたリソースを単一の複合サーバとして提供するために、サーバのラック全体のプロセッサおよびメモリリソースおよび仮想実行環境(VEE)の実行のオーケストレーションを行うことができる。例えば、スイッチは、1つまたは複数のVEEによる実行のために、コンピュートスレッド、メモリスレッド、およびアクセラレータスレッドの使用を割り当てることができる。
【0029】
いくつかの例において、スイッチは、スイッチとサーバとの間の接続の長さを低減するために、接続されたサーバに対してトップオブラック(TOR)またはミドルオブラック(MOR)に位置付けられ得る。例えば、TORに(例えば、ラックのフロアから最も遠く)位置付けられたスイッチの場合、サーバは、サーバからラックスイッチへの銅ケーブルがラック内に収まるようにスイッチに接続する。スイッチは、ラックから集約領域まで延びる光ファイバケーブルを用いてラックをデータセンターネットワークにリンクすることができる。MORスイッチ位置の場合、スイッチは、ラックの底部とラックの上部との間のラックの中心に向けて位置付けられる。行の終わり(EOR)など、スイッチの他のラック位置を使用することができる。
【0030】
図1Aは、例示的なスイッチシステムを示す。スイッチ100は、ポート回路104-0~104-Nに通信可能に結合されたスイッチ回路102を含み得る、またはそれにアクセスし得る。ポート回路104-0~104-Nは、パケットを受信し、パケットをスイッチ回路102に提供することができる。ポート回路104-0~104-Nがイーサネット対応である場合、ポート回路104-0~104-Nは、物理層インタフェース(PHY)(例えば、物理媒体接続部(PMA)サブレイヤ、物理媒体依存(PMD)、前方誤り訂正(FEC)、および物理コーディングサブレイヤ(PCS))、メディアアクセスコントロール(MAC)エンコードまたはデコード、およびリコンシリエーションサブレイヤ(RS)を含み得る。光/電気信号インタフェースは、電気信号をネットワークポートに提供することができる。IEEE規格802.3cd-2018の付録136Cおよびその中の参考文献に記載される、スモールフォームファクタプラガブル(SFP)、クワッドスモールフォームファクタプラガブル(QSFP)、クワッドスモールフォームファクタプラガブルダブルデンシティ(QSFP-DD)、マイクロQSFP、またはOSFP(オクタルスモールフォーマットプラガブル)インタフェース、または他のフォームファクタなどの、標準的な機械および電気フォームファクタを使用してモジュールを構築することができる。
【0031】
パケットとは、本明細書では、ネットワークにわたって送信され得るビットの様々なフォーマット化された集合、例えば、イーサネットフレーム、IPパケット、TCPセグメント、UDPデータグラムなどを指すために使用され得る。また、本文書で使用される場合、L2、L3、L4、およびL7層(または層2、層3、層4、および層7)への言及は、それぞれ、OSI(開放型システム相互接続)層モデルの第2のデータリンク層、第3のネットワーク層、第4のトランスポート層、および第7のアプリケーション層への言及であり得る。
【0032】
フローは、2つのエンドポイント間で転送されるパケットのシーケンスであり得、これは概して、既知のプロトコルを使用した単一のセッションを表す。したがって、フローは、定義されたN個のタプルのセットによって識別され得、ルーティングの目的で、フローは、エンドポイント、例えば、ソースおよび宛先アドレスを識別するタプルによって識別され得る。コンテンツベースのサービス(例えば、ロードバランサ、ファイアウォール、命令検出システムなど)の場合、フローは、5つ以上のタプル(例えば、ソースアドレス、宛先アドレス、IPプロトコル、トランスポート層ソースポート、および宛先ポート)を使用することによって、より高い粒度で識別され得る。フロー内のパケットは、パケットヘッダ内にタプルの同じセットを有することが期待される。フローは、ユニキャスト、マルチキャスト、エニーキャスト、またはブロードキャストであり得る。
【0033】
スイッチ回路102は、複数のサーバへの接続性、複数のサーバからの接続性、および複数のサーバ間の接続性を提供することができ、トラフィック集約、およびルーティングのためのアクションテーブルの合致、トンネリング、バッファリング、VxLANルーティング、Network Virtualization using Generic Routing Encapsulation(NVGRE)、Generic Network Virtualization Encapsulation(Geneve)(例えば、現在ドラフトのInternet Engineering Task Force(IETF)規格)、およびアクセス制御リスト(ACL)のうちの1つまたは複数を実行して、パケットの進行を許可または抑制する。
【0034】
プロセッサ108-0~108-Mは、それぞれのインタフェース106-0~106-Mを介してスイッチ回路102に結合され得る。インタフェース106-0~106-Mは、低レイテンシ、高帯域幅メモリベースのインタフェース、例えば、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、メモリインタフェース(例えば、任意のタイプのダブルデータレート(DDRx)、CXL.io、CXL.キャッシュ、もしくはCXL.mem)、および/またはネットワーク接続(例えば、イーサネットもしくはインフィニバンド)を提供し得る。メモリインタフェースが使用される場合では、スイッチはメモリアドレスとして識別され得る。
【0035】
プロセッサモジュール108-0~108-Mのうちの1つまたは複数は、CPU、ランダムアクセスメモリ(RAM)、永続的または不揮発性のストレージ、アクセラレータを含むサーバを表し得、プロセッサモジュールはラック内の1つまたは複数のサーバであり得る。例えば、プロセッサモジュール108-0~108-Mは、接続を使用してスイッチ100に通信可能に結合された複数の別個の物理サーバを表し得る。物理サーバは、異なる物理CPUデバイス、ランダムアクセスメモリ(RAM)デバイス、永続的もしくは不揮発性のストレージデバイス、またはアクセラレータデバイスを提供することによって、別の物理サーバとは別個であり得る。しかしながら、別個の物理サーバは、同じ性能仕様を有するデバイスを含み得る。本明細書において使用される場合、サーバは、1つまたは複数の別個の物理サーバからのリソースを集約する物理サーバまたは複合サーバを指し得る。
【0036】
プロセッサモジュール108-0~108-Mおよびプロセッサ112-0または112-1は、1つまたは複数のコアとシステムエージェント回路とを含み得る。コアは、命令を実行することができる実行コアまたは計算エンジンであり得る。コアは、自身のキャッシュおよびリードオンリメモリ(ROM)にアクセスすることができ、あるいは、複数のコアがキャッシュまたはROMを共有することができる。コアは、同種のデバイス(例えば、同じ処理機能)の、および/または異種のデバイス(例えば、異なる処理機能)であり得る。コアの周波数または消費電力は調整可能であり得る。任意のタイプのプロセッサ間通信技術、例えば、限定はされないが、メッセージ、プロセッサ間割込み(IPI)、およびプロセッサ間通信などを使用することができる。コアは、限定はされないが、バス、リング、またはメッシュなどの任意のタイプの様式で接続されてよい。コアは、システムエージェント(アンコア)へのインターコネクトを介して結合され得る。
【0037】
システムエージェントは、任意のタイプのキャッシュ(例えば、レベル1、レベル2、またはラストレベルキャッシュ(LLC))を含み得る共有キャッシュを含み得る。システムエージェントは、メモリコントローラ、共有キャッシュ、キャッシュコヒーレンシマネージャ、算術論理ユニット、浮動小数点ユニット、コアもしくはプロセッサのインターコネクト、またはバスもしくはリンクのコントローラのうちの1つまたは複数を含み得る。システムエージェントまたはアンコアは、ダイレクトメモリアクセス(DMA)エンジン接続、非キャッシュコヒーレントマスタ接続、コア間のデータキャッシュコヒーレンシおよびキャッシュ要求の調整、またはアドバンスドマイクロコントローラバスアーキテクチャ(AMBA)機能のうちの1つまたは複数を提供し得る。システムエージェントまたはアンコアは、ファブリックおよびメモリコントローラの受信および伝送の優先度およびクロック速度を管理することができる。
【0038】
コアは、限定はされないが、Intelクイックパスインターコネクト(QPI)、Intelウルトラパスインターコネクト(UPI)、Intelオンチップシステムファブリック(IOSF)、オムニパス、コンピュートエクスプレスリンク(CXL)のいずれかと互換性を有する高速インターコネクトを使用して通信可能に接続され得る。コアタイルの数は本例に限定はされず、任意の数、例えば4および8などであり得る。
【0039】
本明細書でより詳細に説明されるように、オーケストレーション制御プレーン、Memcachedサーバ、1つまたは複数の仮想化実行環境(VEE)は、プロセッサモジュール108-0~108-Mのうちの1つまたは複数、またはプロセッサ112-0もしくは112-1上で実行され得る。
【0040】
VEEは、少なくとも、仮想マシンまたはコンテナを含み得る。仮想マシン(VM)は、オペレーティングシステムおよび1つまたは複数のアプリケーションを動作させるソフトウェアであり得る。VMは、仕様、構成ファイル、仮想ディスクファイル、不揮発性ランダムアクセスメモリ(NVRAM)設定ファイル、およびログファイルによって定義され得、ホストコンピューティングプラットフォームの物理リソースによってバックアップされる。VMは、専用ハードウェアを模倣する、ソフトウェア上にインストールされたOSまたはアプリケーション環境であり得る。エンドユーザは、専用ハードウェア上と同じ経験を仮想マシン上で有する。ハイパーバイザと呼ばれる専用ソフトウェアは、PCクライアントまたはサーバのCPU、メモリ、ハードディスク、ネットワークおよび他のハードウェアリソースを完全にエミュレートし、仮想マシンがリソースを共有することを可能にする。ハイパーバイザは、互いから分離された複数の仮想ハードウェアプラットフォームをエミュレートし得、仮想マシンにLinux(登録商標)およびWindows(登録商標)サーバオペレーティングシステムを同じ基礎となる物理ホスト上で動作させることを可能にする。
【0041】
コンテナは、アプリケーション、構成、および依存性のソフトウェアパッケージであり得、アプリケーションは、別のもの対してあるコンピューティング環境上で確実に動作する。コンテナは、サーバプラットフォームにインストールされたオペレーティングシステムを共有してよく、分離プロセスとして動作してよい。コンテナは、システムツール、ライブラリ、および設定など、ソフトウェアを動作させるのに必要なもの全てを含むソフトウェアパッケージであり得る。
【0042】
様々な実施形態は、アプリケーションまたはVEEがスイッチ100にアクセスするために、様々なオペレーティングシステム(例えば、VMWare(登録商標)、Linux(登録商標)、Windows(登録商標)サーバ、FreeBSD、Android(登録商標)、MacOS(登録商標)、iOS(登録商標)、または任意の他のオペレーティングシステム)のためのドライバソフトウェアを提供する。いくつかの例において、ドライバは、周辺デバイスとしてスイッチを提示し得る。いくつかの例において、ドライバは、ネットワークインタフェースコントローラまたはネットワークインタフェースカードとしてスイッチを提示し得る。例えば、ドライバは、PCIeエンドポイントとしてスイッチを構成するまたはそれにアクセスする能力を有するVEEを提供し得る。いくつかの例において、スイッチにアクセスするために、適応仮想機能(AVF)などの仮想機能ドライバが使用され得る。AVFの一例は、少なくとも、「Intel(登録商標)Ethernet(登録商標) Adaptive Virtual Function Specification」改訂版1.0(2018)に記載されている。いくつかの例において、VEEは、本明細書で説明されるスイッチに任意の機能をオンまたはオフにするようにドライバとやり取りすることができる。
【0043】
プロセッサモジュール108-0~108-M上で動作するデバイスドライバ(例えば、NDIS-Windows、NetDev-Linuxなど)は、スイッチ100に結合し、VEEにおいて実行されるホストオペレーティングシステム(OS)または任意のOSにスイッチ100の機能を提供することができる。アプリケーションまたはVEEは、SIOV、SR-IOV、MR-IOV、またはPCIeトランザクションを使用してスイッチ100を構成するまたはそれにアクセスすることができる。PCIeエンドポイントをインタフェーススイッチ100として組み込むことによって、ローカルに取り付けられたイーサネットデバイスとしてのPCIeイーサネットデバイスまたはCXLデバイスとしてプロセッサモジュール108-0~108-Mのいずれかの上でスイッチ100を列挙することができる。例えば、スイッチ100は、任意のサーバ(例えば、プロセッサモジュール108-0~108-Mのいずれか)に対して物理機能(PF)として提示され得る。スイッチ100のリソース(例えば、メモリ、アクセラレータ、ネットワーク、CPU)がサーバに割り当てられる場合、リソースは、高速リンク(例えば、CXLまたはPCIe)を介して取り付けられたかのようにサーバには論理的に見えるであろう。サーバは、活線挿入されたリソースとしてリソース(例えば、メモリまたはアクセラレータ)にアクセスし得る。代替的に、これらのリソースは、サーバが現在利用可能なプールされたリソースとして見え得る。
【0044】
いくつかの例において、プロセッサモジュール108-0~108-Mおよびスイッチ100は、シングルルートI/O仮想化(SR-IOV)の使用をサポートし得る。PCI-SIG Single Root IO Virtualization and Sharing Specification v1.1およびその前身および後継のバージョンは、ハイパーバイザまたはゲストオペレーティングシステムには複数の別個の物理デバイスとして現れる単一のルートポートの下での単一のPCIe物理デバイスの使用を記載している。SR-IOVは、物理機能(PF)および仮想機能(VF)を使用して、SR-IOVデバイスの全体機能を管理する。PFは、SR-IOV機能を構成および管理することができるPCIe機能であり得る。例えば、PFは、PCIeデバイスを構成または制御することができ、PFは、PCIeデバイスの内外にデータを移動させる能力を有する。例えば、スイッチ100の場合、PFは、SR-IOVをサポートするスイッチ100のPCIe機能である。PFは、仮想化を可能にすることおよびPCIe VFの管理など、スイッチ100のSR-IOV機能を構成および管理する機能を含む。VFは、スイッチ100上でPCIe PFに関連付けられ、VFは、スイッチ100の仮想化インスタンスを表す。VFは、それ自体のPCIe構成空間を有し得るが、外部ネットワークポートなどの、スイッチ100上の1つまたは複数の物理リソースをPFおよび他のPFまたは他のVFと共有し得る。他の例において、任意のサーバ(例えば、プロセッサモジュール108-0~108-M)がPFとして表され、スイッチ100上で実行するVEEがVFを利用して任意のサーバを構成するまたはそれにアクセスするという、逆の関係が用いられ得る。
【0045】
いくつかの例において、プラットフォーム1900およびNIC1950は、マルチルートIOV(MR-IOV)を使用してやり取りすることができる。PCI Special Interest Group(SIG)からのMultiple Root I/O Virtualization(MR-IOV)and Sharing Specification改訂版1.0(2008年5月12日)は、複数のコンピュータ間でPCIエクスプレス(PCIe)デバイスを共有するための仕様である。
【0046】
いくつかの例において、プロセッサモジュール108-0~108-Mおよびスイッチ100は、Intel(登録商標)スケーラブルI/O仮想化(SIOV)の使用をサポートし得る。例えば、プロセッサモジュール108-0~108-MはSIOV対応デバイスとしてスイッチ100にアクセスし得るか、または、スイッチ100は、SIOV対応デバイスとしてプロセッサモジュール108-0~108-Mにアクセスし得る。SIOV対応デバイスは、複数の分離されたアサイナブルデバイスインタフェース(ADI)にそのリソースをグループ化するように構成され得る。各ADIから/へのダイレクトメモリアクセス(DMA)の転送には、固有のプロセスアドレス空間識別子(PASID)番号がタグ付けされる。スイッチ100、プロセッサモジュール108-0~108-M、ネットワークコントローラ、ストレージコントローラ、グラフィックス処理ユニット、および他のハードウェアアクセラレータは、多くの仮想化実行環境にわたってSIOVを利用することができる。PF上に複数のVFを生成するためのSR-IOVの粗いデバイス分割手法とは異なり、SIOVは、ソフトウェアが、高い粒度でのデバイス共有のためのハードウェア補助を利用して仮想デバイスを柔軟に構成することを可能にする。構成された仮想デバイスに対する性能重視の動作は基礎となるデバイスハードウェアに直接マッピングされ、一方で、重視しない動作は、ホストにおいてデバイス固有合成ソフトウェアを通じてエミュレートされる。SIOVの技術仕様書は、Intel(登録商標)スケーラブルI/O仮想化技術仕様書、改訂版1.0(2018年6月)である。
【0047】
ラック内の一部または全部のサーバリソースへのアクセスがスイッチ100に付与されるマルチテナントセキュリティが用いられ得る。スイッチ100による任意のサーバへのアクセスは、暗号鍵、チェックサム、または他の完全性チェックの使用を必要とし得る。任意のサーバは、スイッチ100からの通信が許可されていることを保証するために、アクセス制御リスト(ACL)を用い得るが、他のソースからの通信をフィルタリングして除く(例えば、通信をドロップする)ことができる。
【0048】
スイッチ100を使用したパケット伝送の例を次に説明する。いくつかの例において、スイッチ100は、サーバ上で動作するVEEのためのネットワークプロキシとして作用する。スイッチ100上で実行するVEEは、任意の適用可能な通信プロトコル(例えば、標準化されたプロトコルまたは専用のプロトコル)に従ってスイッチ100のネットワーク接続を使用して伝送のためにパケットを形成することができる。いくつかの例において、スイッチ100は、コア上で動作するワークロードまたはVEEがスイッチ100内にあるかスイッチ100によりアクセス可能である、パケット伝送を生じさせることができる。スイッチ100は、任意の他の外部接続されたホストにアクセスするのと同様の様式で、接続された内部コアにアクセスすることができる。スイッチ100としての同じシャーシの内部に1つまたは複数のホストが配置され得る。VEEまたはサービスがスイッチ100のCPU上で動作するいくつかの例において、そのようなVEEは、伝送のためのパケットを生じさせることができる。例えば、VEEがスイッチ100のCPU上でMemcachedサーバを動作させる場合、スイッチ100は、データに対する任意の要求に応答するため、または、キャッシュミスの場合には、データについて別のサーバもしくはシステムにクエリを行い、データを取得してそのキャッシュを更新するために、伝送のためのパケットを生じさせ得る。
【0049】
図1Bは、例示的なシステムを示す。スイッチシステム130は、ポート回路134-0~134-Nに通信可能に結合されたスイッチ回路132を含み得る、またはそれにアクセスし得る。ポート回路134-0~134-Nは、パケットを受信し、パケットをスイッチ回路132に提供することができる。ポート回路134-0~134-Nは、ポート回路104-0~104-Nのいずれかと同様であり得る。インタフェース136-0~136-Mは、それぞれのプロセッサモジュール138-0~138-Mとの通信を提供し得る。本明細書でより詳細に説明されるように、オーケストレーション制御プレーン、Memcachedサーバ、または、任意のアプリケーションを動作させる1つまたは複数の仮想化実行環境(VEE)(例えば、ウェブサーバ、データベース、Memcachedサーバ)は、プロセッサモジュール138-0~138-Mのうちの1つまたは複数上で実行することができる。プロセッサモジュール138-0~138-Mは、それぞれのプロセッサモジュール108-0~108-Mと同様であり得る。
【0050】
図1Cは、例示的なシステムを示す。スイッチシステム140は、ポート回路144-0~144-4に通信可能に結合されたスイッチ回路142を含み得るか、またはそれにアクセスし得る。ポート回路144-0~144-4は、パケットを受信し、パケットをスイッチ回路142に提供し得る。ポート回路144-0 to 144-Nは、任意のポート回路104-0~104-Nと同様であり得る。インタフェース146-0~146-1は、それぞれのプロセッサモジュール148-0~148-1との通信を提供し得る。本明細書でより詳細に説明されるように、オーケストレーション制御プレーン、Memcachedサーバ、または、任意のアプリケーションを動作させる1つまたは複数の仮想化実行環境(VEE)(例えば、ウェブサーバ、データベース、Memcachedサーバ)は、プロセッサモジュール147-0もしくは147-1、またはプロセッサモジュール148-0~148-1のうちの1つまたは複数上で実行することができる。プロセッサモジュール148-0~148-1は、プロセッサモジュール108-0~108-Mのいずれかと同様であり得る。
【0051】
図1Dは、例示的なシステムを示す。この例では、アグリゲーションスイッチ150は、異なるラックの複数のスイッチに結合されている。ラックは、サーバ154-0~154-Nに結合されたスイッチ152を含み得る。別のラックは、サーバ158-0~158-Nに結合されたスイッチ156を含み得る。スイッチのうちの1つまたは複数は、本明細書で説明される実施形態に従って動作し得る。コアスイッチまたは他のアクセスポイントは、パケット伝送および別のデータセンタでの受信のために、アグリゲーションスイッチ150をインターネットに接続し得る。
【0052】
サーバに対してTOR、MOR、または任意の他のスイッチ位置(例えば、行の終わり(EOR))を使用することができるため、スイッチに対するサーバの描画は物理的配置を示すことを意図しないことに留意されたい。
【0053】
本明細書で説明される実施形態は、データセンタ動作に限定はされず、複数のデータセンタ、企業ネットワーク、オンプレミス、またはハイブリッドデータセンタ間の動作に適用することができる。
【0054】
ネットワーク処理をスイッチに移動させることができるため、(例えば、NVM更新またはファームウェア更新(例えば、基本入力/出力システム(BIOS)、汎用拡張可能ファームウェアインタフェース(UEFI)、またはブートローダの更新)の後に)パワーサイクリングを必要とする任意のタイプの構成を分離して実行することができ、スイッチ全体がパワーサイクリングを行うことを必要とせず、スイッチに接続されたラック内の全てのサーバに影響を及ぼすことを避けることができる。
【0055】
デュアル制御プレーン
図2Aは、ラック内のリソースを管理するシステムの例示的な概観を示す。様々な実施形態は、スイッチ200に接続された1つまたは複数のサーバ210-0~210-Nにおける制御プレーンを管理することができるオーケストレーション制御プレーン202を有するスイッチ200を提供する。オーケストレーション制御プレーン202は、1つまたは複数のVEE(例えば、214-0-0~214-0-Pまたは214-N-0~214-N-Pのいずれか)のためのSLA情報206、リソース利用などのラック内のサーバからのテレメトリ情報204、測定されたデバイススループット(例えば、メモリ読み取りまたは書き込みの完了時間)、利用可能なメモリもしくはストレージ帯域幅、または、スイッチに接続された、もしくはより広範にはラック内のサーバのリソースのニーズを受信することができる。VEEのSLAへの準拠に影響するためにテレメトリ情報204を使用することにより、オーケストレーション制御プレーン202は、サーバに割り当てられたネットワーク帯域幅(例えば、スイッチ200からサーバ、またはサーバからスイッチ200へのデータ送信レート)を積極的に制御、緩和、または休止させ、それにより、サーバ上で動作するVEEから送信される、またはVEEによって受信される通信のレートを緩和させることができる。
【0056】
いくつかの例において、オーケストレーション制御プレーン202は、計算リソース、ネットワーク帯域幅(例えば、スイッチ200と別のスイッチ(例えば、アグリゲーションスイッチまたは別のラックのスイッチ)との間の)、およびメモリまたはストレージ帯域幅のうちの1つまたは複数を任意のサーバのハイパーバイザ(例えば、212-0~212-N)に割り当てることができる。例えば、スイッチ200は、ラック内の任意のVEEへのデータ伝送または受信の帯域幅を、任意のフロー制御メッセージの受信の前に積極的に管理することができるが、フロー制御メッセージ(例えば、XON/XOFFまたはイーサネットPAUSE)を受信した際には任意のVEEからのデータ伝送帯域幅も管理して、フローの伝送を低減または一時停止させることができる。オーケストレーション制御プレーン202は、少なくともテレメトリデータに基づいて、そのラック内の全てのサーバ210-0~210-Nのアクティビティを監視することができ、ハイパーバイザ212-0~212-Nを管理して、VEEのトラフィック発生を制御することができる。例えば、輻輳が検出された場合、スイッチ200は、フロー制御を実行して、ローカルVEEまたはリモートセンダのいずれかからパケットトランスミッタを休止させることができる。他の場合では、ハイパーバイザ212-0~212-Nは、オーケストレーション制御プレーン202からのリソースについて競合して、管理されたVEEを割り当て得るが、そのようなスキームは、いくつかのVEEへのリソースの割り当て不足をもたらさない場合がある。
【0057】
例えば、リソースを割り当てるまたは緩和させるために、オーケストレーション制御プレーン202は、1つまたは複数のVEEを実行するサーバに関連付けられたハイパーバイザ(例えば、212-0または212-N)を構成することができる。例えば、サーバ210-0~210-Nは、それぞれのハイパーバイザ制御プレーン212-0~212-Nを実行して、サーバ上で動作するVEEのためのデータプレーンを管理することができる。サーバの場合、ハイパーバイザ制御プレーン(例えば、212-0~212-N)は、そのサーバ上で動作するVEEのSLA要件を追跡し、割り当てられた計算リソース、ネットワーク帯域幅、およびメモリまたはストレージ帯域幅内でそれらの要件を管理することができる。同様に、VEEは、付与されたリソース内でフロー間の競合を管理することができる。
【0058】
オーケストレーション制御プレーン202には、少なくともサーバへのリソース割り当てを構成するために、スイッチ200およびサーバ210-0~210-N内で特権が与えられ得る。オーケストレーション制御プレーン202は、サーバを損ない得る信頼できないVEEから保護され得る。オーケストレーション制御プレーン202は、VEEのVFまたはNICのサーバのPFを監視し、悪意のあるアクティビティが検出された場合にはそれらをシャットダウンすることができる。
【0059】
ハイパーバイザ制御プレーン212のオーケストレーション制御プレーン202による階層化されたコンフィギュアビリティの一例を次に説明する。サーバのハイパーバイザ制御プレーン212(例えば、ハイパーバイザ制御プレーン212-0~212-Nのいずれか)は、VEEが実行するテナントに関連付けられたポリシへの更新の結果などとして、例えばオーケストレーション制御プレーン202、管理者から物理ホスト構成要求を受信したことに応答して、VEEに与えられたリソースおよびVEEの動作を構成するかどうかを決定し得る。
【0060】
オーケストレーション制御プレーン202からの構成は、信頼できるまたは信頼できないとして分類され得る。サーバのハイパーバイザ制御プレーン212は、任意の信頼できる構成がVEEのために施行されることを可能にし得る。いくつかの例において、オーケストレーション制御プレーン202によってなされる帯域幅割り当て、VEE移行の開始または終端、およびリソース割り当ては、信頼できるとして分類され得る。ハイパーバイザ212は、特定の構成を実行するのに、信頼できない構成を制限し得るが、信頼のレベルを超える特定のハードウェアアクセス/構成動作については制限しない。例えば、信頼できない構成は、デバイスのリセットを発行すること、リンク構成を変更すること、機密性の高い/デバイス全体のレジスタに書き込むこと、およびデバイスファームウェアを更新することなどができない。構成を信頼できるものと信頼できないものとに分けることによって、ハイパーバイザ212は、信頼できない要求を除去することにより、潜在的な攻撃対象領域を無効にすることができる。加えて、ハイパーバイザ212は、その異なるVEEの各々について異なる機能を呈することができ、したがって、ホスト/プロバイダは必要に応じてテナントを分離することが可能となる。
【0061】
図2Bは、様々な管理階層の例示的な概観を示す。表現250において、前に説明したように、オーケストレーション制御プレーンは、サーバのハイパーバイザ制御プレーンに対して信頼できる構成を発行する。ハイパーバイザ制御プレーンに送信されたオーケストレーション制御プレーンからの一部または全部のコマンドまたは構成は、信頼できるものと見なされ得る。ハイパーバイザ制御プレーンは、ハイパーバイザによって管理されたVEEの構成を設ける。
【0062】
表現260において、スイッチは、サーバが物理機能(PF)を表し、関連付けられた仮想機能(VF-0~VF-N)がVEEを表すかのようにサーバを制御する。SR-IOVが使用される場合、ベアメタルサーバ(例えば、シングルテナントサーバ)またはOSハイパーバイザはPFに対応し、VEEは、それらの対応するVFを使用してPFにアクセスする。
【0063】
表現270において、オーケストレーション制御プレーンはハイパーバイザ制御プレーンを管理する。間接的に、オーケストレーション制御プレーンは、サーバのデータプレーンDP-0~DP-Nを管理して、割り当てられたリソース、割り当てられたネットワーク帯域幅(例えば、伝送または受信)、および任意のVEEの移行または終端を制御することができる。
【0064】
メモリトランザクション
図3は、スイッチがメモリアクセス要求に応答することができる例示的なシステムを示す。リクエスタデバイス、またはサーバ310内のもしくはサーバ301上で実行するVEEは、サーバ312内に格納されたデータを要求することができる。スイッチ300は、メモリアクセス要求を受信および処理し、メモリプール332における完了(例えば、読み取りまたは書き込み)のためにメモリアクセス要求を提供するべき宛先サーバまたはデバイス(例えば、IPアドレスまたはMACアドレス)を決定することができる。メモリプール332に要求を伝送することになるサーバ312にメモリアクセス要求を提供する代わりに、スイッチ300は、要求をメモリプール332に転送することができる。
【0065】
いくつかの例において、スイッチ300は、メモリアクセス要求に関連付けられるメモリアドレスの、デバイスの物理アドレス(例えば、宛先IPアドレスまたはMACアドレス)へのマッピングを示すマッピングテーブル302にアクセスすることができる。いくつかの例において、スイッチ300は、ターゲットデバイスのアドレスおよび仮想アドレス(メモリアクセス要求で提供された)の物理アドレスへの変換について信頼できる。いくつかの例において、スイッチ300は、ターゲットデバイスにおけるメモリアクセスのリクエスタに代わってメモリアクセス(例えば、読み取りまたは書き込み)を要求することができる。
【0066】
いくつかの例において、スイッチ300は、メモリプール332に直接アクセスして、読み取り操作のためにデータを取得する、またはデータを書き込むことができる。例えば、サーバ310がサーバ312からのデータを要求するが、データはメモリプール332に格納されている場合、スイッチ300は、要求されたデータをメモリプール332(または他のサーバ)から取得し、データをサーバ310に提供し、データをメモリ304またはサーバ312に潜在的に格納し得る。スイッチ300は、スイッチ320に対してデータ読み取り要求を発行してデータを取得することによって、メモリプール332(または他のデバイス,サーバ、またはストレージプール)からデータをフェッチすることができる。メモリプール332は、スイッチ300と同じデータセンタ内、またはデータセンタの外部に位置し得る。スイッチ300は、フェッチされたデータをメモリ304(またはサーバ312)に格納して、スイッチ300と同じラック内のサーバによる低レイテンシで複数の読み取り/書き込みトランザクションを可能にすることができる。高速接続により、メモリ304からのデータがサーバ310に提供され得、逆もまた同様である。サーバ310からメモリ304に、メモリ304からサーバ310にデータを転送するのにCXL.memが使用される場合、適用可能なプロトコルルールに従い得る。スイッチ300は、メモリ304からのデータが修正された場合に、メモリプール332からのデータを更新し得る。
【0067】
したがって、VEEによって処理し、データの取得に関連付けられるレイテンシペナルティを著しく緩和するために、2レベルメモリ(2LM)アーキテクチャを実装して、速い接続を介してアクセス可能なローカルメモリにデータをコピーすることができる。
【0068】
メモリアクセス要求が読み取り要求であり、データが、別のスイッチ(例えば、スイッチ320)に接続され、かつ別のラック内にあるサーバまたはデバイスによって格納されている場合、スイッチ300は、データを格納するターゲットデバイスに要求を転送して、メモリ要求に応答することができる。例えば、スイッチ300は、パケット処理306を使用して、メモリアクセス要求を伝達したパケットの宛先IPもしくはMACアドレスを、ターゲットデバイスの宛先IPもしくはMACアドレスに変更するか、または別のパケット内の要求をカプセル化するが、受信したメモリアクセス要求の宛先IPもしくはMACアドレスを維持することができる。
【0069】
シンメモリの提供により、計算ノード上のメモリを少なくすること、および複数の計算ノードによって共有されるメモリプールを構築することが可能となる。共有メモリは、計算ノードに対して動的に割り当てられ/割り当て解除され得、割り当ては、ページまたはキャッシュラインの細分性で設定される。集約すると、全ての計算ノードに割り当てられたメモリおよび共有プール内のメモリは、計算ノードに割り当てられたメモリの量よりも少ない場合がある。例えば、シンメモリの提供がサーバ310に使用される場合、データは、サーバ310と同じラック上、および潜在的に遠隔メモリプール332内のメモリに格納され得る。
【0070】
書き込み動作である、サーバ310からのメモリアクセス要求について、ターゲットデバイスがスイッチ300のラック上にない場合、スイッチ300は、書き込みを待ち行列に入れ、書き込み動作を完了としてサーバ310(例えば、VEE)に報告し、次に、メモリプール332をメモリ帯域幅の許容に応じて、またはメモリ順序時付けおよびキャッシュコヒーレンシ要求により必要とされるように更新することができる(例えば、ポストされた書き込みをフラッシュする)。
【0071】
いくつかの例において、スイッチ300は、対応するアドレスを有するメモリの領域へのメモリアクセスと、書き込みの場合、書き込むべき対応するデータとを処理することができる。スイッチ300は、リモートダイレクトメモリアクセス(例えば、インフィニバンド、iWARP、RoCE、およびRoCE v2)、NVMe over Fabrics(NVMe-oF)、またはNVMeを使用して、メモリプール332からデータを読み取るか、またはメモリプール332にデータを格納することができる。例えば、NVMe-oF、ならびにその前身、後継、および専用の変形例は、少なくとも、NVM Express Base Specification改訂版1.4(2019年)に記載されている。NVMe、ならびにその前身、後継、および専用の変形例は、例えば、NVM Express(商標)Base Specification改訂版1.3c(2018年)に記載されている。データが、別のスイッチ(例えば、スイッチ320)に接続されたサーバまたはデバイス(例えば、メモリプール332)によって格納されている場合、スイッチ300は、データがサーバ310と同じラックのサーバに格納されていたかのようにデータを取得またはデータを書き込むことができる。
【0072】
各サーバ上のキャッシュまたはメモリ空間に加えて、スイッチ300はまた、集約されたキャッシュ空間にも寄与し得る。スマートキャッシュ割り当てにより、データにアクセスするサーバのメモリにデータを配置し得る。スラッシングされた(例えば、いくつかのサーバによってアクセスおよび修正された)データは、スイッチ300またはサーバ312のメモリ304に配置され得、ここで、最少の接続またはイーサネットリンクトラバーサルを用いてアクセスされ得る。
【0073】
Memcached例
Memcachedは、データセンタ内、または複数のデータセンタにわたって、分散したメモリキャッシュシステムを提供し得る。例えば、Memcachedは、分散データベースを提供して、データベースの負荷を緩和することによってアプリケーションの速度を上げることができる。いくつかの例において、専用サーバをMemcachedサーバとして使用して、サーバにわたるリソースを統合し(例えば、イーサネットを介して)、よくアクセスされるデータをキャッシュしてそのデータへのアクセスのスピードを上げることができる。様々な実施形態では、スイッチは、Memcachedオブジェクトの一部として格納されたデータ、データ、または、スイッチに接続されたサーバ内の少なくともいくつかのメモリリソース内のストリングストレージを管理することができる。
【0074】
図4Aは、サーバ(システム400)上で、およびスイッチ(システム450)において実行するMemcachedサーバの例を示す。Memcachedの使用によって、データベース(または任意の他の複雑な)クエリの代わりにハッシュルックアップを使用することによって、頻繁に要求されるデータをより速く提供することが可能となるが、任意の実施形態ではデータベースクエリを使用してもよい。データに対する第1の要求は、データの取得を生じさせるため、比較的低速であり得る。同じデータに対する将来の要求は、データが格納され、かつデータサーバから提供され得るため、より高速になり得る。システム400において、リクエスタは、データセンタの行における異なるラック、データセンタ内の異なる行上のクライアント/サーバであり得、またはデータセンタの外部からの外部要求であり得る。要求は、アグリゲーションスイッチ402において受信され、イーサネットリンクを使用してスイッチ404に提供され得る。スイッチ404は、転じて、イーサネットリンクを使用して、サーバ406-0上で動作するMemcachedサーバ408に要求を提供し得、それは転じて、データに対する要求をサーバ406-1に提供する。データサーバ406-1がMemcachedサーバ406-0と同じラックにあるにもかかわらず、所望のデータを提供するために同じラック内に複数のイーサネット通信が存在する。イーサネット通信は、データセンタ内の東西トラフィックに寄与し得る。
【0075】
システム450において、要求は、アグリゲーションスイッチ402において受信され、イーサネットリンクを使用してスイッチ452に提供され得る。スイッチ452は、1つまたは複数のプロセッサを使用してMemcachedサーバ408を実行し、要求されたデータを格納するサーバデバイスを決定する。データが、スイッチ452が接続性(例えば、PCIe、CXL、DDRxを使用する)を提供するものと同じラックに格納されている場合、要求はサーバ460-1に提供され得、東西トラフィックには寄与しない。リクエスタが同じラック(例えば、サーバ460-N)内にある場合、スイッチ454がネットワークエンドポイントであるため、要求は、スイッチ454に内部に処理され得、履行されるためにイーサネットを介して移動しない。キャッシュミスの場合(例えば、データがサーバ460-1に格納されていない)、いくつかのシナリオでは、データは、接続を介して別のサーバ(例えば、460-0)から取得され得る。
【0076】
例えば、スイッチ452は、スイッチ上で動作するVEE内のMemcachedを実行することができ、高速接続を介してラック全体のリソースを、組み合わされたキャッシュおよびメモリの仮想プールに統合することができる。
【0077】
さらに、スイッチ452がNICエンドポイント動作を処理することにより、全ての要求は、スイッチ452上で実行するVEEにおいて動作するMemcachedサーバ408を通じて自動的にルーティングされ得、クライアントリクエスタはMemcachedサーバのリストを維持する必要がなくなる。MemcachedサーバVEEは、それがどのように構成されているかに基づいてそのキャッシュ(例えば、サーバ460-1内のデータとして示される)を自動的に更新して、リクエスタに対するデータの局所性を改善し、さらなるレイテンシを低減することができる。
【0078】
図4Bは、単一の要求のためのイーサネットパケットフローを示す。各矢印は、イーサネットリンクのトラバーサルおよび東西または南北トラフィックへの寄与を表す。システム400について、キャッシュミスの場合、これにより、データはデータサーバにおいて利用可能ではなく、合計で10のイーサネットリンク(または他のフォーマット)のトラバーサルがなされる。リクエスタはアグリゲーションスイッチに要求を送信し、アグリゲーションスイッチは要求をスイッチに提供し、転じて、スイッチは要求をMemcachedサーバに提供する。Memcachedサーバは、スイッチを通じて、データサーバに送信するべき要求を提供する。データサーバは、スイッチを介して、データが存在しないことを示すことによってMemcachedサーバに応答する。Memcachedサーバは、キャッシュミスの応答を受信し、その結果、Memcachedサーバは、そのデータに対する次の要求がキャッシュミスをもたらさないように、データを用いてそのキャッシュを更新する。Memcachedサーバは、キャッシュミスの場合であっても、データをリクエスタに提供する。
【0079】
Memcachedサーバが、データセンタ内の、データを格納するラックとは異なるラック内にある場合、履行されるべき要求について、要求は異なるラックに移動し、応答がMemcachedサーバに提供される。しかしながら、スイッチは、データを格納するラックに対してイーサネット要求を発行し得る。いくつかの例において、スイッチは、Memcachedサーバを迂回し、データソースからデータを直接要求し得る。
【0080】
システム450について、リクエスタは、アグリゲーションスイッチを介して要求をスイッチに提供し、スイッチは、接続(例えば、PCIe、CXL、DDRx)を介してMemcachedサーバおよびそのラック内のデータにアクセスし、アグリゲーションスイッチを介してリクエスタに対する応答データをリクエスタに提供する。この例において、4つのイーサネットリンクのトラバーサルが生じている。スイッチにおいてMemcachedサービスを提供することにより、他のラック上のデータベースへのネットワークアクセスが低減され得、さらには、スイッチにおいてMemcachedデータ位置ルックアップを実行することによって、ラック内の東西トラフィックが低減され得る。いくつかの場合では、データがスイッチのメモリ(例えば、メモリ304)に、またはラックのサーバにおいてキャッシュされている場合、スイッチは、要求に応答して、要求されたデータを直接供給し得る。キャッシュミスの場合、キャッシュするべきデータを取得するのに高速接続(PCIe、CXL、DDRなど)を使用して、スイッチ452(図4A)を介して同じラック内のサーバがアクセス可能であるため、システム450によってより少ないイーサネット通信がなされる。
【0081】
スイッチにおけるネットワーク終端
図5Aは、パケットがスイッチにおいて終端し得る例示的なシステムを示す。パケットは、例えば、アグリゲーションスイッチからスイッチ502によって受信され得る。パケットは、イーサネット互換性であり得、任意のタイプのトランスポート層(例えば、伝送制御プロトコル(TCP)、データセンタTCP(DCTCP)、ユーザデータグラムプロトコル(UDP)、クイックユーザデータグラムプロトコルインターネット接続(QUIC))を使用し得る。スイッチ502の様々な実施形態は、1つまたは複数のVEE(例えば、504または506)を実行して、ネットワークプロトコルアクティビティを実行することによってパケットを終端させることができる。例えば、VEE504または506は、スイッチ502に対してネットワークプロトコル処理またはネットワーク終端、例えば、セグメンテーション、再アセンブリ、受信確認(ACK)、否定確認(NACK)、パケット再伝送識別情報および要求、輻輳管理(例えば、トランスミッタのフロー制御)、HTTPおよびTCPのセキュアソケット層(SSL)またはトランスポート層セキュリティ(TLS)の終端、のうちの1つまたは複数を実行し得る。(例えばソケット層において)メモリページに入力が行われる際、ベアメタルホストまたはVEEによるアクセスのために、高速接続および対応するプロトコル(例えば、CXL.mem)を使用してラック上の宛先サーバにページがコピーされ得る。いくつかの例において、プロトコル処理VEE504または506は、ネットワークサービスチェーン特徴、例えば、ファイアウォール、ネットワークアドレス変換(NAT)、侵入防護、復号、進化型パケットコア(EPC)、暗号化、仮想ローカルエリアネットワーク(VLAN)タグに基づくパケットのフィルタリング、カプセル化などを実行することができる。
【0082】
例えば、スイッチ502は、スイッチのプロセッサの利用が低い場合に、プロトコル処理VEE504および506を実行することができる。加えて、または代替的に、プロトコル処理VEEは、ラック内の1つまたは複数のサーバの計算リソース上で実行し得る。スイッチ502は、パケットの受信または伝送のために、パケットバッファを含み得るか、または高速接続を介してそれにアクセスし得る。
【0083】
いくつかの例において、VEE504または506は、スイッチ502における少なくともいくつかの受信されたパケットのパケットプロトコル終端またはネットワーク終端を実行することができる。例えば、VEE504または506は、開放型システム相互接続モデル(OSIモデル)の層2~4(例えば、データリンク層、ネットワーク層、またはトランスポート層(例えば、TCP、UDP、QUIC))のいずれかのパケット処理を実行することができる。加えて、または代替的に、VEE504または506は、OSIモデルの層5~7(例えば、セッション層、プレゼンテーション層、またはアプリケーション層)のいずれかのパケット処理を実行することができる。
【0084】
いくつかの例において、VEE504または506は、限定はされないが、仮想拡張可能LAN(VXLAN)またはNetwork Virtualization using Generic Routing Encapsulation(NVGRE)などの技術のカプセル化またはカプセル化解除を提供することによってトンネル開始または終端を実行することにより、トンネルエンドポイントを提供することができる。
【0085】
いくつかの例において、スイッチ502におけるVEE504または506または任意のデバイス(例えば、プログラマブルな機能または固定機能)は、ラージレシーブオフロード(LRO)、ラージセンド/セグメンテーションオフロード(LSO)、TCPセグメンテーションオフロード(TSO)、トランスポート層セキュリティ(TLS)オフロード、受信側スケーリング(RSS)のうちの1つまたは複数を実行して、ペイロード、専用キュー割り当て、または別の層プロトコル処理を処理するキューまたはコアを割り当てることができる。
【0086】
LROは、入ってくるネットワークパケットを再アセンブルし、パケットコンテンツ(例えば、ペイロード)をより大きいコンテンツへと転送し、得られたより大きいコンテンツであるがより少ないパケットをホストシステムまたはVEEによるアクセスのために転送する、スイッチ502(例えば、VEE504または506または固定デバイスもしくはプログラマブルデバイス)を指し得る。LSOは、マルチパケットバッファを生成し、バッファのコンテンツをスイッチ502((、例えばVEE504もしくは506または固定デバイスもしくはプログラマブルデバイス)に提供して伝送のために別個のパケットに分割する、スイッチ502(例えば、VEE504または506)またはサーバ510-0または510-1(例えば、VEE514-0または514-1)を指し得る。TSOは、スイッチ502またはサーバ510-0もしくは510-1がより大きいTCPメッセージ(または他のトランスポート層)(例えば、64KBの長さ)を構築することを許可し得、スイッチ502(例えば、VEE504もしくは506または固定デバイスもしくはプログラマブルデバイス)が、伝送のためにメッセージをより小さいデータパケットにセグメント化する。
【0087】
TLSは、少なくとも、The Transport Layer Security(TLS)Protocolバージョン1.3、RFC8446(2018年8月)において定義されている。TLSオフロードは、TLSに従った、スイッチ502(例えば、VEE504もしくは506または固定デバイスもしくはプログラマブルデバイス)へのコンテンツの暗号化または復号のオフロードを指し得る。スイッチ502は、サーバ510-0または510-1(例えば、VEE514-0または514-1)またはVEE504または506から暗号化のためのデータを受信し、暗号化されたデータの伝送の前に1つまたは複数のパケットにおいてデータの暗号化を実行することができる。スイッチ502は、パケットを受信し、VEE514-0もしくは514-1またはVEE504もしくは506によるアクセスのために復号されたデータをサーバ510-0または510-1に転送する前に、パケットのコンテンツを復号し得る。いくつかの例において、任意のタイプの暗号化または復号は、限定はされないがセキュアソケット層(SSL)などのスイッチ502によって実行され得る。
【0088】
RSSは、ハッシュを計算する、または、どのCPUまたはコアが受信されたパケットからのペイロードを処理するかを決定および選択するために、受信されたパケットのコンテンツに基づいて別の決定をなすスイッチ502(例えば、VEE504もしくは506または固定デバイスもしくはプログラマブルデバイス)を指し得る。ペイロードをコアに分散する他の様式が実行され得る。いくつかの例において、スイッチ502(例えば、VEE504もしくは506または固定デバイスもしくはプログラマブルデバイス)は、RSSを実行して、コアおよびメモリの対を有する不均一メモリアクセス(NUMA)ノードを選択して、受信されたパケットからのペイロードを格納および処理するべきNUMAノードを識別し得る。いくつかの例において、スイッチ502(例えば、VEE504もしくは506または固定デバイスもしくはプログラマブルデバイス)は、RSSを実行して、受信されたパケットからのペイロードを格納および処理するべきスイッチ502またはサーバ上のコアを選択し得る。いくつかの例において、スイッチ502は、RSSを実行して、パケット処理(スイッチ502またはサーバ上の)を実行する1つまたは複数のコアを割り当て得る。
【0089】
いくつかの例において、スイッチ502は、アプリケーションデバイスキュー(ADQ)または同様の技術に従って、メモリ内の専用キューをアプリケーションまたはVEEに割り当て得る。ADQの使用は、キューをアプリケーションまたはVEE専用にすることができ、これらのキューは、アプリケーションまたはVEEによって排他的にアクセスされ得る。ADQは、異なるアプリケーションまたはVEEが同じキューにアクセスすることを試みてロックまたは競合を引き起こし、パケット利用可能性の性能(例えば、レイテンシ)が予測不可能となする。る、ネットワークトラフィック競合を防ぐことができる。また、ADQは、受信されたパケットまたは伝送されるべきパケットについて、専用アプリケーションのトラフィックキューのサービス品質(QoS)制御を提供する。例えば、ADQを使用して、スイッチ502は、パケットペイロードコンテンツを1つまたは複数のキューに割り当てることができ、1つまたは複数のキューは、アプリケーションまたはVEEなどのソフトウェアによるアクセスにマッピングされる。いくつかの例において、スイッチ502は、ADQを利用して、パケットヘッダ処理動作のために1つまたは複数のキューを専用化し得る。
【0090】
図5Cは、スイッチ502(例えば、VEE504もしくは506または固定デバイスもしくはプログラマブルデバイス)によるNUMAノード、CPU、またはサーバ選択の例示的な方法を示す。例えば、リソースセレクタ572は、受信されたパケットのヘッダに対してハッシュ計算(例えば、パケットフロー識別子に対するハッシュ計算)を実行して、キュー(例えば、キュー576の中から)にマッピングするスイッチ502に格納された間接参照テーブルを決定し、これは転じて、NUMAノード、CPUまたはサーバにマッピングする。リソースマッピング574は、間接参照テーブルおよびキューへのマッピング、ならびに、受信されたパケットのヘッダおよび/またはペイロードを、選択されたNUMAノード、CPUまたはサーバに関連付けられたメモリ(またはキャッシュ)にコピーするのにどの接続(例えば、CXLリンク、PCIe接続、またはDDRインタフェース)を使用するべきかのインジケータを含み得る。いくつかの場合では、リソースセレクタ572は、RSSを実行して、NUMAノード、CPU、またはサーバを選択する。例えば、リソースセレクタ572は、受信されたパケットのヘッダおよび/またはペイロードを処理するために、サーバ580-1上のNUMAノード0におけるCPU1を選択し得る。サーバ上のNUMAノードは、UPIバスを横断することなくサーバ内のメモリに書き込むことを可能にするための、スイッチ570への自身の接続を有し得る。VEEは、1つまたは複数のコアまたはCPU上で実行され得、VEEは、受信されたペイロードを処理し得る。
【0091】
図5Aを再度参照すると、パケットプロトコル処理を実行するために、VEE504または506は、データプレーン開発キット(DPDK)、ストレージパフォーマンス開発キット(SPDK)、オープンデータプレーン、ネットワーク機能仮想化(NFV)、ソフトウェアデファインドネットワーキング(SDN)、進化型パケットコア(EPC)、または5Gネットワークスライシングに基づくプロセスを実行し得る。NFVのいくつかの例示的な実装形態は、ETSIのオープンソースMano(OSM)グループの欧州電気通信標準化機構(ETSI)仕様またはオープンソースNFV管理およびオーケストレーション(MANO)に記載されている。仮想ネットワーク機能(VNF)は、ファイアウォール、ドメインネームシステム(DNS)、キャッシュまたはネットワークアドレス変換(NAT)などの汎用の構成可能ハードウェア上で実行される仮想化タスクのサービスチェーンまたはシーケンスを含み得、VEEにおいて動作し得る。VNFは、サービスチェーンとして共にリンクされ得る。いくつかの例において、EPCは、少なくとも、ロングタームエボリューション(LTE)アクセスのための3GPP(登録商標)固有のコアアーキテクチャである。5Gネットワークスライシングは、同じ物理ネットワークインフラストラクチャ上での仮想化された独立の論理ネットワークの多重化を提供し得る。
【0092】
いくつかの例において、任意のプロトコル処理、プロトコル終端、ネットワーク終端、またはオフロード動作は、スイッチ502において実行するVEEの使用の代わりに、またはそれに加えて、スイッチ502においてプログラマブルまたは固定機能デバイスによって実行され得る。
【0093】
いくつかの例において、スイッチ502においてパケットを処理することにより、サーバにおいてパケット処理の判断がなされていたのと比較して、パケット処理(例えば、転送または破棄)のより速い判断が可能となり得る。加えて、パケット破棄の際に、サーバとスイッチとの間の接続の帯域幅の利用が節約され得る。パケットが悪意のあるアクティビティ(例えば、DDoS攻撃)に関連するものと識別された場合、パケットは破棄されて、サーバが悪意のあるアクティビティに潜在的に晒されることから保護する。
【0094】
スイッチ502の計算リソース上で動作するVEE504および506は、ネットワーク処理を完了し、得られたデータは、パケットを伝達するのに使用されたネットワークプロトコルにかかわらず、DMA、RDMA、PCIe、CXL.memを介して、VEE514-0または514-1のためにデータバッファに転送される。換言すれば、スイッチ502の計算リソース上で動作するVEE504および506は、それぞれのサーバ510-0および510-1上で動作するそれぞれのVEE514-0または514-1のためのプロキシVEEとして作用し得る。例えば、VEE504または506は、プロトコルスタック処理を実行し得る。スイッチ502上で実行するVEE(例えば、VEE504または506)は、ホストに対するソケットバッファエントリおよびバッファ内のデータ(例えば、512-0または512-1)を提供し得る。
【0095】
少なくとも、成功したプロトコル層処理と、ACLにおける任意の拒否条件の不存在に基づいて、パケットからのペイロードは、宛先サーバ(例えば、510-0または510-1)においてメモリバッファ(例えば、512-0または512-1)にコピーされ得る。例えば、VEE504および506は、ダイレクトメモリアクセス(DMA)またはRDMA動作の性能に対して、パケットペイロードを、パケットペイロードを処理するVEE(例えば、VEE514-0および514-1)に関連付けられたバッファにコピーさせ得る。記述子は、パケットを受信するのに利用可能なメモリまたはキャッシュの領域を識別するために、オーケストレータまたはVEE514-0および514-1によってスイッチ500に提供されたデータ構造であり得る。いくつかの例において、VEE504および506は、宛先サーバ(例えば、510-0または510-1)のバッファにおけるパケットペイロードの宛先位置を示す受信記述子を完成させ、完成された受信記述子を、パケットペイロードを処理するVEEによるアクセスのためにコピーすることができる。
【0096】
いくつかの例において、スイッチ502は、そのラックまたは最適化されたサブセット内のサーバ上で実行するVEEの各々について、VEEを実行することができる。いくつかの例において、スイッチ上で実行するVEEのサブセットは、低レイテンシ要件でサーバ上で動作するVEEに対応し得、主に、ネットワーク集中型であり、または他の基準である。
【0097】
いくつかの例において、スイッチ502は、スイッチ502がラック内の全てのCPU、メモリ、ストレージにアクセスすることを許可する接続を使用してサーバ510-0および510-1に接続される。オーケストレーション層は、スイッチ502の一部または全部におけるVEE、およびラック内の任意のサーバへのリソース割り当てを管理し得る。
【0098】
それぞれのサーバ510-0および510-1において実行するVEE514-0および514-1は、ポーリング(polling)モード、ビジーポール(busy poll)、または割込みなど、データ利用可能性を通知するモードを選択し得る。ポーリングモードは、バッファのステータスをアクティブにサンプリングして、新しいパケットの到達があるかどうかを決定することによる、新しいパケットのVEEポーリングを含み得る。ビジーポーリングは、ソケット層のコードが受信キューをポーリングし、ネットワーク割込みを無効にすることを可能にし得る。割込みは、実行中のプロセスに、そのsateを節約させ、割込みに関連付けられるプロセス(例えば、パケットまたはデータの処理)を実行させる。
【0099】
ラック内のサーバ510-0または510-1は、パケット処理のためにポーリングモードで動作する代わりに、割込みを受信することができる。割込みは、パケットごとではなく、むしろ、より高レベルのトランザクションのために、スイッチ502によってサーバに発行され得る。例えば、VEE514-0または514-1がデータベースを動作させる場合、割込みは、レコード更新が多くのパケットを使用して提供する場合であっても、レコード更新が完了したときにVEE504または506によってVEE514-0または514-1に提供され得る。例えば、VEE514-0または514-1がウェブサーバを動作させる場合、割込みは、1つまたは複数のパケットがフォームを提供しているにもかかわらず、完全なフォームを受信した後に、VEE504または506によってVEE514-0または514-1に提供される。受信されたパケットまたはデータのポーリングは、任意の場合で使用され得る。
【0100】
図5Bは、サーバおよびスイッチ上のVEEの組成の一例を示す。この例では、VEE552は、スイッチ550上で実行して、サーバ550上で実行するVEE562によって処理されるべきペイロードを有するパケットに対して、プロトコル処理またはパケットプロトコル終端を実行する。VEE552は、スイッチ550上の1つまたは複数のコア上で実行し得る。例えば、VEE552は、TCP/IPまたは他のプロトコルまたはプロトコルの組み合わせを利用するパケットのパケットヘッダを処理し得る。VEE552は、ソケットインタフェース554~ソケットインタフェース564および高速接続555(例えば、PCIe、CXL、DDRx(xは整数である))を介して、処理されたパケットのペイロードをサーバ560内のソケットバッファ566に書き込み得る。ソケットバッファ566は、メモリアドレスとして表され得る。アプリケーション(例えば、VEE562を実行するサーバ560において動作する)は、ソケットバッファ566にアクセスして、データを利用または処理し得る。VEE552は、プロトコルスタック変更(例えば、TCP Chimney)のいずれも必要とすることなく、TCPオフロードエンジン(TOE)の動作を提供し得る。
【0101】
いくつかの例において、ネットワーク終端は、スイッチ550のVEE552において行われ、サーバ560は、ソケットバッファ566内のいずれのパケットヘッダも受信しない。例えば、スイッチ550のVEE552は、イーサネット、IP、およびトランスポート層(例えば、TCP、UDP、QUIC)のヘッダのプロトコル処理を実行し得、そのようなヘッダは、サーバ560には提供されることはない。
【0102】
いくつかのアプリケーションは、それら自体のヘッダまたはマーカを有し、スイッチ550は、ペイロードデータに加えて、それらのヘッダまたはマーカをソケットバッファ566に転送またはコピーし得る。したがって、VEE562は、データを伝送するのに使用したプロトコル(例えば、イーサネット、非同期転送モード(ATM)、同期光ネットワーキング(SONET)、同期デジタルハイアラーキ(SDH)、およびトークンリングなどにかかわらず、ソケットバッファ566内のデータにアクセスし得る。
【0103】
いくつかの例において、VEE552および562は、ネットワークサービスチェーン(NSC)またはサービス機能チェーン(SFC)として関連し得、これにより、VEE552は、データを信頼できる環境内のVEE562に、または、少なくともメモリ空間を共有することによって渡す。ネットワークサービスVEE552は、アプリケーションサービスVEE562に連鎖され得、VEE552および562は、層7のデータの受け渡しのための共有メモリバッファを有し得る。
【0104】
テレメトリ集約
データセンタにおいて、デバイス(例えば、コンピュートまたはメモリ)の利用および性能、ならびにソフトウェア性能を測定して、サーバ使用率、およびリソースまたはソフトウェアに対する調整をなすべきかなさないべきかを評価することができる。テレメトリデータの例は、デバイス温度の読み取り、アプリケーション監視、ネットワーク使用率、ディスクスペース使用率、メモリの消費、CPU利用、ファン速度、ならびに、サーバ上で動作するVEEアプリケーションからの固有のテレメトリストリームを含む。例えば、テレメトリデータは、プロセッサまたはコアの使用率の統計、デバイスおよびパーティションの入力/出力の統計、メモリ使利用情報、ストレージ利用情報、バスまたはインターコネクトの利用情報、実行された命令、被ったキャッシュミス、予測されるブランチミスなどのハードウェアイベントをカウントするプロセッサハードウェアレジスタに関するカウンタまたは性能監視イベントを含み得る。実行されているまたは完了しているワークロード要求の場合、以下のうちの1つまたは複数が収集され得る:限定はされないが、トップダウンマイクロアーキテクチャ法(Top-down Micro-Architecture Method)(TMAM)、Unix(登録商標)システムアクティビティレポータ(SAR)コマンドの実行、アプリケーションおよびシステムの性能をプロファイルできるEmonコマンド監視ツールからの出力などのテレメトリデータ。しかしながら、限定はされないが、Linux perfコマンド、Intel PMUツールキット、Iostat、VTune Amplifier、またはmonCliもしくは他のIntel Benchmark Install and Test Tool(Intel(登録商標)BITT)ツールの使用からの出力を含む、様々な監視ツールからの出力などの追加の情報が収集され得る。他のテレメトリデータ、例えば、限定はされないが、消費電力およびプロセス間通信などが監視され得る。収集されたデーモンに関して説明されるものなどの、様々なテレメトリ技術が使用され得る。
【0105】
データセンタ内のVEEがテレメトリデータを中央オーケストレータに伝送するため、帯域幅要件は莫大となり得、東西トラフィックはテレメトリデータによって圧倒され得る。いくつかの場合では、サーバによって重要性能インジケータ(KPI)が提供され、これらのKPIのうちの1つが問題を示す場合、サーバは、テレメトリのよりロバストなセットを送信して、より詳細な調査を可能にする。
【0106】
いくつかの実施形態では、サーバとスイッチとの間で高速接続が使用される場合、東西トラフィックに負荷をかけることなく、はるかにより多い情報がサーバからスイッチに受け渡され得る。スイッチは、過剰な東西トラフィックオーバヘッドでネットワークに負荷をかけることなく、より多くのテレメトリの最小セット(例えば、KPI)をサーバから収集することができる。しかしながら、いくつかの例において、サーバは、エラーの場合などにより多くのデータまたは履歴が要求されない限り、KPIをスイッチに送信し得る。スイッチのために実行されたオーケストレータ(例えば、図2Aのオーケストレーション制御プレーン202)は、拡張されたテレメトリデータ(例えば、図2Aのテレメトリ204)を使用して、そのラック上のサーバの各々の利用可能な容量を決定することができ、複数のサーバのテレメトリを考慮して性能を最大化させるために、改良されたマルチサーバジョブ配置を提供することができる。
【0107】
VEEの実行および移行
図6は、オーケストレーション制御プレーンを実行して、どのデバイスがVEEを実行するかを管理するスイッチの一例を示す。スイッチ602上で実行するオーケストレーション制御プレーン604は、適用可能なSLAへの準拠の点から1つまたは複数のVEEの性能を監視し得、VEEがSLA要件(例えば、アプリケーションの利用可能性(例えば、就業日に99.999%であり、夕方または週末は99.9%)、クエリもしくは他の呼び出しに対する最大許容応答時間、格納されたデータの実際の物理位置の要件、または暗号化もしくはセキュリティの要件)に準拠していない場合、または、SLA要件の非遵守に近い範囲内である場合、オーケストレーション制御プレーン604は、1つまたは複数の新しいVEEをインスタンス化して、VEE間でワークロードを均衡させることができる。ワークロードが低下するにつれて、余剰のVEEは分解されるかまたは非アクティブ化され、ロードが容量に達したときに使用するために別のVEE(または後の時間において同じVEE)に割り当てられるようにリソースを開放する。例えば、ワークロードは、パケットもしくはMemcachedサーバ、データベース、またはウェブサーバのためのプロトコル処理およびネットワーク終端など、少なくとも任意のタイプのアクティビティを含み得る。例えば、VEE606はプロトコル処理を実行することができ、ワークロードが増加した場合、VEE606の複数のインスタンスがスイッチ602上でインスタンス化され得る。
【0108】
いくつかの例において、スイッチ602上で実行するオーケストレーション制御プレーン604は、スイッチ602またはサーバ上で実行する任意のVEEを別のサーバ上での実行に移行するかどうかを決定し得る。例えば、移行は、VEEが実行しているスイッチ602のシャットダウンまたはリスタートに依存し得、これにより、VEEがサーバ上で実行させられ得る。例えば、VEE移行は、VEEが実行しているサーバのシャットダウンまたはリスタートに依存し得、これにより、VEEがスイッチ602または別のサーバ上で実行させられ得る。
【0109】
いくつかの例において、オーケストレーション制御プレーン604は、特定のプロセッサ上でVEEを実行するか、またはスイッチ602間もしくは任意のサーバ608-0~608-N間でVEEを移行させるかを決定することができる。VEE606またはVEE610は、必要に応じて、サーバからスイッチに、スイッチからサーバに、またはサーバから別のサーバに移行し得る。例えば、VEE606は、サーバが再起動されることに関連して短期間だけスイッチ602上で実行し得、VEEは、再起動されたサーバまたは別のサーバに戻るように移行され得る。
【0110】
いくつかの例において、スイッチ602は、スイッチ602上で動作するVEE、またはスイッチ602に接続された任意のサーバ間の通信を可能にする仮想スイッチ(vSwitch)を実行し得る。仮想スイッチは、Microsoft Hyper-V、Open vSwitch、およびVMware vSwitchesなどを含み得る。
【0111】
スイッチ602は、そのVEEのためのS-IOV、SR-IOV、またはMR-IOVをサポートし得る。この例において、スイッチ602上で動作するVEEは、S-IOV、SR-IOV、またはMR-IOVを介して1つまたは複数のサーバ内のリソースを利用する。S-IOV、SR-IOV、またはMR-IOVは、VEEにわたる接続またはバス共有を許可し得る。いくつかの例において、スイッチ602上で動作するVEEがネットワーク終端プロキシVEEとして動作する場合、ラック内およびスイッチ602内の1つまたは複数の対応するVEEが1つまたは複数のサーバ上で動作する。スイッチ602上で動作するVEEはパケットを処理することができ、サーバまたはスイッチ602上のコア上で動作するVEEは、アプリケーション(例えば、データベースおよびウェブサーバなど)を実行することができる。SIOV、SR-IOV、またはMR-IOV(または他のスキーム)の使用により、サーバリソースが構成されることが可能となり得、これにより、物理的に分散したサーバが論理的に1つのシステムとなるが、ネットワーク処理がスイッチ602で行われるようにタスクは分割されている。
【0112】
前述したように、スイッチ602は、ラック内の1つまたは複数のサーバ608-0~608-N上のリソースのうちの少なくともいくつかへの高速接続を使用することができ、それにより、ラック内のサーバのいずれかからのリソースへのアクセスが、スイッチ602上で動作するVEE606に提供される。オーケストレーション制御プレーン604は、VEEをリソースに効率的に割り当てることができ、単一のサーバにおいて実行され得ることに制限されないが、また、スイッチ602およびサーバ608-0~608-Nにおいて実行する。この特徴により、アクセラレータなど、潜在的に制約されたリソースが最適に割り当てられることが可能となる。
【0113】
図7Aは、サーバから別のサーバへのVEEの移行の一例を示す。例えば、VEEのライブ移行(例えば、Microsoft(登録商標)のHyperVまたはVMware(登録商標)のvSphere)を実行して、アクティブなVEEを移行することができる。(1)において、VEEはTORスイッチに伝送される。(2)において、VEEは、データセンタコアネットワークを通じて伝送され、(3)において、VEEは、別のラックのTORスイッチに伝送される。(4)において、VEEはサーバに伝送され、ここで、VEEは、別のハードウェア環境における実行を開始し得る。
【0114】
図7Bは、VEEの移行の一例を示す。この例において、VEEは、スイッチおよびラック内の接続されたサーバのリソースを使用するスイッチ上で実行され得る。(1)において、VEEがスイッチからコアネットワークに伝送される。(2)において、VEEが実行のために別のスイッチに伝送される。別のスイッチは、スイッチおよびラック内の接続されたサーバのリソースを使用することができる。他の例において、図7Aの例におけるように、VEEの宛先はサーバであり得る。したがって、サーバリソースを拡大したスイッチ上でVEEを実行することにより、VEEの移行における工程がより少なくなり、VEEは、図7Aのシナリオよりも図7Bのシナリオにおいてより早く実行を開始することができる。
【0115】
図8Aは、例示的なプロセスを示す。プロセスは、様々な実施形態に従ってプロセッサを強化したスイッチによって実行され得る。802において、スイッチは、オーケストレーション制御プレーンを実行するように構成され得る。例えば、オーケストレーション制御プレーンは、スイッチ、およびスイッチと同じラック内にある、スイッチに接続された1つまたは複数のサーバのコンピュート、メモリ、およびソフトウェアリソースを管理し得る。サーバは、仮想化実行環境の実行を制御するハイパーバイザを実行することができ、また、オーケストレーション制御プレーンによる構成を許可するまたは許可しない。例えば、スイッチとサーバとの間の通信を提供するために接続が使用され得る。オーケストレーション制御プレーンは、テレメトリがデータセンタ内の東西トラフィックに寄与することなく、接続を介してラック内のサーバからテレメトリを受信することができる。接続の様々な例は本明細書で説明されている。
【0116】
804において、スイッチは、仮想化実行環境を実行して、サーバ上で実行する少なくとも1つの仮想化実行環境のためのプロトコル処理を実行するように構成され得る。プロトコル処理の様々な例は本明細書で説明されている。いくつかの例において、スイッチは、受信されたパケットのネットワーク終端を実行し、受信されたパケットからのデータをサーバまたはスイッチのメモリバッファに提供し得る。しかしながら、仮想化実行環境は、パケットまたはプロトコル処理に関する、またはそれとは無関係の、任意のタイプの動作を実行し得る。例えば、仮想化実行環境は、Memcachedサーバを実行するか、または別のラック内、またはデータセンタの外部のメモリデバイス、またはウェブサーバもしくはデータベースからデータを取得することができる。
【0117】
806において、オーケストレーション制御プレーンは、仮想化実行環境へのリソースの割り当てを変更するかどうかを決定することができる。例えば、仮想化実行環境のための適用可能なSLAまたは仮想化実行環境により処理されるパケットのフローが満たされているか満たされていないかに基づいて、オーケストレーション制御プレーンは、仮想化実行環境へのリソースの割り当てを変更するかどうかを決定することができる。SLAが満たされていないか、または違反する可能性が高いと見なされるシナリオの場合、808において、オーケストレーション制御プレーンは、仮想化実行環境による使用のための追加のコンピューティング、ネットワーキング、またはメモリリソースを追加し得るか、または、1つまたは複数の追加の仮想化実行環境をインスタンス化して処理を補助し得る。いくつかの例において、仮想化実行環境は、リソース可用性を改善するためにスイッチからサーバに移行され得る。
【0118】
SLAが満たされているシナリオの場合、プロセスは806に戻る。いくつかの場合では、パケット処理アクティビティが低いまたはアイドル状態である場合、オーケストレーション制御プレーンは、仮想化実行環境が利用可能な計算リソースの割り当て解除を行い得ることに留意されたい。いくつかの例において、SLAが満たされている場合、仮想化実行環境は、利用する別の仮想化実行環境のためのリソースを提供するためにスイッチからサーバに移行され得る。
【0119】
図8Bは、例示的なプロセスを示す。プロセスは、様々な実施形態に従ってプロセッサを強化したスイッチによって実行され得る。820において、スイッチ上で実行する仮想化実行環境は、受信されたパケットのパケット処理を実行することができる。パケット処理は、ヘッダ解析、フロー識別情報、セグメンテーション、再アセンブリ、受信確認(ACK)、否定確認(NACK)、パケット再伝送識別情報および要求、輻輳管理(例えば、トランスミッタのフロー制御)、チェックサム確認、復号、暗号化、またはセキュアトンネリング(例えば、トランスポート層セキュリティ(TLS)もしくはセキュアソケット層(SSL))、または他の動作のうちの1つまたは複数を含み得る。例えば、仮想化実行環境を処理するパケットおよびプロトコルは、ポーリング、ビジーポーリングを実行し得るか、または、割込みに依存して、1つまたは複数のポートからパケットバッファにおいて受信された、新たに受信したパケットを検出し得る。新たに受信したパケットの検出に基づいて、仮想化実行環境は受信されたパケットを処理する。
【0120】
822において、スイッチ上で実行する仮想化実行環境は、パケットからのデータを利用可能に可能するか破棄するかを決定し得る。例えば、パケットがアクセス制御リスト(ACL)の拒否ステータスを条件とする場合、パケットは破棄され得る。データが、次の仮想化実行環境に提供されるものと決定された場合、プロセスは824に進み得る。パケットが破棄されるものと決定された場合、プロセスは826に進み得、ここでパケットが破棄される。
【0121】
824において、仮想化実行環境は、サーバ上で実行する仮想化実行環境に、データが利用可能であることを通知し、サーバ上で実行する仮想化実行環境によるアクセスのためにデータを提供し得る。スイッチ上で実行する仮想化実行環境により、データが、サーバ上で実行する仮想化実行環境にアクセス可能なバッファにコピーさせられ得る。例えば、データをバッファにコピーするために、ダイレクトメモリアクセス(DMA)、RDMA、または他のダイレクトコピースキームが使用され得る。他の例において、データは、処理のために、スイッチ上で実行される仮想化実行環境に利用可能にされる。
【0122】
図8Cは、例示的なプロセスを示す。プロセスは、様々な実施形態に従ってプロセッサを強化したスイッチによって実行され得る。830において、スイッチは、仮想化実行環境を実行して、スイッチと同じもしくは異なるラック内のデバイスからのデータの取得、またはスイッチと同じもしくは異なるラック内のデバイスへのデータのコピーを実行するように構成され得る。
【0123】
832において、仮想化実行環境は、メモリアドレスに関連付けられた宛先デバイスの情報を含むように構成され得る。例えば、情報は、メモリトランザクションにおけるメモリアドレスに対応する宛先デバイスまたはサーバ(例えば、IPアドレスまたはMACアドレス)の変換を示し得る。例えば、読み取りメモリトランザクションの場合、デバイスまたはサーバは、メモリアドレスに対応するデータを格納し得、データは、デバイスまたはサーバにおいてメモリアドレスから読み取られ得る。例えば、書き込みメモリトランザクションの場合、デバイスまたはサーバは、書き込みトランザクションのための対処に対応するデータを受信および格納し得る。
【0124】
834において、スイッチは、同じラックのサーバからメモリアクセス要求を受信し得る。836において、スイッチ上で実行する仮想化実行環境は、メモリアクセス要求を管理し得る。いくつかの例において、836の性能は838の性能を含み得、スイッチ上で実行する仮想化実行環境は、メモリアクセス要求を宛先サーバに転送し得る。いくつかの例において、メモリアクセス要求がサーバに送信されるが、サーバが要求されたデータを格納していない場合、スイッチは、メモリアクセス要求を、転じて要求を宛先サーバに送信することになるサーバに送信する代わりに、メモリアクセス要求を、要求されたデータを格納する宛先サーバにリダイレクトし得る。
【0125】
いくつかの例において、836の性能は840の性能を含み得、スイッチ上で実行する仮想化実行環境は、メモリアクセス要求を実行し得る。メモリアクセス要求が書き込みコマンドである場合、仮想化実行環境は、同じまたは異なるラック内のデバイスにおけるメモリアクセス要求に対応するメモリアドレスにデータを書き込み得る。メモリアクセス要求が読み取りコマンドである場合、仮想化実行環境は、同じまたは異なるラック内のデバイスにおけるメモリアクセス要求に対応するメモリアドレスからデータをコピーし得る。例えば、データの書き込みまたは読み取りに、リモートダイレクトメモリアクセスが使用され得る。
【0126】
読み取り要求の場合、スイッチは、スイッチに接続されたサーバによるアクセスのために、データをローカルにキャッシュし得る。オーケストレーション制御プレーンがスイッチおよびサーバのメモリリソースを管理する場合、ラックの任意のサーバ上で実行する任意の仮想化実行環境がデータにアクセスするまたはそれを修正することができるように、取得したデータは、スイッチまたは任意のサーバのメモリデバイスに格納され得る。例えば、スイッチ、およびラックのサーバにアクセス可能であるメモリデバイスは、ニアメモリとしてデータにアクセスすることができる。データが更新された場合、スイッチは、データを格納する更新済みデータをメモリデバイスに書き込み得る。
【0127】
例えば、ブロック840は、スイッチがMemcachedサーバを実行し、データは、スイッチと同じラック内にあるサーバに格納されるシナリオにおいて実行され得る。スイッチ上で実行するMemcachedサーバは、別のサーバからデータを取得し、取得したデータを、ラックのメモリまたはストレージ内のキャッシュに格納することによって、キャッシュミスに対応するメモリアクセス要求に応答し得る。
【0128】
図9は、システムを示す。システムは、スイッチを利用して、システム内のリソースを管理し、本明細書で説明される他の実施形態を実行し得る。システム900は、システム900のための処理、動作管理および命令の実行を提供するプロセッサ910を含む。プロセッサ910は、システム900に処理を提供するための任意のタイプのマイクロプロセッサ、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、処理コアもしくは他の処理ハードウェアまたはプロセッサの組み合わせを含んでよい。プロセッサ910は、システム900の動作全体を制御し、プロセッサ910は、1つまたは複数のプログラマブル汎用マイクロプロセッサまたはプログラマブル専用マイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラマブルコントローラ、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、または同様のもの、あるいはそのようなデバイスの組み合わせであってよく、またはそれらを含んでよい。
【0129】
一例において、システム900は、プロセッサ910に結合されたインタフェース912を含み、これは、メモリサブシステム920もしくはグラフィックスインタフェースコンポーネント940、またはアクセラレータ942などの、より高帯域幅の接続を必要とするシステムコンポーネントのための高速インタフェースまたは高スループットインタフェースを表し得る。インタフェース912は、スタンドアロン型コンポーネントであり得るまたはプロセッサダイ上に統合され得るインタフェース回路を表す。存在する場合、グラフィックスインタフェース940は、システム900のユーザに視覚表示を提供するためのグラフィックスコンポーネントにインタフェースする。一例において、グラフィックスインタフェース940は、ユーザに出力を提供する高細精度(HD)ディスプレイを駆動し得る。高解像度とは、約100PPI(インチ当たりの画素)以上の画素密度を有するディスプレイを指してよく、フルHD(例えば、1080p)、Retinaディスプレイ、4K(超高解像度またはUHD)またはその他などのフォーマットを含んでよい。一例において、ディスプレイは、タッチスクリーンディスプレイを含むことができる。一例において、グラフィックスインタフェース940は、メモリ930に格納されたデータに基づいて、もしくはプロセッサ910によって実行される動作に基づいて、またはその両方に基づいて、ディスプレイを生成する。一例において、グラフィックスインタフェース940は、メモリ930に格納されたデータに基づいて、もしくはプロセッサ910によって実行される動作に基づいて、またはその両方に基づいて、ディスプレイを生成する。
【0130】
アクセラレータ942は、プロセッサ910によりアクセスまたは使用され得る、プログラマブル機能または固定機能のオフロードエンジンであり得る。例えば、アクセラレータ942中の1つのアクセラレータは、圧縮(DC)機能、公開鍵暗号化(PKE)、サイファ(cipher)、ハッシュ/認証機能、復号などの暗号サービス、または他の機能もしくはサービスを提供してよい。いくつかの実施形態では、追加的にまたは代替的に、アクセラレータ942中の1つのアクセラレータは、本明細書で説明されるフィールド選択コントローラ機能を提供する。いくつかの場合では、様々なデバイス(例えば、CPUを含み、CPUとの電気インタフェースを提供するマザーボードまたは回路基板へのコネクタ)アクセラレータ942は、CPUに統合されるかまたはCPUに接続され得る。例えば、アクセラレータ942は、シングルコアプロセッサもしくはマルチコアプロセッサ、グラフィックス処理ユニット、論理実行ユニットのシングルレベルキャッシュもしくは論理実行ユニットのマルチレベルキャッシュ、プログラムもしくはスレッドを独立的に実行するために使用可能な機能ユニット、特定用途向け集積回路(ASIC)、ニューラルネットワークプロセッサ(NNP)、プログラマブル制御ロジック、および、フィールドプログラマブルゲートアレイ(FPGA)などのプログラマブル処理要素を含んでよい。アクセラレータ942は、複数のニューラルネットワーク、CPU、プロセッサコア、汎用グラフィックス処理ユニット、またはグラフィックス処理ユニットを、人工知能(AI)または機械学習(ML)モデルが使用できるように提供することができる。例えば、AIモデルは、強化学習スキーム、Q学習スキーム、深層Q学習、またはAsynchronous Advantage Actor-Critic(A3C)、組み合わせニューラルネットワーク、再帰組み合わせニューラルネットワーク、または他のAIもしくはMLモデルのいずれかまたは組み合わせを使用し得る、または含み得る。複数のニューラルネットワーク、プロセッサコアまたはグラフィックス処理ユニットが、AIモデルもしくはMLモデルによる使用のために利用可能にされてよい。
【0131】
メモリサブシステム920は、システム900のメインメモリを表し、プロセッサ910により実行されるコードまたはルーチンを実行するのに使用されるデータ値のためのストレージを提供する。メモリサブシステム920は、リードオンリメモリ(ROM)、フラッシュメモリ、DRAMなどの1つまたは複数の多様なランダムアクセスメモリ(RAM)、または他のメモリデバイス、またはそのようなデバイスの組み合わせなどの1つまたは複数のメモリデバイス930を含み得る。メモリ930は、とりわけ、システム900内で命令を実行するためのソフトウェアプラットフォームを提供するためのオペレーティングシステム(OS)932を格納およびホストする。さらに、アプリケーション934は、メモリ930からOS932のソフトウェアプラットフォーム上で実行することができる。アプリケーション934は、1つまたは複数の機能の実行を行うための独自の動作ロジックを有するプログラムを表す。プロセス936は、OS932、もしくは1つまたは複数のアプリケーション934、またはこれらの組み合わせに補助機能を提供するエージェントまたはルーチンを表す。OS932、アプリケーション934および処理936は、システム900用の機能を提供するためのソフトウェアロジックを提供する。一例において、メモリサブシステム920はメモリコントローラ922を含み、メモリコントローラ922は、コマンドを生成してメモリ930に発行するためのメモリコントローラである。メモリコントローラ922は、プロセッサ910の物理的部分またはインタフェース912の物理的部分であり得ることが理解されるであろう。例えば、メモリコントローラ922は、プロセッサ910を有する回路に統合された統合メモリコントローラであり得る。
【0132】
具体的に示されていないが、システム900が、メモリバス、グラフィックスバス、インタフェースバス、または他のものなどの1つまたは複数のバスまたはバスシステムをデバイス間に含み得ることが理解されるであろう。バスまたは他の信号線は、コンポーネントを互いに通信可能または電気的に結合するか、またはコンポーネントを通信可能かつ電気的に結合することができる。バスは、物理的通信回線、ポイントツーポイント接続、ブリッジ、アダプタ、コントローラ、もしくは他の回路、またはこれらの組み合わせを含むことができる。バスは例えば、システムバス、ペリフェラルコンポーネントインターコネクト(PCI)バス、ハイパートランスポートもしくは業界標準アーキテクチャ(ISA)バス、スモールコンピュータシステムインタフェース(SCSI)バス、ユニバーサルシリアルバス(USB)、または米国電気電子学会(IEEE)規格1394バス(ファイヤワイヤ)のうちの1つまたは複数を含み得る。
【0133】
一例において、システム900は、インタフェース912に結合され得るインタフェース914を含む。一例において、インタフェース914は、スタンドアロン型コンポーネントと集積回路とを含み得るインタフェース回路を表す。一例において、複数のユーザインタフェースコンポーネントもしくは周辺コンポーネントまたはその両方がインタフェース914に結合する。ネットワークインタフェース950は、1つまたは複数のネットワーク経由でリモートデバイス(例えばサーバまたは他のコンピューティングデバイス)と通信する能力をシステム900に提供する。ネットワークインタフェース950は、イーサネット(登録商標)アダプタ、無線相互接続コンポーネント、セルラネットワーク相互接続コンポーネント、USB(ユニバーサルシリアルバス)、または他の有線規格ベースもしくは無線規格ベースのインタフェースまたは独自のインタフェースを含むことができる。ネットワークインタフェース950は、同じデータセンタまたはラック内にあるデバイス、またはリモートデバイスにデータを伝送することができ、メモリに格納されたデータを送信することを含むこともできる。ネットワークインタフェース950は、リモートデバイスからデータを受信してよく、リモートデバイスは、受信されたデータをメモリに格納することを含んでよい。様々な実施形態が、ネットワークインタフェース950、プロセッサ910、およびメモリサブシステム920と連携して用いられてよい。
【0134】
一例において、システム900は、1つまたは複数の入力/出力(I/O)インタフェース960を含む。I/Oインタフェース960は、1つまたは複数のインタフェースコンポーネントを含み得る。当該インタフェースコンポーネントを通じて、ユーザは、システム900とやり取りする(例えば、音声、英数字、触覚/タッチまたは他のインタフェース)。周辺インタフェース970は、具体的には上述されていない任意のハードウェアインタフェースを含み得る。一般にペリフェラルとは、システム900に依存的に接続されるデバイスを指す。依存接続とは、システム900が、動作が実行され、かつ、ユーザがやり取りするソフトウェアプラットフォームまたはハードウェアプラットフォームまたはその両方を提供するものである。
【0135】
一例において、システム900は、不揮発性方式でデータを格納ためのストレージサブシステム980を含む。一例において、いくつかのシステム実装例において、ストレージ980の少なくとも特定のコンポーネントは、メモリサブシステム920のコンポーネントと重複し得る。ストレージサブシステム980は、1つまたは複数の磁気、ソリッドステート、または光ベースディスク、またはこれらの組み合わせなど、不揮発的に大量のデータを格納するための任意の従来の媒体であってよく、またはそれらを含んでよいストレージデバイス984を含む。ストレージ984は、コードまたは命令およびデータ986を永続的状態で保持する(例えば、システム900への電力供給の遮断にかかわらず、値は保持される)。メモリ930は、典型的には、プロセッサ910に命令を提供する実行または動作メモリであるが、ストレージ984は、一般に「メモリ」と見なすことができる。ストレージ984は不揮発性であるが、メモリ930は揮発性メモリを含むことができる(例えば、システム900への電力供給が遮断された場合、データの値または状態は不確定である)。一例において、ストレージサブシステム980は、ストレージ984とインタフェースするためのコントローラ982を含む。一例において、コントローラ982は、インタフェース914またはプロセッサ910の物理的部分である、または、プロセッサ910およびインタフェース914の両方における回路またはロジックを含み得る。
【0136】
揮発性メモリは、デバイスへの電力が遮断された場合に、その状態(したがって、内部に格納されたデータ)が不確定になるメモリである。動的揮発性メモリは、状態を維持するためにデバイスに格納されたデータをリフレッシュする必要がある。動的揮発性メモリの一例には、DRAM(ダイナミックランダムアクセスメモリ)、または同期式DRAM(SDRAM)などの何らかの変形が含まれる。揮発性メモリの別の例には、キャッシュまたはスタティックランダムアクセスメモリ(SRAM)が含まれる。本明細書に記載されるように、メモリサブシステムは、DDR3(ダブルデータレートバージョン3、2007年6月27日にJEDEC(半導体技術協会)によって最初にリリース)などの多くのメモリ技術と互換性があり得る。DDR4(DDRバージョン4、JEDECによって2012年9月に公開された初期仕様)、DDR4E(DDRバージョン4)、LPDDR3(Low Power DDRバージョン3、JESD209-3B、JEDECによって2013年8月に公開された)、LPDDR4(LPDDRバージョン4、JESD209-4、2014年8月にJEDECによって最初に公開された)、WIO2(Wide Input/Outputバージョン2、JESD229-2、2014年10月にJEDECによって最初に公開された)、HBM(高帯域幅メモリ、JESD325、2013年10月にJEDECによって最初に公開された)、LPDDR5(JEDECによって現在審議中)、JEDECによって現在審議中のHBM2(HBMバージョン2)など、またはその他、またはメモリ技術の組み合わせ、およびこのような仕様の派生版もしくは拡張版に基づく技術である。例えば、DDRまたはDDRxは、DDRの任意のバージョンを指してよく、xは整数である。
【0137】
不揮発性メモリデバイス(NVM)は、デバイスへの電力が遮断されてもその状態が確定しているメモリである。一実施形態において、NVMデバイスにはブロックアドレス指定可能メモリデバイスが含まれてよく、例えば、NAND技術、またはより具体的には、マルチスレッショルドレベルNANDフラッシュメモリ(例えば、シングルレベルセル("SLC")、マルチレベルセル("MLC")、クワッドレベルセル("QLC")、トリレベルセル("TLC")またはいくつかの他のNAND)が挙げられる。NVMデバイスとしては、シングルレベルもしくはマルチレベル相変化メモリ(PCM)またはスイッチ付き相変化メモリ(PCMS)などの、バイトアドレス指定可能なライトインプレイス(write-in-place)3次元クロス・ポイントメモリデバイスあるいは他のバイトアドレス指定可能なライトインプレイスNVMデバイス(永続メモリとも称される)、カルコゲナイド系相変化材料(例えば、カルコゲナイドガラス)を使用するNVMデバイス、金属酸化物ベース、酸素空孔ベースおよび導電性ブリッジランダムアクセスメモリ(CB-RAM)を含む抵抗メモリ、ナノワイヤメモリ、強誘電体ランダムアクセスメモリ(FeRAM、FRAM(登録商標))、メモリスタ技術を組み込んだ磁気抵抗ランダムアクセスメモリ(MRAM)、スピントランスファトルク(STT)MRAM、スピントロニクス磁気接合メモリベースのデバイス、磁気トンネル接合(MTJ)ベースのデバイス、DW(磁壁)およびSOT(スピン軌道トランスファ)ベースのデバイス、サイリスタベースのメモリデバイス、または上記のいずれかの組み合わせ、または他のメモリを挙げることができる。
【0138】
電源(図示せず)は、システム900のコンポーネントに電力を提供する。より具体的には、電源は典型的には、システム900のコンポーネントに電力を提供するためのシステム900内の1つまたは複数の電力供給装置とのインタフェースを取る。一例において、電力供給装置は、壁コンセントに差し込むAC-DC(交流から直流)アダプタを含む。そのようなAC電力は、再生可能エネルギー(例えば、太陽光発電)電源であり得る。一例において、電源は、外付けAC-DC変換器などのDC電源を含む。一例において、電源または電力供給装置は、充電場への近接を介して充電するためのワイヤレス充電ハードウェアを含む。一例において、電源は、内蔵バッテリ、交流電流供給部、モーションベースの電力供給装置、太陽光電力供給装置、または燃料電池電源を含み得る。
【0139】
一例において、システム900は、プロセッサ、メモリ、ストレージ、ネットワークインタフェース、および他のコンポーネントの相互接続されたコンピュートスレッドを使用して実装され得る。PCIe、イーサネット、または光インターコネクトなどの高速相互接続(またはこれらの組み合わせ)が使用されてよい。
【0140】
一例において、システム900は、プロセッサ、メモリ、ストレージ、ネットワークインタフェース、および他のコンポーネント相互接続されたコンピュートスレッドを使用して実装され得る。イーサネット(IEEE802.3)、リモートダイレクトメモリアクセス(RDMA)、インフィニバンド、インターネットワイドエリアRDMAプロトコル(iWarp)、伝送制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)、クイックユーザデータグラムプロトコルインターネット接続(QUIC)、RDMA over Converged Ethernet(RoCE)、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、Intelクイックパスインターコネクト(QPI)、Intelウルトラパスインターコネクト(UPI)、Intelオンチップシステムファブリック(IOSF)、オムニパス、コンピュートエクスプレスリンク(CXL)、ハイパートランスポート、高速ファブリック、NVLink、アドバンスドマイクロコントローラバスアーキテクチャ(AMBA)インターコネクト、OpenCAPI、Gen-Z、Cache Coherent Interconnect for Accelerators(CCIX)、3GPPロングタームエボリューション(LTE)(4G)、3GPP 5G、およびそれらの変形などの高速インターコネクトが使用され得る。
【0141】
本明細書の実施形態は、様々なタイプの計算、スマートフォン、タブレット、パーソナルコンピュータ、およびネットワーキング機器、例えば、スイッチ、ルータ、ラック、およびブレードサーバ、例えば、データセンタおよび/またはサーバファーム環境において用いられるものにおいて実装され得る。データセンタおよびサーバファームで使用されるサーバは、ラックベースのサーバまたはブレードサーバなどのアレイのサーバ構成を備える。これらのサーバは、様々なネットワークプロビジョニングを介して通信するように相互接続され、例えば、サーバのセットをローカルエリアネットワーク(LAN)にパーティショニングし、LANは、LAN間に適切なスイッチ機能およびルーティング機能を有し、プライベートイントラネットを形成する。例えば、クラウドホスト機能は通常、多数のサーバを持つ大規模なデータセンタを用いてよい。ブレードは、サーバタイプの機能を実行するように構成された別個のコンピューティングプラットフォームを含み、すなわち、「カード上のサーバ(server on a card)」である。したがって、各ブレードは、従来のサーバと共通のコンポーネントを含み、これには、適切な集積回路(IC)と基板に搭載された他のコンポーネントとを結合するための内部配線(例えば、バス)を提供するメインプリント回路基板(メインボード)が含まれる。
【0142】
図10は、各々がトップオブラック(ToR)スイッチ1004と、ポッドマネージャ1006と、複数のプールされたシステムドロワとを含む、複数のコンピューティングラック1002を含む環境1000を示す。本明細書のスイッチの実施形態を使用して、デバイスリソース、仮想実行環境動作、および、VEEに対するデータ局所性(例えば、VEEを実行するものと同じラック内でのデータの格納)を管理することができる。一般に、プールされたシステムドロワは、プールされたコンピュートドロワとプールされたストレージドロワを含んでよい。任意選択的に、プールされたシステムドロワは、プールされたメモリドロワおよびプールされた入力/出力(I/O)ドロワも含み得る。図示された実施形態では、プールされたシステムドロワは、Intel(登録商標)XEON(登録商標)プールされたコンピュータドロワ1008、およびIntel(登録商標)ATOMプールされたコンピュートドロワ1010、プールされたストレージドロワ1012、プールされたメモリドロワ1014、およびプールされたI/Oドロワ1016を含む。プールされたシステムドロワの各々は、40ギガビット/秒(Gb/s)または100Gb/sのイーサネットリンクまたは100+Gb/sのシリコンフォトニクス(SiPh)光リンクなどの高速リンク1018を介してToRスイッチ1004に接続される。
【0143】
ネットワーク1020への接続によって示されるように、コンピューティングラック1002のうちの複数は、それらのToRスイッチ1004を介して(例えば、ポッドレベルのスイッチまたはデータセンタスイッチに)相互接続され得る。いくつかの実施形態では、コンピューティングラック1002のグループは、ポッドマネージャ1006を介して別個のポッドとして管理される。一実施形態において、単一のポッドマネージャを使用して、ポッド内の全てのラックを管理する。代替的に、分散ポッドマネージャをポッド管理動作に使用され得る。
【0144】
環境1000はさらに、環境の様々な態様を管理するのに使用される管理インタフェース1022を含む。これは、ラック構成を管理することを含み、対応するパラメータは、ラック構成データ1024として格納される。
【0145】
図11は、本明細書のスイッチの実施形態によって使用され得る例示的なネットワーク要素を示す。スイッチの様々な実施形態は、ネットワークインタフェース1100の任意の動作を実行することができる。いくつかの例において、ネットワークインタフェース110は、ネットワークインタフェースコントローラ、ネットワークインタフェースカード、ホストファブリックインタフェース(HFI)、ホストバスアダプタ(HBA)として実装され得る。ネットワークインタフェース1100は、バス、PCIe、CXL、またはDDRxを使用して1つまたは複数のサーバに結合され得る。いくつかの例において、ネットワークインタフェース1100は、1つまたは複数のプロセッサを含むシステムオンチップ(SoC)の一部として具現化されてもよく、1つまたは複数のプロセッサをやはり含むマルチチップパッケージに含まれてもよい。
【0146】
ネットワークインタフェース1100は、トランシーバ1102、プロセッサ1104、伝送キュー1106、受信キュー1108、メモリ1110、およびバスインタフェース1112、およびDMAエンジン1152を含み得る。トランシーバ1102は、他のプロトコルが使用され得るものの、IEEE802.3に記載されるようなイーサネットなどの適用可能なプロトコルに適合したパケットの受信および伝送が可能である。トランシーバ1102は、ネットワーク媒体(図示せず)を介してネットワークからパケットを受信し、ネットワークにパケットを伝送することができる。トランシーバ1102は、PHY回路1114およびメディアアクセスコントロール(MAC)回路1116を含み得る。PHY回路1114は、適用可能な物理層の仕様または規格に従ってデータパケットをエンコードおよびデコードするためのエンコードおよびデコード回路(図示せず)を含み得る。MAC回路1116は、伝送されるべきデータを、ネットワーク制御情報およびエラー検出ハッシュ値と共に宛先アドレスおよびソースアドレスを含むパケットにアセンブルするように構成され得る。プロセッサ1104は、プロセッサ、コア、グラフィックス処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または、ネットワークインタフェース1100のプログラミングを可能にする他のプログラマブルハードウェアデバイスの任意の組み合わせであり得る。例えば、プロセッサ1104は、ワークロードを実行し、選択されたリソース上での実行のためのビットストリームを生成するために使用されるリソースの識別情報を提供し得る。例えば、「スマートネットワークインタフェース」は、プロセッサ1104を使用して、ネットワークインタフェースにおけるパケット処理能力を提供し得る。
【0147】
パケットアロケータ1124は、本明細書で説明される時間スロット割り当てまたはRSSを使用した複数のCPUまたはコアによる処理のために受信されたパケットの分散を提供し得る。パケットアロケータ1124がRSSを使用する場合、パケットアロケータ1124は、どのCPUまたはコアがパケットを処理すべきかを決定するために、受信されたパケットのコンテンツに基づいてハッシュを計算するか、または別の決定をなし得る。
【0148】
割込み融合1122は割込み緩和を実行することができ、これにより、ネットワークインタフェースの割込み融合1122は、ホストシステムへの割込みを生成して受信されたパケットを処理する前に、複数のパケットが到着するまで、またはタイムアウトが満了するまで待機する。ネットワークインタフェース1100により受信セグメント融合(RSC)が実行され得、これにより、着信パケットの一部がパケットのセグメントへと組み合わされ得る。ネットワークインタフェース1100は、この融合されたパケットをアプリケーションに提供する。
【0149】
ホストにおいてパケットを中間バッファにコピーして、その後、中間バッファから宛先バッファへの別のコピー動作を使用する代わりに、ダイレクトメモリアクセス(DMA)エンジン1152は、パケットヘッダ、パケットペイロード、および/または記述子をホストメモリから直接ネットワークインタフェースにコピーしてよく、逆もまた同様である。いくつかの例において、DMAエンジン1152は、データダイレクトI/O(DDIO)を使用することによってなど、任意のキャッシュにデータへの書き込みを実行し得る。
【0150】
メモリ1110は、任意のタイプの揮発性または不揮発性メモリデバイスであり得、ネットワークインタフェース1100をプログラミングするのに使用される任意のキューまたは命令を格納し得る。伝送キュー1106は、ネットワークインタフェースによる伝送のためのデータまたはデータへの参照を含み得る。受信キュー1108や、ネットワークインタフェースによりネットワークから受信されたデータまたはデータへの参照を含み得る。記述子キュー1120は、伝送キュー1106または受信キュー1108におけるデータまたはパケットを参照する記述子を含み得る。バスインタフェース1112は、インタフェースにホストデバイス(図示せず)を提供し得る。例えば、バスインタフェース1112は、(他の相互接続規格が使用され得るが)PCI、PCIエクスプレス、PCI-x、PCIエクスプレスのためのPHYインタフェース(PIPE)、シリアルATA、および/またはUSB対応インタフェースと互換性を有し得る。
【0151】
いくつかの例において、本明細書で説明されるネットワークインタフェースおよび他の実施形態は、基地局(例えば、3G、4G、5Gなど)、マクロ基地局(例えば、5Gネットワーク)、ピコステーション、(例えば、IEEE 802.11対応アクセスポイント)、ナノステーション(例えば、ポイントツーマルチポイント(PtMP)アプリケーションのための)、オンプレミスデータセンタ、オフプレミスデータセンタ、エッジネットワーク要素、フォグネットワーク要素、および/またはハをイブリッドデータセンタ(例えば、仮想化、クラウド、およびソフトウェアデファインドネットワーキングを使用して物理データセンタおよび分散マルチクラウド環境にわたってアプリケーションワークロードを配信するデータセンタ)に関連して使用され得る。
【0152】
様々な例は、ハードウェア要素、ソフトウェア要素、またはその両方の組み合わせを使用して実装され得る。いくつかの例において、ハードウェア要素は、デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、回路要素(例えば、トランジスタ、抵抗器、キャパシタ、インダクタなど)、集積回路、ASIC、PLD、DSP、FPGA、メモリユニット、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含んでよい。いくつかの例において、ソフトウェア要素は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、手順、ソフトウェアインタフェース、API、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはこれらの任意の組み合わせを含んでよい。ハードウェア要素および/またはソフトウェア要素を使用して例を実装するかどうかの決定は、所望の計算レート、電力レベル、熱耐性、処理サイクルの予算、入力データレート、出力データレート、メモリリソース、データバス速度および所与の実装に所望のその他の設計または性能の制約など、様々な要因に応じて異なり得る。プロセッサは、ハードウェアステートマシン、デジタル制御論理、中央処理ユニット、または任意のハードウェア、ファームウェア、および/もしくはソフトウェア要素の1つまたは複数の組み合わせであり得る。
【0153】
いくつかの例は、製品または少なくとも1つのコンピュータ可読媒体として使用して実装され得る。コンピュータ可読媒体は、ロジックを格納するための非一時的記憶媒体を含んでよい。いくつかの例において、非一時的記憶媒体は、揮発性メモリまたは不揮発性メモリ、リムーバブルまたは非リムーバブルメモリ、消去可能または非消去可能メモリ、書き込み可能または再書き込み可能なメモリなどを含む、電子データを格納可能な1つまたは複数のタイプのコンピュータ可読記憶媒体を含んでよい。いくつかの例において、ロジックは、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、手順、ソフトウェアインタフェース、API、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組み合わせなどの様々なソフトウェア要素を含み得る。
【0154】
いくつかの例によれば、コンピュータ可読媒体は、機械、コンピューティングデバイス、またはシステムによって実行されると、機械、コンピューティングデバイス、またはシステムに、記載される例による方法および/または動作を実行させる命令を格納または維持する非一時的格納媒体を含み得る。命令は、ソースコード、コンパイル済みコード、解釈済みコード、実行可能コード、静的コード、動的コードなどの任意の好適なタイプのコードを含んでよい。命令は、マシン、コンピューティングデバイスまたはシステムに、特定の機能を実行するように命令するために、事前定義されたコンピュータ言語、方法、または構文に従って実装されてよい。命令は、任意の好適な高レベル、低レベル、オブジェクト指向型、ビジュアル型、コンパイル済みおよび/または解釈済みプログラミング言語を使用して実装されてよい。
【0155】
少なくとも一例の1つまたは複数の態様は、プロセッサ内の様々なロジックを表す少なくとも1つの機械可読媒体に格納された代表的な命令により実装され得、これは、機械、コンピューティングデバイス、またはシステムによって読み取られた場合、機械、コンピューティングデバイス、またはシステムに、本明細書で説明される技術を実行するロジックを製造させる。「IPコア」として知られているそのような表現は、有形の機械可読媒体に格納され、ロジックまたはプロセッサを実際に作成する製造機械にロードする様々な顧客または製造施設に供給され得る。
【0156】
「一例」または「例」という表現の出現は、必ずしも全て同じ例または実施形態を参照するものではない。本明細書に記載の任意の態様は、本明細書に記載の任意の他の態様または同様の態様と組み合わされてよく、これらの態様が、同一の図面また要素に関し説明されているかどうかを問わない。添付の図面内に記載のブロック機能の分割、省略または包含は、これらの機能を実装するためのハードウェアコンポーネント、回路、ソフトウェアおよび/または要素が、実施形態において必ず分割、省略または包含されていることを示唆しない。
【0157】
いくつかの例は、「結合された(coupled)」または「接続された(connected)」という表現を、それらの派生語と共に使用して説明され得る。これらの用語は、必ずしも互いの同義語であることを意図していない。例えば、「接続された(connected)」および/または「欠尾久された(coupled)」という用語を使用した説明は、2つ以上の要素が互いに直接物理的または電気的に接触していることを示し得る。しかしながら、「結合された(coupled)」という用語はまた、2つ以上の要素が互いに直接接触していないが、それでも互いに協働または相互作用することを意味する場合もある。
【0158】
本明細書において、「第1の」、「第2の」などの用語は、任意の順序、量、または重要度を示すものではなく、むしろ、ある要素を別の要素と区別するために使用される。本明細書において、「1つ(a)」および「1つ(an)」という用語は、量の限定を示しておらず、言及された項目のうちの少なくとも1つの存在を示す。本明細書において、信号に関して使用される「アサート(asserted)」という用語は、信号がアクティブであるという信号の状態を示しており、その状態は、ロジック0またはロジック1のいずれかのロジックレベルを信号に適用することで達成され得る。「後(follow)」または「後(after)」という用語は、何らかの他のイベントの直後または後に続くものを指してよい。段階の他のシーケンスもまた、代替的な実施形態により実行されてよい。さらに、具体的な適用に応じて、追加の段階が追加または削除されてよい。任意の組み合わせの変更が使用されてよく、本開示の恩恵を受ける当業者であれば、本開示の多くの変形例、修正例および代替的な実施形態を理解するであろう。
【0159】
選言的言語、例えば、「X、Y、またはZのうちの少なくとも1つ」という表現は、別途具体的に述べられない限り、項目、用語などが、X、Y、もしくはZ、またはそれらの任意の組み合わせ(例えば、X、Y,および/またはZ)のいずれかであり得ることを提示する一般に使用されるコンテキスト内で理解される。故に、そのような選言的言い回しは一般的に、特定の実施形態が、Xのうちの少なくとも1つ、Yのうちの少なくとも1つ、またはZのうちの少なくとも1つのそれぞれが存在することを必要とすることを示唆する意図ではなく、また示唆すべきではない。また、「X、YおよびZのうちの少なくとも1つ」という表現などの結合的言い回しもまた、別途の具体的な反対の指定がない限り、X、Y、ZまたはX、Yおよび/またはZを含む、任意の組み合わせを意味するものとして理解されるべきである。
本明細書中に開示された複数のデバイス、システム、および方法に関する複数の例示的な実施例を以下に提供する。デバイス、システムおよび方法の一実施形態は、以下に記載の例のいずれか1つまたは複数、およびその任意の組み合わせを含んでよい。
【0160】
実施例1は、2つ以上の物理サーバのラックのためのスイッチデバイスであって、前記スイッチデバイスが、前記2つ以上の物理サーバに結合され、前記スイッチデバイスが、受信したパケットのパケットプロトコル処理終端を実行し、受信したパケットのヘッダを含まない前記受信したパケットからのペイロードデータを前記ラックにおける宛先物理サーバの宛先バッファに提供する、スイッチデバイスを備える、方法を含む。
【0161】
実施例2は、前記スイッチデバイスが少なくとも1つの中央処理ユニットを備え、前記少なくとも1つの中央処理ユニットが、前記受信されたパケットに対してパケット処理動作を実行する、任意の実施例を含む。
【0162】
実施例3は、物理サーバが、少なくとも1つの仮想化実行環境(VEE)を実行し、前記少なくとも1つの中央処理ユニットが、VEEを実行する前記物理サーバによってアクセスされるデータを含むパケットのパケット処理ためのVEEを実行する、任意の実施例を含む。
【0163】
実施例4は、前記スイッチデバイスが、メモリアドレスおよび対応する宛先デバイスのマッピングを格納し、前記ラックにおける物理サーバからのメモリトランザクションの受信に基づいて、前記スイッチデバイスが前記メモリトランザクションを実行する、任意の実施例を含む。
【0164】
実施例5は、前記スイッチデバイスが前記メモリトランザクションを実行することが、読み取り要求の場合、前記スイッチデバイスが、前記マッピングに基づいて前記ラックに接続された物理サーバまたは異なるラックの別のデバイスからデータを取得し、前記データを前記スイッチデバイスによって管理されるメモリに格納することを含む、任意の実施例を含む。
【0165】
実施例6は、前記スイッチデバイスが、メモリアドレスおよび対応する宛先デバイスのマッピングを格納し、前記ラックにおける物理サーバからのメモリトランザクションの受信に基づき、前記マッピングに従って別のラックにおける宛先サーバに関連付けられているメモリトランザクションに関連付けられたメモリアドレスに基づいて、前記メモリトランザクションを前記宛先サーバに伝送し、前記メモリトランザクションに対する応答を受信し、前記ラックのメモリに前記応答を格納する、任意の実施例を含む。
【0166】
実施例7は、前記スイッチデバイスが少なくとも1つの中央処理ユニットを備え、前記少なくとも1つの中央処理ユニットが、前記ラックの一部である1つまたは複数の物理サーバの制御プレーンを実行し、前記制御プレーンが、前記1つまたは複数の物理サーバからテレメトリデータを収集し、前記テレメトリデータに基づいて、前記ラックの物理サーバに対する仮想化実行環境(VEE)の実行の割り当て、前記ラックの物理サーバから前記スイッチデバイスの少なくとも1つの中央処理ユニット上での実行へのVEEの移行、前記ラックの物理サーバから前記ラックの別の物理サーバ上での実行へのVEEの移行、または、前記ラックの物理サーバ上で実行するVEEによるアクセスのための前記ラックの物理サーバのメモリの割り当てのうちの1つまたは複数を実行する、任意の実施例を含む。
【0167】
実施例8は、前記スイッチデバイスが少なくとも1つの中央処理ユニットを含み、前記少なくとも1つの中央処理ユニットは、前記ラックの一部である1つまたは複数の物理サーバのための制御プレーンを実行し、 前記制御プレーンが、前記ラックの1つまたは複数の物理サーバ間で仮想化実行環境(VEE)の実行を分散させ、VEEを選択的に終端させるかまたはVEEを前記ラックの別の物理サーバ上もしくは前記スイッチデバイス上での実行に移行させる、任意の実施例を含む。
【0168】
実施例9は任意の実施例を含み、少なくとも1つのプロセッサを含むスイッチであって、前記少なくとも1つのプロセッサは、受信したパケットのパケット終端処理を実行し、関連付けられた受信したパケットのヘッダを含まない、前記受信したパケットからのペイロードデータを、接続を通じて、宛先物理サーバの宛先バッファにコピーする、スイッチ、を備える装置を含む。
【0169】
実施例10は、前記少なくとも1つのプロセッサが仮想化実行環境(VEE)を実行し、前記VEEが前記パケット終端処理を実行する、任意の実施例を含む。
【0170】
実施例11は、前記接続を通じた物理サーバからのメモリトランザクションの受信に基づいて、前記少なくとも1つのプロセッサが、対応する宛先デバイスへのメモリアドレスのマッピングに基づく前記メモリトランザクションを実行する、任意の実施例を含む。
【0171】
実施例12は、前記メモリトランザクションを実行するために、前記少なくとも1つのプロセッサが、読み取り要求の場合、前記接続を通じて前記少なくとも1つのプロセッサまたは異なるラックの別のデバイスに接続された物理サーバからデータを取得し、前記少なくとも1つのプロセッサによって管理されるメモリに前記データを格納する、任意の実施例を含む。
【0172】
実施例13は、前記スイッチに関連付けられたラック内の物理サーバからのメモリトランザクションの受信に基づき、メモリアドレスおよび対応する宛先デバイスのマッピングに従った、別のラックにおける宛先サーバに関連付けられている前記メモリトランザクションに関連付けられたメモリアドレスに基づいて、前記少なくとも1つのプロセッサが前記宛先サーバへの前記メモリトランザクションの伝送を実行し、前記少なくとも1つのプロセッサが、前記メモリトランザクションに対する応答にアクセスし、かつ、前記少なくとも1つのプロセッサが、前記ラックのメモリに前記応答を格納させる、任意の実施例を含む。
【0173】
実施例14は、前記少なくとも1つのプロセッサが、前記スイッチに関連付けられたラックの一部である1つまたは複数の物理サーバの制御プレーンを実行し、前記制御プレーンが、前記1つまたは複数の物理サーバからテレメトリデータを収集し、前記テレメトリデータに基づいて、前記ラックの物理サーバへの仮想化実行環境(VEE)の実行の割り当て、前記ラックの物理サーバから前記スイッチの前記少なくとも1つの中央処理ユニット上での実行へのVEEの移行、前記ラックの物理サーバから前記ラックの別の物理サーバ上での実行へのVEEの移行、または、前記ラックの物理サーバ上で実行しているVEEによるアクセスのサーバスのための前記ラックのメモリの割り当てのうちの1つまたは複数を実行する、任意の実施例を含む。
【0174】
実施例15は、前記少なくとも1つのプロセッサが、前記スイッチに関連付けられたラックの一部である1つまたは複数の物理サーバのための制御プレーンを実行し、前記制御プレーンが、前記ラックの1つまたは複数の物理サーバ間で仮想化実行環境(VEE)の実行を分散させ、VEEを選択的に終端させるかまたは前記ラックの別の物理サーバ上または前記スイッチの一部である少なくとも1つのプロセッサ上での実行へとVEEを移行させる、任意の実施例を含む。
【0175】
実施例16は、前記接続が、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、または任意のタイプのダブルデータレート(DDR)のうちの1つまたは複数と互換性がある、任意の実施例を含む。
【0176】
実施例17は、任意の実施例を含み、命令を格納した少なくとも1つの非一時的コンピュータ可読媒体であって、前記命令が、スイッチによって実行された場合、前記スイッチに、前記スイッチにおいて制御プレーンを実行して、1つまたは複数の物理サーバからテレメトリデータを収集させ、前記テレメトリデータに基づいて、前記スイッチを含むラックの物理サーバへの仮想化実行環境(VEE)の実行の割り当て、前記ラックの物理サーバから前記スイッチの前記少なくとも1つの前記中央処理ユニット上での実行へのVEEの移行、前記ラックの物理サーバから前記ラックの別の物理サーバ上での実行へのVEEの移行、または、前記ラックの物理サーバ上で実行しているVEEによるアクセスのための前記ラックのサーバのメモリの割り当てのうちの1つまたは複数を実行させる、少なくとも1つの非一時的コンピュータ可読媒体を含む。
【0177】
実施例18は、格納された命令を備え、前記命令が、スイッチによって実行された場合、前記スイッチに、メモリアドレスおよび対応する宛先デバイスのマッピングを格納させ、接続を通じた物理サーバからのメモリトランザクションの受信に基づき、かつ、メモリアドレスおよび対応する宛先デバイスのマッピングに基づいて、前記スイッチが、前記接続を通じて前記スイッチに接続された物理サーバまたは異なるラックの別のデバイスからデータを取得し、前記スイッチによって管理されるメモリに前記データを格納させる、任意の実施例を含む。
【0178】
実施例19は、格納された命令を備え、前記命令が、スイッチによって実行された場合、前記スイッチに、メモリアドレスおよび対応する宛先デバイスのマッピングを格納させ、前記スイッチに関連付けられたラックにおけるサーバからのメモリトランザクションの受信に基づき、前記マッピングに従った別のラックにおける宛先サーバに関連付けられている前記メモリトランザクションに関連付けられたメモリアドレスに基づいて、前記スイッチが前記宛先サーバに前記メモリトランザクションを伝送し、前記スイッチが前記メモリトランザクションに対する応答を受信し、前記スイッチが前記ラックのメモリに前記応答を格納する、任意の実施例を含む。
【0179】
実施例20は、前記スイッチと前記ラックの1つまたは複数の物理サーバとの間の接続が、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、または任意のタイプのダブルデータレート(DDR)のうちの1つまたは複数と互換性がある、任意の実施例を含む。
【0180】
実施例21は任意の実施例を含み、ネットワークデバイスであって、受信したパケットのネットワークプロトコル終端を実行する回路と、少なくとも1つのイーサネットポートと、ラック内の異なる物理サーバに接続される複数の接続とを備え、受信したパケットのネットワークプロトコル終端を実行する前記回路が、関連付けられたヘッダを含まない受信したパケットのペイロードを物理サーバに提供する、ネットワークデバイスを含む。
【0181】
[他の可能な項目]
[項目1]
2つ以上の物理サーバのラックのためのスイッチデバイスであって、前記スイッチデバイスが、前記2つ以上の物理サーバに結合され、前記スイッチデバイスが、受信したパケットのパケットプロトコル処理終端を実行し、受信したパケットのヘッダを含まない前記受信したパケットからのペイロードデータを前記ラックにおける宛先物理サーバの宛先バッファに提供する、スイッチデバイスを備える、方法。
[項目2]
前記スイッチデバイスが少なくとも1つの中央処理ユニットを備え、前記少なくとも1つの中央処理ユニットが、前記受信されたパケットに対してパケット処理動作を実行する、項目1に記載の方法。
[項目3]
物理サーバが、少なくとも1つの仮想化実行環境(VEE)を実行し、
前記少なくとも1つの中央処理ユニットが、前記少なくとも1つのVEEを実行する前記物理サーバによってアクセスされるデータを含むパケットのパケット処理ためのVEEを実行する、
項目2に記載の方法。
[項目4]
前記スイッチデバイスが、対応する宛先デバイスに対するメモリアドレスのマッピングを格納し、
前記ラックにおける物理サーバからのメモリトランザクションの受信に基づいて、前記スイッチデバイスが前記メモリトランザクションを実行する、
項目1に記載の方法。
[項目5]
前記スイッチデバイスが前記メモリトランザクションを実行することが、
読み取り要求の場合、前記スイッチデバイスが、前記マッピングに基づいて前記ラックに接続された物理サーバまたは異なるラックの別のデバイスからデータを取得し、前記データを前記スイッチデバイスによって管理されるメモリに格納することを含む、
項目4に記載の方法。
[項目6]
前記スイッチデバイスが、対応する宛先デバイスに対するメモリアドレスのマッピングを格納し、
前記ラックにおける物理サーバからのメモリトランザクションの受信に基づき、
前記マッピングに従って別のラックにおける宛先サーバに関連付けられているメモリトランザクションに関連付けられたメモリアドレスに基づいて、前記メモリトランザクションを前記宛先サーバに伝送し、
前記メモリトランザクションに対する応答を受信し、
前記ラックのメモリに前記応答を格納する、
項目1に記載の方法。
[項目7]
前記スイッチデバイスが少なくとも1つの中央処理ユニットを備え、前記少なくとも1つの中央処理ユニットが、前記ラックに関連付けられた1つまたは複数の物理サーバの制御プレーンを実行し、
前記制御プレーンが、前記1つまたは複数の物理サーバからテレメトリデータを収集し、前記テレメトリデータに基づいて、前記ラックの物理サーバに対する仮想化実行環境(VEE)の実行の割り当て、前記ラックの物理サーバから前記スイッチデバイスの少なくとも1つの中央処理ユニット上での実行へのVEEの移行、前記ラックの物理サーバから前記ラックの別の物理サーバ上での実行へのVEEの移行、または、前記ラックの物理サーバ上で実行するVEEによるアクセスのための前記ラックの物理サーバのメモリの割り当てのうちの1つまたは複数を実行する、
項目1に記載の方法。
[項目8]
前記スイッチデバイスが少なくとも1つの中央処理ユニットを含み、前記少なくとも1つの中央処理ユニットは、前記ラックの一部である1つまたは複数の物理サーバのための制御プレーンを実行し、
前記制御プレーンが、前記ラックの1つまたは複数の物理サーバ間で仮想化実行環境(VEE)の実行を分散させ、VEEを選択的に終端させるかまたはVEEを前記ラックの別の物理サーバ上もしくは前記スイッチデバイス上での実行に移行させる
項目1に記載の方法。
[項目9]
少なくとも1つのプロセッサを含むスイッチであって、前記少なくとも1つのプロセッサは、受信したパケットのパケット終端処理を実行し、関連付けられた受信したパケットのヘッダを含まない、前記受信したパケットからのペイロードデータを、接続を通じて、宛先物理サーバの宛先バッファにコピーする、スイッチ
を備える装置。
[項目10]
前記少なくとも1つのプロセッサが仮想化実行環境(VEE)を実行し、前記VEEが前記パケット終端処理を実行する、項目9に記載の装置。
[項目11]
前記接続を通じた物理サーバからのメモリトランザクションの受信に基づいて、前記少なくとも1つのプロセッサが、対応する宛先デバイスへのメモリアドレスのマッピングに基づく前記メモリトランザクションを実行する
項目9に記載の装置。
[項目12]
前記メモリトランザクションを実行するために、前記少なくとも1つのプロセッサが、
読み取り要求の場合、前記接続を通じて前記少なくとも1つのプロセッサまたは異なるラックの別のデバイスに接続された物理サーバからデータを取得し、前記少なくとも1つのプロセッサによって管理されるメモリに前記データを格納する
項目11に記載の装置。
[項目13]
前記スイッチに関連付けられたラック内の物理サーバからのメモリトランザクションの受信に基づき、
対応する宛先デバイスへのメモリアドレスの前記マッピングに従った、別のラックにおける宛先サーバに関連付けられている前記メモリトランザクションに関連付けられたメモリアドレスに基づいて、前記少なくとも1つのプロセッサが前記宛先サーバへの前記メモリトランザクションの伝送を実行し、
前記少なくとも1つのプロセッサが、前記メモリトランザクションに対する応答にアクセスし、かつ、
前記少なくとも1つのプロセッサが、前記ラックのメモリに前記応答を格納させる
項目12に記載の装置。
[項目14]
前記少なくとも1つのプロセッサが、前記スイッチに関連付けられたラックの一部である1つまたは複数の物理サーバの制御プレーンを実行し、
前記制御プレーンが、前記1つまたは複数の物理サーバからテレメトリデータを収集し、前記テレメトリデータに基づいて、前記ラックの物理サーバへの仮想化実行環境(VEE)の実行の割り当て、前記ラックの物理サーバから前記スイッチの前記少なくとも1つの中央処理ユニット上での実行へのVEEの移行、前記ラックの物理サーバから前記ラックの別の物理サーバ上での実行へのVEEの移行、または、前記ラックの物理サーバ上で実行しているVEEによるアクセスのための前記サーバのラックのメモリの割り当てのうちの1つまたは複数を実行する
項目9に記載の装置。
[項目15]
前記少なくとも1つのプロセッサが、前記スイッチに関連付けられたラックの一部である1つまたは複数の物理サーバのための制御プレーンを実行し、
前記制御プレーンが、前記ラックの1つまたは複数の物理サーバ間で仮想化実行環境(VEE)の実行を分散させ、VEEを選択的に終端させるかまたは前記ラックの別の物理サーバ上または前記スイッチの一部である少なくとも1つのプロセッサ上での実行へとVEEを移行させる
項目9に記載の装置。
[項目16]
前記接続が、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、または任意のタイプのダブルデータレート(DDR)のうちの1つまたは複数と互換性がある、項目9に記載の装置。
[項目17]
命令を格納した少なくとも1つの非一時的コンピュータ可読媒体であって、前記命令が、スイッチによって実行された場合、前記スイッチに、
前記スイッチにおいて制御プレーンを実行して、1つまたは複数の物理サーバからテレメトリデータを収集させ、前記テレメトリデータに基づいて、前記スイッチを含むラックの物理サーバへの仮想化実行環境(VEE)の実行の割り当て、前記ラックの物理サーバから前記スイッチの前記少なくとも1つの前記中央処理ユニット上での実行へのVEEの移行、前記ラックの物理サーバから前記ラックの別の物理サーバ上での実行へのVEEの移行、または、前記ラックの物理サーバ上で実行しているVEEによるアクセスのための前記ラックのサーバのメモリの割り当てのうちの1つまたは複数を実行させる
少なくとも1つの非一時的コンピュータ可読媒体。
[項目18]
格納された命令を備え、前記命令が、スイッチによって実行された場合、前記スイッチに、
対応する宛先デバイスへのメモリアドレスのマッピングを格納させ、
接続を通じた物理サーバからのメモリトランザクションの受信に基づき、かつ、対応する宛先デバイスへのメモリアドレスのマッピングに基づいて、前記接続を通じて前記スイッチに接続された物理サーバまたは異なるラックの別のデバイスからデータを取得し、前記スイッチによって管理されるメモリに前記データを格納させる
項目17に記載の少なくとも1つの非一時的コンピュータ可読媒体。
[項目19]
格納された命令を備え、前記命令が、スイッチによって実行された場合、前記スイッチに、
対応する宛先デバイスへのメモリアドレスのマッピングを格納させ、
前記スイッチに関連付けられたラックにおけるサーバからのメモリトランザクションの受信に基づき、
前記マッピングに従った別のラックにおける宛先サーバに関連付けられている前記メモリトランザクションに関連付けられたメモリアドレスに基づいて、前記宛先サーバへの前記メモリトランザクションの伝送を実行させ、
前記メモリトランザクションに対する応答を受信させ、
前記ラックのメモリに前記応答を格納させる
項目17に記載の少なくとも1つの非一時的コンピュータ可読媒体。
[項目20]
前記スイッチと前記ラックの1つまたは複数の物理サーバとの間の接続が、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、または任意のタイプのダブルデータレート(DDR)のうちの1つまたは複数と互換性がある
項目17に記載の少なくとも1つの非一時的コンピュータ可読媒体。
[項目21]
ネットワークデバイスであって、
受信したパケットのネットワークプロトコル終端を実行する回路と、
少なくとも1つのイーサネットポートと、
ラック内の異なる物理サーバに接続される複数の接続とを備え、受信したパケットのネットワークプロトコル終端を実行する前記回路が、関連付けられたヘッダを含まない受信したパケットのペイロードを物理サーバに提供する
ネットワークデバイス。
図1A
図1B
図1C
図1D
図2A
図2B
図3
図4A
図4B
図5A
図5B
図5C
図6
図7A
図7B
図8A
図8B
図8C
図9
図10
図11
【国際調査報告】