一种抓取和过滤报文的虚拟终端和方法

文档序号:9527456阅读:243来源:国知局
一种抓取和过滤报文的虚拟终端和方法
【技术领域】
[0001]本发明涉及计算机网络领域,特别是涉及一种抓取和过滤报文的虚拟终端和方法。
【背景技术】
[0002]随着软件的应用领域越来越广以及软件规模和软件复杂度的增加,软件调试在软件开发过程中占居越来越重要的位置,并逐渐为软件开发的一个制约瓶颈。程序调试越来越需要依赖复杂的现场环境,而开发人员不可能在现场进行程序设计和调试,现场设备也不允许由开发人员任意使用。在软件开发过程中采用虚拟调试环境已经是比较常态的方式,虚拟环境中的设备称为虚拟终端,通过虚拟终端可以最大程度模拟各种场景和现场环境、现场设备,从而完成软件的调试。
[0003]为了获取虚拟环境中调试软件所需要的数据,需要对数据源提供的数据报文进行抓取和过滤,目前虽然调试在虚拟环境中进行,但是收发报文还是采用第三方软件,例如wireshark工具软件进行报文的抓取和过滤。而在虚拟终端中嵌入第三方软件,往往存在耦合性差的问题,也增加了代码复杂度。

【发明内容】

[0004]本发明主要解决的技术问题是提供一种抓取和过滤报文的虚拟终端和方法,能够在为虚拟环境提供调试数据时,减少代码的复杂度、提高系统的耦合性,从而加快调试进度。
[0005]为解决上述技术问题,本发明采用的一个技术方案是:提供一种抓取和过滤报文的虚拟终端,该虚拟终端包括接收模块,用于接收数据源产生的所有数据报文;获取模块,用于获取用户预设的过滤条件;过滤模块,用于调用和所述过滤条件对应的BPF过滤器对所述数据报文进行过滤。
[0006]为解决上述技术问题,本发明采用的一个技术方案是:提供一种抓取和过滤报文的方法,该方法包括虚拟终端接收数据源产生的所有数据报文;获取用户预设的过滤条件;调用和所述过滤条件对应的BPF过滤器对所述数据报文进行过滤。
[0007]区别于现有技术,本发明的抓取和过滤报文的虚拟终端,用于接收数据源产生的所有数据报文;获取用户预设的过滤条件;调用和所述过滤条件对应的BPF过滤器对所述数据报文进行过滤;从而能够在为虚拟环境提供调试数据时,减少代码的复杂度、提高系统的耦合性,从而加快调试进度。
【附图说明】
[0008]图1是本发明抓取和过滤报文的虚拟终端的第一实施方式的结构示意图;
[0009]图2是本发明抓取和过滤报文的虚拟终端的第二实施方式的结构示意图;
[0010]图3是本发明抓取和过滤报文的方法的第一实施方式的流程示意图。
【具体实施方式】
[0011]下面结合【具体实施方式】对本发明的技术方案作进一步更详细的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
[0012]参阅图1,图1是本发明提供的抓取和过滤报文的虚拟终端的第一实施方式的结构示意图。
[0013]该抓取和过滤报文的虚拟终端100包括:接收模块110,获取模块120,过滤模块130。
[0014]其中,接收模块110,用于接收数据源产生的所有数据报文。
[0015]例如,当模拟环境模拟的是光线路终端(optical line terminal,0LT)时,数据源为光网络单元(Optical Network Unit, 0NU)。
[0016]具体的,所述数据源产生的报文有各种类型,例如用户数据报协议(UserDatagram Protocol,UDP)类型的数据报文、互联网组管理协议(Internet GroupManagement Protocol, IGMP)类型的报文、传输控制协议(Transmiss1n ControlProtocol, TCP)类型的报文,这些报文的目的地址是虚拟终端,或者只是经过虚拟终端转发。
[0017]获取模块120,用于获取用户预设的过滤条件。
[0018]例如,所述过滤条件为只需要用UDP类型的数据报文、或者只需要IGMP类型的报文。
[0019]过滤模块130,用于调用和所述过滤条件对应的柏克莱封包过滤器(BerkeleyPacket Filter, BPF)对所述数据报文进行过滤。
[0020]具体的,可以事先针对不同的过滤条件生成相应的BPF过滤器,以便随时调用。所述过滤器对数据包进行过滤后,将返回满足过滤条件的数据包的访问地址。
[0021]区别于现有技术,本发明的抓取和过滤报文的虚拟终端,接收数据源产生的所有数据报文;获取用户预设的过滤条件;调用和所述过滤条件对应的BPF过滤器对所述数据报文进行过滤;从而能够在为虚拟环境提供调试数据时,减少代码的复杂度、提高系统的耦合性,从而加快调试进度。
[0022]参阅图2,图2是本发明提供的抓取和过滤报文的虚拟终端的第二实施方式的结构示意图。
[0023]该抓取和过滤报文的虚拟终端200包括:接收模块210,获取模块220,过滤模块230。
[0024]其中,接收模块210包括确定单元211和接收单元212,确定单元211用于确定Socket描述符的参数值为链路层原始套接字所有协议,以及确定网卡标志位的参数值为混杂模式;接收单元212用于在所述确定单元211确定成功后接收数据源产生的所有报文数据。
[0025]例如,当模拟环境模拟的是OLT时,数据源为ONU设备。
[0026]具体的,所述数据源产生的报文有各种类型,例如UDP类型的数据报文、IGMP类型的数据报文、TCP类型的数据报文,而且这些报文的目的地址有的是虚拟终端,有的只是经过虚拟终端转发给被调试软件。在提供给被调试软件之前,都需要对这些数据报文先抓取过来进行过滤。
[0027]具体的,接收模块通过将Socket描述符的参数值设置为链路层原始套接字所有协议、以及将网卡标志位的参数值为混杂模式,可以让网卡处于洪泛模式,当网卡工作在该模式下时就能实现抓取所有数据报文,不管这个报文的目的地址是否该虚拟终端。
[0028]例如,以下语句用来实现将Socket描述符的参数值设置为链路层原始套接字所有协议:
[0029]sockfd = socket(AF_PACKET, S0CK_RAff, htons(ETH_P_ALL))。
[0030]例如,以下语句用来实现将网卡标志位的参数值为混杂模式:
[0031]struct ifreq ifr -J/定义网卡标志位的变量
[0032]strncpy (ifr.1fr_name, eno, strlen (eno)+1) ;// 获得网卡标志位
[0033]ifr.1fr_flags = IFF_PR0MISC//设置网卡标志位的参数值
[0034]获取模块220,用于获取用户预设的过滤条件。
[0035]例如,所述过滤条件为只需要用UDP类型的数据报文、或者只需要IGMP类型的报文。
[0036]过滤模块230包括解析单元231,获取单元232和判断单元233 ;其中,解析单元231用于调用所述和过滤条件对应的BPF过滤器对所述报文进行解析,获取单元232用于在所述报文中获取与所述过滤条件对应字段的参数值,判断单元233用于根据所述参数值是否满足所述过滤条件从而判断所述报文是否要保留。
[0037]例如,当过滤条件为只需要UDP类型的报文时,解析单元231对每个接收到的报文解析,获取单元232获取该解析出来的协议字段(报文头检验位和前面那个字段),判
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1