论文部分内容阅读
作为最主要的传输层协议之一,TCP为大部分的互联网应用提供了数据的可靠传输服务,因此TCP性能直接影响互联网业务的服务质量和公司营收。TCP的传输性能瓶颈分析一直以来都是网络协议的热点研究问题。随着互联网应用的不断变化,云盘上传、微信视频上传等应用场景已经越来越普遍;在这些应用中,上传场景已经与下载变得同等重要,甚至在某些应用中(如参与性视频直播)中,上传质量是影响用户体验更加重要的一环。在这些场景中,服务器端往往不是作为数据的发送端,而是作为数据的接收端。此时,需要在服务器端,即接收端,进行TCP传输性能的诊断和优化。 但是,TCP是发送端驱动的协议,大部分算法及其参数都是由发送端进行维护,接收端并不能够直接得到相关信息。针对接收端的诊断局限性问题,本文首先分析了TCP接收端能够得到的参数,并设计了相关参数的估计计算方法;在此基础上,设计并实现了一种基于决策树的接收端性能瓶颈诊断系统。本文的主要工作包含以下三个方面: 1.基于状态划分的TCP参数分析与计算。根据接收端的TCP协议特征,设计并实现了基于不同状态的参数估计计算方法。首先分析了在TCP接收端能够得到和利用的TCP参数,并将参数分为了五类。然后,通过对参数的特点进行分析和研究,将接收端的状态参数分为了连续收包状态和乱序收包状态;并依据在不同状态下的特点,得到了发送窗口、数据包发送间隔等参数的估算方法;最后,在发送端和接收端同时进行测量,对比验证了参数的估算准确性,误差范围最大不超过10%。 2.基于决策树的性能瓶颈诊断方法。根据接收端对每个性能瓶颈的诊断过程,设计并实现了基于决策树的TCP性能瓶颈诊断方法。首先,根据不同的性能瓶颈发生原理及其特征,分别在在连续收包状态下和乱序收包状态下,对相关的性能瓶颈进行了诊断原理的设计。然后,通过整理得到的性能瓶颈诊断方案,结合状态和参数间的关系,制定了决策树规则,并通过反馈机制不断地进行修正和优化。最终,实现了基于决策树的接收端TCP性能瓶颈诊断方法。 3.系统实现和验证。在Linux(Kernerl3.13.0)上,实现了所设计的TCP接收端性能瓶颈诊断系统。该系统利用抓包模块捕获TCP流,维护不同流的状态信息和变量信息,并利用性能瓶颈诊断决策树,对不同的流进行传输性能瓶颈的诊断。在可控网络环境的测试结果表明,该系统的性能瓶颈诊断准确性在90%以上。最后,利用该系统对某视频直播平台进行了性能瓶颈的诊断,发现了有近15%的TCP流出现发送端无数据可发等性能瓶颈,并提出了优化建议。