電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子論文>網(wǎng)絡(luò)協(xié)議論文>關(guān)于BadVPN的原理闡述

關(guān)于BadVPN的原理闡述

2017-09-30 | rar | 0.3 MB | 次下載 | 2積分

資料介紹

  這可能是第一篇關(guān)于BadVPN原理的中文介紹,所以我恪守職責,希望能將BadVPN的原理闡述清楚,而不僅僅是為了欺世盜名取天下之先。

  前言

  我關(guān)注VPN已經(jīng)多年了,有三類VPN讓我覺得驚嘆幫我理解了網(wǎng)絡(luò)協(xié)議的體系結(jié)構(gòu)。首先IPSec,I2TP,PPTP這種傳統(tǒng)的VPN技術(shù)讓我知道原來協(xié)議棧還可以如此的相互Over,然后就接觸到了OpenVPN,如此一個簡單的玩意兒竟然擁有如此強大的組網(wǎng)能力,我喜歡這個OpenVPN,一去就是三五年,期間這個玩意兒也為我?guī)砗芏喱F(xiàn)實的東西,比如獎金,比如加薪升職什么的,打心眼里,我覺得利用OpenVPN的理念,可以創(chuàng)造出世界第一等的VPN產(chǎn)品。。.直到我遇到了BadVPN!

  當然,最基本的VPN就是IPSec VPN,然而要想配置好一個多點的IPSec VPN網(wǎng)絡(luò)及其復(fù)雜和費事,最終EzVPN彌補了這個不足,它通過一個所謂的中心節(jié)點簡化了配置。然而這一切都是“官方”的方案。落實到普通程序員可以就地使用的方案,沒幾個。OenVPN是一個,BadVPN也是一個。

  我承認,前幾年我被OpenVPN沖昏了頭腦,竟然忽略了世界上還有一個叫做BadVPN的東西。都到了2017年了,我才第一次注意到它,這多多少少有點讓自己覺得悲哀。

  BadVPN是另一個VPN

  為了能快速理解BadVPN的原理,我準備從OpenVPN開始,當你知道了OpenVPN有什么問題的時候,就會更加容易理解BadVPN是如何解決這些問題的了,而這些正是理解BadVPN的關(guān)鍵。我先來展示一個OpenVPN的結(jié)構(gòu)圖,假設(shè)使用TAP Bridge模式:

  關(guān)于BadVPN的原理闡述

  可以看出,OpenVPN有一個所謂的“中心節(jié)點”,其它所有的子節(jié)點都連接到這個中心節(jié)點。OpenVPN的這個中心節(jié)點身兼兩職:

  1. 提供總體的控制功能,負責與子節(jié)點密鑰協(xié)商,分配虛擬子網(wǎng)的IP地址給子節(jié)點,推送策略給子節(jié)點等;

  2. 同時作為一個對等的VPN節(jié)點存在,和各個子節(jié)點所攜帶的子網(wǎng)互聯(lián)互通。

  上述兩點可以看出,第一點是控制平面的功能,第二點是數(shù)據(jù)平面的功能,二者完全在一個鏈路上傳輸,這意味著什么?這意味著要精心設(shè)計OpenVPN的協(xié)議,以區(qū)分到來的數(shù)據(jù)包包含的是控制信息還是數(shù)據(jù)。

  OpenVPN協(xié)議區(qū)分了數(shù)據(jù)是控制面的數(shù)據(jù)還是數(shù)據(jù)面的數(shù)據(jù),然而這種區(qū)分是帶內(nèi)實現(xiàn)的,也就是說通過協(xié)議頭的字段來實現(xiàn)的,姑且不說封裝這個協(xié)議頭會帶來什么開銷,僅僅在OpenVPN進程中去多路復(fù)用并行處理控制平面和數(shù)據(jù)平面就夠復(fù)雜的了。

  按照傳統(tǒng)的網(wǎng)絡(luò)設(shè)計觀點,中心節(jié)點即服務(wù)端就是一個交換機,而各個VPN子節(jié)點客戶端就像是“該交換機端口的另一端”連接的各個主機或者級聯(lián)交換機,這是一個典型的星型拓撲。然而按照SDN控制平面的觀點來看的話,中心節(jié)點就是一個控制器,它控制了整個的VPN網(wǎng)絡(luò)轉(zhuǎn)發(fā)邏輯,所有的子節(jié)點要發(fā)送數(shù)據(jù)必須無條件轉(zhuǎn)發(fā)到中心節(jié)點,讓中心節(jié)點決定數(shù)據(jù)轉(zhuǎn)發(fā)到何方,這意味著哪怕是子節(jié)點客戶端之間互相通信,也必須經(jīng)由中心節(jié)點來轉(zhuǎn)發(fā)。

  不管站在什么立場上來看,OpenVPN的中心節(jié)點都是一個單點,不管是從效率還是從可用性上來權(quán)衡,這都不是一個優(yōu)雅的方式。說點題外話,幸虧我個人精通Linux網(wǎng)絡(luò),可以通過iptables,iproute2,多線程改造OpenVPN,bonding TAP網(wǎng)卡,Keepalived等措施來破除這種限制,消除種種效率和可用性上的威脅,我才得以駕馭OpenVPN,不然的話,用OpenVPN來組網(wǎng)還真的限制多多。即便我有能力Hold住存在單點問題的OpenVPN,最終我還是失敗了。我已經(jīng)把OpenVPN堆積的不成樣子了,迫切需要一個新的思路。

  OpenVPN的中心節(jié)點扮演了過于重量級的角色,這導(dǎo)致了任意建立VPN通道的節(jié)點之間的關(guān)系不可能是對等的,OpenVPN必須以主從方式建立VPN通道。這就主從結(jié)構(gòu)的限制使得OpenVPN在組網(wǎng)方面很難構(gòu)建多點對多點的網(wǎng)狀拓撲。

  那么BadVPN有何不同呢?為了與OpenVPN做對比,我還是先來展示一個BadVPN的總覽圖:

  關(guān)于BadVPN的原理闡述

  所有的節(jié)點綜合起來構(gòu)成了一個巨大的交換機,大家一起完成交換機的功能,各個VPN子節(jié)點(為了對比,我依然沿用OpenVPN中心節(jié)點,子節(jié)點的術(shù)語)就是交換機端口本身,而不再是“端口對端”連接的設(shè)備。其中,中心節(jié)點不再負責實際的數(shù)據(jù)轉(zhuǎn)發(fā),而僅僅作為一個“維護這個交換機組成部分”的控制器存在,中心節(jié)點負責以下的事宜:

  1. 記錄該VPN網(wǎng)絡(luò)中擁有多少節(jié)點主機,即“該大交換機中有多少端口”以及“端口的添加,刪除以及通告”;

  2. 構(gòu)建子節(jié)點與中心節(jié)點之間,子節(jié)點與子節(jié)點之間的TLS控制通道,協(xié)商子節(jié)點之間的通信密鑰。

  這意味著各個子節(jié)點之間的VPN互通不再需要經(jīng)過中心節(jié)點,實際上也根本就沒有什么可以進行數(shù)據(jù)通信的VPN中心節(jié)點。VPN通信節(jié)點之間變成了真正的點對點通信,除非你配置中繼(BadVPN的一種特殊運行方式,在權(quán)限受制的場景下使用,本文不討論,詳情參見BadVPN的Document),任何VPN之間的通信都是直接通信,不需要經(jīng)過第三方。

  這意味著什么?這意味著:

  1. BadVPN的協(xié)議會非常簡單;

  2. BadVPN的處理過程會非常簡單。

  BadVPN將控制平面和數(shù)據(jù)平面做了帶外的分離,不再僅僅是帶內(nèi)分離而依靠協(xié)議來區(qū)分。關(guān)于這一點,后面會詳述,下面的小節(jié)我們在感官上認識一下BadVPN的原理。

  BadVPN的運行原理圖解

  長篇大論終究會因為文筆不好而適得其反,所以還是通過畫圖具體來點情景分析為好。我分兩種場景來描述BadVPN的行為,即非打洞場景和打洞場景,先看非打洞場景。

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1HFSS電磁仿真設(shè)計應(yīng)用詳解PDF電子教程免費下載
  2. 24.30 MB   |  126次下載  |  1 積分
  3. 2H橋中的電流感測
  4. 545.39KB   |  7次下載  |  免費
  5. 3雷達的基本分類方法
  6. 1.25 MB   |  4次下載  |  4 積分
  7. 4I3C–下一代串行通信接口
  8. 608.47KB   |  3次下載  |  免費
  9. 5電感技術(shù)講解
  10. 827.73 KB  |  2次下載  |  免費
  11. 6從 MSP430? MCU 到 MSPM0 MCU 的遷移指南
  12. 1.17MB   |  2次下載  |  免費
  13. 7有源低通濾波器設(shè)計應(yīng)用說明
  14. 1.12MB   |  2次下載  |  免費
  15. 8RA-Eco-RA2E1-48PIN-V1.0開發(fā)板資料
  16. 35.59 MB  |  2次下載  |  免費

本月

  1. 12024年工控與通信行業(yè)上游發(fā)展趨勢和熱點解讀
  2. 2.61 MB   |  763次下載  |  免費
  3. 2HFSS電磁仿真設(shè)計應(yīng)用詳解PDF電子教程免費下載
  4. 24.30 MB   |  126次下載  |  1 積分
  5. 3繼電保護原理
  6. 2.80 MB   |  36次下載  |  免費
  7. 4正激、反激、推挽、全橋、半橋區(qū)別和特點
  8. 0.91 MB   |  32次下載  |  1 積分
  9. 5labview實現(xiàn)DBC在界面加載配置
  10. 0.57 MB   |  21次下載  |  5 積分
  11. 6在設(shè)計中使用MOSFET瞬態(tài)熱阻抗曲線
  12. 1.57MB   |  15次下載  |  免費
  13. 7GBT 4706.1-2024家用和類似用途電器的安全第1部分:通用要求
  14. 7.43 MB   |  13次下載  |  免費
  15. 8PADS-3D庫文件
  16. 2.70 MB   |  10次下載  |  2 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935113次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191360次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183329次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81578次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73804次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65985次下載  |  10 積分