×

为什么非要将OpenVPN移植到内核不是在它本身优化它

消耗积分:1 | 格式:pdf | 大小:0.20 MB | 2019-04-23

48674

分享资料个

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

  在 多核心时代,内核进行多处理真的是太简单不过了,只要把过程用softirq或者tasklet调度到不同的CPU核心即可,哪来的那么多诸如epoll 的那么复杂的规范。但是这并不是说内核态写代码就一定好,前提得是你能驾驭它!不光是panic,oops.。.更重要的是即便你能处理了这些,你也不能 把一个系统当成一个单片机来玩,因为你违背了软件设计的基本原则。我不喜欢嵌入式的原因就在于此。在内核中处理逻辑是极其不规范的做法,除非你知道自己在 做什么。事实上,在内核态能做的事情在用户态都可以做,关键是你得知道怎么做,如果你不想copy buffer,你可以用map,如果你想缩短协议栈处理路径,干嘛不直接学学PF_RING的样子,在用户态平坦化处理。..但问题是,你知道怎么折腾这 些吗?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !