首页 一种提高TCPIP网络协议传输速率的方法

一种提高TCPIP网络协议传输速率的方法

举报
开通vip

一种提高TCPIP网络协议传输速率的方法 - 1286- 1 引 言 随着网络技术的快速发展,主机间的通信速率已提高到 千兆数量级,同时多媒体应用还要求网络协议支持实时业务。 有些网络使用了嵌入式实时操作系统,但是在使用的过程中 发现网络的传输效率比较低。通过研究和分析发现 TCP/IP协 议的实现是影响局域网传输性能的主要因素之一,针对这种 情况需要进一步研究并改进 TCP/IP协议的实现方法。 通过分析 TCP/IP协议的实现过程,可以看到在整个过程 中,有以下几次数据的拷贝:从应用程序到系统内核的拷贝; 从系统内核到网卡设备数据缓冲区的拷贝;...

一种提高TCPIP网络协议传输速率的方法
- 1286- 1 引 言 随着网络技术的快速发展,主机间的通信速率已提高到 千兆数量级,同时多媒体应用还要求网络 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 支持实时业务。 有些网络使用了嵌入式实时操作系统,但是在使用的过程中 发现网络的传输效率比较低。通过研究和分析发现 TCP/IP协 议的实现是影响局域网传输性能的主要因素之一,针对这种 情况需要进一步研究并改进 TCP/IP协议的实现方法。 通过分析 TCP/IP协议的实现过程,可以看到在整个过程 中,有以下几次数据的拷贝:从应用程序到系统内核的拷贝; 从系统内核到网卡设备数据缓冲区的拷贝;网络层由于网络 最大传输单元(MTU)的限制对传输层传来的数据包进行分片 以及对分片的重新组合可能引起的拷贝。为了提高 TCP/IP网 络协议的传输速率,就要尽量减少以上过程中的拷贝次数。 以上数据拷贝出现的原因是用户应用程序中存放数据的缓冲 区不适合于在数据传输过程中进行共享,因为它与网络内核 缓存的结构不同。而且在网络输出的过程中每一层需要在数 据的首部或者尾部添加数据头和数据尾来对数据进行封装使 得接收端对应的层能够进行正确的接收,在输入的过程中每 层都需要将本层的数据头和数据尾去掉而最终还原成发送端 发送的数据。上述添加和去掉数据头和数据尾的过程也导致 了数据拷贝工作的进行。 本文对数据从应用程序到系统内核的拷贝过程进行了详 细的分析,提出减少拷贝的方案并通过实验验证了它对改进 TCP/IP协议传输速率所起到的作用。 2 改进前情况的分析 用户应用中的网络输出进程是通过调用系统调用实现 的。我们将 write、writev、sendto、sendmsg 4个系统调用统称为 写系统调用,它们的作用是往网络上连续发送数据。Writev和 sendmsg 系统调用可以接收从多个用户进程缓冲区中来的数 据,而其它两个系统调用只能接收从一个用户进程缓冲区中 来的数据。内核中采用结构 iovec指向要发送的应用层数据。 以上几个系统调用的过程,都需要把数据从用户进程缓 存区拷贝到内核中,过程如图 1和图 2所示。 拷贝进行之前,用户数据存储在进程缓冲区里,即由结构 iovec指向的缓冲区内。指针 cp指向内核中的一块缓存,一般 来说,这块缓存是一个 mbuf的数据区(详见下一节),此时这 块缓存是空的,等待拷贝函数将数据传输进来。 拷贝进行之后,用户数据被拷贝到 cp所指向内核中的缓 收稿日期:2004-12-20。 作者简介:张文叶(1978-),女,山东临沂人,硕士生,研究方向为软件工程和软件测试; 刘杰,男,研究员,硕士生导师; 刘新焕,男,主 任工程师。 一种提高 TCP/IP网络协议传输速率的方法 张文叶, 刘 杰, 刘新焕 (中国航天科工集团第二研究院 706所,北京 100854) 摘 要:随着网络技术的快速发展 , 主机间的通信速率已提高到千兆数量级, 同时多媒体应用还要求网络协议支持实 时业务。因此对传统的 TCP/IP协议栈进行研究, 找出影响它的传输速率的因素,并提出相应的改进方法具有重要的意 义。针对原协议的数据输出过程中从数据缓冲区到网络内核缓冲区有一次数据拷贝的过程,采用共享缓存区的方法避 免了这次拷贝,该方法提高了网络协议传输速率的有效性,缩短了网络的输出时间。 关键词:网络; TCP/IP; mbuf; 簇; 数据拷贝 中图法分类号:TP393.02 文献标识码:A 文章编号:1000-7024 (2005) 05-1286-04 Improving translate rate of TCP/IP protocol ZHANG Wen-ye, LIU Jie, LIU Xin-huan (Institute706, Second Academy of CASIC, Beijing 100854, China) Abstract:With the rapid progressing of network technology, the communication rate between hosts has reached Gigabit per second, and the multimedia applications require the network protocols to support real-time service. Therefore it is important to investigate the tra- ditional TCP/IP protocol stack, to find out the factors that affect its translate rate and then to improve it. To send data primary protocol should copy data from user buffer, to network kernel memory buffer. In order to avoid the copy, sharing buffer is used. Some experiments were done to enhance the translate rate of TCP/IP protocol. The result shows the time of the translate rate of TCP/IP protocol is shorter. Key words:network; TCP/IP; mbuf; mcluster; data copy 2005年 5月计算机工程与设计 May. 2005 第 26卷 第 5期 Vol. 26 No. 5 Computer Engineering and Design - 1287- 存,一般来说,这块缓存是一个mbuf的数据区(详见下一节)。 图 2为拷贝了 n个字节的情形,用户进程缓冲区的前 n个字节 被拷贝,cp所指向的内核缓存中已经保存了 n个字节。 3 网络协议中内核缓存的结构 网络协议对内核的存储器管理能力提出了很多的要求。 这些要求包括能方便地操作可变长缓存,能在缓存头部和尾 部添加数据(如底层封装来自高层的数据),能从缓存中移去 数据(如当数据分组向上经过协议栈时要去掉首部),并能尽 量减少为这些操作所做的数据复制。 目前普遍应用于网络内核中的存储器缓存为mbuf [3],它 是“memory buffer”的缩写。结构 mbuf的主要用途是保存在进 程和网络接口间互相传递的用户数据。有 4 种不同类型的 mbuf。它们依据在成员m_flags中填写的不同标志而不同。如 图 3所示。 (1)如果 m_flags等于 0,mbuf只包含数据。在 mbuf中有 108字节的数据空间(m_dat数组)。 (2)如果 m_flag的值是 M_PKTHDR,它指示这是一个分 组的首部,因为分组信息占用 8个字节,只有 100个字节的数 据可以存储在这个mbuf中。 (3)如果m_flag等于 M_EXT,则用到了一个 2048字节叫 做簇”的外部缓存,此 mbuf分配的空间就没有用。当 mbuf包 含超过 208字节的数据时,就分配一个大小为 2048(2K)字节 的簇,而不是使用多个mbuf来保存数据(第 1个带有 100字节 数据,其余的每个带有 108字节数据)。 (4)如果 m_flag等于M_EXT|M_PKTHDR,则 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 明这既是 一个分组首部,又用到外部缓存“簇”。 使用簇的一个明显的好处就是在要求包含大量数据时能 减少 mbuf的数目。例如,如果不使用簇,要有 20个 mbuf才能 包含 2048字节的数据:第 1个 mbuf带有 100字节的数据,后 面 18个每个存放 108字节数据,最后一个存 放 4字节数据。分配并链接 20个 mbuf比分配 一个包含 2048字节簇的 mbuf 开销要大。簇 的另外一个好处是在多个mbuf间可以共享一 个簇。这个共享的簇避免了内核将数据从一 个mbuf复制到另一个mbuf中,这节约了很多 的开销。它是通过为每个簇提供一个引用记 数来实现的,每次另一个 mbuf指向这个簇时 计数加 1,当一个簇释放时计数减 1。仅当引 用计数到达 0时,被这个簇占用的存储器才能 被其它程序使用。 几个mbuf可以由m_next链接成一个mbuf 链,以存放一个分组。多个分组则通过 m_net- pkt连接起来(如图 4所示)。在上一节中所述 的 cp 所指向的内核数据区就是这样的 mbuf 链,其中有的 mbuf可能带有外部簇。 4 改进方案 4.1 改进目标 本次改进的目标是取消数据从用户进程 图 1 调用拷贝函数之前的数据存储结构 cp 地址 长度 内核 进程 结构 iovec 要发送的应用层数据 图 2 调用拷贝函数之后的数据存储结构 cp 地址 长度 内核 进程 结构 iovec 要发送的应用层数据 N字节 图 3 网络内核缓冲区mbuf的 4种不同结构 图 4 几个 mbuf链接起来形成 mbuf链 mbuf () m_next m_nextpkt mbuf () m_next m_nextpkt mbuf() m_next m_nextpkt mbuf () m_next m_nextpkt mbuf () m_next m_nextpkt sockbuf () sb_mb 108字节的 缓存: m_dat 100字节的 缓存: m.pktdat mbuf () 0-108 NT_xxx 0 mbuf () 0-100 NT_xxx N_PKTHDR mbuf () 208-2048 NT_xxx M_EXT 2048 mbuf () 208-2048 NT_xxx N_PKT HDR I N_EXT 2048 2048字节的簇 (外部缓存) 2048字节的簇 (外部缓存) m_next m_nextpkt m_len m_data m_type m_flage m_pkthdr.len m_pkthdr.revlf m_ext.ext_buf m_ext.ext_free m_ext.ext_vlze m_hdr{} (20字节) pkthdr {} (8字节) m_ext {} (12字节) - 1288- 缓冲区到网络内核缓存的拷贝,以减少数据在网 络中传输的开销,提高网络的输出速度。因为数据需要 在网络协议中传输,原来的系统调用是把拷贝后放在网络内 核缓存中的数据作为参数传递给下层协议的。不进行数据拷 贝的话,就必须利用网络协议内核缓存中的指针结构,即mbuf 指向mcluster的指针,在各协议层中把需要发送的数据的地址 作为参数进行传输,如图 5所示。 4.2 具体方案 如在第 2节中所述,在原来的网络协议传输数据的过程 中,执行了输出系统调用之后,数据经过一个拷贝的过程,从 用户进程区传输到 cp所指向的mbuf链中,其中有的 mbuf使 用 2048字节的外部簇。而从图 5可以看出,在改进后的网络 协议中输出数据时,没有把数据从用户进程区到网络内核的 拷贝的过程,而是直接将mbuf链的数据指针指向用户进程中 的发送缓存(以 2K字节递增)。要实现这一目标就要进行相 关的必要的修改:要求被发送的数据是页面对齐的(以 2K字 节对齐),并且要求存放发送数据的缓存必须向系统申请。 系统初始化了空闲簇 mcluster 和 mbuf。被初始化以后, 空闲的mcluster被如下组织:全局变量 mbutl指向所有分配的 mcluster块的地址最小的mcluster块,而mclfree指向地址最大 的 mcluster块,高地址的 mcluster块通过指针mcl_next指向相 邻的低地址的 mcluster 块,如图 6所示。 因为要求用户应用程序中存放发送数据的缓存必须向系 统申请,而且发送的数据是以 2K 字节页面对齐的,空闲 mcluster链的结构正好符合要求。但是,存放发送数据的缓存 应该以 2K字节递增,为了适应这一要求,进行修改使得空闲 mcluster链如下组织:mclfree等于mbutl,即mclfree指向地址最 小的 mcluster块,低地址的 mcluster块通过指针 mcl_next指向 相邻的高地址的mcluster块,如图 7所示。 用户程序从mclfree所指向的空闲mcluster链中选取一段 连续的 mcluster 块组来存放要发送的数据。当发送完毕之后 释放这些 mcluster块。修改系统调用函数,取消从用户发送数 据缓存到网络协议内核缓存的拷贝,而是利用mbuf指向外部 簇 mcluster的指针来完成从该系统调用到下层协议的参数的 传递。 5 实验方案及结果 5.1 实验方案 实验的运行环境如图 8所示。 目标机 1 和目标机 2 的操作系统都是嵌入式操作系统 rtems-4.6.1。网卡都是 Intel82559网卡。8255910/100M快速以 太网控制器集成 10/100Mbps 物理层设备,是 Intel 的 PCI 板 LAN的领先解决方案。它被设计应用于网络接口卡、母板上 的 PCLAN设计、嵌入式系统和网络系统产品。82559低能量 和小体积的优点非常适合于能力和容量有限的环境。 进行改进前与改进后两组实验。在目标机 1上运行发送 端程序发送 UDP 数据包,选择的数据包的大小是 1400个字 节,实验中连续发送这样的数据包。为了进行全面的比较,其 它还有 150字节、4096字节和 5120字节几种数据包。在发送 端取发送前与发送后的时间差,本实验中是取的 CPU的晶振 值。所用目标机 1的机器主频是 1.5G。比较改进前与改进后 所用的时间,检验改进的效果。在目标机 2上运行接收端程 序。在接收端显示接收缓存中收到的数据,检验传输的数据 是否正确。 一共有 3组应用程序:改进前不同数据包的发送应用程 序;接收应用程序;改进后不同数据包的发送应用程序。改进 前的测试:在目标机 1上运行改进前数据包的发送应用程序 的可执行文件,在目标机 2上运行接收文件,记录目标机 1上 显示的 CPU的晶振值,并观察目标机 2上显示的收到的数据 是否是目标机 1发送的数据,在本实验中为了简化,一律发送 字母“a”。 改进后的测试:把 rtems-4.6.1中需要进行修改的文件进行 如第 4节所述的相应的修改。重新编译 rtems,重新构造应用。 在目标机 1上运行改进前数据包的发送应用程序的可执行文 件,在目标机 2上运行接收文件,记录目标机 1上显示的CPU 的晶振值,并观察目标机 2上显示的收到的数据是否是目标 机 1发送的数据,在本实验中为了简化,一律发送字母“a”。 实验数据如表 1和表 2所示。 图 5 改进之后取消了从用户缓存到内核缓存的数据拷贝 地址 长度 输出系统调 用运行前 地址 长度 结构 iovec 要发送的应用层数据 输出系统调 用运行后 结构 iovec 要发送的应用层数据 地址 长度 Mbuf结构 地址 长度 Mbuf 结构 地址 长度 Mbuf结构 图 6 改进前的空闲 mcluster链 mbutl mclfree ⋯⋯ 图 7 改进后的空闲 mcluster链 mclfree mbutl ⋯⋯ 图 8 实验的运行环境 发送数据程序 接收数据程序 目标机 1 82559网卡 目标机 2 82559网卡 Hub - 1289- 上面两个表中第 1 行代表发送的数据包的大小及包数, 例如:1400*20代表每个包 1400字节,共发送 20个包。每一列 是进行这一次发送所用的时间(CPU晶振值),单位是s/1.5×109。 为了减少不稳定性的干扰,每个发送程序都运行了 5遍,每列 的最后一个数都是前 5个的平均值。 表 3中改进百分比为:时间差值 /改进前时间。 改进前与改进后接收端显示接收到的数据都是字母“a”, 检验了传输的正确性。 5.2 实验结论 由以上实验数据可以得出结论:通过改进,TCP/IP协议的 数据传输效率得到明显提高,提高得程度由于发送包大小不 同而不同,发送包越大,传输效率提高越明显。这是因为复制 不同大小的数据包所用的时间不同。 但是使用以上方法时应该符合以下两个约束条件:①用 户应用程序不立即重新使用缓冲区;②需要把缓冲区按 2K字 节的大小划分并且是连续的。 6 结束语 本文提出了一种提高 TCP/IP网络协议传输速率的方法, 并且通过实验证明该方法能够在不改变TCP/IP协议的层次结 构的情况下,对传输速率起到一定的改进作用。通过以上对 TCP/IP协议实现的研究和性能改进,可以为计算机应用提供 更快的网络基础设施。 参考文献 : [1] 郭传雄,郑少仁. 对 Linux操作系统中 TCP/IP网络协议的 IP 层排队分析[J].计算机学报, 2001,24(8):60-65. [2] 曾晖, 范里,刘海涛,等. SCSI系统中零拷贝技术的应用[J]. 计 算机应用与软件,2004,21(2):34-35 [3] 陆雪莹,蒋慧 译.TCP/IP详解 卷 2:实现[M].北京:机械工业出 版社, 2000.1-47 [4] 张公忠.现代网络技术 教程 人力资源管理pdf成真迷上我教程下载西门子数控教程protel99se入门教程fi6130z安装使用教程 [M].北京:电子工业出版社, 2000. [5] 史忠植.高级计算机网络[M].北京:电子工业出版社, 2002. [6] Kurt Wall.GNU/LINUX编程指南[M].北京:清华大学出版社, 2002.320-361. 表 1 改进前发送数据所用的时间 发送包 1400*20 1400*16 1400*12 1400*8 1400*4 第 1次 165276 140804 117392 92468 68216 第 2次 164188 139140 115312 89732 69552 第 3次 161268 141864 122604 90580 65136 第 4次 162796 136684 120688 90576 69512 第 5次 165204 145156 121172 96840 71724 平均值 163746 140729 119433 92039 68828 发送包 1400*1 150*20 150*1 4096*1 5120*1 第 1次 40948 106360 37088 69560 70284 第 2次 42280 104432 39168 70364 76352 第 3次 46512 102816 38208 66604 77740 第 4次 44564 104232 38460 69952 75540 第 5次 44944 103796 39660 66996 73976 平均值 43856 104327 38516 68695 74778 表 2 改进后发送数据所用的时间 发送包 1400*20 1400*16 1400*12 1400*8 1400*4 第 1次 135196 115600 94688 76220 55572 第 2次 136612 115272 95708 71812 54772 第 3次 137460 115768 94200 71804 55812 第 4次 134924 115552 95400 72540 54056 第 5次 137736 115392 93480 75728 54216 平均值 136385 115516 94695 73620 54885 发送包 1400*1 150*20 150*1 4096*1 5120*1 第 1次 39388 93084 37128 50604 56104 第 2次 38448 91144 36692 50372 54176 第 3次 35180 90088 36504 50240 54804 第 4次 38992 91668 38308 51744 53596 第 5次 35848 91044 34888 51124 53452 平均值 37571 91405 36704 50816 54426 表 3 改进前与改进后的比较 发送包 1400*20 1400*16 1400*12 1400*8 1400*4 改进前时间 163746 140729 119433 92039 68828 改进后时间 136385 115516 94695 73620 54885 时间差值 27361 25213 24738 18419 13943 改进百分比 16.7 17.9 20.7 20.0 20.3 发送包 1400 150*20 150 4096 5120 改进前时间 43856 104327 38516 68695 74778 改进后时间 37571 91405 36704 50816 54426 时间差值 6285 12922 1812 17879 20352 改进百分比 14.3 12.4 4.7 26.0 27.2 络、业务管理系统中增加性能管理模块,然后进一步与网络配 置、告警和故障等功能综合化处理。 参考文献 : [1] TMF506 2001.Service quality management business agreement, public evaluation ver. 1.5[S]. [2] TMF GB917 2000. SLA management handbook, evaluation Ver1.0[S]. [3] TMF GB910 2000. Telecom operations map, approved Ver2.1 [S]. [4] IETF-RFC1633 1994. Integrated services in the internet archi- tecture:An Overview[S]. [5] IETF-RFC2475 1998. An architecture for differentiated services [S]. [6] CCITT 1992, X.140. General quality of service parameters for communication via public data networks[S]. (上接第 1252页)
本文档为【一种提高TCPIP网络协议传输速率的方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_082293
暂无简介~
格式:pdf
大小:117KB
软件:PDF阅读器
页数:4
分类:互联网
上传时间:2013-11-14
浏览量:44