之前曾经在这篇文章里试过用net-speeder来提升速度,有优有劣.这次换用锐速来尝试提速,并整理归纳成本文,供参考与交流使用.


优劣对比

由于net-speeder无脑双倍发包,在某些偶尔丢包的时候能有比较好的效果,同时无需适配内核均可使用.但在丢包非常严重的情况下,锐速的算法效果要比net-speeder好的多,在低延迟以及较为稳定的线路上,锐速的表现也优于net-speeder.但是锐速的缺点也很明显,一个是支持的内核不多,一旦不一致需要更换内核,甚至openVZ不支持更换内核,如在支持列表中就只能放弃.另一个问题是,相比于开源的net-speeder,锐速是不开源的,进出的数据包理论上都可以被锐速监听到,所以不建议在重要的生产环境中使用锐速.

内核匹配

在做其他的事情之前,首先请先访问锐速支持列表来查看当前锐速所支持的官方发行版本,判断自己的vps的内核版本是否在锐速支持的列表中提供.
以下两个命令分别可以查看当前的操作系统和内核版本:

1
2
cat /etc/issue
uname -a

如果匹配,恭喜,可以跳到下个步骤直接安装了,如果并没有找到,那么想使用锐速的话,就需要进行内核的升/降级.当然,OpenVZ的vps是不支持更换内核的,就不需要考虑了.(对内核的操作请慎重考虑,有可能需要自行承担使用的风险)

这里列举收集和整理的CentOS6和Ubuntu的内核降级方法.

CentOS内核修改

1,首先禁止版本升级,编辑/etc/yum.conf文件,在最后添加:

1
exclude=kernel* centos-release

或者

1
exclude=kernel*,centos-release*

注意:一种是用空格分开,一种是用逗号分开,如果是redhat,则把centos-release改为redhat-release

2,下载所需要内核版本的rpm文件:
由于国内的源(比如阿里的源)已经没有CentOS6.7以前的文件了,这里我们从下面这个url来找需要的文件(需自行替换):
http://ftp.scientificlinux.org/linux/scientific/**系统版本**/**位数**/updates/security/

这里的位数,如果是32位的话则是i386,如果是64位的话则是x86_64,
注意:如果是CentOS 5并且uname -a命令输出中有el5xen字样 请务必下载Xen版内核,否则可能导致无法开机!CentOS6则没有Xen内核和非Xen内核区别.
系统版本则替换成CentOS系统的版本号.
例如,系统是CentOS6.6 64位的话,则打开:
http://ftp.scientificlinux.org/linux/scientific/6.6/x86_64/updates/security/

然后在列表中找到我们需要的(锐速的支持列表中的对应的)内核版本的rpm文件并下载.

例如,这里我们在锐速列表中发现CentOS6.6所支持的版本有2.6.32-504.3.3.el6.x86_64,在rpm下载列表中也存在对应的rpm文件,即使用wget下载:

1
wget http://ftp.scientificlinux.org/linux/scientific/6.6/x86_64/updates/security/kernel-2.6.32-504.3.3.el6.x86_64.rpm

CentOS 5和6不可跨大版本使用内核,下载的文件请务必对应自己所需.

3,强制安装内核:

1
rpm -ivh kernel-2.6.32-504.3.3.el6.x86_64.rpm --force

文件名自行替换所下载的内核rpm.静待安装成功后重启计算机.


Ubuntu内核修改

内核升级:
Ubuntu内核升级普遍使用以下指令:

1
sudo apt-get dist-upgrade

当然升级到哪个版本就不好说了~ ~ ~
内核降级:
1,首先在锐速支持列表中选好想要降级到的内核版本,例如3.13.0-24-generic.然后执行以下指令(自行替换两处版本号):

1
sudo aptitude install -y linux-image-3.13.0-24-generic linux-headers-3.13.0-24

2,执行以下命令:

1
grep submenu /boot/grub/grub.cfg

看到单引号中的父选项,类似:
Advanced options for Ubuntu
将引号内的内容复制下来,如图蓝框中所选:
ubuntu-submenu

3,执行以下命令:

1
grep menuentry /boot/grub/grub.cfg

找到类似以下的单引号中的子选项:
Ubuntu, with Linux 3.13.0-24-generic
将引号内的内容复制下来,如图蓝框中所选:
ubuntu-menuentry

4,用编辑器修改/etc/default/grub文件:
将其中
GRUB_DEFAULT=0
改为
GRUB_DEFAULT=”Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-24-generic
其实GRUB_DEFAULT的值就是之前复制的两段内容用>号拼接后,加双引号.

5,保存文件后执行:

1
sudo update-grub

此时如果有报错,可能因为不在次级选项中,将GRUB_DEFAULT是否需要将前面部分”Advanced options for Ubuntu>”去掉,修改为:
GRUB_DEFAULT=”Ubuntu, with Linux 3.13.0-24-generic”
没有错误提示,即可reboot重启系统.

6,重启后使用uname -r可查看当前的内核版本号.如果是新的则表示成功.
有点vps提供方会限制内核,所以还要具体视情况而定,并不是所有的都可以替换,还有的需要在面板中调整.
如Linode就需要在后台面板中把kernel设置成pv-grub-x86_32 或 pv-grub-x86_64才可以更换内核.

锐速安装

以锐速官网说明为准,这里就不浪费篇幅了,自动安装参考http://my.serverspeeder.com/w.do?m=lsl,手动安装参考http://my.serverspeeder.com/w.do?m=lslm

安装时的各个配置选项可以直接回车使用括号中的默认值,也可根据实际情况进行调整.(建议对入口和出口带宽,按实际情况手动输入)

锐速优化

1,首先使用ifconfig确认网卡接口(如eth0),然后执行以下指令:

1
ethtool -k eth0

这里的eth0请自行替换为自己的网卡.
然后记下以下加速接口的状态:
tso (tcp segmentation offload)
gso (generic segmentation offload)
gro(generic receive offload)
lro(large receive offload)
sg(scatter gather)

然后编辑锐速的配置文件:

1
vim /serverspeeder/etc/config

以下几点是需要特别注意配置的:
◆如果上面的tso、gso、gro、lro 和 sg 其中之一是可以打开的,则设置gso=”1”
◆如果gro和lro是可以开启的,则设置rsc=”1”.(有些网卡虽然未开启,但也支持RSC算法的,也可尝试设置为1)
◆在丢包率较高的环境下,设置maxmode=”1” 能非常明显的获得速度的提升.此功能和net-speeder暴力发包类似,为了整体网络环境考虑,虽然锐速有自己的拥塞控制,但还是建议视情况决定是否需要开启此开关.
◆流入方向流量加速,设置advinacc=”1”.
◆还有个可以得到更好的加速效果的开关:设置advacc=”1”,但有可能会造成有效数据率下降,是否开启自行考虑.
◆如果需要锐速对PPTP,L2TP和IkeV2进行加速,则开启accppp=”1”.
◆对于OpenVPN,需要先用ifconfig指令确定OpenVPN对应接口(大多是tun0),然后在accif后面追加接口,如accif=”eth0 tun0”.

配置完成后,使用service serverSpeeder restart重启锐速服务,shadowsocks无需特别配置,只需遵从上面的优化配置,在锐速重启后稍等片刻即可提速.

另附:锐速配置文件详解,有更详细的定制需要时可参考此配置说明进行调整(点击展开)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
accif="eth*"
#加速接口,eth*一般为服务器上对外提供服务的网络接口,例如 eth0 eth1,一般通过 ifconfig 命令可以看到,可以同时设定多个接口作为加速接口(接口之间用空格分开),如 accif="eth0 eth1",默认为"eth0"。
acc="1"
#TCP 加速开关,设为 1 表示开启 LotServer 的 TCP 加速功能,设为 0 表示关闭LotServer 的 TCP 加速功能,默认为 1。
advacc="1"
#高级加速开关,设为 1 表示开启,设为 0 表示关闭,开启此功能可以得到更好的加速效果,但有可能会造成有效数据率下降,默认为 1
advinacc="0"
#高级入向加速开关,设为 1 表示开启,设为 0 表示关闭,开启此功能可以得到更好的流入方向流量加速效果。
wankbps="1000000"
#加速接口上行带宽,指的是从服务器流出到 Internet 的最大带宽,单位为 Kbps,例如服务器所连接的 Internet 带宽为 1G,则设置为 1000000,默认为 1000000。
waninkbps="1000000"
#加速接口下行带宽,指的是从 Internet 流入服务器的最大带宽,单位为 Kbps,例如服务器所连接的 Internet 带宽为 1G,则设置为 1000000,默认为 1000000,wankbps 和 waninkbps 的设置一般与实际带宽相同最理想,如果无法确定实际带宽,一般设置为网卡的最大吞吐能力即可,例如网卡为千兆全双工网卡,则 wankbps和 waninkbps 都设置为 1000000,当设置过小时,例如实际带宽有 100Mbps,但 wankbps 和 waninkbps 设置为10Mbps,则数据流量会被限制在 10Mbps 以内,此时会降低服务器的吞吐。
csvmode="0" highcsv="0"
#csvmode 拥塞控制模式开关,设为 1 表示开启,设为 0 表示关闭,开启 tcp 加速后,在某些丢包较大的网络中可能会造成有效数据率下降的问题,此时开启拥塞控制模式,可以有效避免该问题,但开启此选项时,可能加速效果也会下降,默认为 0,csvmode="1" highcsv="0"时,为普通拥塞控制模式,对拥塞具有一定控制的同时对加速效果的影响较小,csvmode="1" highcsv="1"时,为高级拥塞控制模式,可以更好的控制拥塞但是相比于普通拥塞控制模式对加速效果的影响较大。
subnetAcc="0"
#局域网加速开关,设为 1 表示开启,设为 0 表示关闭,不开启时对于同一局域网内的连接不会加速,开启后对同一网段的 TCP 连接也进行加速。
maxmode="0"
#最大传输模式,设为 1 表示开启,设为 0 表示关闭,开启后会进一步提高加速效果,但是可能会降低有效数据率。
maxTxEffectiveMS="0"
#最大传输模式生效时间,用于控制最大传输模式对每一个连接的生效时间,设为0 表示从连接建立到连接结束,都采用最大传输模式传输,单位为 ms,1000 即 1s。
pcapEnable="0"
#抓包开关,设为 1 表示开启,设为 0 表示关闭,开启此功能后会抓取经过加速引擎处理的数据包,在/appex/log 目录下生成抓包文件。
bypassOverFlows="1"
#流量 bypass 开关,设为 1 表示开启,设为 0 表示关闭,开启此功能后当服务器的连接数超过引擎设定后会对超过的连接的流量 bypass,否则会无法新建连接。
initialCwndWan="44"
#初始 TCP 发送窗口能够发送的数据包的数量,该值设置的高会获得更好的加速效果,但是可能会造成网络的拥塞。
l2wQLimit="256 2048"
#从 LAN 到 WAN 加速引擎在缓冲池充满和空闲时分别能够缓存的数据包队列的长度的上限,该值设置的高会获得更好的加速效果,但是会消耗更多的内存。
w2lQLimit="256 2048"
#从 WAN 到 LAN 加速引擎在缓冲池充满和空闲时分别能够缓存的数据包队列的长度的上限,该值设置的高会获得更好的加速效果,但是会消耗更多的内存。
shrinkPacket="0"
#slab 缓存缩减开关,设为 1 表示开启,设为 0 表示关闭,当服务器内存消耗很高时可以将该值设定为 1,这样会降低内存的消耗。
retranWaitListMS="32"
#重传等待时间,当服务器没有收到 ack 或者丢包产生之后客户端重复 ack 时间达到 32ms,服务器重传数据,默认为 32ms。
halfCwndMinSRtt="500" halfCwndLossRateShift="3"
#以上两个值用于判断网络拥塞,分别为延时和丢包率,丢包率默认值为 3,即1/2^3,当拥塞产生时,退出第三代 Learning-based TCP 算法,采用类似传统 TCP 的算法。

#byte cache
byteCache="0"
httpComp="1"
byteCacheMemory="250" #MB
byteCacheDisk="0" #MB
diskDev="/dev/sda2"
#以上为双边缓存的设置,当前只有部分版本支持该功能。分别是缓存开关,数据压缩开关,内存大小,硬盘大小,指定硬盘位置。
shaperEnable="1"
#流量整形开关,配合上行和下行带宽设置开启,设为 1 表示开启,设为 0 表示关闭,开启此功能,会采用 wankbps 以及 waninkbps 设置的带宽大小运行,关闭此功能,会根据实时传输自动测算带宽大小。
tcpOnly="1"
#设为 1 表示开启,设为 0 表示关闭,开启此功能,即只处理 TCP 流量,关闭此功能,也处理除 TCP 以外的流量(不会对非 TCP 流量加速),一般用于配置策略对非 TCP 数据丢弃时。
SmBurstMS="15"
#引擎允许的最大突发时间,设为 0,则关闭,该值越大,数据包发送量越大,当前推荐默认为 15。
rsc="0"
#网卡接收端合并开关,设为 1 表示开启,设为 0 表示关闭,在有些较新的网卡驱动中,带有 RSC 算法的,需要打开该功能。
gso="0"
#GSO 开关,设为 1 表示开启,设为 0 表示关闭,当网卡需要开启 gso 功能时,开启此功能,LotServer变为支持gso的模式,关闭此功能,如果网卡开启gso,LotServer会关闭网卡的 gso 功能。
lanSegment=""
#当 LotServer 不是 TCP 连接的最终节点并且采用单臂模式部署时,如果 LotServer和服务器之间网络环境很好,不需要加速,将此参数的值设为 Lan 一侧的子网网段(参数的值为子网网段的十六进制表示加子网掩码,例:ip 为 172.33.0.0/16,lanSegment="AC210000/16"),则 LotServer 和服务器之间不进行加速,可以节省LotServer 使用的资源并获得更好的加速效果。如果不设置此参数,则 LotServer 会对所有经过的 TCP 连接进行加速。(注:如果参数转换为十六进制后,第一位数字为 0时,需要省略,不然无法正常写入配置。例如:参数十六进制值为:0C210000/16,那么 lanSegment="C210000/16"。)
configTimeout="30"
#设置开启 LotServer 时,写入配置所需要的时间。当引擎的数目很多时需要写入配置的时间较长,默认为 30s。
engineNum="0"
#LotServer 启动的加速引擎的的个数,在多处理器(核)的系统环境下,启用多个加速引擎可以使网络流量的负载在多个处理器(核)之间做均衡分配,从而帮助优化系统CPU 资源的利用,启用多个加速引擎时,引擎序号从 0 开始,分别为 engine0, engine1,engine2,等等,每个引擎的负载对应交给相同序号的处理器来处理,即,engine0 使用 cpu0, engine1 使用 cpu1 等,engineNum 默认为 0,表示启用的加速引擎个数与系统的处理器个数相同,64bit 架构下,当实际的 engineNum 参数大于 4 时,检查内存:当总内存减去 engine 占用内存剩余数小于 2G 时,提示用户一个 warning:LotServer Warning: $CPUNUM engines will be launched according to the config file.Your system total RAM is $memTotal(KB), which might be insufficient to run all theengines without performance penalty under extreme network conditions.
shortRttMS="10"
#白名单开关,打开后 LotServer 将不对 RTT 小于 shortRttMS 的连接加速,节约系统资源,提高性能,设置为 0 时表示关闭此功能,LotServer 会加速所有的连接,设置为其他值时,例如 10,则表示当第一次建立连接时,Lotserver 会测量所有的新建连接的 RTT,但是不对其进行加速,如果 RTT 大于 10ms,LotServer 会从第二次建立连接开始对其加速,如果 RTT 小于 10ms,LotServer 则一直不会对其加速。默认值 10ms。重启 LotServer 后,原来记录的每个连接的 RTT 会被清除,重新开始记录。LotServer 使用五元组判断是否为同一连接,五元组包括:源 ip,目的 ip,源端口,目的端口和协议。
apxexe=" /appex/bin/acce-***"
#LotServer 模块文件的路径。
apxlic="/appex/etc/apx-***.lic"
#LotServer 授权文件的路径。

以上内容为本人搜集整理资料后结合自身实践得出的结果,如有错误欢迎指正与交流~ ~

参考链接:

降级linux内核
Centos 6.7内核降级到kernel-2.6.32-504.el6.i686.rpm
锐速评测报告指导帖
Appex/锐速TCP加速教程和最佳优化设置教程
Serverspeeder 锐速config配置文件详解