本发明属于数据通信领域,尤其涉及一种报文处理方法、装置及设备。
背景技术:
端口安全(portsecurity),其实现原理是端口安全特性通过媒体访问控制地址(mediaaccesscontroladdress,简称mac地址)表记录连接到交换机端口的以太网mac地址,并只允许认证的mac地址通过本端口通信。其他mac地址发送的数据包通过此端口时,端口安全特性会阻止它。使用端口安全特性可以防止未经允许的设备访问网络,并增强安全性。另外,端口安全特性也可用于防止mac地址泛洪,造成mac地址表资源浪费。
现有技术中,在网络设备上,当在交换芯片的端口上使能端口安全特性,关闭该端口硬件学习mac地址的能力后,由于交换芯片的硬件差异,当交换芯片不能对未知源mac地址的报文进行处理,此类未知源mac地址的报文被上送到中央处理单元(centralprocessingunit,简称cpu),将导致cpu处理性能下降,降低网络设备的转发性能和系统性能,严重影响网络服务质量。
技术实现要素:
本发明提供了一种报文处理方法、装置及设备,用以解决现有的交换芯片,不能对未知源mac地址的报文进行处理,此类未知源mac地址的报文被上送到cpu,将导致cpu处理性能下降,降低网络设备的转发性能和系统性能,严重影响网络服务质量的问题。
为了达到上述目的,第一方面,本发明实施例提供了一种报文处理方法,所述方法包括:
接收并解析交换芯片上送的报文,其中,所述报文携带报文上送cpu的方式信息;
根据所述报文上送cpu的方式信息,填充所述报文的报文描述符;
根据所述报文的报文描述符和所述报文的协议类型对所述报文进行处理。
其中,所述根据所述报文上送cpu的方式信息,填充所述报文的报文描述符,具体包括:
若所述报文上送cpu的方式为拷贝,则在所述报文的报文描述符中填充第一标识;
若所述报文上送cpu的方式为转发,则在所述报文的报文描述符中填充第二标识。
其中,所述根据所述报文的报文描述符和所述报文的协议类型对所述报文进行处理,具体包括:对所述报文的报文描述符和所述报文的协议类型进行解析,
若所述报文的报文描述符中包含第一标识,且所述报文的协议类型为非协议报文时,丢弃所述报文;
若所述报文的报文描述符中包含第一标识,且所述报文的协议类型为协议报文时,对所述报文继续进行后续处理;
若所述报文的报文描述符中包含第二标识,将所述报文进行转发。
进一步地,所述报文为未知源mac地址的报文。
第二方面,本发明实施例提供了一种报文处理装置,所述装置包括报文预处理模块和报文控制模块,
所述报文预处理模块,用于接收并解析交换芯片上送的报文,其中,所述报文携带报文上送cpu的方式信息;
所述报文预处理模块,还用于根据所述报文上送cpu的方式信息,填充所述报文的报文描述符;
所述报文控制模块,用于根据所述报文的报文描述符和所述报文的协议类型对所述报文进行处理。
其中,所述报文预处理模块,具体用于若所述报文上送cpu的方式为拷贝,则在所述报文的报文描述符中填充第一标识;
若所述报文上送cpu的方式为转发,则在所述报文的报文描述符中填充第二标识。
其中,所述报文控制模块,具体用于对所述报文的报文描述符和所述报文的协议类型进行解析,
若所述报文的报文描述符中包含第一标识,且所述报文的协议类型为非协议报文时,丢弃所述报文;
若所述报文的报文描述符中包含第一标识,且所述报文的协议类型为协议报文时,对所述报文继续进行后续处理;
若所述报文的报文描述符中包含第二标识,将所述报文进行转发。
进一步地,所述报文为未知源mac地址的报文。
第三方面,本发明实施例提供了一种网络设备,包括:处理器和存储介质;所述存储介质存储有所述处理器可执行的机器可读指令,当所述网络设备运行时,所述处理器执行所述机器可读指令,以执行如权利要求1-4任一项所述的报文处理方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4中任一项所述的报文处理方法的步骤。
本发明提供的一种报文处理方法、装置及设备,解决了由于交换芯片的差异,无法在启用端口安全功能的端口实现对未知源mac地址的报文的过滤,影响网络设备的正常转发性能和系统性能。根据接收到的报文中携带的报文上送cpu的方式信息填充报文描述符,并根据报文的报文描述符和报文的协议类型对报文进行丢弃或转发等操作。在不增加硬件开销的情况下,实现了端口安全功能的可用性,提升了网络通信的可靠性。本发明实施例的方法采用软件方式实现,能够兼容各种交换芯片,避免由于交换芯片的硬件差异导致端口安全功能失效的风险。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的一种报文处理方法的方法流程图;
图2为本发明实施例的一种报文处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例描述的系统架构以及业务场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
下面结合具体实施例对上述方法进行详细描述。
为实现安全访问控制,通常在接入交换机上开启端口安全功能进行安全接入控制。由于交换芯片的差异,在交换芯片上实现端口安全功能时,采用的技术方案也不相同,如具有访问控制列表(accesscontrollist,简称acl)功能的交换芯片,可以利用acl规则实现端口安全功能,而不具有acl功能的交换芯片,则可以使用如地址解析协议(addressresolutionprotocol,简称arp)等协议报文触发认证的方式来实现端口安全功能。这里采用arp进行举例说明,也可以采用其他协议报文触发认证实现端口安全,此处不做具体限定。
对于采用arp报文触发认证来实现端口安全功能的交换芯片,当该交换芯片的端口使能端口安全功能时,会关闭该端口硬件学习mac地址的能力;因此,经过该端口的报文,只有在硬件mac地址表中查找到对应的mac地址,才允许通过,否则丢弃该报文。即未认证前,未知源mac地址的非arp报文将全部被丢弃,此丢弃过程由交换芯片完成。只有未知源mac的arp报文可以trap(中文释义:拷贝)到cpu,经过端口安全的ip-mac规则处理后,把mac地址添加到硬件mac地址表,完成对该mac地址的认证,后续此mac地址的报文就可以正常转发。然而部分存在硬件缺陷的交换芯片,当关闭端口硬件学习mac地址的能力后,未知源mac地址的报文(即未认证的报文)均不会被丢弃,因此,针对此种交换芯片,开启端口安全功能后,不仅未知源mac地址的arp报文会拷贝到cpu,未知源mac地址的非arp报文也会拷贝到cpu。这里的未知源mac地址的非arp报文包括但不限于二层报文或三层ip报文等,这些报文都会被拷贝到cpu队列进行处理,导致cpu队列很容易被占满,影响三层ip报文快速转发,导致系统性能下降。影响网络设备的转发性能和系统性能,严重影响网络服务质量。
基于采用的交换芯片,可以将未知源mac地址的非arp报文拷贝到cpu处理,若此类报文全部上送到cpu处理,会把cpu队列占满,影响正常转发和系统性能。所以在对报文进行预处理时,需要优先过滤掉未知源mac地址的非arp报文,避免该类报文上送到cpu队列进行处理,影响cpu的处理性能。对此,本发明实施例提供了一种报文处理方法,如图1所示,该方法包括:
步骤101、接收并解析交换芯片上送的报文,其中,交换芯片上送的报文中携带报文上送cpu的方式信息;其中,接收到的交换芯片上送的报文中包含正常转发的报文和未知源mac地址的报文,该未知源mac地址的报文可以是arp报文,也可以是非arp报文。
在本步骤中,接收到交换芯片上送的报文后,对该报文进行解析,提取出该报文中携带的报文上送cpu的方式信息,这里的报文上送cpu的方式信息包括但不限于trap(中文释义:拷贝)或者switch(中文释义:转发)等。在具体实现过程中,可以将报文上送cpu的方式定义为不同的数值以进行区分,如报文上送cpu的方式为拷贝,可以用“1”进行标识,报文上送cpu的方式为转发,可以用“0”进行标识。
在本发明实施例中,交换芯片上与cpu相连的端口,可以对出方向的报文配置携带私有字段,该私有字段的填充由硬件完成,用户可以配置携带该私有字段或不携带该私有字段,该私有字段中可以配置报文上送cpu的方式信息,基于不同的厂商,该私用字段可以定义不同的格式,此处不做具体限定。
步骤102、根据报文上送cpu的方式信息,填充报文的报文描述符;
在本发明实施例中,当报文上送到cpu后,需要对该报文进行预处理,即对该报文进行解析,根据该报文中携带的报文上送cpu的方式信息,填充报文的报文描述符。
作为本发明实施例的一种优选实施方式,报文上送cpu的方式信息可以携带在私有字段中,在对报文进行预处理并填充完该报文的报文描述符后,剥掉携带该报文上送cpu的方式信息的私有字段,还原出正常的以太网报文格式,以使本发明实施例的方法可以兼容各种交换芯片,通用性好。
在本步骤中,根据报文上送cpu的方式信息,填充报文的报文描述符,具体包括:
若报文上送cpu的方式为拷贝,则在报文的报文描述符中填充第一标识;
若报文上送cpu的方式为转发,则在报文的报文描述符中填充第二标识。
这里的“第一”、“第二”表示两者属于不同的标识,如第一标识可以为在报文描述符的相应字段填充“1”来进行标识,第二标识可以为在报文描述符的相应字段填充“0”来进行标识,具体标识的形式和内容,此处不做具体限定。
步骤103、根据报文的报文描述符和报文的协议类型对该报文进行处理。
在本发明实施例中涉及到的报文可以为二层报文,也可以为三层ip报文等,如若报文为二层报文时,由于二层报文的源mac地址被认证后,直接进行二层转发,不会再拷贝或转发到cpu,因此,未知源mac地址的二层报文上送cpu的方式为拷贝。如若报文为arp报文时,arp报文为协议报文,因此,未知源mac地址的arp报文上送cpu的方式为拷贝。如若报文为三层ip报文时,由于三层ip报文的源mac地址被认证后,报文上送cpu的方式为转发。因此,未知源mac地址的三层ip报文上送cpu的方式为拷贝。因此,当接收到的交换芯片上送的报文的报文上送cpu的方式为拷贝时,需要对该报文的协议类型进行解析,若该报文为arp报文,则继续对该报文进行后续处理。若该报文为非arp报文时,则丢弃该报文。
在本步骤中,根据报文的报文描述符和报文的协议类型对该报文进行处理,具体包括:对报文的报文描述符和报文的协议类型进行解析,
若该报文的报文描述符中包含第一标识,且该报文的协议类型为非协议报文时,丢弃该报文;
若该报文的报文描述符中包含第一标识,且该报文的协议类型为协议报文时,对该报文继续进行后续处理;此处的后续处理为将该报文发送到cpu队列进行处理。其中,第一标识表示该报文上送cpu的方式为拷贝。
若该报文的报文描述符中包含第二标识,将该报文进行转发。其中,第二标识表示该报文上送cpu的方式为转发。
本发明提供的一种报文处理方法,解决了由于交换芯片的差异,无法在启用端口安全功能的端口实现对未知源mac地址的报文的过滤,影响网络设备的正常转发性能和系统性能。根据接收到的报文中携带的报文上送cpu的方式信息填充报文描述符,并根据报文的报文描述符和报文的协议类型对报文进行丢弃或转发等操作。在不增加硬件开销的情况下,实现了端口安全功能的可用性,提升了网络通信的可靠性。本发明实施例的方法采用软件方式实现,能够兼容各种交换芯片,避免由于交换芯片的硬件差异导致端口安全功能失效的风险。
本发明实施例还提供了一种报文处理装置,如图2所示,该装置20包括报文预处理模块201和报文控制模块202,
报文预处理模块201,用于接收并解析交换芯片上送的报文,其中,报文携带报文上送cpu的方式信息;其中,接收到的交换芯片上送的报文中包含正常转发的报文和未知源mac地址的报文,该未知源mac地址的报文可以是arp报文,也可以是非arp报文。
在本发明实施例中,交换芯片上与cpu相连的端口,可以对出方向的报文配置携带私有字段,该私有字段的填充由硬件完成,用户可以配置携带该私有字段或不携带该私有字段,该私有字段中可以配置报文上送cpu的方式信息,该私用字段基于不同的厂商,可以定义不同的格式,此处不做具体限定。
报文预处理模块201,还用于根据报文上送cpu的方式信息,填充报文的报文描述符;
报文控制模块202,用于根据报文的报文描述符和报文的协议类型对报文进行处理。
作为本发明实施例的一种优选实现方式,在本发明实施例中,可以选择由报文控制模块提取报文正常转发所需要的报文内容,避免所有业务模块在报文分析上进行重复工作,报文控制模块只提取报文正常转发所需要的报文内容并填充报文描述符的相应字段,并不修改原始报文,便于某些特殊情况下对报文内容的回溯,提供了快速转发过程中保留原始报文的机制,有利于对整个软件系统的保持和维护。
其中,报文预处理模块201,具体用于若所述报文上送cpu的方式为拷贝,则在报文的报文描述符中填充第一标识;
若报文上送cpu的方式为转发,则在报文的报文描述符中填充第二标识。这里的“第一”、“第二”表示两者属于不同的标识,如第一标识可以为在报文描述符的相应字段填充“1”来进行标识,第二标识可以为在报文描述符的相应字段填充“0”来进行标识,具体标识的形式和内容,此处不做具体限定。
其中,报文控制模块202,具体用于对报文的报文描述符和报文的协议类型进行解析,
若该报文的报文描述符中包含第一标识,且该报文的协议类型为非协议报文时,丢弃该报文;
若该报文的报文描述符中包含第一标识,且该报文的协议类型为协议报文时,对该报文继续进行后续处理。这里的后续处理即为按照常规的流程对该报文进行处理,具体处理方式,此处不做具体限定。
若该报文的报文描述符中包含第二标识,将该报文进行转发。
本发明提供的一种报文处理装置,解决了由于交换芯片的差异,无法在启用端口安全功能的端口实现对未知源mac地址的报文的过滤,影响网络设备的正常转发性能和系统性能。根据接收到的报文中携带的报文上送cpu的方式信息填充报文描述符,并根据报文的报文描述符和报文的协议类型对报文进行丢弃或转发等操作。在不增加硬件开销的情况下,实现了端口安全功能的可用性,提升了网络通信的可靠性。
本发明实施例还提供了一种网络设备,包括:处理器和存储介质;所述存储介质存储有所述处理器可执行的机器可读指令,当所述网络设备运行时,所述处理器执行所述机器可读指令,以执行如权利要求1-4任一项所述的报文处理方法。
其中,上述处理器是电子设备的控制中心,利用各种接口和线路连接整个终端设备的多个部分,通过运行或执行存储在存储器内的软件程序和/或模块以及调用存储在存储器内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器可包括一个或多个处理单元;优选的,处理器可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。
存储器可用于存储软件程序以及各种数据。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例的报文处理方法的多个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,的计算机可读存储介质,如只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等。
需要说明的是,在具体实现过程中,上述如图所示的方法流程中所执行的各步骤均可以通过硬件形式的处理器执行存储器中存储的软件形式的计算机执行指令实现,为避免重复,此处不再赘述。上文中的存储器可以包括易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram);也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom),快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);还可以包括上述种类的存储器的组合。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以集成在一个处理单元中,也可以是各单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
1.一种报文处理方法,其特征在于,所述方法包括:
接收并解析交换芯片上送的报文,其中,所述报文携带报文上送中央处理单元cpu的方式信息;
根据所述报文上送cpu的方式信息,填充所述报文的报文描述符;
根据所述报文的报文描述符和所述报文的协议类型对所述报文进行处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述报文上送cpu的方式信息,填充所述报文的报文描述符,具体包括:
若所述报文上送cpu的方式为拷贝,则在所述报文的报文描述符中填充第一标识;
若所述报文上送cpu的方式为转发,则在所述报文的报文描述符中填充第二标识。
3.根据权利要求2所述的方法,其特征在于,所述根据所述报文的报文描述符和所述报文的协议类型对所述报文进行处理,具体包括:对所述报文的报文描述符和所述报文的协议类型进行解析,
若所述报文的报文描述符中包含第一标识,且所述报文的协议类型为非协议报文时,丢弃所述报文;
若所述报文的报文描述符中包含第一标识,且所述报文的协议类型为协议报文时,对所述报文继续进行后续处理;
若所述报文的报文描述符中包含第二标识,将所述报文进行转发。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述报文为未知源mac地址的报文。
5.一种报文处理装置,其特征在于,所述装置包括报文预处理模块和报文控制模块,
所述报文预处理模块,用于接收并解析交换芯片上送的报文,其中,所述报文携带报文上送中央处理单元cpu的方式信息;
所述报文预处理模块,还用于根据所述报文上送cpu的方式信息,填充所述报文的报文描述符;
所述报文控制模块,用于根据所述报文的报文描述符和所述报文的协议类型对所述报文进行处理。
6.根据权利要求5所述的装置,其特征在于,所述报文预处理模块,具体用于若所述报文上送cpu的方式为拷贝,则在所述报文的报文描述符中填充第一标识;
若所述报文上送cpu的方式为转发,则在所述报文的报文描述符中填充第二标识。
7.根据权利要求6所述的装置,其特征在于,所述报文控制模块,具体用于对所述报文的报文描述符和所述报文的协议类型进行解析,
若所述报文的报文描述符中包含第一标识,且所述报文的协议类型为非协议报文时,丢弃所述报文;
若所述报文的报文描述符中包含第一标识,且所述报文的协议类型为协议报文时,对所述报文继续进行后续处理;
若所述报文的报文描述符中包含第二标识,将所述报文进行转发。
8.根据权利要求5-7任一项所述的装置,其特征在于,所述报文为未知源mac地址的报文。
9.一种网络设备,其特征在于,包括:处理器和存储介质;所述存储介质存储有所述处理器可执行的机器可读指令,当所述网络设备运行时,所述处理器执行所述机器可读指令,以执行如权利要求1-4任一项所述的报文处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4中任一项所述的报文处理方法的步骤。
技术总结