利用MPLS实现VPN是一种趋势,基于MPLS的标签转发,VPN可以单独构成一个独立的地址空间,VPN之间可以复用地址。当然,在考虑VPN与Internet互连时,网络还需要通过NAT等方式避免与Internet地址发生冲突。 4 t- H s% D0 P" S$ O4 A2 G
" a# a- ?' Z* I1 R* N. } 随着VPN市场趋热,华为公司也推出了自己的MPLS/BGP VPN解决方案。该方案已经有不少应用,其具体优势与特色有:
7 [( W) S E5 Z( J" ^
?1 P+ e- l" R2 Y! a; E+ L/ @/ M 1. 基于网络,易于管理。这种基于网络的VPN可以完全由骨干网络来实现,集团用户可将VPN的管理外包给运营商,即网络用户不用关心VPN是如何构造的,VPN由网络运营商在其网络内提供。这种VPN可以显著地减少运营商和用户的投资,特别适用于为企业集团用户实现Intranet和Extranet。
% y9 T2 O4 {5 ~* s: m
- [0 ~: ~4 `/ A8 _3 e" i2 z 2. 扩充性好。由于基于MPLS/BGP实现,因此网络很容易对网络节点进行扩充,网络可剪裁性好。
& d4 i6 o8 U3 x( P, t1 z$ i$ m7 n 1 t, O' O- u$ p5 i$ `2 V* f
3. 安全。由于基于MPLS/BGP实现,报文在网络节点构成的MPLS域中采用标签转发的形式进行交换(LSP),这具有同ATM/FR虚电路相同的安全级别。
# w* P4 t; X1 u# P+ a ( M. m2 b8 v5 }/ R
4. QoS保证。MPLS可以利用特有的CoS、RSVP、流量工程等机制,为用户实现QoS保证。
& G' f' T5 K3 S) E( |* ~9 J- Y
5 T# j" N, o9 n5 c) Z+ k I/ o 组网模型
1 { ^3 d! x8 o9 z; k/ k' I0 Q H
( w" m( N6 a% |* _* H 如图所示,华为MPLS/BGP VPN网络模型分为VPN1和VPN2,其中:
) t+ r! m! j; S; G
% l) a( [8 ^+ @ g VPN1包括site1、site2、site3、site6;) z+ n. i. }# a! }9 F& ~
% k% K, d* H7 j0 c; e
VPN2包括site3、site4、site5、site7。
9 r% B! @! w! Y9 I, l0 R F/ U. n- O 4 Q' p; A. n: n' |
需要指出的是,site3同时属于VPN1和VPN2,VPN1和VPN2地址可分别采用独立的私有地址空间(允许重叠),并可由用户自行确定。+ m: @% j; X1 l W# r6 E* [: d
7 p- O) l$ C8 }6 U, h: |6 j 在此MPLS/BGP VPN的模型中,网络由运营商的骨干网与用户的各个site组成,所谓VPN就是对site集合的划分,一个VPN就对应一个由若干site组成的集合。但是必须遵循如下规则:两个site只有同时属于至少一个VPN定义的site集合,才具有IP连通性。按照这个VPN的定义,一个VPN中的所有site都属于一个企业,称为Intranet;如果VPN中的site分属不同的企业,则称为Extranet。site可以同时属于不同的集合,也可以同时属于不同的VPN。
" m/ G# V9 j5 f$ A- l/ A ( N q% ]6 [& R* c$ I5 ?+ q
实现过程
) Y, L1 X$ x8 }5 m" e2 C. ]' P 3 R4 I& Z3 l9 o3 \6 r
MPLS采用虚拟路由表的方法实现一个路由器上多个VPN的路由表。每一个VPN对应一个或多个VRF(VPN Routing/Forwarding Instance)。VRF定义连接到PE上的VPN成员(一个site)。一个VRF包括一个IP路由表、一个FIB( Forwarding Information Table)表、相关联的端口和一些控制路由的规则和参数。
$ F4 g' q! j: j; Y& _, i0 @# t* O. @
6 ~9 G( I7 z1 p B3 w0 x/ ] 数据包的路由和交换由VRF路由表和单独的FIB表控制,每一个VPN对应一个路由表和一个FIB表。
4 f& D; B, N' [2 C7 ?8 B! o& ~/ t8 W ( z9 N, e. I4 I
VPN路由信息的传播由VPN Route-Target Communities来控制,它主要通过BGP的Extended Communities属性来实现。 VPN路由信息的传播通过下述方法进行工作。
: y& x7 w% A- L/ }- U, S / Y. x* G# V7 p$ U/ w+ S5 l
当一条从CE处学习到的VPN路由被Inject到BGP中时,它被赋于一些VPN Route Target Communities属性,其中包括Route-Target属性,该属性决定这些Route将被Export到具体的VRF。
) T7 W. T9 [6 H" a; ?$ R3 G7 r ( |8 B3 G+ U/ w8 @( n6 }
每个VRF配置有一个Import Route-Target列表,该列表指明BGP的Update中的Communities属性应该包含哪些Route-Target才能被目标VRF接受。比如,某一个VRF的Import Route-Target列表指明Route-Target Communities A、B和C,这样,每一个MP-iBGP的Update中Communities属性的Route-Target中有A或B或C的Route将被Import到该VRF中。
. C* W1 L7 j1 [: z" [5 P ' a8 D! K4 W! u9 n
一个PE路由器可通过静态路由、RIP或BGP从CE处得到某一个IP前缀的路由,该前缀是标准IPv4的前缀。然后,PE通过加上一个8字节的RD(Route Distinguisher)将它转换成为一个VPN-IPv4的前缀,该前缀属于VPN-IPv4的前缀。这种方法可以使用户地址唯一,即使用户使用的是IANA规定的保留地址也一样。
1 B7 P! D M" _. p 9 u# D- w4 V3 |
用于生成VPN-IPv4前缀的RD由PE路由器的VRF配置命令指定。3 p' S( d" A& D* o2 _. t
/ M& ~" Q% F8 v$ `: X' G& _" u IP包经过MPLS标签交换到目的地址,其选路的基础是VRF路由表和VRF FIB表。
o3 v# K. c' ]& m# }8 n/ ^
! N; s4 v0 w: M+ F PE路由器为每一个从CE路由器学到的前缀产生一个标签,然后将这个标签添加到BGP更新表中并传递出去。当一个源PE路由器从CE路由器处得到一个IP包,它使用从目标PE路由器学到的标签将该IP包发送出去。当目标PE路由器得到这个已经打上标签的IP包后,该标签从IP包中去除,IP包作为一个纯IP包发送到CE路由器。 |