OpenVPN移植进内核了,TODO的事情实在太多

花了一个周末,两天一夜,把OpenVPN数据通道移植进了Linux内核。今天小小生病,没去上班,晚上正好总结一下,因为TODO的事情实在太多,又
到年底了,公司家里的事情实在太多,可能没有多少时间让我这么折腾了。回到家里应该把时间全部留给我可爱的小小,路上的时间要留给那本厚厚的GEB...
总之,没时间折腾VPN了。
       OpenVPN内核版留下了一堆的TODO,作为一个储备,等到真的用到的时候再完善吧。TODO列表如下:
1.OpenVPN进程和内核之间的event接口

个event接口实在重要,因为诸如keepalive/ping/ping-restart...都要使用。内核需要为一个
multi_instance维护一个流量计数器,并保留上一次收到数据包的时间,这样用户态可以按照定时器的设置来查询,从而触发ping-
restart...
2.优化控制通道
数据通道不再被OpenVPN进程处理,OpenVPN进程完全留给了控制通道,因此便可以做更多的事了,肢解是一种会带来快感的艺术。
3.内核态需要一个强大且通用的类似OpenSSL EVP操作集
我本来准备参考PolarSSL的,也就是说将PolarSSL的部分接口在内核重实现的,我觉得这花不了太多的时间,但是毕竟不是没有时间么..1000块钱不多,但就是没有。
4.短路操作是否可以更短些
我用一个ioctl命令将一个UDP socket和tun网卡LINK在一起(短接在一起),这真的是名副其实的短路啊,完全绕过了OpenVPN这个巨大电阻!!但是能都更短些呢?
5.TODO
...
突然觉得〈亡灵序曲〉很好听,特别是死亡金属版本的,是不是该去殴两盘魔兽了啊...

时间: 2024-10-25 05:45:08

OpenVPN移植进内核了,TODO的事情实在太多的相关文章

OpenVPN的Linux内核版,鬼魅的残缺 Prelude

首先向James yonan致敬!其次吐个槽,这都12月份了,还打雷,看来这股冷空气威力不是一般的大啊,大气环流和气压都被它改变了,我仿 佛看到了热空气和雾霾被这股异常强大的寒潮挤压得像难民一样背井离乡....这对于我而言,意义十分重大,从下周一开始,我将告别短袖T恤,穿上衬衫 了...再次重申,我这个时候穿短袖真的不冷,我能坚持到5摄氏度穿短袖,真的不冷,我在7摄氏度的时候偶尔穿一次长袖是因为压力实在太大... OpenVPN不好,代码简单却不好读,逻辑清晰却不好改,你明明知道该怎么改了,却迟

OpenVPN的Linux内核版,鬼魅的残缺 part IV:Normal Method

谁能在上海请我吃一顿烤全羊!又折腾了几乎个通宵...对于将OpenVPN弄进内核这件事,我已经找到了两个思路:1.使用UDP的encap rcv HOOK/tun xmit HOOK:2.使用Netfilter的PREROUTING HOOK分离控制通道和数据通道:但 是有个问题,那就是它们都仅仅对UDP有效,而OpenVPN虽不建议但是也是对TCP提供支持的.然而如果实现TCP模式的内核OpenVPN数据通道 处理,就必须在传输层之上来做,因为TCP必须要完成它自己的协议事务,比如确认,重传等

OpenVPN的Linux内核版,鬼魅的残缺 View

是时候给出一个总的图景了,是时候了.我的意思是说,为什么非要将OpenVPN移植到内核,而不是在用户态,即在它本身优化它.为什么呢?事实上我已经在用户态优化了它,虽然有些难以定位的segment fault,但是并不是说我没有时间没有能力搞定这些,知难而退到内核(退到内核碰到panic岂不是更难搞),不是这样的.我的本意是,且一直都是,我要缩短处理路径的长度,我从来都不相信什么软件神话,事实上我憎恨这些神话.正如一位网友所说,干嘛非要区分什么内核态,用户态!关键点不在哪个态处理效率高,关键在处理

OpenVPN的Linux内核版,鬼魅的残缺 part II:The encrypt engine

一夜入冬啊一夜入冬,医院回来的路上已经困得不行了,不过还是仔细思考了我的OpenVPN内核版.和那些天天在微信朋友圈晒工作的相比我简直弱爆了,我 本应该说今天没有去上班,然后心里多么多么内疚的,什么耽误工作之类的,不过那不是我的style,就像我同样不喜欢在工位上贴大量的任务计划一样...       把本已不堪的OpenSSL移植到Linux Kernel,这真是一个疯狂的想法,极其疯狂的想法,过于疯狂的想法,以至于作为一个还算正常的人只好作罢!我需要的是使用现有的内核中的加密引擎或者 简单的

OpenVPN的Linux内核版,鬼魅的残缺 part III rework with Netfilter

哥们儿拿到了juniper的offer,由衷祝福,酒足饭饱后的我,在Netfilter的路上却根本停不下来.已经是深夜,回忆这些年在Netfilter上的探索,结合目前的一些状况,突然觉得,既然我已经想把OpenVPN弄到内核了,那为何上一个鬼魅的实现没有使用Netfilter呢?当时我就觉得采用UDP的encap_rcv HOOK这种方式太鬼魅,又有些残缺,缺了什么却不知道,谁说没钱就不能任性,我当时可能就觉得:我就是不用Netfilter,我就是要用另一个方法!就好像上高中的时候,数学课上,

喜羊羊系列【设备 - 驱动器 编译进内核】

博客:http://blog.csdn.net/muyang_ren 这篇和设备-驱动动态载入进内核做对照 *针对不同的平台.可能放进的不是以下的文件内,仅仅做參考 1.头文件 放进:linux-3.0.8\arch\arm\plat-samsung\include\plat led.h #ifndef _HEAD_H #define _HEAD_H #define MAGIC 'h' #define LED_ON _IOW(MAGIC,1,int) #define LED_OFF _IOW(M

(转载)移植最新内核linux-3.14.6到mini2440开发板

1.建立目标平台1.1 添加机器码--LINGD2440在arch/arm/tools/mach-types 下,添加以下一行[email protected]:~/arm/linux-3.14.6$ vim arch/arm/tools/mach-types lingd2440 MACH_LINGD2440 LINGD2440 19981.2 添加平台文件--mach-lingd2440.c复制arch/arm/mach-s3c24xx目录下的 mach-smdk2440.c,命名为mach-

为AM335x移植Linux内核主线代码

/********************************************************************** * 为AM335x移植Linux内核主线代码 * 说明: * MariannaZhu对AM335x做Linux内核移植时写的blog,记录一下,也许以后 * 用得到. * * 2016-12-5 深圳 南山平山村 曾剑锋 *******************************************************************

【转】Linux驱动模块编译进内核中

原文网址:http://blog.chinaunix.net/uid-29287950-id-4573481.html BQ27501驱动编译进内核 一.       驱动程序编译进内核的步骤 在 linux 内核中增加程序需要完成以下三项工作: 1. 将编写的源代码复制到 Linux 内核源代码的相应目录: 2. 在目录的 Kconfig 文件中增加新源代码对应项目的编译配置选项: 3. 在目录的 Makefile 文件中增加对新源代码的编译条目. bq27501驱动编译到内核中具体步骤如下: