12月 032010
 

dog250 发表于 @ 2010年06月01日 22:32:00

OpenVPN由于其设计问题,速度很慢,有人认为是由于加密解密导致了速度变慢,当将cipher设置成none之后,发现效率并没有提升,并且使用最慢的cipher,使用比较好的cpu,设置比较大的txqueuelen,使用比较快的网卡–100baseT- FD,OpenVPN的效率还是不行,cpu使用率没多少,那么可以认为提升cpu性能已经于事无补了,后来才发现是OpenVPN自身的问题,通过源代码看得出OpenVPN是一个单进程单线程的程序,整个程序启动后就是一个大的循环,结构如下:

while (true) {
    select/poll/epoll
    do-io[tun-io/socket-io]
}

这样的结构效率肯定不会太高,因此就不要再想从配置上寻找优化的突破口了,然而修改源代码又太麻烦,于是考虑多进程的方式,那就是在客户端和服务器分别启动数量相同的N多个OpenVPN进程,一对一的连接,这就相当于建立了N条隧道,单条隧道不宽,但是可以有多条隧道,然后大流量由所有这些隧道分担, Continue reading »