【技术实现步骤摘要】
【国外来华专利技术】用分布式LPM实现的高度可扩展算法构建数据结构的系统
[0001]相关申请的交叉引用
[0002]本申请要求于2020年8月21日提交的美国申请号17/000,172的利益,该美国申请的内容出于所有目的通过引用并入本文。
[0003]背景
[0004]网络流量是指在给定时间点移动通过网络的数据量。网络数据大多封装在网络分组(packet)中,这些分组提供了网络中的负载。网络流量是网络流量测量、网络流量控制和仿真的主要组成部分。网络流量的适当组织有助于确保给定网络中的服务质量。
[0005]概述
[0006]计算环境可以包括主机,诸如服务器,运行一个或更多个进程的计算机,诸如虚拟机或容器。主机和/或进程可以被配置成通过计算网络与其他进程或设备通信。主机系统经由输入/输出(IO)设备(例如,网络接口卡(NIC))与计算网络对接(interface)。
[0007]计算机系统通过指定的一组设备寄存器和基于存储器的数据结构与IO设备对接。对于给定的IO设备,这些寄存器和数据结构通常是固定的,允许特定的设备驱动器程序在计 ...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】1.一种可编程输入输出(IO)设备,包括:存储器单元,所述存储器单元具有存储在其上的指令,所述指令当由所述可编程IO设备执行时,使所述可编程IO设备执行操作,以提供控制平面来对数据转发硬件编程,所述操作包括:确定用于网络的一组基于范围的元素;根据所述基于范围的元素之间的全局顺序,对所述一组基于范围的元素进行排序;从排序后的所述基于范围的元素生成间隔表;从所述间隔表生成间隔二叉搜索树;将存储在所述间隔二叉搜索树的内部级的子树中的数据传播到所述间隔二叉搜索树的最后级的子树,使得所述内部级不包括数据;将所述间隔二叉搜索树转换为Pensando树;基于从中访问每个层次的级,将所述Pensando树的多个层次压缩成缓存行;以及在所述存储器单元中组装所述缓存行,使得每个级能够使用所述缓存行中的当前缓存行的地址和在当前级的子树的传出分支编号来计算下一级要获取的所述缓存行中的下一个缓存行的地址,其中,基于所述Pensando树对在数据平面中接收的分组进行分类,而不在所述缓存行中存储存储器地址。2.根据权利要求1所述的可编程IO设备,包括至少一个高级精简指令集计算机(RISC)机器(ARM)处理器,其中存储在所述存储器单元上的所述指令由所述至少一个ARM处理器执行。3.根据权利要求2所述的可编程IO设备,其中,所述控制平面经由所述至少一个ARM处理器来执行。4.根据权利要求1所述的可编程IO设备,包括匹配处理单元(MPU),其中所述MPU基于所述Pensando树的经修改的二叉搜索对在所述数据平面中接收的所述分组进行分类,以确定最长前缀匹配(LPM)。5.根据权利要求4所述的可编程IO设备,其中,所述MPU执行多个级联级以执行所述经修改的二叉搜索。6.根据权利要求5所述的可编程IO设备,其中,所述MPU包括至少一个算术逻辑单元(ALU),并且其中所述多个级联级中的每一个通过所述ALU执行算术运算。7.根据权利要求4所述的可编程IO设备,其中,直到所述Pensando树被完全遍历,才确定所述经修改的二叉搜索的查找结果。8.根据权利要求4所述的可编程IO设备,其中,存储在所述缓存行中的一个缓存行中的所述Pensando树的单独的节点作为结构成员被直接访问。9.根据权利要求4所述的可编程IO设备,其中,基于当前缓存行的地址和存储在所述当前缓存行中的所述Pensando树的传出分支的索引来计算下一个缓存行的所述地址,其中,所述传出分支的所述索引根据所述经修改的二叉搜索来确定。10.根据权利要求4所述的可编程IO设备,其中,所述经修改的二叉搜索是通过获取存储在所述缓存行中的选定的缓存行中的数据来执行的。11.根据权利要求10所述的可编程IO设备,其中,所述选定的缓存行是基于地址计算来确定的。
12.根据权利要求1所述的可编程IO设备,其中,经由栈从排序后的所述一组基于范围的元素生成所述间隔表。13.根据权利要求1所述的可编程IO设备,其中,根据排序算法对所述一组基于范围的元素进行排序,所述排序算法接收所述一组基于范围的元素并根据所述全局顺序确定所述一组基于范围的元素的有序版本。14.根据权利要求1所述的可编程IO设备,其中,根据线性算法在所述存储器单元中组装所述缓存行。15.根据权利要求14所述的可编程IO设备,其中,在所述存储器单元中组装所述缓存行不需要存储器指针。16.根据权利要求14所述的可编程IO设备,其中,所述线性算法包括:对于所述Pensando树的所述级中的每一个级,选择所述缓存行中的第一缓存行作为该级的当前缓存行;将所有所述级的当前缓存行初始化为相应的最大值;使用默认结果数据初始化所述最后级的当前缓存行的默认结果数据;以及按升序遍历所述间隔表,其中所述间隔表中的每个条目包括间隔值和结果数据,对于每个被遍历的条目:当所述最后级的当前缓存行未满时,将所述间隔值和所述结果数据添加到所述最后级的所述当前缓存行;以及当所述最后级的所述当前缓存行已满时:将所述间隔值递归地提升到前一个级或多个级;更新所述当前缓存行,以表示用于所述前一个级或多个级的将在其中存储下一个数值上更高的间隔值的缓存行;使用最大值重新初始化表示用于该级的下一个数值上更高的缓存行的更新的当前缓存行;以及将用于所述最后级的重新初始化的当前缓存行的所述默认结果数据设置为刚刚提升的节点的所述结果数据。17.根据权利要求16所述的可编程IO设备,其中,所述第一缓存行存储数值上最...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。