MPLS VPN 跨域实验(Option C)

实验拓扑


图 1-1

注:此拓扑中,PE1、ASBR1、ASBR2、PE2、CE1、CE2、CE3、CE4 分别对应 1,2,3,4,5,6,7,8 号设备


实验需求

  1. 如图,VPN1 和 VPN2 分别通过运营商 MPLS VPN 连接各自分支机构
  2. 按照图示配置 IP 地址,VPN1 和 VPN2 连接同一个 PE 设备的私网 IP 网段存在地址复用,使用多 VRF 技术来防止 IP 冲突
  3. AS 100 和 AS 200 内部的公共网络中各自运行 OSPF 使 AS 内各设备的 Loopback 口连通
  4. AS 100 和 AS 200 内部的公共网络各自运行 LDP 来建立 MPLS 路径,各路由器使用 Loopback0 口作为 LSR-id
  5. 各自 VPN 内部使用独立 OSPF 实例在 CE 和 PE 之间传递私网路由
  6. 只允许在各自企业内部传递私网路由
  7. PE1 与 PE2 直接建立多跳 MP-EBGP 邻居,ASBR 通过发布带标签的 IPv4 路由来建立完整的 MPLS 路径
  8. 各自 VPN 内部可以跨站点互相访问

实验解法

  1. 配置 IP 地址部分略

  2. AS 100 和 AS 200 内部的公共网络中各自运行 OSPF 使 AS 内各设备的 Loopback 口连通。命令略

  3. AS 100 和 AS 200 内部的公共网络各自运行 LDP 来建立 MPLS 路径,各路由器使用 Loopback0 口作为 LSR-id

    步骤 1:在 PE1 上创建 LDP 进程,并在接口上使能 LDP

    [PE1]mpls lsr-id 1.1.1.1
    [PE1]mpls ldp
    [PE1]interface g0/0
    [PE1-GigabitEthernet0/0]mpls enable 
    [PE1-GigabitEthernet0/0]mpls ldp enable
    

    步骤 2:在 ASBR1 上创建 LDP 进程,并在连接 PE1 的接口上使能 LDP,在连接 ASBR2 的接口上只使能 MPLS 即可

    [ASBR1]mpls lsr-id 2.2.2.2
    [ASBR1]mpls ldp
    [ASBR1]interface g0/0
    [ASBR1-GigabitEthernet0/0]mpls enable 
    [ASBR1-GigabitEthernet0/0]mpls ldp enable
    [ASBR1]interface g0/1
    [ASBR1-GigabitEthernet0/1]mpls enable 
    

    步骤 3:在 ASBR2 上创建 LDP 进程,并在连接 PE2 的接口上使能 LDP,在连接 ASBR1 的接口上只使能 MPLS 即可

    [ASBR2]mpls lsr-id 3.3.3.3
    [ASBR2]mpls ldp
    [ASBR2]interface g0/0
    [ASBR2-GigabitEthernet0/0]mpls enable 
    [ASBR2]interface g0/1
    [ASBR2-GigabitEthernet0/1]mpls enable 
    [ASBR2-GigabitEthernet0/1]mpls ldp enable  
    

    步骤 4:在 PE2 上创建 LDP 进程,并在接口上使能 LDP

    [PE2]mpls lsr-id 4.4.4.4
    [PE2]mpls ldp
    [PE2]interface g0/0
    [PE2-GigabitEthernet0/0]mpls enable 
    [PE2-GigabitEthernet0/0]mpls ldp enable
    
  4. 在 PE 上创建 VPN 实例,并配置 RD 和 RT

    步骤 1:在 PE1 上创建 VPN1 和 VPN2,配置 RD 和 RT,并把连接各 CE 的接口绑定至各自 VPN 实例

    [PE1]ip vpn-instance vpn1
    [PE1-vpn-instance-vpn1]route-distinguisher 100:1
    [PE1-vpn-instance-vpn1]vpn-target 100:1 both
    [PE1]ip vpn-instance vpn2
    [PE1-vpn-instance-vpn2]route-distinguisher 100:2
    [PE1-vpn-instance-vpn2]vpn-target 100:2 both
    
    [PE1]interface g0/1
    [PE1-GigabitEthernet0/1]ip binding vpn-instance vpn1
    [PE1-GigabitEthernet0/1]ip address 10.1.1.1 24
    [PE1]interface g0/2
    [PE1-GigabitEthernet0/2]ip binding vpn-instance vpn2
    [PE1-GigabitEthernet0/2]ip address 10.2.2.1 24
    

    步骤 2:在 PE2 上创建 VPN1 和 VPN2,配置 RD 和 RT,并把连接各 CE 的接口绑定至各自 VPN 实例

    [PE2]ip vpn-instance vpn1
    [PE2-vpn-instance-vpn1]route-distinguisher 100:1
    [PE2-vpn-instance-vpn1]vpn-target 100:1 both
    [PE2]ip vpn-instance vpn2
    [PE2-vpn-instance-vpn2]route-distinguisher 100:2
    [PE2-vpn-instance-vpn2]vpn-target 100:2 both
    
    [PE2]interface g0/1
    [PE2-GigabitEthernet0/1]ip binding vpn-instance vpn1
    [PE2-GigabitEthernet0/1]ip address 10.3.3.4 24
    [PE2]interface g0/2
    [PE2-GigabitEthernet0/2]ip binding vpn-instance vpn2
    [PE2-GigabitEthernet0/2]ip address 10.4.4.4 24
    
  5. 各自 VPN 内部使用独立 OSPF 实例在 CE 和 PE 之间传递私网路由

    步骤 1:在 PE 1 上分别创建 OSPF 实例绑定 VPN1 和 VPN2

    [PE1]ospf 11 vpn-instance vpn1
    [PE1-ospf-11]area 0
    [PE1-ospf-11-area-0.0.0.0]network 10.1.1.0 0.0.0.255
    
    [PE1]ospf 12 vpn-instance vpn2
    [PE1-ospf-12]area 0
    [PE1-ospf-12-area-0.0.0.0]network 10.2.2.0 0.0.0.255
    

    步骤 2:在 CE1 上配置 OSPF,与 PE1 的 vpn1 实例建立邻接关系,传递私网路由

    [CE1]ospf
    [CE1-ospf-1]area 0
    [CE1-ospf-1-area-0.0.0.0]network 10.1.1.0 0.0.0.255
    [CE1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
    

    步骤 3:在 CE2 上配置 OSPF,与 PE1 的 vpn2 实例建立邻接关系,传递私网路由

    [CE2]ospf
    [CE2-ospf-1]area 0
    [CE2-ospf-1-area-0.0.0.0]network 10.2.2.0 0.0.0.255
    [CE2-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
    

    步骤 4:在 PE2,CE3 和 CE4 上配置 OSPF 实例传递私网路由,配置方法与上述步骤一致

  6. 在各 AS 内部的 PE 和 ASBR 间建立 IPv4 IBGP 邻居,ASBR 间建立 IPv4 EBGP 邻居。在 ASBR 上宣告各 AS 内 PE 的 Loopback 口路由,用于传递至对端 PE,稍后双方 PE 间建立 MP-EBGP 邻居

    步骤 1:在 PE1 上配置 BGP,与 ASBR1 建立 IPv4 IBGP 邻居

    [PE1]bgp 100
    [PE1-bgp-default]peer 2.2.2.2 as-number 100
    [PE1-bgp-default]peer 2.2.2.2 connect-interface LoopBack0
    [PE1-bgp-default]address-family ipv4 unicast
    [PE1-bgp-default-ipv4]peer 2.2.2.2 enable
    

    步骤 2:在 ASBR1 上配置 BGP,与 PE1 建立 IPv4 IBGP 邻居,与 ASBR2 建立 IPv4 EBGP 邻居,同时宣告 PE1 Loopback 口的路由

    [ASBR1]bgp 100
    [ASBR1-bgp-default]peer 1.1.1.1 as-number 100
    [ASBR1-bgp-default]peer 1.1.1.1 connect-interface LoopBack0
    [ASBR1-bgp-default]peer 100.2.2.3 as-number 200
    [ASBR1-bgp-default]address-family ipv4 unicast
    [ASBR1-bgp-default-ipv4]peer 1.1.1.1 enable
    [ASBR1-bgp-default-ipv4]peer 100.2.2.3 enable
    [ASBR1-bgp-default-ipv4]network 1.1.1.1 32
    [ASBR1-bgp-default-ipv4]peer 1.1.1.1 next-hop-local
    

    步骤 3:在 ASBR2 上配置 BGP,与 PE2 建立 IPv4 IBGP 邻居,与 ASBR1 建立 IPv4 EBGP 邻居,同时宣告 PE2 Loopback 口的路由

    [ASBR2]bgp 200
    [ASBR2-bgp-default]peer 4.4.4.4 as-number 100
    [ASBR2-bgp-default]peer 4.4.4.4 connect-interface LoopBack0
    [ASBR2-bgp-default]peer 100.2.2.2 as-number 100
    [ASBR2-bgp-default]address-family ipv4 unicast
    [ASBR2-bgp-default-ipv4]peer 4.4.4.4 enable
    [ASBR2-bgp-default-ipv4]peer 100.2.2.2 enable
    [ASBR2-bgp-default-ipv4]network 4.4.4.4 32
    [ASBR2-bgp-default-ipv4]peer 4.4.4.4 next-hop-local
    

    步骤 4:在 PE2 上配置 BGP,与 ASBR2 建立 IPv4 IBGP 邻居

    [PE2]bgp 200
    [PE2-bgp-default]peer 3.3.3.3 as-number 200
    [PE2-bgp-default]peer 3.3.3.3 connect-interface LoopBack0
    [PE2-bgp-default]address-family ipv4 unicast
    [PE2-bgp-default-ipv4]peer 3.3.3.3 enable
    
  7. 在 PE1 和 PE2 间建立 MP-EBGP 邻居

    步骤 1:在 PE1 上配置 BGP,与 PE2 建立多跳 MP-EBGP 邻居

    [PE1]bgp 100
    [PE1-bgp-default]peer 4.4.4.4 as-number 200    //由于之前通过 BGP 学习到了对端 PE Loopback 口路由,此处邻居地址是可达的
    [PE1-bgp-default]peer 4.4.4.4 connect-interface LoopBack0
    [PE1-bgp-default]peer 4.4.4.4 ebgp-max-hop 10    //此处最大跳数需要大于两台 PE 间的实际跳数
    [PE1-bgp-default]address-family vpnv4
    [PE1-bgp-default-vpnv4]peer 4.4.4.4 enable    
    

    步骤 2:在 PE2 上配置 BGP,与 PE1 建立多跳 MP-EBGP 邻居

    [PE2]bgp 200
    [PE2-bgp-default]peer 1.1.1.1 as-number 100
    [PE2-bgp-default]peer 1.1.1.1 connect-interface LoopBack0
    [PE2-bgp-default]peer 1.1.1.1 ebgp-max-hop 10
    [PE2-bgp-default]address-family vpnv4
    [PE2-bgp-default-vpnv4]peer 1.1.1.1 enable    
    
  8. 在所有 IPv4 BGP 邻居间开启接收带标签 IPv4 路由的能力

    [PE1-bgp-default-ipv4]peer 2.2.2.2 label-route-capability
    
    [ASBR1-bgp-default-ipv4]peer 1.1.1.1 label-route-capability
    [ASBR1-bgp-default-ipv4]peer 100.2.2.3 label-route-capability
    
    [ASBR2-bgp-default-ipv4]peer 4.4.4.4 label-route-capability
    [ASBR2-bgp-default-ipv4]peer 100.2.2.2 label-route-capability
    
    [PE2-bgp-default-ipv4]peer 3.3.3.3 label-route-capability
    
  9. 在 ASBR 上配置路由策略,为 IPv4 路由打上 MPLS 标签,并对 BGP 邻居应用

    步骤 1:在 ASBR1 上创建路由策略,对 PE1 传递 BGP 路由时,如果路由携带标签,则替换标签;对 ASBR2 传递 BGP 路由时,打上标签

    [ASBR1]route-policy in permit node 10
    [ASBR1-route-policy-in-10]if-match mpls-label
    [ASBR1-route-policy-in-10]apply mpls-label
    
    [ASBR1]route-policy out permit node 10
    [ASBR1-route-policy-out-10]apply mpls-label
    
    [ASBR1]bgp 100
    [ASBR1-bgp-default]address-family ipv4
    [ASBR1-bgp-default-ipv4]peer 1.1.1.1 route-policy in export
    [ASBR1-bgp-default-ipv4]peer 100.2.2.3 route-policy out export
    

    步骤 2:在 ASBR2 上创建路由策略,对 PE1 传递 BGP 路由时,如果路由携带标签,则替换标签;对 ASBR2 传递 BGP 路由时,打上标签

    [ASBR2]route-policy in permit node 10
    [ASBR2-route-policy-in-10]if-match mpls-label
    [ASBR2-route-policy-in-10]apply mpls-label
    
    [ASBR2]route-policy out permit node 10
    [ASBR2-route-policy-out-10]apply mpls-label
    
    [ASBR2]bgp 200
    [ASBR2-bgp-default]address-family ipv4
    [ASBR2-bgp-default-ipv4]peer 3.3.3.3 route-policy in export
    [ASBR2-bgp-default-ipv4]peer 100.2.2.2 route-policy out export
    
  10. 在 PE 上配置 BGP 和各 OSPF 实例的路由互相引入,来把私网路由传递到对端站点

    步骤 1:在 PE1 上配置 BGP 和各 OSPF 实例的路由互相引入

    [PE1]bgp 100
    [PE1-bgp-default]ip vpn-instance vpn1
    [PE1-bgp-default-vpn1]address-family ipv4
    [PE1-bgp-default-ipv4-vpn1]import-route ospf 11
    [PE1-bgp-default-ipv4-vpn1]quit
    [PE1-bgp-default-vpn1]quit
    [PE1-bgp-default]ip vpn-instance vpn2
    [PE1-bgp-default-vpn2]address-family ipv4
    [PE1-bgp-default-ipv4-vpn2]import-route ospf 12
    [PE1]ospf 11
    [PE1-ospf-11]import-route bgp
    [PE1]ospf 12
    [PE1-ospf-12]import-route bgp
    

    步骤 2:在 PE2 上配置 BGP 和各 OSPF 实例的路由互相引入,命令与 PE1 一致

  11. 效果测试:在各设备上查询路由表,可以正确学习到路由,在 CE 上使用 Loopback0 口为源地址 Ping 同 VPN 对端私网业务地址,可以 Ping 通