terminal2000 发表于 2005-10-29 12:42:44

BFW使用KERNEL-MODE-PPPOE

我下了个BFW的build tree,重新编译着来玩,给BUSYBOX加上了top命令。
在top下看,发现pppoe进程占用的CPU非常的高,当高峰时,BT下载上传都几百K接近1M时,它占用了30%的CPU。(机器cpu: CE333)
于是想到用kernel-mode-pppoe。
恰好BFW还带了pppox.o和pppoe.o
我又自己重新编译了rp-pppoe和pppd(用的新版本的,老版本没运行成功),得到rp-pppoe.so和pppd(这个pppd不晓得怎么搞的,很大,170K的样子)。

然后安装:
1.将pppox.o,pppoe.o,rp-pppoe.so加进/lib/modules
2.用新的pppd代替老的pppd
3.修改/etc/rc.d/rc.pppoe
echo "pty 'pppoe -I $IF_INET -m 1452'"         >>/etc/ppp/options
改为:
# use kernel mode pppoe
insmod /lib/modules/pppox.o
insmod /lib/modules/pppoe.o
echo "plugin /lib/modules/rp-pppoe.so $IF_INET "            >>/etc/ppp/options
#echo "pty 'pppoe -I $IF_INET -m 1452'"         >>/etc/ppp/options
这样就使用rp-pppoe.so这个plugin而不是pppoe了。但是这里还有个问题,原先传给pppoe的-m 1452的这个参数,现在没有办法传给rp-pppoe.so,导致不能设置MSS,有些网站就访问不了了,我搞了好久才找到原因并找出解决方法,这就是下面的:
4.修改/etc/ppp/ip-up
将文件末尾的 exit0 这行前加点东西,改成下面这样:
# patch!
# needed for using rp-pppoe.so
iptables -I FORWARD -o $1 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452
iptables -I FORWARD -o $IF_LOCAL -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452
logger -p daemon.info -t ip-up "ip-up script do --set-mss 1452 on $1 and $IF_LOCAL"
exit 0

这样应该就没问题了。不过怎么保存就看自己的方法了,pppd在root.tgz里,这个包是不保存的。一般的方法是手动修改它了。
我的方法更方便

[ 本帖最后由 terminal2000 于 2005-10-29 16:02 编辑 ]

DreamCat 发表于 2005-10-29 13:23:44

改完之后CPU占用率是多少?BFW我还没用呢。
感觉这个方法不好。

terminal2000 发表于 2005-10-29 16:13:48

改后,PPPOE进程就没有了,PPPOE运行在KERNEL SPACE,用top也看不到CPU占用的。
不过,从load值来看,我CE333的机器,上传1MB再下载1MB,load值也比先前小得多了,只有0.0X的样子。
我上传了个包,里面有我说到的文件,除了pppoe.o和pppox.o两个是BFW自带的(但是这两个文件目前他还没有用到),其余的文件。
但并不是直接拷过去就能用的,这点要注意。
原因是BFW的备份脚本不备份ROOT.TGZ,而又会破坏不含有.list文件的包。所以不好打补丁。我的解决方案是修改那个备份脚本,使其不备份不含.list文件的包,那么补丁包直接拷过去就能用了,只是不能直接修改它们的内容。

DreamCat 发表于 2005-10-29 17:17:21

嗯,修改备份脚本就是了。

kinsaang 发表于 2005-12-3 19:49:49

老大,有没有方法只是把BFW的linux内核升级问2.5.75版本。
如果知道,麻烦告诉我如何做,谢谢~
页: [1]
查看完整版本: BFW使用KERNEL-MODE-PPPOE