CCIE SP—MPLS VPN Basic 1

根据VPN的发展来看,VPN的部署主要分为以下2种,Overlay VPN和Peer-to-Peer VPN:

Overlay VPN

根据种类分,可以分为以下几种:

  • Layer 1: ISDN   E1,T1,DS0    SDH,SONET
  • Layer 2: X.25   Frame Relay  ATM
  • Layer 3: GRE    IPSec
  • Layer 2 tunneling: L2TP、PPTP (在IP建立好的基础上建立2层的tunnel,主要用于验证)

对于Layer3 VPN,根据建立隧道的角度来看可以分为两种:

  • 隧道建立在CE上(PE和CE之间跑的是公网)
    • 优点:在同一个PE上,不同的VPN可以用相同的地址段
    • 缺点:客户需要自己维护VPN
  • 隧道建立在PE上
    • 优点:对于用户来说,VPN的维护交给了ISP
    • 缺点:在同一个PE上,不同的VPN不可以用相同的地址段,而且需要在PE上部署大量的策略来区分不同VPN的路由

Overlay VPN的缺点:

  • Layer1和Layer2的VPN需要铺设大量的物理线路,这样成本太高!为了减少成本,可以用ISDN,但带宽窄。
  • Layer3的GRE安全级别低,主要用于承载流量,跨越网络。Layer3的IPsec安全性很好,但是配置复杂,维护成本高,最重要的是ISP没有相关的业务类型(因为利润少)。
  • Overlay VPN是“静态”的VPN,有N^2问题,当建立一个新节点时,新节点会跟N个节点建立隧道,对于已有的节点,需要每个节点都与新节点建立隧道及相关路由。

Peer-to-Peer VPN

这种部署主要为了解决Overlay VPN“静态”的问题。Peer-to-Peer是指CE-to-PE,也就是要在CE与PE之间交换私网路由信息,然后由PE将这些私网路由在骨干网中传播,这样这些私网路由会自动的传播到其他的PE上。

由于这种VPN路由会泄露到公网上,所以必须严格的通过路由来控制,即:要确保同一个VPN的CE路由器上只能有本VPN的路由。所以,通常CE与PE之间运行的路由协议,与P-Network上运行的路由协议是不同的,即使相同,也要有很好的路由过滤和选择的机制。

共享PE方式:多个CE连接在同一个PE上,不同CE不能部署相同的网段,而且PE需要配置大量ACL来控制路由。
专用PE方式:顾名思意,一个PE专为单独的用户提供服务,这种部署太昂贵,但此种方法可以使用BGP,进而通过BGP的属性(community)来更好的控制路由。

Peer-to-Peer的缺点:

  • 由于没有隧道技术,安全性差
  • 不同VPN之间地址空间仍然不能重叠部署

MPLS VPN

MPLS解决了第1个问题,它可以提供动态的隧道技术(LDP)。
MP-BGP可以解决不同VPN地址冲突的问题,以下引出相关重要的概念。

Subsequent Address Family Identifiers (SAFI) 128代表了MPLS VPN,如下:

VRF:虚拟路由表,解决本地路由冲突的问题。
RD:64bit的路由标识,在路由传递过程中(64bit的RD标识 + 32bit路由条目= 96bit vpnv4路由),唯一区分路由的。RD在以下2种情况下有用:

  • 在不同VRF中有相同的地址
  • 在BGP发送route withdraw时候有用

VPNv4地址族:转递vpnv4路由的族。
RT:路由喜好,是BGP的community属性的扩展。他主要的作用是把收集来的VRF路由导入到VPNV4中,通过MP-BGP传输。RD和RT的格式基本相同,只是由于BGP在发送route withdraw更新时不带任何属性,所以不能用RT来区分网络中的路由,如下面的withdraw更新报文:

RT是控制路由传递的属性,在传递VPNV4时Extended BGP communities会默认带上RT,默认它是自动添加的:

address-family vpnv4
 neighbor 150.1.4.4 activate
 neighbor 150.1.4.4 send-community extended
exit-address-family

以下的配置就是收集VRF路由,并把他们放入VPNv4里,rt export命令的意思就是把收集好的VRF路由导入VPNv4里然后发送:

address-family ipv4 vrf r6-sw2
 redistribute connected
 redistribute static
 no auto-summary
 no synchronization
exit-address-family
!
ip route vrf r6-sw2 10.1.8.0 255.255.255.0 10.1.38.8

地址族的相关知识,可以参考“BGP 地址族分析 – Address-family”,此日志详细讲解了地址族。下面是从网上找的一个抓包文件,可以看下BGP更新中的内容:

为什么会有双层标签?

如果只用单层,在只有一个CE的情况下没有任何问题,因为当次末跳弹出后,Egress PE上只有1个表,为FIB,所以直接转发了(这种情况跟Peer-to-Peer的模型是一样的)。
但当有多个VPN客户时,次末跳弹出后,由于有多个CE,也就有多个VRF,所以在Egress PE上有多个FIB表和一个LFIB表,所以就无法得知从哪个表出去了。因此就设计了双层标签。底层标签是MP-BGP分发的,顶层标签是LDP分发的。

路由在MPLS中的转发过程:

  • Ingress PE(下游,路由发起的方向)通过VRF收集CE的路由
  • 通过重分布,把ipv4中的vrf路由重发布到BGP的vrf中:
address-family ipv4 vrf r6-sw2
 redistribute connected
 redistribute static
 no auto-summary
 no synchronization
exit-address-family
  • 通过export命令,把BGP的vrf路由导入到vpnv4中并传递给他的对端邻居。
  • 到达Engress PE(上游,流量发起方向)后,vpnv4的路由会import到BGP的VRF中。
  • 通过重分布,把BGP的VRF重发布到ipv4的VRF中,并发送到CE。

当其中一个只有export,而另一端没有import,会有什么情况呢?
可以用sh ip bgp vpnv all ad来查看路由发布信息。
结果是只有发,但是收不到。
但是只要有一个VRF被激活(有import的动作),那么所有VRF的vpnv4的路由(包括没有import动作的其他VRF路由)都会被导入VPNV4的路由表,用“sh ip bgp vpnv all”来查看。

数据在MPLS中的转发过程:

  1. 数据通过路由从CE到达PE。
  2. 一般在PE上有一个Globel路由表、多个VRF路由表和一个LFIB表。由于跟CE相连的就是VRF端口,所以查询VRF的路由表。
  3. 此时路由会被打上双层标签,顶层标签为LDP根据下一跳(由于CE到PE和PE到PE是不同族的,所以当PE把路由注入到VPNV4中时,直接把PE本身作为下一跳,因此这些路由的下一跳都是对端的PE),由下游分配的标签,底层标签为MP-BGP分配的标签,是根据IBGP的PEER分配的。
  4. 标签交换,到次末跳后弹出顶层标签,根据下一跳转发到末跳,此时只有一个底层标签,匹配相应的VRF并untag或Aggregate标签,关于这两种弹签机制的详解,可以查看《CCIE SP—MPLS Basic 1
  5. 弹出标签后根据路由转发。
本文出自 Frank's Blog

版权声明:


本文链接:CCIE SP—MPLS VPN Basic 1
版权声明:本文为原创文章,仅代表个人观点,版权归 Frank Zhao 所有,转载时请注明本文出处及文章链接
你可以留言,或者trackback 从你的网站

No Responses to “CCIE SP—MPLS VPN Basic 1”

  1. secondsky说道:

    不同的VPN不可以用相同的地址段,? 这是什么VPN?没看懂。能解释下吗?

留言哦

blonde teen swallows load.xxx videos