控制平面中用卸载引擎来缩放数据路径处理的系统和方法与流程



1.本公开一般涉及在网络交换机处发生的数据处理。更具体地,本公开涉及用于实现嵌入在交换机中的基于硬件的卸载引擎的系统和方法。


背景技术:



2.新计算范例的规模对边缘处的硬件架构中的数据处理提出了挑战。能耗和计算能力限制了使用如基于linux的片上系统(soc)的传统软件堆栈在边缘应用中可以实现的规模。在领域的另一边,定制集成电路或基于现场可编程门阵列(fpga)的解决方案是高效的,但与传统软件堆栈相比,提供的开发和部署灵活性非常小。
3.这种折衷存在于网络交换机上具有高速数据接口的硬件架构内部。交换机数据平面(例如执行分组转发过程和操作的硬件)可以以每秒太比特的速度运行,但灵活性有限。然而,当需要对分组进行灵活处理(例如特殊情况)时,数据平面硬件可以将这些分组导向控制平面cpu进行处理。挑战在于数据平面硬件和控制平面cpu之间的速度差异有几个数量级。随着数据平面硬件(例如交换机专用集成电路(asic))的处理速度增加,这种差异继续增加。
附图说明
4.图1图示了根据现有技术的用于由网络交换机处理分组的示例性场景。
5.图2图示了根据本技术的一个方面的用于由网络交换机处理分组的示例性场景。
6.图3图示了根据本技术的一个方面的ebpf引擎的示例性框图。
7.图4a图示了根据本技术的一个方面的ebpf引擎的示例性硬件实现。
8.图4b更详细地示出了根据本技术的一方面的功能助手逻辑。
9.图5a图示了根据本技术的一个方面的示例性网络交换机。
10.图5b示出了根据本技术的一个方面的示例性网络交换机。
11.图6呈现了图示根据本技术的一个方面的示例性分组处理操作的流程图。
12.在图中,类似的附图标记指代相同的附图元素。
具体实施方式
13.以下描述旨在使本领域技术人员能够制作和使用这些示例,并在特定应用及其要求的上下文中提供。对所公开的示例的各种修改对于本领域技术人员来说将是显而易见的,并且在不脱离本公开的精神和范围的情况下,本文定义的一般原理可以应用于其他示例和应用。因此,本公开的范围不限于所示示例,而是符合与本文公开的原理和特征一致的最宽范围。
14.所公开的示例提供了对加速cpu的辅助数据路径操作的技术问题的解决方案。虽然能够高速处理分组,但交换机asic必须将需要辅助数据路径操作的分组转发到交换机cpu,其主要处理控制路径操作并且处理速度有限。为了加速那些需要灵活数据路径操作的
分组的处理,可以提供用于cpu的基于硬件的卸载引擎(例如嵌入在交换机asic中)以允许将某些分组处理操作被卸载到硬件。在一些示例中,基于硬件的卸载引擎可以包括执行扩展伯克利分组过滤器(ebpf)指令集合的处理器核。此类处理器核不运行操作系统,因此可以被压缩并且节能。多个处理器核的并行实现允许扩展。
15.图1图示了根据现有技术的用于由网络交换机处理分组的示例性场景。在图1中,网络交换机100包括cpu 102,其通常是通用cpu,驻留在控制平面中并处理控制平面操作,诸如处理网络协议、填充路由表和做出路由决定。网络交换机100还包括驻留在数据平面中以处理高速分组转发的多个专用ic(例如结构asic芯片104、交换机端口asic芯片106和108)。请注意,每个交换机端口asic芯片(例如芯片106或108)可以控制多个端口并在端口的入口或出口时处置分组的处理。另一方面,结构asic芯片104经由结构链路110和112处理交换机端口之间的互连。
16.交换机asic(例如结构asic芯片104、交换机端口asic芯片106和108)专门设计用于提供高速分组处理能力并且通常被称为分组的“快速路径”。然而,它们在分组处理方面缺乏一定的灵活性。例如它们不具备处理异常的能力。在这种情况下,交换机asic必须将分组发送到cpu 102进行处理(例如经由cpu端口114和116)。除了处理异常之外,cpu 102还处理其他操作,诸如分组采样、安全处理、学习、度量收集等。如前所述,基于软件的处理比快速路径慢几个数量级。事实上,它通常被称为分组的“慢速路径”。除了速度较慢之外,慢速路径还存在其他问题,诸如缺乏实时保证以及无法随着交换机asic的数量线性扩展。
17.快速路径和慢速路径之间的速度不匹配以及通用cpu无法向上扩展成为提高网络交换机的分组处理速度的瓶颈。cpu经常需要限制来自交换机端口的业务,这可能会导致协议超时,从而导致性能下降。已经提出了许多解决方案来解决这个问题。一种解决方案是使用微代码来将灵活的逻辑集成到数据平面管道(例如交换机asic)中。然而,这种方案并不意味着大规模通用计算,灵活的逻辑不能在其他asic设计中被重用。另一种解决方案是在数据平面中包括cpu或微控制器,但这样做会增加设计成本,并且通常需要定制的实时操作系统(rtos)解决方案,该解决方案也缺乏可重用性和标准接口,无法与软件堆栈的更高层进行通信。
18.在本公开中包括的一些示例中,提供硬件构建块作为用于控制平面cpu的分组处理卸载引擎。硬件构建块可以跨多个设计(asic或fpga)被利用,并可以提供生产质量的开发环境。为了促进与软件堆栈更高层的交互,硬件构建块包括标准化接口。在一个示例中,硬件构建块可以包括实现扩展伯克利分组过滤器(ebpf)指令集的一个或多个核。
19.与其他指令集不同,ebpf被设计为具有在linux内核内运行安全代码的一组狭窄要求,并且因此为卸载引擎提供了特殊的优势。它具有成熟的软件堆栈(例如编译器、调试器等)和linux内核内部的黄金参考模型。内核中的ebpf应用包括跟踪、监测、安全、联网和分析。ebpf指令集由活跃的开源社区维护,架构支持硬件卸载。此外,ebpf程序非常简单且资源受限,包括4kb的指令和512字节的固定大小堆栈,但它们提供了一组标准的接口,用于与其他软件交互(例如哈希表、直方图)。资源的限制降低了硬件实现的成本。
20.图2图示了根据本技术的一个方面的用于由网络交换机处理分组的示例性场景。类似于图1中所示的交换机100,交换机200包括控制平面cpu 202和多个交换机asic,诸如结构asic 204和端口asic206和208。此外,交换机200还包括多个卸载引擎(例如卸载引擎
222和224)。这些卸载引擎位于控制平面cpu 202和端口asic之间的数据路径中。例如卸载引擎222在控制平面cpu 202和端口asic206之间的数据路径226中,并且卸载引擎224在控制平面cpu 202和端口asic 208之间的数据路径228中。这些引擎可以卸载来自控制平面cpu 202的某些分组处理操作(例如处理异常)。注意,与cpu202的基于软件的操作相比,卸载引擎是基于硬件的并且可以以更高的速度运行。
21.例如在处理入口分组时,端口asic 222可能遇到它无法处理的异常。作为响应,端口asic 222向cpu 202引导受影响的分组,请求cpu 202执行进一步、更灵活的处理。在去往cpu 202的途中,这样的分组到达卸载引擎222,该引擎已被cpu 202预先编程以对异常分组执行灵活处理。在处理之后,卸载引擎222可以将分组返回到端口asic 206以进行转发,并且还将处理结果报告给cpu 202。在某些情况下,卸载引擎222上的逻辑还可以确定某些分组需要不能由卸载引擎处理的操作,然后将允许这些分组不经处理地通过。在这种情况下,这些分组最终将由cpu 202处理。在一些示例中,用于确定分组将由卸载引擎还是由cpu 202处理的卸载引擎上的逻辑可由cpu 202编程。允许卸载引擎从cpu 202卸载某些操作减少了到达cpu 202的分组的数量,从而提高了效率。除了处理异常分组之外,还可以对卸载引擎进行编程,以从分组流中捕获分析信息并向上层软件层提供汇总数据。
22.除了端口asic和控制平面cpu 202之间的数据路径(例如路径226或228)之外,还存在对应的卸载引擎和控制平面cpu 202之间的控制路径。在图2中,控制路径(例如路径230和232)使用虚线指示。卸载引擎和控制平面cpu 202之间的控制路径允许cpu 202将程序(例如加载ebpf指令)加载到卸载引擎中(例如加载到其指令存储器中)。更具体地,cpu 202可以访问卸载引擎内的上下文或数据存储器以从存储器写入和读取状态,从而提供用于在两个方向上配置或收集数据的通道。请注意,卸载引擎与独立于编程协议的分组处理器(p4)程序不同,分组处理器(p4)程序描述转发行为但未指定控制平面的行为。
23.卸载引擎不同于嵌入式cpu,嵌入式cpu体积庞大并且消耗相对大量的能量。更具体地说,与嵌入式cpu不同,卸载引擎不运行任意操作系统(os)。相反,它们是运行至完成的简单分组处理器(例如由单个线程处理每个分组)。不运行操作系统使卸载引擎的尺寸紧凑且节能成为可能。
24.如前所述,ebpf指令在卸载引擎中实现是有利的,因为它们是受约束的集合并且能够提供标准接口。在一些示例中,控制平面cpu的卸载引擎可以包括本地执行ebpf指令的核复合体。
25.图3图示了根据本技术的一个方面的ebpf引擎的示例性框图。ebpf引擎300可以包括多个ebpf核(例如ebpf核302)、指令存储器304、上下文存储器306、控制接口308、功能助手逻辑块310和多个分组处理硬件加速器312.
26.每个ebpf核可以是执行ebpf指令的处理器,这些指令被存储在指令存储器304中。外部cpu(例如控制平面cpu)可以经由控制接口308将程序(例如ebpf指令)加载到指令存储器304中.
27.在图3所示的例子中,有多个ebpf核。请注意,因为每个ebpf核都很小(它们不需要运行操作系统,因此具有更简单的结构),所以在ebpf引擎中可以包含大量(例如数十或数百个)ebpf核300是可能的。可以使用两种不同的实现方式(并行实现和流水线实现)。在并行实现中,多个ebpf核可以并行执行相同的操作(即对不同的分组执行相同的ebpf指令)。
在流水线实现中,不同的ebpf核可以执行不同的指令(即分组的处理可能涉及多个核执行的操作)。也可以将ebpf核分成不同的组,其中一些组进行并行处理,一些组进行流水线处理。
28.外部cpu可以类似地访问上下文存储器306。在一些示例中,上下文存储器306可以存储可以由外部cpu获取的状态信息和数据。此外,上下文存储器306可以临时存储需要灵活处理的分组。例如当交换机asic确定某些分组需要超出其能力范围的处理时,交换机asic会将此类分组导向控制平面cpu。由于ebpf引擎300位于交换机asic和控制平面cpu之间的数据路径上,这些分组将首先到达ebpf引擎300并存入上下文存储器306。通过执行ebpf指令,ebpf核可以确定分组的处理应卸载到硬件或由控制平面cpu完成。如果确定分组的处理应该由控制面cpu进行,则该分组可以不经过处理通过上下文存储器306直接被发送到控制面cpu。
29.另一方面,如果确定应该将分组的处理被卸载到硬件,则分组可以由一个或多个分组处理硬件加速器312处理。
30.功能助手逻辑块310处理卸载功能,包括ebpf核和分组处理硬件加速器312之间的交互。换言之,功能助手逻辑块310通过为每个相应的硬件加速器提供硬件接口来在ebpf核和分组处理硬件加速器312之间桥接。在传统的ebpf实现中,当要执行ebpf程序之外的特定操作时,ebpf程序可以使用标准的“调用”约定来调用外部程序,诸如函数调用。这种软件行为可以在功能助手逻辑块310的帮助下由硬件模仿。更具体地说,ebpf核可以正常执行调用函数(没有任何修改)。在调用函数到达函数助手逻辑块312之后,它被解析并且从上下文存储器306中提取的相关内容(例如分组有效载荷或报头或两者)可以经由功能助手逻辑块310上的对应硬件接口来被发送到适当的硬件加速器。换言之,将分组处理操作卸载到硬件加速器312对于ebpf核可以是透明的。
31.ebpf核(例如ebpf核302)和功能助手逻辑310两者均可以访问共享存储器区域(例如指令存储器304和上下文存储器306),其中状态可以被存储和读取。存储器的布局和访问端口需要以这样的方式组织,即它们与未修改的ebpf程序的工作方式兼容,但也要到最小化硬件实现中存储器需求的方法。换句话说,ebpf程序的行为(例如它们如何访问存储器)可以与ebpf程序在linux核中执行一样。不需要修改ebpf指令。为了提高存储器效率,代替为每个核分配存储器区域,指令存储器304可以由所有ebpf核共享,如图3所示。执行相同代码的不同核可以访问存储此类代码的相同存储器区域。同时,指令存储器304也可以被配置为允许其被灵活地切片成不同的区域用于存储不同的代码。
32.分组处理硬件加速器312可以包括执行各种分组处理操作的多个硬件加速器,包括但不限于:分组的加密/解密、分组的封装/解封装、分组过滤操作(例如基于tcam的分组过滤操作)、流标识操作、数据分析操作等。
33.图4a图示了根据本技术的一个方面的ebpf引擎的示例性硬件实现。在图4a中,ebpf引擎400包括指令取指级402、指令解码级404、执行级406、存储器访问级408和写回级410。
34.指令取指级402可以包括指令存储器412和程序计数器(pcreg414)。指令存储器412存储ebpf指令集,其可由外部cpu加载和修改(例如在软件升级的情况下)。pcreg414保存呈现给指令存储器412的地址。在时钟周期期间,从指令存储器412读出指令并且进行计
算以确定下一个程序计数器。ebpf指令集包含一组有限的指令。因此,指令存储器412可以非常小(例如4kb)。
35.指令解码级404可以包括寄存器文件416、符号扩展逻辑块418和420、以及控制逻辑块422。指令(通常是64位指令)的不同位可以分别发送到寄存器文件416、符号扩展逻辑块418和420,以及控制逻辑块422。例如指令的前八位可以包括发送到控制逻辑块422的操作码,并且接下来的八位可以发送到寄存器文件416以标识要读取的两个寄存器。指令的其他位可以由符号扩展逻辑块418和420扩展。注意ebpf引擎400被设计成支持高达64位的指令。但是,lddw(从存储器加载双字)指令是规则的例外,可以是128位长。在一个示例中,128位lddw指令可以被检测并解译为两个连续的64位指令。将lddw指令解译为两条指令允许ebpf引擎400执行lddw指令而不需要对软件进行任意修改。这与修改软件指令以最大化硬件效率的传统方案不同。
36.执行级406是实际计算发生的地方并且可以包括算术逻辑单元(alu)424。为了说明的简单起见,执行级中的其他组件(例如操作数选择器)未在图4a中示出。
37.存储器访问级408是访问上下文存储器426的地方。如前所述,待处理的分组可以被暂时存储在上下文存储器426中,并且可以通过被加载到寄存器文件416来通过流水线进行处理,然后由alu424用于计算。计算的结果可以被存储在上下文存储器426中。除了上下文存储器426之外,存储器访问级406还可以包括功能助手逻辑428和加速器430。功能助手逻辑428包括到加速器430的硬件接口,从而允许卸载某些分组处理操作到加速器430。在写回级410,来自指令的处理结果将它们的结果写入寄存器文件416,其包括由功能助手逻辑428接收的结果。
38.图4b更详细地示出了根据本技术的一方面的功能助手逻辑。功能助手逻辑440可以是包括指令接口442和多个硬件接口(例如硬件接口444-452)的硬件逻辑块。指令接口442从ebpf核接收指令以及待处理的数据(例如待加密的分组)。硬件接口444-452促进功能助手逻辑440和多个硬件加速器之间的耦合,以允许将要处理的数据被发送到适当的硬件加速器进行处理。例如加密/解密加速器454通过硬件接口444耦合到功能助手逻辑440,封装/解封装加速器456通过硬件接口446耦合到功能助手逻辑440,分组过滤加速器458通过硬件接口448耦合到功能助手逻辑440,流标识加速器460经由硬件接口450耦合到功能助手逻辑440,数据分析加速器462经由硬件接口452耦合到功能助手逻辑440。每个硬件接口可以基于耦合的硬件加速器的类型和实现来进行专门设计。
39.在图2所示的示例中,卸载引擎是放置在交换机asic和对应cpu端口之间的路径(例如连接电缆)上的独立设备。请注意,在多条(例如两条)路径连接交换机asic和cpu的网络端口的罕见情况下,将需要多个卸载引擎,每个路径一个卸载引擎。这是为了确保所有引导到控制平面cpu的分组都可以在任意可能的情况下被卸载到硬件。
40.除了作为独立设备之外,卸载引擎可以被嵌入在端口asic或cpu网络端口中。图5a图示了根据本技术的一个方面的示例性网络交换机。在图5a中,网络交换机500包括控制平面cpu502和多个交换机asic芯片,诸如结构asic芯片504和端口asic芯片506和508。cpu502包括网络端口510和512,用于分别与端口asic芯片506和508通信。
41.每个端口asic不仅包括用于转发分组的标准逻辑,而且还包括ebpf引擎。例如端口asic芯片506包括ebpf引擎514和分组转发逻辑516,并且端口asic芯片508包括ebpf引擎
518和分组转发逻辑520。分组转发逻辑516和520可以包括用于转发分组的标准交换机端口逻辑。ebpf引擎514和518可以类似于图3中所示的ebpf引擎300并且可以以类似于图4a中所示的方式来实现。每个ebpf引擎都可以是端口asic芯片的集成部分。
42.图5b示出了根据本技术的一个方面的示例性网络交换机。在图5b中,网络交换机530包括控制平面cpu532和多个交换机asic芯片,诸如结构asic芯片534和端口asic芯片536和538。cpu532包括网络端口540和542,用于分别与端口asic芯片536和538通信。
43.cpu的每个网络端口不仅包括用于促进cpu和端口asic之间通信的标准逻辑,而且还包括ebpf引擎。例如网络端口540包括端口逻辑544和ebpf引擎546,网络端口542包括端口逻辑548和ebpf引擎550。端口逻辑544和548可以包括标准网络通信逻辑。ebpf引擎546和550可以类似于图3中所示的ebpf引擎300并且可以以类似于图4a中所示的方式来实现。每个ebpf引擎都可以是cpu网口的集成部分。
44.图6呈现了图示根据本技术的一个方面的示例性分组处理操作的流程图。在操作期间,网络交换机在其交换机端口之一处接收分组(操作602)。交换机端口上的标准交换机asic确定是否需要对分组进行灵活处理(操作604)。请注意,标准交换机asic被设计为根据一组预先确定的规则简单地转发分组,并且缺乏处理转发规则的某些异常或对分组执行附加操作的能力,诸如加密/解密、封装/解封装、流标识等。
45.如果不需要灵活处理,则标准交换机asic处理分组(操作606),并且交换机端口相应地转发分组(操作608)。然而,如果需要对分组进行灵活处理,则标准交换机asic将分组转发到位于标准交换机asic和控制平面cpu之间的数据路径上的ebpf引擎(操作610)。如前所述,可以修改交换机端口上的标准交换机asic以包括ebpf引擎(例如作为交换机asic内的集成逻辑块)。替代地,ebpf引擎可以是交换机asic和控制平面cpu之间路径上的独立设备,也可以被嵌入到控制平面cpu的网络端口中。
46.ebpf引擎然后可以确定控制平面cpu上的负荷是否低于预定阈值或者所需的处理是否不能被卸载到硬件(操作612)。请注意,术语“cpu负荷”通常是指正在使用或等待处理器核的程序的数目。这里,术语“负荷”可以指等待cpu处理的分组的数目。如果cpu负荷低于阈值,则ebpf引擎将分组转发到cpu(操作614)。请注意,当cpu负荷低于预定阈值时,cpu处理分组不会影响性能(即不会减慢分组速度)。另一方面,ebpf引擎中包含的硬件加速器种类可能有限,可能无法满足当前的分组处理需求(例如新型加密)。在这种情况下,控制平面cpu可以执行所需的操作。cpu随后处理该分组(操作616)并返回处理结果(操作618)。例如如果操作是对分组进行封装,则封装后的分组将由cpu返回给交换机asic。交换机端口然后转发处理的分组(操作608)。
47.另一方面,如果cpu负荷不低于阈值并且ebpf引擎确定可以将操作卸载到硬件,则ebpf引擎可以将所需的分组处理操作卸载到硬件加速器(操作620)。在一个示例中,可以卸载到硬件的操作可以包括但不限于:分组的加密/解密、分组的封装/解封装、分组过滤操作(例如基于tcam的分组过滤操作)、流标识操作(可以基于分组头执行)、数据分析操作(例如数据挖掘)等。请注意,硬件加速器是ebpf引擎的一部分,ebpf引擎中包含的函数助手逻辑块提供与硬件加速器的接口,这样,当未修改的ebpf指令调用特定函数时,操作被卸载到相应的硬件加速器。无论操作是由硬件加速器还是控制平面cpu执行,ebpf核都可以执行相同的、未修改的ebpf指令。
48.在执行操作之后,适当的硬件加速器返回分组处理结果(操作618),并且交换机端口相应地转发分组(操作608)。
49.在图3-图6所示的示例中,卸载引擎是ebpf卸载引擎,其包括执行ebpf指令的ebpf核。在实践中,卸载引擎可以实现ebpf以外的技术,只要卸载技术能够将软件操作平滑卸载到硬件加速器上即可。更具体地说,卸载引擎中包括的函数助手逻辑被设计为模仿软件的“函数调用”行为,使得当实际操作被卸载到硬件加速器时,不会对软件代码(即卸载引擎执行的指令)进行修改。这可以确保基于软件的操作和基于硬件的操作之间的平滑过渡。请注意,当软件中的助手函数发生变化时(例如每个核版本都包含更新的助手函数),卸载引擎中的函数助手逻辑需要被重新设计。然而,卸载引擎中的基本构建块可以保持不变。
50.一方面提供了一种网络交换机。网络交换机包括用于处理接收的分组的基于硬件的分组处理逻辑、处理单元和耦合到处理单元的卸载引擎。卸载引擎将从处理单元卸载与所接收的分组的子集相关联的分组处理操作。卸载引擎包括处理器核、用于执行分组处理操作的至少一个硬件分组处理加速器、以及用于在处理器核和硬件分组处理加速器之间对接的功能助手逻辑。
51.在这方面的变体中,所述卸载引擎的所述处理器核执行未修改的扩展伯克利分组过滤器(ebpf)指令,而无需实现操作系统。
52.在该方面的变体中,卸载引擎和基于硬件的分组处理逻辑位于相同的专用集成电路(asic)芯片上。
53.在这方面的变体中,处理单元包括促进处理单元和基于硬件的分组处理逻辑之间的通信的网络端口,并且卸载引擎被嵌入在网络端口中。
54.在该方面的变体中,卸载引擎包括以下中的一个或多个:分组加密/解密加速器、分组封装/解封装加速器、分组过滤加速器、流标识加速器和数据分析加速器。
55.在该方面的变体中,所述卸载引擎包括用于存储将由所述处理器核执行的指令的指令存储器,并且其中所述指令存储器可由所述处理单元访问,从而允许所述处理单元将指令加载到所述指令存储器中或升级在所述指令存储器中存储的指令。
56.在该方面的变体中,卸载引擎包括并行执行指令的多个处理器核。
57.在该方面的变体中,卸载引擎包括以流水线模式执行指令的多个处理器核。
58.在这方面的变体中,卸载引擎被配置为响应于确定处理单元的负荷低于预定阈值而不卸载分组处理操作。
59.在该方面的变体中,卸载引擎的处理器核被配置为将加载双字(lddw)指令解译为两个连续指令,从而允许lddw指令无需修改地被执行。
60.一个方面提供了一种用于由交换机处理网络分组的方法。该方法可以包括:在交换机上确定所接收的分组是否需要基于硬件的分组处理逻辑之外的分组处理操作;以及响应于分组需要进行分组处理操作,经由处理单元的卸载引擎将分组转发到交换机上的处理单元。卸载引擎包括处理器核、至少一个硬件分组处理加速器和用于在处理器核和硬件分组处理加速器之间对接的功能助手逻辑。该方法还包括经由功能助手逻辑来将分组处理操作卸载到硬件分组处理加速器。
61.在该方面的变体中,卸载分组处理操作包括由处理器核执行未修改的扩展伯克利分组过滤器(ebpf)指令。
62.在该方面的变体中,卸载引擎和基于硬件的分组处理逻辑位于相同的专用集成电路(asic)芯片上。
63.在这方面的变体中,将分组转发到处理单元包括将分组转发到处理单元上的网络端口,其中卸载引擎被嵌入在网络端口中。
64.在该方面的变体中,卸载引擎包括以下中的一个或多个:分组加密/解密加速器、分组封装/解封装加速器、分组过滤加速器、流标识加速器和数据分析加速器。
65.在该方面的变体中,该方法包括以下中的一个或多个:通过卸载引擎中的指令存储器来存储将由处理器核执行的指令;以及由处理单元将指令加载到指令存储器中;以及由处理单元对指令存储器中存储的指令进行升级。
66.在该方面的变体中,卸载引擎包括并行执行指令的多个处理器核。
67.在该方面的变体中,卸载引擎包括以流水线模式执行指令的多个处理器核。
68.在这方面的变体中,该方法包括:响应于确定处理单元的负荷低于预定阈值,绕过卸载引擎以允许处理单元执行分组处理操作。
69.在该方面的变体中,卸载引擎的处理器核被配置为将加载双字(lddw)指令解译为两个连续指令,从而允许lddw指令无需修改地被执行。
70.在详细描述部分中描述的方法和过程可以体现为代码和/或数据,其可以存储在如上所述的计算机可读存储介质中。当计算机系统读取和执行在计算机可读存储介质上存储的代码和/或数据时,计算机系统执行体现为数据结构和代码并被存储在计算机可读存储介质中的方法和过程。
71.此外,上述方法和过程可以包括在硬件模块或设备中。硬件模块或设备可以包括但不限于专用集成电路(asic)芯片、现场可编程门阵列(fpga)、在特定时间执行特定软件模块或一段代码的专用或共享处理器、以及现在已知或以后开发的其他可编程逻辑设备。当硬件模块或设备被激活时,它们执行在其中包括的方法和过程。
72.仅出于说明和描述的目的呈现示例的前述描述。它们并非旨在穷举或将本公开的范围限制为所公开的形式。因此,许多修改和变化对于本领域技术人员来说将是显而易见的。

技术特征:


1.一种网络交换机,包括:基于硬件的分组处理逻辑,用于处理接收的分组;处理单元;以及卸载引擎,被耦合到所述处理单元;其中所述卸载引擎将从所述处理单元卸载与所述接收的分组的子集相关联的分组处理操作;并且其中所述卸载引擎包括处理器核、用于执行所述分组处理操作的至少一个硬件分组处理加速器、以及用于在所述处理器核和所述硬件分组处理加速器之间进行对接的功能助手逻辑。2.根据权利要求1所述的网络交换机,其中所述卸载引擎的所述处理器核执行未修改的扩展伯克利分组过滤器ebpf指令,而无需实现操作系统。3.根据权利要求1所述的网络交换机,其中所述卸载引擎和所述基于硬件的分组处理逻辑位于相同的专用集成电路asic芯片上。4.根据权利要求1所述的网络交换机,其中所述处理单元包括促进所述处理单元和所述基于硬件的分组处理逻辑之间的通信的网络端口,并且其中所述卸载引擎被嵌入在所述网络端口中。5.根据权利要求1所述的网络交换机,其中所述卸载引擎包括以下一项或多项:分组加密/解密加速器;分组封装/解封装加速器;分组过滤加速器;流标识加速器;以及数据分析加速器。6.根据权利要求1所述的网络交换机,其中所述卸载引擎包括用于存储将由所述处理器核执行的指令的指令存储器,并且其中所述指令存储器由所述处理单元可访问,从而允许所述处理单元将指令加载到所述指令存储器中或升级在所述指令存储器中被存储的指令。7.根据权利要求1所述的网络交换机,其中所述卸载引擎包括并行执行指令的多个处理器核。8.根据权利要求1所述的网络交换机,其中所述卸载引擎包括以流水线模式执行指令的多个处理器核。9.根据权利要求1所述的网络交换机,其中所述卸载引擎被配置为响应于确定所述处理单元的负荷低于预定阈值而不卸载所述分组处理操作。10.根据权利要求1所述的网络交换机,其中所述卸载引擎的所述处理器核被配置为将加载双字lddw指令解译为两个连续指令,从而允许所述lddw指令无需修改地被执行。11.一种用于由交换机处理网络分组的方法,包括:由所述交换机上的基于硬件的分组处理逻辑确定接收的分组是否需要所述基于硬件的分组处理逻辑之外的分组处理操作;响应于所述分组需要所述分组处理操作,经由被耦合到所述处理单元的卸载引擎来将所述分组转发到所述交换机上的处理单元,其中所述卸载引擎包括处理器核、至少一个硬
件分组处理加速器、和用于在所述处理器核和所述硬件分组处理加速器之间进行对接的功能助手逻辑;以及经由所述功能助手逻辑来将所述分组处理操作卸载到所述硬件分组处理加速器。12.根据权利要求11所述的方法,其中卸载所述分组处理操作包括由所述处理器核执行未修改的扩展伯克利分组过滤器ebpf指令。13.根据权利要求11所述的方法,其中所述卸载引擎和所述基于硬件的分组处理逻辑位于相同的专用集成电路asic芯片上。14.根据权利要求11所述的方法,其中将所述分组转发到所述处理单元包括将所述分组转发到所述处理单元上的网络端口,其中所述卸载引擎被嵌入在所述网络端口中。15.根据权利要求11所述的方法,其中所述卸载引擎包括以下一项或多项:分组加密/解密加速器;分组封装/解封装加速器;分组过滤加速器;流标识加速器;以及数据分析加速器。16.根据权利要求11所述的方法,还包括以下一项或多项:由所述卸载引擎中的指令存储器存储要由所述处理器核执行的指令;由所述处理单元将指令加载到所述指令存储器中;以及由所述处理单元升级在所述指令存储器中被存储的指令。17.根据权利要求11所述的方法,其中所述卸载引擎包括并行执行指令的多个处理器核。18.根据权利要求11所述的方法,其中所述卸载引擎包括以流水线模式执行指令的多个处理器核。19.根据权利要求11所述的方法,还包括:响应于确定所述处理单元的负荷低于预定阈值,绕过所述卸载引擎以允许所述处理单元执行所述分组处理操作。20.根据权利要求11所述的方法,其中所述卸载引擎的所述处理器核被配置为将加载双字lddw指令解译为两个连续指令,从而允许所述lddw指令无需修改地被执行。

技术总结


本公开的实施例涉及控制平面中使用卸载引擎来缩放数据路径处理的系统和方法。一个方面提供了一种网络交换机。网络交换机包括用于处理接收的分组的基于硬件的分组处理逻辑、处理单元和耦合到处理单元的卸载引擎。卸载引擎将从处理单元卸载与所接收的分组的子集相关联的分组处理操作。卸载引擎包括处理器核、用于执行分组处理操作的至少一个硬件分组处理加速器、以及用于在处理器核和硬件分组处理加速器之间对接的功能助手逻辑。速器之间对接的功能助手逻辑。速器之间对接的功能助手逻辑。


技术研发人员:

D

受保护的技术使用者:

慧与发展有限责任合伙企业

技术研发日:

2021.10.28

技术公布日:

2022/12/22

本文发布于:2024-09-24 04:16:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/45371.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   指令   引擎   交换机
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议