对Linux操作系统中TCPIP网络协议的IP层排队分析.pdf
《对Linux操作系统中TCPIP网络协议的IP层排队分析.pdf》由会员分享,可在线阅读,更多相关《对Linux操作系统中TCPIP网络协议的IP层排队分析.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第!卷第#期!$%年#月计算机学报&()*+*,-&./0 12*3+45 6 7!)5 7#88 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 89:;7!$%对?操作系统中A B C D E C网络协议的E C层排队分析郭传雄郑少仁F解放军理工大学通信工程学院南京!%$%G H收稿日期I%J J J K$J K$!L修改稿收到日期I!$K%!K%#7本课题得到国家M八六三N高技术研究
2、发展计划F#G O K O$K$!K$K J J H资助7郭传雄P男P%J Q!年生P博士P研究方向为网络协议的设计R分析R评估及因特网S5+保障R操作系统对网络协议的支持7郑少仁P男P%J O J年生P教授P博士生导师P研究方向为交换与宽带网络技术7摘要随着网络技术的快速发展P主机间的通信速率已提高到千兆数量级P同时多媒体应用还要求网络协议支持多种业务类型7因此对传统的2&0 D(0协议栈进行研究P找出它们是否适于支持高速通信及提供S5+保障P并给出相应的改进方法具有重要的意义7基于这样的思路该文对T U V:W操作系统中的2&0 D(0协议的(0层排队进行了分析P提出了一种基于检测点的对2
3、&0 D(0协议栈(0层排队进行检测的方法7经实验发现在%$/的网络速率下(0层的输入侧没有排队现象发生P在(0层的输出侧的排队在大吞吐量时有周期性的变化现象7因此在T U V:W的2&0 D(0协议栈中仅需要在(0层的输出侧引入相应的分组调度算法F如XY SH以提供S5+支持7关键词T U V:W P高速网络P 2&0 D(0 P检测点P排队中图法分类号I2 0 O J OZ =_ a b cE C f_ a b cA B C D E CC d _ a _ g _ h a g i_?j 1.&k:l V K m U 5 V;n*)j+k l 5 K 3 o VF p q r s t s u
4、v w xy w zzu q t|s t w q r q t q v v!t q P|q#t q!%$%G HZ$a d g aXU%k%k o&l U(&5;&o)5*V o%+5&,%o-k V 5 6 5;.P%k o-5/:V U-l%U 5 V&l%o0 o%+o o Vk 5)%)k l)&o l-k o(j U;l 0 U%o&)o-5 V(Pl V(%k o/:6%U/o(U ll 6 U-l%U 5 V)&o 1:U&o%k oV o%+5&,&5%5-5 6)%5):5&%/:6%U K)o&2 U-o 7+5U%U)U/5&%l V%5U V 2 o)%U;l%o%k o
5、%&l(U%U 5 V l 62&0 D(0&5%5-5 6)%l-,%5*U V(5:%+k o%k o&U%U):U%l 0 6 o*5&k U;k K)o o(-5/:V U-l%U 5 V)l V(&5 2 U(U V;S5+73 l)o(5 V%k U)-5 V)U(o&l%U 5 V P%k o1:o:U V;5*(06 l.o&5*%k oT U V:W2&0 D(0)%l-,U)l V l 6.4 o(U V%k U)l o&79&5 0 U V;V 5(o/o%k 5(U)&5 5)o(%5U V 2 o)%U;l%o%k oU V%o&V l 6(01:o:U V;5*%k
6、 o)%l-,7.:&o W o&U/o V%)k 5+%k l%k o&oU)V 51:o:U V;l%k o&o-o U 2 U V;)U(o5*%k o(06 l.o&+k o V%k o&l%oU)%$/0 )Pl V(%k o1:o:U V;5*%k o)o V(U V;)U(o5*%k o(06 l.o&k l)o&U 5(U-l 6 0 o k l 2 U 5&7/5&o)5 k U)%U-l%o(l-,o%)-k o(:6 o&):-kl)XY Sl&oV o o(o(l%k o)o V(U V;)U(o5*%k o(06 l.o&%5&5 2 U(oS5+U V%k o*:%
7、:&o 75c 6 _ d 7 T U V:W Pk U;k K)o o(V o%+5&,)P2&0 D(0 P&5 0 U V;V 5(o P1:o:U V;8引言随着现代通信线路速率的极大提高及因特网的快速普及P人们对在因特网上支持多种业务的研究也越来越深入7目前主机间的通信速率已经达到%$/P%9 9/甚至%jP在因特网上提供S5+支持也成为网络协议中很重要的研究方向7研究界普遍认 万方数据为在未来的网络中要能同时支持多种业务类型!如话音数据实时视频#因此未来的网络在大幅提高带宽的同时!在网络协议中还必须引入对$%&的支持#对传统的()*+)协议进行分析!找出协议的各项处理开销!并提出相
8、应的改进方法一向是一个热门问题#文献,-.对()协议的处理开销进行了研究!文献,/.对如何提高01)的处理能力作了深入研究!文献,2.对&034&-#5的()*+)协议栈进行了实验!文献,6!7.分别提出了两种在用户态实现()*+)协议的方法!并分别研究了这两种方法的优点8文献,7!5 9.对单拷贝及校验和技术进行了研究!以期提高()*+)协议的效率#以上这些技术的主要目的是提高单机系统中()*+)协议的处理能力#现代网络技术的发展表明!未来的因特网将是一个多业务的综合网络!在将来的因特网上!不但要支持现有的传统+)数据业务!还将进一步支持如话音视频及其它类型的业务#因此!对基于+)协议的$%
9、&支持的研究正进一步地深入!从:)4;,5 2.到:)?&?A,5 6.到1 B C C&?A,5 7.!人们一直在寻找一种能提供$%&保障的网络体系结构#基于以上考虑本文对 B=D E的()*+)协议栈中的+)层排队进行了分析!以期找出它是否适于支持高速通信和提供$%&支持#选择 B=D E作为研究对象是因为其应用的广泛性及开放的源代码#B=D E操作系统起源于因特网!并借助于因特网而发展壮大#它具有一系列的优点如功能强大的开发环境友好的图形界面丰富的应用软件对各种硬件资源的良好支持等#B=D E内核支持多种处理器平台!具有真正的多任务机制!提供虚拟内存保护按需装入以及强大的网络功能#其中网
10、络功能是 B=D E内核中非常重要的组成部分#目前在因特网上有很大一部分的F?G服务器都是基于 B=D E来构建的#?B=S!:O T U D?O V?!+);N B O T及计费等功能#现在在因特网上已有很多分析及介绍 B=D E内核的文献!如文献,-!5 W.!但对于 B=D E内核中的网络协议目前还未见很深入的分析#本文主要对 B=D E内核中的()*+)协议栈进行分析与评估#在第Q节!对 B=D E的()*+)协议栈的结构进行分析!介绍 B=D E的()*+)协议栈的整体结构分组的接收与发送过程及+)层的排队现象8在第X节中介绍基于检测点的测试方法及检测点的设计8在第-节对 B=D E
11、协议栈+)层的排队进行测试!并对所得结果进行分析8最后总结全文并提出下一步的工作#本文所用的 B=D E内核版本为Q#W#X-#Y Z _ a*b a协议栈结构 B=D E的网络协议代码内嵌在内核代码中!为 B=D E内核的重要组成部分#B=D E的网络结构支持多种网络协议!在这里仅分析它的()*+)协议栈#图5所示的是 B=D E的网络结构框架!整个结构 由9层 组 成!以()*+)协 议 栈 为 例!分 为&4(JK 层+3K 层 ()c 01)d层+)层及网络设备驱动程序层#它所采取的这种结构可以很方便地在 B=D E内核中支持多协议!&4(JK 层是应用程序与内核中协议间的接口!屏蔽了
12、各种协议对应用程序而言的差别#各种底层协议在+)层会聚!实现了上层协议与+)下层协议及硬件无关#在下面首先介绍 B=D E的()*+)协议栈中分组在各协议层间的传送过程!然后分析()*+)协议栈中+)层的排队过程#Y#e分组在Z 的_ a*b a协议栈中的收发过程在 B=D E的 网 络 协 议 中 使 用 了 一 种 名 为T P G D C C,-!5 W.的缓冲区管理机制来管理分组#分组在内核中各层间移动时只需在T P G D C C中增加或减去相应的协议头#这种缓冲区管理机制被我们用来设计第X节中的检测点#在 分 组 发 送 时!用 户 程 序 经 系 统 调 用!调 用 B=D E内
13、核中的&4(JK 接口!再经()*+)协议Q计算机学报Q W W 5年 万方数据对数据进行处理!然后调用驱动程序发出数据!当驱动程序忙时!把数据放入所对应的队列中!操作系统在合适的时候会再尝试发送数据当物理层硬件收到数据后!将向操作系统提出中断!操作系统响应中断把数据取入内存!并置位网络协议所对应的#$%&(例程)#$%&(在*+,-.中是一种/%/0&(1 2 3&(1#4 2$5 6!操作系统在适当的时候运行#$%&(!把数据交给7 8 9:;9协议处理后提交给应用程序在#$%&(中!*+,-.先检查有无发送数据需要发送!再对接收数据进行处理!即发送是优于接收来处理的图?层排队过程由于7
14、8 9:;9协议是基于分组的存储转发方式的!因此必然在协议栈中存在排队在什么地方排队!排队的长度如何限制及对溢出分组的处理策略!对队列中的分组采取何种调度策略将极大地影响系统的效率及对A B的支持图所示为*+,-.中的7 8 9:;9网络排队模型在发送及接收方向分别有两个地方进行了排队在发送方向上对于7 8 9协议而言!在7 8 9层及;9层有排队!对于CD 9协议只是在;9层有排队在接收方有两个地方有排队!分别位于;9层及7 8 9:CD 9层 7 8 9层的排队是基于字节数的!;9层的排队是基于分组数的7 8 9层的排队是为了对输出输入的7 8 9分组进行缓冲E流量控制及重组F;9层的输出
15、排队是当;9层产生分组的速率大于底层硬件的线路速率时!对;9层产生的数据进行缓冲)在这里我们不考虑对;9分组进行分段重组的情况6!在;9层每一个底层驱动程序对应一个发送队列!它们的最大队列长度均为%G&H I$I$&2$#;9层的输入排队是当网络设备驱动程序收到有效的;9分组时!挂接到一个叫J K L M N A O的队列中等待;9层的处理所有的底层驱动程序对应一个公共的J K L M N A O输入等待队列目前*+,-.中的排队系统中采取的策略是先来先服务PF当排队系统溢出时!分组被丢弃并没有考虑分组所对应的内容对于;9层!J K L M N A O的大小为Q R R个分组S基于检测点的实验
16、方案的设计在本文中我们的目的是分析7 8 9:;9协议栈内部;9层协议的排队情况!这样传统的观测网络协议外部行为的工具如T L U V-WU等就不再适用为此与文献X Y Z类似!我们设计了一种基于检测点的方案!在协议栈的各个层次的代码内增加记录一些信息如时标E排队长度的代码来采集所需要的信息!然后再对这些信息进行分析这些代码在网络协议内部执行时是有时间耗费的!为了让这部分代码对网络协议的影响尽量小!我们采取了如下的措施)6只记录所需的最少量的信息!一般在检测Q期郭传雄等对*+,-.操作系统中7 8 9:;9网络协议的;9层排队分析P在本文的工作基本结束时!发布了新的*+,-.内核 在新发布的
17、内核中!新增加了对不同排队规则的支持 万方数据点记录时 标!分组序号!排 队 长 度如 果 有 排 队#信息$%#在测试时只记录专为测试而发出的带有特殊标识的分组$这样做可以使检测点只对测试分组起作用而不影响其它分组$在数据发送时&可以通过对()*+,所对应的()*数据结构及分组所在的*-./中增加特殊的标识0 1 234 5 6 7 138 9:;来启动检测点$但在数据接收时由于这时还不知道数据所属的()*&因此不能用上述的方法来启动检测点$为此我们利用了在?的A B C?D D的缓冲区管理机制&这种机制使得分组在由高层协议向低层协议传送时只在 E.的头部增加上层协议的报头&在由低层向高层协
18、议传送时只是去掉相应的低层协议的报头$因此我们在测试时发送的分组尾上带上特定的F字节标识G H:I:I:I:I&当检测到接收侧收到的报文尾部带有这样的标识时&启动检测点$对于发送侧典型的检测代码如下所示JK=D L M D NO P3Q R S T O=D U V WX0 1 234 5 6 7 138 9:;#YZ 63;1 2 2 1 6 8 Z:2 1 4 2 _#U 1 230 6 Z 13_:9 a 1 U 1 0 Z34 5 6 7 1%34&U 1 0 Z34 5 6 7 1%31 0 Z 4&%&2 1 4 2 _&U 1 b30 a 7 1 5&b a 1 a 139 1 0
19、#cKM L=D NO P3Q R S T O对于接收侧典型的检测点代码如下所示JK=D L M D NO P3Q R S T OZ 63;1 2 2 1 6 8 Z:2 1 4 2 _#4 4 d a 0 U ;0 1 Z 0 2e#U V 7 WX2:9 WF#=D e4 4 ddG H:I:I:I:I#Y4 4 Wdf U 1 230 6 Z 13_:9 a 1 5 1 g _34 5 6 7 1 f34&5 1 g _34 5 6 7 1 f31 0 Z 4&h&2 1 4 2 _&e4 4&b a 1 a 139 1 0#cKM L=D N1 P3Q R S T O i#检测点代码的
20、运行时间是定值$在?内核初始化时保留了一段内存区域用来保存各个检测点的记录信息$每个检测点对应一条线性队列&有一指针指向当前队列的第一个空闲位置$这样可以直接向本队列中插值$经实验测试这样的检测点代码在本实验环境中的时间耗费为G$F j A$由于检测点执行时间为定值&因此可以在最后测量结果中减去检测点的运行时间$F#对数据采取先记录再处理的方式为了减少对网络协议的影响&把数据的收集与数据的处理分开$当在?内核中收集到足够的信息后&再由应用程序对这些数据作进一步的分析及处理$此外为了消除操作系统的固有的不确定性&所有的测量结果都是多次测量后取平均值$本方法能对协议内部的各个功能分别进行检验$在对
21、k l层排队进行检测时&我们在协议栈中设置了两个检测点&如图%所示&检测点f对k l层的发送侧分组进行检测&检测点%对k l层的接收侧分组进行检测$m n o p q rs t u v w u协议栈w u层排队的分析m$x测试环境本文的测试环境是两台通过双绞线直接背靠背相连的l k k i I Gl)机选择背靠背方式是为了不使网络上的其它机器与测试机器竞争共享信道#&内存为f%y z&操作系统是+E|,I$f&?的内核版本是%$G$i F$所用网卡为k M!+#M A Af G G#$&网卡控制器为k M!y%I I y$我们在内核中增加了如图%所述的检测点&并为这些检测点保留了f%z内存作为
22、检测点数据的记录区$两台l)在测试时均运行在多用户状态&只运行最少量的后台进程$在下面我们对,)l v k l协议k l层的输入输出排队进行了测试$m$%大吞吐量情况下w u层的排队情况本实验的目的是测试在大吞吐量的情况下k l层发送及接收侧的排队情况$研究k l层的分组调度及队列变化情况可以为以后在,)l v k l协议中提供&$支持打下基础$由于我们在本文中仅对k l层排队进行研究&因此选择了.E l协议作为k l的上层协议来进行试验&但由于k l层协议与其它层次协议在?操作系统中的实现基本上是互相独立的仅通过少量的接口与上下层协议交互#&因此得到的关于k l层排队的结论实际上是与业务及上
23、层协议无关的$在测试时发送者尽全力给接收者发送.E l分组$当.E l分组的长度分别为f G%F和f F G G字节时&发送侧k l层的排队情况分别如图i&F所示$从上面的实验可以观察到一个有趣的现象J排队长度并没有随分组长度的增加而增加&而是反而有所减小$同时输出侧k l层排队呈现一种有规律的周期性变化$这表明操作系统在调度协议栈方面相当成功$当.E l分组长度为f F G G和f G%F字节时&在接F计算机学报%G G f年 万方数据收侧的!层没有排队发生#在实验中$当我们把分组长度降低到%&字节时$在接收侧的!层的排队在()间变化$仍然没有明显的排队现象#以上的结果是在发送者与接收者都没
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 操作系统 TCPIP 网络 协议 IP 排队 分析
限制150内