基本信息
Zeta-TCP由一组提高TCP性能的算法组成,由 AppEx NetworksCorporation 开发并商业化。Zeta-TCP 与已存在的 TCP 协定完全兼容。
Zeta-TCP 在以下三个方面对 TCP 核心算法进行了大幅改进:
1) 更适宜现代网际网路状况的拥塞避免 (Congestionavoidance) 机制
2) 及时精準的丢包预测
3) 反向控制传送方流量
拥塞避免
今天,绝大多数的TCP实现都是基于TCP New Reno 及其变种(例如 TCP SACK, RFC 3517)作为其拥塞避免算法。 New Reno 的拥塞避免算法是基于丢包统计的算法。基于丢包的算法,将丢包作为网路发生拥塞的标誌。但是,随着Internet的发展,这个假设在现在的网路环境下,很多时候并不符合实际情况,特别是在无线网路中,丢包的原因通常不是链路拥塞,而是由于信道衰减、无线的噪声等原因导致。New Reno 算法一旦发现网路上发生丢包,就会将拥塞视窗 (CWND) 迅速缩小,导致数据传送量急剧下降。
TCP Vegas以及其变种(特别是 FastTCP ),将延时作为网路拥塞的标誌。基于延时的拥塞控制算法克服了基于丢包的拥塞控制算法的缺陷,在今天的网路中,更容易反应网路的实际情况。
Zeta-TCP 将延时和丢包的因素组合作为网路拥塞的衡量标準。Zeta-TCP 不断测量丢包和延时的变化幅度并根据该 TCP 连线历史数据分析判断当前所经历的丢包,延时及其变化是否由拥塞引起,并据此来调整拥塞视窗,从而让 TCP 的传送方流量最贴近 TCP 连线整条路径的可用频宽,从而减少拥塞,提高整条路径频宽利用率,最终达到提高 TCP 传输稳定性和吞吐率的目的。
丢包预测
在实际的网路环境中,丢包通常不是均匀发生的,而是经常在短时间内集中发生。TCP 改进相关的RFC (New Reno 和引进 SACK 机制等) ,已经明确定义了怎样比较準确的预测到第一个丢包。但是当启用SACK的TCP进入快速恢复阶段后,丢包预测準确率显着降低。
Zeta-TCP 引入了一种根据该连线传输历史进行智慧型学习的算法来计算每一个没有被 ACK 或 SACK 的数据包丢失的机率,当这个机率高于某一个阈值时,对应的数据包就被判断为丢失并会被重发。通过更及时準确的判断丢包并进行重传,Zeta-TCP 可以有效的让 TCP 滑动视窗更平滑的向前移动,并降低错误重发的机率,减少频宽的浪费。
逆向控制
针对 TCP 的最佳化算法(如 FastTCP),一般用来最佳化出向流量。Zeta-TCP採用了逆向控制的方法,来最佳化入向流量。逆向控制通过监测每一个连线的质量,给 TCP 连线的对端以丰富的提示信息,让TCP 的对端能更及时的感知拥塞,丢包,从而更及时地重传并调整其拥塞视窗以适应网路路径的实际可用频宽。
实现
Zeta-TCP在Linux上採用了Loadable Kernel Module(通过NetFilter Hook)的实现方式,在Windows上採用了IM Driver Filter的实现方式。Zeta-TCP实现并不修改系统原有的TCP协定栈,而是拦截TCP的数据包,然后套用其各种最佳化算法。这种实现方法的优势是模组化更清晰,更容易的在各种系统上实现,其缺陷是可能带来额外的系统开销。