MPLS VPN 跨域实验(Option C)
实验拓扑

注:此拓扑中,PE1、ASBR1、ASBR2、PE2、CE1、CE2、CE3、CE4 分别对应 1,2,3,4,5,6,7,8 号设备
实验需求
- 如图,VPN1 和 VPN2 分别通过运营商 MPLS VPN 连接各自分支机构
- 按照图示配置 IP 地址,VPN1 和 VPN2 连接同一个 PE 设备的私网 IP 网段存在地址复用,使用多 VRF 技术来防止 IP 冲突
- AS 100 和 AS 200 内部的公共网络中各自运行 OSPF 使 AS 内各设备的 Loopback 口连通
- AS 100 和 AS 200 内部的公共网络各自运行 LDP 来建立 MPLS 路径,各路由器使用 Loopback0 口作为 LSR-id
- 各自 VPN 内部使用独立 OSPF 实例在 CE 和 PE 之间传递私网路由
- 只允许在各自企业内部传递私网路由
- PE1 与 PE2 直接建立多跳 MP-EBGP 邻居,ASBR 通过发布带标签的 IPv4 路由来建立完整的 MPLS 路径
- 各自 VPN 内部可以跨站点互相访问
实验解法
配置 IP 地址部分略
AS 100 和 AS 200 内部的公共网络中各自运行 OSPF 使 AS 内各设备的 Loopback 口连通。命令略
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
在 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
各自 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 实例传递私网路由,配置方法与上述步骤一致
在各 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
在 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
在所有 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
在 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
在 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 一致
效果测试:在各设备上查询路由表,可以正确学习到路由,在 CE 上使用 Loopback0 口为源地址 Ping 同 VPN 对端私网业务地址,可以 Ping 通