VxWorks中以太网通信报文的粘连问题-基础电子_第1页
VxWorks中以太网通信报文的粘连问题-基础电子_第2页
VxWorks中以太网通信报文的粘连问题-基础电子_第3页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑VxWorks中以太网通信报文的粘连问题-基础电子VxWorks是美国WindRiver公司推出的一款专门为实时系统设计开发的操作系统内核,为程序员提供了高效的实时多任务调度、中断管理,实时的系统资源以及实时的任务间通信。它是一种功能强大而且比较复杂的操作系统,包括进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等部分。目前VxWorks应用已经十分广泛,从数码相机、路由器到B2隐形轰炸机、火星探路者,都有它的身影。在863某交通重大专项计划控制系统国产化研究项目中,分区控制计算机(DCC)和电机控制单元(MCU)也都采用了VxWorks操作系统。在现场测试过程中,我们发现基于TCP/IP网络协议传输的数据有时会出现粘包现象(即发送方发送的若干包数据传输到接收方时粘成一包)。针对这种情况,我们进行了专题研究与实验。本文重点分析了TCP/IP协议的粘包问题,并结合实验结果提出了解决该问题的对策和方法。

1报文粘连问题的现象及分析

1.1报文粘连问题的现象

TCP/IP报文粘连是指发送方发送的若干包数据,在接收方接收到时粘成一包,即后一包数据的头紧接着前一包数据的尾。由于报文长度与接收缓冲区长度有可能不成整倍数关系,所以粘连在一起的报文中有不完整的包。VxWorks操作系统会先将由网络传输来的数据放入系统接收缓冲区中,以备用户进程从中调用数据。此处假设接收方缓冲区长为L字节,L应有一定的长度,以保证至少可以存储一包数据。由于DCC和MCU之间需要传输不同种类的报文来进行数据交互,所以用户在程序中应为不同的报文分别设置不同的接收缓冲区来存放不同的报文数据。此处假设只有应答报文和状态报文两种,分别以用户缓冲区1和2来存储;长度应与用户层对应报文的长度相等,假设分别为m和n。粘包情况如图1所示。

图2分包处理过程

2.3交换机的解决方法

对于由交换机引起的报文粘连,有3种解决方法:

(1)使用有更强处理能力的交换机

可使用处理能力更强、拥有较大缓存空间的交换机。可是目前实验现场已经使用了某外国厂商的16*换机,且该交换机有1MB的缓存空间,使用更的交换机无疑会使成本增高。

(2)增加交换机数量

可将1台16*换机的工作量交由2台8*换机来完成,再将这两台交换机进行连接。这种方法可以明显降低一台交换机的数据处理负担,但会使系统的可靠性和安全性指标大幅度降级;而且随着以后实验设备的增加,不断连接新交换机的方法有可能使网络形成环路,这将造成网络瘫痪。所以,不建议使用此方法。

(3)修改对交换机的配置

可通过修改相关参数将交换机数据传输方式设置为无等待传输,即在交换机得到数据后不放入内部缓冲区,而是直接交给接收方。这种方式在一定程度上可以避免粘包现象的发生,但当报文传输很紧密时也有继续产生粘包现象的可能。

3结论

通过对发送方和接收方4种解决方法的现场实验,我们发现效果不尽相同。

①在关闭Nagle算法的情况下,发现Nagle算法依然在使用。终的结论是,这是Winsock的一个BUG,并且已经在微软的BUG目录中得到了证实,所以此方法无效。

②将Winsockkernelbuffer设置为0后粘包问题得到了解决,但传输速度明显降低。经测试,每秒大概只能传送5帧数据,这在VxWorks这种硬实时系统中是无法接受的。

③提高报文处理任务优先级的方法可以对报文粘连起到防治,但有可能产生一些不易发现的任务调度问题。

④分包处理的方法虽然不能防止粘连的发生,但是可以完全防止报文粘连对系统产生的影响。实践证明,使用分包处理的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论