发明内容
本发明实施例提供了一种异常数据报文的镜像方法和装置,用以解决现有技术中无法通过镜像获取异常数据报文内容的问题。
本发明实施例提供的技术方案包括:
一种异常报文的镜像方法,包括以下步骤:
(1)对交换机设置镜像机制,并指定镜像源端口和镜像源端口;
(2)分析源端口的收发报文,筛选出其中的异常报文,复制缓存到存储空间;
其中,此步骤中所述异常报文是,相对于交换机能正常做储存转发的报文,交换机不能正常处理的,一般选择丢弃的非法报文。
此步骤中所述的复制缓存,执行前,需首先判断存储空间的剩余可用空间状态是否达到设定的阈值。
(3)对缓存的异常报文进行分类处理,即依据不同错误类型,相应的,在其原始异常报文头部,封装不同的自定义二层MAC头,使其成为端口可正常存储转发的正常报文;
其中,此步骤所述自定义的二层MAC头,即根据不同的异常报文类型,定义不同的未知目的MAC,也以此标识区分不同的异常报文封装;
(4)发送封装报文至镜像源端口;
(5)源端口接收到封装报文,依设定的镜像机制,芯片执行镜像操作,所述封装报文镜像到指定的镜像目的端口;
进一步还包括:
(6)解析镜像目的镜像端口接收到的镜像报文,筛选出封装报文,分析并进行解封装操作;
其中,此步骤中,筛选封装报文的依据即判断目的MAC,是否为步骤(3)中所定义的未知目的MAC;
显然,解封装后的报文即为原始异常报文内容。
上述步骤(3)和(6)所述的封装和解封装,可根据实际异常报文类型,进行多次重复执行。
本发明还提供一种异常报文的镜像装置,包括:
报文分析模块,用于区分正常和异常报文,并对不同类型的异常报文进行筛选分类;
报文复制模块,用于将异常报文复制缓存到报文存储模块,其中包括判断子单元和复制子单元,判断子单元用于判断存储模块的剩余可用空间状态;复制子单元用于,当剩余可用空间大于设定的阈值时,进行异常报文复制;
报文存储模块,用于缓存异常报文;
报文镜像模块,用于设置镜像机制,指定镜像源端口和镜像目的端口;
报文处理模块,包括封装子单元和解封装子单元,分别用于对异常报文的封装和解封装;进一步地,封装子单元针对实际异常报文错误类型,可多次封装;同理,解封装子单元,也可执行多次解封装。
报文监控模块,用于监控异常报文,分析和诊断故障。
本发明有益效果如下:
在本发明提供的技术方案中,通过对异常报文的封装,使其成为正常报文。再进一步的通过镜像机制,使其镜像到指定的目的端口。通过对目的端口镜像报文的解析,可以获取原异常报文的内容。
进一步地,对原异常报文字段(如目的MAC,源MAC,协议类型等报文字段)进行分析,可以有效帮助使用者分析、诊断设备故障和网络运行状况。
具体实施方式
为了解决现有镜像无法复制异常报文的问题,本发明实施例提供了一种异常报文的镜像方法和装置,其原理示意图如图3所示。
下面对本发明实施例进行详细描述:
参见图4,为本发明实施例提供的异常报文镜像的总体流程示意图,通过该流程,镜像目的端口可以获取到镜像源端口的异常报文,该流程包括以下步骤:
步骤401、对交换机设置镜像机制,并指定镜像源端口和镜像目的端口;
此步骤中,可根据设备芯片的支持情况,设置多个端口为镜像源端口,或设置多个端口为镜像目的端口;
步骤402、分析镜像源端口的收发报文,筛选出其中的异常报文,复制缓存到存储空间;
其中,异常报文为交换机不能正常存储转发的非法报文,目前此类报文的一般处理为选择丢弃,但此步骤中筛选出后,不予丢弃。
进一步地,判断存储空间剩余可用空间,若可用空间达到设定的阈值,即不影响其余正常报文的存储转发,对异常报文进行复制缓存到存储空间;若剩余可用空间未到达设定的阈值,可选择丢弃,不进行镜像处理。当然,实际应用中,可根据实际情况,采用其他处理方式,在此不再赘述。
步骤403、对缓存的异常报文进行分类处理,并根据其不同的错误类型,相应的封装成不同的正常数据报文(报文格式如图5所示),具体为:在其原始的异常报文头部封装自定义的二层MAC头部,其中,MAC头部的未知目的MAC值区分不同错误类型的异常报文,如表1所示:
小于64字节的报文,封装成目的MAC值为MAC_SHORT的二层报文,使其长度大于64字节;
CRC错误的报文,封装成目的MAC值为MAC_CRC的二层报文,重新计算CRC字段填入二层报文头部;
MAC头有错误的报文,封装成目的MAC为MAC_ERR的二层报文;大于1519字节的报文且校验和正确的报文,进行分割后再封装目的MAC为MAC_JUMBO的二层报文;
显然,表中其余异常报文均可按照上述策略进行封装,使其成为交换机可存储转发的正常报文。
进一步地,其中所述自定义的目的MAC值均为未知MAC地址,即交换机MAC表中无记录的地址。
表1
|
异常报文 |
封装目的MAC地址 |
1 |
长度小于64字节,校验和正确的报文 |
MAC_SHORT |
2 |
长度介于1519—9018之间,校验正确的报文 |
MAC_JUMBO |
3 |
帧超长且校验和正确的报文 |
MAC_GIANT |
4 |
长度小于64字节,校验和错误的报文 |
MAC_FRAGMENT |
5 |
帧超长且校验和错误的报文 |
MAC_JABBER |
6 |
MAC头有错误的报文 |
MAC_ERR |
7 |
校验和错误的报文 |
MAC_CRC |
… |
… |
… |
步骤404、发送封装报文至镜像源端口;
步骤405、镜像源端口接收到封装报文,依照设定的镜像机制,芯片复制一份到指定的镜像目的端口;
步骤406、解析镜像目的镜像端口接收到的镜像报文,筛选出封装报文,分析并进行解封装处理,获取原异常报文内容;
其中,此步骤中,筛选是否为封装报文的依据,即为判断其目的MAC是否为步骤403中自定义的未知MAC值。
至此,镜像目的端口完成对镜像源端口的异常报文镜像,通过连接在镜像目的端口的报文解析终端,对原异常报文的内容进行分析,从而诊断设备的故障和网络运行情况。
下面结合具体实例进行解释说明本发明,图6详细说明镜像小于64字节的异常报文的方法,图7详细说明镜像CRC校验错误的异常报文的方法,图8详细说明一种异常报文的镜像装置结构示意图。
实施例一:镜像小于64字节的异常报文
参见图6,为本发明实施例一的流程示意图,该流程包括:
步骤601、设置镜像机制,并指定镜像源端口和镜像目的端口;
步骤602、分析镜像源端口发送或者接收到的报文,并筛选出其中的异常报文;
步骤603、从筛选的异常报文中,再次筛选出校验和正确但字节小于64字节的报文,即本实施例需要镜像的异常报文。
步骤604、判断存储空间的剩余可用空间状态,如果没有达到设定的阈值(此阈值是根据实际工作情况设定,目的是确保不影响交换机对其余正常数据报文的存储转发处理),则直接丢弃,不再进行镜像处理;若剩余可用空间大于设定的阈值,则执行步骤605。
步骤605、将需镜像的小于64字节的异常报文缓存至存储空间。
步骤606、处理缓存在存储空间的异常报文,对异常报文进行封装,即增加二层MAC头部,其中,目的MAC设置为MAC_SHORT(MAC_SHORT为自定义的未知报文),用以在步骤611中判断封装报文的原异常报文的错误类型。
步骤607、对封装报文长度进行检查,如果仍小于64字节,继续重复执行步骤606,直至满足字节大于64字节;如果大于64字节,即执行步骤608。
步骤608、将封装报文发送至镜像源端口,镜像源端口即按设置的镜像机制,由硬件芯片实现将封装报文镜像至指定的镜像目的端口。
步骤609、对镜像目的端口接收到的镜像报文进行分析。
步骤610、对目的MAC为MAC_SHORT的报文进行解封装,即解除二层MAC头部。
步骤611、判断解封装后的报文目的MAC是否为MAC_SHORT;若是,即说明本报文是属于多次封装,则重复执行步骤610。
以上步骤602~步骤611重复执行,即,完成对全部异常报文中的所有小于64字节的报文的镜像。
至此,报文解析终端监控到所有镜像源端口的小于64字节的异常报文。
步骤612、报文解析终端设备解析出原异常报文,获取相应的字段内容,进一步的,可以用于分析、诊断设备的故障和网络运行情况。
实施例二:镜像CRC错误的异常报文
参见图7,为本发明实施例二的流程示意图,该流程包括:
步骤701、设置镜像机制,并指定镜像源端口和镜像目的端口。
步骤702、分析镜像源端口发送或者接收到的报文,筛选出异常报文;
步骤703、对筛选出的异常报文进行分类处理,进一步筛选出CRC错误的异常报文,即本实施例需要镜像的异常报文。
步骤704、判断存储空间的剩余可用空间状态,如果没有达到设定的阈值(此阈值是根据实际工作情况设定,目的是确保不影响交换机对其余正常数据报文的存储转发处理),则直接丢弃,不再进行镜像处理;若剩余可用空间大于设定的阈值,则执行步骤705。
步骤705、将需镜像的CRC错误的异常报文缓存至存储空间。
步骤706、处理缓存在存储空间的异常报文,对异常报文进行封装,即增加二层MAC头部,其中,目的MAC设置为MAC_CRC(MAC_CRC为自定义的未知报文),用以步骤709判断封装原始报文的类型;MAC头部的校验字段为重新计算封装报文的正确校验值后填充的。
步骤707、将封装报文发送至镜像源端口,镜像源端口即按照设置的镜像机制,由硬件芯片实现将封装报文镜像至指定的镜像目的端口。
步骤708、对镜像目的端口接收到的镜像报文进行分析。
步骤709、进一步地,对目的MAC为MAC_CRC的报文进行解封装,解除其二层MAC头部。
以上步骤702~步骤709重复执行,即,完成对全部异常报文中的所有CRC错误的报文镜像。
至此,报文解析终端监控到镜像源端口所有的CRC错误的异常报文。
步骤710、报文解析终端设备解析出原异常报文,获取其相应的字段内容。
基于同一发明构思,本发明还提供了一种异常报文的镜像装置,由于该装置解决问题的原理与一种异常报文的镜像方法相似,因此该装置的实施可以参考方法的实施,重复之处不再赘述。
图8为异常报文的镜像装置结构图,该装置包括:报文分析模块801、报文复制模块802、报文存储模块805、报文镜像模块806,报文处理装模块807以及报文监控模块810,其中:
报文分析模块801,用于区分正常和异常报文,并对不同类型的异常报文进行筛选分类;
报文复制模块802,用于将异常报文复制缓存到数据设备的存储空间,其中包括判断子单元803和复制子单元804,判断子模块用于判断存储模块的剩余可用空间状态;复制子模块用于,当剩余可用空间大于设定的阈值时,进行异常报文复制
报文存储模块805,用于缓存异常报文;
报文镜像模块806,用于设置镜像机制,指定镜像源端口和镜像目的端口,其中可根据芯片支持情况,指定设备中多个端口为镜像源端口或者为镜像目的端口;
报文处理模块807,包括封装子单元808和解封装子单元809。
实施中,封装子单元808,用于在镜像源端口,对报文中的异常数据报文进行封装;
解封装子单元809,用于在镜像目的端口,对封装报文进行解封装;
实施中,装置还可以包括:
报文监控模块810,用于监控、解析异常报文的内容,进一步地,分析、诊断设备故障和网络运行情况。
以上装置中,报文处理模块807中,封装子单元808和解封装子单元808实施时,可根据原异常报文错误类型分别进行多层封装和解封装处理。
显然,为了描述方便,以上所述装置的各部分以功能分为各种模块分别描述。当然,在实施本发明时,可以把各种模块的功能在同一个或多个软件或硬件上实现。
尽管已描述了本发明的两种实施例,但本领域的技术人员一旦得知了基本创造性概念,则可对这些实施例进行变更和修改。因此,所述权利要求意欲解释为包括实施例以及落入本发明范围内的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不实际脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明的权利要求及其等同的技术范围之内,则本发明也意图包括这些改动和变型在内。