首页> 中国专利> 一种VxWorks系统网络侦听方法

一种VxWorks系统网络侦听方法

摘要

本发明公开了一种VxWorks系统网络侦听方法,能够实现VxWorks操作系统下以太网络数据包的抓取和分析功能,实时接收,实时处理,还具有识别数据包来自哪个网卡的功能,可以用于双冗余网络系统的网络侦听;同时,本发明也可作为一种VxWorks操作系统网络应用软件的调试手段,有助于提高应用软件的开发效率。

著录项

  • 公开/公告号CN112165446A

    专利类型发明专利

  • 公开/公告日2021-01-01

    原文格式PDF

  • 申请/专利权人 河北汉光重工有限责任公司;

    申请/专利号CN202010823335.9

  • 发明设计人 郭廷喜;

    申请日2020-08-17

  • 分类号H04L29/06(20060101);H04L29/08(20060101);H04L29/14(20060101);G06F9/448(20180101);

  • 代理机构11120 北京理工大学专利中心;

  • 代理人李微微

  • 地址 056002 河北省邯郸市经济开发区和谐大街8号

  • 入库时间 2023-06-19 09:23:00

说明书

技术领域

本发明属于嵌入式系统通信技术领域,具体涉及一种VxWorks系统的网络侦听方法。

背景技术

当前,随着计算机和通信技术的快速发展,嵌入式系统的性能日益提高,集成度更高、计算速度更快、存储容量更大,使嵌入式系统得到广泛应用,同时,在嵌入式系统领域的很多行业,网络通信取代了传统串口,并取得了良好的效益。在嵌入式系统中常用的是以太网,它是一种高速通信方法。

在以太网软件的开发与调试中,当出现以太网通信异常的情况时,常常借助侦听软件来对故障进行定位,确定是应用软件还是网络配置或者硬件链接出现问题,能够很快找出原因,使问题得到解决。所以,通用操作系统Windows及unixi系统都有网络侦听软件,比如,Windows操作系统的Sniffer Pro、OmniPeek、Ethereal和Wireshark,Unix系统下的tcpdump,它们都是必备的装机软件。而嵌入式VxWorks操作系统,支持网络通信,但不提供以太网侦听应用软件,使得VxWorks用户不能像Windows和Unix用户那样借助侦听软件,快速、便捷、高效地开发网络通信软件。所以,有必要开发基于VxWorks系统的网络侦听软件,为用户开发网络通信软件提供必要的帮助。

发明内容

有鉴于此,本发明的目的是提供一种VxWorks系统网络侦听方法,能够实现VxWorks操作系统下以太网络数据包的抓取和分析功能。

一种VxWorks系统网络侦听方法,包括如下步骤:

步骤1、利用MUX接口函数库的muxBind函数,把用户需要的协议和网卡链路层驱动进行绑定,同时绑定回调函数,即把用户编写的侦听函数设置为由MUX层负责调用的回调函数;

绑定回调函数时,所述侦听函数的函数指针是muxBind函数的一个参数;

步骤2、利用MUX接口函数库的muxIoctl函数,设置网卡的工作模式为混杂模式;

步骤3、当MUX层收到网卡驱动程序发送的数据包时,调用侦听函数捕获数据包。

较佳的,用户需要的协议包括MUX_PROTO_SNARF协议、MUX_PROTO_PROMISC协议或者MUX_PROTO_OUTPUT协议。

较佳的,设置网卡的工作模式为混杂模式的方法为:首先用muxIoctl函数获取网卡的当前的工作模式字,在得到的模式字中加入混杂模式,再把模式字写入网卡,完成混杂工作模式的设置。

较佳的,所述侦听函数还用于分析和处理报文内容。

较佳的,当网卡有2个时,侦听函数捕获到数据包后,首先识别数据包是哪块网卡收到的,再把数据包的报文内容显示出来。

本发明具有如下有益效果:

本发明的一种VxWorks系统网络侦听方法,能够实现VxWorks操作系统下以太网络数据包的抓取和分析功能,实时接收,实时处理,还具有识别数据包来自哪个网卡的功能,可以用于双冗余网络系统的网络侦听;同时,本发明也可作为一种VxWorks操作系统网络应用软件的调试手段,有助于提高应用软件的开发效率。

具体实施方式

下面对本发明进行详细描述。

本发明描述的是一种用于嵌入式系统以太网的网络侦听方法,适用于基于VxWorks操作系统的软件开发。

本发明描述的网络侦听方法用于捕获网络数据包,适用于开发类似windows系统的sniffer抓包软件那样的VxWorks应用软件。该方法使VxWorks用户能够接收通过网卡的全部以太网数据包,在数据录取、故障定位、网络诊断等诸多方面为用户的软件开发提供强有力的帮助。

嵌入式开发操作系统VxWorks不提供随机的网络侦听软件,所以,本发明描述的方法可为VxWorks操作系统用户提供这方面的技术支持,提供一种基于vxworks操作系统的以太网侦听方法,使VxWorks用户可以像Windows用户一样用抓包软件捕获数据包,在软件开发和应用的过程中得到所需的帮助。

为了更好地理解本发明描述的侦听方法的机理,有必要先介绍一下VxWorks网络协议栈的MUX层机制。

与通用计算机操作系统相比,嵌入式操作系统的网络设计要求适应更多的网络设备,支持更多网络协议。为了便于网络驱动程序和协议的开发,要求驱动程序和协议之间的耦合较松,因此,VxWorks操作系统在协议层和数据链路层之间加了MUX层。也就是说MUX层是为了减弱驱动程序和协议之间的耦合性而设计的。它的优点是,在开发网络设备驱动程序时,程序员不要考虑协议的影响,只要实现MUX提供的接口;同样,在开发协议时,也不要考虑下层驱动的影响,只要遵循MUX层接口规范。值得注意的是,网络协议层和数据链路层驱动程序不能直接通讯,它们必须通过MUX。

VxWorks网络协议栈的基本特征和传统的TCP/IP协议相似,VxWorks的网络协议栈最大的特点是在数据链路层和网络协议层之间多了MUX层。

在VxWorks的网络协议栈中,网络接口的驱动程序叫做END(Enhanced NetworkDriver),即增强型网络驱动程序,它处于数据链路层,是一种面向桢结构的驱动。IP层和TCP/UDP层合称为网络协议层。

在数据链路层和网络协议层之间有应用程序接口(API),叫做MUX(Multiplexer)接口,VxWorks提供了MUX接口例程库,用户使用该例程库实现对协议层和链路层的访问和控制。

本发明主要利用VxWorks操作系统的MUX接口例程库实现,在MUX层进行网络侦听,捕获网络数据包。

因为用户一般无法直接访问链路层,所以,用户只能通过MUX层获取数据包,具体说,就是用MUX例程库的MuxBind函数把一个协议和链路驱动程序关联起来,这样,驱动程序收到数据包后,就会传给MUX层,收到数据包后,MUX层调用协议对应的回调函数,获取网络数据包。回调函数是用户编写的C/C++函数,其函数指针是MuxBind函数的一个参数。

在VxWorks系统下,网卡接收到数据包后,向上传送给MUX层。在缺省工作模式下,网卡只接收发给本机的数据包,因此,为了实现侦听功能,需要改变网卡的工作模式,把网卡设为混杂模式。在混杂模式下,网卡不管数据包是不是发给本机,能够接收通过它的所有数据包,既接收发给本机的数据包,也接收不是发给本机的数据包。使用MUX例程库的muxIoctl函数设置混杂模式。

这样,通过调用MUX例程库函数,就可以实现网络侦听功能:网卡接收网上所有的数据包并上传给MUX层,MUX层再调用协议对应的函数获取网络数据包。

具体内容如下:

步骤1、绑定协议到链路层

利用MUX接口函数库的muxBind函数,把MUX_PROTO_SNARF协议和网卡链路层驱动进行绑定,同时绑定回调函数,即把用户编写的侦听函数设置为由MUX层负责调用的回调函数。

MUX_PROTO_SNARF协议的含义是:在所有标准协议之前调用用户的接收函数。还有MUX_PROTO_PROMISC、MUX_PROTO_OUTPUT等协议,用户有其它需要时,可根据需要绑定相应的协议。

绑定回调函数时,用户编写的侦听函数的函数指针是muxBind函数的一个参数。

绑定成功后,当MUX层收到网卡驱动程序发送的数据包时,会自动调用侦听函数捕获数据包。

步骤2、设置混杂工作模式。

利用MUX接口函数库的muxIoctl函数,设置网卡的工作模式为混杂模式,使网卡能够接收所有数据包。首先用muxIoctl函数获取网卡的当前的工作模式字(命令字参数为EIOCGFLAGS),在得到的模式字中加入混杂模式(位操作运算,位或(|)IFF_PROMISC),再把模式字写入网卡(命令字参数为EIOCSFLAGS),这样,就可完成混杂工作模式的设置。注:EIOCGFLAGS、EIOCSFLAGS和IFF_PROMISC是系统提供的muxlib.h文件中的宏定义。

步骤3、侦听函数:

侦听函数既可以获取数据包,还可以根据用户的需要在侦听函数中增加分析、处理报文内容的功能。数据包主要包括数据的来源、类型和长度、IP地址等信息。用户也可根据需要,编写代码,实现诸如报文内容的转换、打印和存盘等功能。

实施例:

运行环境由三台计算机和一个HUB组成。一台工控机,安装有vxworks操作系统,奔腾CPU,3块网卡,网卡0,网卡1,和网卡2,为Intel公司生产的同型号网卡,网卡的驱动程序相同。在该机上运行用本发明编写的侦听软件。

工控机的网卡0和网卡1用于侦听抓包,侦听软件需分别调用MuxBind函数为它们绑定网卡协议(MUX_PROTO_SNARF)和侦听函数,侦听软件还需分别调用muxIoctl函数把它们的工作模式设置为混杂模式(IFF_PROMISC)。网卡2用于侦听软件在Tornado环境下的在线开发和调试,只设置IP地址和地址掩码即可。

两台办公用PC机,均安装Windows XP系统,一台电脑专门运行各种网络测试软件,用来发送网络数据包,另一台电脑除了运行网络测试软件,还装有Tornado软件,用于侦听软件的在线开发和调试。

还有一个HUB。工控机和两台PC机分别用网线连接在HUB上,组成一个局域网,其中工控机的三块网卡都用网线连在HUB上。

运行过程是:首先所有设备开机,工控机运行侦听软件。随后两台办公用PC机运行网络测试软件,发送网络数据包。工控机捕获到数据包时,首先识别数据包是工控机的哪块网卡收到的,再把数据包的报文内容显示出来。

试验中,测试人员用sniffer、ping和自写网络测试软件发送各种数据包,工控机侦听软件都能实时捕获,并且数据包完整正确。还进行了稳定性测试,侦听软件运动稳定,工作正常。

试验成功后,该方法应用于单位开发的某型训练设备的双冗余网络侦听软件,实现了双冗余网络的侦听功能,能够实时捕获各种数据包,满足使用要求。

注:可参考Tornado的帮助文档,获取关于MuxBind和muxIoctl函数的功能、参数和返回值等的详细说明。

本发明的一种基于VxWorks操作系统的以太网侦听方法,该方法利用VxWorks操作系统网络协议栈的MUX机制,用MUX例程库进行编程,具有简单、实用、灵活和高效的特点,能够实时捕获各种数据包,应用于多网卡设备时,还能够识别数据包来自哪个网卡,已应用于产品开发中。实证表明,该方法是VxWorks操作系统下一种有效的网络调试手段,能够提高以太网应用软件的开发效率。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号