Zeta-TCP由一组提高TCP性能的算法组成,由 AppEx NetworksCorporation 开发并商业化。Zeta-TCP 与已存在的 TCP 协议完全兼容。
今天,绝大多数的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的
数据包,然后应用其各种优化算法。这种实现方法的优势是模块化更清晰,更容易的在各种系统上实现,其缺陷是可能带来额外的
系统开销。