TCP拥塞控制算法 调整TCP拥塞控制算法 TCP Congestion Avoidance Algorithm

中美之间的线路质量不是很好,rtt较长且时常丢包。TCP协议是成也丢包,败也丢包;TCP的设计目的是解决不可靠线路上可靠传输的问题,即为了解决丢包,但丢包却使TCP传输速度大幅下降。HTTP协议在传输层使用的是TCP协议,所以网页下载的速度就取决于TCP单线程下载的速度(因为网页就是单线程下载的)。
丢包使得TCP传输速度大幅下降的主要原因是丢包重传机制,控制这一机制的就是TCP拥塞控制算法。
Linux内核中提供了若干套TCP拥塞控制算法,已加载进内核的可以通过内核参数net.ipv4.tcp_available_congestion_control看到:
sudo sysctl net.ipv4.tcp_available_congestion_control
没有加载进内核的一般是编译成了模块,可以用modprobe加载。
这些算法各自适用于不同的环境。
reno是最基本的拥塞控制算法,也是TCP协议的实验原型。
bic适用于rtt较高但丢包极为罕见的情况,比如北美和欧洲之间的线路,这是2.6.8到2.6.18之间的Linux内核的默认算法。
cubic是修改版的bic,适用环境比bic广泛一点,它是2.6.19之后的linux内核的默认算法。
hybla适用于高延时、高丢包率的网络,比如卫星链路——同样适用于中美之间的链路。
多人实验表明,TCP拥塞控制算法对TCP传输速率的影响可很大。
修改TCP拥塞控制算法需要修改内核参数net.ipv4.tcp_congestion_control(OpenVZ的VE无此权限,Xen或者独服才有):
sudo sysctl net.ipv4.tcp_congestion_control=×××


OpenVZ的可以在母鸡上改tcp_congestion_control,建议凡是国人做OpenVZ的,一律把tcp_congestion_control改成hybla;做Xen的,一律把OS模板里的tcp_congestion_control改成hybla。提高很明显的。

(做vpn的实现不了tcp proxy改这个也没用)


除非是独服,要不然这个很难测。嗯。。。有没有用htcp的?
bic
2011-04-05 00:35:36 (1.50 MB/s) - `/dev/null' saved [104857600/104857600]
hybla
2011-04-05 00:34:15 (1.88 MB/s) - `/dev/null' saved [104857600/104857600]
htcp
2011-04-05 00:33:11 (2.52 MB/s) - `/dev/null' saved [104857600/104857600]

不过有人指出,htcp不如hybla

UDP本来就不受丢包影响,所以不存在TCP的这样丢包导致的拥塞问题。


修改完配置文件后,sysctl -p直接重新加载配置文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值