一、TCP拥塞控制

目前主要由3种技术:

1、Loss-based (基于丢包的拥塞判断及处理)– 以丢包来判断拥塞并调整传输速率。
2、Delay-based(基于延迟的拥塞判断及处理)– 以RTT变化来判断拥塞并调整传输速率。
3、Learning-based(基于学习的拥塞判断及处理)– 通过对路径上传输历史的学习动态判断拥塞并调整传输速率。

一、FastTCP调研(Delay-based)

2005年提出的一种新的TCP拥塞控制机制,适用大带宽时延积的网络。各种实验表明FastTCP在吞吐量、公平性、灵敏度和稳定性四个方面都优于其他的TCP协议。

0、FastTCP模型分析

数据管理、窗口控制、突发控制、估计部分

1、估计部分

通过数据包发送确认信息计算两个最重要的指标,为其它三个模块提供输入参数。

1)多比特的队列时延信息;
2)是否丢失信息;

1.1、平滑队列时延计算

1.2、是否丢失信息

三个重复的确认数据包或者超时;

2、数据管理

背景:
带宽时延积不断增大,当前窗口15000个包,一次丢失时间就有可能丢失7000个以上的数据包;丢包后怎么传,传哪种就需要被管理;

使用该模块决定以下数据包被发送的顺序;
1)新的未发送数据包
2)认为丢失的包
3)传输后还未被确认的包

3、窗口控制

默认拥塞控制算法:基于丢失率,使用Active Queue Management或者数据源周期性缓存溢出的方法,不稳定;
FastTCP算法:基于队列时延,动态性较好,对链路容量变化及时反应,稳定;

通常网络条件下,FastTCP根据平均RTT周期性更新拥塞窗口w;

在包级别调整拥塞窗口的数学模型;流动态性为:

上面的数学模型意思就是:
1)如果当前缓存的数据包远远小于目标值,则FastTCP调整拥塞窗口时就剧烈些;
2)如果当前缓存的数据包接近目标值,则FastTCP调整拥塞窗口就平缓些;

稳定性证明:
被证明的:局部稳定性和静态网络中的全局稳定性
尚未被证明的:动态网络中的全局稳定性

4、突发控制

决定了一次要发送的数据包数量,避免产生巨大脉冲增加数据包大量丢失的可能性;

用到两种突发控制机制:

1)单个数据包补充自同步;
2)使用小脉冲使窗口增加更加平滑;(当一个ack使用拥塞窗口增加过大,会试图将脉冲大小限制在<1个RTT的时标内)

目前的研究方向

1)公平性改进研究(协同改进公平性,基于历史特征的公平性改进等)
2)稳定性研究(基于单链路多源网络的场景,基于非线性控制理论等)
3)模型参数选择研究(稳定性的参数γ调整)
4)fasttcp与reno,vegas等协议的性能对比(在ns2仿真环境下模拟)

二、ZetaTCP调研(Learning-based)

特点:
1)网络路径特征自学习的动态算法,基于每一个TCP 连接实时观察、分析网络特征;
2)根据学习到的网络特征随时调整算法来更准确地判断拥塞程度、更及时地判断丢包;
3)更恰当的进行拥塞处理并更快速地进行丢包恢复;

0、商业产品

基于netfilter开发的类fasttcp产品,主要改进了传统的tcp拥塞算法;国内主要由华夏创新zetatcp和锐速zetatcp,实测下来cdn节点80k文件内容下载速度提速在10-15%左右,还是相当可观的;

三、其他TCP优化相关技术

– Increase TCP initial congestion window
– Reduce the initial timeout from 3 seconds to 1 second ⇒ Tuning TCP Parameters

– Use TCP Fast Open (TFO)

– Use Proportional Rate Reduction for TCP (PRR)

1、linux修改TCP参数方法

To change this in a running kernel, you can use the /proc interface:

Or use the sysctl command:

To make this value stick across reboots however you need to add it to /etc/sysctl.conf:

四、参考资料

1、论文(入门->实验)

FAST TCP: motivation, architecture, algorithms, performance
FAST TCP: from theory to experiments
FastTCP拥塞控制机制研究
高速TCP_IP网络拥塞控制算法研究
NS-2 TCP-Linux: An NS-2 TCP Implementation with Congestion Control Algorithms from Linux
Experimental Evaluation of TCP Protocols for High-Speed Networks
VFAST TCP: An improvement of FAST TCP
google学术

2、Blog

Let’s make TCP faster
Linux动态内核模块
Linux内核 TCP源码详解一:拥塞控制算法(tcp.h tcp_cong.c)
linux RTO
Overriding the default Linux kernel 20-second TCP socket connect timeout
linux内核优化
Shaving your RTT with TCP Fast Open
web业务尽快升级到centos 6.4的理由

3、仿真实验

FAST TCP simulator module for ns-2