vxworks网络协议栈.doc

vxworks网络协议栈.doc

ID:49408618

大小:246.50 KB

页数:14页

时间:2020-03-01

vxworks网络协议栈.doc_第1页
vxworks网络协议栈.doc_第2页
vxworks网络协议栈.doc_第3页
vxworks网络协议栈.doc_第4页
vxworks网络协议栈.doc_第5页
资源描述:

《vxworks网络协议栈.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、《嵌入式操作系统VxWorks中网络协议存储池原理及实现》周卫东蔺妍刘利强(哈尔滨工程大学自动化学院,黑龙江哈尔滨,150001)摘要本文讨论了网络协议存储池的基本原理和在嵌入式操作系统屮的实现方法。为在嵌入式系统中实现TCP/IP协议栈,提供了一种有效、简洁、可靠的缓冲区管理。关键词VxWorks;mBlk;clBlk;网络协议存储池VxWorks操作系统是美国WindRiver公司于1983年设计开发的一•种嵌入式实时操作系统(RTOS)。它以良好的持续发展能力、高性能的内核以及卓越的实时性被广泛的应用在通信、军事

2、、航空、航天等高精尖技术及实时性要求极高的领域屮。VxWorks操作系统有着优越的网络性能,而缓冲区的数据拷贝是影响网络性能的主要因素。众所周知,缓冲区在网络协议栈屮有两个作用:第一,提供载体,使分组或报文可以在各协议层小流动;第二,为各级缓冲区提供空间。缓冲区的设立使得TCP/IP协议栈支持异步I/0操作,异步操作对于协议栈的I/0性能是非常重要的。在网络输出的过程屮毎一层需要在数据的首部或者尾部添加数据头和数据尾来对数据进行封装使得接收端对应的层能够进行正确的接收,在输入的过程屮每层都需要将本层的数据头和数据尾去掉

3、而最终还原成发送端发送的数据。上述的封装/去封装和拷贝操作使得网络协议对内核的存储器管理能力提出了很多要求。这些耍求包括能方便地操作可变长缓存,能在缓存头部和尾部添加数据(如低层封装来口高层的数据),能从缓存屮移去数据(如半数据色向丄经过协议栈吋要去掉首部),并能尽量减少这些操作所作的数据复制。1使用netBufLib管理存储池的基本原理网络协议存储池使用mBlk结构、clBlk结构、簇缓冲区和netBufLib提供的函数进行组织和管理。mBlk和clBlk结构为簇缓冲区(cluster)屮数据的缓冲共亨和缓冲链接提供

4、必要的信息。netBufLib例程使用mBlk和clBlk来管理cluster和引用cluster41的数据,这些结构体中的信息用于管理cluster屮的数据并且允许他们通过引用的形式來实现数据共亨,从而达到数据“零拷贝”的H的。1.1结构体mBlk和clBlk及其数据结构mBlk是访问存储在内存池小数据的最基本对彖,由于mBlk仅仅只是通过clBlk来引用数据,这使得网络层在交换数据吋就可以避免数据复制。只需把一个mBlk连到相应mBlk链上就可以存储和交换任意多的数据。一个mBlk结构体包括两个成员变量mXext和

5、mXextPkt,由它们来组成纵横两个链表:mYext来组成横的链表,这个链表屮的所有结点构成一个包(packet);mXextPkt来组成纵的链表,这个链表屮的每个结点就是一个包(packet),所有的结点链在一起构成一个包队列,如图1所示。数据包1数据包2图1包含两个数据包的mBlk链结构体mBlk和clBlk的数据结构如下所示:struetmBlk{BLK_HDRM_PKT_HDRCLBLK*}M_BLK;structclBlkmBlkHdr;mBlkPktHdr;pCIBIk;/*header*//*pkthd

6、r*//*pointertoclusterblk*/CL_BLK_LISTclNode;AunionofnextclBlk*/UINTclSize;/*clustersize*/intclRefCnt;/*countofthecluster*/structnetPool*pNetPool;/*pointertothenetPool*/}CL_BLK;/*headeratbeginningofeachmBlk*/structmHdfstructmBlk*mNext;/*nextbufferinchain*/structm

7、Blk*mXextPkt;Anextchaininqueue/record*/UINTclSize;/*clustersize*/intclRefCnt;/*countofthecluster*/structnetPool*pNetPool;/*pointertothenetPool*/}CL_BLK;/*headeratbeginningofeachmBlk*/structmHdfstructmBlk*mNext;/*nextbufferinchain*/structmBlk*mXextPkt;Anextchaini

8、nqueue/record*/char^mData;/*locationofdata*/intmLen;/*amountofdatainthismBlk*/UCHARmType;AtypeofdatainthismBlk京/UCHARmFlags;/*flags;seebelow*/}M_BLKJIDR;/*record/pack

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。