找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 服务器 Linux/BSD 查看内容

pptp内核空间的实现分析报告

2009-12-20 13:37| 发布者: admin| 查看: 50| 评论: 0|原作者: 仙剑

首先,我们看一下PPTP的用户空间实现的系统框架图
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.cublog.cn/u/4249/upfile/060406140021.jpg');}" onmousewheel="return imgzoom(this);" alt="" />
看到这个图,我们会发现与PPPOE用户空间实现类似,下面讲一下数据流程:
首先PPTP会与PPTP SERVER进行控制连接,接下来就会走进PPPD中进行PPP协议的交互,建立PPP连接后,就会产生PPP0接口。
下面看看连接建立后,报文是如何走的
当收到有报文从ETH口进来时,PPTP会先解去GRE报头,然后就剩下PPP报文,送到伪终端主设备,到达伪终端从设备,送入PPP0接口单元,PPP0驱动解开压缩与加密的PPP报文后将报文送到上层进行处理。
当本机要发送报文时,首先发送到PPP0驱动接口,压缩并加密,变成PPP报文发送到伪终端从设备,到达伪终端主设备,到达PPTP,PPTP加上GRE头,通过RAW SOCKET从ETH口发送出去。
上面的数据流必须要通过伪终端进行连接PPTP与PPP0,这是性能下降的关键,所以如果去掉伪终端而让PPP0与PPTP中的RAW SOCKET直接绑定,这样数据传输性能势必会有大的提升。
从上面的分析我们可以看到,在PPTP中主要工作就是一开始建立连接的控制过程,然后就是在建立连接后的对报文进行GRE封装。这与PPPOE的运行机制很相似。所以我们可以仿照PPPOE内核空间实现,实现PPTP内核空间功能。
接下来工作主要是两部:
一是在内核协议栈中添加IP GRE协议SOCKET套接口。
二是将PPTP用户空间的实现进行改写,放到PPPD中以插件的方式运行。





最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 15:25 , Processed in 0.093750 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部