一、引言
随着虚拟化及云计算的兴起和应用,VPN隧道成为一个连接不同地区虚拟数据中心或者云计算中心的必备技术,其中L2 VPN工作在OSI网络模型的第二层,它可以隐藏地域限制,提供虚拟专有网络服务,能够更好的满足虚拟化及云计算的需求。
二、方法研究
L2 VPN基本的概念是将L2网桥和IPSec VPN网关结合,利用VPN隧道模拟物理网线,将2台或者多台跨越因特网的网桥连接起来。
如图所示:
为了实现以上L2 VPN的功能,我们需要考虑以下因素:
(1)如何将L2数据包导向VPN隧道;
(2)如何封装以太网帧;
(3)数据包的flow设计;
(4)如何支持VLAN;
(5)如何支持多站点多用户(例如,星型拓扑)。
2.1重定向数据包到VPN隧道
为了很好的连接L2网桥和VPN网关,我们定义一个虚拟的隧道端口,用来解耦合网桥和VPN的功能。对于网桥来说,虚拟隧道端口就像是一个物理端口一样,用来收发以太网数据包。对于VPN网关来说,虚拟隧道端口就是一个明文数据包进入加密隧道的入口,所有到达虚拟隧道端口的数据包,都将会被加密从隧道发出去。
虚拟隧道端口模拟物理以太网端口,它的功能如下:
(1)在内核中创建一个虚拟网络端口;
(2)发送以太网数据包。而驱动程序的发送功能,就是VPN隧道加密。
(3)接收以太网数据包。VPN加密后,会把明文放到虚拟端口的接收队列。
(4)支持网桥MAC反向学习。
(5)支持VLAN tag。
所有对于L2网桥看来,虚拟隧道端口和物理网桥端口没有任何区别,收到和发送的都是以太网数据包。网桥也不知道VPN网关的存在。同样,VPN网关也知道网桥的存在,到达VPN网关也只是以太网数据包。
2.2以太网数据包封装
IPSec隧道工作在三层,用来设计封装IP数据包,所以我们需要将以太网帧封装成IP数据包,再将该IP数据包封装成IPSec数据包。
我们可以考虑以下方式:
(1)EtherIP over IPSec;
(2)非标准的IPSec封装;
(3)混合模式。
(8)VPN1收到ARP应答密文包,解密去EtherIP和IPSec包头,查询MAC地址表,得知出口是eth1,然后将报文发往PC1。此时,VPN1并且更新MAC地址表。
VPN2网桥的MAC表:
(9)PC1收到ARP应答明文包,学到PC2的MAC地址。然后发送ICMP请求到PC2。数据包的目的MAC是PC2-MAC,源MAC是PC1-MAC。
(10)VPN1收到ICMP请求,查询MAC地址表得到出口是tun1,将数据包送到VPN隧道加密,然后发往VPN2网关。
(11)VPN2收到ICMP请求,查询MAC地址表,得到出口是eth1,将数据包发送到PC2。
(12)PC2收到ICMP请求并发送ICMP应答,该应答数据包被发发送到VPN2。
(13)VPN2收到ICMP应答,查询MAC地址表,得到出口是tun1,将数据包通过隧道发送到VPN1。
(14)VPN1收到ICMP应答,查询MAC地址表,得到出口是eth1,将数据包发送到PC1。
3.1VLAN支持
二层网桥可能连接很多VLAN,隧道端口需要工作在TRUNK模式,这样可以允许VLAN数据包通过VPN隧道。
拓扑如下:
EtherIP over IPSec可以封装VLAN tag,但是overhead会比较大。一种优化的方法是分配每个tunnel端口和tunnel一个VALN tag,这样就不需要封装VLAN tag,提高有效载荷。
3.2星型拓扑支持
要支持Hub & Spoke星型拓扑,我们只需要再增加一个tunnel端口,并且把该端口绑定到一个到Spoke的VPN隧道。该设计非常灵活,易于扩展。
拓扑如下:
四、结束语
本文通过引入虚拟隧道端口,巧妙的将L2网桥和IPSec VPN网关结合在一起,简单并且有效的将数据包重定向到VPN隧道。
另外,本文通过结合EtherIP over IPSec封装发送多播和广播数据包,IPSec封装发送单播数据包,有效提高了VPN隧道的有效载荷和传输性能。
参考文献
[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