Internet网络规模迅速膨胀和用户数量的急剧增长不仅对网络设备提出了更高的要求,也推动了协议研究的深入。根据统计,目前全球互联网数据流量90%以上通过TCP传输,通过UDP传输的不足10%。而且TCP所占份额还在继续扩大,就连传统上通过UDP传输的多媒体应用也逐渐开始愈来愈多的采用TCP传输。TCP协议作为广泛使用的传输控制协议也面临着新的挑战:高可靠性、高稳定性和高效率。TCP通过序列确认以及包重发机制,提供可靠的数据流发送。当网络路径上存在一定的丢包和延时的情况下,TCP连接的吞吐显著下滑,常常无法有效地利用带宽,从而造成带宽的闲置和浪费,并必然导致远程数据传输耗时太长,应用响应缓慢甚至无法使用等问题。
针对TCP在现代网络环境中传输效率的问题,mmTrix的内核研发团队在分析了当前国内外先进TCP优化方法之后,研发出了新一代基于传输历史学习的单边TCP传输加速技术mmTrixTCP。
1、TCP单边加速核心--拥塞控制
拥塞控制算法是一种分布式的算法,它能够使相互竞争的用户共享网络资源。资源的可用性对用户来说是不可预知的,因此需要一种高效的共享方法,使数据源能够动态的调整发送速率以达到拥塞控制的目的。在Internet上,这些任务都是由TCP协议来完成的。
拥塞控制是分布式异步算法来共享带宽,它有两部分组成:
l TCP:发送窗口=min(rwnd, cwnd)
发送窗口决定了应用程序发送到网络中包的数量(单位是MSS), 因此决定了发送速率。
rwnd是接收端通告的表征接收端应用程序处理能力的接收窗口大小。
cwnd是根据网络拥塞情况动态调整的窗口值,它的调整策略由具体的拥塞算法来控制, 优秀的拥塞控制算法可以有效的消除网络噪音,真实的反应网络的拥塞情况,提升带宽利用率。
l AQM:主动队列管理技术使网络中间设备调整和反馈拥塞信息,在高吞吐和低延时之间做出平衡
AQM 是一种主动拥塞控制机制,可以有效地维持Internet的稳定运行。AQM通常利用当前的队列长度是否满或接近满来做出决策。由于网络存在传输时间滞后,采样所得的队列长度等拥塞信息,是反映一段时间之前的网络状况。当拥塞信息被反馈至发送端时,又增加了额外的延迟时间,AQM存在响应相对滞后于实际网络状况的缺陷。
因此一款优秀的拥塞控制算法需要综合考虑以上两部分的信息,能够快速检测网络中拥塞的发生,快速将拥塞信息报告到拥塞控制点并使拥塞控制点快速的进行调整消除拥塞,达到一个高吞吐,公平,稳定的带宽利用。
2、 mmTrixTCP如何优化拥塞算法不论是基于丢包还是基于延时的TCP加速技术都采用静态算法:基于对互联网流量模型的假设前提采用固定的拥塞判断及恢复机制。但网络的发展趋势是流量特征越来越复杂并难以预测。因此,基于延时和基于丢包的TCP加速技术常常只在其前提假设成立的特定网络场景下有效,并且随着传输的进行,网络路径特征发生变化,效果也会起伏不定,有时甚至出现反效果。为此,mmTrix研究设计的新一代基于学习的TCP加速技术采用网络路径特征自学习的动态算法,基于每一个TCP连接实时观察、分析网络特征,根据学习到的网络特征随时调整算法来更准确的判断拥塞程度、更及时地判断丢包,从而更恰当的进行拥塞处理并更快速 的进行丢包恢复。这一设计从原理上克服了静态算法无法适应网络路径特征变化的问题,保证了 在各种不同网络环境及频繁变化的网络延迟、丢包特征下加速效果的持续有效性。
mmTrixTCP在传统的拥塞控制算法基础上主要的加速机制
l 使用科学的拥塞反馈信号
作为新一代TCP加速技术,mmTrixTCP同时考虑丢包和延迟变化,并且引入了TCP连接路径网络特征自学习的动态算法机制来进一步提升拥塞判断的准确性和及时性。mmTrix通过动态学习分析的方式推导出特定TCP连接网络路径上反映拥塞的前兆信号,滤掉并非由拥塞导致的丢包和延迟变化,从而使拥塞判断更及时和准确。
l 建立更好的数学模型
更快达到网络最大利用率(减少慢启动和线性增加所做的逐步探测网络带宽的过程)。根据拥塞反馈信号动态计算一个网络的均衡点(在这个点实现了网络利用率的最大化,并且能尽量保证各方的公平性)。离均衡点越远,拥塞窗口调整越快,否则越慢。
l 使用平滑的突发控制方法
突发控制部分通过一种类流方式来追踪网络的可用带宽,以达到平滑数据包发送的目的。突发控制在大宽带时延积网络中的作用尤为重要,因此其受网络和末端主机的影响,通信量可能会非常大。比如,一个确认信息能够确认上千个数据包,这样会使发送窗口突然开的非常大。有时候发送端的CPU会被长期占用,以处理输入的数据包。这时允许输出的数据包堆积在设备输出队列中,当CPU可用时,就可能产生巨大的脉冲,这种脉冲会产生长队列,并会增加数据包大量丢失的可能性。
mmTrixTCP使用两种突发控制机制:一是对单个数据包补充自同步,二是使用连续小脉冲使窗口增加更加平滑。
l 使用基于预测的丢包判断
标准TCP协议栈通过两种手段判断丢包:一是接收端连续重复确认包的数量, 二是ACK超时。当有较多丢包时,往往要靠ACK超时来判读超时并引发重传。大时延积网络的丢包经常是阵发,一个连接上有上千个数据包同时丢失是常有的事。因此标准TCP经常要靠超时来重传,让传输长时间停滞。这是影响标准TCP效率又一最主要问题。
mmTrixTCP的丢包判断除了采用标准TCP的两种手段外,还引入了TCP连接路径网络特征自学习的动态算法机制来尽快地预测丢包。预测算法考虑的网络特征因素和mmTrixTCP拥塞判断的自学习算法类似。通过传输历史的跟踪学习,mmTrixTCP丢包判断算法随机对发出去尚未被对方ACK确认的数据包给出一个已丢失概率,概率值会随着传输的进行不断改变,当概率值达到一个很高的阈值时,算法认为该目前的包已丢,将立即启动重传。
4、mmTrixTCP性能测试为了测试mmTrixTCP的加速效果,我们对某站点进行了对比测试,测试目标为三个图片,分别为80KB、149KB和2MB大小。测试方法是在保持其他条件不变的前提下,分别监测使用mmTrixTCP加速前后实验对象加载的性能指标。结果如下:
80K图片总下载时间对比图
149K图片总下载时间对比图
2M图片总下载时间对比图
从上述测试结果可以看出,无论是大文件还是小文件,mmTrixTCP加速技术都有较好的提速效果,性能提升幅度在20%-30%之间。