课程报告:TCP参数调整工具扩展_第1页
课程报告:TCP参数调整工具扩展_第2页
课程报告:TCP参数调整工具扩展_第3页
课程报告:TCP参数调整工具扩展_第4页
课程报告:TCP参数调整工具扩展_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

TCP参数调整工具扩展 宁波大学 信息学院 计算机152 傅江伟摘 要:TCPTuner是一个用于Linux的TCP(传输控制协议)拥塞控制内核模块和GUI(图形用户界面),允许实时修改TCP CUBIC的拥塞控制参数,这是Linux中当前的默认算法。具体而言,该工具提供对发送者拥塞窗口增长速率的alpha访问权限; beta,减少丢失事件的拥塞窗口的乘法因子; 以及CUBIC的快速收敛和tcp友好参数。此外,该接口还提供对最小重传时间和初始拥塞窗口大小的ip路由参数的访问。在本实验中,我们修改了TCPTuner中拥塞控制算法实现,试图采用Vegas拥塞控制算法来替换原本的Cubic拥塞控制算法。关键词:TCPTuner Cubic拥塞控制算法 Vegas拥塞控制算法TCP parameter tuning tool extension Ningbo University Fu JiangweiAbstract: TCPTuner is a TCP (transmission control protocol) congestion control kernel module and GUI (graphical user interface) for Linux, allowing real-time modification of TCP CUBIC congestion control parameters, which is the current default algorithm in Linux. Specifically, the tool provides alpha access to the growth rate of the senders congestion window; beta, the multiplication factor that reduces the congestion window of the lost event; and the fast convergence of CUBIC and the TCP friendly parameters. In addition, the interface also provides access to IP routing parameters for minimum retransmission time and initial congestion window size. In this experiment, we modify the congestion control algorithm in TCPTuner and try to replace the original Cubic congestion control algorithm by using the Vegas congestion control algorithm.Key words: TCPTuner Cubic congestion control algorithm Vegas congestion control algorithm1 引言TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。1TCP的功能:当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证报文传输的可靠 ,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCPTuner的作用:TCPTuner是一个用于Linux,使TCP(传输控制协议)拥塞控制内核模块和GUI(图形用户界面),允许实时修改TCP CUBIC的拥塞控制参数,这是Linux中当前的默认算法。 具体而言,该工具提供对Alpha的访问,该速率是发送者拥塞窗口增长的速率; beta,减少丢失事件的拥塞窗口的乘法因子; 以及CUBIC的快速收敛和tcp友好参数。 此外,该接口还提供对最小重传时间和初始拥塞窗口大小的ip路由参数的访问。2 相关工作下载并安装TCPTuner并搭建相应的环境。2第一步 构建和加载内核模块cd module/makesudo rmmod tcp_tuner.kosudo insmod tcp_tuner.kosudo sysctl -w net.ipv4.tcp_congestion_control=tuner第二步 建立并运行TCPTuner GUIsudo apt-get install qt5-qmake qt5-defaultcd gui/TCPTuner/qmakemakesudo ./TCPTuner第三步 搭建MaimaHi仿真环境sudo add-apt-repository ppa:keithw/mahimahisudo apt-get updatesudo apt-get install mahimahisudo sysctl -w net.ipv4.ip_forward=1cd mahimahi/./start_allcd mahimahi/./start_shell./start_client 5050 1 & - creates an tuner client in a new process./start_client 5050 0 & = max_window) curr_window *= beta; t = 0; else double K = cbrt(w_max * (1-beta) / C); double delta = (t - K);curr_window = max(curr_window, C * delta * delta * delta + w_max);t+;3 研究动机tcp的vegas算法是基于delay的一个拥塞控制算法,所谓基于delay也就是说窗口的变化只和RTT的变化相关。而传统的基于丢包的算法是窗口的变化和丢包相关.它的主要思想是估计一段时间能够发送的数据量,然后和最终发送的数据量比较。如果预测要发送的数据没有被发送,那么就会被认为可能出现拥塞状况,如果这个状态持久,那么就减慢发送速度,并且这个算法不仅作用于拥塞避免状态,而且还作用于slow start状态。所以想通过现有知识,尝试能否将TCPTuner中原本的CUBIC拥塞控制算法替换成Vegas拥塞控制算法。4 具体方案更改控制内核为vegas算法:图6:更改拥塞控制内核Vegas在拥塞避免阶段的具体算法如下567:(1)计算期望的吞吐量(Expected)和实际吞吐量(Actual)的差值。Diff = Expected - Actual = cwnd / baseRTT - cwnd / minRTT其中,baseRTT代表当路由器缓存中没有数据包时的RTT值。minRTT为上个RTT的测量值,由于此时路由器中已有数据包,需要排队,故minRTT baseRTT。Expected = cwnd / baseRTT为期望的吞吐量,是理想的情况下得吞吐量。Actual=cwnd / minRTT为实际的吞吐量。(2)路由器中缓存的数据包个数为:diff = Diff * baseRTT,即吞吐量的差值与链路时延的乘积。(3)窗口调整策略在每个RTT末,Vegas根据diff进行窗口调整。 cwnd(n) + 1 /* d(n) alpha */cwnd(n+1) = cwnd(n) /* alpha = d(n) beta */其中,d(n)代表第n个RTT时估算出的路由器中属于此连接的数据包的个数。cwnd(n)代表第n个RTT时的拥塞窗口。在mainwindow.cpp中更新代码(部分代码)图7 mainwindow.cpp部分代码修改在tcp_graph.h中更新代码图8 tcp_graph.h部分修改代码在tcp_graph.cpp中更新代码图9 tcp_graph.cpp部分修改代码5 实验结果图10 alpha=1,beta=1时窗口图像图11 alpha=1,beta=6时窗口图像图12 alpha=25,beta=31时窗口图像最后用iperf3测试了基于Vegas拥塞控制算法,拥塞控制窗口cwnd随时间的变化的准确结果。图13 Vegas拥塞控制算法下拥塞控制窗口cwnd随时间的变化发现实际情况与图形表示之间存在差距,猜想原因可能是没有正确提取到第n个RTT时估算出的路由器中属于此连接的数据包的个数的精准数值。6 结论展望由于CUBIC拥塞控制算法和Vegas拥塞控制算法原理相差较大,CUBIC算法中窗口的变化与丢包相关,而Vegas算法中窗口的变化只和RTT的变化相关。导致想要用Vegas拥塞控制算法直接替换TCPTuner中CUBIC算法的部分较难实现,最后虽然完成了基于Vegas拥塞控制算法的用户图形TCP参数控制界面,但是通过测试在Vegas拥塞算法控制下带宽和拥塞窗口大小随时间的变化,发现与实际情况还存在差距。希望以后通过更加系统的学习,深入了解TCPTuner的工作原理,完全掌握CUBIC和Vegas拥塞控制算法的原理及其实现,能达到以Vegas算法替换TCPTuner中的CUBIC算法,最后形成一个基于Vegas拥塞控制算法的精准的用户图形TCP参数控制界面。References:1 ,TCP介绍 /item/TCP/33012?fr=aladdin2 ,TCPTuner下载 /Gasparila/TCPTuner3 ,Linux(Ubuntu)系统下安装Qt library和Qt Creator全过程记录 /LEON1741/article/details/566817184 Kevin Miller,Luke Hsiao,TCPTuner: Congestion Control You

温馨提示

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

评论

0/150

提交评论