【摘要】L2 VPN工作在OSI網(wǎng)絡(luò)模型的第二層,它可以隱藏地域限制,并提供虛擬專有網(wǎng)絡(luò)服務(wù)。本論文研究如何基于IPSec隧道實現(xiàn)L2 VPN。
【關(guān)鍵詞】L2 VPNIPSec隧道虛擬化The Research and Design of IPSec-based L2 VPN
ZHU Yufeng(School of Electronics Engineering and Computer Science, Peking University, Beijing, 100871, China)
Abstract: L2 VPN is working at layer 2 of OSI network model, which can hide the geographical limitations and provide virtual private network service.
This paper is intended to give solutions to implement L2 VPN using IPSec tunnel.
Key Words:L2 VPN, IPSec Tunnel, Virtualization
一、引言
隨著虛擬化及云計算的興起和應(yīng)用,VPN隧道成為一個連接不同地區(qū)虛擬數(shù)據(jù)中心或者云計算中心的必備技術(shù),其中L2 VPN工作在OSI網(wǎng)絡(luò)模型的第二層,它可以隱藏地域限制,提供虛擬專有網(wǎng)絡(luò)服務(wù),能夠更好的滿足虛擬化及云計算的需求。
二、方法研究
L2 VPN基本的概念是將L2網(wǎng)橋和IPSec VPN網(wǎng)關(guān)結(jié)合,利用VPN隧道模擬物理網(wǎng)線,將2臺或者多臺跨越因特網(wǎng)的網(wǎng)橋連接起來。
如圖所示:
為了實現(xiàn)以上L2 VPN的功能,我們需要考慮以下因素:
(1)如何將L2數(shù)據(jù)包導(dǎo)向VPN隧道;
(2)如何封裝以太網(wǎng)幀;
(3)數(shù)據(jù)包的flow設(shè)計;
(4)如何支持VLAN;
(5)如何支持多站點多用戶(例如,星型拓?fù)洌?/p>
2.1重定向數(shù)據(jù)包到VPN隧道
為了很好的連接L2網(wǎng)橋和VPN網(wǎng)關(guān),我們定義一個虛擬的隧道端口,用來解耦合網(wǎng)橋和VPN的功能。對于網(wǎng)橋來說,虛擬隧道端口就像是一個物理端口一樣,用來收發(fā)以太網(wǎng)數(shù)據(jù)包。對于VPN網(wǎng)關(guān)來說,虛擬隧道端口就是一個明文數(shù)據(jù)包進(jìn)入加密隧道的入口,所有到達(dá)虛擬隧道端口的數(shù)據(jù)包,都將會被加密從隧道發(fā)出去。
虛擬隧道端口模擬物理以太網(wǎng)端口,它的功能如下:
(1)在內(nèi)核中創(chuàng)建一個虛擬網(wǎng)絡(luò)端口;
(2)發(fā)送以太網(wǎng)數(shù)據(jù)包。而驅(qū)動程序的發(fā)送功能,就是VPN隧道加密。
(3)接收以太網(wǎng)數(shù)據(jù)包。VPN加密后,會把明文放到虛擬端口的接收隊列。
(4)支持網(wǎng)橋MAC反向?qū)W習(xí)。
(5)支持VLAN tag。
所有對于L2網(wǎng)橋看來,虛擬隧道端口和物理網(wǎng)橋端口沒有任何區(qū)別,收到和發(fā)送的都是以太網(wǎng)數(shù)據(jù)包。網(wǎng)橋也不知道VPN網(wǎng)關(guān)的存在。同樣,VPN網(wǎng)關(guān)也知道網(wǎng)橋的存在,到達(dá)VPN網(wǎng)關(guān)也只是以太網(wǎng)數(shù)據(jù)包。
2.2以太網(wǎng)數(shù)據(jù)包封裝
IPSec隧道工作在三層,用來設(shè)計封裝IP數(shù)據(jù)包,所以我們需要將以太網(wǎng)幀封裝成IP數(shù)據(jù)包,再將該IP數(shù)據(jù)包封裝成IPSec數(shù)據(jù)包。
我們可以考慮以下方式:
(1)EtherIP over IPSec;
(2)非標(biāo)準(zhǔn)的IPSec封裝;
(3)混合模式。
(8)VPN1收到ARP應(yīng)答密文包,解密去EtherIP和IPSec包頭,查詢MAC地址表,得知出口是eth1,然后將報文發(fā)往PC1。此時,VPN1并且更新MAC地址表。
VPN2網(wǎng)橋的MAC表:
(9)PC1收到ARP應(yīng)答明文包,學(xué)到PC2的MAC地址。然后發(fā)送ICMP請求到PC2。數(shù)據(jù)包的目的MAC是PC2-MAC,源MAC是PC1-MAC。
(10)VPN1收到ICMP請求,查詢MAC地址表得到出口是tun1,將數(shù)據(jù)包送到VPN隧道加密,然后發(fā)往VPN2網(wǎng)關(guān)。
(11)VPN2收到ICMP請求,查詢MAC地址表,得到出口是eth1,將數(shù)據(jù)包發(fā)送到PC2。
(12)PC2收到ICMP請求并發(fā)送ICMP應(yīng)答,該應(yīng)答數(shù)據(jù)包被發(fā)發(fā)送到VPN2。
(13)VPN2收到ICMP應(yīng)答,查詢MAC地址表,得到出口是tun1,將數(shù)據(jù)包通過隧道發(fā)送到VPN1。
(14)VPN1收到ICMP應(yīng)答,查詢MAC地址表,得到出口是eth1,將數(shù)據(jù)包發(fā)送到PC1。
3.1VLAN支持
二層網(wǎng)橋可能連接很多VLAN,隧道端口需要工作在TRUNK模式,這樣可以允許VLAN數(shù)據(jù)包通過VPN隧道。
拓?fù)淙缦拢?/p>
EtherIP over IPSec可以封裝VLAN tag,但是overhead會比較大。一種優(yōu)化的方法是分配每個tunnel端口和tunnel一個VALN tag,這樣就不需要封裝VLAN tag,提高有效載荷。
3.2星型拓?fù)渲С?/p>
要支持Hub Spoke星型拓?fù)洌覀冎恍枰僭黾右粋€tunnel端口,并且把該端口綁定到一個到Spoke的VPN隧道。該設(shè)計非常靈活,易于擴(kuò)展。
拓?fù)淙缦拢?/p>
四、結(jié)束語
本文通過引入虛擬隧道端口,巧妙的將L2網(wǎng)橋和IPSec VPN網(wǎng)關(guān)結(jié)合在一起,簡單并且有效的將數(shù)據(jù)包重定向到VPN隧道。
另外,本文通過結(jié)合EtherIP over IPSec封裝發(fā)送多播和廣播數(shù)據(jù)包,IPSec封裝發(fā)送單播數(shù)據(jù)包,有效提高了VPN隧道的有效載荷和傳輸性能。
參考文獻(xiàn)
[1] RFC3378: EtherIP: Tunneling Ethernet Frames in IP Datagrams
[2] RFC2784: Generic Routing Encapsulation
[3] RFC3438: Layer Two Tunneling Protocol
[4] RFC4664: Framework for Layer 2 Virtual Private Networks
[5] RFC4665: Service Requirements for Layer2 Provider-Provisioned Virtual Private Networks
[6] RFC4026; Provider Provisioned Virtual Private Network (VPN) Terminology
[7] RFC4301: Security Architecture for the Internet Protocol
[8] RFC4303: IP Encapsulating Security Payload
[9] RFC4306: Internet Key Exchange (IKEv2) Protocol