CN115379017A - 使用原始数据分组进行服务状态复制的方法和系统 - Google Patents

使用原始数据分组进行服务状态复制的方法和系统 Download PDF

Info

Publication number
CN115379017A
CN115379017A CN202210554197.8A CN202210554197A CN115379017A CN 115379017 A CN115379017 A CN 115379017A CN 202210554197 A CN202210554197 A CN 202210554197A CN 115379017 A CN115379017 A CN 115379017A
Authority
CN
China
Prior art keywords
session
packet
node
service
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
CN202210554197.8A
Other languages
English (en)
Inventor
克里希纳·多达帕内尼
萨拉特·卡米塞提
巴拉克里什南·拉曼
钱德拉塞卡兰·斯瓦米纳坦
马鲁蒂·拉姆·南布鲁
维杰·桑帕斯
阿克沙伊·纳达哈利
皮拉布·拉曼
约翰·克鲁兹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 CN115379017A publication Critical patent/CN115379017A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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。服务节点可以配置在循环复制链中,从而提供高可靠性等好处。服务节点可以实施方法,所述方法包括:接收第一分组,所述第一分组在源地址字段中包括源地址,并且在目的地地址字段中包括目的地地址;将所述第一分组路由到位于循环复制链中的选定服务节点,所述循环复制链包括具有本地流表且被配置用于本地流表的链复制的多个服务节点;通过使用所述第一分组的匹配流表条目处理所述第一分组来产生所述第二分组;以及将所述第二分组发送到所述目的地地址所指示的目的地。

Description

使用原始数据分组进行服务状态复制的方法和系统
技术领域
实施例涉及网络设备、高可用性网络设备、交换机、路由器、网络接口卡、PCIe物理功能、PCIe虚拟功能、存储区域网络、NVMe控制器和NVMe-oF硬件。
背景技术
数据中心目前由安装在设备机架中的服务器、交换机和路由器组成。这些交换机通常被称为架顶式(TOR),因为从历史上看,它们通常位于设备机架的顶部,服务器位于下方。高可用性切换可以通过两个TOR交换机在主动-主动或主动-被动配置中获得。机架内的本地网络(也称为专用网络)将服务器连接到TOR交换机。TOR交换机将专用网络连接到公共网络。公共网络可以将机架的TOR交换机相互连接并连接到数据中心之外的世界。存储区域网络可以部署在一些机架中,为安装在其他机架中的服务器提供持久存储。
发明内容
以下呈现本公开的一个或多个方面的概述,以便提供对这些方面的基本理解。该概述不是对本公开的所有预期特征的广泛概述,并且既不旨在识别本公开的所有方面的关键或关键要素,也不旨在描绘本公开的任何或所有方面的范围。其唯一目的是以一种形式呈现本公开的一个或多个方面的一些概念,作为稍后呈现的更详细描述的前奏。
本公开中描述的主题的一个方面可以在一种方法中实现。该方法可包括:接收第一分组,所述第一分组在源地址字段中包括源地址,并且在目的地地址字段中包括目的地地址;将所述第一分组路由到位于循环复制链中的选定服务节点,所述循环复制链包括具有本地流表且被配置用于本地流表的链复制的多个服务节点;通过使用所述第一分组的匹配流表条目处理所述第一分组来产生所述第二分组;以及将所述第二分组发送到所述目的地地址所指示的目的地。
本公开中描述的主题的另一个方面可以在一种方法中实现。该方法可包括:接收第一分组,所述第一分组在源地址字段中包括源地址,并且在目的地地址字段中包括目的地地址;将所述第一分组路由到位于循环复制链中的选定服务节点,所述循环复制链包括具有本地会话表且被配置用于所述本地会话表的链复制的多个服务节点;通过处理所述第一分组产生第二分组;以及将所述第二分组发送到所述目的地地址所指示的目的地,其中每个服务节点具有上游对等节点和下游对等节点。
本公开中描述的主题的另一方面可以由一种系统来实现。该系统可包括多个服务节点,被配置为:接收第一分组,所述第一分组在源地址字段中包括源地址,并且在目的地地址字段中包括目的地地址;将所述第一个分组路由到作为所述多个服务节点之一的选定服务节点;通过使用所述第一分组的匹配流表条目处理所述第一分组来产生所述第二分组;将所述第二分组发送到所述目的地地址所指示的目的地;其中所述服务节点具有本地流表,具有本地会话表,并且被配置用于所述本地流表和所述本地会话表的链复制。
在方法和设备的一些实施例中,每个服务节点具有上游对等节点、下游对等节点,并且被配置为:检测由分组引起的流未命中;通过在本地流表中基于所述分组创建流表条目来处理所述流未命中;基于所述分组创建流同步分组;以及将所述流同步分组发送到所述下游对等节点。在方法和设备的一些实施例中,每个服务节点被配置为:接收多个流同步分组,所述流同步分组包括多个自发起的流同步分组并且包括多个对等节点发起的流同步分组;丢弃所述自发起的流同步分组;基于所述本地流表中的对等节点发起的流同步分组创建多个流表条目;以及将所述对等节点发起的流同步分组转发到所述下游对等节点。在方法和设备的一些实施例中,每个服务节点被配置为:接收多个流同步分组;丢弃已经具有匹配流表条目的流同步分组;基于不具有匹配流表条目的流同步分组创建多个流表条目;以及将不具有匹配流表条目的流同步分组转发给所述下游对等节点。在方法和设备的一些实施例中,所述流同步分组包括所述分组。
在方法和设备的一些实施例中,每个服务节点具有本地会话表,所述本地会话表存储用于多个会话的多个会话表条目;每个服务节点具有上游对等节点和下游对等节点;以及所述服务节点被配置为使用链复制来复制所述本地会话表。在方法和设备的一些实施例中,每个服务节点被配置为:接收会话的分组;如果所述会话是未知会话,则通过创建本地会话表条目来确保所述会话的本地会话表条目存在;在所述本地会话表条目中存储所述会话的会话状态;当所述会话改变状态时,产生包括会话状态改变指示符的会话同步分组;以及将会话同步分组发送到所述下游对等节点。在方法和设备的一些实施例中,所述会话是传输控制协议(TCP)会话或用户数据报协议(UDP)会话。在方法和设备的一些实施例中,每个服务节点被配置为:接收多个会话同步分组,所述会话同步分组包括多个自发起的会话同步分组以及多个对等节点发起的会话同步分组;丢弃所述自发起的会话同步分组;基于所述对等节点发起的会话同步分组更新所述本地会话表;以及将所述对等节点发起的会话同步分组转发到所述下游对等节点。
在方法和设备的一些实施例中,每个服务节点被配置为:使用会话的会话表条目,基于至少一个老化标准确定所述会话处于非活动状态;向下游对等节点发送会话同步分组,指示所述会话处于非活动状态;以及从所述上游对等节点接收所述会话同步分组后,删除所述会话表条目。在方法和设备的一些实施例中,每个服务节点被配置为:在所述会话表条目中存储所述会话的会话统计信息;以及将所述会话统计信息发送到包含聚合会话统计信息的聚合会话表。在方法和设备的一些实施例中,所述会话统计信息是分组计数。在方法和设备的一些实施例中,所述循环复制链中的服务节点共享虚拟IP地址;向所述虚拟IP地址发送多个分组;以及负载均衡器在服务节点之间分发所述分组。
在方法和设备的一些实施例中,每个服务节点被配置为:接收会话的分组;如果所述会话是未知会话,则通过创建本地会话表条目来确保所述会话的本地会话表条目存在;在所述本地会话表条目中存储会话状态;当所述会话改变状态时,产生包括会话状态改变指示符的会话同步分组;以及将会话同步分组发送到所述下游对等节点。在方法和设备的一些实施例中,每个服务节点被配置为:接收多个会话同步分组,所述会话同步分组包括多个自发起的会话同步分组以及多个对等节点发起的会话同步分组;丢弃所述自发起的会话同步分组;基于所述对等节点发起的会话同步分组更新本地会话表;以及将所述对等节点发起的会话同步分组转发到所述下游对等节点。在方法和设备的一些实施例中,每个服务节点被配置为:使用会话的本地会话表条目,基于至少一个老化标准确定所述会话处于非活动状态;向下游对等节点发送会话同步分组,指示所述会话处于非活动状态;以及从所述上游对等节点接收所述会话同步分组后,删除所述本地会话表条目。在方法和设备的一些实施例中,所述服务节点具有本地流表,所述本地流表具有流表条目;以及所述服务节点被配置为使用链复制来复制所述本地流表。
在方法和设备的一些实施例中,系统可包括:专用网络,专用网络被配置为在多个主机和服务节点之间传输多个网络分组;以及至少一个智能交换机,其中所述服务节点在所述至少一个智能交换机内,并且所述至少一个智能交换机被配置为将所述专用网络连接到公共网络,
在阅读下面的详细描述后,这些和其他方面将变得更加充分理解。在结合附图阅读以下具体示例性实施例的描述后,其他方面、特征和实施例对于本领域普通技术人员将变得显而易见。虽然可以相对于下面的某些实施例和附图来讨论特征,但是所有实施例都可以包括这里讨论的一个或多个有利特征。也就是说,虽然可以将一个或多个实施例讨论为具有某些有利特征,但也可以根据本文讨论的各种实施例使用这些特征中的一个或多个。以类似的方式,虽然示例性实施例可以在下面被讨论为设备、系统或方法实施例,但是这样的示例性实施例可以在各种设备、系统和方法中实现。
附图说明
图1是示出根据一些方面的具有承载本地传输协议(LTP)网络流量的本地网络的设备机架的高级图。
图2是示出根据一些方面的服务器中的外围组件互连快速(PCIe)设备的高级图。
图3是示出根据一些方面的智能交换机中的服务节点的高级图。
图4是根据一些方面的具有专用集成电路(ASIC)的服务节点的功能框图。
图5是示出根据一些方面的网络分组的图。
图6示出了根据一些方面使用PCIe设备来访问由服务节点提供的服务和虚拟化功能。
图7示出了根据一些方面的经由PCIe设备提供服务和虚拟化功能的服务节点。
图8是示出根据一些方面的循环复制链中的服务节点的高级流程图。
图9是示出根据一些方面的被配置用于服务状态信息的链复制的服务节点的高级流程图。
图10是示出根据一些方面的提供服务的服务节点的高级图。
图11是根据一些方面的将网络地址转换(NAT)表条目添加到NAT表的高级图。
图12是根据一些方面的使用链复制来复制服务状态信息的高级流程图。
图13是根据一些方面的机架中的服务节点主机的高级图。
图14是根据一些方面的包括多个智能交换机中的服务节点的复制链的高级图。
图15是根据一些方面的提供服务的服务节点的高级图。
图16是根据一些方面的对出站分组执行NAT的服务节点的高级流程图。
图17是根据一些方面的对入站分组执行NAT的服务节点的高级流程图。
图18是根据一些方面处理NAT分组的高级流程图。
图19是根据一些方面的用虚拟化功能服务主机发起的请求的高级图。
图20是根据一些方面为由虚拟化功能发起的请求提供服务的高级图。
图21是根据一些方面提供硬件实现和软件实现的虚拟化功能的高级图。
图22是根据一些方面的示例性虚拟化PCIe功能映射图。
图23是根据一些方面的过程的高级流程图,该过程可由服务节点用于通过服务节点上的硬件或通过安装在智能交换机中的硬件来提供作为可执行代码实现的虚拟化PCIe功能。
图24是示出根据一些方面的使用虚拟化NVMe服务的主机发起的非易失性存储器快速(NVMe)事务的高级图。
图25是根据一些方面的提供虚拟化NVMe服务的服务节点的高级图。
图26是根据一些方面的提供虚拟化NVMe服务的循环复制链中的服务节点的高级图。
图27是示出根据一些方面的由PCIe设备存储的示例性服务节点数据的图。
图28是图示根据一些方面的示例性命令标识符到请求标识符映射的图。
图29A、图29B和图29C是根据一些方面的提供对存储区域网络(SAN)的高可用性访问的高级图。
图30是根据一些方面的提供分组处理服务的循环复制链中的服务节点的高级图。
图31是根据一些方面的添加流表条目和会话表条目的高级图。
图32是根据一些方面的聚合会话表信息的高级图。
图33是根据一些方面的可由服务节点用于处理网络通信量以及流表和会话表的链复制的过程的高级流程图。
图34是根据一些方面的可由服务节点用于处理流同步分组和用于流表的链复制的过程的高级流程图。
图35是根据一些方面的可由服务节点用于处理会话同步分组和用于会话表的链复制的过程的高级流程图。
图36是根据一些方面的老化会话表条目的高级流程图。
图37A、图37B、图37C和图37D是根据一些方面的关闭TCP会话的过程的高级流程图。
图38是根据一些方面的使用数据路径状态复制和中间设备映射的服务分发方法的高级流程图。
图39是根据一些方面的用于在IP网络上松散耦合的PCIe服务代理的方法的高级流程图。
图40是根据一些方面的用于提供虚拟化NVMe over Fabric(NVMe-oF)服务的方法的高级流程图。
图41是根据一些方面的使用原始分组进行服务状态复制的方法的高级流程图。
在整个描述中,相似的附图标记可用于标识相似的元件。
具体实施方式
很容易理解的是,本文一般描述的和在附图中示出的实施例的组件可以以多种不同的配置来布置和设计。因此,以下对图中所表示的各种实施例的更详细描述,并不是为了限制本公开的范围,而只是代表各种实施例。虽然实施例的各个方面都在附图中呈现,但除非特别指明,否则附图不一定按比例绘制。
本发明可以在不背离其精神或基本特征的情况下以其他具体形式体现。所描述的实施例在所有方面都应被视为只是说明性的,而不是限制性的。因此,本发明的范围是由所附的权利要求而不是本详细说明来说明的。在权利要求的含义和等效范围内的所有变化都将被纳入其范围。
本说明书中提到的特征、优点或类似的语言并不意味着本发明可以实现的所有特征和优点都应该是或存在于本发明的任何单个实施例中。相反,提及特征和优点的语言被理解为意味着与某一实施例相关的具体特征、优点或特性被包括在本发明的至少一个实施例中。因此,本说明书中对特征和优点的讨论以及类似的语言可以,但不一定是指同一个实施例。
此外,所描述的本发明的特征、优点和特性可以以任何合适的方式组合在一个或多个实施例中。根据本文的描述,本领域技术人员将认识到,可以在没有特定实施例的一个或多个特定特征或优点的情况下实施本发明。在其他情况下,在某些实施例中可以认识到额外的特征和优点,这些额外的特征和优点可能不存在于本发明的所有实施例中。
在本说明书中提到“一个实施例”、“一种实施例”或类似的语言,意味着与所述实施例有关的特定特征、结构或特征包括在本发明的至少一个实施例中。因此,本说明书中的短语“在一个实施例中”、“在一种实施例中”和类似的语言可以,但不一定都是指同一个实施例。
数据中心的硬件基础设施往往有大量的服务器连接到一台或两台交换机上。交换机将服务器的本地或专用网络连接到数据中心的外部或公共网络。交换机可以提供诸如网络地址转换(NAT)和/或防火墙之类的服务。数据中心的最新进展涉及使用功能强大的网络接口卡(NIC)配置服务器,这些网卡通常被称为smartNIC。SmartNIC可以卸载以前由服务器中央处理单元(CPU)承担的功能。例如,smartNIC可以实现整个网络协议栈、存储适配器、安全功能等。因此,主机(服务器)可以为工作负载提供更多的处理能力。工作负载包括Web服务器、数据库服务器以及数据中心租户在服务器上运行的其他程序。最终结果是更高效、更具成本效益的数据中心。
然而,SmartNIC可能价格昂贵且耗电,典型的数据中心可能需要数百到数千个smartNIC。因此,已经意识到smartNIC提供的大部分高级服务可以分解,这样服务器就可以配备成本更低、功耗更低的专用网卡,并且以前由全功能smartNIC提供的服务可以由专用NIC和智能交换机或智能交换机的组合来共同提供。在一个实施例中,用于这种实现的NIC是一种PCIe设备,其为智能交换机所提供的虚拟化服务提供接入点。PCIe设备和智能交换机使用称为本地传输协议(LTP)的简化和轻量级网络协议协同工作,以进行通信。LTP可以是一种具有低开销的高度可靠的协议,因为它被设计为在PCIe设备和智能交换机之间运行,这些设备通常在一个服务器机架内通过几米长的电缆或光纤进行通信。UDP已被用于在服务节点和PCIe设备之间承载LTP,效果很好,同时增加了最少的开销。相反,传输控制协议以更高的开销为代价提供远距离的可靠传输。
通过为智能交换机配备服务节点,可以实现进一步的进步。单个服务节点可以充当智能交换机,但可以通过将多个服务节点集成到智能交换机中来实现可用性和可扩展性方面的优势。服务节点可以配置为循环复制链。循环复制链是目前正在为数据库应用研究的复制链的一个进步。非循环复制链有一个头节点、一个或多个中间节点和一个尾节点。某些操作必须指向非循环复制链的头节点。循环复制链没有头也没有尾。服务节点维护的服务状态信息的特性导致了复制的强一致性。
通过使用服务节点通过网络连接的PCIe设备提供虚拟化卸载,可以获得许多优势。每台服务器的价格可能会大幅降低,因为PCIe设备是典型smartNIC的更简化版本。此外,PCIe设备可能不需要维护、更换或升级,因为它们是更简化的设备。此外,PCIe设备每处理一位数据将消耗更少的功率,例如每秒纳瓦/分组(pps)或纳焦/分组。虽然PCIe设备可能具有更简化的功能集,但服务节点提供了更高级的功能。服务节点可以相对容易维护,至少因为服务节点可以从其复制链中取出、脱机、升级和重新插入复制链而不会中断服务。从而可以实现无中断升级。可以通过将服务节点添加到链中来增加额外的交换容量,这可能比安装更强大的交换机更容易。预计复制链与提供虚拟化服务和CPU卸载相结合,将导致数据中心运营模式的转变。
使用专用NIC和智能交换机与服务节点的组合,可以在NIC和服务节点之间协调网络服务,从而能够以经济高效和节能的方式为一组主机服务器提供高级服务。在一个示例中,包括48个服务器的机架可以配备48个专用NIC和8个服务节点,而不是48个全功能smartNIC。与每台服务器都具有全功能smartNIC的网络架构相比,这样的网络架构可以显着节省资本支出(capex)和运营费用(opex)。此外,利用NIC和服务节点的这种组合可以降低每处理单位数据的总体功耗,这将减少这种计算系统对环境的影响。尽管这种方法具有明显的成本和环境效益,但设计和运营一个在NIC和服务节点之间分解服务的网络并非易事。本文描述了各种方法和系统,这些方法和系统能够以迄今尚未实现的方式实现在网卡和服务节点之间分解服务的网络。
图1是示出根据一些方面的具有承载本地传输协议(LTP)网络流量的本地网络108的设备机架101的高级图。两个智能交换机102安装在机架101中并通过高带宽主干107相互连接。智能交换机102包括可以通过本地网络108提供虚拟化功能的服务节点103。许多服务器104也安装在机架101中并且PCIe设备105安装在服务器104中。PCIe设备可以被认为是增强的NIC。增强是指,除了网络连接之外,NIC还提供对服务节点提供的虚拟化功能的访问。智能交换机将本地网络108连接到公共网络109。公共网络可以是数据中心内和机架101外的严格受控和安全的网络。本地网络可以在PCIe设备105和服务节点103之间传送本地传输协议(LTP)分组。智能交换机102和服务节点103可以被配置为将LTP分组保持在本地网络108内。
图2是示出根据一些方面的服务器104中的外围组件互连快速(PCIe)设备105的高级图。PCIe设备可以使用PCIe总线相互通信。PCI-SIG于2015年12月7日发布的“PCIExpress Base Specification Revision 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)设备。为简单起见,这里将讨论SR-IOV,同时理解MR-IOV也提供这些能力。PCI-SIG于2010年1月20日发布的“Single Root I/O Virtualization and SharingSpecification Revision 1.1”提供了PCIe SR-IOV的规范。在创建SR-IOV之前,PCIe设备提供物理功能,主机上运行的所有进程(包括VM)共享这些物理功能。创建SR-IOV是为了简化VM对PCIe设备的访问。支持SR-IOV的PCIe设备可以提供物理功能,也可以提供虚拟功能。这样,VM206可以使用其自己的设备驱动程序207来访问由具有SR-IOV能力的PCIe设备提供的VF。
主机104的PCIe接口204连接到PCIe设备105的PCIe接口211。PCIe总线从而使工作负载能够访问由PCIe设备提供的PCIe功能。那些PCIe功能可以包括虚拟化非易失性存储器快速(NVMe)访问物理功能(PF)212、虚拟化NVMe访问虚拟功能(VF)213、虚拟化PCIe功能访问PF 214、虚拟化PCIe功能访问VF 215、网络接口卡(NIC)PF 216和NICVF 217。这里,术语“NIC”用于指代提供网络访问的设备,即使NIC可能是直接连接到主机主电路板的专用集成电路(ASIC)。PCIe设备105可以通过以太网端口218发送和接收网络分组。由本地网络上的PCIe设备105发送和接收的分组可以包括以太网分组221、用于外部流量(机架外)的网际协议(IP)分组222、用于本地流量(机架内)的IP分组223和LTP分组224。
图3是示出根据一些方面的智能交换机301中的服务节点103的高级图。智能交换机301包括可以被配置为负载平衡器的交换结构302。能够实现交换结构302的ASIC目前可在市场上买到。每个服务节点都有一个节点动态随机存取存储器(DRAM)。服务节点103可以通过交换结构302与彼此、与PCIe设备以及与公共网络进行通信。交换机CPU 304可以控制和监控智能交换机301。交换机CPU 304具有交换机DRAM。交换机PCIe总线303提供服务节点103、交换机CPU 304、节点DRAM和交换机DRAM之间的通信。
图4是根据一些方面的具有专用集成电路(ASIC)401的服务节点103的功能框图。服务节点可以包括PCIe接口450并且可以安装在智能交换机中。服务节点103包括非ASIC存储器432,其可以是广泛可用的存储器模块或芯片之一,例如双倍数据速率(DDR)4同步DRAM(SDRAM)模块或DDR5 SDRAM模块,使得ASIC可以访问许多千兆字节的存储器。
ASIC 401是一种半导体芯片,具有许多通过片上通信结构互连的核心电路,有时称为片上网络(NOC)402。NOC通常是标准化通信结构的实现,例如广泛使用的高级可扩展接口(AXI)总线。ASIC的核心电路可以包括PCIe接口450、中央处理单元(CPU)核心403、P4分组处理管道408元件、存储器接口415、ASIC存储器(例如,静态随机存取存储器(SRAM))416、服务处理卸载417、分组缓冲器423和分组入口/出口电路414。PCIe接口450可用于与外部设备通信并通过PCIe总线451与ASIC通信。CPU核心403可以包括许多CPU核心,例如CPU 1 405、CPU 2 406和CPU 3 407。P4分组处理管道408可以包括管道入口电路413、解析器电路412、匹配动作单元411、去解析器电路410和管道出口电路409。服务处理卸载417是实现ASIC经常使用的功能的电路,以至于设计者选择提供硬件以从CPU卸载这些功能。服务处理卸载可以包括压缩电路418、解压缩电路419、密码/PKA电路420和CRC计算电路421。已选择在ASIC401的非限制性示例中实现的特定核心电路,以便ASIC实现非易失性存储器快速(NVMe)卡和处理由IP(互联网协议)分组承载的网络流量的网络设备的许多,也许是全部功能。
P4分组处理管道408是一组专门的元素,用于处理网络分组,例如IP分组、NVMe协议数据单元(PDU)和InfiniBand PDU。P4管道可以使用领域特定语言进行配置。用于编程独立于协议的分组处理器的领域特定语言(简称为“P4”)的概念已经发展成为一种在网络设备的数据平面上提供一定灵活性的方法。用于对网络设备的数据平面进行编程的P4领域特定语言在P4语言联盟于2019年10月23日发布的“P416语言规范”版本1.2.0中定义。P4(在此也称为“P4规范”、“P4语言”和“P4程序”)被设计为可在大量目标上实现,包括网络交换机、网络路由器、可编程网卡、软件交换机、FPGA和ASIC。如P4规范中所述,P4语言提供的主要抽象涉及头类型、解析器、表、动作、匹配动作单元、控制流、外部对象、用户定义的元数据和内在元数据。
存储器接口415协调去往和来自非ASIC存储器432的存储器I/O操作。当非ASIC存储器为DRAM时,存储器控制器可以称为DRAM控制器。ASIC外存储器可以存储由ASIC 401和服务节点103使用的数据。该数据可以包括服务状态信息440。服务状态信息可以包括流表441、会话表442、NAT映射表443和虚拟化服务状态信息444。虚拟化服务状态信息444可以包括虚拟化PCIe功能图445和NVMe拼接数据447。NVMe拼接数据可以包括命名空间映射446。
CPU核心403可以是通用处理器核心,例如精简指令集计算(RISC)处理器核心、高级RISC机器(ARM)处理器核心、没有互锁管道级(MIPS)处理器核心的微处理器和/或x86处理器核心。每个CPU核心可以包括存储器接口、ALU、寄存器组、指令获取单元和指令解码器,它们被配置为独立于其他CPU核心执行指令。CPU核心可以使用诸如C之类的通用编程语言进行编程。
CPU核心403还可以包括总线接口、内部存储器和存储器管理单元(MMU)和/或存储器保护单元。例如,CPU核心可以包括内部高速缓存,例如L1高速缓存和/或L2高速缓存,和/或可以访问附近的L2和/或L3高速缓存。每个CPU核心可以包括内核特定的L1高速缓存,包括指令高速缓存和数据高速缓存以及特定于每个CPU核心或在少量CPU核心之间共享的L2高速缓存。L3高速缓存也可用于CPU核心。
可能有多个CPU核心403可用于控制平面功能和用于实现包括软件实现的分组处理功能的慢数据路径的方面。CPU核心可用于实现离散的分组处理操作,例如L7应用程序(例如HTTP负载平衡、L7防火墙和/或L7遥测)、某些InfiniBand通道适配器功能、流表插入或表管理事件、连接设置/管理、多播组加入、深度分组检查(DPI)(例如URL检查)、存储卷管理(例如NVMe卷设置和/或管理)、加密、解密、压缩和解压缩,这些可能无法通过诸如P4之类的特定域语言以提供数据平面处理所期望的快速路径性能的方式轻松实现。
分组缓冲器423可以充当中央片上分组交换机,其将分组从交换结构302传递到数据平面的分组处理元件,反之亦然。分组处理元件可以包括以软件实现的慢速数据路径和由分组处理电路408实现的快速数据路径。
P4分组处理管道408可以是专用电路或实现可编程分组处理管道的专用电路的一部分。一些实施例包括P4管道作为网络设备内的快速数据路径。快速数据路径被称为快速数据路径,因为它处理分组的速度比也可以在网络设备内实现的慢速数据路径更快。慢速数据路径的示例是软件实现的数据路径,其中CPU核心403和存储器432通过软件配置以实现慢速数据路径。
图5是示出根据一些方面的网络分组的图。网络业务流500可以具有许多分组,例如第一分组550、第二分组551、第三分组552、第四分组553和最终分组554,在第四分组553和最终分组554之间还有更多分组。术语“分组”可以指网络业务流中的任何分组。可以根据互联网协议套件构建和解释分组。Internet协议套件是Internet和类似计算机网络中使用的概念模型和通信协议集。分组可以作为原始比特流在物理层(有时称为层1)的物理介质上传输和接收。分组可以作为原始比特流接收或作为原始比特流传输。
链路层通常称为层2。链路层的协议在设备所连接的本地网络连接范围内运行,包括所有无需经过路由器即可访问的设备。链路层用于在同一链路上的两个不同设备的接口之间移动分组。该分组具有层2报头501、层2有效载荷502和层2帧校验序列(FCS)503。层2报头可以包含源媒体访问控制(MAC)地址504、目标MAC地址505和其他层2报头数据506。网络连接设备的输入端口和输出端口可以具有MAC地址。以太网,也称为电气和电子工程师协会(IEEE)802.3是层2协议。IEEE 802.11(WiFi)是另一种广泛使用的层2协议。层2有效载荷502可以包括层3分组。层2FCS 503可以包括根据层2报头和层2有效载荷计算的CRC(循环冗余校验)。层2FCS可用于验证分组已被正确接收。
互联网层,通常称为层3,是网络层,其中层3分组可以通过多个中间节点从第一个节点路由到第二个节点。节点可以是交换机、服务器和设备,例如服务节点103和PCIe设备105。Internet协议(IP)是一种常用的层3协议。层3分组可以具有层3报头507和层3有效载荷508。层3报头507可以具有源IP地址509、目标IP地址510、协议指示符511和其他层3报头数据512。例如,第一节点可以通过中间节点向第二节点发送IP分组。因此,IP分组具有指示第一节点的源IP地址和指示第二节点的目的IP地址。第一节点做出路由决定,将IP分组发送到中间节点。第一节点因此在第一层2分组中将IP分组发送到中间节点。第一层2分组具有指示第一节点的源MAC地址504、指示中间节点的目的地MAC地址505,并且具有IP分组作为有效载荷。中间节点接收第一层2分组。基于目的IP地址,中间节点确定IP分组将被发送到第二节点。中间节点在具有指示中间节点的源MAC地址504、指示第二节点的目的地MAC地址505和作为有效载荷的IP分组的第二层2分组中将IP分组发送到第二节点。根据诸如传输层协议之类的高层协议,层3有效载荷508可以包括用于更高层的报头和有效载荷。
传输层,通常称为层4,可以建立应用程序用于特定任务数据交换的基本数据通道,并且可以建立主机到主机的连接。可以使用协议指示符511在层3报头507中指示层4协议。传输控制协议(TCP)、用户数据报协议(UDP)和互联网控制消息协议(ICMP)是常见的层4协议。TCP通常被称为TCP/IP。TCP是面向连接的,可以在通过IP网络通信的主机上运行的应用程序之间提供可靠、有序和经过错误检查的字节流传输。当承载TCP数据时,层3有效载荷508包括TCP报头和TCP有效载荷。UDP可以让计算机应用程序使用无连接模型向IP网络上的其他主机发送消息,在这种情况下称为数据报。当携带UDP数据时,层3有效载荷508包括UDP报头和UDP有效载荷。网络设备(包括路由器)使用ICMP在与另一个IP地址通信时发送错误消息和指示成功或失败的操作信息。ICMP使用无连接模型。
层4分组可以具有层4报头513和层4有效载荷514。层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分组。业务流可以通过流终止对话来终止。流终止对话框的示例包括:TCP RST分组(带有或不带有ACK);以及由响应于TCP FIN分组的TCP ACK分组流转的TCP FIN分组。其他协议也有众所周知的流终止对话框。层4有效载荷514可以包含层7分组。
应用层,通常称为层7,包括大多数应用程序使用的协议,用于通过较低级别协议建立的网络连接提供用户服务或交换应用程序数据。应用层协议的示例包括RDMA overConverged Ethernet版本2(RoCE v2)、超文本传输协议(HTTP)、文件传输协议(FTP)、简单邮件传输协议(SMTP)和动态主机配置(DHCP)。根据应用层协议编码的数据可以封装成传输层协议单元(如TCP或UDP消息),然后使用较低层协议来实现实际的数据传输。
层4有效载荷514可以包括层7分组520。层7分组520可以是HTTP分组、InfiniBandPDU或一些其他L7分组。层7分组520可以包括层7报头521和层7有效载荷522。所示的层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分组被说明为在UDP分组中携带,尽管它们可以作为其他L3分组的有效载荷进行携带,也可以作为诸如以太网分组之类的L2分组的有效载荷进行携带。
图6示出了根据一些方面使用PCIe设备620来访问由服务节点103提供的服务和虚拟化功能。PCIe总线可以使用数据链路层包(DLLP)601将事务层包(TLP)从一个设备传送到另一个设备。DLLP和TLP的内容由PCIe规范指定。DLLP 601包括序列号602、TLP 603和链路循环冗余码(LCRC)604。TLP 603包括TLP格式605、TLP类型606、长度607、请求标识符608、地址609,并且可以包含数据610。
PCIe设备620可以接收TLP 603。TLP 603可以是诸如读请求或写请求之类的请求。PCIe设备可以通过检查TLP格式605和TLP类型606来确定TLP是读取还是写入请求。TLP 603可以指示长度607和地址609。长度607表示要读取或写入的数据字(dword)的数量。对于PCIe,一个dword是32位。地址609是要写入数据或要从中读取数据的物理地址。对于写入请求,TLP 603包括要写入物理地址的数据610。可以有许多设备连接到PCIe总线,每个设备都可能生成TLP。请求者标识符608指示发送TLP的设备,使得响应可以在稍后时间返回到该设备。
PCIe设备620可以解释TLP,例如,完全按照请求的指示写入或读取数据。因此,发送到非虚拟化设备的读取请求可以读取该非虚拟化设备上的寄存器或内存位置。类似地,对非虚拟化设备的写操作可以写入设备的寄存器或存储器位置,并且可以触发设备执行操作。
在虚拟化功能的情况下,TLP用于生成工作负载分组。LTP分组可以是工作负载胶囊。例如,LTP分组可以携带使用TLP生成的工作负载胶囊。LTP分组并不简单地封装TLP。PCIe设备可以实现虚拟化PCIe访问功能621,其基于TLP 603向服务节点103实现的虚拟化PCIe功能630发送PCIe工作负载分组625。PCIe设备可以实现虚拟化NVMe访问功能622,其将NVMe工作负载分组626发送到由服务节点103实现的虚拟化NVMe功能631。PCIe设备还可以实现网络接口功能623。PCIe设备可以使用网络接口功能623将网络分组发送到服务节点和其他目的地。例如,网络接口功能623可用于将PCIe LTP分组625和NVMe工作负载分组626发送到服务节点。UDP/IP分组627和TCP/IP分组628可以是发送到服务节点的LTP分组以外的分组。对于那些分组,服务节点可以提供分组处理和路由功能632。这样,服务节点可以提供交换机、路由器或防火墙的服务。
图7示出了根据一些方面的经由PCIe设备620提供服务和虚拟化功能的服务节点103。在图6中,请求TLP被发送到PCIe设备620。在图7中,返回响应TLP。更具体地,TLP 603可以是读取请求TLP并且TLP 703可以是读取响应TLP。这样的响应TLP可以称为完成TLP。为简单起见,考虑发送到虚拟化PCI功能630的简单寄存器读取操作。TLP 603可以请求从寄存器读取。发送到服务节点的LTP分组625可以指示从服务节点103实现的功能请求读取。服务节点发送包含所请求数据的响应LTP分组725,并且PCIe设备620使用响应LTP分组725产生读取响应TLP 703。完成TLP可以包括指示完成TLP 703是读取响应的TLP格式705和TLP类型706。长度707表示数据字段710中数据字的数量。完成者标识符708指示完成TLP 703的来源。请求者标识符608可以指示要接收完成TLP 703的设备。例如,如果主机104将请求TLP603发送到PCIe设备620,则请求者标识符608可以指示主机104并且完成者标识符708可以指示PCIe设备620。
服务节点103可以向PCIe设备620发送PCIe工作负载分组725和NVMe工作负载分组726。PCIe设备可以解释工作负载请求,并可以基于工作负载请求向主机和PCIe总线上的其他设备发送TLP。这些TLP分组可以是请求、完成或PCIe规范定义的任何其他类型的TLP。服务节点103还可以向PCIe设备620发送其他网络分组,例如IP/UDP分组727和TCP/IP分组728。
如上所述,主机和主机上运行的工作负载可以使用设备驱动程序访问PCIe功能。本文讨论的虚拟化功能不需要更改这些设备驱动程序。PCIe设备620上的访问功能和服务节点103上的虚拟化功能可以协作,以便从主机的角度来看,PCIe设备通过其自身的这些服务和功能的实现来提供这些功能和服务。
图8是示出根据一些方面的循环复制链800中的服务节点的高级流程图。虚拟化功能可以由单个服务节点提供。这种虚拟化可以带来更多好处,比如高可用性和服务扩展。循环复制链800可用于复制服务状态信息,使得多个服务节点具有服务状态信息的兼容版本。因此,循环复制链中的任何服务节点都可以立即处理不改变服务状态信息的分组。在处理分组改变服务状态信息的某些情况下,必须在完成分组处理之前确认该改变。因此,由服务节点提供的许多服务可以与循环复制链800中的服务节点的数量线性伸缩。如果某个服务节点出现故障或脱机,则可以将该服务节点从循环复制链中删除,而其余的服务节点继续提供服务。通过这种方式,可以通过添加或删除服务节点来扩展服务,并且该服务具有高可用性,因为它对服务节点故障具有弹性。
循环复制链800目前有四个服务节点。服务节点是服务节点1801、服务节点2 802、服务节点3 803和服务节点4 804。同步分组可用于将服务状态信息从一个节点复制到另一个节点。循环复制链中的服务节点是对等节点。每个服务节点都有上游节点和下游节点。服务节点从其上游对等节点接收同步分组,并向其下游对等节点发送同步分组。服务节点1801是服务节点2 802的上游对等节点,并向服务节点2 802发送同步分组805。服务节点2802是服务节点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的下游对等节点。对于某些服务和功能,服务状态信息复制会导致服务节点拥有信息的精确副本。在其他情况下,例如流表,复制会产生兼容但不完全相同的服务节点信息。
一些实施例可以使用不是循环复制链的复制链。非循环复制链有一个头部节点、一个尾部节点和一个或多个中间节点。改变数据的操作,例如写入数据库或服务状态改变,如本文所考虑的,被提交到头部节点。流同步分组从头部节点移动到尾部节点。尾部节点没有下游对等节点,因此会丢弃同步分组。尾部节点可以向头部节点发送确认,指示同步分组已到达链的尾部。为了使用非循环复制链,头部节点始终是更改会话状态的分组的选定节点。链中的任何节点都可以处理不改变会话状态信息的分组。
图9是示出根据一些方面的被配置用于服务状态信息911的链复制的服务节点的高级流程图。NAT是服务节点可以提供的服务之一。从事计算机网络的人熟悉NAT。NAT会话可以用于服务器104和本地网络之外的机器之间的通信。NAT会话901的第一分组是由于创建了新的NAT会话而改变服务状态信息的IP分组。第一NAT分组901具有源IP地址902、目的地IP地址903、源端口904、目的地端口905和其他数据906。源IP地址902和源端口904指示分组的源和该源处的端口。负载平衡器907接收第一NAT分组901。负载平衡器将NAT分组发送到选定服务节点910。可以基于诸如循环或加权循环之类的负载平衡策略来选择选定服务节点910。负载平衡器可以优先向特定服务节点发送特定流量。例如,负载平衡器可以对NAT分组使用循环,并且可以将NVMe LTP分组从特定PCIe设备620发送到特定服务节点。
选定服务节点910具有包括NAT映射表的服务状态信息911。选定服务节点910接收第一NAT分组901,并确定需要新的NAT会话。选定服务节点为新会话913创建NAT映射,并将新NAT映射作为NAT条目存储在NAT映射表912中。选定服务节点还在同步分组920中将新会话913的NAT映射发送到其下游对等节点。循环复制链中的服务节点转发新会话913的NAT映射,直到选定服务节点在来自上游对等节点921的同步分组中接收到NAT映射。来自上游对等节点921的同步分组可以被认为是确认整个服务节点链已经接收到新会话913的NAT映射的ACK分组。选定服务节点可以在发送转换后分组914之前等待ACK。NAT从其他分组生成转换后分组。转换后分组914具有源IP地址915和源端口916。转换后分组的源IP地址915可以是指示复制链的虚拟IP地址。转换后分组的源端口916可以指示复制链的端口。虚拟IP(vIP)地址是一个虚拟标识符,可用于指示复制链中的服务节点组,而不是这些服务节点中的特定一个。为了清楚起见,在此提及vIP时,可以理解为可以使用不同的虚拟标识符来代替。负载平衡器907可以接收发送到vIP的分组,并将分组转发到特定服务节点。
图10是示出根据一些方面的提供服务的服务节点的高级图。不改变服务状态信息1001的IP分组可由循环复制链中的任何服务节点立即处理。用于已知NAT会话的分组是不改变服务状态信息1001的IP分组的示例。负载平衡器907可以将分组1001定向到选择的服务节点910,该服务节点910将转换后分组1002发送到其目的地。可能没有同步分组,因为服务状态信息没有更改。
图11是根据一些方面的将网络地址转换(NAT)表条目添加到NAT表的高级图。选定服务节点可以为新的NAT表条目1108生成新的NAT映射,并且可以将新的NAT表条目作为NAT表条目1120存储在NAT映射表912中。NAT映射表中的条目可以包括本地IP地址1111、本地端口1112、远程IP地址1113、远程端口1114、公共端口1115和公共IP地址1116。本地IP地址1111可以是本地网络上的本地设备(例如PCIe设备)的IP地址。本地端口1112可以指示该本地设备的端口。远程IP地址1113可以是远程设备的IP地址。本地端口可以指示远程设备的端口。公共端口1115可以指示要在转换后分组中使用的源端口916。公共IP 1116可以指示要在转换后分组中使用的源IP地址915。当使用多个VIP时,以及在其他情况下,公共IP条目可能很有用。
可能出现的一个问题是,两个服务节点可能同时创建新的NAT表条目。两个服务节点可以将相同的公共端口分配给两个新的NAT会话。解决方案是将不同的端口池分配给不同的服务节点,每个服务节点仅从自己的池分配公共IP。服务节点NAT池1101可以指示服务节点的可用NAT资源1102和不可用NAT资源1105。可用NAT资源可以包括可用公共端口1103和可用公共IP地址1104。不可用NAT资源可以包括不可用公共端口1106和不可用公共IP地址1107。
图12是根据一些方面的使用链复制来复制服务状态信息的高级流程图。在开始之后,该过程可以等待分组1201。当接收到分组时,处理可以前进到判定点1202。在判定点1202,该过程确定该分组是否是同步分组。如果不是,则在判定点1208,处理确定处理分组是否改变服务状态信息。如果服务状态信息没有改变,则在框1209,服务节点在等待下一个分组1201之前完全处理该分组。如果服务状态信息被改变,则在框1210,服务节点可以延迟对分组的完全处理。该分组可在指示该链已被更新的ACK之前被完全处理。在框1211,该过程向其下游对等节点发送同步分组。同步分组包括对等节点可用于基于分组引起的改变来更新其服务状态信息的信息。在发送同步分组之后,处理可以返回到等待另一分组1201。
如果在判定点1202处将分组确定为同步分组,则在判定点1203处,该过程可以确定该分组是否是自发起的。在框1211,实现图12的方法的服务节点可以发送同步分组。从该服务节点的角度来看,在框1211发送的同步分组是自发起的。如果该分组是自发起的,则在框1206,服务节点可以执行延迟等待链更新的操作。这种操作可以包括对在框1210处被延迟的不同分组的处理。在框1206之后,在处理等待接收另一个分组1201之前,可以在框1207丢弃该分组。如果该分组不是自发起同步分组,则在框1204,可以更新服务节点的服务信息。在框1205,在处理返回到等待另一个分组1201之前,可以将同步分组转发到下游对等节点。
图13是根据一些方面的机架中的服务节点主机的高级图。服务节点103可以部署在本地网络1307上。第一服务节点主机1302包括两个服务节点,第二服务节点主机1303还包括两个服务节点。第一复制链1304包括来自两个服务节点主机的服务节点。第二复制链1305包括来自两个服务节点主机的不同服务节点。图示的安排提供了高可用性,因为如果其中一个服务节点主机出现故障,两个复制链都不会完全失效。在图13的示例中,交换机1301(可能不是智能交换机)将服务节点主机1302、1303连接到公共网络1306。
图14是根据一些方面的包括多个智能交换机中的服务节点103的复制链的高级图。第一智能交换机1402包括两个服务节点,第二智能交换机1403也包括两个服务节点。第一复制链1404包括来自两个智能交换机的服务节点。第二复制链1405包括来自两个智能交换机的不同服务节点。图示的安排提供了高可用性,因为如果其中一个智能交换机出现故障,两个复制链都不会完全失效。图14的示例与图13的示例的不同之处在于,图14使用包括服务节点的智能交换机1402、1403。图13的交换机1301可以不是智能交换机。因此,可以通过添加服务节点主机来使用服务节点升级现有服务器机架。图14示出了使用智能交换机的系统。在这两种系统中,都可以在使用传统NIC的同时获得高级网络功能和负载。如图所示,使用PCIe设备620还允许提供虚拟化PCIe功能和服务、提供虚拟化NVMe功能和服务等。
图15是根据一些方面提供服务1502的服务节点103的高级图。PCIe设备620和服务节点103可以交换PCIe/LTP分组625、NVMe/LTP分组626和IP分组1501,例如TCP分组、UDP分组等。服务节点103提供的服务1502可以包括虚拟化服务1503。虚拟化服务可以包括虚拟化PCIe设备功能630、虚拟化NVMe功能631和其他虚拟化服务或功能1504。服务1502可以包括分组处理和路由服务632。分组处理和路由服务632可以包括加密/解密1505、NAT 1506、防火墙1507、深度分组检查(DPI)1508和其他网络服务1509。这些服务可以包括NVMe到远程直接存储器访问(RDMA)网桥1510和其他服务1511。服务节点可以处理PCIe设备620和公共网络1541之间交换的网络流量的IP分组1501、1540。服务节点103可以通过聚合以太网版本2(ROCEv2)1531经由NVMe/TCP 1530、光纤通道1532和RDMA连接到存储区域网络1533。从事存储区域网络的人熟悉NVMe/TCP、光纤通道和ROCEv2,所有这些都在数据中心中广泛部署和使用。服务节点103可以存储服务状态信息1520。服务状态信息1520可以包括流表441、会话表442、NAT映射表443、虚拟化PCIe功能映射445、NVMe拼接数据447、DPI规则和标准1523、安全证书1521、防火墙规则1522、路由规则1525、加密/解密密钥1524和用于其他服务的数据1526。
图16是根据一些方面的对出站分组执行NAT的服务节点的高级流程图。出站分组包括由PCIe设备620发送到外部位置的第一NAT会话分组1601和其他NAT会话分组1602。PCIe设备620将第一NAT会话分组1601发送到外部位置。负载平衡器将第一NAT会话分组定向到复制链1603中的服务节点103。服务节点103接收第一NAT会话分组1601,为该分组创建NAT映射913,并将NAT映射913向下游发送到其他服务节点。其他服务节点基于NAT映射913更新其NAT映射表。在发送第一NAT会话分组1601之后,PCIe设备可以向复制链1603发送其他NAT会话分组1602。负载平衡器可以在服务节点之间分发分组。服务节点从出站分组产生转换后分组1604,并将转换后分组1604发送到由出站分组1601、1602中的目的地地址指示的外部位置。
图17是根据一些方面的对入站分组执行NAT的服务节点的高级流程图。入站分组1702从外部位置发送到PCI设备620。负载平衡器在服务节点103之间分发入站分组1702。服务节点从入站分组1702生成转换后分组1701,并将转换后分组发送到PCIe设备620。在这里,NAT服务丢弃NAT映射表中没有条目的入站分组。一些NAT实现会为新NAT会话的入站分组创建新的NAT映射。这种实现将通过复制链复制新的NAT映射。
图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。
如上文参考图8-18所述,过去由主机或安装在主机中的smartNIC执行的网络流量处理的许多方面,例如网络地址转换,可以由位于智能交换机内的服务节点来处理。可以使用服务节点的服务状态信息(如NAT映射表)的链复制来提供高可用性网络流量处理。由于链复制的性质,网络流量处理(如NAT)几乎可以随着使用的服务节点数线性扩展。此外,服务节点可以动态地添加到复制链中或从复制链中删除,从而在维护和升级方面提供额外的好处。这种高可用性服务节点的实现和部署使得可能仅由全功能smartNIC提供的服务能够通过专用NIC和服务节点的组合来实现。因此,每台服务器仍支持高级功能,但使用专用NIC,这些NIC的资本支出和运营支出效率更高,并且更节能,可以减少此类计算系统对环境的影响。
图19是根据一些方面的用虚拟化功能服务主机发起的请求的高级图。主机可以使用设备驱动程序发起对PCIe设备的请求。该请求可以通过TLP从主机传送到PCIe设备。如上所述,DLLP在PCIe总线上承载TLP。接收到TLP后,PCIe设备向主机发送DLLP ACK,从而终止PCIe事务。发送DLLP ACK是一项关键操作,因为发送DLLP ACK的任何延迟都可能在主机的PCIe实现中导致错误或性能损失。因此,PCIe设备会迅速发送DLLP ACK,而不仅仅是将TLP封装在网络分组中转发。PCIe设备620可以发送确认接收到TLP的DLLP ACK,并且可以使用TLP来产生工作负载请求胶囊1901。工作负载请求胶囊1901在工作负载请求分组中被发送到服务节点。服务节点处理工作负载请求分组,并且可以使用包括工作负载响应胶囊1902的工作负载响应分组1904进行响应。PCIe设备可以处理工作负载响应胶囊1902以产生经由PCIe总线发送到主机的TLP。DLLP ACK可以从PCIe设备发送到主机,而无需首先从服务节点接收到已接收到工作负载分组1903或工作负载胶囊1901的指示。安装在主机中的smartNIC可以聚合提供给主机的服务和功能。这些服务和功能可以在主机的smartNIC中聚合。PCIe设备620和实现虚拟化PCIe功能的服务节点用于从主机内部分离这些服务和功能。
图20是根据一些方面为由虚拟化功能发起的请求提供服务的高级图。在服务节点中运行的虚拟化功能可以生成由主机处理的请求。该请求可以放置在工作负载请求胶囊2001中,并在工作负载请求包2003中发送到PCIe设备620。PCIe设备620可以处理工作负载请求胶囊以产生经由PCIe总线发送到主机的TLP。主机可产生通过PCIe总线发送到TLP中PCIe设备的响应。PCIe设备可以在成功接收TLP后立即向主机发送DLLP ACK。PCIe设备可以使用TLP来产生工作负载响应胶囊202,并且可以在工作负载响应分组2004中向服务节点发送工作负载响应胶囊202。DLLP ACK可以从PCIe设备发送到主机,而无需首先从服务节点接收到已接收到工作负载分组2004或工作负载胶囊2002的指示。
图21是根据一些方面提供硬件实现和软件实现的虚拟化功能的高级图。PCIe设备620可以从工作负载接收第一TLP 2101。第一TLP可以包括地址2102、TLP类型2103和TLP请求者标识符2104。PCIe设备可以使用第一TLP来产生第一工作负载胶囊2105。工作负载胶囊2105可以包括地址偏移、请求类型指示符2107和请求标识符。地址偏移可以根据地址2102和虚拟化PFs和VFs 2109的本地基址来计算。PCIe功能可以在主机的IO空间中具有基址。因此,基址可以指示PCIe功能寄存器的起始位置,可以使用内存写入和读取来访问这些寄存器。地址2102表示主机IO空间内的位置。因此,地址2102可以指示正在访问哪个PCIe功能以及正在访问PCIe功能内的哪个存储器位置。PCIe功能的基址可由主机在启动时设置,并且可能在每次启动时发生变化。因此,地址2102对服务节点可能意义不大或没有意义。相反,服务节点可以使用地址偏移和PCIe功能标识符。PCIe功能标识符和请求类型指示符或PCIe功能指示符可以指示正在访问哪个PCIe功能以及正在访问PCIe功能中的哪个存储器位置。在许多情况下,地址偏移是地址2102减去PCIe设备中正在访问的PCIe功能的基址。TLP类型2103可用于确定请求类型指示符2107。请求标识符可以是与工作负载胶囊或工作负载分组唯一关联的值。如果第一TLP包含这样的数据,则工作负载胶囊或分组还可以包括TLP数据710(参见图7)。
服务节点103可以接收第一工作负载胶囊,并识别正在访问的虚拟化PCIe功能。虚拟化PCIe功能可以以多种方式在服务节点103或智能交换机301处实现。虚拟化PCIe功能可以通过软件实现。软件实现的虚拟化功能2114可以使用请求类型指示符、地址偏移和TLP数据710来识别要运行的可执行代码以及提供给该可执行代码的输入。PCIe功能可由服务节点内的硬件设备2115实现,该服务节点通过设备驱动程序2113与之交互。请求类型指示符、地址偏移和TLP数据710(参见图7)可用于识别设备驱动程序并向设备驱动程序2113提供输入。服务节点103可以记录硬件设备的基址2112。地址偏移到本地地址映射可以使用地址偏移2106和本地基址2112来计算访问本地设备的本地地址值。
另一个选项是,虚拟化PCIe设备由硬件PCIe设备2115、2125实现。例如,硬件设备可以是安装在智能交换机内的硬件设备2125。服务节点设备驱动程序2113可以经由服务节点PCIe总线2116和智能交换机PCIe总线2124访问硬件设备2125。服务节点可以向硬件设备2125发送第三TLP。第三TLP可以包含使用地址偏移2106和本地硬件基址2112确定的地址2121。TLP类型2122可以与第一TLP 2101中的TLP类型2103相同或基于第一TLP 2101中的TLP类型2103。TLP请求者ID 2123可以指示服务节点103。
服务节点103可以向PCIe设备620发送工作负载分组。工作负载分组可以是源于服务节点的工作负载请求,也可以是响应工作负载请求而发送的工作负载响应。服务节点上的虚拟化功能可以发送工作负载响应。来自服务节点的请求与来自主机的请求类似。响应稍有不同,因为它表示正在响应的请求。服务节点可以向PCIe设备620发送工作负载响应分组2130。第二工作负载胶囊2132可以包括在工作负载响应分组2130的工作负载响应有效载荷2131中。工作负载响应胶囊2132可以包括请求标识符2108和响应类型指示符2147。响应类型指示符可以指示成功、失败、确认写入、包括第二工作负载胶囊2132中的数据的读取响应等。请求标识符2108可以与发送到服务节点的请求的标识符相同。第二工作负载胶囊可用于产生可发送到工作负载的第二TLP 2141。请求标识符2108可用于确定要包括在第二TLP中的TLP请求者ID 2104。响应类型指示符2147可用于确定要包括在第二TLP中的TLP类型2143。TLP完成器ID 2144可指示虚拟化PCIe功能、PCIe设备620或服务节点103。
服务节点可以实现功能解释和映射2110,该功能解释和映射2110可以使用地址偏移2106、请求类型指示符2107和LTP分组报头数据来确定正在访问哪个虚拟化功能。功能解释和映射2110可以使用虚拟化PCIe功能映射图。
图22是根据一些方面的示例性虚拟化PCIe功能映射图2201。虚拟化PCIe功能映射的目的是将PCIe设备上的虚拟化PCIe访问功能与服务节点提供的虚拟化PCIe功能相关联。执行映射的具体技术取决于实现。不同的实现可能会在PCIe设备、服务节点或两者上存储更多、更少或不同的数据。无论具体实现如何,PCIe设备上的虚拟化PCIe访问功能与服务节点提供的虚拟化PCIe功能之间都会形成关联,并用于正确引导工作负载分组。
虚拟化PCIe功能映射2201具有虚拟化PCIe功能映射条目,可用于PCIe设备上的虚拟化PCIe访问功能与服务节点提供的虚拟化PCIe功能之间的映射。主机可以通过PCIe设备实现的PCIe PFs和VFs访问虚拟化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设备内唯一的数字/标签。可以使用TLP请求类型或通过一些其他技术来确定请求类型指示符2204。偏移地址2205可用于确定正在访问虚拟化PCIe功能的哪个方面。例如,一个偏移可以用于读取时钟值,而另一个偏移可以用于读取时钟参数,例如时区。事务端点节点标识符2206可以指示服务节点或循环复制链。例如,事务端点节点标识符2206可以是服务节点的IP地址或循环复制链的vIP。事务端点类型2207可以指示虚拟化PCIe功能是作为可执行代码在服务节点上实现的,还是作为安装在智能交换机中的诸如图形处理单元(GPU)的交换机PCIe设备,还是作为在服务节点内实现的诸如压缩电路418(参见图4)的本地设备来实现的。
图23是根据一些方面的过程的高级流程图,该过程可由服务节点用于通过服务节点上的硬件或通过安装在智能交换机中的硬件来提供作为可执行代码实现的虚拟化PCIe功能。在开始之后,在框2301,过程可以接收工作负载分组。在框2302,该过程可以读取包括在工作负载分组中的工作负载胶囊。一些实现可能在单个工作负载胶囊中包含多个工作负载胶囊。为清楚起见,所示的过程处理一个工作负载胶囊,同时理解本领域技术人员可以容易地实现用于处理额外工作负载胶囊的循环。在框2303,该过程确定工作负载胶囊的事务端点。在框2304,该过程可以分支到事务端点的事务端点处理程序。可执行代码分支可用于软件实现的虚拟化PCIe功能。在框2305,该过程可以通过执行代码来获得结果。要执行的特定代码可以使用虚拟化PCIe功能映射来确定。可执行代码的输入值可以从工作负载胶囊中获得。当虚拟化PCIe功能由服务节点内的硬件实现时,可以采用节点上硬件设备分支。在框2306,该过程可以经由访问节点上硬件的节点上设备驱动程序获得结果。设备驱动程序或硬件设备的输入值可以从工作负载胶囊中获得。当虚拟化PCIe功能由连接到交换机中PCIe总线的硬件实现时,可以采用交换机上的PCIe设备分支。在框2307,该过程可以形成新的TLP。来自原始TLP(例如,图21中的第一TLP 2101)的值可以包括在工作负载胶囊中,并且可以从工作负载胶囊复制。工作负载胶囊中的其他值可用于帮助生成新的TLP。地址偏移量和本地存储的一组基址寄存器可用于确定新TLP中使用的正确地址。在框2308,可以通过交换机的PCIe总线将新TLP发送到硬件。在框2309,该过程可以从硬件接收响应TLP。
图19-23示出了使用服务节点103和PCIe设备620来提供虚拟化PCIe功能的方面。PCIe设备620可以提供虚拟化PCIe功能接入点,而服务节点103提供虚拟化PCIe功能。这种实现可以将某些复杂且昂贵的操作从主机内部分解到服务节点。将功能虚拟化到服务节点可以降低提供这些功能的成本,并增加维护、升级和扩展。
如上文参考图19-23所述,可使用接收TLP、确认TLP并基于TLP向可位于智能交换机内的服务节点发送LTP分组的PCIe设备620来虚拟化PCIe功能。虚拟化PCIe功能的功能可以通过服务节点提供。因此,可以使用服务节点服务状态信息的链复制来提供高可用性PCIe功能。此PCIe功能虚拟化使可能仅由安装在主机中的全功能smartNIC或其他硬件提供的服务能够通过专用NIC、服务节点和智能交换机的组合来实现。因此,每台服务器仍支持高级功能,但使用专用NIC,这些NIC的资本支出和运营支出效率更高,并且更节能,可以减少此类计算系统对环境的影响。
图24是示出根据一些方面的使用虚拟化NVMe服务的主机发起的非易失性存储器快速(NVMe)事务的高级图。PCIe设备620可以实现虚拟化NVMe访问功能622。虚拟化NVMe访问功能622可以是PCIe PF或VF。对于主机201,虚拟化NVMe访问功能622可以看起来是NVMe控制器。因此,工作负载可能会使用默认或预安装的NVMe驱动程序,因为虚拟化功能不需要特殊的设备驱动程序。
NVM Express于2021年2月2日发布的文档“NVM Express Management Interface,Revision 1.1c”(以下简称NVMe规范)中规定了NVMe控制器行为和PCIe控制器的PCIe寄存器布局的许多详细信息。NVM Express是一家针对NVMe硬件、NVMe通信和NVMe协议的标准制定机构。因此,从事NVMe存储的人员熟悉实现和使用NVMe控制器的各个方面以及NVMe的其他方面。
虚拟化NVMe访问功能622可以与实现虚拟化NVMe功能的服务节点103交换工作负载分组。服务节点实现的虚拟化NVMe功能可以使用NVMe over fabric(NVMe oF)协议访问存储区域网络(SAN)。NVMe Express于2019年10月22日发布了“NVM Express overFabrics,Revision 1.1”(以下简称NVMe规范)。NVMe规范详述并规定了访问和使用存储区域网络(SAN)的协议和要求,该存储区域网络(SAN)实现了NVMe接口,如NVMe/TCP、NVMe光纤通道(NVMe/FC)和NVMe/RDMA。因此,从事存储区域网络的人熟悉实现和使用NVMe控制器、实现和使用的NVMe以及NVMe的其他方面。
工作负载2401可以通过在提交队列(SQ)2403上放置提交队列条目SQE来启动NVMe事务。PCIe设备620可以实现虚拟化NVMe访问功能,并且可以通过例如将值写入PCIe设备620的门铃寄存器来通知SQE。虚拟化NVMe接入功能622可以从SQ获取sqe,并对其进行处理以产生工作负载分组,例如第一LTP分组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拼接。
虚拟化NVMe接入功能622可以使用SQE 2405来产生工作负载分组,例如第一LTP分组2411。第一LTP分组2411可以包括PCIe设备标识符、PCIe功能标识符、PCIe设备序列号、PCIe设备请求标识符、功能类型、命令标识符、操作码、vNSID、命令参数,并且可以包括数据。当比较第一LTP分组2411、图5中所示的LTP分组520和SQE 2405时,可以观察到第一LTP分组可以是其中工作负载胶囊是NVMe胶囊的LTP分组。PCIe设备标识符和功能标识符可用于识别特定的PCIe设备和由该PCIe设备实现的功能。功能类型指示工作负载胶囊是NVMe胶囊。PCIe设备序列号可用于确定LTP分组已丢失,以便可以重新传输。PCIe请求标识符可用于识别发送到服务节点的请求,以便响应可通过PCIe设备请求标识符与请求相关联。命令标识符、操作码、vNSID和命令参数可以与SQE 2405中的相同。SQE 2405包含缓冲区地址,该地址可能指的是要传输到存储器的数据。数据(如果存在)可以从主机复制到第一LTP分组2411中。
服务节点103可以处理第一LTP分组2411。服务节点可以通过NVMe协议之一与SAN建立连接。因此,服务节点可以将来自LTP分组的数据写入由SAN服务的命名空间,并且可以从由SAN服务的命名空间读取数据。如果LTP包含NVMe写入请求和数据,则服务节点可以通过的NVMe将数据写入SAN。如果LTP请求包括NVMe读取请求,则服务节点可以通过的NVMe获取请求的数据,并将其作为读取响应或写入请求发送给虚拟化NVMe访问功能。
服务节点103可以向PCIe设备620发送第二LTP分组2412。第二LTP分组可以包括PCIe功能标识符、PCIe设备序列号、PCIe设备请求标识符、功能类型、命令标识符、操作码、vNSID、命令参数,并且可以包括数据。显示的第二LTP分组2412没有PCIe设备标识符,因为该分组可以被发送到特定PCIe设备,因此可能不需要PCIe设备标识符。第二LTP分组2412可包含服务节点序列标识符,其可用于帮助确保从服务节点到PCIe设备的LTP分组的可靠传输。从事通信网络的人熟悉使用序列号来确保可靠传输。将第二LTP分组2412与完成队列元素(CQE)2406进行比较,可以看出,第二LTP分组2412是承载包括CQE的NVMe胶囊的LTP分组。NVMe规范中给出了CQS的内容和格式。示出第二LTP分组2412包括PCIe设备请求标识符,因此,第二LTP分组响应于具有该PCIe设备请求标识符的请求。LTP分组中的命令标识符和其他数据还可以指示第二LTP分组2412是响应。PCIe设备620可以接收第二LTP分组2412,并使用它来产生CQE 2406。然后,可以将CQE 2406置于与SQ相关联的NVMe完成队列(CQ)上。NVMe驱动程序可以使用CQE来确定SQE的结果。
图25是根据一些方面的提供虚拟化NVMe服务的服务节点的高级图。图24提供了以PCIe设备为中心的视图,而图25提供了以服务节点为中心的视图。服务节点103可以接收第一LTP分组2411。功能类型指示LTP携带NVMe胶囊。服务节点103可以使用LTP分组内容和命名空间映射2501中的PCIe设备标识符和vNSID来识别特定SAN、SAN的类型以及该SAN所服务的存储块的标识符。命名空间映射条目指示命名空间映射,可以包括PCIe设备标识符、vNSID、SAN类型2502、SAN标识符2503和特定于SAN的存储标识符2504。服务节点103可以使用服务节点存储接口2505来使用各种传输方式和传输协议来访问SAN,其中许多协议已被示出。图示的传输协议包括NVMe/FC、光纤通道(FC)、以太网光纤通道(FCoE)、NVMe/TCP、NVMe/RDMA、RDMA和ROCEv2。这些传输协议中的每一个在本领域是众所周知的,并且包括开源软件在内的软件可用于实现这些传输协议。图示的传输方式是光纤通道、以太网和InfiniBand。光纤通道或以太网可用于访问启用光纤通道/FCoE的SAN 2506。以太网或InfiniBand可用于访问支持RDMA/ROCEv2的SAN 2510。以太网可用于访问支持NVMe/TCP的SAN。这些传输方式中的每一种都是本领域内众所周知的,并且可以广泛使用。服务节点103还可以使用其他传输方式和传输协议。SAN类型2502可以指示用于访问由SAN标识符2503标识的SAN的传输方式和传输协议。SAN可以提供对不同存储块的访问,并可以使用特定于SAN的存储标识符来标识存储块。例如,NVMe将这些存储块称为命名空间,并使用命名空间标识符(NSID)来标识存储块。
在使用PCIe设备标识符和vNSID识别SAN中的SAN、SAN类型和存储块之后,服务节点可以访问SAN以从存储块读取数据或将数据写入存储块。使用命名空间映射2501中的第一个命名空间映射,所识别的SAN可以是支持NVMe/TCP的SAN 2509,并且存储块可以具有NSID“NSID 1”。(“为了清晰起见,这里使用NSID 1,实际的NSID根据NVMe规范和NVMe oF规范有不同的格式。)服务节点可以向具有IP地址“controller IP”的支持NVMe/TCP的SAN2509发送第一NVMe/TCP分组2507。第一NVMe/TCP分组2507可以包括NVMe请求胶囊2508。NVMe规范和NVMe-oF规范中规定了NVMe/TCP请求胶囊和响应胶囊的格式和内容。NVMe请求胶囊2508包括SQE 2520。发送到SAN的SQE 2520与提交到工作负载的SQE 2405不同。发送到SAN 2509的SQE 2520具有NSID“NSID 1”,SAN 2509可以使用该NSID识别存储块。发送到SAN2509的SQE 2520中的命令标识符具有识别服务节点和SAN之间的事务的命令标识符。主机201提交的SQE 2405识别主机201和PCIe设备620之间的事务。PCIe设备620可以与主机201和PCIe设备之间的事务的命令标识符相关联地存储PCIe设备请求标识符。服务节点103可以与服务节点103和SAN 2509之间的事务的命令标识符相关联地存储PCIe设备请求标识符。因此,这两个事务可以经由LTP分组2411、2412和PCIe设备请求标识符拼接在一起。
SAN 2509可以向服务节点发送第二NVMe/TCP分组2511。第二NVMe/TCP分组2511响应于第一NVMe/TCP分组2507。第二NVMe/TCP分组2511可以包括NVMe响应胶囊2512,其可以包括CQE 2521。当CQE响应于SQE时,CQE 2521中的命令标识符与SQE 2520中的命令标识符相同。如果SQE 2520是读取请求,则NVMe响应胶囊2512可以包含请求的数据。如果SQE 2520是写入请求,则NVMe响应胶囊2512可指示写入请求的成功或失败。NVMe规范规定了NVMe胶囊的内容和格式,如NVMe请求胶囊和NVMe响应胶囊。服务节点可以使用NVMe响应胶囊2512来产生第二LTP分组2412。
图26是根据一些方面提供虚拟化NVMe服务的循环复制链908(参见图9)中的服务节点的高级图。第一UDP/LTP分组2601可以具有作为循环复制链的vIP的目的地IP。负载平衡器907可以接收第一LTP/UDP分组2602并将其发送到选定服务节点910。选定服务节点的服务状态信息911可以包括NVMe拼接数据2605,例如命名空间映射2501。在接收到第一LTP/UDP分组2601时,选定服务节点可以在命名空间映射2501中创建新的命名空间映射条目2604,或者可以以某种其他方式更改服务状态信息911。因此,服务状态信息911已经改变,并且选定服务节点910向其下游对等节点发送同步分组2606。最终,服务节点的上游对等节点可以将新的命名空间映射条目2604发送到选定服务节点。
图27是示出根据一些方面可由PCIe设备存储的示例性服务节点数据2407的图。服务节点数据2407可以包含服务地址2408,并且可以包含命名空间映射2409。服务地址可以表示可能提供虚拟化NVMe服务的服务节点或循环复制链。命名空间映射2409可以由服务节点提供。服务节点数据可以包含命令标识符到请求标识符映射2410。命令标识符到请求标识符映射2410中的条目可以关联命令标识符、请求标识符、发送队列头指针和缓冲区地址。可以从主机提交的SQE中获取命令标识符、发送队列头指针和缓冲区地址。请求标识符(例如,LTP分组2411、2412中的PCIe设备请求标识符)可以识别PCIe设备620和服务节点103之间的事务。
图28是图示根据一些方面的示例性命令标识符到请求标识符映射2801的图。命令标识符到请求标识符映射2801可以具有与PCIe设备标识符、PCIe功能标识符、命令标识符(来自主机SQE)、请求标识符、另一个命令标识符(SQE到SAN)、发送队列头点(来自主机SQE)和缓冲区地址(来自主机SQE)相关联的条目。注释为“来自主机SQE”的输入字段可以包括在那些值被包括在LTP分组中并存储在服务节点的实现中。在这种实现中,从服务节点发送到PCIe设备的LTP分组可以包括PCIe设备生成CQE所需的所有信息。
图29A、图29B和图29C是根据一些方面的提供对存储区域网络(SAN)的高可用性访问的高级图。
图29A是根据一些方面使用存储复制链2904和两个智能交换机为持久存储提供高可用性的高级图。可以通过SAN A2902访问持久存储。PCIe设备620可以具有两个端口,并且可以使用其中一个端口经由存储复制链2904访问SAN A2902。存储复制链2904包括位于第一智能交换机1402和第二智能交换机1403中的服务节点103。因此,当其中一个智能交换机由于故障、维护、升级等而不工作时,服务器104可以访问SAN A2902。软件定义网络(SDN)复制链2905还可以包括位于第一智能交换机1402和第二智能交换机1403中的服务节点103。SDN复制链中的服务节点可以提供SDN服务,例如NAT、防火墙、处理TCP和UDP分组等。单个服务节点可以配置在多个复制链中,例如存储复制链、SDN复制链、提供虚拟化PCI服务和功能的复制链等。
图29B是根据一些方面的使用服务节点103和两个智能交换机为持久存储提供高可用性的高级图。可以配置多个SAN或SAN访问节点以提供对数据的高可用性访问。例如,SAN A和SAN B可以提供对持久存储中的命名空间的访问。命名空间本身可以以某种方式镜像或复制,以便在通过SAN A2902或SAN B 2903访问时,命名空间中的数据是一致的。从事SAN的人熟悉提供对命名空间的一致访问。PCIe设备620具有两个端口。服务器104可以使用PCIe设备端口之一经由第一智能交换机1402中的服务节点103访问SAN A2902。服务器104可以使用PCIe设备端口中的另一个经由第二智能交换机1403中的服务节点103访问SAN B2903。因此,当其中一个智能交换机不工作时,服务器仍然可以访问命名空间。PCIe设备620可以具有NVMe平衡策略2901。例如,PCIe设备可以使用主动-被动平衡策略,其中LTP分组被发送到主动智能交换机,例如第一智能交换机1402。另一个智能交换机、备用或备份智能交换机可能处于空闲状态,或者可能处理其他设备的其他流量。如果主动智能交换机发生故障或停止使用,则被动智能交换机可以成为主动智能交换机。在高可用性网络中实践的是常见的主动-被动平衡策略,以及许多其他平衡策略,如主动-主动等。
图29C是根据一些方面使用多个复制链来提供对持久存储的高可用性访问的高级图。第一智能交换机1402和第二智能交换机1403包括服务节点103。第一复制链1404包括两个智能交换机的服务节点。第二复制链1405还包括两个智能交换机的服务节点。PCIe设备620可以具有NVMe平衡策略2901。例如,PCIe设备可以使用主动-被动平衡策略,其中LTP分组被发送到一个称为主动复制链的复制链。另一个复制链、备用或备份复制链可能处于空闲状态,或者可能会处理其他设备的其他流量。如果主动链出现故障,被动复制链可以成为主动复制链。在高可用性网络中实践的是常见的主动-被动平衡策略以及许多其他平衡策略。SAN通常有多个访问节点。第一复制链1404连接到SAN A 2902 2902。第二复制链1405连接到SAN B 2903。
图24-29C示出了使用服务节点103和PCIe设备620来提供虚拟化NVMe服务和功能的方面。PCIe设备620可以提供虚拟化NVMe服务和功能接入节点,而服务节点103提供虚拟化NVMe服务和功能。这种实现可以将某些复杂且昂贵的操作从主机内部分解到服务节点。例如,NVMe/TCP在smartNIC中消耗大量资源。将NVMe/TCP的资源消耗方面移动到服务节点允许简化PCIe设备620,同时仍提供NVMe/TCP能力。将功能虚拟化到服务节点可以降低提供这些功能的成本,并增加维护、升级和扩展。
如上文参考图24-29C所述,可以使用从主机上的SQ读取SQE,并基于SQE向可位于智能交换机内的服务节点发送LTP请求分组的PCIe设备620来虚拟化NVMe服务和功能。服务节点可以代表主机执行与SAN的事务,并将事务结果以LTP响应分组的形式发送到PCIe设备。PCIe设备可以基于LTP响应分组产生CQE,并将CQE排队到与SQ相关联的主机上的CQ上。SAN发起的事务可以遵循类似的协议从主机进行读取或写入。可以使用服务节点服务状态信息的链复制来提供高可用性NVMe服务和功能。还可以使用多个智能交换机提供高可用性,每个智能交换机都连接到复制或镜像SAN。这种NVMe功能虚拟化使得可能仅由全功能smartNIC提供的服务能够通过专用NIC和服务节点的组合来实现。因此,每台服务器仍支持高级功能,但使用专用NIC,这些NIC的资本支出和运营支出效率更高,并且更节能,可以减少此类计算系统对环境的影响。
图30是根据一些方面的提供分组处理服务的循环复制链中的服务节点的高级图。服务节点可以为网络业务流提供诸如路由、交换、防火墙等网络服务。这样,服务节点可以具有本地流表3020和本地会话表3021。从事计算机交换和路由硬件的人熟悉流表和会话表。流表可用于识别要应用于分组的特定处理。在接收到分组时,服务节点可以使用分组的报头信息(例如,源IP、源端口、目的IP、目的端口和协议的分组5元组)来计算流标识符。然后,服务节点可以在流表中检查具有该流标识符的条目。当流量表没有这样的条目时,会发生“流未命中”。当流表中有一个流标识符条目时,就会发生“流命中”。对于流命中,服务节点按照流表条目的指示处理分组。对于流未命中,服务节点可以确定如何处理分组,并在流表中为分组创建一个新条目。会话通常由两个流组成,一个正向流和一个反向流。两个流都可以有流表条目。会话表可以包含由服务节点处理的活动会话的条目。会话表可用于跟踪会话的状态。
服务节点的服务状态信息911可以包括本地流表3020和本地会话表3021。当发生流未命中时,可以创建新的流表条目,并且可以在循环复制链908中将流同步分组3007发送给下游对等节点。流同步分组可以包括导致流未命中的整个分组,或者可以仅包括可用于生成新流的流表条目的分组报头信息3004。由于流表的实现细节,不同服务节点中的流表不太可能相同。因此,每个对等节点可以使用分组报头信息3004进行流表复制。创建流同步分组的服务节点可以向其下游对等节点发送流同步分组,并且可以稍后从其上游对等节点接收流同步分组3003中的分组报头信息。
会话表可以跟踪会话的状态。例如,众所周知的TCP协议具有可以处于多种状态(例如,LISTEN、SYN-SENT、SYN-RECEIVE、ESTABLISHED、FIN-WAIT-1、FIN-WAIT-2、CLOSE-WAIT、CLOSE、LAST-ACK和TIME-WAIT)的会话。当会话改变状态或会话改变时,服务节点可以向其下游对等节点发送会话同步分组3009。会话同步分组3009可以包括指示会话的新状态的会话状态指示符3006。因此,每个对等节点可以使用会话状态指示符3006来复制会话表。创建会话同步分组的服务节点可以将会话同步分组发送到其下游对等节点,并且可以稍后从其上游对等节点接收会话同步分组3005中的相同会话状态指示符3006。
负载平衡器907可以接收来自内部设备3001(本地网络上的主机和PCIe设备)的TCP和UDP分组。负载平衡器907还可以接收来自外部设备3002(公共网络上的主机和PCIe设备)的TCP和UDP分组。负载平衡器907为每个分组选择选定服务节点910。如果分组导致选定服务节点的服务状态信息911发生变化,则选定服务节点可以向其下游对等节点发送流同步分组或会话同步分组。选定服务节点可以处理分组,然后将分组发送到其目的地。这样,服务节点可以向内部设备3011发送TCP和UDP分组,并且可以向外部设备3012发送TCP和UDP分组。
由于网络业务流的性质,服务节点可以在不等待所有对等节点通过循环复制链转发相关流同步分组3003或相关会话同步分组3005的情况下处理分组。两个对等节点可以接收新流的分组,创建流同步分组,并处理新流的分组。在接收到已知流的流同步分组时,对等节点可以丢弃流同步分组,或者将其转发到复制链。网络流量仍然得到了正确处理。同样的观察也适用于会话同步分组和会话表条目。
图31是根据一些方面的添加流表条目和会话表条目的高级图。TCP或UDP分组的分组报头信息3101可用于计算流标识符。流未命中导致在本地流表3020中创建并存储新的流表条目,在流同步分组3104中向下游对等节点发送分组报头信息3101,以及创建新的会话表条目3105。会话表更新器3106可以将新的会话表条目存储在本地会话表3021中,并且可以向下游对等节点发送会话同步分组。会话同步分组可以包含整个分组或分组报头信息3101,使得对等服务节点可以添加适当的会话表条目。新会话的会话状态更改指示符可以指示它是新会话。流命中不会导致本地流表3020的改变,但是处理相关联的分组可能导致会话状态的改变。如果会话状态发生变化,则可以更新本地会话表,并向对等节点发送会话同步分组。
图32是根据一些方面的聚合会话表信息的高级图。会话状态表通常用于保存流的统计信息,例如反向流中的分组数和正向流中的分组数。更新统计信息时,会话状态可能不会更改。因此,每个服务节点仅具有服务节点已处理的那些分组的统计信息。因此,可以聚合统计信息,使得具有聚合会话表3202的聚合器3201具有基于循环复制链处理的所有分组的统计信息。可以收集的统计信息包括分组计数、字节计数、无效分组数等。汇总的统计信息可用于监控网络(本地和公共)、工作负载、服务节点、PCIe设备、SAN和其他设备的性能。
图33是根据一些方面的可由服务节点用于处理网络通信量以及流表和会话表3300的链复制的过程的高级流程图。在开始之后,在框3301接收分组。在框3302,可以从分组的报头信息计算流标识符。在框3303,可以检查流表中是否有具有流标识符的条目。在判定点3304,流程检查是否存在匹配的流表条目(流命中或流未命中)。如果没有流未命中,则在框3305,可以处理该分组。在框3305,分组可立即转发到其目的地,也可以延迟等待复制。例如,会话通常包括正向流和反向流。服务节点可以配置为允许正向流启动新会话,而不允许反向流启动新会话。正向流可以是从内部网络流向外部网络的分组。反向流可以是从外部网络流向内部网络的分组。因此,在接收到反向流分组之前,所有服务节点都应该具有用于新会话的流表条目,因为否则,服务节点可能会丢弃用于新会话的反向流分组。如果允许反向流建立新会话,则可以立即转发分组。
在框3306,可以更新会话表。在判定点3307,该过程确定是否存在会话状态改变。如果没有,这个过程就完成了。否则,在框3308,创建会话同步分组。在框3309,在处理完成之前,会话同步分组被发送到下游对等节点。如果在判定点3304处存在流未命中,则过程移动到框3310。在框3310,更新流表以包括新的流条目。在框3311,创建流同步分组。在框3312,在过程移动到框3305之前,流同步分组被发送到下游对等节点。过程完成后,分组已被处理,并且服务节点的下游对等节点已被告知由处理分组而引起的任何服务状态变化。图34和35提供了下游对等节点和其他对等节点可用于该改变的服务状态信息的链复制的示例性过程。
图34是根据一些方面的可由服务节点用于处理流同步分组和用于流表3400的链复制的过程的高级流程图。在开始之后,在框3401接收流同步分组。在判定框3402,该过程确定流同步分组是否是自发起的。服务节点发送给其下游对等节点的同步分组是自发起分组。在循环复制链中,服务节点在自发起分组穿过复制链之后从其上游对等节点接收自发起分组。在图33的框3305,分组被延迟等待复制。在框3409,该延迟分组可被转发到其目的地。如果流同步分组不是自发起的,则在框3403处,可以从分组报头信息计算流标识符。在框3404,检查流表中的流标识符。在框3405,该过程确定是否发生了流未命中。如果没有流未命中,则在框3408,流同步分组可以在过程完成之前转发到下游对等节点。在框3408,一些实现可以丢弃分组而不是转发。如果存在流未命中,则在框3406,在过程继续到框3408之前,过程可以使用新的流表条目更新流表。
当服务节点接收到分组且没有该分组的流表条目时,就会发生流未命中。在图33中,流未命中导致服务节点向其下游对等节点发送流同步分组。在图34中,流同步分组已经穿过复制链,并且由发起它的服务节点接收。接收自发起流同步分组向服务节点指示整个复制链已接收到流同步分组。流同步分组可以仅包括来自导致流未命中的分组的报头信息(例如,L2、L3和L4报头字段)。或者,流同步分组可以是导致流未命中的整个分组。在这种情况下,在框3409,流同步分组(与导致流未命中的分组相同)可以被转发到其目的地。在另一个替代方案中,服务节点(这里称为第一服务节点)可以将导致流未命中的整个分组作为流同步分组发送给其下游对等节点。在从其上游对等节点接收到流同步分组之后,第一服务节点可以处理流同步分组(图33在框3305处更快地处理该分组),并立即将其发送到其目的地。在又一替代方案中,上游对等节点可以处理和转发流同步分组(与导致流未命中的分组相同),而不是将流同步分组发送到发起流同步分组的服务节点。
图35是根据一些方面的可由服务节点用于处理会话同步分组和用于会话表3500的链复制的过程的高级流程图。在开始之后,在框5401接收会话同步分组。在框3502,该过程确定会话同步分组是否是自发起分组。在框3506,在过程完成之前丢弃自发起分组。如果该分组不是自发起的,则在框3503,该过程可以更新会话同步分组所指示的会话表(例如,改变会话状态、添加会话表条目、删除会话表条目等)。在框3504,会话同步分组可以在过程完成之前转发到下游对等节点。
图36是根据一些方面的老化会话表条目的高级流程图。会话表具有有限的大小,因为服务节点103具有有限的内存,并且因为大型表的处理速度较慢。因此,当会话表显示为非活动或完成时,条目可以从会话表中“老化”。在开始之后,在框3601,当前条目被设置为第一会话表条目。在框3602,经过的时间被设置为当前时间减去当前条目最后一次看到的时间戳。在框3603,该过程确定所经过的时间是否小于老化阈值。如果是,则在框3604,该过程确定当前条目是否是最后一个会话表条目。如果它是最后一个会话表条目,则该过程完成。否则,在框3605,当前条目被设置为下一个会话表条目,并且过程循环回框3602。如果经过的时间不小于老化阈值,则在框3606处删除会话表条目。在框3607,创建会话同步分组,指示会话表条目已被删除。在框3608,在继续到框3604之前,该过程将会话同步分组发送到下游对等节点。流表条目可以使用类似的机制老化,也可以作为会话老化的副作用。回想一下,会话可以有上游流和下游流。老化会话可以包括老化上游流和下游流。用于老化流的流同步分组可以发送到下游对等节点。
图37A、图37B、图37C和图37D是根据一些方面的关闭TCP会话的过程的高级流程图。第一计算机和第二计算机可以通过打开TCP连接来建立TCP会话,可以使用TCP协议传输数据,并且可以通过关闭TCP连接来关闭TCP会话。众所周知,在计算机网络中,通常使用四个分组来关闭TCP连接。第一计算机向第二计算机发送第一TCP FIN分组。第二,第二计算机向第一计算机发送ACK到第一TCP FIN分组。(ACK也是TCP分组)。第三,第二计算机向第一计算机发送第二TCP FIN分组。第四也是最后一点,第一计算机向第二计算机发送第二个TCPFIN分组的ACK。TCP会话的分组通常会穿过网络设备,例如跟踪TCP会话状态的交换机和路由器。图37A、图37B、图37C和图37D示出了在循环复制链中使用服务节点跟踪TCP会话状态的方面。复制链中的所有服务节点都可以在TCP会话打开且状态不变时处理该会话的分组。因此,处理TCP分组几乎可以随着复制链中服务节点的数量线性扩展。TCP连接关闭时,TCP会话有许多状态变化。因此,复制链可以在关闭期间同步TCP会话状态。
图37A是根据一些方面的用于处理第一TCP FIN分组的过程3700的高级流程图。图37A是根据一些方面处理NAT分组的高级流程图。从第一计算机向第二计算机发送的分组沿着“第一方向”移动。从第二台计算机向第一计算机发送的分组沿着“第二方向”移动。在开始之后,在框3701,服务节点接收用于会话的第一TCP FIN分组。第一TCP FIN分组在第一方向上流动。在框3702,服务节点可以将会话状态设置为“{source:fin-wait-1,dest:established}”,以指示第一计算机处于“fin wait”状态,而第二计算机处于“established”状态。在框3703,服务节点向其下游对等节点发送第一会话同步分组。第一会话同步分组通知对等节点会话状态的变化。在框3704,服务节点等待会话状态复制。当服务节点从其上游节点接收到第一会话同步分组时,可以指示服务状态复制。在框3705,服务节点将第一TCP FIN分组转发到其目的地。
图37B是根据一些方面的用于处理对第一TCP FIN分组的ACK的过程3710的高级流程图。在开始之后,在框3711,服务节点接收对会话的第一TCP FIN分组的ACK。第一TCP FIN分组的ACK沿着第二方向流动。在判定框3712,服务节点确认TCP会话处于诸如“{source:fin-wait-1,dest:established}”之类的适当状态。如果TCP会话未处于适当状态,则在框3713,可以在过程完成之前记录或以其他方式处理错误。如果TCP会话处于适当状态,则在框3714,服务节点可以将会话状态设置为{source:fin-wait-1,dest:close-wait}”,以指示第一计算机处于“fin-wait”状态,而第二计算机处于“close-wait”状态。在框3715,服务节点向其下游对等节点发送第二会话同步分组。第二会话同步分组通知对等节点会话状态的变化。在框3716,服务节点等待会话状态复制。当服务节点从其上游节点接收到第二会话同步分组时,可以指示服务状态复制。在框3717,服务节点将第一TCP FIN分组的ACK转发到其目的地。
图37C是根据一些方面的用于处理第二TCP FIN分组的过程3720的高级流程图。图37A是根据一些方面处理NAT分组的高级流程图。在开始之后,在框3721,服务节点接收用于会话的第二TCP FIN分组。第二TCP FIN分组在第二方向上流动。在判定框3722,服务节点确认TCP会话处于诸如“{source:fin-wait-1,dest:close-wait}”之类的适当状态。如果TCP会话未处于适当状态,则在框3723,可以在过程完成之前记录或以其他方式处理错误。如果TCP会话处于适当状态,则在框3724,服务节点可以将会话状态设置为{source:fin-wait-2,dest:last-ack”,以指示第一计算机处于“fin-wait”状态,而第二计算机处于“fin-wait-2”状态。在框3725,服务节点向其下游对等节点发送第三会话同步分组。第三会话同步分组通知对等节点会话状态的变化。在框3726,服务节点等待会话状态复制。当服务节点从其上游节点接收到第三会话同步分组时,可以指示服务状态复制。在框3727,服务节点将第二TCP FIN分组转发到其目的地。
图37D是根据一些方面的用于处理对第二TCP FIN分组的ACK的过程3730的高级流程图。在开始之后,在框3731,服务节点接收对会话的第二TCP FIN分组的ACK。第二TCP FIN分组在第一方向上流动。在判定框3732,服务节点确认TCP会话处于诸如“{source:fin-wait-2,dest:last-ack}”之类的适当状态。如果TCP会话未处于适当状态,则在框3733,可以在过程完成之前记录或以其他方式处理错误。如果TCP会话处于适当状态,则在框3734,服务节点可以删除该会话。在框3735,服务节点向其下游对等节点发送第四会话同步分组。第四会话同步分组通知对等节点会话结束。在框3736,服务节点将第二TCP FIN分组的ACK转发到其目的地。请注意,第二TCP FIN分组的ACK可以被发送到其目的地,而无需等待会话状态复制。
如上文参考图30-37D所述,过去由主机或安装在主机中的smartNIC执行的网络流量处理的许多方面可以由位于智能交换机内的服务节点来处理。可以使用服务节点的服务状态信息(如流表和会话表)的链复制来提供高可用性网络流量处理。由于链复制的性质,网络流量处理几乎可以随着使用的服务节点数线性扩展。此外,服务节点可以动态地添加到复制链中或从复制链中删除,从而在维护和升级方面提供额外的好处。这种高可用性服务节点的实现和部署使得可能仅由全功能smartNIC提供的服务能够通过专用NIC和服务节点的组合来实现。因此,每台服务器仍支持高级功能,但使用专用NIC,这些NIC的资本支出和运营支出效率更高,并且更节能,可以减少此类计算系统对环境的影响。
图38是根据一些方面的使用数据路径状态复制和中间设备映射3800的服务分发方法的高级流程图。在开始之后,在框3801,方法可以接收第一分组,该第一分组在源地址字段中包括源地址,并且在目的地地址字段中包括目的地地址。在框3802,该过程可以将第一分组路由到复制链中的选定服务节点,该复制链包括被配置用于服务状态信息的链复制的多个服务节点。在框3803,该过程可以向由目的地地址指示的目的地发送转换后分组,其中选定服务节点使用第一分组生成转换后分组。
图39是根据一些方面的用于在IP网络3900上松散耦合的PCIe服务代理的方法的高级流程图。在开始之后,在框3901,该过程可以经由PCIe总线从主机接收数据链路层分组(DLLP)。在框3902,该过程可以解压DLLP以获得包括TLP地址值、TLP请求者标识符和TLP类型的传输层分组(TLP)。在框3903,该过程可以响应于接收TLP而向主机发送DLLP ACK消息。在框3904,该过程可以使用TLP来创建工作负载请求胶囊,其包括请求类型指示符、地址偏移和工作负载请求标识符。在框3905,该过程可以向虚拟化服务端点发送包括工作负载请求胶囊的工作负载请求分组。在框3906,该过程可以接收包括工作负载请求标识符和工作负载响应有效载荷的工作负载响应分组。
图40是根据一些方面的用于提供虚拟化NVMe over Fabric(NVMe-oF)服务4000的方法的高级流程图。在开始之后,在框4001,该过程可以存储包括服务地址的服务节点数据。在框4002,该过程可以从提交队列(SQ)读取提交队列元素(SQE),以获得命令标识符、操作码和虚拟命名空间标识符(NSID)。在框4003,该过程可以产生包括操作码、NSID和请求标识符的第一本地传输协议(LTP)分组。在框4004,过程可以使用服务地址将LTP分组发送到服务节点。在框4005,该过程可以接收包括请求标识符和状态指示符的第二LTP分组。在框4006,该过程可以使用状态指示符和请求标识符来产生完成队列条目(CQE)。在框4007,该过程可以将CQE置于与SQ相关联的完成队列(CQ)上,其中SQ是NVMe SQ,CQ是NVMe CQ。
图41是根据一些方面的使用原始分组4100进行服务状态复制的方法的高级流程图。在框4101,该过程可以接收第一分组,该第一分组在源地址字段中包括源地址,并且在目的地地址字段中包括目的地地址。在框4102,该过程可以将第一分组路由到位于循环复制链中的选定服务节点,该循环复制链包括具有本地流表且被配置用于所述本地流表的链同步的多个服务节点。在框4103,该过程可以通过使用第一分组的匹配流表条目处理第一分组来产生第二分组。在框4104,该过程可以向由目的地地址指示的目的地发送第二分组。
本文描述的技术可以至少部分地由NIC和服务节点实现,这些NIC和服务节点与服务和交换结构一起集成到机架中。根据本发明的一个实施例,设备机架包括多个服务器,每个服务器具有NIC、服务节点和交换结构,交换结构通过NIC将多个服务器连接到服务节点,其中NIC和服务节点被配置为实现本文所述的网络接口服务。根据本发明的另一个实施例,设备机架包括多个服务器,每个服务器具有NIC,以及至少一个智能交换机,该智能交换机包括多个服务节点和将多个服务器连接到服务节点的交换结构,其中多个服务器通过NIC连接到智能交换机,并且其中NIC和服务节点被配置为实现本文所述的网络接口服务。根据本发明的另一个实施例,设备机架包括多个机架单元(RU),包括多个服务器和至少一个智能交换机,服务器包括主机和NIC,以及至少一个智能交换机,该智能交换机包括多个服务节点和将多个服务器连接到服务节点的交换结构,其中多个服务器通过NIC连接到智能交换机,并且其中NIC和服务节点被配置为实现本文所述的网络接口服务。
上述方面最终可以在包括实现数字数据处理、存储和通信的物理电路的网络设备中实现。网络设备可以包括处理电路、ROM、RAM、CAM和至少一个接口。上述CPU核心在处理电路和存储器中实现,该处理电路和存储器与用于实现可编程分组处理管道的ASIC电路和存储器集成到同一集成电路(IC)设备中。例如,CPU核心和ASIC电路在同一半导体衬底上制造,以形成片上系统(SoC)。网络设备可以实现为单个IC设备(例如,制造在单个衬底上),或者网络设备可以实现为包括通过例如印刷电路板(PCB)连接的多个IC设备的系统。接口可以包括网络接口(例如以太网接口和/或InfiniBand接口)和/或PCI Express(PCIe)接口。这些接口还可以包括其他管理和控制接口,如I2C、通用IO、USB、UART、SPI和eMMC。
尽管本文中的方法的操作以特定顺序示出和描述,但是可以改变每个方法的操作顺序,使得可以以相反顺序执行某些操作,或者使得可以至少部分地与其他操作同时执行某些操作。不同操作的指令或子操作可以以间歇和/或交替的方式实现。
还应当注意的是,这里描述的方法的至少一些操作可以使用存储在计算机可用存储介质上以供计算机执行的软件指令来实现。作为示例,计算机程序产品的实施例包括用于存储计算机可读程序的计算机可用存储介质。
计算机可用或计算机可读存储介质可以是电子、磁、光、电磁、红外或半导体系统(或装置或设备)。非暂时性计算机可用和计算机可读存储介质的示例包括半导体或固态存储器、磁带、可移动计算机软盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前示例包括具有只读存储器的光盘(CD-ROM)、具有读/写功能的光盘(CD-R/W)和数字视频光盘(DVD)。
尽管已经描述和图示了本发明的特定实施例,但是本发明不限于如此描述和图示的部件的特定形式或布置。本发明的范围由所附权利要求及其等同物来限定。

Claims (20)

1.一种方法,包括:
接收第一分组,所述第一分组在源地址字段中包括源地址,并且在目的地地址字段中包括目的地地址;
将所述第一分组路由到位于循环复制链中的选定服务节点,所述循环复制链包括具有本地流表且被配置用于本地流表的链复制的多个服务节点;
通过使用所述第一分组的匹配流表条目处理所述第一分组来产生所述第二分组;以及
将所述第二分组发送到所述目的地地址所指示的目的地。
2.根据权利要求1所述的方法,其中每个服务节点具有上游对等节点、下游对等节点,并且被配置为:
检测由分组引起的流未命中;
通过在本地流表中基于所述分组创建流表条目来处理所述流未命中;
基于所述分组创建流同步分组;以及
将所述流同步分组发送到所述下游对等节点。
3.根据权利要求2所述的方法,其中每个服务节点被配置为:
接收多个流同步分组,所述流同步分组包括多个自发起的流同步分组并且包括多个对等节点发起的流同步分组;
丢弃所述自发起的流同步分组;
基于所述本地流表中的对等节点发起的流同步分组创建多个流表条目;以及
将所述对等节点发起的流同步分组转发到所述下游对等节点。
4.根据权利要求2所述的方法,其中每个服务节点被配置为:
接收多个流同步分组;
丢弃已经具有匹配流表条目的流同步分组;
基于不具有匹配流表条目的流同步分组创建多个流表条目;以及
将不具有匹配流表条目的流同步分组转发给所述下游对等节点。
5.根据权利要求2所述的方法,其中所述流同步分组包括所述分组。
6.根据权利要求1所述的方法,其中:
每个服务节点具有本地会话表,所述本地会话表存储用于多个会话的多个会话表条目;
每个服务节点具有上游对等节点和下游对等节点;以及
所述服务节点被配置为使用链复制来复制所述本地会话表。
7.根据权利要求6所述的方法,其中每个服务节点被配置为:
接收会话的分组;
如果所述会话是未知会话,则通过创建本地会话表条目来确保所述会话的本地会话表条目存在;
在所述本地会话表条目中存储所述会话的会话状态;
当所述会话改变状态时,产生包括会话状态改变指示符的会话同步分组;以及
将会话同步分组发送到所述下游对等节点。
8.根据权利要求7所述的方法,其中所述会话是传输控制协议(TCP)会话或用户数据报协议(UDP)会话。
9.根据权利要求6所述的方法,其中每个服务节点被配置为:
接收多个会话同步分组,所述会话同步分组包括多个自发起的会话同步分组以及多个对等节点发起的会话同步分组;
丢弃所述自发起的会话同步分组;
基于所述对等节点发起的会话同步分组更新所述本地会话表;以及
将所述对等节点发起的会话同步分组转发到所述下游对等节点。
10.根据权利要求6所述的方法,其中每个服务节点被配置为:
使用会话的会话表条目,基于至少一个老化标准确定所述会话处于非活动状态;
向下游对等节点发送会话同步分组,指示所述会话处于非活动状态;以及
从所述上游对等节点接收所述会话同步分组后,删除所述会话表条目。
11.根据权利要求6所述的方法,其中每个服务节点被配置为:
在所述会话表条目中存储所述会话的会话统计信息;以及
将所述会话统计信息发送到包含聚合会话统计信息的聚合会话表。
12.根据权利要求11所述的方法,其中所述会话统计信息是分组计数。
13.根据权利要求10所述的方法,其中,
所述循环复制链中的服务节点共享虚拟IP地址;
向所述虚拟IP地址发送多个分组;以及
负载均衡器在服务节点之间分发所述分组。
14.一种方法,包括:
接收第一分组,所述第一分组在源地址字段中包括源地址,并且在目的地地址字段中包括目的地地址;
将所述第一分组路由到位于循环复制链中的选定服务节点,所述循环复制链包括具有本地会话表且被配置用于所述本地会话表的链复制的多个服务节点;
通过处理所述第一分组产生第二分组;以及
将所述第二分组发送到所述目的地地址所指示的目的地,
其中每个服务节点具有上游对等节点和下游对等节点。
15.根据权利要求14所述的方法,其中每个服务节点被配置为:
接收会话的分组;
如果所述会话是未知会话,则通过创建本地会话表条目来确保所述会话的本地会话表条目存在;
在所述本地会话表条目中存储会话状态;
当所述会话改变状态时,产生包括会话状态改变指示符的会话同步分组;以及
将会话同步分组发送到所述下游对等节点。
16.根据权利要求14所述的方法,其中每个服务节点被配置为:
接收多个会话同步分组,所述会话同步分组包括多个自发起的会话同步分组以及多个对等节点发起的会话同步分组;
丢弃所述自发起的会话同步分组;
基于所述对等节点发起的会话同步分组更新本地会话表;以及
将所述对等节点发起的会话同步分组转发到所述下游对等节点。
17.根据权利要求14所述的方法,其中每个服务节点被配置为:
使用会话的本地会话表条目,基于至少一个老化标准确定所述会话处于非活动状态;
向下游对等节点发送会话同步分组,指示所述会话处于非活动状态;以及
从所述上游对等节点接收所述会话同步分组后,删除所述本地会话表条目。
18.根据权利要求17所述的方法,其中:
所述服务节点具有本地流表,所述本地流表具有流表条目;以及
所述服务节点被配置为使用链复制来复制所述本地流表。
19.一种系统,包括:
多个服务节点,被配置为
接收第一分组,所述第一分组在源地址字段中包括源地址,并且在目的地地址字段中包括目的地地址;
将所述第一个分组路由到作为所述多个服务节点之一的选定服务节点,
通过使用所述第一分组的匹配流表条目处理所述第一分组来产生所述第二分组,
将所述第二分组发送到所述目的地地址所指示的目的地,
其中所述服务节点具有本地流表,具有本地会话表,并且被配置用于所述本地流表和所述本地会话表的链复制。
20.根据权利要求19所述的系统,还包括:
专用网络,被配置为在多个主机和服务节点之间传输多个网络分组;以及
至少一个智能交换机,
其中
所述服务节点在所述至少一个智能交换机内,并且
所述至少一个智能交换机被配置为将所述专用网络连接到公共网络。
CN202210554197.8A 2021-05-20 2022-05-20 使用原始数据分组进行服务状态复制的方法和系统 Pending CN115379017A (zh)

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
CN115379017A true CN115379017A (zh) 2022-11-22

Family

ID=81850171

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210554197.8A Pending CN115379017A (zh) 2021-05-20 2022-05-20 使用原始数据分组进行服务状态复制的方法和系统

Country Status (7)

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

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 (zh) 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
JP2022179413A (ja) 2022-12-02
CA3159812A1 (en) 2022-11-20
US11949589B2 (en) 2024-04-02
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
US11902184B2 (en) Methods and systems for providing a virtualized NVMe over fabric service
US11895027B2 (en) Methods and systems for service distribution using data path state replication and intermediate device mapping
AU2016382952B2 (en) Networking technologies
US9473596B2 (en) Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections
US20040103225A1 (en) Embedded transport acceleration architecture
US8756270B2 (en) Collective acceleration unit tree structure
US8370855B2 (en) Management of process-to-process intra-cluster communication requests
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
JP2008510338A (ja) パケット交換制御用の集積回路及び方法
US9098354B2 (en) Management of application to I/O device communication requests between data processing systems
US11740920B2 (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
US20230043461A1 (en) Packet processing configurations
Cerović Resilient and highly performant network architecture for virtualized data centers

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination