CN115858139A - 封包处理负载平衡器 - Google Patents
封包处理负载平衡器 Download PDFInfo
- Publication number
- CN115858139A CN115858139A CN202210782747.1A CN202210782747A CN115858139A CN 115858139 A CN115858139 A CN 115858139A CN 202210782747 A CN202210782747 A CN 202210782747A CN 115858139 A CN115858139 A CN 115858139A
- Authority
- CN
- China
- Prior art keywords
- processing units
- packets
- heavy
- load balancer
- flow
- 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
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及封包处理负载平衡器。本文描述的示例包括设备接口;第一组一个或多个处理单元;以及第二组一个或多个处理单元。在一些示例中,第一组一个或多个处理单元对于流的封包执行繁重流检测并且第二组一个或多个处理单元执行对繁重流的封包的处理。在一些示例中,第一组一个或多个处理单元和第二组一个或多个处理单元是不同的。在一些示例中,第一组一个或多个处理单元将指向与繁重流相关联的封包的指针分配到负载平衡器的第一组一个或多个队列,并且负载平衡器至少部分基于与繁重流相关联的封包的封包接收率将与繁重流相关联的封包分配到第二组一个或多个处理单元中的一个或多个处理单元。
Description
优先权
本申请要求享有2021年8月5日提交的专利合作条约(PCT)申请号PCT/CN2021/110831的优先权。通过引用并入该申请的全部内容。
技术领域
本公开涉及封包处理负载平衡器。
背景技术
在网络接口设备中,为许多不同的连接接收传输控制协议(TransmissionControl Protocol,TCP)封包。TCP连接可包括在两个设备之间的TCP会话中提供的TCP封包,其中多个TCP封包是以相同的IP地址(例如,目的地和源)和端口(例如,目的地和源)来传输的。一些TCP连接是长期存在的,并且生成大量的流量。一些TCP连接是短期存在的,并且生成稀少的流量。如果单个中央处理器单元(central processor unit,CPU)被分配来处理流量,那么当面对大量的流量时,单个CPU可能迅速变得不堪重负,导致完成处理封包的时间增加。为了缓解这种情况,网络接口设备尝试将对网络流量的处理分散到多个CPU。
有一些已知的技术用于在多个核心间平衡流量的封包处理。一种已知的用于将网络流量分发到不同的CPU核心的技术是使用接收侧缩放(Receive Side Scaling,RSS)。RSS提供了一种在一组核心之间分发流的方式。RSS通过使用跨多个连接的散列计算并且通过使用间接表,以统计方式将网络流量分发到核心。散列桶的数目可以对应于使用中的核心和相应队列的数目。基于散列的分发对于许多流量流而言效果很好。然而,在一些情况下,如果流集合有一些长期存在的高流量流,那么被选择来处理该流的核心可能会变得过载,这会增大封包处理的延时。
一种已知的技术使用代理或者分发器核心来将联网流分发到多个核心。使用核心作为代理来分发流可在系统中产生单点瓶颈。一种已知的技术使得smartNIC收集每个流的统计数据,以识别繁重流,从而使得核心可以使用这样的信息来进一步将繁重流分发到其他核心。然而,由于smartNIC的板载存储器有限,所以随着流的数目增大,收集所有流的统计数据可能是不可能的。
发明内容
根据本公开的实施例,提供了一种方法,包括:通过以下操作来处理繁重流的封包:在第一组一个或多个处理单元中执行繁重流检测,并且由第二组一个或多个处理单元执行对所述繁重流的封包的处理,其中,所述第一组一个或多个处理单元和所述第二组一个或多个处理单元是不同的。
根据本公开的实施例,提供了一种装置,包括:设备接口;第一组一个或多个处理单元;以及第二组一个或多个处理单元,其中:所述第一组一个或多个处理单元对于流的封包执行繁重流检测,并且所述第二组一个或多个处理单元执行对繁重流的封包的处理,其中,所述第一组一个或多个处理单元和所述第二组一个或多个处理单元是不同的。
根据本公开的实施例,提供了一种计算机可读介质,包括存储在其上的指令,所述指令如果被计算系统执行,则使得所述计算系统:使用第一组一个或多个处理单元来对于流的封包执行繁重流检测,并且使用第二组一个或多个处理单元来执行对繁重流的封包的处理,其中,所述第一组一个或多个处理单元和所述第二组一个或多个处理单元是不同的。
附图说明
图1描绘了示例系统。
图2描绘了检测繁重流的示例方式。
图3描绘了示例过程。
图4A-4C描绘了示例系统。
图5描绘了示例过程。
图6描绘了网络接口。
图7描绘了示例系统。
具体实施方式
一些实施例利用网络接口设备和计算平台的一个或多个处理单元来执行对繁重流(例如,大象流)的检测,并且利用负载平衡器设备来在处理单元之间对流的封包的封包处理进行负载平衡。网络接口设备可以基于Sigcomm 2019“Nitrosketch:Robust andGeneral Sketch-based Monitoring in Software Switches”(Nitrosketch:软件交换机中的鲁棒且通用的基于略图的监视)中描述的最小计数略图(count-min sketch),来维护在特定流中接收到的封包的数目的计数。网络接口设备可以向计算平台报告被认为是繁重的流。计算平台可以维护堆或二叉树,以记下频繁项(heavy hitter)的流密钥,例如基于封包头部的n元组。可以使用最小计数略图(例如,计数器的2d阵列)来确定在网络接口设备处对流中的封包的近似计数或者封包的总字节计数。
被指派处理一个或多个流的封包的处理单元可以确定该一个或多个流是繁重流还是非繁重流。这样的处理单元可以用负载平衡器设备的队列来将封包排队,并且负载平衡器设备可以确定处理封包的处理单元的数目。在处理单元处理封包之后,负载平衡器设备可以按照封包序列号排序、封包传输顺序或者封包接收顺序对处理的封包进行重排序。
图1描绘了示例系统。平台100可以使用接口130与网络接口设备150进行通信耦合。在一些示例中,可以通过在网络接口设备150中的封包计数器152处对流的封包执行计数并且使用处理单元102-0至102-N之中的一个或多个处理单元执行频繁项检测,来在网络接口设备150和平台100处执行繁重流检测。在将流分类为繁重或非繁重之后,执行频繁项检测的一个或多个处理单元可以向负载平衡器108管理的队列提供指向封包的存储器地址(虚拟或物理地址)或者其他标识符的指针。例如,一组一个或多个队列可以存储与繁重流相关联的封包的指针,并且另一组一个或多个队列可以存储与非繁重流相关联的封包的指针。负载平衡器108可以选择处理单元102-0至102-N中的一组一个或多个处理单元来对作为繁重流的一部分的封包执行封包处理,并且选择处理单元102-0至102-N中的一组一个或多个处理单元来对作为非繁重流的一部分的封包执行封包处理。在对封包进行处理之后,指向经处理的封包的指针可以被放置在与负载平衡器108相关联的队列中。经处理的封包可以使用网络接口设备150被传输到另一设备,或者被平台100上的应用访问。
网络接口设备150可以利用封包计数器152来对接收到的流的封包进行计数,并且提供Sigcomm 2019“Nitrosketch:Robust and General Sketch-based Monitoring inSoftware Switches”中描述的最小计数数据结构。封包计数器152可以在网络接口设备150的存储器中维护最小计数数据结构。封包计数器152可以选择至少一个处理单元(例如,处理单元102-0至102-N中的一个或多个)来确定流是繁重的还是不繁重的。例如,封包计数器152可以利用RSS来选择至少一个处理单元以确定流是繁重的还是不繁重的。封包计数器152可以向平台100的所选择的至少一个处理单元报告被认为是繁重的流。
网络接口设备150可被实现为以下各项中的一个或多个:网络接口控制器(network interface controller,NIC)、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(infrastructure processing unit,IPU)、或者数据处理单元(data processingunit,DPU)。SmartNIC或者可编程NIC的优点是较高的线内处理吞吐量,并且带有专门的硬件组件,但板载硬件资源(例如,存储器)较少。频繁项检测利用了网络接口设备150的快速处理和处理单元执行的软件的灵活性。频繁项检测可以基于Sigcomm 2019“Nitrosketch:robust and general sketch-based monitoring in software switches”。Nitro略图算法包括两部分,最小计数略图以及堆或二叉树,以记下频繁项的流密钥(例如,N元组)。
流可以是在两个端点之间传送的封包的序列,一般表示使用已知协议的单个会话。因此,流可以由一组定义的元组来识别,并且为了路由的目的,流由识别端点的两个元组来识别,例如,源地址和目的地地址。对于基于内容的服务(例如,负载平衡器、防火墙、入侵检测系统,等等),可以通过使用N元组(例如,源地址、目的地地址、IP协议、传输层源端口和目的地端口)以更精细的粒度来区分流。流中的封包预计将在封包头部中具有相同的元组集合。要控制的封包流可以通过元组的组合(例如,以太网类型字段、源和/或目的地IP地址、源和/或目的地用户数据报协议(User Datagram Protocol,UDP)端口、源/目的地TCP端口、或者任何其他头部字段)和唯一的源和目的地队列对(queue pair,QP)编号或者标识符来识别。
封包在本文中可用来指可在网络上发送的比特的各种格式的集合,例如以太网帧、IP封包、TCP片段、UDP数据报,等等。另外,当在本文档中使用时,对L2、L3、L4和L7层(第2层、第3层、第4层和第7层)的提及分别是提及OSI(Open System Interconnection,开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层。
接口130可以使用以下协议中的一个或多个来提供通信:串行外围接口(serialperipheral interface,SPI)、增强型SPI(enhanced SPI,eSPI)、系统管理总线(SystemManagement Bus,SMBus)、I2C、MIPI外围组件互连快速(Peripheral ComponentInterconnect Express,PCIe)、计算快速链路(Compute Express Link,CXL)。参见例如外围组件互连快速(PCIe)基本规范1.0(2002),以及早期版本、后期版本及其变化。参见例如计算快速链路(CXL)规范修订版2.0,版本0.7(2019),以及早期版本、后期版本及其变化。
来自同一流的封包可以被分配给相同的一个或多个处理单元,因此一个处理单元可以为整个流执行频繁项检测。处理单元可以管理频繁项的树,这些频繁项由处理单元在存储器106中的最小堆(min-heap)或二叉树中管理。最小堆可包括二叉树,其中节点中关联的数据小于(或等于)该节点的子节点中的数据。平台100可以在存储器106中为至少一个处理单元维护堆,以基于例如基于封包头部的n元组来记下频繁项的流密钥。处理单元可以共享单个最小堆或二叉树,或者维护单独的最小堆或二叉树,以减少最小堆或二叉树锁定和与访问同一最小堆相关联的处理单元到处理单元的通信。
处理单元可以查询网络接口设备150中的计数器信息。一组一个或多个处理单元可以被分配来执行繁重流检测。可以分配不同的一组一个或多个处理单元来处理被识别为繁重或非繁重流的封包。分离轻量流和繁重流处理单元可以隔离繁重流和轻量流之间的性能,以便压倒性的大量繁重流或者繁重流的封包不会影响轻量流的服务质量(quality ofservice,QoS),反之亦然。
负载平衡器108可以支持多核处理单元中的处理单元和/或核心之间的通信(也被称为“核心到核心”或者“C2C”通信),可被计算机应用使用,例如封包处理、高性能计算(high-performance computing,HPC)、机器学习,等等。C2C通信可包括发送和/或接收数据或者读取或写入数据的请求。例如,第一核心(例如,“生产者”核心)可以生成C2C请求,以将数据发送到第二核心(例如,“消费者”核心)。
负载平衡器108可包括硬件调度单元来处理C2C请求。处理单元或核心可以被分组为各种类别,每个类别被指派特定比例的C2C调度带宽。在一些实施例中,负载平衡器108可包括基于信用的仲裁器,以基于存储的信用值来选择要调度的类别。信用值可以指示出每个类别相对于其指派的比例接收了多少调度带宽。负载平衡器108可以使用信用值来以其各自比例的C2C调度带宽来调度每个类别。负载平衡器108可被实现为硬件队列管理器(hardware queue manager,HQM)或者其他负载平衡器,通过在处理单元间动态且高效地分发处理来提高性能并且减少延时。
与负载平衡器108相关联的一个或多个队列可以被分配给繁重流和非繁重流。处理单元102-0至102-N之中的一个或多个处理单元可以执行繁重流检测器过程,以确定所指示的一个或多个流是繁重流还是非繁重流。在一些示例中,繁重流检测器过程可以基于数据平面开发套件(Data Plane Development Kit,DPDK)。例如,繁重流检测器过程可以根据Nitrosketch,基于存储器106中的最小堆或二叉树来将流识别为繁重的。例如,繁重流检测器过程可以监视将由处理单元处理的一个或多个流的封包的接收率,例如流中的接收字节的计数或者在一段时间内与封包相关联的流的封包的计数(例如,整个封包的字节/秒)。例如,可以基于对接收封包描述符的轮询来确定流的封包的接收率。如果流中的接收封包的比特接收率(例如,比特/秒)满足或超过第一阈值,则该流可以被认为是繁重的,并且繁重流检测器可以将指向接收封包的指针拷贝到与为繁重流的封包分配的负载平衡器108相关联的一个或多个队列。注意,一组一个或多个队列可用于存储指向繁重流的封包的指针,另一组一个或多个队列可用于存储指向另一个繁重流的封包的指针,等等依此类推。
如果流中的接收封包的字节接收率(例如,字节/秒或者比特/秒)或者封包计数接收率(例如,计数/秒)满足或小于第二阈值,其中第二阈值可以与第一阈值相同或者小于第一阈值,则该流可被视为非繁重流,并且繁重流检测器可将封包的指针拷贝到为繁重流的封包分配的一个或多个队列。注意,一组一个或多个队列可用于存储指向非繁重流的封包的指针,另一组一个或多个队列可用于存储指向另一个非繁重流的封包的指针,等等依此类推。
负载平衡器108可以将繁重流的封包分发给处理单元102-0至102-N之中的一个或多个处理单元,以处理封包。在这个示例中,封包处理是由处理单元102-N-1和102-N执行的,虽然其他处理单元也可以执行封包处理。负载平衡器108可以基于处理单元的繁忙程度和处理单元的计算容量,在一个或多个处理单元之间对繁重流的封包处理进行负载平衡。负载平衡器108可以增大(扩大)或者减小(缩小)用于处理封包的处理单元的数目。
被分配来执行对非繁重流的封包的处理的一个或多个处理单元可以访问指针并且从一个或多个非繁重流队列中将封包出队并且处理封包,而另一组一个或多个处理单元可以访问指针并且可以从一个或多个繁重流队列中将封包出队。负载平衡器108可以基于对于封包的特定接收率,是否需要更多或更少的处理单元来处理封包,来调整处理繁重流的封包的处理单元的数目并且调整处理轻量流的封包的处理单元的数目。在一些示例中,执行繁重流检测器过程的一个或多个处理单元可以被替换地或者额外地分配来执行对繁重流或非繁重流封包的处理。
例如,封包处理可被实现为服务、微服务、云原生微服务、工作负载、虚拟机(virtual machine,VM)、容器或者其他软件。可以基于以下各项中的一个或多个来执行封包处理:数据平面开发套件(Data Plane Development Kit,DPDK)、存储性能开发套件(Storage Performance Development Kit,SPDK)、OpenDataPlane、网络功能虚拟化(Network Function Virtualization,NFV)、软件定义联网(software-definednetworking,SDN)、演进型封包核心(Evolved Packet Core,EPC)、或者5G网络切片。在欧洲电信标准学会(European Telecommunications Standards Institute,ETSI)规范或者来自ETSI的开源Mano(Open Source Mano,OSM)小组的开源NFV管理和协调(Management andOrchestration,MANO)中描述了NFV的一些示例实现方式。虚拟网络功能(virtual networkfunction,VNF)可包括在诸如防火墙、域名系统(domain name system,DNS)、缓存或网络地址转化(network address translation,NAT)之类的通用可配置硬件上执行的虚拟化任务的服务链或序列,并且可以在VEE中运行。VNF可以作为服务链被链接在一起。在一些示例中,EPC是3GPP指定的核心体系结构,至少用于长期演进(Long Term Evolution,LTE)接入。5G网络切片可以提供同一物理网络基础设施上的虚拟化和独立逻辑网络的复用。封包处理可包括访问控制列表(access control list,ACL)、防火墙、入侵检测系统、网络地址转化(network address translation,NAT)、以及对封包的其他操作。在一些示例中,封包处理可包括改变封包的目的地介质访问控制(media access control,MAC)地址或者其他字段,并且处理单元或设备可以对重排序的经处理的封包进行排队,以便从网络接口设备传输。在一些示例中,重排序的经处理的封包可以被存储来供应用访问。
在处理封包之后,处理单元可以将指向经处理的封包的指针排队到负载平衡器108的队列。负载平衡器108可以对经处理的封包执行重排序,以匹配发送序列或接收序列。例如,为了在处理之后对封包进行重排序,负载平衡器108可以利用接收到的封包中的序列标识符(例如,TCP序列号)、在接收到时指派给封包以识别封包接收的顺序的序列号、或者封包接收的时间戳。
一个或多个处理单元102-0至102-N可包括以下各项中的一个或多个:XPU、基础设施处理单元(infrastructure processing unit,IPU)、CPU、核心、CPU插座、图形处理单元(graphics processing unit,GPU)、通用GPU(general purpose GPU,GPGPU)、加速器设备(例如,现场可编程门阵列(field programmable gate array,FPGA)或者专用集成电路(application specific integrated circuit,ASIC))、SmartNIC上的设备(例如,处理器)、网络接口设备、板管理控制器(Board Management Controller,BMC)、存储控制器、存储器控制器、显示引擎、外围设备、管理或可管理性引擎(ManageabilityEngine,ME)、超微半导体公司(Advanced Micro Devices,AMD)平台安全性处理器(Platform Security Processor,PSP)、带有TrustZone扩展的先进RISC机器(AdvancedRISC Machines,ARM)核心、平台控制器中枢(Platform Controller Hub,PCH),等等。
核心可以是能够执行指令的执行核心或者计算引擎。核心可能够访问其自己的缓存和只读存储器(read only memory,ROM),或者多个核心可以共享缓存或者ROM。核心可以是同质和/或异质的设备。可以使用任何类型的处理器间通信技术,例如但不限于消息传递、处理器间中断(inter-processor interrupt,IPI)、处理器间通信,等等。可以按任何类型的方式连接核心,例如但不限于总线、环状或者网状。核心可支持一个或多个指令集(例如,x86指令集(带有已随着更新的版本添加的一些扩展);加州森尼维尔市的MIPS技术公司的MIPS指令集;加州森尼维尔市的ARM控股公司的ARM指令集(带有可选的额外扩展,例如NEON)),包括本文描述的(一个或多个)指令。
处理单元102-0至102-N中的一个或多个可以执行操作系统(operating system,OS)。在一些示例中,OS可以是服务器或个人计算机、VMware vSphere、或者任何其他操作系统。OS和驱动器可以在/> Texas/>等等公司销售或设计的处理单元上执行。
图2描绘了确定流是否为繁重流的示例方式。在一些示例中,可以维护并且在网络接口设备202中存储最小计数略图数据,并且可以在服务器或计算平台的系统存储器中存储堆或二叉树数据结构,其中平台使用设备接口连接到网络接口设备202,并且系统存储器对于平台210的一个或多个处理单元而言是可访问的。
在一些示例中,网络接口设备202可以利用可编程的或者固定功能的硬件来以2维计数器阵列的形式生成最小计数略图。对于具有“d”行和“w”列的2维计数器阵列,封包可以被散列d次,对于一行有一次散列,并且对于每一行,基于散列值的位置可以被索引,并且相应的计数器值被递增。可以通过所有d个相应的计数器(对于每行有一个)的最小值来估计流的封包的计数。最小计数略图可能不会维护每个流的完整密钥。例如,大小为O(100KB)的存储器可以存储O(1M)流的估计出现频率。
可以通过网络接口设备202中的电路(例如,加速器或ASIC)来加速并且实现最小计数略图。存储器(例如,静态随机访问存储器(static random-access memory,SRAM))可以存储2维计数器阵列,并且基于硬件的散列函数(例如,接收侧缩放(RSS))可以在网络接口设备202的一个或多个电路上被执行。
网络接口设备202可以将满足或超过一定阈值计数的流识别为繁重流,以包括在维护于计算平台210的存储器中的最小堆或二叉树中。最小堆或二叉树可以在最小堆或二叉树中记录密钥和及其估计大小(例如,封包计数或者总字节)。最小堆或二叉树可以维护前k个频繁项及其频率。密钥可以表示封包的元组。最小堆或二叉树访问(例如,读取或写入)的速度可以通过使用散列表支持的堆设计来得到加强。记录在最小堆或二叉树中的繁重流可以被平台210的处理单元处理,用于分析或者用于分发频繁项流的封包,以便由一个或多个处理单元处理。在一些示例中,如本文所述,对于特定流是否繁重的检测可以完全由一个或多个处理单元执行。
图3描绘了检测繁重流的示例过程。在302,在网络接口设备(network interfacedevice,NID)处接收封包。可以在NID的端口处接收该封包。在304,NID可以访问接收到的封包的头部或者接收到的封包的一个或多个头部字段。在306,NID可以对接收到的封包的一个或多个头部字段计算散列值。例如,接收到的封包的一个或多个头部字段可以表示密钥。在308,NID可以更新特定散列值的最小计数,以近似为该流接收的封包的数目。可以根据本文描述和引用的Nitrosketch来确定最小计数。在310,NID可以确定对于特定流的接收封包的计数是否满足或超过阈值水平。如果对于特定流的接收封包的计数满足或超过阈值水平,则该过程可以继续到312,其中NID向平台报告该特定流被认为是繁重的。如果对于特定流的接收封包的计数不满足并且不超过阈值水平,则该过程可以重复310,以确定哪个流(如果有的话)被认为是繁重的。
在312,NID可以使用元数据、描述符或者其他消息传递来通知平台处理单元所识别的繁重流的封包计数。在一些示例中,平台处理单元可以通过RSS或者其他散列方案来选择。在314,平台处理单元可以更新最小堆或二叉树,并且识别被识别为繁重的流。平台处理单元的处理可以继续进行,如图4A-4C中所述。
图4A描绘了示例过程。在402,NID可以选择处理单元来执行繁重流检测。例如,RSS可被用于使得单个处理单元确定流是否被认为是繁重的。在404,所选择的处理单元可以将由NID识别为繁重的流的最小堆或二叉树更新到计算平台处理单元。在406,所选择的处理单元可以通过比较流的封包计数与trie(树)的根来确定流是否被认为是繁重的,并且如果流的封包计数高于最小堆或二叉树中的trie的根,则该流可以被认为是繁重的。对于繁重流,该过程可以继续到408,其中指向繁重流的封包的指针可以被排队在一个或多个繁重流队列中。在一些情况下,一个或多个繁重流队列与负载平衡器相关联。繁重流的封包可以由负载平衡器选择的一个或多个处理单元来处理。对于非繁重流,该过程可以继续到410,其中指向非繁重流的封包的指针可以被排队在一个或多个非繁重流队列中。在一些情况下,一个或多个非繁重流队列与负载平衡器相关联。非繁重流的封包可以由负载平衡器选择的一个或多个处理单元来处理。
图4B描绘了示例过程,其中所选择的一个或多个处理单元可以执行封包处理。该一个或多个处理单元可以由计算平台中的负载平衡器选择,并且执行与繁重流或非繁重流相关联的封包的封包处理。在420,该一个或多个处理单元可以通过访问指向封包的指针并且从存储器中读取由该指针识别的封包来将封包从队列中出队。在422,该一个或多个处理单元可以处理该封包。在424,该一个或多个处理单元可以将指向经处理的封包的指针排队到与负载平衡器相关联的输出队列或者存储器中的队列。
图4C描绘了为传输准备封包的示例过程。在430,被分配来执行封包传输调度的处理单元可以从输出队列访问指向封包的指针。输出队列可以与负载平衡器相关联,或者独立于负载平衡器。该指针可以指的是存储经处理的封包的存储器区域。在432,处理单元可以调度封包来从NID传输。
图5描绘了可用于指引封包进行繁重流检测、选择一个或多个处理单元来处理封包以及传输经处理的封包的示例过程。在502,网络接口设备(NID)可以选择一个或多个处理单元来检测流是否是繁重流。例如,可以使用RSS来选择一个或多个处理单元以检测流是否是繁重流。来自流的封包可以通过RSS被分配给相同的处理单元,从而使得一个处理单元可以对整个流执行频繁项检测。在504,基于对流是繁重流的检测,指向封包的指针可被存储在与繁重流相关联的队列中。在504,基于对流是非繁重流的检测,指向封包的指针可被存储在与非繁重流相关联的队列中。在506A,负载平衡器可以选择一个或多个处理单元,以通过访问来自存储指向繁重流的封包的指针的队列的指针来执行作为繁重流的一部分的封包的处理。在506B,负载平衡器可以选择一个或多个处理单元,以通过访问来自存储指向非繁重流的封包的指针的队列的指针来执行作为非繁重流的一部分的封包的处理。在508,负载平衡器可以对指向经处理的封包的指针进行排队,以便传输。例如,经处理的封包可以有一个或多个头部字段被修改。在510,处理单元可以轮询准备好传输的经处理的封包,并且使得经处理的封包被使用NID来进行传输。
图6描绘了可以使用实施例或者被实施例使用的网络接口。网络接口中的各种处理单元资源可以基于Nitrosketch执行对于流接收到的封包的计数,并且选择至少一个处理单元来执行繁重流检测,如本文所述。在一些示例中,网络接口600可被实现为网络接口控制器、网络接口卡、主机架构接口(host fabric interface,HFI)或者主机总线适配器(host bus adapter,HBA),并且这样的示例可能是可互换的。网络接口600可以使用总线、PCIe、CXL或DDR耦合到一个或多个服务器。网络接口600可以体为包括一个或多个处理单元的片上系统(system-on-a-chip,SoC)的一部分,或者被包括在也包含一个或多个处理单元的多芯片封装上。
网络设备600的一些示例是基础设施处理单元(IPU)或数据处理单元(DPU)的一部分,或者被IPU或DPU所利用。xPU至少可以指IPU、DPU、GPU、GPGPU或者其他处理单元(例如,加速器设备)。IPU或DPU可包括网络接口,其具有一个或多个可编程管线或固定功能的处理单元来执行本来可由CPU执行的操作的负载转移。IPU或DPU可包括一个或多个存储器设备。在一些示例中,IPU或DPU可以执行虚拟交换机操作,管理存储事务(例如,压缩、密码术、虚拟化),并且管理在其他IPU、DPU、服务器或设备上执行的操作。
网络接口600可包括收发器602、处理器604、发送队列606、接收队列608、存储器610、以及总线接口612、以及DMA引擎652。收发器602可能够接收和发送符合适当协议的封包,例如IEEE 802.3中描述的以太网,虽然可以使用其他协议。收发器602可以经由网络介质(未描绘)来接收和发送来自和去往网络的封包。收发器602可包括PHY电路614和介质访问控制(media access control,MAC)电路616。PHY电路614可包括编码和解码电路(未示出),以根据适用的物理层规范或标准对数据封包进行编码和解码。MAC电路616可被配置为对接收到的封包执行MAC地址过滤,通过验证数据完好性来处理接收到的封包的MAC头部,去除前导和填充,并且提供封包内容以便由更高层处理。MAC电路616可被配置为将要发送的数据组装成封包,这些封包包括目的地和源地址以及网络控制信息和差错检测散列值。
处理器604可以是以下各项的任何一者或者其组合:软件执行处理器、核心、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、或者允许网络接口600的编程的其他可编程硬件设备。例如,“智能网络接口”或者SmartNIC可以利用处理器604在网络接口中提供封包处理能力。
处理器604可包括可编程处理管线,该管线可由P4、C、Python、Broadcom网络编程语言(Network Programming Language,NPL)或者x86兼容的可执行二进制文件或者其他可执行二进制文件来进行编程。可编程处理管线可包括一个或多个匹配动作单元(match-action unit,MAU),这些MAU可以作为繁重流检测的一部分对封包接收率进行计数,执行RSS以识别处理器来执行繁重流检测,和/或通知处理器某个流可能是繁重的。处理器、FPGA、其他专门的处理器、控制器、设备和/或电路可被用于封包处理或封包修改。三元内容可寻址存储器(ternary content-addressable memory,TCAM)可被用于封包头部内容上的并行匹配动作或查找操作。
封包分配器624可以使用RSS提供对接收到的封包的分发,以便由多个CPU或核心处理。当封包分配器624使用RSS时,封包分配器624可以基于接收到的封包的内容计算散列或者作出另一确定,以确定哪个处理单元或核心要处理封包。
中断合并622可以执行中断节制,由此,网络接口中断合并622等待多个封包到达,或者等待超时期满,然后才生成中断给主机系统,以处理接收到的(一个或多个)封包。接收片段合并(Receive Segment Coalescing,RSC)可由网络接口600执行,由此,传入封包的各部分被组合成封包的片段。网络接口600将这个合并的封包提供给应用。
直接存储器访问(direct memory access,DMA)引擎652可以将封包头部、封包有效载荷和/或描述符直接从主机存储器拷贝到网络接口或者反之,而不是将封包拷贝到主机处的中间缓冲器并随后使用从中间缓冲器到目的地缓冲器的另一个拷贝操作。在一些示例中,DMA引擎652可以执行与数据拷贝相联系的加密或解密。
存储器610可以是任何类型的易失性或非易失性存储器设备,并且可以存储用于对网络接口600编程的任何队列或指令。发送队列606可包括供网络接口发送的数据或者对数据的引用。接收队列608可包括由网络接口从网络接收的数据或者对数据的引用。描述符队列620可包括引用发送队列606或接收队列608中的数据或封包的描述符。总线接口612可提供与主机设备(未描绘)的接口。例如,总线接口612可以与PCI、PCI快速、PCI-x、串行ATA和/或USB兼容接口兼容(虽然可以使用其他互连标准)。
图7描绘了一种系统。系统700可以使用各种示例来检测繁重流并且在处理器之间分配封包,如本文所述。系统700包括处理器710,该处理器为系统700提供处理、操作管理和指令的执行。处理器710可包括任何类型的微处理器、中央处理单元(central processingunit,CPU)、图形处理单元(graphics processing unit,GPU)、加速处理单元(AcceleratedProcessing Unit,APU)、处理核心、或者用来为系统700提供处理的其他处理硬件、或者处理器的组合。处理器710控制系统700的整体操作,并且可以是或者可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(digital signal processor,DSP)、可编程控制器、专用集成电路(application specific integrated circuit,ASIC)、可编程逻辑器件(programmable logic device,PLD),等等,或者这种设备的组合。
在一个示例中,系统700包括与处理器710耦合的接口712,它可以代表更高速度的接口或者高吞吐量接口,用于需要更高带宽连接的系统组件,例如存储器子系统720或图形接口740,或者加速器742。接口712代表接口电路,它可以是独立的组件,或者可被集成到处理器管芯上。如果存在,则图形接口740与图形组件相对接,用于向系统700的用户提供视觉显示。在一个示例中,图形接口740可以驱动向用户提供输出的高清晰度(highdefinition,HD)显示器。高清晰度可以指具有大约100PPI(每英寸像素)或更大的像素密度的显示器,并且可包括诸如全HD(例如,1180p)、视网膜显示器、4K(超高清或UHD)之类的格式或其他格式。在一个示例中,显示器可包括触摸屏显示器。在一个示例中,图形接口740基于存储在存储器730中的数据或者基于由处理器710执行的操作或者这两者来生成显示。在一个示例中,图形接口740基于存储在存储器730中的数据或者基于由处理器710执行的操作或者这两者来生成显示。
加速器742可以是可编程的或者固定功能的负载转移引擎,该引擎可被处理器710访问或使用。例如,加速器742之中的一加速器可以提供按本文描述的方式进行的顺序和推测性解码操作、压缩(DC)能力、密码服务(例如公钥加密(public key encryption,PKE))、密码、散列/认证能力、解密、或者其他能力或服务。在一些实施例中,额外地或者替换地,加速器742之中的一加速器提供如本文所述的现场选择控制器能力。在一些情况下,加速器742可以被集成到CPU插座(例如,包括CPU并且提供与CPU的电接口的主板或电路板的连接器)中。例如,加速器742可包括单核或多核处理器、图形处理单元、逻辑执行单元、单级或多级缓存、可用来独立执行程序或线程的功能单元、专用集成电路(application specificintegrated circuit,ASIC)、神经网络处理器(neural network processor,NNP)、可编程控制逻辑、以及可编程处理元件,例如现场可编程门阵列(field programmable gatearray,FPGA)。加速器742可以提供多个神经网络、CPU、处理器核心、通用图形处理单元,或者图形处理单元可供人工智能(artificial intelligenc,AI)或机器学习(machinelearning,ML)模型使用。例如,AI模型可以使用或包括以下各项的任何一者或者组合:强化学习方案、Q学习方案、深度Q学习、或者异步优势动作评价(Asynchronous AdvantageActor-Critic,A3C)、组合神经网络、递归组合神经网络、或者其他AI或ML模型。多个神经网络、处理器核心或图形处理单元可供AI或ML模型使用。可以使用处理器710或加速器742来实现本文描述的负载平衡器。
存储器子系统720代表系统700的主存储器,并且为将由处理器710执行的代码或者在执行例程时将要使用的数据值提供存储。存储器子系统720可包括一个或多个存储器设备730,例如只读存储器(read-only memory,ROM)、闪存、一个或多个品种的随机访问存储器(random access memory,RAM)(比如DRAM)、或者其他存储器设备、或者这种设备的组合。存储器730存储和容宿——除其他外——操作系统(operating system,OS)732,以为系统700中的指令的执行提供软件平台。此外,应用734可以从存储器730在OS 732的软件平台上执行。应用734代表具有其自己的操作逻辑的程序,以执行一个或多个功能的执行。进程736代表向OS 732或一个或多个应用734或者其组合提供辅助功能的代理或例程。OS 732、应用734和进程736提供软件逻辑以为系统700提供功能。在一个示例中,存储器子系统720包括存储器控制器722,它是用于生成和发出命令给存储器730的存储器控制器。将会理解,存储器控制器722可以是处理器710的物理部分或者接口712的物理部分。例如,存储器控制器722可以是集成的存储器控制器,与处理器710一起被集成到电路上。
在一些示例中,OS 732或驱动器可以配置网络接口750或其他设备以执行繁重流检测,并且选择处理器或处理单元来执行频繁项检测,如本文所述。
虽然没有具体图示,但将会理解,系统700可包括设备之间的一个或多个总线或总线系统,例如存储器总线、图形总线、接口总线,或者其他。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者同时将组件通信地且电气地耦合。总线可包括物理通信线路、点到点连接、桥接器、适配器、控制器、或者其他电路或者这些的组合。总线可包括例如以下各项中的一个或多个:系统总线、外围组件互连(Peripheral ComponentInterconnect,PCI)总线、Hyper Transport或工业标准体系结构(industry standardarchitecture,ISA)总线、小型计算机系统接口(small computer system interface,SCSI)总线、通用串行总线(universal serial bus,USB)、或者电气与电子工程师学会(Institute of Electrical and Electronics Engineers,IEEE)标准1394总线(Firewire)。
在一个示例中,系统700包括接口714,它可以耦合到接口712。在一个示例中,接口714代表接口电路,它可包括独立的组件和集成电路。在一个示例中,多个用户接口组件或外围组件或者这两者耦合到接口714。网络接口750向系统700提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口750可包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或者其他基于有线或无线标准的或专属的接口。网络接口1050可以将数据传输到在同一数据中心或机架中的设备或者远程设备,这可包括发送存储在存储器中的数据。网络接口750可以从远程设备接收数据,这可包括将接收到的数据存储到存储器中。
在一个示例中,系统700包括一个或多个输入/输出(I/O)接口760。I/O接口760可包括一个或多个接口组件,用户通过这些接口组件与系统700进行交互(例如,音频、字母数字、触觉/触摸、或者其他接口)。外围接口770可包括上文没有具体提到的任何硬件接口。外设一般是指依赖性地连接到系统700的设备。依赖性连接是指这样的连接:系统700提供软件平台或硬件平台或者这两者,操作在该平台上执行,并且用户与该平台进行交互。
在一个示例中,系统700包括存储子系统780,来以非易失方式存储数据。在一个示例中,在某些系统实现方式中,存储装置780的至少某些组件可以与存储器子系统720的组件重叠。存储子系统780包括(一个或多个)存储设备784,其可以是或者可以包括用于以非易失性方式存储大量数据的任何传统介质,例如一个或多个磁性的、固态的、或者基于光学的盘,或者这些的组合。存储装置784以持久的状态保存代码或指令和数据1046(即,尽管到系统700的电力中断,该值仍被保留)。存储装置784可以被笼统地认为是“存储器”,虽然存储器730通常是执行或操作存储器,以提供指令给处理器710。存储装置784是非易失性的,而存储器730可包括易失性存储器(即,如果到系统700的电力被中断,数据的值或状态是不确定的)。在一个示例中,存储子系统780包括控制器782来与存储装置784相对接。在一个示例中,控制器782是接口714或处理器710的物理部分,或者可包括处理器710和接口714两者中的电路或逻辑。
易失性存储器是在到设备的电力被中断的情况下状态不确定(并且因此存储在其中的数据不确定)的存储器。动态易失性存储器可涉及刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(Dynamic Random Access Memory,动态随机访问存储器),或者某种变体,例如同步DRAM(Synchronous DRAM,SDRAM)。如本文所述的存储器子系统可与若干个存储器技术兼容,例如DDR3(双倍数据速率版本3,由JEDEC(JointElectronic Device Engineering Council,联合电子设备工程委员会)于2007年6月27日最初发布)。DDR4(DDR版本4,初始规范由JEDEC于2012年9月发布),DDR4E(DDR版本4),LPDDR3(低功率DDR版本3,JESD209-3B,2013年8月由JEDEC发布),LPDDR4(LPDDR版本4,JESD209-4,最初由JEDEC于2014年8月发布),WIO2(宽输入/输出版本2,JESD229-2,最初由JEDEC于2014年8月发布),HBM(高带宽存储器,JESD325,最初由JEDEC于2013年10月发布)、LPDDR5(当前在被JEDEC讨论)、HBM2(HBM版本2,当前在被JEDEC讨论),或者其他存储器技术或存储器技术的组合,以及基于这种规范的衍生或扩展的技术。
非易失性存储器(non-volatile memory,NVM)设备是一种存储器,其状态即使在到该设备的电力被中断的情况下也是确定的。在一些示例中,NVM设备可包括可块状寻址的存储器设备,例如NAND技术,或者更具体而言,多阈值级NAND闪存(例如,单级单元(Single-Level Cell,“SLC”),多级单元(Multi-Level Cell,“MLC”),四级单元(Quad-Level Cell,“QLC”),三级单元(Tri-Level Cell,“TLC”),或者一些其他NAND)。NVM设备还可包括可字节寻址的就地写入的三维交叉点存储器设备,或者其他可字节寻址的就地写入的NVM设备(也称为持续性存储器),例如单级或多级相变存储器(Phase Change Memory,PCM)或者带开关的相变存储器(phase change memory with a switch,PCMS),使用硫属化合物相变材料(例如,硫属化合物玻璃)的NVM设备,包括金属氧化物基、氧空位基、和导电桥随机访问存储器(Conductive Bridge Random Access Memory,CB-RAM)的电阻性存储器,纳米线存储器,铁电随机访问存储器(FeRAM、FRAM),包含了忆阻器技术的磁阻随机访问存储器(magnetoresistive random access memory,MRAM),自旋转移矩(spin transfer torque,STT)-MRAM,基于自旋电子磁结存储器的设备,基于磁性隧道结(magnetic tunneling junction,MTJ)的设备,基于DW(Domain Wall,畴壁)和SOT(Spin Orbit Transfer,自旋轨道转移)的设备,基于晶闸管的存储器设备,或者上述任何一项的组合,或者其他存储器。
电源(未描绘)向系统700的组件提供电力。更具体而言,电源通常与系统700中的一个或多个电力供应源相对接,以向系统700的组件提供电力。在一个示例中,电力供应源包括AC到DC(交流电到直流电)适配器,以插入到壁式插座中。这种AC电力可以是可再生能量(例如,太阳能)电源。在一个示例中,电源包括DC电源,例如外部AC到DC转换器。在一个示例中,电源或电力供应源包括无线充电硬件,以经由接近充电场来充电。在一个示例中,电源可包括内部电池、交流供应源、基于运动的电力供应源、太阳能电力供应源、或者燃料电池源。
在一示例中,可以使用处理器、存储器、存储装置、网络接口和其他组件的互连计算托架来实现系统700。可以使用高速互连,例如:以太网(IEEE 802.3)、远程直接存储器访问(remote direct memory access,RDMA)、InfiniBand、互联网广域RDMA协议(InternetWide Area RDMA Protocol,iWARP)、快速UDP互联网连接(quick UDP InternetConnection,QUIC)、基于聚合以太网的RDMA(RDMA over Converged Ethernet,RoCE)、快速外围组件互连(Peripheral Component Interconnect express,PCIe)、英特尔QuickPath互连(QuickPath Interconnect,QPI)、英特尔超级路径互连(Ultra Path Interconnect,UPI)、英特尔片上系统架构(Intel On-Chip System Fabric,IOSF)、Omnipath、计算快速链路(Compute Express Link,CXL)、HyperTransport、高速架构、NVLink、高级微控制器总线体系结构(Advanced Microcontroller Bus Architecture,AMBA)互连、OpenCAPI、Gen-Z、加速器缓存相干互连(Cache Coherent Interconnect for Accelerator,CCIX)、3GPP长期演进(Long Term Evolution,LTE)(4G)、3GPP 5G、以及这些的变体。可以使用诸如基于架构的NVMe(NVMe over Fabrics,NVMe-oF)或NVMe之类的协议将数据拷贝或存储到虚拟化存储节点。
本文的示例可被实现在各种类型的计算和联网设备中,例如交换机、路由器、机架和刀片服务器,例如在数据中心和/或服务器场环境中使用的那些。数据中心和服务器场中使用的服务器包括阵列式服务器配置,例如基于机架的服务器或刀片服务器。这些服务器经由各种网络配设在通信中互连,例如将各组服务器划分为局域网(Local Area Network,LAN),在LAN之间有适当的交换和路由设施,以形成私有内联网。例如,云主机设施通常可采用具有众多服务器的大型数据中心。刀片包括单独的计算平台,该计算平台被配置为执行服务器类型的功能,即,“卡上服务器”。因此,刀片包括传统服务器所共有的组件,包括主印刷电路板(主板),其提供内部布线(即,总线),用于耦合适当的集成电路(integratedcircuit,IC)和安放到板上的其他组件。
各种示例可用于支持使用有线或无线协议(例如,3GPP长期演进(Long TermEvolution,LTE)(4G)或者3GPP 5G)的通信的基站、场内数据中心、场外数据中心、边缘网络元件、边缘服务器和交换机、雾网络元件、和/或混合数据中心(例如,使用虚拟化、云和软件定义联网来跨物理数据中心和分布式多云环境递送应用工作负载的数据中心)。
本文的示例可被实现在各种类型的计算和联网设备中,例如交换机、路由器、机架和刀片服务器,例如在数据中心和/或服务器场环境中使用的那些。数据中心和服务器场中使用的服务器包括阵列式服务器配置,例如基于机架的服务器或刀片服务器。这些服务器经由各种网络配设在通信中互连,例如将各组服务器划分为局域网(Local Area Network,LAN),在LAN之间有适当的交换和路由设施,以形成私有内联网。例如,云主机设施通常可采用具有众多服务器的大型数据中心。刀片包括单独的计算平台,该计算平台被配置为执行服务器类型的功能,即,“卡上服务器”。因此,每个刀片包括传统服务器所共有的组件,包括主印刷电路板(主板),其提供内部布线(即,总线),用于耦合适当的集成电路(IC)和安放到板上的其他组件。
在一些示例中,可联系基站(例如,3G、4G、5G等等)、宏基站(例如,5G网络)、微微站(例如,IEEE 802.11兼容的接入点)、纳米站(例如,用于点到多点(Point-to-MultiPoint,PtMP)应用)来使用本文描述的网络接口和其他示例。
可以利用硬件元素、软件元素或者两者的组合来实现各种示例。在一些示例中,硬件元素可包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器,等等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组,等等。在一些示例中,软件元素可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或者这些的任何组合。确定一示例是否利用硬件元素和/或软件元素来实现可按照给定的实现方式所期望的根据任何数目的因素而变化,例如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束。处理器可以是硬件状态机、数字控制逻辑、中央处理单元或者任何硬件、固件和/或软件元素的一个或多个组合。
一些示例可以利用制品或者至少一个计算机可读介质来实现或者被实现为制品或者至少一个计算机可读介质。计算机可读介质可包括非暂态存储介质来存储逻辑。在一些示例中,非暂态存储介质可包括一种或多种类型的能够存储电子数据的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可改写存储器,等等。在一些示例中,逻辑可包括各种软件元素,例如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或者这些的任何组合。
根据一些示例,计算机可读介质可包括非暂态存储介质来存储或维护指令,这些指令当被机器、计算设备或系统执行时,使得该机器、计算设备或系统执行根据描述的示例的方法和/或操作。指令可包括任何适当类型的代码,例如源代码、经编译的代码、经解释的代码,可执行代码、静态代码、动态代码,等等。可根据预定的计算机语言、方式或语法来实现指令,用于指示机器、计算设备或系统执行特定的功能。可利用任何适当的高级别的、低级别的、面向对象的、视觉的、编译的和/或解释的编程语言来实现指令。
至少一个示例的一个或多个方面可由存储在至少一个机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些指令当被机器、计算设备或系统读取时,使得该机器、计算设备或系统制作逻辑来执行本文描述的技术。这种被称为“IP核心”的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。
短语“一个示例”或者“一示例”的出现不一定全都指的是同一示例或实施例。本文描述的任何方面可以与本文描述的任何其他方面或类似方面相组合,无论这些方面是否是针对同一附图或元素来描述的。附图中描绘的块功能的分割、省略或包括并不推断出用于实现这些功能的硬件组件、电路、软件和/或元件在示例中一定会被分割、省略或包括。
可利用表述“耦合”和“连接”以及其衍生词来描述一些示例。这些术语并不一定打算是彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可指示出两个或更多个元素与彼此发生直接物理或电气接触。然而,术语“耦合”也可以指两个或更多个元素没有与彼此发生直接接触,但仍与彼此合作或交互。
术语“第一”、“第二”之类的在本文中并不表示任何顺序、数量或重要性,而是用来区分一个元素与另一个元素。本文的术语“一”并不表示对数量的限制,而是表示至少一个被提及的项目的存在。本文提到信号时使用的术语“断言”指的是该信号的一种状态,在这种状态下,信号是有效的,并且该状态可以通过向该信号施加任何逻辑电平(无论是逻辑0还是逻辑1)来实现。术语“随后”或“之后”可以指紧随在后或者跟随在某个或某些其他事件之后。根据替换示例,也可以执行其他操作序列。此外,取决于特定的应用,可以添加或去除额外的操作。可以使用变化的任何组合,并且受益于本公开的本领域普通技术人员将会理解其许多变化、修改和替换示例。
诸如短语“X、Y或Z中的至少一者”这样的析取语言,除非另有具体声明,否则在上下文内被理解为一般用来陈述一项目、术语等等可以是X、Y或Z,或者其任何组合(例如,X、Y和/或Z)。从而,这种析取语言一般不打算也不应当暗示某些示例要求至少一个X、至少一个Y或者至少一个Z的每一者存在。此外,除非另有具体声明,否则诸如短语“X、Y和Z中的至少一者”这样的连接性语言也应当被理解为指X、Y、Z或者其任何组合,包括“X、Y和/或Z。”
下面提供本文公开的设备、系统和方法的说明性示例。设备、系统和方法的示例可包括下面描述的示例中的任何一个或多个,以及其任何组合。
示例1包括一个或多个示例以及一种方法,该方法包括:通过以下操作来处理繁重流的封包:在第一组一个或多个处理单元中执行繁重流检测,并且由第二组一个或多个处理单元执行对所述繁重流的封包的处理,其中,所述第一组一个或多个处理单元和所述第二组一个或多个处理单元是不同的。
示例2包括一个或多个示例,并且包括将指向与所述繁重流相关联的封包的指针分配到负载平衡器的第一组一个或多个队列,并且所述负载平衡器至少部分基于与所述繁重流相关联的封包的封包接收率将与所述繁重流相关联的封包分配到所述第二组一个或多个处理单元中的一个或多个处理单元。
示例3包括一个或多个示例,并且包括所述第一组一个或多个处理单元中的至少一个处理单元将指向非繁重流的封包的指针提供给所述负载平衡器的第二组一个或多个队列。
示例4包括一个或多个示例,其中,所述负载平衡器包括动态负载平衡器。
示例5包括一个或多个示例,其中,所述执行繁重流检测包括在网络接口设备处确定流中的封包的近似计数或者封包的总字节计数并且使用所述第一组一个或多个处理单元执行二叉树遍历,并且其中,所述第一组一个或多个处理单元中的至少一个处理单元为一个或多个流管理散列表支持的二叉树。
示例6包括一个或多个示例,其中,所述执行繁重流检测包括使用所述网络接口设备和所述第一组一个或多个处理单元来执行Nitrosketch方案。
示例7包括一个或多个示例,其中,使用接收侧缩放(RSS)在所述第一组一个或多个处理单元之间分发所述封包。
示例8包括一个或多个示例,并且包括所述第二组一个或多个处理单元将指向经处理的封包的指针提供给负载平衡器,并且所述负载平衡器执行对所述经处理的封包的重排序并且使得所述经处理的封包可供第三组一个或多个处理单元访问。
示例9包括一个或多个示例,并且包括一种装置,该装置包括:设备接口;第一组一个或多个处理单元;以及第二组一个或多个处理单元,其中:所述第一组一个或多个处理单元对于流的封包执行繁重流检测并且所述第二组一个或多个处理单元执行对繁重流的封包的处理,其中,所述第一组一个或多个处理单元和所述第二组一个或多个处理单元是不同的。
示例10包括一个或多个示例,其中:所述第一组一个或多个处理单元将指向与所述繁重流相关联的封包的指针分配到负载平衡器的第一组一个或多个队列,并且所述负载平衡器至少部分基于与所述繁重流相关联的封包的封包接收率将与所述繁重流相关联的封包分配到所述第二组一个或多个处理单元中的一个或多个处理单元。
示例11包括一个或多个示例,其中:所述第一组一个或多个处理单元中的至少一个处理单元将指向非繁重流的封包的指针提供给所述负载平衡器的第二组一个或多个队列。
示例12包括一个或多个示例,其中,执行繁重流检测包括在网络接口设备处确定流中的封包的计数并且使用所述第一组一个或多个处理单元来执行二叉树遍历。
示例13包括一个或多个示例,其中,执行繁重流检测包括使用网络接口设备和所述第一组一个或多个处理单元来执行Nitrosketch方案。
示例14包括一个或多个示例,其中,使用接收侧缩放(RSS)在所述第一组一个或多个处理单元之间分发所述封包。
示例15包括一个或多个示例,其中,所述第二组一个或多个处理单元将指向经处理的封包的指针提供给负载平衡器,并且所述负载平衡器执行对所述经处理的封包的重排序并且使得所述经处理的封包可供第三组一个或多个处理单元访问。
示例16包括一个或多个示例,并且包括计算机可读介质,包括存储在其上的指令,所述指令如果被计算系统执行,则使得所述计算系统:使用第一组一个或多个处理单元来对于流的封包执行繁重流检测并且使用第二组一个或多个处理单元来执行对繁重流的封包的处理,其中,所述第一组一个或多个处理单元和第二组一个或多个处理单元是不同的。
示例17包括一个或多个示例,其中,所述第一组一个或多个处理单元将指向与所述繁重流相关联的封包的指针分配到负载平衡器的第一组一个或多个队列,并且所述负载平衡器至少部分基于与所述繁重流相关联的封包的封包接收率将与所述繁重流相关联的封包分配到所述第二组一个或多个处理单元中的一个或多个处理单元。
示例18包括一个或多个示例,其中,所述第一组一个或多个处理单元中的至少一个处理单元将指向非繁重流的封包的指针提供给所述负载平衡器的第二组一个或多个队列,并且执行繁重流检测包括在网络接口设备处确定流中的封包的计数并且使用所述第一组一个或多个处理单元来执行二叉树遍历。
示例19包括一个或多个示例,其中,执行繁重流检测包括使用所述网络接口设备和所述第一组一个或多个处理单元来执行Nitrosketch方案。
示例20包括一个或多个示例,其中:所述第二组一个或多个处理单元将指向经处理的封包的指针提供给负载平衡器,并且所述负载平衡器执行对所述经处理的封包的重排序并且使得所述经处理的封包可供第三组一个或多个处理单元访问。
Claims (20)
1.一种方法,包括:
通过以下操作来处理繁重流的封包:
在第一组一个或多个处理单元中执行繁重流检测,并且
由第二组一个或多个处理单元执行对所述繁重流的封包的处理,其中,所述第一组一个或多个处理单元和所述第二组一个或多个处理单元是不同的。
2.如权利要求1所述的方法,包括:
将指向与所述繁重流相关联的封包的指针分配到负载平衡器的第一组一个或多个队列,并且
所述负载平衡器至少部分基于与所述繁重流相关联的封包的封包接收率,将与所述繁重流相关联的封包分配到所述第二组一个或多个处理单元中的一个或多个处理单元。
3.如权利要求2所述的方法,包括:
所述第一组一个或多个处理单元中的至少一个处理单元将指向非繁重流的封包的指针提供给所述负载平衡器的第二组一个或多个队列。
4.如权利要求2所述的方法,其中,所述负载平衡器包括动态负载平衡器。
5.如权利要求1-4中任一项所述的方法,其中,所述执行繁重流检测包括:在网络接口设备处确定流中的封包的近似计数或者封包的总字节计数,并且使用所述第一组一个或多个处理单元执行二叉树遍历,并且其中,所述第一组一个或多个处理单元中的至少一个处理单元为一个或多个流管理散列表支持的二叉树。
6.如权利要求5所述的方法,其中,所述执行繁重流检测包括:使用所述网络接口设备和所述第一组一个或多个处理单元来执行Nitrosketch方案。
7.如权利要求1所述的方法,其中,使用接收侧缩放(RSS)在所述第一组一个或多个处理单元之间分发所述封包。
8.如权利要求1-7中任一项所述的方法,包括:
所述第二组一个或多个处理单元将指向经处理的封包的指针提供给负载平衡器,并且
所述负载平衡器执行对所述经处理的封包的重排序,并且使得所述经处理的封包可供第三组一个或多个处理单元访问。
9.一种装置,包括:
设备接口;
第一组一个或多个处理单元;以及
第二组一个或多个处理单元,其中:
所述第一组一个或多个处理单元对于流的封包执行繁重流检测,并且
所述第二组一个或多个处理单元执行对繁重流的封包的处理,其中,所述第一组一个或多个处理单元和所述第二组一个或多个处理单元是不同的。
10.如权利要求9所述的装置,其中:
所述第一组一个或多个处理单元将指向与所述繁重流相关联的封包的指针分配到负载平衡器的第一组一个或多个队列,并且
所述负载平衡器至少部分基于与所述繁重流相关联的封包的封包接收率,将与所述繁重流相关联的封包分配到所述第二组一个或多个处理单元中的一个或多个处理单元。
11.如权利要求10所述的装置,其中:
所述第一组一个或多个处理单元中的至少一个处理单元将指向非繁重流的封包的指针提供给所述负载平衡器的第二组一个或多个队列。
12.如权利要求9-11中任一项所述的装置,包括网络接口设备,其中,执行繁重流检测包括:在所述网络接口设备处确定流中的封包的计数,并且使用所述第一组一个或多个处理单元来执行二叉树遍历。
13.如权利要求9所述的装置,包括网络接口设备,其中,执行繁重流检测包括:使用所述网络接口设备和所述第一组一个或多个处理单元来执行Nitrosketch方案。
14.如权利要求9所述的装置,其中,使用接收侧缩放(RSS)在所述第一组一个或多个处理单元之间分发所述封包。
15.如权利要求9-14中任一项所述的装置,其中:
所述第二组一个或多个处理单元将指向经处理的封包的指针提供给负载平衡器,并且
所述负载平衡器执行对所述经处理的封包的重排序,并且使得所述经处理的封包可供第三组一个或多个处理单元访问。
16.一种计算机可读介质,包括存储在其上的指令,所述指令如果被计算系统执行,则使得所述计算系统:
使用第一组一个或多个处理单元来对于流的封包执行繁重流检测,并且
使用第二组一个或多个处理单元来执行对繁重流的封包的处理,其中,所述第一组一个或多个处理单元和所述第二组一个或多个处理单元是不同的。
17.如权利要求16所述的计算机可读介质,其中:
所述第一组一个或多个处理单元将指向与所述繁重流相关联的封包的指针分配到负载平衡器的第一组一个或多个队列,并且
所述负载平衡器至少部分基于与所述繁重流相关联的封包的封包接收率,将与所述繁重流相关联的封包分配到所述第二组一个或多个处理单元中的一个或多个处理单元。
18.如权利要求16-17中任一项所述的计算机可读介质,其中:
所述第一组一个或多个处理单元中的至少一个处理单元将指向非繁重流的封包的指针提供给所述负载平衡器的第二组一个或多个队列,并且
执行繁重流检测包括:在网络接口设备处确定流中的封包的计数并且使用所述第一组一个或多个处理单元来执行二叉树遍历。
19.如权利要求18所述的计算机可读介质,其中,执行繁重流检测包括:使用所述网络接口设备和所述第一组一个或多个处理单元来执行Nitrosketch方案。
20.如权利要求16-19中任一项所述的计算机可读介质,其中:
所述第二组一个或多个处理单元将指向经处理的封包的指针提供给负载平衡器,并且
所述负载平衡器执行对所述经处理的封包的重排序,并且使得所述经处理的封包可供第三组一个或多个处理单元访问。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNPCT/CN2021/110831 | 2021-08-05 | ||
CN2021110831 | 2021-08-05 | ||
US17/471,889 US20230082780A1 (en) | 2021-08-05 | 2021-09-10 | Packet processing load balancer |
US17/471,889 | 2021-09-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115858139A true CN115858139A (zh) | 2023-03-28 |
Family
ID=85660260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210782747.1A Pending CN115858139A (zh) | 2021-08-05 | 2022-07-05 | 封包处理负载平衡器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115858139A (zh) |
-
2022
- 2022-07-05 CN CN202210782747.1A patent/CN115858139A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934330B2 (en) | Memory allocation for distributed processing devices | |
US20200322287A1 (en) | Switch-managed resource allocation and software execution | |
US20200241927A1 (en) | Storage transactions with predictable latency | |
US20220351326A1 (en) | Direct memory writes by network interface of a graphics processing unit | |
EP3706394A1 (en) | Writes to multiple memory destinations | |
US20200136971A1 (en) | Hash-table lookup with controlled latency | |
US11909642B2 (en) | Offload of acknowledgements to a network device | |
US20210359955A1 (en) | Cache allocation system | |
CN117651936A (zh) | 网络层7卸载到服务网格的基础设施处理单元 | |
US20220210097A1 (en) | Data access technologies | |
US20220385534A1 (en) | Control plane isolation | |
CN117157957A (zh) | 交换机引发的拥塞消息 | |
CN117529904A (zh) | 分组格式调整技术 | |
US20220138021A1 (en) | Communications for workloads | |
US20240195749A1 (en) | Path selection for packet transmission | |
US20230082780A1 (en) | Packet processing load balancer | |
US20220321491A1 (en) | Microservice data path and control path processing | |
US20230109396A1 (en) | Load balancing and networking policy performance by a packet processing pipeline | |
US20220291928A1 (en) | Event controller in a device | |
US20220278946A1 (en) | Programmable packet processing pipeline with offload circuitry | |
US20220276809A1 (en) | Interface between control planes | |
US20220006750A1 (en) | Packet transmission scheduling fairness | |
CN115705303A (zh) | 数据访问技术 | |
CN117642723A (zh) | 用于横向扩展存储装置的启动器侧卸载 | |
CN115858139A (zh) | 封包处理负载平衡器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |