跳至主要内容

net-speeder网速优化/加速器(适用于高延迟不稳定链路加速) [| 不指定 2013/03/24 23:23]

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

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

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

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

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

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


    最近比较忙,空闲时间做了一个最简单的程序,试用效果很好,在一台VPS上测试后发现,未开启时单线程下载、ssh管道速度在十几K级别。开启后可以达到平均300KB+的速度。效果非常明显。但对于不加速就可以跑满带宽的类型来讲(多线程下载),开启后反而由于多出来的无效流量,导致速度减半。所以对于多线程/高速链路,这个方案是不适合的。

     目前版本是最简单的逻辑,未来会进行细化(主动触发快速恢复、快速重传等),降低流量浪费,提升加速效果。

     目前程序起名net-speeder,相对于修改协议栈来讲,由于后者需要重新升级编译内核,使用用户态程序部署更方便,稳定性更高,兼容性更好。缺点则是性能开销稍大和自由度有损失。总体比较起来,个人使用还是使用用户态程序更合适一些,特别是在虚拟机中使用(OpenVZ,LXC等虚拟机无法自己定制内核)。

系统使用的是默认的centos5 x86,全都是脚本所以非常简单。

服务端搭建部分

一、 安装net-speeder提速
分别执行以下命令:
  1. wget –no-check-certificate https://gist.github.com/LazyZhu/dc3f2f84c336a08fd6a5/raw/d8aa4bcf955409e28a262ccf52921a65fe49da99/net_speeder_lazyinstall.sh
  2. sh net_speeder_lazyinstall.sh
  3. echo ‘nohup /usr/local/net_speeder/net_speeder venet0 “ip” >/dev/null 2>&1 &’ >> /etc/rc.local




对于这些便宜的年付VPS,我们尽可能的选择洛杉矶、凤凰城、西雅图这些西岸的机房,这样可以保证物理距离,同时我们可以安装锐速或者NET-SPEEDER这样的工具,前者是需要XEN或者KVM架构才可以安装,而这些便宜的VPS大部分都是用OPENVZ架构的,所以我们只能用NET-SPEEDER优化线路。

NET SPEEDER
NET SPEEDER



原理:net-speeder,来自SNOODA(http://www.snooda.com/read/324)撰写的,是采用双倍TCP并发解决丢包问题,但是在一定程度上是需要用到双倍流量,但可以解决丢包和加速问题,一般200PING值的VPS服务器,在搭建好NET-SPEEDER后会在150-180PING值左右。

所以说,一般我们的小网站,或者搭建普通的上网工具(爬呀爬工具),流量一般是足够的,用SPEEDER工具可以解决丢包问题,我发现BANDWAGONHOST的晚上速度不如白天快。废话少说,我这里开始安装。

NET-SPEEDER安装过程:

第一、配置环境

这里我用DEBIAN环境,我们也可以用CENTOS

apt-get install libnet1;apt-get install libpcap0.8;apt-get install libnet1-dev;apt-get install libpcap0.8-dev

先安装依赖包

第二、一键安装

wget --no-check-certificate https://gist.github.com/LazyZhu/dc3f2f84c336a08fd6a5/raw/d8aa4bcf955409e28a262ccf52921a65fe49da99/net_speeder_lazyinstall.sh
sh net_speeder_lazyinstall.sh

第三、启动执行

nohup /usr/local/net_speeder/net_speeder venet0 "ip" >/dev/null 2>&1 &

这样,无论我们是建站还是其他的使用,速度上会有不小的提升。我们可以试试吧。





评论

此博客中的热门博文

使用Squid搭建HTTPS代理服务器

使用Squid搭建HTTPS代理服务器 发布于 2015年02月25日 由于经常去的一些国外网站如Google、Blogspot、Wordpress被“出现了技术问题”,访问不了,于是我在自己的DigitalOcean云主机上搭建了一个Squid代理服务器用于科学上网。Squid支持HTTP、HTTPS代理,因此能够满足日常访问国外某些网站的需求。然而如果直接使用HTTP连接Squid是明文传输的,在第一次使用时,会马上“出现技术问题”,因此需要使用stunnel加密代理通道。具体配置步骤如下,云主机的Linux发行版是Ubuntu 14.10 x32,如果你使用的是其他发行版,包管理与配置文件路径会略有不同。 安装必要的软件 安装apache2-utils用于HTTP认证文件的生成, apt-get install apache2-utils -y 安装Squid, apt-get install squid3 -y 安装stunnel, apt-get install stunnel4 -y 配置Squid 生成HTTP认证文件,输入对应的密码。这个认证文件用于之后HTTP代理的认证登录,如果不需要登录认证,可以略过。 htpasswd -c /etc/squid3/squid.passwd <登录用户名> 修改Squid默认配置,配置文件位于/etc/squid3/squid.conf。 1. 修改监听地址与端口号 找到TAG: http_port注释,把其下方的 # Squid normally listens to port 3128 http_port 3128 中http_port修改为127.0.0.1:3128,使得Squid只能被本地(127.0.0.1)访问。此处可以修改为监听其他端口号。 2. 修改访问权限与HTTP认证(可选) 若不需要添加HTTP认证,只需将http_access deny all修改为http_access allow all即可,无需下列的操作。 使用如下命令生成认证文件, htpasswd -c /etc/squid3/squid.passwd <登录用户名> 再次打开Squid配置文件/etc/squid3/squid...

【教程】使Omega让Ch用Switchyrome开启智能中国模式

【教程】使Omega让Ch 用Switchyrome开启智能中国模式   [复制链接] my522cn 4 主题 38 帖子 156 积分 注册会员 积分 156 发消息 电梯直达 楼主   发表于 2014-12-30 05:17:46   |   只看该作者   说实在的, 官方提供的软件实在不好用, 加上有洁癖的我不想电脑上装那么多软件, 平时用vpn也就上上google plus, 查下资料. 直接拨号的方式又只能全局, win8 改 router又有问题, 被逼无奈在论坛上找高手求助, 翻到管理猿的教程让我受益匪浅. 【教程】Chrome配置http代理 http://forum.nydus.co/forum.php?mod=viewthread&tid=2728 (出处: NydusVPN) 首先介绍什么是SwitchyOmega: 这货是原SwitchySharp的升级版, 下载地址直送chrome store:  https://chrome.google.com/websto ... adohgkifijomclgjgif 不喜欢SwitchyOmega的依然可以用SwitchySharp: https://chrome.google.com/websto ... hncfbfdeeokoefdjegm (不能访问的先直接拨号装吧) 安装好SwitchyOmega后自动弹出教程, (这么简单的插件还要教程吗?) 直接略过. 下载好配置文件, 然后导入: 配置文件: http://www.nydus.com.co/download/SwitchyOptions.txt 或者去原帖中找   这时会自动导入8个情景, 7个倭寇区, 1个美帝区, 当然以后官方可能升级配置文件, 增加不少线路. (其实是我希望的啦). 当然你要是pac脚步可以自己写. 导入成功了接下来就是更新脚本, 点开每个情景, 然后点立即更新.   接下来保存配置.  然后在chrome的插件栏中找到SwitchyOmega, 鼠标左键点击随便选个情景模式. 随便访问个网站,...

浅析PAC,教你动手修改你的PAC文件及user-rule文件实现自动代理

浅析PAC,教你动手修改你的PAC文件及user-rule文件实现自动代理 时间 2015-08-09 13:14:11  阿超的博客 原文  http://www.awolau.com/shadowsocks/start-pac.html 主题 Shadowsocks Shadowsocks作为现在一种很流行的穿墙工具,以其轻量级、速度感人等优点深受广大网友热捧。与VP_N相比,他就像一把锋利的”瑞士军刀”,不用受制于“系统全局代理”模式的困扰,控制更加便捷,基于Socks5安全加密协议,防止GF*W通过分析流量特征从而干扰的问题。而又不像GoAgent这种集中式爬墙模式,一般不会出现全局封锁等现象。不管你是因为什么原因喜欢上Shadowsocks,我相信她一定有给你带来好的体验的方面。 在Shadowsocks里面,系统代理模式有两种,一种是“系统代理模式”,另一种是“PAC代理模式”,通常情况下我们会选择后者,今天这里给大家解析一下PAC模式的原理以及如何修改PAC文件、user-rule文件实现自动代理,希望大家可以通过本文更的“科学上网”。 什么是PAC 代理自动配置(英语:Proxy auto-config,简称PAC)是一种网页浏览器技术,用于定义浏览器该如何自动选择适当的代理服务器来访问一个网址。 一个PAC文件包含一个JavaScript形式的函数“FindProxyForURL(url, host)”。这个函数返回一个包含一个或多个访问规则的字符串。用户代理根据这些规则适用一个特定的代理其或者直接访问。当一个代理服务器无法响应的时候,多个访问规则提供了其他的后备访问方法。浏览器在访问其他页面以前,首先访问这个PAC文件。PAC文件中的URL可能是手工配置的,也可能是是通过网页的网络代理自发现协议(Web Proxy Autodiscovery Protocol)自动配置的。 上面是从维基百科摘录的关于PAC的解释,我做了一个简单的图片解释什么是PAC: 简单的讲,PAC就是一种配置,它能让你的浏览器智能判断哪些网站走代理,哪些不需要走代理。用过Shadowsocks的朋友应该会知道, shadowsocks.exe 同级目录下有一个 pac.txt 文件,这正是我们本文刚刚所说的pac配置文件。...