用于通过分布式算法为可编程数据平面提供LPM实现的系统技术方案

技术编号:37163254 阅读:15 留言:0更新日期:2023-04-06 22:30
描述了可编程IO设备,包括:MPU和存储器单元。该MPU包括至少一个ALU。该存储器单元具有存储在其上的指令,当该指令由相应的可编程IO设备执行时,使该可编程IO设备执行操作。这些操作包括:从入站接口接收包括用于至少一个基于范围的元素的分组数据的分组;经由MPU,通过使用分组数据在间隔二叉搜索树上执行经修改的二叉搜索以确定LPM来确定查找结果,其中该间隔二叉搜索树将至少一个基于范围的元素映射到相关联的数据元素;以及基于查找结果对分组进行分类。组进行分类。组进行分类。

【技术实现步骤摘要】
【国外来华专利技术】用于通过分布式算法为可编程数据平面提供LPM实现的系统
[0001]相关申请的交叉引用
[0002]本申请要求于2020年4月28日提交的第16/860,650号美国申请的权益,并且是该第16/860,650号美国申请的延续,该美国申请通过引用以其整体并入本文以用于全部目的。
[0003]背景
[0004]网络流量是指在给定时间点移动通过网络的数据量。网络数据大多封装在网络分组(packet)中,这些分组提供了网络中的负载。网络流量是网络流量测量、网络流量控制和仿真的主要组成部分。网络流量的适当组织有助于确保给定网络中的服务质量。
[0005]概述
[0006]计算环境可以包括主机,诸如服务器,运行一个或更多个进程的计算机,诸如虚拟机或容器。主机和/或进程可以被配置成通过计算网络与其他进程或设备通信。主机系统经由输入/输出(IO)设备(例如,网络接口卡(NIC))与计算网络对接(interface)。
[0007]计算机系统通过指定的一组设备寄存器和基于存储器的数据结构与IO设备对接。对于给定的IO设备,这些寄存器和数据结构通常是固定的,允许特定的设备驱动程序在计算机系统上运行并控制IO设备。在数据通信网络中,网络接口通常是固定定义的控制结构、描述符、寄存器等。联网数据和控制结构是基于存储器的,并使用直接存储器访问(DMA)语义访问存储器。诸如交换机、路由设备的网络系统在一组输入接口中的一个处接收消息或分组,并将它们转发到一组输出接口中的一个或更多个。用户通常要求这样的路由设备尽可能快地操作,以便跟上高速率的传入消息。与网络系统相关联的一个挑战涉及提供灵活的网络接口,以便适应网络设备结构和特征集的变化、各种协议、操作系统、应用以及设备模型的快速发展。
[0008]通信服务提供商正大力投资于大型和超大规模数据中心,以交付内容、数据处理和通信服务。交付这些服务的应用必须能够访问高速存储装置和网络,必须是安全的,并且在基于软件定义网络(SDN)的虚拟化环境中运行。虚拟化软件、负载平衡、加密、深度分组检查(DPI)和分组处理都需要许多中央处理器(CPU)周期,并且可以占用多个处理器核心,减少了应用可用的核心数量。
[0009]NIC是一种插入到服务器或存储箱(storage box)中以实现与以太网的连接的外围部件互连高速(PCIe)扩展卡。传统的NIC支持CPU功能(诸如校验和和分割)的卸载。然而,随着由SDN和网络功能虚拟化(NFV)驱动的云数据中心联网中的近来的结构性转变,需要一类新的卸载NIC。更具体地说,随着覆盖隧道协议(诸如虚拟可扩展局域网(VXLAN)和具有复杂动作的虚拟交换)的引入,基于服务器的联网数据平面的复杂性急剧增加。附加地,增加网络接口带宽意味着在软件中执行这些功能会对CPU资源造成无法承受的负载,使运行应用的CPU很少或根本没有。此外,SDN的一个关键要求是联网数据平面必须保持可替代的,因此无法应用固定功能卸载技术。
[0010]智能NIC(也称为智能服务器适配器(ISA))不仅仅是简单的连接,还在NIC上实现了在基础NIC的情况下,CPU必须执行的网络流量处理。智能NIC可以被用于云数据中心服务
器,以通过经由IO子系统执行网络数据路径处理来卸载服务器CPU的操作,从而提高性能。例如,通过智能NIC提供的IO子系统从服务器CPU中卸载了低级别操作,显著提高了网络和应用性能。通过安装智能NIC,通信服务提供商可以在投资略微增加的情况下交付明显更好的创收服务。
[0011]随着网络和运行在网络上的协议的复杂性的增加,主机针对联网操作必须执行的处理量呈指数级增长。由于随着对更多网络带宽的需求的增加,对宝贵的主机CPU时间的需求也随之增加,这一问题被放大了。因此,越来越多地将ISA部署在数据中心中,以将这些复杂的联网任务从主机CPU中卸载。这使得主机上的应用可以使用更多的CPU。ISA包括可以被用来提供高级服务的大量状态数据的容量。ISA通常作为PCIe设备呈现给主机,但也可以作为嵌入式(bump

in

the

wire)以太网设备参与卸载主机CPU任务。高级功能可以与主机无关,因为主机通常使用机架外的驱动器与这些设备通信。ISA设备可以由不一定与主机管理员相同的管理员与主机分开管理。
[0012]此外,云客户需要巨大的规模。例如,100万互联网协议版本4(IPv4)路由和100万互联网协议版本6(IPv6)路由。换个角度来看,互联网上v4和v6路由的总数分别是795,000和75,000(2019年9月5日)。这些客户还需要100万v4策略规则和100万v6策略规则。在一些实施例中,上述IO子系统在其数据平面中包括总共192KB的三元内容可访问存储器(TCAM),这对于该规模是不够的。此外,云解决方案的功率要求小于50W,这无法支持额外的TCAM。
[0013]一些行业解决方案针对专用集成电路(ASIC)数据路径。这些解决方案主要集中在传统的数据路径设计上,因此受到其局限性的限制。这些解决方案可能采用并行或级联查找和查找之间的最小处理或不处理,并试图对IP地址空间进行切片和切块,这使得IPv6特别难以实现,浪费大量存储器,并且不具有高度可扩展性。其他解决方案可以在网络处理器核心中实现,并采用复杂的数据结构方案,这些方案需要大量的计算来处理,难以估计处理延迟的上限,并且不能满足高的线速率。对于P4可编程数据路径,这些解决方案中没有一个是最佳的,诸如所采用的是所描述的IO子系统,其中可以在每个级中执行少量的处理(例如,微小的搜索)。因此,所描述的系统采用一种解决方案,该解决方案将问题划分为可以分布在各个级之间的使用少量数据的少量处理。
[0014]附加地,由于各种原因,可以在例如数据平面路由中采用的最长前缀匹配(LPM)查找是劳动密集型的,这些原因包括下面的:LPM查找是多对一映射;可以查找的有效键在查找表中没有唯一的条目;在不将前缀扩展为其各个值的情况下,无法使用索引查找;查找表的存储和处理消耗大量存储器;不能采用尝试,因为可能有多达128个层次(IPv6)的嵌套;过多的决策级;基于步幅的算法浪费大量存储器;前缀是具有较低值(地板)和较高值(天花板)的范围,而查找应该找到查找键所属的范围;各种前缀可以具有不同的前缀长度(或范围大小);无法采用哈希查找,因为使用哪个前缀长度未知;对每个可能的前缀长度进行单独的哈希查找(总共128个)是太多的查找;表中可以存在多个重叠的前缀;查找键可以匹配多个重叠的前缀;查找需要找到查找键适合的最窄范围(最长前缀);在查找正确匹配时检查表中的所有条目;不能使用前缀的二叉搜索,因为当键匹配范围时,搜索不能停止,因为可能有更具体(更长)的匹配;三叉树和三叉搜索浪费存储器。
[0015]在某些实施例中,本文所描述的是采用IO设备以在不使用TCAM的情况下在可编程数据平面中执行用于LPM查找的分布式算法的系统。在一些实施例中,所描述的系统采用多
个级联级,其中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种可编程输入输出(IO)设备,包括:匹配处理单元(MPU),其包括至少一个算术逻辑单元(ALU);以及存储器单元,所述存储器单元上存储有指令,当所述指令由所述可编程IO设备执行时,使所述可编程IO设备执行包括以下项的操作:从入站接口接收包括用于至少一个基于范围的元素的分组数据的分组;经由所述MPU,通过使用所述分组数据在间隔二叉搜索树上执行经修改的二叉搜索以确定最长前缀匹配(LPM)来确定查找结果,其中,所述间隔二叉搜索树将所述至少一个基于范围的元素映射到相关联的数据元素;以及基于所述查找结果对所述分组进行分类。2.根据权利要求1所述的可编程IO设备,其中,当用于至少一个基于范围的元素的所述分组数据大于或等于分配给所述间隔二叉搜索树的当前选定节点的值时,所述经修改的二叉搜索沿一个方向遍历所述间隔二叉搜索树,并且当用于至少一个基于范围的元素的所述分组数据小于分配给所述当前选定节点的值时,所述经修改的二叉搜索沿相反方向遍历所述间隔二叉搜索树。3.根据权利要求2所述的可编程IO设备,其中,直到完全遍历了所述间隔二叉搜索树,才确定所述经修改的二叉搜索的查找结果。4.根据权利要求2所述的可编程IO设备,其中,所述方向和所述相反方向是根据所述经修改的二叉搜索的配置确定的。5.根据权利要求2所述的可编程IO设备,其中,所述经修改的二叉搜索在其遍历所述间隔二叉搜索树时将数据累积在结果值中。6.根据权利要求5所述的可编程IO设备,其中,仅当所述经修改的二叉搜索沿所述方向移动时,所述经修改的二叉搜索用分配给所述当前选定节点的值覆盖所述结果值,但当所述经修改的二叉搜索沿所述相反方向移动时,所述经修改的二叉搜索不替换所述结果值。7.根据权利要求1所述的可编程IO设备,其中,所述存储器单元包括多个缓存行,并且其中,通过获取存储在所述缓存行的选定一个中的数据来执行所述经修改的二叉搜索。8.根据权利要求7所述的可编程IO设备,其中,选定缓存行是基于地址计算来确定的。9.根据权利要求7所述的可编程IO设备,其中,存储器指针不存储在所述缓存行中。10.根据权利要求7所述的可编程IO设备,其中,查找结果数据不存储在用于所述间隔二叉搜索树的内部节点的缓存行中,并且其中,所述查找结果数据仅存储在用于叶节点的缓存行中。11.根据权利要求7所述的可编程IO设备,其中,存储在所述缓存行中的一个中的所述间隔二叉搜索树的各个节点作为结构成员被直接访问。12.根据权利要求7所述的可编程IO设备,其中,基于当前缓存行的地址和存储在当前缓存行中的所述间隔二叉搜索树的传出分支的索引来计算下一缓存行的地址,其中,所述传出分支的索引根据所述经修改的二叉搜索来确定。13.根据权利要求7所述的可编程IO设备,其中,执行所述经修改的二叉搜索包括执行分布式算法,所述分布式算法包括多个级联级,其中,在所述级联级中的每一个处经由所述至少一个ALU执行算术运算或逻辑运算。14.根据权利要求13所述的可编程IO设备,其中,所述算术运算包括:加、减、乘或除。
15.根据权利要求13所述的可编程IO设备,其中,所述逻辑运算包括:小于、大于或等于。16.根据权利要求13所述的可编程IO设备,其中,所述级联级使用高效的分而治之方法来对处理进行分布,所述处理在每个级处使用高指数扩展和最小处理。17.根据权利要求13所述的可编程IO设备,其中,所述间隔二叉搜索树的多个层次各自被压缩到所述缓存行的相应缓存行中,并且其中,被压缩的多个层次中的每一个在所述级联级中的一个处被处理。18.根据权利要求1所述的可编程IO设备,其中,通过以下步骤将用于所述至少一个基于范围的元素及其相关联的数据元素的配置值转换成所述间隔二叉搜索树:生成用于所述至少一个基于范围的元素的基于范围的值的数字线表示,作为基于范围的元素数字线,以及在另一数字线上生成与所述基于范围的值中的每一个相关联的相应数据元素值,作为表示搜索键的整个数字空间的键空间数字线;将所述基于范围的元素数字线中的每一个投影到所述键空间数字线上,以标记所述基于范围的元素数字线中的每一个的起点和终点,使得所述键空间数字线被划分为不同的间隔,其中,不同的间隔中的每一个包括唯一的数据元素值,并且其中,所述唯一的数据元素值中的每一个表示在相应间隔之上的最深嵌套的基于范围的元素数字线的数据元素值;以及从所述键空间数字线上的不同间隔和与所述不同间隔中的每一个相关联的相应数据元素值导出所述间隔二叉搜索树。19.根据权利要求18所述的可编程IO设备,其中,来自所述间隔二叉搜索树的内部节点的结果数据值被推送到所述间隔二叉搜索树的叶节点。20.根据权利要求18所述的可编程IO设备,其中,在控制平面中离线确定对于所述间隔二叉搜索树的每个出口分支占优的结果数据值,其中,...

【专利技术属性】
技术研发人员:阿杰尔
申请(专利权)人:思想系统公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1