电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子论文>网络协议论文>关于BadVPN的原理阐述

关于BadVPN的原理阐述

2017-09-30 | rar | 0.3 MB | 次下载 | 2积分

资料介绍

  这可能是第一篇关于BadVPN原理的中文介绍,所以我恪守职责,希望能将BadVPN的原理阐述清楚,而不仅仅是为了欺世盗名取天下之先。

  前言

  我关注VPN已经多年了,有三类VPN让我觉得惊叹帮我理解了网络协议的体系结构。首先IPSec,I2TP,PPTP这种传统的VPN技术让我知道原来协议栈还可以如此的相互Over,然后就接触到了OpenVPN,如此一个简单的玩意儿竟然拥有如此强大的组网能力,我喜欢这个OpenVPN,一去就是三五年,期间这个玩意儿也为我带来很多现实的东西,比如奖金,比如加薪升职什么的,打心眼里,我觉得利用OpenVPN的理念,可以创造出世界第一等的VPN产品。。.直到我遇到了BadVPN!

  当然,最基本的VPN就是IPSec VPN,然而要想配置好一个多点的IPSec VPN网络及其复杂和费事,最终EzVPN弥补了这个不足,它通过一个所谓的中心节点简化了配置。然而这一切都是“官方”的方案。落实到普通程序员可以就地使用的方案,没几个。OenVPN是一个,BadVPN也是一个。

  我承认,前几年我被OpenVPN冲昏了头脑,竟然忽略了世界上还有一个叫做BadVPN的东西。都到了2017年了,我才第一次注意到它,这多多少少有点让自己觉得悲哀。

  BadVPN是另一个VPN

  为了能快速理解BadVPN的原理,我准备从OpenVPN开始,当你知道了OpenVPN有什么问题的时候,就会更加容易理解BadVPN是如何解决这些问题的了,而这些正是理解BadVPN的关键。我先来展示一个OpenVPN的结构图,假设使用TAP Bridge模式:

  关于BadVPN的原理阐述

  可以看出,OpenVPN有一个所谓的“中心节点”,其它所有的子节点都连接到这个中心节点。OpenVPN的这个中心节点身兼两职:

  1. 提供总体的控制功能,负责与子节点密钥协商,分配虚拟子网的IP地址给子节点,推送策略给子节点等;

  2. 同时作为一个对等的VPN节点存在,和各个子节点所携带的子网互联互通。

  上述两点可以看出,第一点是控制平面的功能,第二点是数据平面的功能,二者完全在一个链路上传输,这意味着什么?这意味着要精心设计OpenVPN的协议,以区分到来的数据包包含的是控制信息还是数据。

  OpenVPN协议区分了数据是控制面的数据还是数据面的数据,然而这种区分是带内实现的,也就是说通过协议头的字段来实现的,姑且不说封装这个协议头会带来什么开销,仅仅在OpenVPN进程中去多路复用并行处理控制平面和数据平面就够复杂的了。

  按照传统的网络设计观点,中心节点即服务端就是一个交换机,而各个VPN子节点客户端就像是“该交换机端口的另一端”连接的各个主机或者级联交换机,这是一个典型的星型拓扑。然而按照SDN控制平面的观点来看的话,中心节点就是一个控制器,它控制了整个的VPN网络转发逻辑,所有的子节点要发送数据必须无条件转发到中心节点,让中心节点决定数据转发到何方,这意味着哪怕是子节点客户端之间互相通信,也必须经由中心节点来转发。

  不管站在什么立场上来看,OpenVPN的中心节点都是一个单点,不管是从效率还是从可用性上来权衡,这都不是一个优雅的方式。说点题外话,幸亏我个人精通Linux网络,可以通过iptables,iproute2,多线程改造OpenVPN,bonding TAP网卡,Keepalived等措施来破除这种限制,消除种种效率和可用性上的威胁,我才得以驾驭OpenVPN,不然的话,用OpenVPN来组网还真的限制多多。即便我有能力Hold住存在单点问题的OpenVPN,最终我还是失败了。我已经把OpenVPN堆积的不成样子了,迫切需要一个新的思路。

  OpenVPN的中心节点扮演了过于重量级的角色,这导致了任意建立VPN通道的节点之间的关系不可能是对等的,OpenVPN必须以主从方式建立VPN通道。这就主从结构的限制使得OpenVPN在组网方面很难构建多点对多点的网状拓扑。

  那么BadVPN有何不同呢?为了与OpenVPN做对比,我还是先来展示一个BadVPN的总览图:

  关于BadVPN的原理阐述

  所有的节点综合起来构成了一个巨大的交换机,大家一起完成交换机的功能,各个VPN子节点(为了对比,我依然沿用OpenVPN中心节点,子节点的术语)就是交换机端口本身,而不再是“端口对端”连接的设备。其中,中心节点不再负责实际的数据转发,而仅仅作为一个“维护这个交换机组成部分”的控制器存在,中心节点负责以下的事宜:

  1. 记录该VPN网络中拥有多少节点主机,即“该大交换机中有多少端口”以及“端口的添加,删除以及通告”;

  2. 构建子节点与中心节点之间,子节点与子节点之间的TLS控制通道,协商子节点之间的通信密钥。

  这意味着各个子节点之间的VPN互通不再需要经过中心节点,实际上也根本就没有什么可以进行数据通信的VPN中心节点。VPN通信节点之间变成了真正的点对点通信,除非你配置中继(BadVPN的一种特殊运行方式,在权限受制的场景下使用,本文不讨论,详情参见BadVPN的Document),任何VPN之间的通信都是直接通信,不需要经过第三方。

  这意味着什么?这意味着:

  1. BadVPN的协议会非常简单;

  2. BadVPN的处理过程会非常简单。

  BadVPN将控制平面和数据平面做了带外的分离,不再仅仅是带内分离而依靠协议来区分。关于这一点,后面会详述,下面的小节我们在感官上认识一下BadVPN的原理。

  BadVPN的运行原理图解

  长篇大论终究会因为文笔不好而适得其反,所以还是通过画图具体来点情景分析为好。我分两种场景来描述BadVPN的行为,即非打洞场景和打洞场景,先看非打洞场景。

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1电子电路原理第七版PDF电子教材免费下载
  2. 0.00 MB  |  1490次下载  |  免费
  3. 2单片机典型实例介绍
  4. 18.19 MB  |  93次下载  |  1 积分
  5. 3S7-200PLC编程实例详细资料
  6. 1.17 MB  |  27次下载  |  1 积分
  7. 4笔记本电脑主板的元件识别和讲解说明
  8. 4.28 MB  |  18次下载  |  4 积分
  9. 5开关电源原理及各功能电路详解
  10. 0.38 MB  |  10次下载  |  免费
  11. 6基于AT89C2051/4051单片机编程器的实验
  12. 0.11 MB  |  4次下载  |  免费
  13. 7基于单片机和 SG3525的程控开关电源设计
  14. 0.23 MB  |  3次下载  |  免费
  15. 8基于单片机的红外风扇遥控
  16. 0.23 MB  |  3次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234313次下载  |  免费
  3. 2PADS 9.0 2009最新版 -下载
  4. 0.00 MB  |  66304次下载  |  免费
  5. 3protel99下载protel99软件下载(中文版)
  6. 0.00 MB  |  51209次下载  |  免费
  7. 4LabView 8.0 专业版下载 (3CD完整版)
  8. 0.00 MB  |  51043次下载  |  免费
  9. 5555集成电路应用800例(新编版)
  10. 0.00 MB  |  33562次下载  |  免费
  11. 6接口电路图大全
  12. 未知  |  30320次下载  |  免费
  13. 7Multisim 10下载Multisim 10 中文版
  14. 0.00 MB  |  28588次下载  |  免费
  15. 8开关电源设计实例指南
  16. 未知  |  21539次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935053次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537791次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234313次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191183次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183277次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138039次下载  |  免费