报文匹配方法及装置转让专利

申请号 : CN202210289366.X

文献号 : CN114760108B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 秦永刚李志林俊龙

申请人 : 杭州迪普科技股份有限公司

摘要 :

本公开涉及一种报文匹配方法、装置、电子设备及计算机可读介质。该方法包括:由设备的接收端口获取待进行匹配的报文数据;基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配;根据报文匹配结果将所述报文数据重定向到预设端口;基于所述预设端口再次获取所述报文数据;基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配;在报文匹配结果的目标端口为发送端时,将所述报文数据由发送端口转发出去以结束所述报文匹配。本申请涉及的报文匹配方法、装置、电子设备及计算机可读介质,能够仅使用一块芯片即可支持同时匹配大规则容量的多个五元组的访问控制列表,提升报文匹配的速度和效率。

权利要求 :

1.一种报文匹配方法,其特征在于,包括:

由设备的接收端口获取待进行匹配的报文数据,其中所述设备的接收端口、发送端口和多个预设端口被进行初始化设置,包括:所述设备的多个预设端口被设置为MAC回环,所述设备的接收端口、发送端口和多个预设端口被配置基于三态内容寻址存储器的访问控制列表匹配规则,所述设备的接收端口和多个预设端口被创建访问控制列表组模式,以及为所述设备的接收端口和多个预设端口分别被配置访问控制列表匹配规则;

基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配;

根据报文匹配结果将所述报文数据重定向到预设端口;

基于所述预设端口再次获取所述报文数据;

基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配;

在报文匹配结果的目标端口为发送端口时,将所述报文数据由发送端口转发出去以结束所述报文匹配。

2.如权利要求1所述的方法,其特征在于,为所述设备的接收端口、发送端口和多个预设端口配置基于三态内容寻址存储器的访问控制列表匹配规则,包括:确定所述设备的接收端口、发送端口和多个预设端口的报文转发顺序;

基于所述报文转发顺序配置基于三态内容寻址存储器的访问控制列表匹配规则。

3.如权利要求2所述的方法,其特征在于,为所述设备的接收端口和多个预设端口创建访问控制列表组模式,包括:基于所述报文转发顺序和五元组匹配数据创建访问控制列表组模式。

4.如权利要求1所述的方法,其特征在于,为所述设备的接收端口和多个预设端口分别配置访问控制列表匹配规则,包括:为所述设备的接收端口和多个预设端口分别配置基于静态随机存取存储器的访问控制列表匹配规则。

5.如权利要求1所述的方法,其特征在于,基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配,包括:基于所述接收端口处的三态内容寻址存储器的访问控制列表匹配规则对所述报文数据进行报文匹配;

基于所述接收端口处的静态随机存取存储器的访问控制列表匹配规则对所述报文数据进行报文匹配。

6.如权利要求1所述的方法,其特征在于,根据报文匹配结果将所述报文数据重定向到预设端口,包括:根据三态内容寻址存储器的访问控制列表的匹配结果确定目标预设端口;

将所述报文数据转发到所述预设端口。

7.如权利要求1所述的方法,其特征在于,基于所述预设端口再次获取所述报文数据,包括:所述预设端口基于自身的MAC回环设置再次获取所述报文数据。

8.一种报文匹配装置,其特征在于,包括:

接收模块,用于由设备的接收端口获取待进行匹配的报文数据,其中所述设备的接收端口、发送端口和多个预设端口被初始化设置,包括:所述设备的多个预设端口被设置为MAC回环,所述设备的接收端口、发送端口和多个预设端口被配置基于三态内容寻址存储器的访问控制列表匹配规则,所述设备的接收端口和多个预设端口被创建访问控制列表组模式,以及为所述设备的接收端口和多个预设端口分别被配置访问控制列表匹配规则;

接收匹配模块,用于基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配;

重定向模块,用于根据报文匹配结果将所述报文数据重定向到预设端口;

端口模块,用于基于所述预设端口再次获取所述报文数据;

端口匹配模块,用于基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配;

发送模块,用于在报文匹配结果的目标端口为发送端时,将所述报文数据由发送端口转发出去以结束所述报文匹配。

说明书 :

报文匹配方法及装置

技术领域

[0001] 本申请涉及计算机信息处理领域,具体而言,涉及一种报文匹配方法、装置、电子设备及计算机可读介质。

背景技术

[0002] 访问控制列表(Access Control Lists,ACL)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。访问控制列表由一系列permit或deny语句组成的,有序规则的列表,它可以根据源地址、目的地址、协议端口号等特定条件来设定。
[0003] ACL用于匹配和区分报文,可以通过对ACL的配置实现不同的匹配和区分功能。随着客户需求的提高,现在客户往往需要ACL的规格容量大,同时能够支持从IPv4的一元组到五元组多个配置同时生效的ACL匹配方法。TCAM(ternary content addressable memory)形式的ACL可以满足匹配条件的覆盖,但是规则容量上是不满足的。SRAM(StaticRandom‑AccessMemory)形式的ACL可以满足规则容量,但是SRAM形式的ACL查表方式是hash的,现有技术中的芯片一般只有1次或者2次独立hash查找,而查找的格式是按照每块独立的SRAM进行配置的,所以不能够实现IPv4一元组到五元组同时进行匹配。
[0004] 因此,需要一种新的报文匹配方法、装置、电子设备及计算机可读介质。
[0005] 在所述背景技术部分公开的上述信息仅用于加强对本申请的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

[0006] 有鉴于此,本申请提供一种报文匹配方法、装置、电子设备及计算机可读介质,能够仅使用一块芯片即可支持同时匹配大规则容量的多个五元组的访问控制列表,提升报文匹配的速度和效率。
[0007] 本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
[0008] 根据本申请的一方面,提出一种报文匹配方法,该方法包括:由设备的接收端口获取待进行匹配的报文数据;基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配;根据报文匹配结果将所述报文数据重定向到预设端口;基于所述预设端口再次获取所述报文数据;基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配;在报文匹配结果的目标端口为发送端时,将所述报文数据由发送端口转发出去以结束所述报文匹配。
[0009] 在本申请的一种示例性实施例中,还包括:对所述设备的接收端口、发送端口和多个预设端口进行初始化设置。
[0010] 在本申请的一种示例性实施例中,对所述设备的接收端口、发送端口和多个预设端口进行初始化设置,包括:将所述设备的多个预设端口设置为MAC回环;为所述设备的接收端口、发送端口和多个预设端口配置基于三态内容寻址存储器的访问控制列表匹配规则;为所述设备的接收端口和多个预设端口创建访问控制列表组模式;为所述设备的接收端口和多个预设端口分别配置访问控制列表匹配规则。
[0011] 在本申请的一种示例性实施例中,为所述设备的接收端口、发送端口和多个预设端口配置基于三态内容寻址存储器的访问控制列表匹配规则,包括:确定所述设备的接收端口、发送端口和多个预设端口的报文转发顺序;基于所述报文转发顺序配置基于三态内容寻址存储器的访问控制列表匹配规则。
[0012] 在本申请的一种示例性实施例中,为所述设备的接收端口和多个预设端口创建访问控制列表组模式,包括:基于所述报文转发顺序和五元组匹配数据创建访问控制列表组模式。
[0013] 在本申请的一种示例性实施例中,为所述设备的接收端口和多个预设端口分别配置访问控制列表匹配规则,包括:为所述设备的接收端口和多个预设端口分别配置基于静态随机存取存储器的访问控制列表匹配规则。
[0014] 在本申请的一种示例性实施例中,基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配,包括:基于所述接收端口处的三态内容寻址存储器的访问控制列表匹配规则对所述报文数据进行报文匹配;基于所述接收端口处的静态随机存取存储器的访问控制列表匹配规则对所述报文数据进行报文匹配。
[0015] 在本申请的一种示例性实施例中,根据报文匹配结果将所述报文数据重定向到预设端口,包括:根据三态内容寻址存储器的访问控制列表的匹配结果确定目标预设端口;将所述报文数据转发到所述预设端口。
[0016] 在本申请的一种示例性实施例中,基于所述预设端口再次获取所述报文数据,包括:所述预设端口基于自身的MAC回环设置再次获取所述报文数据。
[0017] 根据本申请的一方面,提出一种报文匹配装置,该装置包括:接收模块,用于由设备的接收端口获取待进行匹配的报文数据;接收匹配模块,用于基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配;重定向模块,用于根据报文匹配结果将所述报文数据重定向到预设端口;端口模块,用于基于所述预设端口再次获取所述报文数据;端口匹配模块,用于基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配;发送模块,用于在报文匹配结果的目标端口为发送端时,将所述报文数据由发送端口转发出去以结束所述报文匹配。
[0018] 根据本申请的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
[0019] 根据本申请的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
[0020] 根据本申请的报文匹配方法、装置、电子设备及计算机可读介质,通过由设备的接收端口获取待进行匹配的报文数据;基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配;根据报文匹配结果将所述报文数据重定向到预设端口;基于所述预设端口再次获取所述报文数据;基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配;在报文匹配结果的目标端口为发送端时,将所述报文数据由发送端口转发出去以结束所述报文匹配的方式,能够仅使用一块芯片即可支持同时匹配大规则容量的多个五元组的访问控制列表,提升报文匹配的速度和效率。
[0021] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。

附图说明

[0022] 通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0023] 图1是现有技术中的SRAM hash查找的方式示意图。
[0024] 图2是根据一示例性实施例示出的一种报文匹配方法及装置的系统框图。
[0025] 图3是根据一示例性实施例示出的一种报文匹配方法的流程图。
[0026] 图4是根据一示例性实施例示出的一种报文匹配方法示意图。
[0027] 图5是根据另一示例性实施例示出的一种报文匹配方法的流程图。
[0028] 图6是根据另一示例性实施例示出的一种报文匹配装置的框图。
[0029] 图7是根据一示例性实施例示出的一种电子设备的框图。
[0030] 图8是根据一示例性实施例示出的一种计算机可读介质的框图。

具体实施方式

[0031] 现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
[0032] 此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
[0033] 附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0034] 附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
[0035] 应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
[0036] 本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
[0037] 本申请涉及的技术缩略语解释如下:
[0038] TCAM(ternary content addressable memory,三态内容寻址存储器):主要用于快速查找ACL、路由等表项。
[0039] SRAM(Static Random‑Access Memory静态随机存取存储器):是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。
[0040] ACL(Access Control List,访问控制列表):即通过配置对报文的匹配条件和处理动作而实现报文过滤和控制的功能。当网络设备的物理接口接收到报文,或将从物理接口发送出去之前,根据当前接口上配置的ACL表项对报文内容进行解析和匹配,对匹配到的报文进行相应动作处理,这种ACL的芯片实现方法一般是使用TCAM实现,能够实现每条ACL可以配置掩码,通常规格容量也不会太大。
[0041] 精确ACL:实现的方式一般是用hash查表的方式,这种ACL不能支持掩码配置,但是的规格可以做的更大一点,实现方式一般是用SRAM存储器。
[0042] IPv4五元组:一般是指源IP(SIP),目的IP(DIP),IP协议号(IP_protocol),源端口号(l4_src_port),目的端口号(l4_dst_port)。
[0043] 环回口(loopback口)是交换芯片的口配置成端口MAC环回的形式,报文发送出去之后,报文会在MAC上自动环回到芯片上去。
[0044] 本案申请人发现,当前报文匹配主要使用TCAM进行多次并行查找,每条ACL都可以配置五元组中不同的匹配条件,比如可以在不同的TCAM块中配置SIP+DIP,SIP+DIP+ip_protocol,SIP+l4_src_port等不同的排列组合,同时每条ACL中的匹配关键词还可以指定匹配掩码。
[0045] 现有技术方案虽然能够灵活实现匹配不同的报文关键字,但是每块独立TCAM的中的ACL规则容量是有限的,只能做到256~1024左右,这个是不能满足大容量的用户需求。
[0046] 精确ACL由于是使用的SRAM hash查找的方式,能够实现比较大的规则容量,但是交换芯片目前提供的只能是每个入接口两块独立的SRAM hash查找,所以最多能够实现两条ACL的查找结果输出。如图1所示,报文从入口X进入,从Y口出去,这种只能在入口X处实现最多两次hash查找,不能满足使用需求。
[0047] 不能够满足用户的至少五元组的独立查找输出,即至少能够同时有一个一元组,一个二元组,一个三元组,一个四元组,一个五元组的ACL同时命中输出结果的需求。
[0048] 有鉴于现有技术中的技术缺陷,本申请的发明人提出一种报文匹配方法,能够在同一块芯片上面支持同时匹配五元组ACL,并且能够达到较大的规则容量。
[0049] 下文中,以实现一个一元组,一个二元组,一个三元组,一个四元组,一个五元组的ACL同时命中输出结果的需求为例,通过具体的实施例对本申请的内容进行详细说明。可以理解的是,本申请中的报文匹配方法还可应用在其他数量的命中输出结果中。
[0050] 图2是根据一示例性实施例示出的一种报文匹配方法、装置的系统框图。
[0051] 如图2所示,系统架构20可以包括用户终端201、202、203,网络204和服务设备205。网络204用以在用户终端201、202、203和服务设备205之间提供通信链路的介质。网络204可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
[0052] 用户可以使用用户终端201、202、203通过网络204与服务设备205交互,以接收或发送消息等。用户终端201、202、203上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
[0053] 用户终端201、202、203可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
[0054] 服务设备205还可以是各种交换机、防火墙、或者其他服务器,服务设备205可例如对用户利用用户终端201、202、203所发送的报文数据进行匹配的数据处理设备。服务设备205可以对接收到的报文数据进行匹配,并根据匹配结果进行后续操作。
[0055] 服务设备205可例如由设备的接收端口获取待进行匹配的报文数据;服务设备205可例如基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配;服务设备205可例如根据报文匹配结果将所述报文数据重定向到预设端口;服务设备205可例如基于所述预设端口再次获取所述报文数据;服务设备205可例如基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配;服务设备205可例如在报文匹配结果的目标端口为发送端时,将所述报文数据由发送端口转发出去以结束所述报文匹配。
[0056] 需要说明的是,本申请实施例所提供的报文匹配方法可以由服务设备205执行,相应地,报文匹配装置可以设置于服务设备205中。
[0057] 图3是根据一示例性实施例示出的一种报文匹配方法的流程图。报文匹配方法30至少包括步骤S302至S312。
[0058] 如图3所示,在S302中,由设备的接收端口获取待进行匹配的报文数据。
[0059] 在S304中,基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配。可例如,基于所述接收端口处的三态内容寻址存储器的访问控制列表匹配规则对所述报文数据进行报文匹配;基于所述接收端口处的静态随机存取存储器的访问控制列表匹配规则对所述报文数据进行报文匹配。
[0060] 在S306中,根据报文匹配结果将所述报文数据重定向到预设端口。根据三态内容寻址存储器的访问控制列表的匹配结果确定目标预设端口;将所述报文数据转发到所述预设端口。
[0061] 在S308中,基于所述预设端口再次获取所述报文数据。所述预设端口基于自身的MAC回环设置再次获取所述报文数据。
[0062] 在S310中,基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配。可例如,基于所述预设端口处的三态内容寻址存储器的访问控制列表匹配规则对所述报文数据进行报文匹配;基于所述预设端口处的静态随机存取存储器的访问控制列表匹配规则对所述报文数据进行报文匹配。
[0063] 在S312中,在报文匹配结果的目标端口为发送端时,将所述报文数据由发送端口转发出去以结束所述报文匹配。
[0064] 图4是根据另一示例性实施例示出的一种报文匹配方法的示意图。图3结合图4进行报文转发查找流程的说明。
[0065] 如图4所示,报文从端口X进入到设备,从端口Y发送出去,在端口X上面配置基于hash的ACL实现第一次hash查找,同时因为端口X配置了默认TCAM ACL,所以报文会被重定向到A口。
[0066] 由于A端口已经被配置成了环回口,所以报文会从A口发送出去,并且再环回回来,这时候报文相当于重新进入到交换芯片,会重新在A口上面查找已经配置好的基于五元组中的任意一种hash ACL,同时在A接口上面查找配置的默认TCAM,因为精确ACL是hash查找,默认的ACL是TCAM查找,这两个都会进行查找命中,并且默认的TCAM ACL总是能命中的,这时报文就会被重定向到接口B。
[0067] 由于接口B上面也配置了类的的hash ACL和默认的TCAM ACL,报文会走与面类似的流程,不同的是配置在接口B上面的hash ACL与接口A上面的匹配元组信息是不同的,C、D口以此类推,报文到达D口的时候,默认TCAM ACL的动作是重定向到接口Y,这样报文就最终从Y口转发出去。
[0068] 通过以上的方式,在设备内部的芯片上面能够实现多次hash查找,并且每次的查找都是能够按照需求去配置成不同的查找元素(不同的报文五元组组合),最终就能实现扩展精确ACL匹配条件的效果,即每个报文进入到设备之后最多只能查两次精确ACL,在一个实际的应用中,通过这种方法能够实现至少5次精确ACL的匹配。
[0069] 根据本申请的报文匹配方法,通过由设备的接收端口获取待进行匹配的报文数据;基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配;根据报文匹配结果将所述报文数据重定向到预设端口;基于所述预设端口再次获取所述报文数据;基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配;在报文匹配结果的目标端口为发送端时,将所述报文数据由发送端口转发出去以结束所述报文匹配的方式,能够仅使用一块芯片即可支持同时匹配大规则容量的多个五元组的访问控制列表,提升报文匹配的速度和效率。
[0070] 根据本申请的报文匹配方法,在不改变芯片硬件设计的前提下,通过多次将报文环回到同一个芯片的方式,可以实现实现同一个报文多次的hash ACL查找,提高ACL的使用灵活性,实现更加复杂的ACL匹配功能,对降低硬件成本,提高产品的竞争力等方面都具有十分重要的意义。
[0071] 应清楚地理解,本申请描述了如何形成和使用特定示例,但本申请的原理不限于这些示例的任何细节。相反,基于本申请公开的内容的教导,这些原理能够应用于许多其它实施例。
[0072] 图5是根据另一示例性实施例示出的一种报文匹配方法的流程图。图5所示的流程50是“对所述设备的接收端口、发送端口和多个预设端口进行初始化设置”的详细描述。
[0073] 如图5所示,在S502中,将所述设备的多个预设端口设置为MAC回环。报文正常情况的转发路径是从X口进入到芯片,从Y口出去。在本申请的实施例中,将设备的A、B、C、D四个口(可以是设备的面板口,也可以是芯片的内部的环回口)设置为MAC环回口,此时端口发送出去的报文将自动重新环回到本端口收到。
[0074] 在S504中,为所述设备的接收端口、发送端口和多个预设端口配置基于三态内容寻址存储器的访问控制列表匹配规则。可确定所述设备的接收端口、发送端口和多个预设端口的报文转发顺序;基于所述报文转发顺序配置基于三态内容寻址存储器的访问控制列表匹配规则。
[0075] 更具体的,可在报文的原始入接口上面配置一条默认TCAM ACL,动作是将报文从X重定向到A,同时在每个环回端口上面配置默认的TCAM ACL,动作分别是A重定向到B,B重定向到C,C重定向到D,D重定向到最终的出口Y。
[0076] 如果在X口上面配置了重定向到Z口出去的TCAM ACL,则需要在D口上面的TCAM ACL配置这个动作,如果在X口上面的配置的丢包TCAM ACL则需要在D口配置丢包ACL,其他的动作也是类似的操作。
[0077] 在S506中,为所述设备的接收端口和多个预设端口创建访问控制列表组模式。可基于所述报文转发顺序和五元组匹配数据创建访问控制列表组模式。
[0078] 可分别配置在X、A、B、C、D口,五个口上面创建五个不同的基于入接口的ACL group模式,这五个不同的group模式分别匹配五元组中的任意一种、任意两种元组、任意三种元组、任意四种元组、任意五种元组。
[0079] 在S508中,为所述设备的接收端口和多个预设端口分别配置访问控制列表匹配规则。可为所述设备的接收端口和多个预设端口分别配置基于静态随机存取存储器的访问控制列表匹配规则。
[0080] 根据用户的需求配置一般的ACL匹配规则,按照需求需求配置在不同的入口或者反射口上面即可。
[0081] 本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本申请提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
[0082] 此外,需要注意的是,上述附图仅是根据本申请示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0083] 下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
[0084] 图6是根据另一示例性实施例示出的一种报文匹配装置的框图。如图6所示,报文匹配装置60包括:接收模块602,接收匹配模块604,重定向模块606,端口模块608,端口匹配模块610,发送模块612。
[0085] 接收模块602用于由设备的接收端口获取待进行匹配的报文数据;
[0086] 接收匹配模块604用于基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配;接收匹配模块604还用于基于所述接收端口处的三态内容寻址存储器的访问控制列表匹配规则对所述报文数据进行报文匹配;基于所述接收端口处的静态随机存取存储器的访问控制列表匹配规则对所述报文数据进行报文匹配。
[0087] 重定向模块606用于根据报文匹配结果将所述报文数据重定向到预设端口;重定向模块606还用于根据三态内容寻址存储器的访问控制列表的匹配结果确定目标预设端口;将所述报文数据转发到所述预设端口。
[0088] 端口模块608用于基于所述预设端口再次获取所述报文数据;
[0089] 端口匹配模块610用于基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配;端口匹配模块610还用于基于所述预设端口处的三态内容寻址存储器的访问控制列表匹配规则对所述报文数据进行报文匹配;基于所述预设端口处的静态随机存取存储器的访问控制列表匹配规则对所述报文数据进行报文匹配。
[0090] 发送模块612用于在报文匹配结果的目标端口为发送端时,将所述报文数据由发送端口转发出去以结束所述报文匹配。
[0091] 根据本申请的报文匹配装置,通过由设备的接收端口获取待进行匹配的报文数据;基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配;根据报文匹配结果将所述报文数据重定向到预设端口;基于所述预设端口再次获取所述报文数据;基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配;在报文匹配结果的目标端口为发送端时,将所述报文数据由发送端口转发出去以结束所述报文匹配的方式,能够仅使用一块芯片即可支持同时匹配大规则容量的多个五元组的访问控制列表,提升报文匹配的速度和效率。
[0092] 图7是根据一示例性实施例示出的一种电子设备的框图。
[0093] 下面参照图7来描述根据本申请的这种实施方式的电子设备700。图7显示的电子设备700仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
[0094] 如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:至少一个处理单元710、至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730、显示单元740等。
[0095] 其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元710执行,使得所述处理单元710执行本说明书中描述的根据本申请各种示例性实施方式的步骤。例如,所述处理单元710可以执行如图3,图5中所示的步骤。
[0096] 所述存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)7201和/或高速缓存存储单元7202,还可以进一步包括只读存储单元(ROM)7203。
[0097] 所述存储单元720还可以包括具有一组(至少一个)程序模块7205的程序/实用工具7204,这样的程序模块7205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0098] 总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
[0099] 电子设备700也可以与一个或多个外部设备700’(例如键盘、指向设备、蓝牙设备等)通信,使得用户能与该电子设备700交互的设备通信,和/或该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器760可以通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0100] 通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图8所示,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD‑ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本申请实施方式的上述方法。
[0101] 总体而言,报文正常情况的转发路径是从X口进入到芯片,从Y口出去;将设备的A、B、C、D四个口(可以是设备的面板口,也可以是芯片的内部的环回口)设置为mac环回口,此时端口发送出去的报文将自动重新环回到本端口收到;在报文的原始入接口上面配置一条默认TCAM acl,动作是将报文从X重定向到A,同时在每个环回端口上面配置默认的TCAM ACL,动作分别是A重定向到B,B重定向到C,C重定向到D,D重定向到最终的出口Y,如果在X口上面配置了重定向到Z口出去的TCAM ACL,则需要在D口上面的TCAM ACL配置这个动作,如果在X口上面的配置的丢包TCAM ACL则需要在D口配置丢包ACL,其他的动作也是类似的操作;分别配置在X、A、B、C、D口,五个口上面创建五个不同的基于入接口的ACL group模式,这五个不同的group模式分别匹配五元组中的任意一种、任意两种元组、任意三种元组、任意四种元组、任意五种元组;配置需要匹配的ACL规则,按照需求需求配置在不同的入口或者反射口上面即可。具体而言,如图4所显示,报文从端口X进入到设备,从端口Y发送出去,在端口X上面配置基于hash的ACL实现第一次hash查找,同时因为端口X配置了默认TCAM ACL,所以报文会被重定向到A口,由于A端口已经被配置成了环回口,所以报文会从A口发送出去,并且再环回回来,这时候报文相当于重新进入到交换芯片,会重新在A口上面查找已经配置好的基于五元组中的任意一种hash ACL,同时在A接口上面查找配置的默认TCAM,因为精确ACL是hash查找,默认的ACL是TCAM查找,这两个都会进行查找命中,并且默认的TCAM ACL总是能命中的,这时报文就会被重定向到接口B,同样的的接口B上面也配置了类的的hash ACL和默认的TCAM ACL,报文会走与面类似的流程,不同的是配置在接口B上面的hash ACL与接口A上面的匹配元组信息是不同的,C、D口以此类推,报文到达D口的时候,默认TCAM ACL的动作是重定向到接口Y,这样报文就最终从Y口转发出去,在芯片上面就能够实现多次hash查找,并且每次的查找都是能够按照需求去配置成不同的查找元素(不同的报文五元组组合),最终就能实现扩展精确ACL匹配条件的效果,即每个报文进入到设备之后最多只能查两次精确ACL,而通过这种方法能够实现至少5次精确ACL的匹配。
[0102] 这样,在不改变芯片硬件设计的前提下,通过多次将报文环回到同一个芯片的方式,可以实现同一个报文多次的hash ACL查找,提高ACL的使用灵活性,实现更加复杂的ACL匹配功能,降低硬件成本,提高产品的竞争力。
[0103] 所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0104] 所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0105] 可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0106] 上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:由设备的接收端口获取待进行匹配的报文数据;基于所述接收端口处的访问控制列表对所述报文数据进行报文匹配;根据报文匹配结果将所述报文数据重定向到预设端口;基于所述预设端口再次获取所述报文数据;基于所述预设端口处的访问控制列表对所述报文数据进行报文匹配;在报文匹配结果的目标端口为发送端时,将所述报文数据由发送端口转发出去以结束所述报文匹配。
[0107] 本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0108] 通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD‑ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本申请实施例的方法。
[0109] 以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。