基于网络设备驱动的IP隧道应用软件

2019-04-28 05:57黄腾郑凯姜孝伟
电子技术与软件工程 2019年3期
关键词:链路层网络协议开发板

文/黄腾 郑凯 姜孝伟

在TCP/IP世界中,以太网IP数据报的封装是在RFC 894[Hornig 1984]中定义的。前面12个字节是硬件地址(即MAC地址)。

对MAC地址的提取是IP隧道的关键技术。在Windows操作系统中,可以通过绑定底层适配器来提取服务端和客户端的MAC地址。但是,在VxWorks嵌入式实时操作系统中,没有相应的底层适配器应用函数。通过钩子函数可以钩取MAC地址,但钩子函数本身属于黑客机制,具有一定的风险。

本文通过开发SENS中的MUX层,对网卡底层原始数据进行提取,从而获取服务端与客户端的MAC地址,实现IP隧道技术。

1 可裁减的增强型网络堆栈

SENS独立于硬件设备接口,由协议驱动程序、多元接口MUX层和END网络驱动程序组成。

协议驱动程序负责与上层网络传输协议交互。增强型网络驱动END(Enhanced Network Driver)是一个数据链路层驱动程序,它通过MUX层与网络协议层通信。MUX层作为数据链路层和网络协议层之间的接口,用于管理网络协议接口和底层硬件之间的交互,将硬件从网络协议的细节中隔离出来。它是为减弱数据链路层与网络协议层之间的耦合性、提升网络驱动程序与协议的通信效率而专门增加的一层协议。

2 驱动程序与协议层共享缓冲区

VxWorks网络协议栈传输数据使用的内存,是在VxWorks操作系统启动进行网络协议初始化时申请的。VxWorks操作系统提供NetBufLib建立内存节点池,网络协议栈传输数据所需的内存都在这些内存节点池中申请,使用完毕后释放。

表1:IP隧道业务报文结构

表2:IP隧道应用软件抓取的MAC地址

NetBufLib使用三种数据结构处理网络协议栈传输的数据:mBlk、clBlk和cluster。其中,cluster保存的是实际的数据,mBlk和clBlk保存的是指向数据的指针,用于管理cluster中保存的数据。

在基于END驱动的VxWorks中,网络协议通过MUX接口与数据链路层进行通信,所有与网络接口相关的业务都在数据链路层驱动中处理,如数据的发送和接收。

3 IP隧道报文结构

在网卡之间搭建IP隧道,对每一个发送的IP报文封装IP隧道报头,对每一个接收的IP报文拆解IP隧道报头。业务报文结构如表1。

4 试验数据与分析

本文试验使用计算机和开发板搭建IP隧道。

试验准备阶段,在计算机上安装“业务模拟与分析系统”终端软件和UDP数据终端软件,用于和开发板之间进行数据包的收发。在开发板PPC上加载并运行IP隧道应用软件。

开机后,计算机和开发板网卡间会进行数据交互,IP隧道应用软件接收端会抓取开发板网卡收到的最原始数据。提取数据的前12个字节,开发板MAC地址在前(目的MAC地址),计算机MAC地址在后(源MAC地址)。试验数据如表2。

获取MAC地址后,在发送端封装IP隧道报头,处理时要把上述目的MAC和源MAC对调。

IP隧道应用软件接收来自“业务模拟与分析系统”终端软件的数据并通过UDP转发给UDP数据终端软件;同时,它通过UDP接收来自UDP数据终端软件的数据并转发给“业务模拟与分析系统”终端软件,从而形成测试回路。

5 结束语

我们进行了10000次开机试验,试验数据证明,本文通过开发MUX层抓取网卡底层最原始数据,对服务端与客户端MAC地址的提取成功率高达100%。同时,在“业务模拟与分析系统”终端软件中设置数据发送间隔为5ms情况下,回环测试的数据收、发丢包率为0%。试验数据表明,本文提出的通过开发MUX层实现网卡底层数据抓取的方法可以有效解决VxWorks嵌入式实时操作系统下IP隧道报文的收、发问题,从而保障无线通信。

猜你喜欢
链路层网络协议开发板
基于多空间内存共享的数据链路层网络包捕获方法
一种蓝牙多跳网络协议的设计与研究
Microchip最新推出两款PIC32 Curiosity开发板
基于载波技术的多点温度测量系统设计
基于DPI技术的语音视频流量监控系统设计与实现
浅析单片机开发板的设计与制作
基于FPGA全功能MVB网络从设备链路层IP核设计
数据链路层的选择重传协议的优化改进
IEEE 1394事务层接口的设计与实现
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板