本发明涉及通信报文传输技术领域,尤其涉及一种基于fpga的端口镜像报文传输方法及系统。
背景技术:
端口镜像是指将指定源端口的报文复制一份到目的端口,目的端口与数据检测设备相连,网络管理员利用这些数据检测设备来分析复制到目的端口的报文,进行网络监控和故障排除。镜像功能的出现,给网管人员诊断网络故障带来了很大的方便。
现有的监控端与被监控端之间的镜像报文多是通过mac打标传输,而mac打标的方式有两个缺陷:第一安全性低,没有专用通道;第二,mac打标就是修改镜像报文的mac地址,将其某几位作为关键信息进行替换。也就是说,通过mac打标的方式传输镜像报文,是更改了原始报文信息。当mac地址发生错误的时候,无法判断mac地址是否出现了biterror。
综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。
技术实现要素:
针对上述的缺陷,本发明的目的在于提供一种基于fpga的端口镜像报文传输方法及系统,其不会更改原始报文,具有较高的安全性和可靠性,并且可维护性强。
为了实现上述目的,本发明提供一种基于fpga的端口镜像报文传输方法,包括以下步骤:
被监控端生成镜像报文;
提取镜像报文的关键信息,并将所述关键信息存入信息缓冲区;
根据所述信息缓冲区的关键信息,处理生成gre头部信息;
读取所述镜像报文,并将所述镜像报文填充到所述gre头部信息之后。
根据本发明的基于fpga的端口镜像报文传输方法,所述方法还包括:
被监控端将报文处理单元处理得到的gre报文发送至监控端;
监控端接收所述gre报文。
根据本发明的基于fpga的端口镜像报文传输方法,所述报文的关键信息包括报文类型、报文版本、报文长度和ip地址。
根据本发明的基于fpga的端口镜像报文传输方法,将所述镜像报文填充到gre数据帧的预定位置步骤包括:
读取所述镜像报文,并将所述镜像报文填充到所述gre头部信息之后;
将gre头部的protocol设置为0x6558mac。
根据本发明的基于fpga的端口镜像报文传输方法,所述方法还包括:将所述gre头部预定位置做含义标记
本发明还提供一种基于fpga的端口镜像报文传输系统,包括监控端和被监控端,所述被监控端包括:
镜像报文生成单元,用于生成被监控端的镜像报文;
信息提取单元,用于提取镜像报文的关键信息,并将所述关键信息存入信息缓冲区;
gre封装单元,用于根据所述信息缓冲区的关键信息,处理生成gre头部信息;
报文处理单元,将所述镜像报文填充到gre数据帧的预定位置。
根据本发明的基于fpga的端口镜像报文传输系统,所述被监控端还包括:
报文发送单元,用于将报文处理单元处理得到的gre报文发送至监控端;
所述监控端包括:
报文接收单元,用于接收所述gre报文。
根据本发明的基于fpga的端口镜像报文传输系统,所述报文的关键信息包括报文类型、报文版本和报文长度。
根据本发明的基于fpga的端口镜像报文传输系统,所述报文处理单元进一步用于读取所述镜像报文,并将所述镜像报文填充到所述gre头部信息之后,并将gre头部的protocol我们设置为0x6558mac。
根据本发明的基于fpga的端口镜像报文传输系统,所述报文处理单元进一步用于将所述gre头部预定位置做含义标记。
本发明通过在被监控端生成镜像报文,并可以提取镜像报文的关键信息,存入信息缓冲区,被监控端可以根据所述信息缓冲区的关键信息,处理生成gre头部信息然后将所述镜像报文填充到所述gre头部信息之后,借此生成完整的gre镜像报文。本发明通过gre封装镜像报文不会更改原始报文,具有较高的安全性和可靠性,并且可维护性强。
附图说明
图1是本发明的系统结构示意图;
图2是本发明的镜像报文传输方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
gre(genericroutingencapsulation,通用路由封装)协议是对某些网络层协议(如ip和ipx)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如ip)中传输。
gre采用了tunnel(隧道)技术,是vpn(virtualprivatenetwork)的第三层隧道协议。tunnel是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个tunnel的两端分别对数据报进行封装及解封装。
参见图1,本发明提供了一种基于fpga的端口镜像报文传输系统,该系统包括被监控端10和监控端20,被监控端10以fpga为处理核心,可以生成镜像报文信息并传输到监控端20,使监控端20可以监测端口数据或网络运行状况。
具体的,被监控端10包括:
镜像报文生成单元11,用于生成被监控端10的镜像报文。
信息提取单元12,用于提取镜像报文的关键信息,并将所述关键信息存入信息缓冲区。
本发明的fpga内部时钟处理缓存镜像报文的同时,可以提取镜像报文的关键信息并存入info_buf(信息缓冲区)中。
gre封装单元13,用于根据所述信息缓冲区的关键信息,处理生成gre头部信息。
当info_buf为非空的时候,启动gre封装状态机,读取info_buf中的关键信息,产生gre头部信息,将报文关键信息写入gre头部,gre头部的protocol由报文处理单元14设置为0x6558mac。
报文处理单元14,用于将所述镜像报文填充到gre数据帧的预定位置。报文处理单元14读取所述镜像报文,并将所述镜像报文填充到所述gre头部信息之后。
具体的,本发明的报文的关键信息包括报文类型、报文版本、报文长度和ip地址。gre头部组建完成的同时读取镜像缓存报文buf中的镜像报文,将报文填充到gre报文头部后面,产生一个完整的gre数据帧。
本发明在fpga中采用gre封装方式,将所需要传输到镜像端口的镜像报文进行gre封装并在gre头部的关键位置做特殊含义标记,然后进行传输。
当然,为便于镜像报文的发送和接收,被监控端10还包括:
报文发送单元,用于将报文处理单元处理得到的gre报文发送至监控端20。
所述监控端20包括:
报文接收单元,用于接收所述gre报文,然后解封处理。
参见图2,本发明提供了一种基于fpga的端口镜像报文传输方法,其可以通过如图1所示的系统实现,该方法包括:
步骤s201,被监控端10生成镜像报文。
步骤s202,提取镜像报文的关键信息,并将所述关键信息存入信息缓冲区。
本发明的fpga内部时钟处理缓存镜像报文的同时,可以提取镜像报文的关键信息并存入info_buf(信息缓冲区)中。
步骤s203,根据所述信息缓冲区的关键信息,处理生成gre头部信息。
当info_buf为非空的时候,启动gre封装状态机,读取info_buf中的关键信息,产生gre头部信息,将报文关键信息写入gre头部,gre头部的protocol设置为0x6558mac。
步骤s204,将所述镜像报文填充到gre数据帧的预定位置。读取所述镜像报文,并将所述镜像报文填充到所述gre头部信息之后。
具体的,gre头部组建完成的同时读取镜像缓存报文buf中的镜像报文,将报文填充到gre报文头部后面,产生一个完整的gre数据帧。
当然,在上述步骤之后还包括被监控端将报文处理单元处理得到的gre报文发送至监控端;以及
监控端接收所述gre报文解封的步骤。
本发明在fpga中采用gre封装方式,将所需要传输到镜像端口的镜像报文进行gre封装并在gre头部的关键位置做特殊含义标记,然后进行传输。基于此,本发明不会更改原始报文,并且在公用网络中建立一条虚拟专用通信网络,具有高安全性和可靠性,可维护性强。
综上所述,本发明通过在被监控端生成镜像报文,并可以提取镜像报文的关键信息,存入信息缓冲区,被监控端可以根据所述信息缓冲区的关键信息,处理生成gre头部信息然后将所述镜像报文填充到所述gre头部信息之后,借此生成完整的gre镜像报文。本发明通过gre封装镜像报文不会更改原始报文,具有较高的安全性和可靠性,并且可维护性强。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。