报文处理方法及装置与流程

文档序号:12134311阅读:248来源:国知局
报文处理方法及装置与流程
本申请涉及网络通信
技术领域
,特别涉及一种报文处理方法及装置。
背景技术
:在处理报文的过程中,网络设备需要根据接口的配置信息和/或报文类型等对报文执行各种类型的操作,以达到转发或业务处理等目的,例如,二层转发、三层转发、单播转发、组播转发、ACL(访问控制列表)匹配业务处理等。而且,一般情况下,针对同一报文时,不同类型的操作是互斥的,例如,当对一报文执行二层转发时,大多数情况下就不会再对该报文执行三层转发,当对一报文执行单播转发时,大多数情况下就不会再执行组播转发。网络设备对报文执行不同类型的操作,可以通过查找Hash表的方式来实现。Hash表是一种以Hash技术组织的查找表。在现有技术中,每一种操作类型对应一张Hash表,不同操作类型对应的Hash表不同,这样,网络设备根据Hash表对报文执行操作的过程如下:接收到报文之后,识别该报文需要执行的操作类型;然后,根据识别出的操作类型从该报文中提取出对应的多个Key(关键)值,对提取出的多个关键值进行Hash计算;将计算结果作为HashEntry(Hash入口),从与识别出的操作类型对应的Hash表中查找到对应表项;最后,根据查找到的表项中包括的处理结果信息,对该报文执行相应操作。不同的操作类型分别对应一张Hash表,需要为每一张Hash表分配一定的内存空间,从而占用了较多的表项空间资源。技术实现要素:有鉴于此,本申请提供了一种报文处理方法及装置。本申请的技术方案如下:一方面,提供了一种报文处理方法,包括:在接收到报文之后,识别该报文需要执行的操作类型,从该报文中提取关键值并进行Hash计算;以计算结果作为Hash入口,从本设备上的Hash索引表中查找到至少一个Hash索引表项;将识别出的操作类型与该至少一个Hash索引表项进行匹配;若命中一个Hash索引表项,则根据命中的Hash索引表项对该报文进行处理。另一方面,还提供了一种报文处理装置,包括:接收模块,用于接收报文;识别计算模块,用于在接收模块接收到报文之后,识别该报文需要执行的操作类型,从该报文中提取关键值并进行哈希Hash计算;表项查找模块,用于以识别计算模块的计算结果作为Hash入口,从本设备上的Hash索引表中查找到至少一个Hash索引表项;匹配模块,用于将识别计算模块识别出的操作类型与表项查找模块查找到的至少一个Hash索引表项进行匹配;报文处理模块,用于若匹配模块命中一个Hash索引表项,则根据命中的Hash索引表项对接收模块接收到的报文进行处理。现有技术中,不同操作类型分别对应一张Hash表,为了能够处理不同数据流,每一张Hash表中均需要为本设备能够处理的所有数据流分配对应的内存空间用于存储对应的Hash表项,这样,网络设备需要为每一张Hash表均分配足够用于存储所有数据流对应的Hash表项的内存空间Sum,从而占用了较多的表项空间资源。本申请的上述技术方案中,在Hash索引表中引入了操作类型Type, 可以将现有技术的不同操作类型对应的多个Hash索引表整合成区分操作类型的一张Hash索引表,该Hash索引表只占用一个Sum的内存空间,从而使得不同操作类型复用同一内存空间Sum,节省了表项空间资源;另外,在Hash索引表中引入了操作类型,这样,每一个Hash索引表项中只需记录与操作类型对应的关键值Key即可,进一步节省了表项空间资源。附图说明图1是本申请实施例的报文处理方法的流程图;图2是本申请实施例的报文处理装置的一种结构示意图;图3是本申请实施例的报文处理装置的另一种结构示意图;图4是本申请实施例的报文处理装置的又一种结构示意图;图5是本申请实施例的报文处理装置的硬件架构示意图。具体实施方式为了解决现有技术中存在的占用较多表项空间的问题,本申请以下实施例中提供了一种报文处理方法,以及一种可以应用该方法的报文处理装置。本申请以下实施例可以应用于需要通过查找Hash表对报文进行处理的网络设备中。网络设备上创建有如表1或表2所示的Hash表。表1Valid处理信息表2ValidType处理信息在表1和表2中,Valid为有效标识,用于指示对应表项是否有效。Type为操作类型,可以是二层转发、三层IPv4转发、三层IPv6转发、 组播转发、ACL匹配业务等。处理信息可以是处理方式或结果表指针,当处理方式的内容较少时,处理信息可直接置为处理方式,即,直接将需要对报文执行的处理方式放在Hash表中,此时,Hash表的结构如表2所示;当处理方式的内容较多时,处理信息置为结果表指针,通过该结果表指针可以索引到对应的结果表中,并从该结果表中查找到包含有处理方式的结果表项,即,将需要对报文执行的处理方式放在结果表中,此时,Hash表的结构如表1或表2所示。为了描述方便,本文中引入了Hash索引表:当Hash表中的处理信息为处理方式时,Hash索引表为Hash表,Hash索引表项为包括处理方式的Hash表项;当Hash表中的处理信息为结果表指针时,Hash索引表由Hash表和结果表组成,Hash索引表项为包括结果表指针的Hash表项。当Hash索引表为Hash表时,Hash索引表中包括Type,此时的Hash索引表的结构如表2所示;当Hash索引表由Hash表和结果表组成时,此时,一种情况是Hash表如表1所示不包括Type,结果表如表3所示包括Type,另一种情况是Hash表如表2所示包括Type,结果表如表3所示包括Type。表3ValidType处理方式在表3中,Valid和Type的含义与Hash表一致。另外,本申请实施例中的Hash表和/或结果表中还可以包括现有技术中的Key。Key为关键值,不同Type对应的Key不同,例如,当Type是二层转发时,Key包括:目的MAC(媒体访问控制)地址、源MAC地址、VPN(VirtualPrivateNetwork,虚拟专用网络)ID(Identity,标识);当Type是三层IPv4转发时,Key包括:目的IP(InternetProtocol,因特网协议)地址、源IP地址、VPNID;当Type是三层IPv6转发时,Key包括:目的IP地址、源IP地址、VPNID、三层协议号;当Type是组播转发时,Key包括: 目的IP地址、源IP地址、VPNID、目的端口号;当Type是ACL(AccessControlList,访问控制列表)匹配业务时,Key包括:ACL匹配所需的所有关键值。显然,上述只是对不同Type需要提取的Key的举例,本申请对此不做限定。Type和Key可以用于解决Hash冲突。假设,对从一报文中提取出的关键值进行Hash计算得到的计算结果为a,对从另一报文中提取出的关键值进行Hash计算得到的计算结果也为a,此时即发生了Hash冲突,根据这两个报文生成的Hash索引表项都会保存到Hash入口为a的内存空间中。如图1所示,本申请实施例的报文处理方法包括以下步骤:步骤S102,在接收到报文之后,识别该报文需要执行的操作类型;具体的,获取报文的入接口上的相关配置信息,通常可以从接口表中获取到;根据获取到的配置信息以及解析出的报文相关内容,识别出该报文需要执行的操作类型,例如,操作类型(Type)可以是二层转发、三层IPv4转发、三层IPv6转发、组播转发和ACL匹配业务等。以ACL匹配业务为例进行说明,当某一接口上配置有至少一个ACL规则时,根据预设分类规则将所述至少一个ACL规则划分成至少一个ACL匹配业务子类,例如,这至少一个ACL匹配业务子类可以是二层ACL匹配业务子类、三层IPv4ACL匹配业务子类和三层IPv6ACL匹配业务子类,然后,将该接口与这至少一个ACL匹配业务子类之间的对应关系配置到接口表中。这样,在步骤S102中,在接收到报文之后,从接口表中查找到与该报文的入接口对应的至少一个ACL匹配业务子类,从查找到的至少一个ACL匹配业务子类中,确定与该报文相匹配的ACL匹配业务子类作为该报文需要执行的操作类型,例如,若该报文是二层报文,则确定该报文相匹配的ACL匹配业务子类为二层ACL匹配业务子类;若该报文是三层报文,且该报文是IPv4报文,则确定该报文相匹配的ACL匹配业务子类为三层IPv4ACL匹配业务子类;若该报文是三层报文,且该报文是IPv6报文,则确定该报文相匹配的ACL匹配业务子类为三层IPv6ACL匹配业务子类。步骤S104,根据识别出的操作类型,从该报文中提取出多个关键值(Key);例如,当操作类型是二层转发时,提取报文的目的MAC地址、源MAC地址、VPNID;当操作类型是三层IPv4转发时,提取报文的目的IP地址、源IP地址、VPNID;当操作类型是三层IPv6转发时,提取报文的目的IP地址、源IP地址、VPNID、三层协议号;当操作类型是组播转发时,提取报文的目的IP地址、源IP地址、VPNID、目的端口号;当操作类型是ACL匹配业务时,提取ACL匹配所需的关键值。显然,上述只是对不同操作类型需要提取的关键值的举例,本申请对此不做限定。步骤S106,对提取出的关键值进行Hash计算;具体的,按照特定算法,对提取出的关键值进行Hash计算,特定算法例如可以是异或算法、CRC(CyclicRedundancyCheck,循环冗余校验)算法等。步骤S108,以步骤S106中的计算结果作为Hash入口,从本设备上的Hash索引表中查找到至少一个Hash索引表项;由于可能存在Hash冲突,因此同一Hash入口中的Hash索引表项可能有一个或多个。具体的,步骤S108中查找到的是至少一个Hash表项,并且,当Hash索引表为Hash表时,查找到的Hash表项中包括处理方式;当Hash索引表包括Hash表和结果表时,此时,Hash表和/或结果表中包括Type,查找到的Hash表项中包括结果表指针。步骤S110,将识别出的操作类型与该至少一个Hash索引表项进行匹配;步骤S112,判断是否命中一个Hash索引表项,若是,则执行步骤S114,否则,执行步骤S116;步骤S114,根据命中的Hash索引表项对该报文进行处理;具体的,当Hash索引表为Hash表时,此时,Hash表如表2所示包括Type,在步骤S110中,会将识别出的操作类型与查找到的至少一个Hash表项进行匹配;在步骤S114中,若命中一个Hash表项,则根据命中的Hash表项中包括的处理方式,对该报文进行处理。或者,当Hash索引表包括Hash表和结果表,并且,Hash表如表1所示不包括Type,结果表如表3所示包括Type时,在步骤S110中,会针对查找到的每一个Hash表项,根据该Hash表项中包括的结果表指针进行索引,查找到对应的结果表,然后,根据识别出的操作类型在查找到的结果表中匹配结果表项;在步骤S114中,若命中一个结果表项,则根据命中的结果表项中包括的处理方式,对该报文进行处理。或者,当Hash索引表包括Hash表和结果表,并且,Hash表如表2所示包括Type,结果表如表3所示包括Type时,在步骤S110中,会将识别出的操作类型与查找到的至少一个Hash表项进行匹配,若命中一个Hash表项,则根据命中的Hash表项中包括的结果表指针进行索引,查找到对应的结果表,然后,根据识别出的操作类型在查找到的结果表中匹配结果表项;在步骤S114中,若命中一个结果表项,则根据命中的结果表项中包括的处理方式,对该报文进行处理。步骤S116,根据识别出的操作类型,对该报文进行对应操作,例如,丢弃该报文,或将该报文上送控制平面以便根据该报文建立Hash索引表项。在进行报文处理时,会为每种操作类型设置默认处理方式;当未能匹配到对应的Hash索引表项时,则根据识别出的操作类型确定默认处理方式,并根据默认处理方式进行处理。该默认处理方式可以包括将报文上送控制平面以建立新的Hash索引表项,以及丢弃该报文等。具体的,在步骤S116中根据该报文建立Hash索引表项的过程如下:以对从该报文中提取出的关键值进行Hash计算得到的计算结果作为Hash入口,在Hash表中添加一Hash表项,其中,当Hash索引表为如表2所示的Hash表时,添加的Hash表项中包括:Valid、Type和处理信息,其中,处理信息置为处理方式;当Hash索引表包括:如表1所示的Hash表和如表3所示的结果表时,添加的Hash表项中包括:Valid和处理信息,其中,处理信息置为结果表指针;当Hash索引表包括:如表2所示的Hash表和如表3所示的结果表时,添加的Hash表项中包括:Valid、Type和处理信息,其中,处理信息置为结果表指针。现有技术中,不同操作类型分别对应一张Hash表,为了能够处理不同数据流,每一张Hash表中均需要为本设备能够处理的所有数据流分配对应的内存空间用于存储对应的Hash表项,这样,网络设备需要为每一张Hash表均分配足够用于存储所有数据流对应的Hash表项的内存空间Sum,从而占用了较多的表项空间资源。本申请上述实施例的方法中,在Hash索引表中引入了操作类型Type,可以将现有技术的不同操作类型对应的多个Hash索引表整合成区分操作类型的一张Hash索引表,该Hash索引表只占用一个Sum的内存空间,从而使得不同操作类型复用同一内存空间Sum,节省了表项空间资源;另外,在Hash索引表中引入了操作类型,这样,每一个Hash索引表项中只需记录与操作类型对应的关键值Key即可,进一步节省了表项空间资源。针对上述实施例的方法,本申请实施例中还提供了一种可以应用上述方法的报文处理装置,该装置可以应用于需要通过查找Hash表对报文进行处理的网络设备中。如图2所示,该报文处理装置中包括以下模块:接收模块201、识别计算模块202、表项查找模块203、匹配模块204和报文处理模块205,其中:接收模块201,用于接收报文;识别计算模块202,用于在接收模块201接收到报文之后,识别该报文需要执行的操作类型,从该报文中提取关键值并进行Hash计算;表项查找模块203,用于以识别计算模块202的计算结果作为Hash入口,从本设备上的Hash索引表中查找到至少一个Hash索引表项;匹配模块204,用于将识别计算模块202识别出的操作类型与表项查找模块203查找到的至少一个Hash索引表项进行匹配;报文处理模块205,用于若匹配模块204命中一个Hash索引表项,则根据命中的Hash索引表项对接收模块201接收到的报文进行处理。其中,当Hash索引表为Hash表时,匹配模块204具体用于:将识别计算模块202识别出的操作类型与表项查找模块203查找到的至少一个Hash表项进行匹配;报文处理模块205具体用于:若匹配模块204命中一个Hash表项,则根据命中的Hash表项中包括的处理方式,对接收模块201接收到的报文进行处理。当Hash索引表包括:Hash表和结果表,并且,Hash表中不包括Type,结果表中包括Type时,匹配模块204中包括:查找单元和结果表项匹配单元,其中:查找单元,用于针对表项查找模块203查找到的每一个Hash表项,根据该Hash表项中包括的结果表指针进行索引,查找到对应的结果表;结果表项匹配单元,用于根据识别计算模块202识别出的操作类型在查找单元查找到的结果表中匹配结果表项;报文处理模块205具体用于:若结果表项匹配单元命中一个结果表项,则根据命中的结果表项中包括的处理方式,对接收模块201接收到的报文进行处理。当Hash索引表包括:Hash表和结果表,并且,Hash表和结果表中均包括Type时,匹配模块204中包括:Hash表项匹配单元、查找单元和结果表项匹配单元,其中:Hash表项匹配单元,用于将识别计算模块202识别出的操作类型与表项查找模块203查找到的至少一个Hash表项进行匹配;查找单元,用于若Hash表项匹配单元命中一个Hash表项,则根据命中的 Hash表项中包括的结果表指针进行索引,查找到对应的结果表;结果表项匹配单元,用于根据识别计算模块202识别出的操作类型在查找单元查找到的结果表中匹配结果表项;报文处理模块205具体用于:若结果表项匹配单元命中一个结果表项,则根据命中的结果表项中包括的处理方式,对接收模块201接收到的报文进行处理。另外,如图3所示,该报文处理装置中还包括:添加模块206和报文丢弃模块207,其中:添加模块206,用于若匹配模块204没有命中任一Hash索引表项,则在确定需要根据接收模块201接收到的报文建立Hash索引表项时,以识别计算模块202的计算结果作为Hash入口,在Hash索引表中添加一包括识别计算模块202识别出的操作类型的Hash索引表项;报文丢弃模块207,用于若匹配模块204没有命中任一Hash索引表项,则在确定需要丢弃接收模块201接收到的报文时,将该报文丢弃。另外,如图4所示,该报文处理装置中还包括:划分模块208和接口表配置模块209,其中,识别计算模块202中包括子类查找单元和操作类型确定单元;其中:划分模块208,用于当接口上配置有至少一个ACL规则时,根据预设分类规则将这至少一个ACL规则划分成至少一个ACL匹配业务子类;接口表配置模块209,用于将该接口与划分模块208划分得到的至少一个ACL匹配业务子类之间的对应关系配置到接口表中;子类查找单元,用于在接收模块201接收到报文之后,从接口表中查找到与该报文的入接口对应的至少一个ACL匹配业务子类;操作类型确定单元,用于从子类查找单元查找到的至少一个ACL匹配业务子类中,确定与接收模块201接收到的报文相匹配的ACL匹配业务子类作为该报文需要执行的操作类型。其中,上述至少一个ACL匹配业务子类包括:二层ACL匹配业务子类、三 层IPv4ACL匹配业务子类和三层IPv6ACL匹配业务子类;则,操作类型确定单元具体用于:若接收模块201接收到的报文是二层报文,则确定该报文相匹配的ACL匹配业务子类为二层ACL匹配业务子类;若接收模块201接收到的报文是三层报文,且该报文是IPv4报文,则确定该报文相匹配的ACL匹配业务子类为三层IPv4ACL匹配业务子类;若接收模块201接收到的报文是三层报文,且该报文是IPv6报文,则确定该报文相匹配的ACL匹配业务子类为三层IPv6ACL匹配业务子类。本申请实施例的报文转发装置可以是软硬件结合的可编程设备,图5给出了该报文处理装置的硬件架构组成。如图5所示,该报文处理装置中包括:非易失性存储器,CPU(中央处理器),转发芯片和内存;其中:内存,用于存储指令代码,当所述指令代码被执行时完成的操作主要为接收模块、识别计算模块、表项查找模块、匹配模块、报文处理模块、添加模块、报文丢弃模块、划分模块和接口表配置模块完成的功能,这里不再详述。CPU,用于与转发芯片通信,进行报文的收发;用于与内存通信,读取和执行内存中存储的所述指令代码,完成上述报文处理装置中的接收模块、识别计算模块、表项查找模块、匹配模块、报文处理模块、添加模块、报文丢弃模块、划分模块和接口表配置模块完成的功能,以及对从转发芯片上送的报文的处理;用于与非易失性存储器通信,读/写非易失性存储器中的数据,包括Hash表、结果表和接口表。转发芯片,用于通过该芯片上的端口连接到其它网络设备,负责报文的收发处理,具体的,将接收到的报文上送给CPU进行查表处理。非易失性存储器,用于存储各种数据,包括:Hash表、结果表和接口表。综上,本申请以上实施例可以达到以下技术效果:现有技术中,不同操作类型分别对应一张Hash表,为了能够处理不同数据流,每一张Hash表中均需要为本设备能够处理的所有数据流分配对应的内存空 间用于存储对应的Hash表项,这样,网络设备需要为每一张Hash表均分配足够用于存储所有数据流对应的Hash表项的内存空间Sum,从而占用了较多的表项空间资源。本申请上述实施例的方法中,在Hash索引表中引入了操作类型Type,可以将现有技术的不同操作类型对应的多个Hash索引表整合成区分操作类型的一张Hash索引表,该Hash索引表只占用一个Sum的内存空间,从而使得不同操作类型复用同一内存空间Sum,节省了表项空间资源;另外,在Hash索引表中引入了操作类型,这样,每一个Hash索引表项中只需记录与操作类型对应的关键值Key即可,进一步节省了表项空间资源。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1