更换Linux内核优化锐速,为shadowsocks和IkeV2加速
之前曾经在这篇文章里试过用net-speeder来提升速度,有优有劣.这次换用锐速来尝试提速,并整理归纳成本文,供参考与交流使用.
优劣对比
由于net-speeder无脑双倍发包,在某些偶尔丢包的时候能有比较好的效果,同时无需适配内核均可使用.但在丢包非常严重的情况下,锐速的算法效果要比net-speeder好的多,在低延迟以及较为稳定的线路上,锐速的表现也优于net-speeder.但是锐速的缺点也很明显,一个是支持的内核不多,一旦不一致需要更换内核,甚至openVZ不支持更换内核,如在支持列表中就只能放弃.另一个问题是,相比于开源的net-speeder,锐速是不开源的,进出的数据包理论上都可以被锐速监听到,所以不建议在重要的生产环境中使用锐速.
内核匹配
在做其他的事情之前,首先请先访问锐速支持列表来查看当前锐速所支持的官方发行版本,判断自己的vps的内核版本是否在锐速支持的列表中提供.
以下两个命令分别可以查看当前的操作系统和内核版本:
1 | cat /etc/issue |
如果匹配,恭喜,可以跳到下个步骤直接安装了,如果并没有找到,那么想使用锐速的话,就需要进行内核的升/降级.当然,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
将引号内的内容复制下来,如图蓝框中所选:
3,执行以下命令:
1 | grep menuentry /boot/grub/grub.cfg |
找到类似以下的单引号中的子选项:
Ubuntu, with Linux 3.13.0-24-generic
将引号内的内容复制下来,如图蓝框中所选:
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 | accif="eth*" |
以上内容为本人搜集整理资料后结合自身实践得出的结果,如有错误欢迎指正与交流~ ~
参考链接:
降级linux内核
Centos 6.7内核降级到kernel-2.6.32-504.el6.i686.rpm
锐速评测报告指导帖
Appex/锐速TCP加速教程和最佳优化设置教程
Serverspeeder 锐速config配置文件详解