对付丢包 提高单线程速度的利器 net-speeder

刚刚发完一帖关于测速的日志 就在某论坛看到一个神器 net-speeder

其原理是将数据包双倍发送 以便减轻由于丢包导致的速度下降

本站测试效果十分好 可以推荐

补充提醒:线路原本没问题的 请不要使用 很可能会出现反效果

原文介绍:

 当使用国外服务器时,经常会发现,下载速度只有十几k。平时可能不太注意,认为服务器带宽不足,或者自己使用的宽带不给力,其实很有可能原因并不在此。

    由于光速的局限性,延迟会比较高(即使光沿直线传播,太平洋一个往返也要一百多毫秒)。并且由于距离较远,途径路由跳数较多,并且网络拥堵的原因。经常会发生丢包的情况。

    对于平时使用最广泛的TCP协议来讲,发送端发出包后,接收端会回复ACK,表示自己收到了。用这种机制来保证可靠性。但对于高延迟链路来讲,如果每发送一个包都等待应答,那么大部分时间都在等待数据包到达,而链路则空置了。为此一般会采用滑动窗口技术。即在窗口满之前,发送端一直发送包,然后收到应答后将确认收到的包从窗口中移除。这样可以提高链路利用率。

    TCP还有一个特性则是拥塞控制。当发送端检测到链路发生丢包时,则会主动缩小窗口大小以减慢发送速度,避免拥塞。不过对于跳数较多的链路来讲,只要有一个路由不够稳定丢包,就会被发送端判断为拥塞,从而影响网络速度。

    为了解决丢包问题,最简单粗暴的方法就是双倍发送,即同一份数据包发送两份。这样的话在服务器带宽充足情况下,丢包率会平方级降低。

    这种方式下,直接优点是降低丢包率,直接缺点是耗费双倍流量。一些延伸影响是更容易触发快速恢复逻辑,避免了丢包时窗口缩减过快。一定程度也能提高网络速度。

安装方法:

项目地址:http://code.google.com/p/net-speeder/

到此下载

Debian/Ubuntu安装方法网站已有叙述 不再多说

CentOS下较为简单的安装方法:

CentOS5 32位:

wget http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

rpm -ivh epel-release-5-4.noarch.rpm

CentOS5 64位:

wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

rpm -ivh epel-release-5-4.noarch.rpm

CentOS6 32位:

wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

CentOS6 64位:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

注:epel的库地址时常会变化 请到https://fedoraproject.org/wiki/EPEL/zh-cn获取最新地址

rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

yum reinstall libnet libnet-devel libpcap libpcap-devel【reintall其实我没测试过 只测试了remove后再install】

然后cd net_speeder

Linux Cooked interface使用编译(venetX,OpenVZ): sh build.sh -DCOOKED 已测试

普通网卡使用编译(Xen,KVM,物理机): sh build.sh 【KVM测试无问题】

无回显说明成功编译 目录下会产生net_speeder可执行文件

按照项目网站的说明执行即可 要后台运行可以在命令后面加个 &

测试结果:

不开启时 单线程速度10-50KB/S

开启时 速度100-500KB/S

我觉得非常适合樱花这样的主机 高带宽/无流量限制/低延迟 唯一的缺点就是最近开始抽了 如果不抽其实根本不用这个都能满速

为何不留个言呢?

我要把我的最新文章显示在这!