APP下载

基于OMNEST的以太网传输丢包问题研究

2015-05-29王建璞赵亚丽占凌云

现代电子技术 2015年10期
关键词:以太网

王建璞+赵亚丽+占凌云

摘 要: 针对实验过程中以太网传输的丢包问题,使用OMNEST进行仿真建模,利用精确的系统描述,复现所出现的问题,进行丢包和端到端时延的研究。通过仿真分析定位问题,发现ARPCache中目的地址的超时或定期清空导致故障发生。基于此问题提出解决方案,为解决问题提供支持。

关键词: OMNEST; 丢包; 以太网; ARP解析

中图分类号: TN911?34; TP393.11 文献标识码: A 文章编号: 1004?373X(2015)10?0016?04

0 引 言

在通信系统建立以及调试过程中,仿真建模实验作为一种重要的支撑技术发挥着越来越重要的作用。相对于实物调试试验,使用仿真技术能够更快、更多的遍历问题出现的条件,为解决问题提供方案,提高工作效率。

OMNEST是一款面向对象的离散事件网络模拟器,它的特征体现在分层次嵌入式模块、各模块以模块类型分类、模块之间通过信号在通道上的传输进行通信、灵活的模块参数和拓扑描述语言。一个可执行仿真程序一般由网络描述语言NED、.h和.cc文件、配置文件INI及消息文件.msg组成,其中:网络描述语言NED,描述网络拓扑结构;.h和.cc文件,用于完成各模块的代码编写、也可以通过代码生成网络的拓扑结构,以及实现仿真结果的统计工作;配置文件INI,主要实现对模块参数的配置,便于对仿真参数的更改;消息文件.msg,可以模拟传输过程中的事件、消息、包、帧等。

本文使用OMNEST离散事件仿真工具对以太网进行建模,建立以太网节点模型及其中心节点内各分功能模块模型,多个节点模型通过NED语言联合组成最终的网络模型。节点模型由应用层模块APP、传输层模块UDP、网络层模块NETWORK(包含IP、ICMP、IGMP等子模块)、链路层模块ETH(包含ARP、ENCAP、MAC等模块)组成[1?2]。

1 以太网传输丢包问题分析

在进行某综合试验的过程中,使用千兆以太网通过交换机将主机与终端相连。在实际网络传输过程中,由主机产生消息通过接入设备路由将消息分别传输给所有的终端。对系统进行调试中,主机上的综合监控软件在向终端上的监控信息模拟软件发送数据的过程中出现丢包现象。经分析,对出现问题的原因建立故障树,如图1所示。

通过对故障进行排查,排除了硬件和应用软件的问题。在主机和终端上分别安装CommView抓包软件,通过多次试验,查看抓到的数据包发现出错的现象相同,故障可复现。每次出错时,数据包信息描述如下:

(1) ARP request方向为:本机→对端;

(2) IP分片方向为:本机→对端;

(3) ARP respond 方向为:本机←对端。

图1 故障树分析

查看抓到的数据包内容:

ARP Request方向数据包中源IP为本机IP,源MAC为本机MAC,目的IP为对端IP,目的MAC为全“1”,意为广播,这种形式的ARP包是在一台主机的ARP列表中不含有可用项时发出的标准的ARP请求数据包;

IP分片方向通过查看数据包的大小、偏移量和MF标志位,证实它是数据包中一包数据所分成的IP片中的最后一片(每包数据大小为8 960 B,被分成7个IP片);

ARP Respond方向数据包中的内容显示它是一个标准的ARP应答包。通过抓包分析猜测问题出现在ARP解析过程中,当发送方主机ARPCache清空或者目的地址超时导致MAC目的地址不可用,就会发起ARP查询时,故障出现。在故障树中对应于操作系统引起的故障。在连续试验过程中,由于故障每隔10 min会出现一次,因此,分析认为是系统定期ARP查询导致故障的出现。

2 仿真模型的建立

本文使用OMNEST进行仿真,实现由1台主机向6台终端通过路由器发送报文,对故障进行编码设计具有ARPCache清空功能的ARP协议,通过参数设定,与标准以太网模块进行比较定位问题。图2所示为使用OMNEST搭建的仿真场景。通过对抓包结果进行分析,定位问题可能出现在ARP解析过程中。在每一次ARP解析时都会出现丢包现象,而且总是丢掉IP分片的前面6片,而发送最后一个分片。

基于以上分析,本文建立如图3所示的节点模型,使用计算机体系结构5层协议来模拟发送数据端[3]。应用层为myapp,实现消息的产生,接收以及统计;传输层使用UDP协议,绑定端口号1 024;网络层建立IP?ICMP?IGMP结构模型,实现IP分片以及差错控制等功能;数据链路层建立myarp?encap?MAC结构模型,myarp模块实现地址的ARP解析模型,以及复现上述所定位的问题的编程实现,encap模块实现仿真中上下层报文的发送控制,MAC模块实现MAC地址的分配;最后通过1 000 MHz以太网发送。在消息的产生以及传输等方面,通过上述方法建立的节点模型都与实际情况一致。

图2 OMNEST仿真场景

图3 节点模型

图4为实现myarp模块的编码流程图。参考计算机网络ARP标准并结合实验的实际情况,本文设计具有ARPCache清空功能的ARP协议,在协议中中采用ARP高速缓存存放局域网上各主机和路由器的IP地址到硬件的映射表。本文中规定ARPCache清空时间为t1,而对于每一个目的地址,在协议中有一个生存时间为t2,在t2时间内使用过该目的地址则再延长一个生存时间,如果超过这个生存时间就会把这一地址映射丢弃。

3 仿真结果及分析

OMNEST系统自带有ARP模块,此模块按照计算机网络ARP标准建立。标准ARP模块无法准确描述实验出现的问题,所以本文建立具有ARPCache清空功能的以太网模型。仿真实验时,将具有ARPCache清空功能的以太网模型与标准的以太网模型进行对比。分别对故障树罗列情况进行仿真,得到仿真结果,并对仿真结果进行对比分析。

3.1 仿真参数

本文的仿真的参数都使用实物实验时设定的参数值和实验过程中实测的数据,以保证对系统的精确描述。

图4 ARP编码流程图

表1 仿真主要参数设定

3.2 仿真结果及分析

使用具有ARPCache清空功能的以太网模型进行仿真,千兆网下各发报时间点所对应的延时见图5。

图5 各发报时间点的延时情况

在10 s,20 s,30 s,40 s,70 s,100 s,440 s,530 s,570 s,600 s,620 s,630 s,670 s,730 s,740 s,900 s,940 s,1 200 s,1 210 s,1 230 s,1 280 s,1 380 s,1 510 s发生了丢包,其中10 s,20 s,30 s,40 s,70 s,100 s,600 s,620 s,630 s,670 s,730 s,740 s,1 200 s,1 210 s,1 230 s,1 280 s,1 380 s,1 510 s是由于ARPCache在每隔600 s进行一次清空导致的ARP查询,而440 s,530 s,570 s,900 s,940 s则是由于超过120 s未使用ARPCache中对应的目的地址过期导致的。其他时刻正常发出6个包,传输正常。

图6为仿真过程中发生ARP查询时,接收端应用层收到的报文。从图6中可看到,在ARP查询时,接受终端收到的报文大小为724 B,正好是IP分片的最后一片。正常传输时接收端会收到7个IP分片,而在仿真过程中发现,每进行一次ARP查询在MAC层都只能收到两个包,一个是ARP请求包,另外一个是IP分片,而在应用层只能收到一个包,是IP分片的最后一片。

图6 发出的报文情况

可以看出在ARPCache定时清空或目的地址超时发生的情况下,仿真可以复现实际以太网传输所出现的丢包问题。通过参数设定,将带ARPCache清空的的节点与标准模型下的节点对故障树对应的各个问题进行仿真对比,结果如表2所示。

表2 仿真结果

从仿真结果可以看出带ARPCache清空的以太网模型发送端都发生了丢包,而使用标准ARP模块的以太网模型的节点则没有发生丢包。通过参数设定进行仿真分析发现试验中的以太网丢包问题只和ARP查询有关,所以可以在实际试验中把问题准确定位在ARPCache上。

3.3 机理分析

从仿真中可以看出当ARP查询时会导致丢包,而致使ARP查询的原因是每隔600 s一次的ARPCache清空或者120 s每ARPCache内的目的地址未使用而导致的地址过期。对于这两个因素,在实际环境中进行验证分析。

(1) 操作系统自动发起ARP查询。在操作系统HKE_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/ TcpIP/Parameters注册列表下,保存了操作系统自动发起ARP查询时间的键值。键值1:ArpCacheLife,类型为Dword,单位为s,默认值为120;键值2:ArpCacheMinReferencedLife,类型为Dword,单位为s,默认值为600;默认情况下这些键值不存在,如需修改,则需自行创建。在默认情况下,Windows Server 2003和Windows XP的ARP缓存中的ArpCacheLife表项仅存储2 min,如果一个ARP缓存表项在2 min内被用到,则其再延长2 min,直到最大生命周期10 min为止,超过10 min的最大期限后,ARP缓存表项将被移除,并通过一对ARP请求和ARP应答来获得新的对应关系。综上所述,当ArpCacheLife小于ArpCacheMinReferencedLife的值时,ArpCacheLife表示未被使用的表项在ARP缓存中的生存时间,ArpCacheMinReferencedLife表示被重复使用的表项在ARP缓存中的生存时间,当设置ArpCacheLife的值大于或等于ArpCacheMinReferencedLife时,则被使用和未被使用的表项的生存时间均为ArpCacheLife。

(2) 发起ARP查询时仅发送最后一个IP片。在ARP协议源码中,获得与IP地址对应的MAC地址由arpresovle函数完成。该函数的一个工作特点是:如果一个节点没有一个有效的MAC地址就必须发送一个ARP请求,在发送ARP请求和接收ARP应答之间,如果有多个发往同一目的IP地址的数据包即IP分片要发送,则只把最近一个IP数据包保留,而将其他的IP分片丢弃。

4 解决措施

通过对问题机理的分析,可以看出在发送有IP分片的数据包时,ARPCache清空所带来的丢包就会发生,所以要解决这一问题就要从数据包大小和ARPCache清空两个方面入手。本文提出5种解决措施,并指出每种措施的优缺点,为实际应用提供支持,见表1所示[4]。

5 结 语

本文使用OMNEST通信仿真软件对以太网主机之间通信进行建模,对每个节点采用计算机网络体系5层结构进行精确仿真,使用C++编程实现每一个功能模块,使模型与真实模型逼近。针对以太网丢包问题,本文先建立故障树对故障进行理论分析,然后使用OMNEST建立具有ARPCache清空功能的节点模型,复现丢包现象,精确定位问题,并结合仿真结果提出问题的解决方案。随着通信仿真技术的发展,通信仿真手段越来越多的被用来解决工程问题。本文使用OMNEST对以太网丢包问题的描述和解决为后续同类工程问题的解决提供借鉴。

参考文献

[1] 赵永利,张杰.OMNET++与网络仿真[M].北京:人民邮电出版社,2012.

[2] 单卫龙,马奎,周武能.基于OMNeT++的“实代码”仿真模式研究[J].微型机与应用,2010(20):11?15.

[3] 谢希仁.计算机网络[M].北京:电子工业出版社,2008.

[4] 王海军,刘彩霞,程东年.一种基于UDP的可靠传输协议分析与研究[J].计算机应用研究,2005(11):181?185.

[5] 李振,郑连泽,饶广然.基于OMNeT++的Link 11网络建模仿真研究[J].现代电子技术,2012,35(3):21?25.

[6] 李爱国.SCTP在工业以太网通信技术中的应用研究[J].现代电子技术,2011,34(3):160?162.

猜你喜欢

以太网
NWCS' 23新一代车载以太网传输技术研讨会成功召开
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
三大因素驱动创新提速以太网快步迈入“灵活”时代
三大因素驱动创新提速 以太网快步迈入“灵活”时代
谈实时以太网EtherCAT技术在变电站自动化中的应用
基于以太网传输的高速32通道数据采集系统
一种90W高功率以太网供电系统的设计
基于SOPC的工业嵌入式以太网接口设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
万兆以太网在连徐高速公路通信系统改造中的应用