JP2022179413A - 元データパケットを使用するサービス状態レプリケーションのための方法及びシステム - Google Patents

元データパケットを使用するサービス状態レプリケーションのための方法及びシステム Download PDF

Info

Publication number
JP2022179413A
JP2022179413A JP2022081335A JP2022081335A JP2022179413A JP 2022179413 A JP2022179413 A JP 2022179413A JP 2022081335 A JP2022081335 A JP 2022081335A JP 2022081335 A JP2022081335 A JP 2022081335A JP 2022179413 A JP2022179413 A JP 2022179413A
Authority
JP
Japan
Prior art keywords
session
packet
flow
service node
packets
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.)
Pending
Application number
JP2022081335A
Other languages
English (en)
Inventor
クリシュナ,ドッダパネニ
Doddapaneni Krishna
サラト,カミセッティ
Kamisetty Sarat
バラクリシュナン,ラマン
Raman Balakrishnan
チャンドラセカラン,スワミナサン
Swaminathan Chandrasekaran
ナンブル マルティ,ラン
Ram Namburu Maruthi
ヴィジェイ,サンパス
Sampath Vijay
アクシャイ,ナダハリ
Nadahalli Akshay
ピラブ,ラマン
Raman Pirabhu
ジョン,クルス
cruz John
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.)
Pensando Systems Inc
Original Assignee
Pensando Systems Inc
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 Pensando Systems Inc filed Critical Pensando Systems Inc
Publication of JP2022179413A publication Critical patent/JP2022179413A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/003Arrangements for allocating sub-channels of the transmission path
    • H04L5/0053Allocation of signaling, i.e. of overhead other than pilot signals
    • 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
    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • H04L45/245Link aggregation, e.g. trunking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/26Route discovery packet
    • 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/76Routing in software-defined topologies, e.g. routing between virtual machines
    • 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/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/618Details of network addresses
    • H04L2101/663Transport layer addresses, e.g. aspects of transmission control protocol [TCP] or user datagram protocol [UDP] ports
    • 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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Abstract

【課題】元データパケットを使用するサービス状態レプリケーションのための方法及びシステムを提供する。【解決手段】ネットワークトラフィックフローは、ルータ、スイッチ又はサービスノードによって処理される。サービスノードは、スイッチ又はルータの機能を提供可能なASICであり、循環レプリケーションチェーン内に構成され、高可用性などの利点を提供する。サービスノードが実施する方法は、宛先アドレスフィールドに宛先アドレスを含む第1パケットを受信し、ローカルフローテーブルを有し、かつ、ローカルフローテーブルのチェーンレプリケーションのために構成された複数のサービスノードを含む循環レプリケーションチェーンにある選択されたサービスノードに第1パケットをルーティングし、第1パケットのマッチングフローを使用して第1パケットを処理することで第2パケットを生成し、宛先アドレスに向かって第2パケットを送信する。【選択図】図1

Description

[0001] 本実施形態は、ネットワーク機器、高可用性ネットワーク機器、スイッチ、ルータ、ネットワークインタフェースカード、PCIe物理機能、PCIe仮想機能、ストレージエリアネットワーク、NVMeコントローラ及びNVMe-oFハードウェアに関する。
[0002] データセンタには現在、機器ラックに設置されたサーバ、スイッチ及びルータが配置されている。スイッチは、歴史的にサーバを下にして機器ラックの上部に位置決めされることが多いので、しばしばトップオブラック(TOR)と呼ばれる。高可用性スイッチングは、アクティブ-アクティブ又はアクティブ-パッシブ構成の2つのTORスイッチを用いて実現可能である。ラック内部の、プライベートネットワークとも呼ばれるローカルネットワークはTORスイッチにサーバを接続する。TORスイッチは、プライベートネットワークをパブリックネットワークに接続する。パブリックネットワークは、ラックのTORスイッチを、相互に接続し、かつ、データセンタの外部の世界に接続することができる。ストレージエリアネットワークが、ラックの一部に展開されて、他のラックに設置されたサーバに永続ストレージを提供し得る。
[0003] 以下は、本開示の1以上の態様の基本的な理解を提供するため、そうした態様の概要を提示する。この概要は、本開示のすべての考慮される特徴の広範な概要ではなく、かつ、本開示のすべての態様の基本的又は重要な要素を識別すること、並びに、本開示のいずれか又はすべての態様の範囲を記述することを意図しない。その唯一の目的は、以下で提示されるより詳細な説明の前置きとしての形態で本開示の1以上の態様のいくつかの概念を提示することである。
[0004] 本開示で説明される主題の一態様は方法で実施されることができる。本方法は、送信元アドレスフィールドに送信元アドレスを含み、かつ、宛先アドレスフィールドに宛先アドレスを含む第1パケットを受信するステップと、ローカルフローテーブルを有し、かつ、ローカルフローテーブルのチェーンレプリケーションのために構成された複数のサービスノードを含む循環レプリケーションチェーンにある選択されたサービスノードに第1パケットをルーティングするステップと、第1パケットのマッチングフローテーブルエントリを使用して第1パケットを処理することによって第2パケットを生成するステップと、宛先アドレスによって示される宛先に向かって第2パケットを送信するステップと、を含むことができる。
[0005] 本開示で説明される主題の別の態様は方法で実施されることができる。本方法は、送信元アドレスフィールドに送信元アドレスを含み、かつ、宛先アドレスフィールドに宛先アドレスを含む第1パケットを受信するステップと、ローカルセッションテーブルを有し、かつ、ローカルセッションテーブルのチェーンレプリケーションのために構成された複数のサービスノードを含む循環レプリケーションチェーンにある選択されたサービスノードに第1パケットをルーティングするステップと、第1パケットを処理することによって第2パケットを生成するステップと、宛先アドレスによって示される宛先に向かって第2パケットを送信するステップと、を含み、サービスノードの各々はアップストリームピア及びダウンストリームピアを有する。
[0006] 本開示で説明される主題の別の態様はシステムで実施されることができる。本システムは複数のサービスノードを含むことができ、複数のサービスノードは、送信元アドレスフィールドに送信元アドレスを含み、かつ、宛先アドレスフィールドに宛先アドレスを含む第1パケットを受信し、サービスノードのうちの1つである選択されたサービスノードに第1パケットをルーティングし、第1パケットのマッチングフローテーブルエントリを使用して第1パケットを処理することによって第2パケットを生成し、宛先アドレスによって示される宛先に向かって第2パケットを送信するように構成され、かつ、サービスノードは、ローカルフローテーブルを有し、ローカルセッションテーブルを有し、かつ、ローカルフローテーブルのチェーンレプリケーション及びローカルセッションテーブルのチェーンレプリケーションのために構成される。
[0007] 本方法及びデバイスのある実施では、サービスノードの各々は、アップストリームピア、ダウンストリームピアを有し、かつ、パケットによって引き起こされたフローミスを検出し、ローカルフローテーブルにパケットに基づいてフローテーブルエントリを作成することによってフローミスを処理し、パケットに基づいてフロー同期パケットを作成し、かつ、ダウンストリームピアにフロー同期パケットを送信するように構成される。本方法及びデバイスのある実施では、サービスノードの各々は、複数の自己発信のフロー同期パケットを含み、かつ、複数のピア発信のフロー同期パケットを含む複数のフロー同期パケットを受信し、自己発信のフロー同期パケットをドロップし、ローカルフローテーブルのピア発信のフロー同期パケットに基づいて複数のフローテーブルエントリを作成し、かつ、ダウンストリームピアにピア発信のフロー同期パケットを転送するように構成される。本方法及びデバイスのある実施では、サービスノードの各々は、複数のフロー同期パケットを受信し、マッチングフローテーブルエントリを既に有するフロー同期パケットをドロップし、マッチングフローテーブルエントリを有しないフロー同期パケットに基づいて複数のフローテーブルエントリを作成し、かつ、ダウンストリームピアに、マッチングフローテーブルエントリを有しないフロー同期パケットを転送するように構成される。本方法及びデバイスのある実施では、フロー同期パケットはパケットを含む。
[0008] 本方法及びデバイスのある実施では、サービスノードの各々は、複数のセッションのための複数のセッションテーブルエントリを格納するローカルセッションテーブルを有し、サービスノードの各々はアップストリームピア及びダウンストリームピアを有し、かつ、サービスノードは、チェーンレプリケーションを使用してローカルセッションテーブルを複製するように構成される。本方法及びデバイスのある実施では、サービスノードの各々は、セッションのためのパケットを受信し、セッションが未知のセッションである場合、ローカルセッションテーブルエントリを作成することによってセッションのためのローカルセッションテーブルエントリが存在することを確保し、ローカルセッションテーブルエントリにセッションのセッション状態を格納し、セッションが状態を変化させる場合、セッション状態変化インジケータを含むセッション同期パケットを生成し、かつ、ダウンストリームピアにセッション同期パケットを送信するように構成される。本方法及びデバイスのある実施では、セッションは、伝送制御プロトコル(TCP)セッション又はユーザデータグラムプロトコル(UDP)セッションである。本方法及びデバイスのある実施では、サービスノードの各々は、複数の自己発信のセッション同期パケット及び複数のピア発信のセッション同期パケットを含む複数のセッション同期パケットを受信し、自己発信のセッション同期パケットをドロップし、ピア発信のセッション同期パケットに基づいてローカルセッションテーブルを更新し、かつ、ダウンストリームピアにピア発信のセッション同期パケットを転送するように構成される。
[0009] 本方法及びデバイスのある実施では、サービスノードの各々は、セッションのためのセッションテーブルエントリを使用して、少なくとも1つのエージング基準に基づいてセッションがインアクティブであると決定し、ダウンストリームピアに、セッションがインアクティブであることを示すセッション同期パケットを送信し、かつ、アップストリームピアからセッション同期パケットを受信後、セッションテーブルエントリを削除するように構成される。本方法及びデバイスのある実施では、サービスノードの各々は、セッションテーブルエントリにセッションためのセッション統計を格納し、かつ、集約されたセッション統計を包含する集約されたセッションテーブルにセッション統計を送信するように構成される。本方法及びデバイスのある実施では、セッション統計はパケットカウントである。本方法及びデバイスのある実施では、循環レプリケーションチェーンのサービスノードは仮想IPアドレスを共有し、複数のパケットが仮想IPアドレスに送信され、かつ、ロードバランサがサービスノード間にパケットを分散する。
[0010] 本方法及びデバイスのある実施では、サービスノードの各々は、セッションのためのパケットを受信し、セッションが未知のセッションである場合、ローカルセッションテーブルエントリを作成することによってセッションためのローカルセッションテーブルエントリが存在することを確保し、ローカルセッションテーブルエントリにセッション状態を格納し、セッションが状態を変化させる場合にセッション状態変化インジケータを含むセッション同期パケットを生成し、かつ、ダウンストリームピアにセッション同期パケットを送信するように構成される。本方法及びデバイスのある実施では、サービスノードの各々は、複数の自己発信のセッション同期パケット及び複数のピア発信のセッション同期パケットを含む複数のセッション同期パケットを受信し、自己発信のセッション同期パケットをドロップし、ピア発信のセッション同期パケットに基づいてローカルセッションテーブルを更新し、かつ、ダウンストリームピアにピア発信のセッション同期パケットを転送するように構成される。本方法及びデバイスのある実施では、サービスノードの各々は、セッションのためにローカルセッションテーブルエントリを使用して、少なくとも1つのエージング基準に基づいてセッションがインアクティブであると決定し、セッションがインアクティブであることを示すセッション同期パケットをダウンストリームピアに送信し、かつ、アップストリームピアからセッション同期パケットを受信後、ローカルセッションテーブルエントリを削除するように構成される。本方法及びデバイスのある実施では、サービスノードは、フローテーブルエントリを有するローカルフローテーブルを有し、サービスノードは、チェーンレプリケーションを使用してローカルフローテーブルを複製するように構成される。
[0011] 本方法及びデバイスのある実施では、システムは、複数のホストマシンとサービスノードとの間で複数のネットワークパケットを伝送するように構成されたプライベートネットワークと、少なくとも1つのスマートスイッチと、を含むことができ、サービスノードは少なくとも1つのスマートスイッチ内にあり、少なくとも1つのスマートスイッチは、パブリックネットワークにプライベートネットワークを接続するように構成される。
[0012] これら及び他の態様は、以下の詳細な説明を検討することによってより完全に理解される。他の態様、特徴及び実施形態は、添付の図と併せて以下の特定の例示的な実施形態の説明を検討することによって当業者に明らかになる。以下の特定の実施形態及び図に関して特徴が説明され得るが、すべての実施形態は、本明細書で説明する有利な特徴の1以上を含み得る。言い換えれば、1以上の実施形態が特定の有利な特徴を有するものとして説明され得る一方で、そうした特徴の1以上が、本明細書で説明される様々な実施形態に従って使用され得る。同様に、例示的な実施形態がデバイス、システム又は方法の実施形態として以下で説明され得る一方で、そうした例示的な実施形態は様々なデバイス、システム及び方法で実装されることができる。
[0013] ある態様に係る、ローカルトランスポートプロトコル(LTP)ネットワークトラフィックを伝送するローカルネットワークを有する機器ラックを示すハイレベル図である。 [0014] ある態様に係る、サーバ内の周辺コンポーネントインターコネクトエクスプレス(PCIe)デバイスを示すハイレベル図である。 [0015] ある態様に係る、スマートスイッチ内のサービスノードを示すハイレベル図である。 [0016] ある態様に係る、特定用途向け集積回路(ASIC)を有するサービスノードの機能ブロック図である。 [0017] ある態様に係るネットワークパケットを示す図である。 [0018] ある態様に係る、PCIeデバイスを使用して、サービスノードによって提供されるサービス及び仮想化機能にアクセスすることを示している。 [0019] ある態様に係る、PCIeデバイスを介してサービス及び仮想化機能を提供するサービスノードを示している。 [0020] ある態様に係る、循環レプリケーションチェーンのサービスノードを示すハイレベルフロー図である。 [0021] ある態様に係る、サービス状態情報のチェーンレプリケーションのために構成されたサービスノードを示すハイレベルフロー図である。 [0022] ある態様に係る、サービスを提供するサービスノードを示すハイレベル図である。 [0023] ある態様に係る、ネットワークアドレス変換(NAT)テーブルエントリをNATテーブルに追加することのハイレベル図である。 [0024] ある態様に係る、チェーンレプリケーションを使用してサービス状態情報を複製することのハイレベルフロー図である。 [0025] ある態様に係る、ラック内のサービスノードホストのハイレベル図である。 [0026] ある態様に係る、複数のスマートスイッチ内のサービスノードを含むレプリケーションチェーンのハイレベル図である。 [0027] ある態様に係る、サービスを提供するサービスノードのハイレベル図である。 [0028] ある態様に係る、アウトバウンドパケットに対してNATを実行するサービスノードのハイレベルフロー図である。 [0029] ある態様に係る、インバウンドパケットに対してNATを実行するサービスノードのハイレベルフロー図である。 [0030] ある態様に係る、NTAパケットを処理することのハイレベルフロー図である。 [0031] ある態様に係る、仮想化機能を用いてホスト開始リクエストを点検することのハイレベル図である。 [0032] ある態様に係る、仮想化機能によって開始されたリクエストを点検することのハイレベル図である。 [0033] ある態様に係る、ハードウェア実装及びソフトウェア実装の仮想化機能を提供することのハイレベル図である。 [0034] ある態様に係る、例示的な仮想化PCIe機能マップの図である。 [0035] ある態様に係る、サービスノード上のハードウェアを介して又はスマートスイッチにインストールされたハードを介して、サービスノードによって使用されて、実行可能コードとして実装される仮想化PCIe機能を提供することができるプロセスのハイレベルフロー図である。 [0036] ある態様に係る、仮想化NVMeサービスを使用するホスト開始不揮発性メモリエクスプレス(NVMe)トランザクションを示すハイレベル図である。 [0037] ある態様に係る、仮想化NVMeサービスを提供するサービスノードのハイレベル図である。 [0038] ある態様に係る、仮想化NVMeサービスを提供する循環レプリケーションチェーンのサービスノードのハイレベル図である。 [0039] ある態様に係る、PCIeデバイスによって格納された例示的なサービスノードデータを示す図である。 [0040] ある態様に係る、識別子マップをリクエストするための例示的なコマンド識別子を示す図である。 [0041] ある態様に係る、ストレージエリアネットワーク(SAN)への高可用性アクセスを提供することのハイレベル図である。 [0041] ある態様に係る、ストレージエリアネットワーク(SAN)への高可用性アクセスを提供することのハイレベル図である。 [0041] ある態様に係る、ストレージエリアネットワーク(SAN)への高可用性アクセスを提供することのハイレベル図である。 [0042] ある態様に係る、パケット処理サービスを提供する循環レプリケーションチェーン内のサービスノードのハイレベル図である。 [0043] ある態様に係る、フローテーブルエントリ及びセッションテーブルエントリを追加することのハイレベル図である。 [0044] ある態様に係る、セッションテーブル情報を集約することのハイレベル図である。 [0045] ある態様に係る、ネットワークトラフィックを処理するために、かつ、フローテーブル及びセッションテーブルのチェーンレプリケーションのために、サービスノードによって使用可能なプロセスのハイレベルフロー図である。 [0046] ある態様に係る、フロー同期パケットを処理するために、かつ、フローテーブルのチェーンレプリケーションのために、サービスノードによって使用可能なプロセスのハイレベルフロー図である。 [0047] ある態様に係る、セッション同期パケットを処理するために、かつ、セッションテーブルのチェーンレプリケーションのために、サービスノードによって使用可能なプロセスのハイレベルフロー図である。 [0048] ある態様に係る、セッションテーブルエントリのエージアウトのハイレベルフロー図である。 [0049] ある態様に係る、TCPセッションをシャットダウンするプロセスのハイレベルフロー図である。 [0049] ある態様に係る、TCPセッションをシャットダウンするプロセスのハイレベルフロー図である。 [0049] ある態様に係る、TCPセッションをシャットダウンするプロセスのハイレベルフロー図である。 [0049] ある態様に係る、TCPセッションをシャットダウンするプロセスのハイレベルフロー図である。 [0050] ある態様に係る、データパス状態レプリケーション及び中間デバイスマッピングを使用するサービス分配のための方法のハイレベルフロー図である。 [0051] ある態様に係る、IPネットワークを介して緩く結合されたPCIeサービスプロキシのための方法のハイレベルフロー図である。 [0052] ある態様に係る、仮想化NVMeオーバーファブリック(NVMe-oF)サービスを提供するための方法のハイレベルフロー図である。 [0053] ある態様に係る、元データパケットを使用するサービス状態レプリケーションのための方法のハイレベルフロー図である。
[0054] 説明全体を通じて、同様の参照番号が使用されて同様の要素を識別し得る。
[0055] 本明細書に全般的に説明され、かつ、添付の図に示される本実施形態の構成要素は、多種多様な異なる構成で配列及び設計され得ることが容易に理解される。したがって、図に表されるような様々な本実施形態の以下のより詳細な説明は、本開示の範囲を限定することを意図するものではなく、単に様々な実施形態を表すものである。本実施形態の様々な態様が図面に提示されるが、特に示されない限り、図面は必ずしも縮尺どおりに描かれていない。
[0056] 本発明は、その精神又は本質的な特徴から逸脱することなく、他の特定の形態で具体化され得る。記載された実施形態は、すべての点で例示としてのみみなされるべきであり、かつ、限定的ではない。したがって、本発明の範囲は、この詳細な説明によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲の意味及び同等性の範囲内にあるすべての変更はそれらの範囲内に含まれるべきである。
[0057] 本明細書全体を通じて、特徴、利点又は同様の用語への言及は、本発明によって実現され得る特徴及び利点のすべてが、本発明の任意の単一の実施形態にあるべきである又はあることを意味するものではない。むしろ、特徴及び利点を参照する用語は、一実施形態に関連して記載される特定の特徴、利点又は特性が本発明の少なくとも1つの実施形態に含まれることを意味すると理解される。したがって、本明細書全体を通じた特徴及び利点並びに同様の用語の議論は、必ずしもそうとは限らないが、同じ実施形態を参照する。
[0058] さらに、本発明の記載された特徴、利点及び特性は、1以上の実施形態において任意の適切な方法で組み合わせられ得る。当業者であれば、本明細書での記載を考慮して、本発明が、特定の実施形態の特定の特徴又は利点の1以上なしで実施可能であることを認識する。他の例では、本発明のすべての実施形態に存在しない可能性がある特定の実施形態において追加の特徴及び利点が認識され得る。
[0059] 本明細書全体を通じて「1つの実施形態」、「一実施形態」又は同様の用語への参照は、示された実施形態に関連して説明される特定の特徴、構造又は特性が本発明の少なくとも1つの実施形態に含まれることを意味する。「1つの実施形態において」、「一実施形態において」という語句及び本明細書全体を通じた同様の用語は、必ずしもそうではないが、すべて同じ実施形態を参照する場合がある。
[0060] データセンタのハードウェアインフラストラクチャは、たいてい、1つ又は2つのスイッチに接続された多数のサーバを有する。スイッチは、サーバのローカルネットワーク又はプライベートネットワークを、データセンタの外部ネットワーク又はパブリックネットワークに接続する。スイッチは、ネットワークアドレス変換(NAT)及び/又はファイアウォールなどのサービスを提供し得る。最近のデータセンタの進歩は、SmartNICとよく呼ばれる強力なネットワークインタフェースカード(NIC)を用いてサーバを構成することを伴う。SmartNICは、サーバの中央処理装置(CPU)に以前は負荷をかけていた機能をオフロードすることができる。例えば、SmartNICは、ネットワークプロトコルスタック全体、ストレージアダプタ、セキュリティ機能などを実装することができる。したがって、ホストコンピュータ(サーバ)は、ワークロードにより多くの処理能力を割り当てることができる。ワークロードには、Webサーバ、データベースサーバ、及び、データセンタのテナントがサーバ上で実行する他のプログラミング含まれる。最終結果は、より効率的で費用対効果の高いデータセンタを実現する。
[0061] しかしながら、SmartNICは高価で電力を大量消費する可能性があり、かつ、典型的なデータセンタは数百から数千のSmartNICを必要とし得る。したがって、SmartNICによって提供される高度なサービスの大部分が分解され、その結果、サーバは、消費電力の少ない安価な専用のNICを備えることができ、かつ、フル機能のSmartNICによって以前に提供されたサービスが、専用NIC及びスマートスイッチの組み合わせによって又はスマートスイッチによって併せて提供されることができる。一実施形態では、そうした実装のためのNICは、スマートスイッチによって提案される仮想化サービスへのアクセスポイントを提供するPCIeデバイスである。PCIeデバイス及びスマートスイッチは、通信するため、ローカルトランスポートプロトコル(LTP)と呼ばれる簡素化された軽量のネットワークプロトコルを使用して協調して動作する。LTPは、わずか数メートルのケーブル又はファイバを介してサーバのラック内で通常通信するPCIeデバイス及びスマートスイッチの間で動作するように設計されているので、低いオーバーヘッドの信頼性の高いプロトコルである。UDPは、サービスノード及びPCIeデバイスの間でLTPを伝送するために使用され、最小限のオーバーヘッドを追加する一方で良好な結果をもたらした。対照的に、伝送制御プロトコルは、はるかに高いオーバーヘッドを犠牲にして長距離の信頼性の高い伝送を提供する。
[0062] スマートスイッチにサービスノードを装備することによってさらなる進歩が実現可能である。単一のサービスノードがスマートスイッチとして機能し得るが、スマートスイッチに統合された多数のサービスノードを用いて可用性及び拡張性の利点が実現可能である。サービスノードは循環レプリケーションチェーンとして構成されることができる。循環レプリケーションチェーンは、データベースアプリケーションのために現在研究されているレプリケーションチェーンを超える進歩である。非循環レプリケーションチェーンは、ヘッドノード、1以上の中間ノード及びテールノードを有する。特定の操作が、非循環レプリケーションチェーンのヘッドノードに向けられなければならない。循環レプリケーションチェーンにはヘッド及びテールがない。サービスノードによって維持されるサービス状態情報の特性によってレプリケーションの一貫性を高める。
[0063] ネットワーク接続されたPCIeデバイスを介して仮想化オフロードを提供するためにサービスノードを使用することによって多くの利点が得られ得る。PCIeデバイスは通常のSmartNICのより単純化されたバージョンであるので、サーバあたりの価格が大幅に削減され得る。さらに、PCIeデバイスは、より単純化されたデバイスであるので、保守、交換又はアップグレードをあまり必要としない。さらに、PCIeデバイスは、処理されたデータのビットあたりの消費電力、例えば、1秒あたりのナノワット/パケット(pps)又はナノジュール/パケット、が少ない。PCIeデバイスはより簡素化された一連の機能を有し得る一方で、より高度な機能がサービスノードによって提供される。少なくとも、サービスノードが、サービスを中断することなく、そのレプリケーションチェーンから取り出され、オフラインにされ、アップグレードされ、かつ、レプリケーションチェーンに再挿入されることができるので、サービスノードのメンテナンスは比較的簡単であり得る。それによって、ヒットレスアップグレードが実現可能である。チェーンにサービスノードを追加することによってさらなるスイッチング容量が追加可能であり、これは、より強力なスイッチを設置するよりも簡単であり得る。仮想化サービス及びCPUオフロードの提供と組み合わせられたレプリケーションチェーンがデータセンタ操作のパラダイムシフトにつながることが予想される。
[0064] 専用NICとサービスノードを有するスマートスイッチとの組み合わせを使用して、コスト効率及びエネルギー効率の高い方法で一連のホストサーバに高度なサービスを提供可能な方法で、NIC及びサービスノードの間のネットワークサービスが調整されることができる。一例では、48台のフル機能のSmartNICに代えて、48台のサーバを含むラックは48台の専用NIC及び8台のサービスノードを備え得る。このようなネットワークアーキテクチャは、各サーバがフル機能のSmartNICを有するネットワークアーキテクチャと比較した場合に、設備投資(capex)及び運用コスト(opex)の両方の点で大幅な節約を提供可能である。さらに、NIC及びサービスノードのこのような組み合わせを利用すると、処理されるデータの単位あたりの全体的な電力消費を削減可能であり、これは、そうしたコンピューティングシステムの環境への影響を低減する。このようなアプローチには明らかなコスト上及び環境上の利益があるが、NIC及びサービスノードの間でサービスが分解されたネットワークを設計すること及び操作することは簡単な作業ではない。本明細書では、従来実現されてこなかった方法でNIC及びサービスノードの間でサービスが分解されたネットワークの実装を可能にする様々な方法及びシステムについて説明する。
[0065] 図1は、ある態様に係る、ローカルトランスポートプロトコル(LTP)ネットワークトラフィックを伝送するローカルネットワーク108を有する機器ラック101を示すハイレベル図である。2つのスマートスイッチ102が、ラック101に設置され、かつ、高帯域幅スパイン107によって互いに接続されている。スマートスイッチ102は、ローカルネットワーク108を介して仮想化機能を提供可能なサービスノード103を含む。多数のサーバ104もラック101に設置され、PCIeデバイス105がサーバ104に設置される。PCIeデバイスは、拡張NICであるものとみなされ得る。拡張は、ネットワーク接続性に加えて、NICが、サービスノードによって提供される仮想化機能へのアクセスも提供することである。スマートスイッチは、パブリックネットワーク109にローカルネットワーク108を接続する。パブリックネットワークは、データセンタ内及びラック101外で厳密に制御及び保護されたネットワークであり得る。ローカルネットワークは、PCIeデバイス105及びサービスノード103の間でローカルトランスポートプロトコル(LTP)パケットを伝送することができる。スマートスイッチ102及びサービスノード103は、LTPパケットをローカルネットワーク108内に保持するように構成されることができる。
[0066] 図2は、ある態様に係る、サーバ104内の周辺コンポーネントインターコネクトエクスプレス(PCIe)デバイス105を示すハイレベル図である。PCIeデバイスは、PCIeバスを使用して互いに通信することができる。PCI-SIGが2015年12月7日に発行した「PCIエクスプレスベース仕様改訂3.1a」(以下「PCIe仕様」という)は、PCIeバスのため及びPCIeバスを使用したデバイス通信のための仕様を提供する。ホストコンピュータ104は、ワークロード1 202及びワークロード2 206などのワークロードを実行することができる。ワークロード1 202は、ホスト104上で直接実行され、かつ、ホストデバイスドライバ203を使用して、ホスト104内に設置されたハードウェアにアクセスする。ワークロード2 206は、ホスト104上で実行される仮想マシン(VM)である。ある実装では、ホスト104内に設置されたハードウェアは、PCIeシングルルート入力出力仮想化(SR-IOV)又はPCIeマルチルート入力出力仮想化(MR-IOV)デバイスである。簡単にするため、ここでは、MR-IOVが容量を提供することを理解した上でSR-IOVについて説明する。2010年1月20日にPCI-SIGが発行した「シングルルートI/O仮想化及び共有仕様改訂1.1」はPCIe SR-IOVのための仕様を提供する。SR-IOVが作成される前、PCIeデバイスは、物理機能と、これらの物理機能を共有したVMを含む、ホスト上で実行されたすべてのプロセスと、を提供した。SR-IOVは、PCIeデバイスへのVMのアクセスを合理化するために作成された。SR-IOV対応のPCIeデバイスは、物理機能を提供することができ、かつ、仮想機能も提供することができる。したがって、VM206は、その独自のデバイスドライバ207を使用して、SR-IOV対応PCIeデバイスによって提供されるVFにアクセスすることができる。
[0067] ホスト104のPCIeインタフェース204はPCIeデバイス105のPCIeインタフェース211に接続される。これにより、PCIeバスは、ワークロードに、PCIeデバイスによって提供されるPCIe機能へのアクセスを付与する。これらのPCIe機能には、仮想化不揮発性メモリエクスプレス(NVMe)アクセス物理機能(PF)212、仮想化NVMeアクセス仮想機能(VF)213、仮想化PCIe機能アクセスPF214、仮想化PCIe機能アクセスVF215、ネットワークインタフェースカード(NIC)PF216及びNIC VF217が含まれ得る。ここで、「NIC」という用語は、NICがホストのメイン回路ボードに直接取り付けられた特定用途向け集積回路(ASIC)である場合であっても、ネットワークアクセスを提供するデバイスを参照するために使用される。PCIeデバイス105は、イーサネットポート218を介してネットワークパケットを送信及び受信することができる。ローカルネットワーク上のPCIeデバイス105によって送信及び受信されるパケットには、イーサネットパケット221、外部トラフィック(ラック外)のためのインターネットプロトコル(IP)パケット222、ローカルトラフィック(ラック内)のためのIPパケット223及びLTPパケット224が含まれ得る。
[0068] 図3は、ある態様に係る、スマートスイッチ301内のサービスノード103を示すハイレベル図である。スマートスイッチ301は、ロードバランサとして構成され得るスイッチファブリック302を含む。スイッチングファブリック302を実装可能なASICは現在市販されている。サービスノードは各々、ノードダイナミックランダムアクセスメモリ(DRAM)を有する。サービスノード103は、スイッチファブリック302を通じて、互いに、PCIeデバイスと、及び、パブリックネットワークと通信することができる。スイッチCPU304は、スマートスイッチ301を制御及びモニタすることができる。スイッチCPU304はスイッチDRAMを有する。スイッチPCIeバス303は、サービスノード103、スイッチCPU304、ノードDRAM及びスイッチDRAMの間の通信を提供する。
[0069] 図4は、ある態様に係る、特定用途向け集積回路(ASIC)401を有するサービスノード103の機能ブロック図である。サービスノードは、PCIeインタフェース450を含むことができ、かつ、スマートスイッチに設置され得る。サービスノード103は、ASICが数ギガバイトのメモリへのアクセスを有するように、ダブルデータレート(DDR)4同期DRAM(SDRAM)モジュール又はDDR5 SDRAMモジュールなどの広く利用可能なメモリモジュール又はチップの1つであり得るオフASICメモリ432を含む。
[0070] ASIC401は、ネットワークオンチップ(NOC)402と呼ばれることもあるオンチップ通信ファブリックによって相互接続された多くのコア回路を有する半導体チップである。NOCは、しばしば、広く使用されている高度拡張インタフェース(AXI)などの標準化された通信ファブリックの実装である。ASICのコア回路は、ASICメモリ(例えば、スタティックランダムアクセスメモリ(SRAM))416上に、PCIeインタフェース450、中央処理装置(CPU)コア403、P4パケット処理パイプライン408要素、メモリインタフェース415、サービス処理オフロード417、パケットバッファ423及びパケットイングレス/エグレス回路414を含み得る。PCIeインタフェース450は、外部デバイスと通信する、かつ、PCIeバス451を介してASICと通信するために使用されることができる。CPUコア403は、CPU1 405、CPU2 406及びCPU3 407など多数のCPUコアを含み得る。P4パケット処理パイプライン408は、パイプラインイングレス回路413、パーサ回路412、マッチアクションユニット411、デパーサ回路410及びパイプラインエグレス回路409を含み得る。サービス処理オフロード417は、ASICが頻繁に使用する機能を実装する回路であり、設計者は、これらの機能をCPUからオフロードするためのハードウェアを提供することを選択した。サービス処理オフロードには、圧縮回路418、解凍回路419、暗号/PKA回路420及びCRC計算回路421が含まれ得る。ASICが、不揮発性メモリエクスプレス(NVMe)カードの、及び、IP(インターネットプロトコル)パケットによって伝送されるネットワークトラフィックフローを処理するネットワークアプライアンスの、インフィニバンドチャネルアダプタの機能の多く、おそらくすべてを実装するように、ASIC401の非限定的な例内に実装される特定のコア回路が選択された。
[0071] P4パケット処理パイプライン408は、IPパケットなどのネットワークパケットを処理するための要素、NVMeプロトコルデータユニット(PDU)及びインフィニバンドPDUの専用のセットである。P4パイプラインは、ドメイン固有言語を使用して構成されることができる。単に「P4」として知られる、プロトコルに依存しないパケットプロセッサをプログラミングするためのドメイン固有言語の概念は、ネットワークアプライアンスのデータプレーンにある程度の柔軟性を提供する方法として発展してきた。ネットワークアプライアンスのデータプレーンをプログラミングするためのP4ドメイン固有言語は、2019年10月23日にP4言語コンソーシアムによって発行された「P416言語仕様」バージョン1.2.0で定義されている。P4(本明細書では「P4仕様」、「P4言語」及び「P4プログラム」という)は、ネットワークスイッチ、ネットワークルータ、プログラム可能なNIC、ソフトウェアスイッチ、FPGA及びASICを含む様々なターゲットに実装可能であるように設計されている。P4仕様で説明されているように、P4言語によって提供された主要な抽象化は、ヘッダタイプ、パーサ、テーブル、アクション、マッチアクションユニット、制御フロー、外部オブジェクト、ユーザ定義メタデータ及び組み込みメタデータに関連する。
[0072] メモリインタフェース415は、オフASICメモリ432との間のメモリI/O操作を調整する。オフASICメモリがDRAMである場合、メモリコントローラはDRAMコントローラと呼ばれ得る。オフASICメモリは、ASIC401及びサービスノード103によって使用されたデータを格納することができる。そのデータはサービス状態情報440を含み得る。サービス状態情報は、フローテーブル441、セッションテーブル442、NATマッピングテーブル443及び仮想化サービス状態情報444を含み得る。仮想化サービス状態情報444は、仮想化PCIe機能マップ445及びNVMeスプライシングデータ447を含み得る。NVMeスプライシングデータは名前空間マップ446を含み得る。
[0073] CPUコア403は、縮小命令セットコンピューティング(RISC)プロセッサコア、高度なRISCマシン(ARM)プロセッサコア、インターロックパイプラインステージ(MIPS)プロセッサコアのないマイクロプロセッサ及び/又はx86プロセッサコアなどの汎用プロセッサコアであり得る。各CPUコアは、他のCPUコアとは独立して命令を実行するように構成された、メモリインタフェース、ALU、レジスタバンク、命令フェッチユニット及び命令デコーダを含み得る。CPUコアは、Cなどの汎用プログラミング言語を使用してプログラム可能であり得る。
[0074] CPUコア403はまた、バスインタフェース、内部メモリ及びメモリ管理ユニット(MMU)及び/又はメモリ保護ユニットを含み得る。例えば、CPUコアは、内部キャッシュ、例えば、L1キャッシュ及び/又はL2キャッシュを含み得る、及び/又は、近くのL2及び/又はL3キャッシュへのアクセスを有し得る。各CPUコアには、命令キャッシュ及びデータキャッシュを含むコア固有のL1キャッシュ、並びに、各CPUコアに固有の又は少数のCPUコア間で共有されるL2キャッシュが含まれ得る。L3キャッシュもCPUコアに利用可能であり得る。
[0075] コントロールプレーン機能のために、かつ、ソフトウェア実装パケット処理機能を含む低速データパスの態様を実装するために、利用可能な複数のCPUコア403が存在し得る。CPUコアは、P4などのドメイン固有言語を通じて、データプレーン処理の期待どおりの高速パスパフォーマンスを提供する方法で、容易に実装不可能であり得る、L7アプリケーション(例えば、HTTPロードバランシング、L7ファイアウォール及び/又はL7テレメトリ)、特定のインフィニバンドチャネルアダプタ機能、フローテーブル挿入又はテーブル管理イベント、接続セットアップ/管理、マルチキャストグループ参加、ディープパケットインスペクション(DPI)(例えば、URLインスペクション)、ストレージボリューム管理(例えば、NVMeボリュームセットアップ及び/又は管理)、暗号化、復号化、圧縮及び解凍などの個別のパケット処理操作を実装するために使用され得る。
[0076] パケットバッファ423は、スイッチファブリック302からデータプレーンのパケット処理要素に又はその逆に、パケットを配信する中央オンチップパケットスイッチとして機能することができる。パケット処理要素は、ソフトウェアに実装された低速データパス、及び、パケット処理回路408によって実装される高速データパスを含み得る。
[0077] P4パケット処理パイプライン408は、プログラム可能なパケット処理パイプラインを実装する特殊回路又は特殊回路の一部であり得る。ある実施形態は、ネットワークアプライアンス内の高速データパスとしてP4パイプラインを含む。高速データパスは、ネットワークアプライアンス内にも実装可能な低速データパスよりも高速にパケットを処理するので、高速データパスと呼ばれる。低速データパスの一例はソフトウェア実装データパスであり、CPUコア403及びメモリ432はソフトウェアを介して低速データパスを実装するように構成される。
[0078] 図5は、ある態様に係るネットワークパケットを示す図である。ネットワークトラフィックフロー500は、第1パケット550、第2パケット551、第3パケット552、第4パケット553及び最終パケット554などの多数のパケットを有し得、第4パケット553及び最終パケット554の間にはさらに多くのパケットがある。「そのパケット」又は「パケット」という用語は、ネットワークトラフィックフロー内のパケットのいずれかを参照することができる。パケットは、インターネットプロトコルスイートに従って構築及び解釈され得る。インターネットプロトコルスイートは、インターネット及び同様のコンピュータネットワークで使用される概念モデル及び通信プロトコルのセットである。パケットは、レイヤ1と呼ばれることもある物理層の物理媒体を介して生ビットストリームとして送信及び受信されることができる。パケットは、生ビットストリームとして受信されることができる、又は、生ビットストリームとして送信されることできる。
[0079] リンク層はしばしばレイヤ2と呼ばれる。リンク層のプロトコルは、デバイスが取り付けられて、ルータを経由せずにアクセス可能なすべてのデバイスを含むローカルネットワーク接続の範囲内で動作する。リンク層は、同じリンク上の2つの異なるデバイスのインタフェース間でパケットを移動させるために使用される。パケットは、レイヤ2ヘッダ501、レイヤ2ペイロード502及びレイヤ2フレームチェックシーケンス(FCS)503を有する。レイヤ2ヘッダは、送信元メディアアクセス制御(MAC)アドレス504、宛先MACアドレス505及び他のレイヤ2ヘッダデータ506を包含し得る。ネットワーク接続デバイスの入力ポート及び出力ポートはMACアドレスを有し得る。米国電気電子技術者協会(IEEE)802.3としても知られるイーサネットはレイヤ2プロトコルである。IEEE802.11(WiFi)は、もう1つの広く使用されているレイヤ2プロトコルである。レイヤ2ペイロード502はレイヤ3パケットを含み得る。レイヤ2 FCS503は、レイヤ2ヘッダ及びレイヤ2ペイロードから計算されたCRC(巡回冗長検査)を含み得る。レイヤ2 FCSが使用されて、パケットがエラーなく受信されたことを確認することができる。
[0080] しばしばレイヤ3と呼ばれるインターネット層は、レイヤ3パケットが複数の中間ノードを介して第1ノードから第2ノードにルーティング可能なネットワーク層である。ノードは、スイッチ、サーバ、並びに、サービスノード103及びPCIeデバイス105などのデバイスであり得る。インターネットプロトコル(IP)は、一般的に使用されるレイヤ3プロトコルである。レイヤ3パケットは、レイヤ3ヘッダ507及びレイヤ3ペイロード508を有し得る。レイヤ3ヘッダ507は、送信元IPアドレス509、宛先IPアドレス510、プロトコルインジケータ511及び他のレイヤ3ヘッダデータ512を有し得る。一例として、第1ノードは、中間ノードを介して第2ノードにIPパケットを送信することができる。したがって、IPパケットは、第1ノードを示す送信元IPアドレスと、第2ノードを示す宛先IPアドレスと、を有する。第1ノードは、IPパケットが中間ノードに送信される必要があるというルーティング決定を行う。したがって、第1ノードは、IPパケットを第1レイヤ2パケットで中間ノードに送信する。第1レイヤ2パケットは、第1ノードを示す送信元MACアドレス504、中間ノードを示す宛先MACアドレス505を有し、かつ、ペイロードとしてIPパケットを有する。中間ノードは第1レイヤ2パケットを受信する。中間ノードは、宛先IPアドレスに基づいて、IPパケットが第2ノードに送信されるべきであると決定する。中間ノードは、中間ノードを示す送信元MACアドレス504、第2ノードを示す宛先MACアドレス505及びペイロードとしてのIPパケットを有する第2レイヤ2パケットで第2ノードにIPパケットを送信する。レイヤ3ペイロード508は、トランスポートレイヤプロトコルなどの上位レイヤプロトコルに従って、上位レイヤのヘッダ及びペイロードを含み得る。
[0081] しばしばレイヤ4と呼ばれるトランスポート層は、アプリケーションがタスク固有のデータ交換に使用する基本的なデータチャネルを確立することができ、かつ、ホスト間の接続性を確立することができる。レイヤ4プロトコルは、プロトコルインジケータ511を使用してレイヤ3ヘッダ507に示されることができる。伝送制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)及びインターネット制御メッセージプロトコル(ICMP)は共通のレイヤ4プロトコルである。TCPはしばしばTCP/IPと呼ばれる。TCPは、接続指向であり、かつ、信頼性が高くて規則的で、IPネットワークを介して通信するホスト上で実行されるアプリケーション間でのバイトのストリームのエラーチェック配信を提供することができる。TCPデータを伝送する場合、レイヤ3ペイロード508はTCPヘッダ及びTCPペイロードを含む。UDPは、コンピュータアプリケーションに、この場合データグラムと呼ばれるメッセージを、コネクションレス型モデルを使用してIPネットワーク上の他のホストに送信するために提供することができる。UDPデータを伝送する場合、レイヤ3ペイロード508はUDPヘッダ及びUDPペイロードを含む。ICMPは、別のIPアドレスとの通信時に成功又は失敗を示すエラーメッセージ及び操作情報を送信するため、ルータを含むネットワークデバイスによって使用される。ICMPはコネクションレス型モデルを使用する。
[0082] レイヤ4パケットはレイヤ4ヘッダ513及びレイヤ4ペイロード514を有し得る。レイヤ4ヘッダ513は、送信元ポート515、宛先ポート516、レイヤ4フラグ517及び他のレイヤ4ヘッダデータ518を含み得る。送信元ポート及び宛先ポートは、ホストコンピュータがそれらのポートをリッスンしてそれらのポートで送信するように構成されたアプリケーションプログラムにパケットを配信するために使用される整数値であり得る。レイヤ4フラグ517は、ネットワークトラフィックフローのステータス又はアクションを示し得る。例えば、TCPはRST、FIN及びACKフラグを有する。RSTは、TCP接続がすぐにシャットダウンされてすべてのパケットが破棄されることを示す。TCP FINフラグは、TCP接続での最終伝送を示し得、FINパケットの前に送信されたパケットが処理され得る。ACKは、受信したパケットを確認する。FINパケットの受信者は、TCP接続のその側をシャットダウンする前にFINパケットをACKすることができる。トラフィックフローは、フロー終了ダイアログによって終了され得る。フロー終了ダイアログの例には、TCP RSTパケット(ACKの有無にかかわらず)、及び、TCP FINパケットに応答するTCP ACKパケットによってフローされるTCP FINパケットが含まれる。他のプロトコルは、よく知られているフロー終了ダイアログも有し得る。レイヤ4ペイロード514はレイヤ7パケットを包含し得る。
[0083] しばしばレイヤ7と呼ばれるアプリケーション層は、ユーザサービスを提供するため、又は、下位レベルプロトコルによって確立されたネットワーク接続を介してアプリケーションデータを交換するため、ほとんどのアプリケーションによって使用されるプロトコルを含む。アプリケーション層プロトコルの例には、コンバージドイーサネット経由のRDMAバージョン2(RoCE v2)、ハイパーテキストトランスファープロトコル(HTTP)、ファイルトランスファープロトコル(FTP)、シンプルメールトランスファープロトコル(SMTP)及びダイナミックホストコンフィギュレーションプロトコル(DHCP)が含まれる。アプリケーション層プロトコルに従ってコード化されたデータは、トランスポート層プロトコルユニット(TCP又はUDPメッセージなど)にカプセル化され得、これは、実際のデータ転送を実行するために下位層プロトコルを使用する。
[0084] レイヤ4ペイロード514はレイヤ7パケット520を含み得る。レイヤ7パケット520は、HTTPパケット、インフィニバンドPDU又はある他のL7パケットであり得る。レイヤ7パケット520はレイヤ7ヘッダ521及びレイヤ7ペイロード52を含み得る。図示のレイヤ7パケットは、LTPヘッダ521及びLTPペイロード522を有するローカルトランスポートプロトコル(LTP)パケット520である。LTPヘッダは、PCIeデバイス識別子530、機能識別子531及びシーケンス番号532を含み得る。LTPペイロード522はワークロードカプセルであり得る。ワークロードカプセルは、機能タイプ533及びワークロードデータ534を含み得る。PCIeデバイス識別子530及び機能識別子531は、特定のPCIeデバイス及び当該PCIeデバイスによって実装される機能を識別するために使用され得る。機能タイプ533は、仮想化PCIe機能、仮想化NVMe機能などの機能のタイプを示し得る。シーケンス番号532が使用されて、LTPパケットが失われたことを決定してLTPパケットが再送信され得るようにすることができる。LTPパケットは、UDPパケットで伝送されるものとして示されているが、他のL3パケットのペイロードとして伝送されることも、イーサネットパケットなどのL2パケットのペイロードとして伝送されることもできる。
[0085] 図6は、ある態様に係る、サービスノード103によって提供されるサービス及び仮想化機能にアクセスするためにPCIeデバイス620を使用することを示している。PCIeバスは、1つのデバイスから別のデバイスにトランザクション層パケット(TLP)を伝送するためにデータリンク層パケット(DLLP)601を使用することができる。DLLP及びTLPの内容はPCIe仕様によって特定される。DLLP601は、シーケンス番号602、TLP603及びリンク巡回冗長コード(LCRC)604を含む。TLP603は、TLPフォーマット605、TLPタイプ606、長さ607、リクエスト識別子608、アドレス609を含み、かつ、データ610を包含し得る。
[0086] PCIeデバイス620はTLP603を受信することができる。TLP603は、読み取りリクエスト又は書き込みリクエストなどのリクエストであり得る。PCIeデバイスは、TLPフォーマット605及びTLPタイプ606を検査することによって、TLPが読み取りリクエスト又は書き込みリクエストであるかを決定することができる。TLP603は、長さ607及びアドレス609を示し得る。長さ607は、読み取り又は書き込みが行われるデータワード(dword)の数を示す。PCIeの場合、dwordは32ビットである。アドレス609は、データが書き込まれるべき又はデータが読み取られるべき物理アドレスである。書き込みリクエストの場合、TLP603は、物理アドレスに書き込まれるべきデータ610を含む。PCIeバスに接続されているデバイスが多数あり、その各々がTLPを生成し得る。リクエスタ識別子608は、応答が後でそのデバイスに戻され得るように、TLPを送信したデバイスを示す。
[0087] PCIeデバイス620は、例えば、リクエストによって示されるように正確にデータを書き込む又は読み取ることによってTLPを解釈し得る。したがって、非仮想化デバイスに送信された読み取りリクエストは、その非仮想化デバイス上のレジスタ又はメモリ位置を読み取り得る同様に。非仮想化デバイスへの書き込み操作は、デバイスのレジスタ又はメモリ位置に書き込むことができ、かつ、デバイスが操作を実行するようにトリガし得る。
[0088] 仮想機能の場合、TLPが使用されてワークロードパケットを生成する。LTPパケットはワークロードカプセルであり得る。例えば、LTPパケットは、TLPを使用して生成されたワークロードカプセルを伝送することができる。LTPパケットは、単純にTLPをカプセル化しない。PCIeデバイスは、TLP603に基づくPCIeワークロードパケット625を、サービスノード103によって実装された仮想化PCIe機能630に送信する仮想化PCIeアクセス機能621を実装することができる。PCIeデバイスは、NVMeワークロードパケット626を、サービスノード103によって実装された仮想化NVMe機能631に送信する仮想化NVMeアクセス機能622を実装することができる。PCIeデバイスはネットワークインタフェース機能623も実装し得る。PCIeデバイスは、ネットワークインタフェース機能623を使用してサービスノード及び他の宛先にネットワークパケットを送信し得る。例えば、ネットワークインタフェース機能623が使用されて、サービスノードにPCIe LTPパケット625及びNVMeワークロードパケット626を送信することができる。UDP/IPパケット627及びTCP/IPパケット628は、サービスノードに送信されるLTPパケット以外のパケットであり得る。これらのパケットについて、サービスノードは、パケット処理及びルーティング機能632を提供し得る。したがって、サービスノードは、スイッチ、ルータ又はファイアウォールのサービスを提供し得る。
[0089] 図7は、ある態様に係る、PCIeデバイス620を介してサービス及び仮想化機能を提供するサービスノード103を示している。図6では、リクエストTLPがPCIeデバイス620に送信される。図7では、応答TLPが戻される。より具体的には、TLP603は読み取りリクエストTLPであり得、TLP703は読み取り応答TLPであり得る。このような応答TLPは完了TLPと呼ばれ得る。簡単にするために、仮想化PCI機能630に送信される単純なレジスタ読み取り操作が検討される。TLP603は、レジスタからの読み取りをリクエストし得る。サービスノードに送信されるLTPパケット625は、サービスノード103によって実装される機能から読み取りがリクエストされることを示し得る。サービスノードは、リクエストされたデータを包含する応答LTPパケット725を送信し、PCIeデバイス620は、応答LTPパケット725を使用して、読み取り応答TLP703を生成する。完了TLPは、TLPフォーマット705及び完了TLP703が読み取り応答であることを示すTLPタイプ706を含み得る。長さ707は、データフィールド710内のdwordの数を示す。コンプリータ識別子708は、完了TLP703の送信元を示す。リクエスタ識別子608は、完了TLP703を受信するデバイスを示し得る。例えば、ホストコンピュータ104がPCIeデバイス620にリクエストTLP603を送信する場合、リクエスタ識別子608はホストコンピュータ104を示し得、コンプリータ識別子708はPCIeデバイス620を示し得る。
[0090] サービスノード103は、PCIeデバイス620にPCIeワークロードパケット725及びNVMeワークロードパケット726を送信することができる。PCIeデバイスは、ワークロードリクエストを解釈することができ、かつ、ホストコンピュータ及びPCIeバス上の他のデバイスに、ワークロードリクエストに基づくTLPを送信することができる。これらのTLPパケットは、リクエスト、完了又はPCIe仕様によって定義された他のタイプのTLPであり得る。サービスノード103は、PCIeデバイス620に、IP/UDPパケット727及びTCP/IPパケット728などの他のネットワークパケットを送信することもできる。
[0091] 上述したように、ホストコンピュータとホストコンピュータで実行されているワークロードとは、デバイスドライバを使用してPCIe機能にアクセスすることができる。本明細書で検討する仮想化機能は、これらのデバイスドライバに対する変更を必要としない。PCIeデバイス620のアクセス機能及びサービスノード103の仮想化機能は、ホストの観点から、PCIeデバイスがそれらのサービス及び機能のその独自の実装を介して機能及びサービスを提供するように協働することができる。
[0092] 図8は、ある態様に係る、循環レプリケーションチェーン800のサービスノードを示すハイレベルフロー図である。仮想化機能は、単一のサービスノードによって提供され得る。そのような仮想化は、高可用性及びサービススケーリングなどのさらなる利点を可能にする。循環レプリケーションチェーン800が使用されて、複数のサービスノードが互換性のあるバージョンのサービス状態情報を有するようにサービス状態情報を複製することができる。したがって、循環レプリケーションチェーンのサービスノードのいずれかは、サービス状態情報を変更しないパケットを即座に処理することができる。パケットの処理によってサービス状態情報が変更される場合、パケットの処理を完了する前に変更が確認されなければならない。したがって、サービスノードによって提供されるサービスの多くは、循環レプリケーションチェーン800のサービスノードの数に比例し得る。サービスノードに障害が発生する又はサービスノードがオフラインにされた場合、その後、残りのサービスノードが引き続きサービスを提供する一方で、そのサービスノードは循環レプリケーションチェーンから除去される。このようにして、サービスは、サービスノードを追加又は除去することによってスケーリングされることができ、かつ、サービスは、サービスノードの障害に強いので、高可用性を有している。
[0093] 循環レプリケーションチェーン800は現在4つのサービスノードを有する。サービスノードは、サービスノード1 801、サービスノード2 802、サービスノード3 803及びサービスノード4 804である。同期パケットが使用されて、1つのノードから別のノードにサービス状態情報を複製することができる。循環レプリケーションチェーンのサービスノードはピアである。各サービスノードはアップストリームピア及びダウンストリームピアを有する。サービスノードは、それらのアップストリームピアから同期パケットを受信し、かつ、それらのダウンストリームピアに同期パケットを送信する。サービスノード1 801は、サービスノード2 802のアップストリームピアであり、かつ、サービスノード2 802に同期パケット805を送信する。サービスノード2 802はサービスノード1 801のダウンストリームピアである。サービスノード2 802は、サービスノード3 803のアップストリームピアであり、かつ、サービスノード3 803に同期パケット805を送信する。サービスノード3 803はサービスノード2 802のダウンストリームピアである。サービスノード3 803は、サービスノード4 804のアップストリームピアであり、かつ、サービスノード4 804に同期パケット805を送信する。サービスノード4 804はサービスノード3 803のダウンストリームピアである。サービスノード4 804は、サービスノード1 801のアップストリームピアであり、かつ、サービスノード1 801に同期パケット805を送信する。サービスノード1 801はサービスノード4 804のダウンストリームピアである。サービス及び機能について、サービス状態情報の複製により、サービスノードは情報の正確なコピーを取得する。フローテーブルなどの他の事例の場合、複製により、互換性を有するが全く同じではないサービスノード情報を生じさせる。
[0094] ある実施形態は、循環レプリケーションチェーンではないレプリケーションチェーンを使用することができる。非循環レプリケーションチェーンは、ヘッドノード、テールノード及び1以上の中間ノードを有する。データベースへの書き込み又は本明細書で検討するサービス状態の変更などのデータを変更する操作はヘッドノードに送信される。フロー同期パケットはヘッドノードからテールノードに移動する。テールノードは、ダウンストリームピアを有しないので、同期パケットをドロップする。テールノードは、同期パケットがチェーンのテールに到達したことを示す確認をヘッドノードに送信することができる。非循環レプリケーションチェーンを使用するため、ヘッドノードは常に、セッション状態を変更するパケットに対して選択されたノードである。チェーンの任意のノードは、セッション状態情報を変更しないパケットを処理することができる。
[0095] 図9は、ある態様に係る、サービス状態情報911のチェーンレプリケーションのために構成されたサービスノードを示すハイレベルフロー図である。NATは、サービスノードによって提供可能なサービスの1つである。コンピュータネットワークの熟練者はNATに精通している。NATセッションは、サーバ104とローカルネットワーク外のマシンとの間の通信用であり得る。NATセッション901の第1パケットは、新しいNATセッションが作成されるので、サービス状態情報を変更するIPパケットである。第1NATパケット901は、送信元IPアドレス902、宛先IPアドレス903、送信元ポート904、宛先ポート905及び他のデータ906を有する。送信元IPアドレス902及び送信元ポート904は、パケットの送信元及びその送信元のポートを示す。ロードバランサ907は第1NATパケット901を受信する。ロードバランサは、選択されたサービスノード910にNATパケットを送信する。選択されたサービスノード910は、ラウンドロビン又は重み付けされたラウンドロビンなどの負荷バランシングポリシーに基づいて選択され得る。ロードバランサは、所定のトラフィックを特定のサービスノードに優先的に送信し得る。例えば、ロードバランサは、NATパケットにラウンドロビンを使用することができ、かつ、特定のPCIeデバイス620から特定のサービスノードにNVMe LTPパケットを送信することができる。
[0096] 選択されたサービスノード910は、NATマッピングテーブルを含むサービス状態情報911を有する。選択されたサービスノード910は、第1NATパケット901を受信し、かつ、新しいNATセッションが必要であると決定する。選択されたサービスノードは、新しいセッション913のためのNATマッピングを作成し、かつ、NATマッピングテーブル912にNATエントリとして新たしいNATマッピングを格納する。選択されたサービスノードはまた、同期パケット920において、そのダウンストリームピアに、新しいセッション913のためのNATマッピングを送信する。循環レプリケーションチェーン内のサービスノードは、NATマッピングがアップストリームピア921からの同期パケットで選択されたサービスノードによって受信されるまで、新しいセッション913のためのNATマッピングを転送する。アップストリームピア921からの同期パケットは、サービスノードの全体のチェーンが新しいセッション913のためのNATマッピングを受信したことを確認するACKパケットとみなされ得る。選択されたサービスノードは、変換パケット914を送信する前にACKを待ち得る。NATは、他のパケットから変換パケットを生成する。変換パケット914は送信元IPアドレス915及び送信元ポート916を有する。変換パケットの送信元IPアドレス915は、レプリケーションチェーンを示す仮想IPアドレスであり得る。変換パケットの送信元ポート916はレプリケーションチェーンのポートを示す。仮想IP(vIP)アドレスは、これらのサービスノードの特定の1つではなく、レプリケーションチェーンのサービスノードのグループを示すために使用可能な仮想識別子である。明確化のため、vIPは、本明細書では、代わりに異なる仮想識別子が使用され得るという理解の下で参照される。ロードバランサ907は、vIPに送信されたパケットを受信し、かつ、そのパケットを特定のサービスノードに転送することができる。
[0097] 図10は、ある態様に係る、サービスを提供するサービスノードを示すハイレベル図である。サービス状態情報1001を変更しないIPパケットは、循環レプリケーションチェーンのサービスノードのいずれかによって即座に処理され得る。既知のNATセッションのためのパケットは、サービス状態情報1001を変更しないIPパケットの一例である。ロードバランサ907は、パケット1001を、変換パケット1002をその宛先に送信する選択されたサービスノード910に向けることができる。サービス状態情報に対する変更がないので、同期パケットはない場合がある。
[0098] 図11は、ある態様に係る、ネットワークアドレス変換(NAT)テーブルエントリをNATテーブルに追加することのハイレベル図である。選択されたサービスノードは、新しいNATテーブルエントリ1108のための新しいNATマッピングを生成することができ、かつ、NATマッピングテーブル912にNATテーブルエントリ1120として新しいNATテーブルエントリを格納することができる。NATマッピングテーブルのエントリには、ローカルIPアドレス1111、ローカルポート1112、リモートIPアドレス1113、リモートポート1114、パブリックポート1115及びパブリックIPアドレス1116が含まれ得る。ローカルIPアドレス1111は、ローカルネットワーク上のPCIeデバイスなどのローカルデバイスのIPアドレスであり得る。ローカルポート1112は、そのローカルデバイスのポートを示し得る。リモートIPアドレス1113はリモートデバイスのIPアドレスであり得る。ローカルポートはそのリモートデバイスのポートを示し得る。パブリックポート1115は、変換パケットで使用するための送信元ポート916を示し得る。パブリックIP1116は、変換パケットで使用するための送信元IPアドレス915を示し得る。パブリックIPエントリは、複数のvIPが使用される場合及びその他の場合に有用であり得る。
[0099] 生じることがある問題は、2つのサービスノードが同時に新しいNATテーブルエントリを作成し得ることである。2つのサービスノードが2つの新しいNATセッションに同じパブリックポートを割り当てる可能性がある。解決策は、各サービスノードがその独自のプールからのみパブリックIPを割り当てることによって、異なるサービスノードに異なるポートのプールを割り当てることである。サービスノードNATプール1101は、サービスノードのために利用可能なNATリソース1102及び利用不可のNATリソース1105を示し得る。利用可能なNATリソースには、利用可能なパブリックポート1103及び利用可能なパブリックIPアドレス1104が含まれ得る。利用不可のNATリソースには、利用不可のパブリックポート1106及び利用不可のパブリックIPアドレス1107が含まれ得る。
[00100] 図12は、ある態様に係る、チェーンレプリケーションを使用してサービス状態情報を複製することのハイレベルフロー図である。開始後、プロセスはパケット1201を待つことができる。プロセスは、パケットが受信されると決定点1202に進むことができる。決定点1202で、プロセスは、パケットが同期パケットであるかどうかを決定する。同期パケットでない場合、決定ポイント1208で、プロセスは、パケットを処理することがサービス状態情報を変更するかどうかを決定する。サービス状態情報が変更されない場合、その後、ブロック1209で、サービスノードは、次のパケット1201を待つ前にパケットを完全に処理する。サービス状態情報が変更された場合、その後、ブロック1210で、サービスノードはパケットの完全な処理を遅延させ得る。パケットは、チェーンが更新されたことを示すACKを待つ間、完全に処理され得る。ブロック1211で、プロセスは同期パケットをそのダウンストリームピアに送信する。同期パケットには、パケットによって引き起こされた変更に基づいてピアがそれらのサービス状態情報を更新するために使用可能な情報が含まれる。同期パケットを送信した後、プロセスは別のパケット1201の待機に戻ることができる。
[00101] パケットが決定点1202で同期パケットであると決定された場合、その後、決定点1203で、プロセスは、パケットが自己発信であるかどうかを決定することができる。図12の方法を実装するサービスノードは、ブロック1211で同期パケットを送信することができる。そのサービスノードの観点から、ブロック1211で送信される同期パケットは自己発信である。パケットが自己発信である場合、その後、ブロック1206で、サービスノードは、チェーンの更新を待機する間に遅延された操作を実行することができる。このような操作には、ブロック1210で遅延された異なるパケットについての処理を含み得る。ブロック1206の後、プロセスが別のパケット1201を受信するのを待機する前に、パケットはブロック1207でドロップされ得る。パケットが自己発信の同期パケットでない場合、その後、ブロック1204で、サービスノードのサービス情報が更新されることができる。ブロック1205で、プロセスが別のパケット1201を待つことに戻る前に、同期パケットがノードのダウンストリームピアに転送されることができる。
[00102] 図13は、ある態様に係る、ラック内のサービスノードホストのハイレベル図である。サービスノード103は、ローカルネットワーク1307上に展開されることができる。第1サービスノードホスト1302は2つのサービスノードを含み、第2サービスノードホスト1303も2つのサービスノードを含む。第1レプリケーションチェーン1304には、両方のサービスノードホストからのサービスノードが含まれる。第2レプリケーションチェーン1305には、両方のサービスノードホストからの異なるサービスノードが含まれる。サービスノードホストのうちの一方が故障してもいずれのレプリケーションチェーンも完全に故障しないので、図示の構成は高可用性を提供する。図13の例では、スマートスイッチでなくてもよいスイッチ1301は、サービスノードホスト1302、1303をパブリックネットワーク1306に接続する。
[00103] 図14は、ある態様に係る、複数のスマートスイッチにサービスノード103を含むレプリケーションチェーンのハイレベル図である。第1スマートスイッチ1402は2つのサービスノードを含み、第2スマートスイッチ1403も2つのサービスノードを含む。第1レプリケーションチェーン1404は、両方のスマートスイッチからのサービスノードを含む。第2レプリケーションチェーン1405は、両方のスマートスイッチからの異なるサービスノードを含む。スマートスイッチのうちの一方が故障してもいずれのレプリケーションチェーンも完全に故障しないので、図示の構成は高可用性を提供する。図14の例は、サービスノードを含むスマートスイッチ1402、1403を使用するという点で、図13の例とは異なる。図13のスイッチ1301はスマートスイッチではなくてもよい。したがって、サーバの既存のラックは、サービスノードホストを追加することによるサービスノードを用いてアップグレードされ得る。図14は、スマートスイッチが使用されるシステムを示している。どちらのシステムでも、高度なネットワーキング機能及びオフロードは、蓄積されたNICを使用している間に取得可能である。図示のようにPCIeデバイス620を使用すると、仮想化PCIe機能及びサービスの提供、仮想化NVMe機能及びサービスの提供なども可能にする。
[00104] 図15は、ある態様に係る、サービス1502を提供するサービスノード103のハイレベル図である。PCIeデバイス620及びサービスノード103は、PCIe/LTPパケット625、NVMe/LTPパケット626、及び、TCPパケット、UDPパケットなどのIPパケット1501等を交換することができる。サービスノード103によって提供されるサービス1502は仮想化サービス1503を含み得る。仮想化サービスは、仮想化PCIeデバイス機能630、仮想化NVMe機能631及び他の仮想化サービス又は機能1504を含み得る。サービス1502はパケット処理及びルーティングサービス632を含み得る。パケット処理及びルーティングサービス632には、暗号化/復号化1505、NAT1506、ファイアウォール1507、ディープパケットインスペクション(DPI)1508及び他のネットワークサービス1509が含まれ得る。サービスは、リモートダイレクトメモリアクセス(RDMA)ブリッジ1510及び他のサービス1511へのNVMeを含み得る。サービスノードは、PCIeデバイス620とパブリックネットワーク1541との間で交換されるネットワークトラフィックのためのIPパケット1501、1540を処理することができる。サービスノード103は、NVMe/TCP1530、ファイバチャネル1532、及び、コンバージドイーサネットバージョン2(ROCEv2)1531を介したRDMAを介してストレージエリアネットワーク1533に接続することができる。ストレージエリアネットワークの熟練者は、NVMe/TCP、ファイバチャネル及びROCEv2に精通しており、それらのすべてがデータセンタ内で幅広く展開されて使用される。サービスノード103はサービス状態情報1520を格納することができる。サービス状態情報1520は、フローテーブル441、セッションテーブル442、NTAマッピングテーブル443、仮想化PCIe機能マップ445、NVMeスプライシングデータ447、DPIルール及び基準1523、セキュリティ証明書1521、ファイアウォールルール1522、ルーティングルール1525、暗号化/復号化キー1524、及び、他のサービスのためのデータ1526を含み得る。
[00105] 図16は、ある態様に係る、アウトバウンドパケットにNATを実行するサービスノードのハイレベルフロー図である。アウトバウンドパケットは、PCIeデバイス620によって外部の場所に送信される第1NATセッションパケット1601及び他のNATセッションパケット1602を含む。PCIeデバイス620は、外部の場所に第1NATセッションパケット1601を送信する。ロードバランサは、レプリケーションチェーン1603内のサービスノード103に第1NATセッションパケットを向ける。サービスノード103は、第1NATセッションパケット1601を受信し、パケットのためのNATマッピング913を作成し、かつ、他のサービスノードにNATマッピング913ダウンストリームで送信する。他のサービスノードは、NATマッピング913に基づいてそれらのNATマッピングテーブルを更新する。第1NATセッションパケット1601を送信した後、PCIeデバイスは、レプリケーションチェーン1603に他のNATセッションパケット1602を送信することができる。ロードバランサは、サービスノード間でパケットを分配することができる。サービスノードは、アウトバウンドパケットから変換パケット1604を生成し、かつ、アウトバウンドパケット1601、1602の宛先アドレスによって示される外部の場所に変換パケット1604を送信する。
[00106] 図17は、ある態様に係る、インバウンドパケットにNATを実行するサービスノードのハイレベルフロー図である。インバウンドパケット1702は、外部の場所からPCIデバイス620に送信される。ロードバランサは、サービスノード103間でインバウンドパケット1702を分配する。サービスノードは、インバウンドパケット1702から変換パケット1701を生成し、かつ、PCIeデバイス620に変換パケットを送信する。ここで、NATサービスは、NATマッピングテーブルにエントリを有しないインバウンドパケットをドロップする。一部のNAT実装は、新しいNATセッションのインバウンドパケットの新しいNATマッピングを作成する。このような実装は、レプリケーションチェーンを通じて新しいNATマッピングを複製する。
[00107] 図18は、ある態様に係る、NATパケットを処理することのハイレベルフロー図である。開始後、プロセスはパケット1801を待つ。ブロック1802で、パケットが受信された後、プロセスは、パケットを処理する選択されたサービスノードを選択する。ブロック1803で、パケットは、選択されたノードに送信される。ロードバランサは、ブロック1802及び1803によって示される操作を実行し得る。サービスノードは、プロセスの残りのステップを実行し得る。決定点1804で、プロセスは、パケットが、既にNATマッピングテーブルにあるセッション用であるかどうかを決定する。セッション用である場合、ブロック1805で、プロセスは、セッションのNATマッピングテーブルエントリに基づいて変換パケットを生成する。ブロック1806で、変換パケットはその宛先に送信される。NATマッピングテーブルがパケットのためのエントリを有しない場合、プロセスは決定点1807に移動し、そこでプロセスは、パケットが内部の送信元からのものであるかどうかをチェックする。パケットが内部の送信元からのものでない場合、プロセスがパケット1801を待つことに戻る前に、パケットはブロック1808でドロップされる。パケットが内部の送信元からのものである場合、その後、ブロック1809で、パケットのNATマッピングが作成される。ブロック1810で、NATマッピングがサービスノードのローカルマッピングテーブルに格納される。ブロック1811で、NATマッピングは、サービスノードのダウンストリームピアに送信される。ブロック1812で、プロセスは、ブロック1805に進む前に、アップストリームピアがNATマッピングを確認するのを待機する。一実施形態では、内部の送信元は、ローカルネットワーク上の送信元である。外部デバイスがNATマッピングを開始することを可能にする実装は、決定点1807をスキップして、ブロック1809に進み得る。
[00108] 図8~図18を参照して上述したように、ホストコンピュータ又はホストコンピュータに設置されたSmartNICによって過去に実行された、ネットワークアドレス変換などのネットワークトラフィック処理の多くの態様は、スマートスイッチ内に配置可能なサービスノードによって処理されることができる。高可用性ネットワークトラフィック処理は、NATマッピングテーブルなどのサービスノードのサービス状態情報のチェーンレプリケーションを使用して提供されることができる。チェーンレプリケーションの性質により、NATなどのネットワークトラフィック処理は、使用されるサービスノードの数にほぼ比例して対応し得る。さらに、サービスノードは、レプリケーションチェーンに動的に追加され、かつ、レプリケーションチェーンから削除されることができるので、保守及びアップグレードに関してさらなる利益が得られる。この高可用性のサービスノードの実装及び展開により、フル機能のSmartNICによってのみ提供されていたサービスを、専用のNIC及びサービスの組み合わせによって実装可能にする。したがって、高度な機能は、各サーバについて、設備投資及び運用コストの効率が高い専用のNICによって、かつ、エネルギー効率の高い方法で、引き続きサポートされ、それによって、そうしたコンピューティングシステムの環境への影響を減らすことができる。
[00109] 図19は、ある態様に係る、仮想化機能を有するホスト開始リクエストを点検することのハイレベル図である。ホストは、デバイスドライバを使用して、PCIeデバイスへのリクエストを開始することができる。リクエストは、ホストからPCIeデバイスへのTLPで伝送されることができる。上述したように、DLLPはPCIeバス上でTLPを伝送する。TLPを受信すると、PCIeデバイスはホストにDLLP ACKを送信し、それによって、PCIeトランザクションを終了する。DLLP ACKの送信の遅延が、ホストコンピュータのPCIe実装内でエラー又はパフォーマンス低下を引き起こし得るので、DLLP ACKの送信は重要な操作である。このため、PCIeデバイスは、DLLP ACKを即座に送信し、かつ、TLPをカプセル化してネットワークパケットで転送するだけではない。PCIeデバイス620は、TLPの受信を確認するDLLP ACKを送信することができ、かつ、TLPを使用してワークロードリクエストカプセル1901を生成することができる。ワークロードリクエストカプセル1901は、ワークロードリクエストパケットでサービスノードに送信される。サービスノードは、ワークロードリクエストパケットを処理し、かつ、ワークロード応答カプセル1902を含むワークロード応答パケット1904を用いて応答し得る。PCIeデバイスは、ワークロード応答カプセル1902を処理して、PCIeバスを介してホストに送信されるTLPを生成することができる。ワークロードパケット1903又はワークロードカプセル1901が受信されたという通知をサービスノードから最初に受信することなく、DLLP ACKはPCIeデバイスからホストに送信されることができる。ホストに設置されたSmartNICは、ホストに提供されるサービス及び機能を集約し得る。これらのサービス及び機能は、ホスト内のSmartNIC内に集約され得る。PCIeデバイス620及び仮想化PCIe機能を実装するサービスノードは、ホスト内からこれらのサービス及び機能を分解することを提供する。
[00110] 図20は、ある態様に係る、仮想化機能によって開始されたリクエストを点検することのハイレベル図である。サービスノードで実行される仮想化機能は、ホストによって処理されるべきリクエストを生成することができる。リクエストは、ワークロードリクエストカプセル2001に配置されることができ、かつ、ワークロードリクエストパケット2003でPCIeデバイス620に送信されることができる。PCIeデバイス620は、ワークロードリクエストカプセルを処理して、PCIeバスを介してホストに送信されるTLPを生成することができる。ホストは、PCIeバスを介してTLP内のPCIeデバイスに送信される応答を生成し得る。PCIeデバイスは、TLPの受信に成功すると、ホストにすぐにDLLP ACKを送信することができる。PCIeデバイスは、TLPを使用してワークロード応答カプセル202を生成することができ、かつ、ワークロード応答パケット2004でサービスノードにワークロード応答カプセル202を送信することができる。DLLP ACKは、ワークロードパケット2004又はワークロードカプセル2002が受信された通知をサービスノードから最初に受信することなく、PCIeデバイスからホストに送信されることができる。
[00111] 図21は、ある態様に係る、ハードウェア実装及びソフトウェア実装の仮想化機能を提供することのハイレベル図である。PCIeデバイス620は、ワークロードから第1TLP2101を受信することができる。第1TLPは、アドレス2102、TLPタイプ2103及びTLPリクエスタ識別子2104を含み得る。PCIeデバイスは、第1TLPを使用して第1ワークロードカプセル2105を生成することができる。ワークロードカプセル2105は、アドレスオフセット、リクエストタイプインジケータ2107及びリクエスト識別子を含み得る。アドレスオフセットは、アドレス2102と仮想化PF及びVF2109のローカルベースアドレスとから計算されることができる。PCIe機能は、ホストのIOスペース内にベースアドレスを有し得る。したがって、ベースアドレスは、メモリ書き込み及び読み取りを使用してアクセス可能なPCIe機能レジスタの開始位置を示し得る。アドレス2102は、ホストのIOスペース内の位置を示す。これにより、アドレス2102は、どのPCIe機能がアクセスされているかと、PCIe機能内のどのメモリ位置がアクセスされているかと、を示す。PCIe機能のベースアドレスは、起動時にホストによって設定され得、かつ、起動ごとに変化し得る。したがって、アドレス2102は、サービスノードに対してほとんど又はまったく意味がない場合がある。代わりに、サービスノードは、アドレスオフセット及びPCIe機能識別子を使用することができる。PCIe機能識別子とリクエストタイプインジケータ又はPCIe機能インジケータとは、どのPCIe機能がアクセスされているかと、PCIe機能内のどのメモリ位置がアクセスされていると、を示すことができる。多くの場合、アドレスオフセットは、アドレス2102からPCIeデバイスでアクセスされているPCIe機能のベースアドレスを引いたものである。TLPタイプ2103が使用されて、リクエストタイプインジケータ2107を決定することができる。リクエスト識別子は、ワークロードカプセル又はワークロードパケットに一意に関連付けられた値であり得る。第1TLPがそのようなデータを含む場合、ワークロードカプセル又はパケットはまたTLPデータ710(図7を参照)を含み得る。
[00112] サービスノード103は、第1ワークロードカプセルを受信し、かつ、アクセスされている仮想化PCIe機能を識別することができる。仮想化PCIe機能は、様々な方法でサービスノード103又はスマートスイッチ301で実装されることができる。仮想化PCIe機能はソフトウェアによって実装され得る。ソフトウェア実装の仮想化機能2114は、リクエストタイプインジケータ、アドレスオフセット及びTLPデータ710を使用して、実行されるべき実行可能コード及びその実行可能コードに提供する入力を識別することができる。PCIe機能は、サービスノードがデバイスドライバ2113を介して相互作用するサービスノード内のハードウェアデバイス2115によって実装され得る。リクエストタイプインジケータ、アドレスオフセット及びTLPデータ710(図7を参照)が使用されて、デバイスドライバを識別し得、かつ、デバイスドライバ2113に入力を提供し得る。サービスノード103は、ハードウェアデバイス2112のベースアドレスを記録することができる。ローカルアドレスマッピングへのアドレスオフセットは、アドレスオフセット2106及びローカルベースアドレス2112を使用して、ローカルデバイスにアクセスするローカルアドレス値を計算することができる。
[00113] さらに別のオプションは、仮想化PCIeデバイスがハードウェアPCIeデバイス2115、2125によって実装されることである。例えば、ハードウェアデバイスは、スマートスイッチ内に設置されたハードウェアデバイス2125であり得る。サービスノードデバイスドライバ2113は、サービスノードPCIeバス2116及びスマートスイッチPCIeバス2124を介してハードウェアデバイス2125にアクセスし得る。サービスノードは、ハードウェアデバイス2125に第3TLPを送信することができる。第3TLPは、アドレスオフセット2106及びローカルハードウェアベースアドレス2112を使用して決定されたアドレス2121を含み得る。TLPタイプ2122は、第1TLP2101のTLPタイプ2103と同じである又はそれに基づき得る。TLPリクエスタID2123はサービスノード103を示すことができる。
[00114] サービスノード103は、PCIeデバイス620にワークロードパケットを送信することができる。ワークロードパケットは、サービスノードから発信されたワークロードリクエストであり得る、又は、ワークロードリクエストに応答して送信されるワークロード応答であり得る。サービスノードの仮想化機能はワークロード応答を送信し得る。サービスノードから発信されたリクエストは、ホストから発信されたリクエストと似ている。応答は、応答されているリクエストを示すという点でわずかに異なる。サービスノードは、PCIeデバイス620にワークロード応答パケット2130を送信することができる。第2ワークロードカプセル2132は、ワークロード応答パケット2130のワークロード応答ペイロード2311に含まれ得る。ワークロード応答カプセル2132は、リクエスト識別子2108及び応答タイプインジケータ2147を含み得る。応答タイプインジケータは、成功、失敗、第2ワークロードカプセル2132内のデータを含む書き込み、読み取り応答の確認などを示し得る。リクエスト識別子2108は、サービスノードに送信されたリクエストのそれと同じであり得る。第2ワークロードカプセルが使用されて、ワークロードに送信可能な第2TLP2141を生成することができる。リクエスト識別子2108が使用されて、第2TLPに含めるTLPリクエスタID2104を決定することができる。応答タイプインジケータ2147が使用されて、第2TLPに含めるTLPタイプ2143を決定することができる。TLPコンプリータID2144は、仮想化PCIe機能、PCIeデバイス620又はサービスノード103を示すことができる。
[00115] サービスノードは、アドレスオフセット2106、リクエストタイプインジケータ2107及びLTPパケットヘッダデータを使用して、どの仮想化機能がアクセスされているかを決定し得る機能解釈及びマッピング2110を実装することができる。機能解釈及びマッピング2110は仮想化PCIe機能マップを使用し得る。
[00116] 図22は、ある態様に係る、例示的な仮想化PCIe機能マップ2201の図である。仮想化PCIe機能マップの目的は、PCIeデバイス上の仮想化PCIeアクセス機能を、サービスノードによって提供される仮想化PCIe機能と関連付けることである。マッピングを実行するための特定の技術は実装に依存する。実装が異なれば、PCIeデバイス、サービスノード又はその両方に、より多くの、より少ない又は異なるデータを格納し得る。特定の実装に関係なく、PCIeデバイス上の仮想化PCIeアクセス機能とサービスノードによって提供される仮想化PCIeとの関連付けは、ワークロードパケットを適切に送信するために形成及び使用される。
[00117] 仮想化PCIe機能マップ2201は、PCIeデバイス上の仮想化PCIeアクセス機能とサービスノードによって提供される仮想化PCIe機能との間のマッピングに使用可能な仮想化PCIe機能マップエントリを有する。ホストコンピュータは、PCIeデバイスによって実装されたPCIe PF及びVFを介して仮想化PCIeアクセス機能にアクセスすることができる。サービスノード及びPCIeデバイスはワークロードパケットを交換し、それによって、ホストコンピュータに仮想化PCIe機能を提供することができる。ワークロードパケットはUDP/LTPパケットであり得る。仮想化PCIe機能マップエントリは、PCIeデバイス識別子2202、PCIe機能識別子2203、リクエストタイプインジケータ2204、オフセットアドレス2205、トランザクションエンドポイントノード識別子2206及びトランザクションエンドポイントタイプ2207を含み得る。PCIeデバイス識別子2202は、PCIeデバイスを識別することができ、かつ、ラベル、MACアドレス、IPアドレス又は他のインジケータであり得る。PCIe機能識別子2203は、PCIe PF又はVFを識別することができる。PCIe機能識別子2203は、グローバルに一意の番号/ラベルであり得る、又は、機能を実装するPCIeデバイス内でのみ一意の番号/ラベルであり得る。リクエストタイプインジケータ2204は、TLPリクエストタイプ又はある他の手法を使用して決定されることができる。オフセットアドレス2205が使用されて、仮想化PCIe機能のどの態様がアクセスされるかを決定することができる。例えば、1つのオフセットがクロック値の読み取り用であり得る一方で、異なるオフセットがタイムゾーンなどのクロックパラメータの読み取り用であり得る。トランザクションエンドポイントノード識別子2206は、サービスノード又は循環レプリケーションチェーンを示すことができる。例えば、トランザクションエンドポイントノード識別子2206は、サービスノードのIPアドレス又は循環レプリケーションチェーンのvIPであり得る。トランザクションエンドポイントタイプ2207は、仮想化PCIe機能が、実行可能コードとして、スマートスイッチに設置されたグラフィックスプロセッシングユニット(GPU)などのスイッチPCIeデバイスとして、又は、サービスノード内に実装される圧縮回路418(図4を参照)などのローカルデバイスとして実装される。
[00118] 図23は、ある態様に係る、サービスノードによって使用されて、実行可能コードとして、サービスノード上のハードウェアを介して、又は、スマートスイッチに設置されたハードウェアを介して実装される仮想化PCIe機能を提供することができるプロセスのハイレベルフロー図である。開始後、ブロック2301で、プロセスはワークロードパケットを受信することができる。ブロック2302で、プロセスは、ワークロードパケットに含まれるワークロードカプセルを読み取ることができる。ある実装には、単一のワークロードカプセルに複数のワークロードカプセルが含まれ得る。明確にするため、追加のワークロードカプセルを処理するためのループを当業者が容易に実装可能であることの理解に基づいて、図示のプロセスは1つのワークロードカプセルを処理する。ブロック2303で、プロセスはワークロードカプセルのためのトランザクションエンドポイントを決定する。ブロック2304で、プロセスは、トランザクションエンドポイントのためのトランザクションエンドポイントハンドラに分岐することができる。実行可能コードは、ソフトウェア実装された仮想化PCIe機能のために分岐されることができる。ブロック2305で、プロセスは、コードを実行することによって結果を取得することができる。実行するための特定のコードは、仮想化PCIe機能マップを使用して決定され得る。実行可能コードのための入力値はワークロードカプセルから取得され得る。仮想化PCIe機能がサービスノードのハードウェアによって実装される場合、オンノードハードウェアデバイスが分岐され得る。ブロック2306で、プロセスは、オンノードハードウェアにアクセスするオンノードデバイスドライバを介して結果を取得することができる。デバイスドライバ又はハードウェアデバイスのための入力値はワークロードカプセルから取得され得る。仮想化PCIe機能が、スイッチ内のPCIeバスに取り付けられたハードウェアによって実装される場合、オンスイッチPCIeデバイスが分岐され得る。ブロック2307で、プロセスは新しいTLPを形成することができる。元のTLP(例えば、図21の第1TLP2101)からの値は、ワークロードカプセルに含まれ得、かつ、ワークロードカプセルからコピーされ得る。ワークロードカプセルからの他の値は、新しいTLPの生成を支援するために使用され得る。アドレスオフセットとローカルに格納されたベースアドレスレジスタのセットとが使用されて、新しいTLPで使用するための正しいアドレスを決定することができる。ブロック2308で、新しいTLPがスイッチのPCIeバスを介してハードウェアに送信されることができる。ブロック2309で、プロセスは、ハードウェアから応答TLPを受信することができる。ブロック2310で、プロセスは、応答TLPから結果を取得することができる。
[00119] 図19~図23は、サービスノード103及びPCIeデバイス620を使用して仮想化PCIe機能を提供する態様を示している。PCIeデバイス620が仮想化PCIe機能アクセスポイントを提供することができる一方で、サービスノード103は仮想化PCIe機能を提供する。このような実装では、ホスト内からサービスノードへの特定の複雑でコストのかかる操作を分解することができる。機能をサービスノードに仮想化することで、これらの機能を提供するコストを削減し、かつ、保守、アップグレード及びスケーリングを向上させることができる。
[00120] 図19~図23を参照して上述したように、PCIe機能は、TLPを受信し、TLPを確認し、かつ、TLPに基づいてLTPパケットを、スマートスイッチ内に配置可能なサービスノードに送信するPCIeデバイス620を使用して仮想化されることができる。仮想化PCIe機能の機能性はサービスノードを介して提供されることができる。したがって、サービスノードのサービス状態情報のチェーンレプリケーションを使用して高可用性のPCIe機能が提供されることができる。このPCIe機能の仮想化により、フル機能のSmartNIC又はホストに設置された他のハードウェアによってのみ提供された可能性のあるサービスが、専用のNIC、サービスノード及びスマートスイッチの組み合わせによって実装されることを可能にする。したがって、高度な機能は、各サーバについて、設備投資及び運用コストの効率が高い専用のNICによって、かつ、エネルギー効率の高い方法で、引き続きサポートされ、それによって、そうしたコンピューティングシステムの環境への影響を減らすことができる。
[00121] 図24は、ある態様に係る、仮想化NVMeサービスを使用するホスト開始不揮発性メモリエクスプレス(NVMe)トランザクションを示すハイレベル図である。PCIeデバイス620は仮想化NVMeアクセス機能622を実装することができる。仮想化NVMe機能622はPCIe PF又はVFであり得る。ホスト201にとって、仮想化NVMeアクセス機能622はNVMeコントローラのように見え得る。したがって、仮想化機能に特別なデバイスドライバを必要としないので、ワークロードはデフォルト又はプリインストールされたNVMeドライバを使用し得る。
[00122] NVMeコントローラの挙動及びPCIeコントローラのためのPCIeレジスタレイアウトの詳細は、2021年2月2日にNVMエクスプレスによって発行された書類「NVMエクスプレスマネジメントインタフェース、改訂1.1c」(以下、NVMe仕様という)で特定される。NVMエクスプレスは、NVMeハードウェア、NVMe通信及びNVMeプロトコルの基準決定機関である。したがって、NVMeストレージの熟練者は、NVMeコントローラの実装及び使用の態様並びにNVMeの他の態様に精通している。
[00123] 仮想化NVMeアクセス機能622は、仮想化NVMe機能を実装するサービスノード103とワークロードパケットを交換することができる。サービスノードによって実装される仮想化NVMe機能は、NVMeオーバーファブリック(NVMe-oF)プロトコルを使用してストレージエリアネットワーク(SAN)にアクセスすることができる。NVMeエクスプレスは、2019年10月22日に「NVMエクスプレスオーバーファブリック改訂1.1」(以下、NVMe-oF仕様という)を発行した。NVMe-oF仕様は、NVMe/TCP、NVMeオーバーファブリックチャネル(NVMe/FC)及びNVMe/RDMAなどのNVMe-oFインタフェースを実装するストレージエリアネットワーク(SAN)にアクセスして使用するプロトコル及び要件を列挙して特定する。したがって、ストレージエリアネットワークの熟練者は、NVMeコントローラの実装及び使用の態様、NVMe-oFの実装及び使用、並びに、NVMeの他の態様に精通している。
[00124] ワークロード2401は、送信キューエントリSQEを送信キュー(SQ)2403に配置することによってNVMeトランザクションを開始することができる。PCIeデバイス620は、仮想化NVMeアクセス機能を実装することができ、かつ、例えば、PCIeデバイス620のドアベルレジスタに値を書き込むことによってSQEを通知され得る。仮想化NVMeアクセス機能622は、SQからSQEを取得し、それらを処理して、第1LTPパケット2411などのワークロードパケットを生成することができる。SQEのフォーマットはNVMe仕様によって定義される。SQEは、コマンド識別子、操作コード(opcode)、仮想名前空間識別子(vNSID)、コマンドパラメータ及びバッファアドレスを含み得る。NVMeコントローラは名前空間識別子(NSID)を予期する。NSIDは物理デバイス上のブロックストレージを識別する。仮想化NVMeアクセス機能はvNSIDをNSIDとして使用することができる。vNSIDは、PCIeデバイスがブロックストレージを識別するために使用する値であり得るが、SANが使用するNSIDにマップされなければならない。サービスノードはvNSIDを使用して、SAN上のブロックストレージを識別するNSIDを識別する。したがって、サービスノードはvNSIDとNSIDとの間のマッピングを使用して、ワークロード2401とSANとの間の接続(NVMeスプライス)をともにスプライスし得る。したがって、vNSIDはNVMeスプライスを示し得る。
[00125] 仮想化NVMeアクセス機能622は、SQE2405を使用して、第1LTPパケット2411などのワークロードパケットを生成することができる。第1LTPパケット2411は、PCIeデバイス識別子、PCIe機能識別子、PCIeデバイスシーケンス番号、PCIeデバイスリクエスト識別子、機能タイプ、コマンド識別子、opcord、vNSID、コマンドパラメータを含み得、かつ、データを含み得る。第1LTPパケット2411、図5に示すLTPパケット520及びSQE2405を比較すると、第1LTPパケットはLTPパケットであり得、ワークロードカプセルがNVMeカプセルであることが観察され得る。PCIeデバイス識別子及び機能識別子が使用されて、特定のPCIeデバイス及びそのPCIeデバイスによって実装される機能を識別することができる。機能タイプは、ワークロードカプセルがNVMeカプセルであることを示す。PCIeデバイスシーケンス番号が使用されて、LTPパケットが再送信されることができるようにLTPパケットが失われたと決定することができる。PCIeリクエスト識別子が使用されて、応答がPCIeデバイスリクエスト識別子を介してリクエストに関連付けられることができるようにリクエストがサービスノードに送信されることを識別することができる。コマンド識別子、opcord、vNSID及びコマンドパラメータはSQE2405のものと同じであり得る。SQE2405には、ストレージに転送されるべきデータを参照し得るバッファアドレスを包含する。データは、存在する場合、ホストから第1LTPパケット2411にコピーされ得る。
[00126] サービスノード103は第1LTPパケット2411を処理することができる。サービスノードは、NVMe-oFプロトコルのうちの1つを介してSANとの接続を確立することができる。したがって、サービスノードは、LTPパケットからのデータを、SANがある名前空間に書き込むことができ、かつ、SANがある名前空間からデータを読み取ることができる。LTPにNVMe書き込みリクエスト及びデータが含まれている場合、サービスノードは、NVMe-oFを介してSANにデータを書き込むことができる。LTPリクエストにNVMe読み取りリクエストが含まれている場合、サービスノードは、NVMe-oFを介してリクエストされたデータを、フェッチし、かつ、読み取り応答又は書き込みリクエストとして仮想化NVMeアクセス機能に送信することができる。
[00127] サービスノード103は、PCIeデバイス620に第2LTPパケット2412を送信することができる。第2LTPパケットは、PCIe機能識別子、PCIeデバイスシーケンス番号、PCIeデバイスリクエスト識別子、機能タイプ、コマンド識別子、opcord、vNSID、コマンドパラメータを含み得、かつ、データを含み得る。パケットが特定のPCIeデバイスに送信されることができ、及びしたがって、PCIeデバイス識別子が必要とされない場合があるので、第2LTPパケット2412はPCIeデバイス識別子なしで示されている。第2LTPパケット2412は、サービスノードからPCIeデバイスへのLTPパケットの信頼性の高い配信を確実にすることを支援するために使用され得るサービスノードシーケンス識別子を含み得る。通信ネットワークの熟練者は、シーケンス番号を使用して信頼性の高い配信を確実にすることに精通している。第2LTPパケット2412を完了キュー要素(CQE)2406と比較すると、第2LTPパケット2412は、CQEを含むNVMeカプセルを伝送するLTPパケットであることが分かる。CQEのコンテンツ及びフォーマットはNVMe仕様で指定されている。第2LTPパケット2412は、PCIeデバイスリクエスト識別子を含むように示されているので、第2LTPパケットは、そのPCIeデバイスリクエスト識別子を有するリクエストに応答する。コマンド識別子及びLTPパケットの他のデータは、第2LTPパケット2412が応答であることを示し得る。PCIeデバイス620は、第2LTPパケット2412を受信し、かつ、それを使用してCQE2406を生成することができる。CQE2406は、その後、SQに関連付けられたNVMe完了キュー(CQ)に配置されることができる。NVMeドライバは、CQEを使用して、SQEの結果を決定することができる。
[00128] 図25は、ある態様に係る、仮想化NVMeサービスを提供するサービスノードのハイレベル図である。図24は、PCIeデバイスを中心とする表示を提供した一方で、図25は、サービスノードを中心とする表示を提供する。サービスノード103は第1LTPパケット2411を受信することができる。機能タイプは、LTPがNVMeカプセルを伝送することを示している。サービスノード103は、LTPパケットコンテンツのPCIeデバイス識別子及びvNSID、並びに、名前空間マップ2501を使用して、特定のSAN、SANのタイプ、及びそのSANがあるストレージのブロックの識別子を識別することができる。名前空間マップエントリは、名前空間マッピングを示し、かつ、PCIeデバイス識別子、vNSID、SANタイプ2502、SAN識別子2503及びSAN特定ストレージ識別子2504を含み得る。サービスノード103は、サービスノードストレージインタフェース2505を使用して、様々なトランスポート及びトランスポートプロトコルを使用してSANにアクセスすることができ、それらの多くが図示されている。図示したトランスポートプロトコルは、NVMe/FC、ファイバチャネル(FC)、ファイバチャネルオーバーイーサネット(FCoE)、NVMe/TCP、NVMe/RDMA、RDMA及びROCEv2を含む。これらのトランスポートプロトコルの各々は、当技術分野でよく知られており、オープンソースソフトウェアを含むソフトウェアはこれらのトランスポートプロトコルを実装するために利用可能である。図示したトランスポートは、ファイバチャネル、イーサネット及びインフィニバンドである。ファイバチャネル又はイーサネットは、ファイバチャネル/FCoE対応のSAN2506にアクセスするために使用され得る。イーサネット又はインフィニバンドは、RDMA/ROCEv2対応のSAN2510にアクセスするために使用され得る。イーサネットは、NVMe/TCP対応のSANにアクセスするために使用され得る。これらのトランスポートの各々は当技術分野でよく知られており、広く利用可能である。サービスノード103は、他のトランスポート及びトランスポートプロトコルを使用し得る。SANタイプ2502は、SAN識別子2503によって識別されるSANにアクセスするために使用するトランスポート及びトランスポートプロトコルを示し得る。SANは、ストレージの様々なブロックへのアクセスを提供することができ、かつ、SAN固有のストレージ識別子を使用してストレージのブロックを識別することができる。例えば、NVMeは、ストレージのそれらのブロックを名前空間として参照し、かつ、ストレージのブロックを識別するために名前空間識別子(NSID)を使用する。
[00129] SAN、SANタイプ、及びSAN内のストレージブロックを識別するためにPCIeデバイス識別子及びvNSIDを使用すると、サービスノードはSANにアクセスして、ストレージブロックからデータを読み取る又はストレージブロックにデータを書き込むことができる。名前空間マップ2501の第1名前空間マッピングを使用すると、識別されたSANは、NVMe/TCP対応のSAN2509であり得、かつ、ストレージブロックはNSID「NSID1」を有し得る(ここでは明確にするために「NSID1」が使用される。実際のNSIDは、NVMe仕様及びNVMe-oF仕様に従って異なるフォーマットを有する。)。サービスノードは、IPアドレス「コントローラIP」を有するNVMe/TCP対応SAN2509に第1NVMe/TCPパケット2507を送信することができる。第1NVMe/TCPパケット2507はNVMeリクエストカプセル2508を含み得る。NVMe/TCPリクエストカプセル及び応答カプセルのフォーマット及びコンテンツは、NVMe仕様及びNVMe-oF仕様で特定される。NVMeリクエストカプセル2508はSQE2520を含む。SANに送信されるSQE2520は、ワークロードに送信されるSQE2405と同じではない。SAN2509に送信されるSQE2520は、SAN2509がストレージブロックを識別するために使用可能なNSID「NSID1」を有する。SAN2509に送信されるSQE2520のコマンド識別子は、サービスノードとSANとの間のトランザクションを識別するコマンド識別子を有する。ホスト201によって送信されたSQE2405は、ホスト201とPCIeデバイス620との間のトランザクションを識別する。PCIeデバイス620は、ホスト201とPCIeデバイスと間のトランザクションのためのコマンド識別子に関連付けられたPCIeデバイスリクエスト識別子を格納することができる。サービスノード103は、サービスノード103とSAN2509との間のトランザクションのためのコマンド識別子に関連付けてPCIeデバイスリクエスト識別子を格納することができる。したがって、2つのトランザクションは、LTPパケット2411、2412及びPCIeデバイスリクエスト識別子を介してともにスプライスされ得る。
[00130] SAN2509は、サービスノードに第2NVMe/TCPパケット2511を送信することができる。第2NVMe/TCPパケット2511は、第1NVMe/TCPパケット2507に応答する。第2NVMe/TCPパケット2511は、CQE2521を含み得るNVMe応答カプセル2512を含み得る。CQE2521のコマンド識別子は、CQEがSQEに応答するときのSQE2520のコマンド識別子と同じである。SQE2520が読み取りリクエストである場合、NVMe応答カプセル2512は、リクエストされたデータを含み得る。SQE2520が書き込みリクエストである場合、NVMe応答カプセル2512は、書き込みリクエストの成功又は失敗を示すことができる。NVMe-oF仕様は、NVMeリクエストカプセル及びNVMe応答カプセルなどのNVMeカプセルのコンテンツ及びフォーマットを特定する。サービスノードは、第2LTPパケット2412を生成するためにNVMe応答カプセル2512を使用し得る。
[00131] 図26は、ある態様に係る、仮想化NVMeサービスを提供する循環レプリケーションチェーン908(図9を参照)のサービスノードのハイレベル図である。第1UDP/LTPパケット2601は、循環レプリケーションチェーンのvIPである宛先IPを有し得る。ロードバランサ907は、第1LTP/UDPパケット2602を受信し、かつ、選択されたサービスノード910にそれを送信することができる。選択されたサービスノードのサービス状態情報911は、名前空間マップ2501などのNVMeスプライシングデータ2605を含み得る。第1LTP/UDPパケット2601を受信すると、選択されたサービスノードは、名前空間マップ2501に新しい名前空間マップエントリ2604を作成し得る、又は、ある他の方法でサービス状態情報911を変更し得る。したがって、サービス状態情報911が変化し、選択されたサービスノード910は、そのダウンストリームピアに同期パケット2606を送信する。最終的に、サービスノードのアップストリームピアは、選択されたサービスノードに新しい名前空間マップエントリ2604を送信することができる。
[00132] 図27は、ある態様に係る、PCIeデバイスによって格納され得る例示的なサービスノードデータ2407を示す図である。サービスノードデータ2407は、サービスアドレス2408を含み得、かつ、名前空間マップ2409を含み得る。サービスアドレスは、仮想化NVMeサービスを提供し得るサービスノード又は循環レプリケーションチェーンを示し得る。名前空間マップ2409は、サービスノードによって提供され得る。サービスノードデータは、識別子マップ2410をリクエストするためのコマンド識別子を含み得る。識別子マップ2410をリクエストするためのコマンド識別子のエントリは、コマンド識別子、リクエスト識別子、送信キューヘッドポインタ及びバッファアドレスを関連付けることができる。コマンド識別子、送信キューヘッドポインタ及びバッファアドレスは、ホストによって送信されたSQEから取得されることができる。リクエスト識別子(例えば、LTPパケット2411、2412のPCIeデバイスリクエスト識別子)は、PCIeデバイス620とサービスノード103との間のトランザクションを識別することができる。
[00133] 図28は、ある態様に係る、識別子マップ2801をリクエストするための例示的なコマンド識別子を示す図である。識別子マップ2801をリクエストするためのコマンド識別子は、PCIeデバイス識別子、PCIe機能識別子、コマンド識別子(ホストSQEから)、リクエスト識別子、別のコマンド識別子(SQEからSAN)、送信キューヘッドポイント(ホストSQEから)及びバッファアドレス(ホストSQEから)を関連付けるエントリを有し得る。「ホストSQEから」という注釈の付いたエントリフィールドが、それらの値がLTPパケットに含まれてサービスノードに格納される実装に含まれ得る。このような実装では、サービスノードからPCIeデバイスに送信されるLTPパケットは、CQEを生成するためにPCIeデバイスに必要なすべての情報を含み得る。
[00134] 図29A、図29B及び図29Cは、ある態様に係る、ストレージエリアネットワーク(SAN)への高可用性アクセスを提供することのハイレベル図である。
[00135] 図29Aは、ある態様に係る、永続ストレージに高可用性を提供するためのストレージレプリケーションチェーン2904及び2つのスマートスイッチを使用することのハイレベル図である。永続ストレージは、SAN A2902を介してアクセスされることができる。PCIeデバイス620は、2つのポートを有し、かつ、ストレージレプリケーションチェーン2904を介してSAN A2902にアクセスするためのポートのうちの1つを使用することができる。ストレージレプリケーションチェーン2904は、第1スマートスイッチ1402及び第2スマートスイッチ1403にあるサービスノード103を含む。したがって、サーバ104は、障害、保守、アップグレードなどのためにスマートスイッチのうちの1つが機能していない場合、サーバ104はSAN A2902にアクセスすることができる。ソフトウェア定義ネットワーク(SDN)レプリケーションチェーン2905は、第1スマートスイッチ1402にあり、かつ、第2スマートスイッチ1403にあるサービスノード103も含み得る。SDNレプリケーションチェーンのサービスノードは、NAT、ファイアウォール、TCP及びUDPパケットの処理などのSDNサービスを提供することができる。単一のサービスノードが、ストレージレプリケーションチェーン、SDNレプリケーションチェーン、仮想化PCIサービス及び機能を提供するレプリケーションチェーンなどの多数のレプリケーションチェーン内に構成され得る。
[00136] 図29Bは、ある態様に係る、永続ストレージに高可用性を提供するためにサービスノード103及び2つのスマートスイッチを使用することのハイレベル図である。複数のSAN又はSANアクセスノードが、データへの高可用性アクセスを提供するように構成され得る。例えば、SAN A及びSAN Bは、永続ストレージ内の名前空間へのアクセスを提供し得る。名前空間自体は、SAN A2902又はSAN B2903を介してアクセスされたときに名前空間内のデータが一貫するように、何らかの方法でミラーリング又は複製され得る。SANの熟練者は、名前空間への一貫したアクセスの提供に精通している。PCIeデバイス620は2つのポートを有する。サーバ104は、PCIeデバイスポートのうちの1つを使用して、第1スマートスイッチ1402のサービスノード103を介してSAN A2902にアクセスすることができる。サーバ104は、PCIeデバイスポートのうちの別の1つを使用して、第2スマートスイッチ1403のサービスノード103を介してSAN B2903にアクセスすることができる。したがって、スマートスイッチのうちの1つが機能していない場合でも、サーバは名前空間へのアクセスを依然として有している。PCIeデバイス620は、NVMeバランシングポリシー2901を有し得る。例えば、PCIeデバイスは、LTPパケットが第1スマートスイッチ1402などのアクティブスマートスイッチに送信されるアクティブ-パッシブバランシングポリシーを使用することができる。他のスマートスイッチ、スタンバイ又はバックアップのスマートスイッチが、アイドル状態である、又は、他のデバイスの他のトラフィックを処理し得る。アクティブスマートスイッチに障害が発生する又はアクティブスマートスイッチのサービスが停止すると、その後、パッシブスマートスイッチがアクティブスマートスイッチになり得る。高可用性のネットワーキングの熟練者は、アクティブ-パッシブバランシングポリシー及びアクティブ-アクティブなどの他の多くのバランシングポリシーに精通している。
[00137] 図29Cは、ある態様に係る、永続ストレージへの高可用性アクセスを提供するために複数のレプリケーションチェーンを使用することのハイレベル図である。第1スマートスイッチ1402及び第2スマートスイッチ1403はサービスノード103を含む。第1レプリケーションチェーン1404は両方のスマートスイッチのサービスノードを含む。第2レプリケーションチェーン1405も両方のスマートスイッチのサービスノードを含む。PCIeデバイス620はNVMeバランシングポリシー2901を有し得る。例えば、PCIeデバイスは、LTPパケットが、アクティブレプリケーションチェーンと呼ばれるレプリケーションチェーンのうちの1つに送信される、アクティブ-パッシブバランシングポリシーを使用することができる。他のレプリケーションチェーン、スタンバイ又はバックアップレプリケーションチェーンは、アイドル状態である、又は、他のデバイスのための他のトラフィックを処理し得る。アクティブチェーンに障害が発生した場合、パッシブレプリケーションチェーンはアクティブレプリケーションチェーンになり得る。高可用性ネットワーキングの熟練者は、アクティブ-パッシブバランシングポリシー及び他の多くのバランシングポリシーに精通している。SANは多数のアクセスノードを有するのが一般的である。第1レプリケーションチェーン1404はSAN A2902 2902に接続されている。第2レプリケーションチェーン1405はSAN B2903に接続されている。
[00138] 図24~図29Cは、サービスノード103及びPCIeデバイス620を使用して仮想化NVMeサービス及び機能を提供する態様を示している。PCIeデバイス620は、仮想化NVMeサービス及び機能アクセスポイントを提供することができる一方で、サービスノード103は仮想化NVMeサービス及び機能を提供する。このような実装は、特定の複雑で費用のかかる操作をホスト内からサービスノードに分解することができる。例えば、NVMe/TCPはSmartNICでかなりのリソースを消費する。NVMe/TCPのリソース消費の側面をサービスノードに移動すると、PCIeデバイス620を簡素化することができる一方で、NVMe/TCP機能を依然として提供する。サービスノードに対する機能を仮想化すると、それらの機能を提供するコストを削減することができ、かつ、保守、アップグレード及びスケーリングを向上させることができる。
[00139] 図24~図29Cを参照して上述したように、NVMeサービス及び機能は、ホスト上のSQからSQEを読み取り、かつ、SQEに基づいてLTPリクエストパケットを、スマートスイッチ内に配置可能なサービスノードに送信するPCIeデバイス620を使用して仮想化されることができる。サービスノードは、ホストに代わってSANとのトランザクションを実行することができ、かつ、トランザクション結果をLTP応答パケットでPCIeデバイスに送信することができる。PCIeデバイスは、LTP応答パケットに基づいてCQEを生成し、かつ、SQに関連付けられているホスト上のCQにCQEをエンキューすることができる。SANによって開始されたトランザクションは、ホストからの読み取り又はホストへの書き込みのための同様のプロトコルに従うことができる。サービスノードのサービス状態情報のチェーンレプリケーションを使用して、高可用性NVMeサービス及び機能が提供されることができる。複製又はミラーリングされたSANに各々が接続されている複数のスマートスイッチを使用して高可用性が提供されることもできる。このNVMe機能の仮想化により、フル機能のSmartNICによってのみ提供されていた可能性のあるサービスが、専用のNIC及びサービスノードの組み合わせによって実装されることを可能にする。したがって、高度な機能は、各サーバについて、設備投資及び運用コストの効率が高い専用のNICによって、かつ、エネルギー効率の高い方法で、引き続きサポートされ、それによって、そうしたコンピューティングシステムの環境への影響を減らすことができる。
[00140] 図30は、ある態様に係る、パケット処理サービスを提供する循環レプリケーションチェーンのサービスノードのハイレベル図である。サービスノードは、ネットワークトラフィックフローに対してルーティング、スイッチング、ファイアウォールなどのネットワークサービスを提供し得る。したがって、サービスノードは、ローカルフローテーブル3020及びローカルセッションテーブル3021を有し得る。コンピュータスイッチング及びルーティングハードウェアの熟練者はフローテーブル及びセッションテーブルに精通している。フローテーブルは、パケットに適用されることとなる特定の処理を識別するために使用されることができる。サービスノードは、パケットを受信すると、パケットのヘッダ情報(例えば、送信元IP、送信元ポート、宛先IP、宛先ポート及びプロトコルのパケット5タプル)を使用してフロー識別子を計算することができる。その後、サービスノードは、そのフロー識別子を有するエントリについてフローテーブルをチェックすることができる。「フローミス」は、フローテーブルがそのようなエントリを有していない場合に発生する。「フローヒット」は、フローテーブルがそのフロー識別子のためのエントリを有する場合に発生する。フローヒットの場合、サービスノードは、フローテーブルエントリの指示に従ってパケットを処理する。フローミスの場合、サービスノードは、パケットの処理方法を決定し、かつ、パケットについてフローテーブルに新しいエントリを作成することができる。セッションは通常、順方向フロー及び逆方向フローの2つのフローから構成される。両方のフローがフローテーブルエントリを有し得る。セッションテーブルは、サービスノードによって処理されているアクティブセッションについてのエントリを有し得る。セッションテーブルは、セッションの状態を追跡するために使用されることができる。
[00141] サービスノードのサービス状態情報911は、ローカルフローテーブル3020及びローカルセッションテーブル3021を含み得る。フローミスが発生した場合、新しいフローテーブルエントリが作成されることができ、かつ、フロー同期パケット3007が、循環レプリケーションチェーン908のダウンストリームピアに送信されることができる。フロー同期パケットは、フローミスを引き起こしたパケット全体を含み得る、又は、新しいフローのためのフローテーブルエントリを生成するために使用可能なパケットヘッダ情報3004のみを含み得る。異なるサービスノードのフローテーブルは、フローテーブルの実装の詳細によって同一になる可能性は低い。したがって、各ピアは、フローテーブルレプリケーションのためにパケットヘッダ情報3004を使用し得る。フロー同期パケットを作成するサービスノードは、フロー同期パケットをそのダウンストリームピアに送信することができ、かつ、後でそのアップストリームピアからフロー同期パケット3003でパケットヘッダ情報を受信し得る。
[00142] セッションテーブルはセッションの状態を追跡することができる。例えば、悪名高くも有名なTCPプロトコルは、様々な状態(例えば、LISTEN、SYN-SENT、SYN-RECEIVED、ESTABLISHED、FIN-WAIT-1、FIN-WAIT-2、CLOSE-WAIT、CLOSING、LAST-ACK及びTIME-WAITなど)であり得るセッションを有する。サービスノードは、セッションが状態を変化させた場合、すなわち、セッション変化時、そのダウンストリームピアにセッション同期パケット3009を送信することができる。セッション同期パケット3009は、セッションの新しい状態を示すセッション状態インジケータ3006を含み得る。したがって、各ピアは、セッション状態インジケータ3006を使用して、セッションテーブルを複製し得る。セッション同期パケットを作成するサービスノードは、そのダウンストリームピアにセッション同期パケットを送信することができ、かつ、後でそのアップストリームピアからセッション同期パケット3005で同じセッション状態インジケータ3006を受信し得る。
[00143] 内部デバイス3001(ローカルネットワーク上のホスト及びPCIeデバイス)からのTCP及びUDPパケットはロードバランサ907によって受信されることができる。外部デバイス3002(パブリックネットワーク上のホスト及びPCIeデバイス)からのTCP及びUDPパケットもロードバランサ907によって受信されることができる。ロードバランサ907は、パケットごとに選択されたサービスノード910を選択する。パケットが、選択されたサービスノードのサービス状態情報911に変化をもたらす場合、その後、選択されたサービスノードは、そのダウンストリームピアにフロー同期パケット又はセッション同期パケットを送信し得る。選択されたサービスノードは、パケットを処理し、その後、その宛先にそのパケットを送信することができる。したがって、サービスノードはTCP及びUDPパケットを内部デバイス3011に送信し、かつ、TCP及びUDPパケットを外部デバイス3012に送信することができる。
[00144] ネットワークトラフィックフローの性質により、サービスノードは、すべてのピアが循環レプリケーションチェーンを通じて関連のフロー同期パケット3003又は関連のセッション同期パケット3005を転送するのを待たずに、パケットを処理し得る。2つのピアは、新しいフローのためのパケットを受信し、フロー同期パケットを作成し、かつ、新しいフローのためのパケットを処理することができる。既知のフローのためのフロー同期パケットを受信すると、ピアは、フロー同期パケットをドロップし得る、又は、レプリケーションチェーンにそれを転送し得る。ネットワークトラフィックは引き続き適切に処理される。同じ観察がセッション同期パケット及びセッションテーブルエントリに当てはまる。
[00145] 図31は、ある態様に係る、フローテーブルエントリ及びセッションテーブルエントリを追加することのハイレベル図である。TCP又はUDPパケットのパケットヘッダ情報3101が使用されてフロー識別子を計算することができる。フローミスによれば、新しいフローテーブルエントリが作成されてローカルフローテーブル3020に格納され、パケットヘッダ情報3101がフロー同期パケット3104でダウンストリームピアに送信され、かつ、新しいセッションテーブルエントリ3105が作成される。セッションテーブルアップデータ3106は、新しいセッションテーブルエントリをローカルセッションテーブル3021に格納し、かつ、ダウンストリームピアにセッション同期パケットを送信することができる。セッション同期パケットは、ピアサービスノードが適切な接触テーブルエントリを追加することができるように、パケット全体又はパケットヘッダ情報3101を含み得る。新しいセッションのためのセッション状態変更インジケータは、それが新しいセッションであることを示すことができる。フローヒットによってローカルフローテーブル3020が変更されることはないが、関連付けられたパケットを処理すると、セッション状態の変化が引き起こされ得る。セッション状態が変更された場合、ローカルセッションテーブルが更新されて、セッション同期パケットをピアノードに送信されることができる。
[00146] 図32は、ある態様に係る、セッションテーブル情報を集約することのハイレベル図である。セッション状態テーブルは、逆方向フローのパケット数及び順方向フローのパケット数などのフローの統計を保持するためにしばしば使用される。統計が更新されてもセッション状態は変更されない場合がある。したがって、各サービスノードは、サービスノードが処理したそれらのパケットの統計のみを有する。したがって、集約されたセッションテーブル3202を有するアグリゲータ3201が、循環レプリケーションチェーンによって処理されたすべてのパケットに基づく統計を有するように、統計が集約され得る。収集可能な統計は、パケットカウント、バイトカウント、無効なパケット数などを含み得る。集約された統計は、ネットワーク(ローカル及びパブリックの両方)、ワークロード、サービスノード、PCIeデバイス、SAN及び他のデバイスのパフォーマンスを監視するために使用されることができる。
[00147] 図33は、ある態様に係る、ネットワークトラフィックを処理するため、かつ、フローテーブル及びセッションテーブル3300のチェーンレプリケーションのため、サービスノードによって使用可能なプロセスのハイレベルフロー図である。開始後、ブロック3301で、パケットが受信される。ブロック3302で、フロー識別子が、パケットのヘッダ情報から計算されることができる。ブロック3303で、フローテーブルは、フロー識別子を有するエントリについてチェックされることができる。決定点3304で、プロセスは、マッチングフローテーブルエントリ(フローヒット又はフローミス)があるかどうかをチェックする。フローミスがない場合、その後、ブロック3305で、パケットが処理されることができる。ブロック3305で、パケットは、すぐにその宛先に転送され得る、又は、レプリケーションを待つ間、遅延され得る。例えば、セッションはたいてい順方向フロー及び逆方向フローを含む。サービスノードは、順方向フローが新しいセッションを開始することを許容する一方で、逆方向フローが新しいセッションを開始することを許容されないように構成されることができる。順方向フローは、内部ネットワークから外部ネットワークへ流れるパケットであり得る。逆方向フローは、外部ネットワークから内部ネットワークへ流れるパケットであり得る。したがって、逆方向フローパケットが受信される前に、サービスノードのすべてが新しいセッションのためのフローテーブルエントリを有する必要であり、そうでないと、サービスノードは、新しいセッションのための逆方向フローパケットをドロップし得る。逆方向フローが新しいセッションの確立を許容されている場合、その後、パケットはすぐに転送され得る。
[00148] ブロック3306で、セッションテーブルが更新されることができる。決定点3307で、プロセスは、セッション状態の変化があるかどうかを決定する。変化がない場合、プロセスが完了する。変化がある場合、ブロック3308で、セッション同期パケットが作成される。ブロック3309で、セッション同期パケットは、プロセスが完了する前にダウンストリームピアに送信される。決定点3304で、フローミスが発生した場合、プロセスはブロック3310に移動する。ブロック3310で、フローテーブルが更新されて新しいフローエントリを含む。ブロック3311で、フロー同期パケットが作成される。ブロック3312で、プロセスがブロック3305に移動する前に、フロー同期パケットがダウンストリームピアに送信される。プロセスが完了した後、パケットが処理され、サービスノードのダウンストリームピアが、パケットを処理することによって引き起こされるサービス状態変更を通知される。図34及び図35は、ダウンストリームピア及び他のピアノードが、その変更されたサービス状態情報のチェーンレプリケーションに使用し得る例示的なプロセスを示している。
[00149] 図34は、ある態様に係る、フロー同期パケットを処理するため、かつ、フローテーブル3400のチェーンレプリケーションのため、サービスノードによって使用可能なプロセスのハイレベルフロー図である。開始後、ブロック3401で、フロー同期パケットが受信される。決定ブロック3402で、プロセスは、フロー同期パケットが自己発信であるかどうかを判断する。サービスノードがそのダウンストリームピアに送信する同期パケットは自己発信パケットである。循環レプリケーションチェーンでは、サービスノードは、自己発信パケットがレプリケーションチェーンを通過した後に、そのアップストリームピアから自己発信パケットを受信する。図33のブロック3305で、パケットは、レプリケーションを待つ間、遅延された。ブロック3409で、その遅延されたパケットがその宛先に転送されることができる。フロー同期パケットが自己発信ではない場合、その後、ブロック3403で、パケットヘッダ情報からフロー識別子が計算されることができる。ブロック3404で、フローテーブルはフロー識別子についてチェックされる。ブロック3405で、プロセスは、フローミスが発生したかどうかを決定する。フローミスがなかった場合、その後、ブロック3408で、プロセスが完了する前にフロー同期パケットがダウンストリームピアに転送されることができる。一部の実装は、ブロック3408で転送する代わりにパケットをドロップし得る。フローミスがあった場合、その後、ブロック3406で、プロセスは、プロセスがブロック3408に進む前に、新しいフローテーブルエントリを用いてフローテーブルを更新することができる。
[00150] フローミスは、サービスノードが、パケットを受信し、かつ、そのパケットのためのフローテーブルエントリを有しない場合に発生する。図33では、フローミスにより、サービスノードがそのダウンストリームピアにフロー同期パケットを送信する。図34では、フロー同期パケットは、レプリケーションチェーンを通過し、かつ、それを発信したサービスノードによって受信される。自己発信フロー同期パックを受信すると、レプリケーションチェーン全体がフロー同期パケットを受信したことがサービスノードに示される。フロー同期パケットは、フローミスを引き起こしたパケットからのヘッダ情報(例えば、L2、L3及びL4ヘッダフィールド)のみを含み得る。代替として、フロー同期パケットは、フローミスを引き起こしたパケット全体であり得る。このような場合、ブロック3409で、(フローミスの原因となったパケットと同じ)フロー同期パケットがその宛先に転送され得る。さらに別の代替として、ここでは第1サービスノードと呼ばれるサービスノードが、フローミスの原因となるパケット全体を、フロー同期パケットとしてそのダウンストリームピアに送信することができる。そのアップストリームピアからフロー同期パケットを受信した後、第1サービスノードは、フロー同期パケットを処理し(図33は、ブロック3305でパケットをより早く処理する)、かつ、それをすぐにその宛先に送信することができる。さらに別の代替として、アップストリームピアは、フロー同期パケットを発信したサービスノードにフロー同期パケットを送信する代わりに、(フローミスの原因となったパケットと同じ)フロー同期パケットを処理して転送することができる。
[00151] 図35は、ある態様に係る、セッション同期パケットを処理するため、かつ、セッションテーブル3500のチェーンレプリケーションのため、サービスノードによって使用可能なプロセスのハイレベルフロー図である。開始後、ブロック3501で、セッション同期パケットが受信される。ブロック3502で、プロセスは、セッション同期パケットが自己発信パケットであるかどうかを決定する。ブロック3506で、プロセスが完了する前に、自己発信パケットがドロップされる。パケットが自己発信でない場合、その後、ブロック3503で、プロセスは、セッション同期パケットによって示されるようにセッションテーブルを更新する(例えば、セッション状態を変更する、セッションテーブルエントリを追加する、セッションテーブルエントリを削除するなど)。ブロック3504で、プロセスが完了する前に、セッション同期パケットがダウンストリームピアに転送されることができる。
[00152] 図36は、ある態様に係る、セッションテーブルエントリをエージアウトすることのハイレベルフロー図である。サービスノード103は有限のメモリを有するので、かつ、大きなテーブルは処理が遅いので、セッションテーブルは有限サイズを有する。したがって、セッションがアクティブでない又は完了しているような場合、エントリは、セッションからエージアウトされ得る。開始後、ブロック3601で、現在のエントリが第1セッションテーブルエントリに設定される。ブロック3602で、経過時間が、現在のエントリの最後に見たタイムスタンプを引いた現在の時間に設定される。ブロック3603で、プロセスは、経過時間がエージング閾値未満であるかどうかを決定する。そうである場合、ブロック3604で、プロセスは、現在のエントリが最後のセッションテーブルエントリであるかどうかを決定する。現在のエントリが最後のセッションテーブルエントリである場合、プロセスは完了する。そうでない場合、ブロック3605で、現在のエントリが次のセッションテーブルエントリに設定され、かつ、プロセスはブロック3602にループバックする。経過時間がエージング閾値以上である場合、その後、ブロック3606でセッションテーブルエントリは削除される。ブロック3607で、セッションテーブルエントリが削除されたことを示すセッション同期パケットが作成される。ブロック3608で、プロセスは、ブロック3604に進む前に、セッション同期パケットをダウンストリームピアに送信する。フローテーブルエントリは、同様のメカニズムを使用して又はセッションのエージアウトの副作用として、エージアウトされ得る。ブロック3608では、プロセスは、ブロック3604に続く前にダウンストリームピアにセッション同期パケットを送信する。フローテーブルエントリは、同様のメカニズムを使用して又はセッションのエージアウトの副作用として、エージアウトされ得る。セッションがアップストリームフロー及びダウンストリームフローを有し得ることを思い出されたい。セッションをエージアウトすることは、アップストリームフロー及びダウンストリームフローのエージアウトを含み得る。エージアウトされたフローのためのフロー同期パケットはダウンストリームピアに送信されることができる。
[00153] 図37A、図37B、図37C及び図37Dは、ある態様に係る、TCPセッションをシャットダウンするプロセスのハイレベルフロー図である。第1コンピュータ及び第2コンピュータは、TCP接続を開くことによってTCPセッションを確立することができ、TCPプロトコルを使用してデータを転送することができ、かつ、TCP接続を閉じることによってTCPセッションをシャットダウンすることができる。コンピュータネットワーキングでよく知られているように、TCP接続を閉じるために4つのパケットがたいてい使用される。第1コンピュータは第2コンピュータに第1TCP FINパケットを送信する。第2に、第2コンピュータは第1コンピュータに第1TCP FINパケットに対するACKを送信する(ACKはTCPパケットでもある)。第3に、第2コンピュータは第1コンピュータに第2TCP FINパケットを送信する。第4及び最後に、第1コンピュータは第2コンピュータに第2TCP FINパケットに対するACKを送信する。TCPセッションのためのパケットは、たいてい、TCPセッションの状態を追跡するスイッチ及びルータなどのネットワーク機器を通過する。図37A、図37B、図37C及び図37Dは、循環レプリケーションチェーンのサービスノードを使用してTCPセッション状態を追跡することの態様を示している。レプリケーションチェーンのすべてのサービスノードは、TCPセッションが開いていて状態を変化させない間にTCPセッションのパケットを処理することができる。したがって、TCPパケットを処理することは、レプリケーションチェーンのサービスノードの数にほぼ比例して変化し得る。TCP接続が閉じられている場合、TCPセッションは多くの状態変化を有する。したがって、レプリケーションチェーンはシャットダウン中にTCPセッションの状態を同期させることができる。
[00154] 図37Aは、ある態様に係る、第1TCP FINパケットを処理するためのプロセス3700のハイレベルフロー図である。第1コンピュータから第2コンピュータに送信されるパケットは「第1方向」に移動している。第2コンピュータから第1コンピュータに送信されるパケットは「第2方向」に移動している。開始後、ブロック3701で、サービスノードはセッションのための第1TCP FINパケットを受信する。第1TCP FINパケットは第1方向に流れる。ブロック3702で、サービスノードは、セッション状態を「{source:fin-wait-1,dest:established}」に設定して、第1コンピュータが「fin-wait」状態にあり、かつ、第2コンピュータが「established」状態にあることを示すことができる。ブロック3703で、サービスノードはそのダウンストリームピアに第1セッション同期パケットを送信する。第1セッション同期パケットは、ピアノードにセッション状態変化を通知する。ブロック3704で、サービスノードはセッション状態レプリケーションを待機する。サービス状態レプリケーションは、サービスノードがそのアップストリームノードから第1セッション同期パケットを受信するときを示され得る。ブロック3705で、サービスノードはその宛先に第1TCP FINパケットを転送する。
[00155] 図37Bは、ある態様に係る、第1TCP FINパケットに対するACKを処理するためのプロセス3710のハイレベルフロー図である。開始後、ブロック3711で、サービスノードは、セッションのための第1TCP FINパケットに対するACKを受信する。第1TCP FINパケットに対するACKは第2方向に流れる。決定ブロック3712で、サービスノードは、TCPセッションが「{source:fin-wait-1,dest:established}」などの適切な状態にあることを確認する。TCPセッションが適切な状態にない場合、その後、ブロック3713で、エラーがログに記録されることができる、又は、そうでない場合、プロセスが完了する前にエラーが処理されることができる。TCPセッションが適切な状態にある場合、その後、ブロック3714で、サービスノードは、セッション状態を「{source:fin-wait-1,dest:close-wait}」に設定して、第1コンピュータが「fin-wait」状態にあり、第2コンピュータが「close-wait」状態にあることを示すことができる。ブロック3715で、サービスノードは、そのダウンストリームピアに第2セッション同期パケットを送信する。第2セッション同期パケットは、ピアノードにセッション状態の変化を通知する。ブロック3716で、サービスノードはセッション状態レプリケーションを待機する。サービスノードがそのアップストリームノードから第2セッション同期パケットを受信する場合、サービス状態レプリケーションが示され得る。ブロック3717で、サービスノードはその宛先に第1TCP FINパケットに対するACKを転送する。
[00156] 図37Cは、ある態様に係る、第2TCP FINパケットを処理するためのプロセス3720のハイレベルフロー図である。開始後、ブロック3721で、サービスノードは、セッションのための第2TCP FINパケットを受信する。第2TCP FINパケットは第2方向に流れる。決定ブロック3722で、サービスノードは、TCPセッションが「{source:fin-wait-1,dest:close-wait}」などの適切な状態にあることを確認する。TCPセッションが適切な状態ではない場合、その後、ブロック3723で、エラーがログに記録されることができる、又は、そうでない場合、プロセスが完了する前にエラーは処理されることができる。TCPセッションが適切な状態にある場合、その後、ブロック3724で、サービスノードは、セッション状態を「{source:fin-wait-2,dest:last-ack}」に設定し、第1コンピュータが「fin-wait-2」状態にあり、かつ、第2コンピュータが「last-ack」状態にあることを示す。ブロック3725で、サービスノードは、そのダウンストリームピアに第3セッション同期パケットを送信する。第3セッション同期パケットは、ピアノードにセッション状態の変化を通知する。ブロック3726で、サービスノードはセッション状態レプリケーションを待機する。サービスノードがそのアップストリームノードから第3セッション同期パケットを受信する場合、サービス状態レプリケーションが示され得る。ブロック3727で、サービスノードはその宛先に第2TCP FINパケットを転送する。
[00157] 図37Dは、ある態様に係る、第2TCP FINパケットに対するACKを処理するためのプロセス3730のハイレベルフロー図である。開始後、ブロック3731で、サービスノードは、セッションのための第2TCP FINパケットに対するACKを受信する。第2TCP FINパケットは第1方向に流れる。決定ブロック3732で、サービスノードは、TCPセッションが「{source:fin-wait-2,dest:last-ack}」などの適切な状態にあることを確認する。TCPセッションが適切な状態にない場合、ブロック3733で、エラーがログに記録されることができる、又は、そうでない場合、プロセスが完了する前にエラーは処理されることができる。TCPセッションが適切な状態にある場合、その後、ブロック3734で、サービスノードはセッションを削除することができる。ブロック3735で、サービスノードは、そのダウンストリームピアに第4セッション同期パケットを送信する。第4セッション同期パケットは、セッションの終了をピアノードに通知する。ブロック3736で、サービスノードは、その宛先に第2TCP FINパケットに対するACKを転送する。第2TCP FINパケットに対するACKは、セッション状態レプリケーションを待機せずにその宛先に送信されることができることに留意されたい。
[00158] 図30~図37Dを参照して上述したように、ホストコンピュータ又はホストコンピュータにインストールされたSmartNICによって過去に実行されていたネットワークトラフィック処理の多くの態様は、スマートスイッチ内に配置可能なサービスノードによって処理されることができる。高可用性ネットワークトラフィック処理は、フローテーブル及びセッションテーブルなどのサービスノードのサービス状態情報のチェーンレプリケーションを使用して提供されることができる。チェーンレプリケーションの性質上、ネットワークトラフィック処理は、使用されるサービスノードの数にほぼ比例して変化する。さらに、サービスノードは、レプリケーションチェーンに動的に追加されることができる又はレプリケーションチェーンから動的に削除されることができ、それによって、保守及びアップグレードに関してさらなる利点を提供する。この高可用性のサービスノードの実装及び展開によれば、フル機能のSmartNICによってのみ提供されていた可能性のあるサービスが、専用NIC及びサービスノードの組み合わせによって実装されることができる。したがって、高度な機能は、各サーバについて、設備投資及び運用コストの効率が高い専用のNICによって、かつ、エネルギー効率の高い方法で、引き続きサポートされ、それによって、そうしたコンピューティングシステムの環境への影響を減らすことができる。
[00159] 図38は、ある態様に係る、データパス状態レプリケーション及び中間デバイスマッピング3800を使用するサービス分配のための方法のハイレベルフロー図である。開始後、ブロック3801で、方法は、送信元アドレスフィールドに送信元アドレスを含み、かつ、宛先アドレスフィールドに宛先アドレスを含む第1パケットを受信することができる。ブロック3802で、プロセスは、サービス状態情報のチェーンレプリケーションのために構成された複数のサービスノードを含むレプリケーションチェーンにある選択されたサービスノードに第1パケットをルーティングすることができる。ブロック3803で、プロセスは、宛先アドレスによって示される宛先に向かって変換パケットを送信することができ、選択されたサービスノードは、第1パケットを使用して変換パケットを生成する。
[00160] 図39は、ある態様に係る、IPネットワーク3900を介して、緩く結合されたPCIeサービスプロキシのための方法のハイレベルフロー図である。開始後、ブロック3901で、プロセスは、PCIeバスを介してホストコンピュータからデータリンク層パケット(DLLP)を受信することができる。ブロック3902で、プロセスは、DLLPを解凍して、TLPアドレス値、TLPリクエスタ識別子及びTLPタイプを含むトランスポート層パケット(TLP)を取得することができる。ブロック3903で、プロセスは、TLPの受信に応答してホストコンピュータにDLLP ACKメッセージを送信することができる。ブロック3904で、プロセスは、TLPを使用して、リクエストタイプインジケータ、アドレスオフセット及びワークロードリクエスト識別子を含むワークロードリクエストカプセルを作成することができる。ブロック3905で、プロセスは、仮想化サービスエンドポイントに対するワークロードリクエストカプセルを含むワークロードリクエストパケットを送信することができる。ブロック3906で、プロセスは、ワークロードリクエスト識別子及びワークロード応答ペイロードを含むワークロード応答パケットを受信することができる。
[00161] 図40は、ある態様に係る、NVMeオーバーファブリック(NVMe-oF)サービス4000を提供するための方法のハイレベルフロー図である。開始後、ブロック4001で、プロセスは、サービスアドレスを含むサービスノードデータを格納することができる。ブロック4002で、プロセスは、送信キュー(SQ)から送信キュー要素(SQE)を読み取って、コマンド識別子、OpCode及び仮想名前空間識別子(NSID)を取得することができる。ブロック4003で、プロセスは、opcode、NSID及びリクエスト識別子を含む第1ローカルトランスポートプロトコル(LTP)パケットを生成することができる。ブロック4004で、プロセスは、サービスアドレスを使用してサービスノードにLTPパケットを送信することができる。ブロック4005で、プロセスは、リクエスト識別子及びステータスインジケータを含む第2LTPパケットを受信することができる。ブロック4006で、プロセスは、ステータスインジケータ及びリクエスト識別子を使用して完了キューエントリ(CQE)を生成することができる。ブロック4007で、プロセスは、SQに関連付けられた完了キュー(CQ)にCQEを配置することができ、SQはNVMe SQであり、CQはNVMe CQである。
[00162] 図41は、ある態様に係る、元のデータパケット4100を使用するサービス状態レプリケーションの方法のハイレベルフロー図である。ブロック4101で、プロセスは、送信元アドレスフィールドに送信元アドレスを含み、かつ、宛先アドレスフィールドの宛先アドレスを含む第1パケットを受信することができる。ブロック4102で、プロセスは、ローカルフローテーブルを有し、かつ、ローカルフローテーブルのチェーン同期用に構成された複数のサービスノードを含む循環レプリケーションチェーン内にある選択されたサービスノードに第1パケットをルーティングすることができる。ブロック4103で、プロセスは、第1パケットのマッチングフローテーブルエントリを使用して第1パケットを処理することによって第2パケットを生成することができる。ブロック4104で、プロセスは、宛先アドレスによって示される宛先に向かって第2パケットを送信することができる。
[00163] 本明細書で説明する技術は、サービス及びスイッチファブリックとともにラックに統合されたNIC及びサービスノードによって少なくとも部分的に実装されることができる。本発明の一実施形態によれば、機器ラックは複数のサーバを含み、各サーバはNIC、サービスノード、及び、NICを介してサービスノードに複数のサーバを接続するスイッチファブリックを有し、NIC及びサービスノードは、本明細書で説明するようにネットワークインタフェースサービスを実装するように構成される。本発明の別の実施形態によれば、機器ラックは複数のサーバを含み、各サーバはNICを有し、かつ、少なくとも1つのスマートスイッチは、複数のサービスノードと、サービスノードに複数のサーバを接続するためのスイッチファブリックと、を含み、複数のサーバはNICを介してスマートスイッチに接続し、NIC及びサービスノードは、本明細書で説明されるようにネットワークインタフェースサービスを実装するように構成される。本発明の別の実施形態によれば、機器ラックは、複数のサーバ及び少なくとも1つのスマートスイッチを含む複数のラックユニット(RU)を含み、サーバはホストコンピュータ及びNICを含み、かつ、少なくとも1つのスマートスイッチは、複数のサービスノードと、サービスノードに複数のサーバを接続するスイッチファブリックと、を含み、複数のサーバはNICを介してスマートスイッチに接続し、NIC及びサービスノードは、本明細書で説明するようにネットワークインタフェースサービスを実装するように構成される。
[00164] 上述した態様は、デジタルデータ処理、ストレージ及び通信を実装する物理回路を含むネットワークアプライアンスに最終的に実装されることができる。ネットワークアプライアンスは、処理回路、ROM、RAM、CAM及び少なくとも1つのインタフェース(複数のインタフェース)を含み得る。上述したCPUコアは、プログラム可能なパケット処理パイプラインを実装するために使用されるASIC回路及びメモリと同じ集積回路(IC)デバイスに統合される処理回路及びメモリに実装される。例えば、CPUコア及びASIC回路は、システムオンチップ(SoC)を形成するために同じ半導体基板上に製造される。ネットワークアプライアンスは、単一のICデバイスとして具体化され得るか(例えば、単一の基板上に製造される)、又は、ネットワークアプライアンスは、例えば、プリント回路基板(PCB)によって接続された複数のICデバイスを含むシステムとして具体化され得る。インタフェースは、ネットワークインタフェース(例えば、イーサネットインタフェース及び/又はインフィニバンドインタフェース)及び/又はPCI Express(PCIe)インタフェースを含み得る。インタフェースは、I2C、汎用IO、USB、UART、SPI及びeMMCなどの他の管理及び制御インタフェースも含み得る。
[00165] 本明細書の方法の操作は特定の順序で示されて説明されているが、各方法の操作の順序は、特定の操作が逆の順序で実行され得るように、又は、特定の操作が少なくとも部分的に他の操作と同時に実行され得るように、変更され得る。別個の操作の指示又はサブ操作は断続的及び/又は交互に実施され得る。
[00166] 本明細書に記載の方法の操作の少なくとも一部は、コンピュータによる実行のためのコンピュータ使用可能記憶媒体に格納されたソフトウェア命令を使用して実施され得ることに留意されたい。一例として、コンピュータプログラム製品の一実施形態は、コンピュータ読み取り可能プログラムを格納するためのコンピュータ使用可能記憶媒体を含む。
[00167] コンピュータ使用可能又はコンピュータ読み取り可能記憶媒体は、電子、磁気、光学、電磁気、赤外線又は半導体システム(又は装置又はデバイス)であり得る。非一時的なコンピュータ使用可能及びコンピュータ読み取り可能記憶媒体の例には、半導体又はソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、リジッド磁気ディスク、及び光ディスクが含まれる。光ディスクの現在の例には、読み取り専用メモリ付きコンパクトディスク(CD-ROM)、読み取り/書き込み付きコンパクトディスク(CD-R/W)及びデジタルビデオディスク(DVD)が含まれる。
[00168] 本発明の特定の実施形態が説明及び図示されたが、本発明は、そのように説明及び図示された部品の特定の形態又は構成に限定されない。本発明の範囲は、本明細書に添付される特許請求の範囲及びそれらの同等物によって定義される。

Claims (20)

  1. 送信元アドレスフィールドに送信元アドレスを含み、かつ、宛先アドレスフィールドに宛先アドレスを含む第1パケットを受信するステップと、
    ローカルフローテーブルを有し、かつ、前記ローカルフローテーブルのチェーンレプリケーションのために構成された複数のサービスノードを含む循環レプリケーションチェーンにある選択されたサービスノードに前記第1パケットをルーティングするステップと、
    前記第1パケットのマッチングフローテーブルエントリを使用して前記第1パケットを処理することによって第2パケットを生成するステップと、
    前記宛先アドレスによって示される宛先に向かって前記第2パケットを送信するステップと、を含む方法。
  2. 前記サービスノードの各々は、アップストリームピア、ダウンストリームピアを有し、かつ、
    パケットによって引き起こされたフローミスを検出し、
    ローカルフローテーブルに前記パケットに基づいてフローテーブルエントリを作成することによって前記フローミスを処理し、
    前記パケットに基づいてフロー同期パケットを作成し、かつ、
    前記ダウンストリームピアに前記フロー同期パケットを送信するように構成される、請求項1に記載の方法。
  3. 前記サービスノードの各々は、
    複数の自己発信のフロー同期パケットを含み、かつ、複数のピア発信のフロー同期パケットを含む複数のフロー同期パケットを受信し、
    前記自己発信のフロー同期パケットをドロップし、
    前記ローカルフローテーブルに前記ピア発信のフロー同期パケットに基づいて複数のフローテーブルエントリを作成し、かつ、
    前記ダウンストリームピアに前記ピア発信のフロー同期パケットを転送するように構成される、請求項2に記載の方法。
  4. 前記サービスノードの各々は、
    複数のフロー同期パケットを受信し、
    マッチングフローテーブルエントリを既に有する前記フロー同期パケットをドロップし、
    マッチングフローテーブルエントリを有しない前記フロー同期パケットに基づいて複数のフローテーブルエントリを作成し、かつ、
    前記ダウンストリームピアに、マッチングフローテーブルエントリを有しない前記フロー同期パケットを転送するように構成される、請求項2に記載の方法。
  5. 前記フロー同期パケットは前記パケットを含む、請求項2に記載の方法。
  6. 前記サービスノードの各々は、複数のセッションのための複数のセッションテーブルエントリを格納するローカルセッションテーブルを有し、
    前記サービスノードの各々はアップストリームピア及びダウンストリームピアを有し、かつ、
    前記サービスノードは、チェーンレプリケーションを使用して前記ローカルセッションテーブルを複製するように構成される、請求項1に記載の方法。
  7. 前記サービスノードの各々は、
    セッションのためのパケットを受信し、
    前記セッションが未知のセッションである場合、前記ローカルセッションテーブルエントリを作成することによって前記セッションのためのローカルセッションテーブルエントリが存在することを確保し、
    前記ローカルセッションテーブルエントリに前記セッションのセッション状態を格納し、
    前記セッションが状態を変化させる場合、セッション状態変化インジケータを含むセッション同期パケットを生成し、かつ、
    前記ダウンストリームピアに前記セッション同期パケットを送信するように構成される、請求項6に記載の方法。
  8. 前記セッションは、伝送制御プロトコル(TCP)セッション又はユーザデータグラムプロトコル(UDP)セッションである、請求項7に記載の方法。
  9. 前記サービスノードの各々は、
    複数の自己発信のセッション同期パケット及び複数のピア発信のセッション同期パケットを含む複数のセッション同期パケットを受信し、
    前記自己発信のセッション同期パケットをドロップし、
    前記ピア発信のセッション同期パケットに基づいて前記ローカルセッションテーブルを更新し、かつ、
    前記ダウンストリームピアに前記ピア発信のセッション同期パケットを転送するように構成される、請求項6に記載の方法。
  10. 前記サービスノードの各々は、
    セッションのためのセッションテーブルエントリを使用して、少なくとも1つのエージング基準に基づいて前記セッションがインアクティブであると決定し、
    前記ダウンストリームピアに、前記セッションがインアクティブであることを示すセッション同期パケットを送信し、かつ、
    前記アップストリームピアから前記セッション同期パケットを受信後、前記セッションテーブルエントリを削除するように構成される、請求項6に記載の方法。
  11. 前記サービスノードの各々は、
    前記セッションテーブルエントリに前記セッションためのセッション統計を格納し、かつ、
    集約されたセッション統計を包含する集約されたセッションテーブルに前記セッション統計を送信するように構成される、請求項6に記載の方法。
  12. 前記セッション統計はパケットカウントである、請求項11に記載の方法。
  13. 前記循環レプリケーションチェーンの前記サービスノードは仮想IPアドレスを共有し、
    複数のパケットが前記仮想IPアドレスに送信され、かつ、
    ロードバランサが前記サービスノード間に前記パケットを分散する、請求項10に記載の方法。
  14. 送信元アドレスフィールドに送信元アドレスを含み、かつ、宛先アドレスフィールドに宛先アドレスを含む第1パケットを受信するステップと、
    ローカルセッションテーブルを有し、かつ、前記ローカルセッションテーブルのチェーンレプリケーションのために構成された複数のサービスノードを含む循環レプリケーションチェーンにある選択されたサービスノードに前記第1パケットをルーティングするステップと、
    前記第1パケットを処理することによって第2パケットを生成するステップと、
    前記宛先アドレスによって示される宛先に向かって前記第2パケットを送信するステップと、を含み、
    前記サービスノードの各々はアップストリームピア及びダウンストリームピアを有する、方法。
  15. 前記サービスノードの各々は、
    セッションのためのパケットを受信し、
    前記セッションが未知のセッションである場合、前記ローカルセッションテーブルエントリを作成することによって前記セッションためのローカルセッションテーブルエントリが存在することを確保し、
    前記ローカルセッションテーブルエントリにセッション状態を格納し、
    前記セッションが状態を変化させる場合にセッション状態変化インジケータを含むセッション同期パケットを生成し、かつ、
    前記ダウンストリームピアに前記セッション同期パケットを送信するように構成される、請求項14に記載の方法。
  16. 前記サービスノードの各々は、
    複数の自己発信のセッション同期パケット及び複数のピア発信のセッション同期パケットを含む複数のセッション同期パケットを受信し、
    前記自己発信のセッション同期パケットをドロップし、
    前記ピア発信のセッション同期パケットに基づいてローカルセッションテーブルを更新し、かつ、
    前記ダウンストリームピアに前記ピア発信のセッション同期パケットを転送するように構成される、請求項14に記載の方法。
  17. 前記サービスノードの各々は、
    セッションのためにローカルセッションテーブルエントリを使用して、少なくとも1つのエージング基準に基づいて前記セッションがインアクティブであると決定し、
    前記セッションがインアクティブであることを示すセッション同期パケットを前記ダウンストリームピアに送信し、かつ、
    前記アップストリームピアから前記セッション同期パケットを受信後、前記ローカルセッションテーブルエントリを削除するように構成される、請求項14に記載の方法。
  18. 前記サービスノードは、フローテーブルエントリを有するローカルフローテーブルを有し、
    前記サービスノードは、チェーンレプリケーションを使用して前記ローカルフローテーブルを複製するように構成される、請求項17に記載の方法。
  19. 複数のサービスノードを備え、前記複数のサービスノードは、
    送信元アドレスフィールドに送信元アドレスを含み、かつ、宛先アドレスフィールドに宛先アドレスを含む第1パケットを受信し、
    前記サービスノードのうちの1つである選択されたサービスノードに前記第1パケットをルーティングし、
    前記第1パケットのマッチングフローテーブルエントリを使用して前記第1パケットを処理することによって第2パケットを生成し、
    前記宛先アドレスによって示される宛先に向かって前記第2パケットを送信するように構成され、
    前記サービスノードは、ローカルフローテーブルを有し、ローカルセッションテーブルを有し、かつ、前記ローカルフローテーブルのチェーンレプリケーション及び前記ローカルセッションテーブルのチェーンレプリケーションのために構成される、システム。
  20. 複数のホストマシンと前記サービスノードとの間で複数のネットワークパケットを伝送するように構成されたプライベートネットワークと、
    少なくとも1つのスマートスイッチと、をさらに含み、
    前記サービスノードは前記少なくとも1つのスマートスイッチ内にあり、
    前記少なくとも1つのスマートスイッチは、パブリックネットワークに前記プライベートネットワークを接続するように構成される、請求項19に記載のシステム。

JP2022081335A 2021-05-20 2022-05-18 元データパケットを使用するサービス状態レプリケーションのための方法及びシステム Pending JP2022179413A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163191312P 2021-05-20 2021-05-20
US63/191,312 2021-05-20
US17/364,750 US11949589B2 (en) 2021-05-20 2021-06-30 Methods and systems for service state replication using original data packets
US17/364,750 2021-06-30

Publications (1)

Publication Number Publication Date
JP2022179413A true JP2022179413A (ja) 2022-12-02

Family

ID=81850171

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022081335A Pending JP2022179413A (ja) 2021-05-20 2022-05-18 元データパケットを使用するサービス状態レプリケーションのための方法及びシステム

Country Status (7)

Country Link
US (1) US11949589B2 (ja)
EP (1) EP4092533A1 (ja)
JP (1) JP2022179413A (ja)
KR (1) KR20220157322A (ja)
CN (1) CN115379017A (ja)
CA (1) CA3159812A1 (ja)
IL (1) IL292988A (ja)

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7720815B1 (en) 2007-08-27 2010-05-18 Amazon Technologies, Inc. Circular replication of data
US8805990B2 (en) 2012-07-12 2014-08-12 Microsoft Corporation Load balancing for single-address tenants
IN2013KN03842A (ja) 2012-10-27 2015-05-01 Huawei Tech Co Ltd
US10684973B2 (en) 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
US9755960B2 (en) * 2013-09-30 2017-09-05 Juniper Networks, Inc. Session-aware service chaining within computer networks
CN105337881B (zh) * 2014-06-27 2019-10-01 华为技术有限公司 一种数据报文的处理方法、业务节点以及引流点
CN104158755B (zh) * 2014-07-30 2017-12-05 华为技术有限公司 传输报文的方法、装置和系统
TWI558149B (zh) 2015-06-23 2016-11-11 晶睿通訊股份有限公司 用於多層網路位址轉譯器結構之網路傳輸方法及網路傳輸系統
ES2750778T3 (es) 2015-12-31 2020-03-27 Huawei Tech Co Ltd Método para enviar un paquete de red de área local extensible virtual, dispositivo informático y medio legible por ordenador
US10382392B2 (en) 2016-08-01 2019-08-13 Big Switch Networks, Inc. Systems and methods for network address translation
US10530815B2 (en) 2016-10-24 2020-01-07 Nubeva, Inc. Seamless service updates for cloud-based security services
US10868742B2 (en) 2017-03-29 2020-12-15 Juniper Networks, Inc. Multi-cluster dashboard for distributed virtualization infrastructure element monitoring and policy control
US11570092B2 (en) * 2017-07-31 2023-01-31 Nicira, Inc. Methods for active-active stateful network service cluster
US11386339B2 (en) 2019-02-26 2022-07-12 Global Elmeast Inc. Artificial intelligence delivery edge network
US10999084B2 (en) 2019-05-31 2021-05-04 Microsoft Technology Licensing, Llc Leveraging remote direct memory access (RDMA) for packet capture
TWI701920B (zh) 2019-08-07 2020-08-11 許富皓 封包傳送方法以及系統
US11336573B2 (en) * 2020-02-26 2022-05-17 Cisco Technology, Inc. Service chaining in multi-fabric cloud networks
JP2023535152A (ja) * 2020-07-14 2023-08-16 オラクル・インターナショナル・コーポレイション 仮想レイヤ2ネットワーク
US11677614B2 (en) * 2020-08-20 2023-06-13 Huawei Technologies Co., Ltd. Method and apparatus for protecting stateful service function paths

Also Published As

Publication number Publication date
CA3159812A1 (en) 2022-11-20
US11949589B2 (en) 2024-04-02
CN115379017A (zh) 2022-11-22
KR20220157322A (ko) 2022-11-29
US20220377013A1 (en) 2022-11-24
IL292988A (en) 2022-12-01
EP4092533A1 (en) 2022-11-23

Similar Documents

Publication Publication Date Title
US10997106B1 (en) Inter-smartNIC virtual-link for control and datapath connectivity
US11902184B2 (en) Methods and systems for providing a virtualized NVMe over fabric service
Cerović et al. Fast packet processing: A survey
US11895027B2 (en) Methods and systems for service distribution using data path state replication and intermediate device mapping
US9411775B2 (en) iWARP send with immediate data operations
US9473596B2 (en) Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections
US8756270B2 (en) Collective acceleration unit tree structure
US8370855B2 (en) Management of process-to-process intra-cluster communication requests
EP1565817A2 (en) Embedded transport acceleration architecture
US9009214B2 (en) Management of process-to-process inter-cluster communication requests
US20140157265A1 (en) Data flow affinity for heterogenous virtual machines
US11593294B2 (en) Methods and systems for loosely coupled PCIe service proxy over an IP network
US9098354B2 (en) Management of application to I/O device communication requests between data processing systems
US20220091872A1 (en) Methods and systems for migrating virtual functions in association with virtual machines
US8521895B2 (en) Management of application to application communication requests between data processing systems
US8560594B2 (en) Management of process-to-process communication requests
US11949589B2 (en) Methods and systems for service state replication using original data packets
MacArthur Userspace RDMA verbs on commodity hardware using DPDK
US20230043461A1 (en) Packet processing configurations
Cerović Resilient and highly performant network architecture for virtualized data centers
Kundel Design of QoS-Aware Network Functions
Frey Zero-copy network communication: An applicability study of iWARP beyond micro benchmarks
Balman Analyzing Data Movements and Identifying Techniques for Next-generation High-bandwidth Networks