一种流表混合排序的实现方法与流程

文档序号:25520947发布日期:2021-06-18 20:08阅读:69来源:国知局
一种流表混合排序的实现方法与流程

本发明属于芯片资源技术领域,具体涉及一种流表混合排序的实现方法。



背景技术:

目前,交换机中的流表都是一整块block(为芯片存储流表的一个基本单元)给某个key(流表规则)使用,比如一块block的宽度为160bits,深度为1024。如果160bits的key使用需要1块block,320bits的key使用需要2块,480bits的key使用需要3块,具体如图1所示。

但是,实际应用场景中,160bits、320bits和480bits的key都是会使用到的,如果交换机中320bits和480bits的key没有占满整个block,那么空余的部分就浪费掉了,即不能充分利用芯片资源。

因此,针对上述技术问题,有必要提供一种可充分利用芯片资源的流表规则使用方案。



技术实现要素:

有鉴于此,本发明的目的在于提供一种流表混合排序的实现方法。

为了实现上述目的,本发明一实施例提供的技术方案如下:

一种流表混合排序的实现方法,包括:

s100,将芯片内的多块流表存储单元按照流表规则的大小分区,分区使得同一个所述流表存储单元给相同大小的流表规则使用,或者给不同大小的流表规则使用;

s200,对于与流表存储单元的宽度相同的流表规则,确定该流表规则对应的多块流表存储单元的匹配优先级;

s300,芯片在入端口根据报文信息产生流表规则类型,根据所述流表规则类型做流表查找,查找对应区域的流表存储单元,并判断是否查找到。

一实施例中,所述s200包括:芯片内抽象出一个虚拟流表存储单元,由所述虚拟流表存储单元管理和分配对应区域的多块流表存储单元的索引,并由所述索引确定该区域的多块流表存储单元的优先级。

一实施例中,索引最小的流表存储单元的优先级最高。

一实施例中,所述s200中,不同大小的流表规则均分别在各自的区域内排序。

一实施例中,所述s300包括:

s301,芯片出流表的查找类型和查找的流表存储单元的编号;

s302,根据报文信息产生流表规则类型,再根据流表规则类型做流表tcam查找,所述流表规则类型包括流表规则的大小;

s303,对于不同大小的流表规则,根据预先设置的所述查找类型和编号,查找对应的流表存储单元。

一实施例中,所述s303中,对于与流表存储单元的宽度相同的流表规则,则根据预先配置的优先级,选择最高优先级的流表存储单元作为最终匹配结果。

一实施例中,所述s303中,对于除与流表存储单元的宽度相同的流表规则外的其他大小的流表规则,则连续查找对应区域的多块流表存储单元,若多块流表存储单元相同索引的匹配规则均匹配,则判断匹配。

一实施例中,所述s301之前还包括:在芯片的多块流表存储单元上配置多个类型的流表规则需要查找的至少一个流表存储单元以及所述至少一个流表存储单元之间的优先级。

本发明具有以下有益效果:本发明可以实现流表混合排序,使得同一块block中同时存在多个大小的流表规则key,充分利用芯片资源。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有单一大小的流表规则分布的示意图;

图2是本发明方法的流程示意图;

图3是本发明流表规则(160/320/480)混合分布的示意图;

图4是本发明流表规则(160/320)混合分布的示意图;

图5是本发明流表规则(160/480)混合分布的示意图;

图6是本发明流表规则(320/480)混合分布的示意图;

图7是本发明虚拟流表存储单元的示意图;

图8是本发明芯片查找流程示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

如图2所示,本发明所揭示的一种流表混合排序的实现方法,包括以下步骤:

s100,将芯片内的多块流表存储单元按照流表规则的大小分区,分区使得同一个所述流表存储单元给相同大小的流表规则使用,或者给不同大小的流表规则使用。

具体地,将多块流表存储单元按照流表规则的大小分区,区域的边界可以根据实际情况进行调整。如图3所示,以交换机中具有三块流表存储单元为例,分别是block0、block1和block2,每个block的宽度均为160bits,深度为1024,对于160bits的流表规则,分布于block0、block1和block2,对于320bits的流表规则,同时占用block0、block1,对于480bits的流表规则,同时占用block0、block1和block2。如图4所示,为160bits和320bits流表规则的混合,对于160bits的流表规则,分布于block0和block1,对于320bits的流表规则,同时占用block0、block1。如图5所示,为160bits和480bits流表规则的混合,对于160bits的流表规则,分布于block0、block1和block2,对于480bits的流表规则,同时占用block0、block1和block2。如图6所示,为320bits和480bits流表规则的混合,对于320bits的流表规则,分布于block0和block1,对于480bits的流表规则,同时占用block0、block1和block2。

s200,对于与流表存储单元的宽度相同的流表规则,确定该流表规则对应的多块流表存储单元的匹配优先级。

本发明芯片中,对不同大小(size)的流表规则的优先级是分开排序的,对于与流表存储单元的宽度相同的流表规则,如上述160bits的流表规则,是在虚拟流表存储单元中排序的,对于除与流表存储单元的宽度相同的流表规则外的其他大小的流表规则,则分别在各自的区域内排序。

具体地,对于与流表存储单元的宽度相同的流表规则,如上述举例中的对于160bits的流表规则,如图7所示,本实施例中,芯片内抽象出一个虚拟流表存储单元,由该虚拟流表存储单元管理和分配对应区域的多块流表存储单元的索引,并由索引确定该区域的多块流表存储单元的优先级,通过设置三块流表存储单元的命中优先级来确定虚拟流表存储单元中的流表规则key优先级,然后将虚拟流表存储单元中的逻辑优先级根据160bits的流表规则的边界映射到实际block中的优先级。

如本实施例中,虚拟流表存储单元从上往下依次对应block0、block1和block2的索引,索引越小的优先级越高,如block0的优先级最高。对于160bits的流表规则,芯片并行查找block0、block1和block2,如果有多块block的规则都命中,则通过已配置的三块block的优先级确定最终命中规则。如同时命中block0、block1,则根据block0、block1的优先级确定命中block0。

对于除与流表存储单元的宽度相同的流表规则外,其他大小的流表规则,芯片并行查找流表规则所占用的对应的多块流表存储单元,若多块流表存储单元相同索引的匹配规则均命中,则判断命中,反之(即若多块流表存储单元相同索引的匹配规则未均命中),则判断未命中。如本实施例中,对于320bits的流表规则,芯片并行查找block0和block1,必须两块block相同索引的匹配规则都命中才算命中。同样,对于480bits的key,芯片并行查找block0、block1和block2,必须三块block相同索引的匹配规则都命中才算命中。

s300,芯片在入端口根据报文信息产生流表规则类型,根据流表规则类型做流表查找,查找对应区域的流表存储单元,并判断是否查找到。

具体地,首先在芯片的多块流表存储单元上配置多个类型的流表规则需要查找的至少一个流表存储单元以及所述至少一个流表存储单元之间的优先级。

如下表1所示,不同size的key混合,相关的block支持配置的key类型和端口使能的key类型需按照下表所示处理:

表1

如图8所示,芯片通过入端口出流表的查找类型和查找的block编号,之后根据报文信息产生流表规则类型,再根据流表规则类型做流表tcam查找,流表规则类型包括流表规则的大小。对于160bits的流表规则,那么根据芯片事先的设置(包括查找类型和查找的block编号)查找block0,block1或block2,如果有多块block查到,那么根据事先配置的优先级选择最高优先级的block结果作为最终结果;若keysize为320bits,那么连续查找block0和block1,必须两块都查到并且查到的索引和key类型都相同才认为是查到;若keysize为480bits,那么连续查找block0、block1和block2,必须三块block都查到并且查到的索引和key类型都相同才认为是查到。

由以上技术方案可以看出,本发明具有以下优点:1、本发明可以实现流表混合排序,使得同一块block中同时存在多个大小的key,充分利用芯片资源;2、芯片根据入端口上配置的查找类型确定key的size并按照size作流表并行查找。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本说明书一个或多个实施例的实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1