思科路由器 MPLS VPN 的基本原理及配置方法


一、前言

MPLS 的全称是多协议标签交换。它是一种分组交换技术。

本文将介绍一些 MPLS VPN 相关的知识以及如何在思科路由器上配置 MPLS VPN。

本文纯属个人学习经验,无法保证完全正确。如有错误请及时提出,谢谢!


二、知识普及

2.1 MPLS 简介

MPLS 是目前效率最高的数据层面转发技术之一,工作在 OSI 参考模型的二层与三层之间。它的前身是思科公司私有的 Tag Switching。

一个使用 MPLS 封装的 IP 包是这样的:| 二层帧头 | MPLS 头 | IP 头 | 数据载荷 | 二层帧尾 |

MPLS 最初只是用来解决路由器三层转发无法精确匹配目的地址而导致转发效率低下的问题。

MPLS 的工作原理简单来说就是通过为不同类型的数据包打上不同类型的标签,然后路由器在转发数据包时,不用查看其三层报头,直接查看其标签就可以进行精确匹配并转发。

现在 MPLS 主要用于运营商的 MPLS VPN 服务、解决 BGP 路由黑洞问题以及 TE(流量工程)。

MPLS 报头的格式如下:

  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                Label                  | TC  |S|       TTL     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

各字段的长度及功能如下:

字段 长度(Bit) 功能
Label 20 标签字段。
TC 3 用于 QoS。可以和 IP 优先级一一对应。
S 1 栈底位。一个数据包可能包含多个 MPLS 报头(也就是多重标签),如果该 MPLS 报头最靠近三层报头,该位置 1。
TTL 8 和 IP 报头的 TTL 字段功能一样。用于防止标签交换环路。

2.2 标签交换的基本原理

在 MPLS 中,一个标签对应了一个等价转发类(FEC)。

我们一般把去往相同子网段的数据包视为同一个的等价转发类。也就是说,在 MPLS 中,每条路由条目一般可以对应一个标签。我们把这个标签称为入标签

入标签只具有本地意义。也就是说,每台路由器为路由条目分配的入标签和其他路由器无关,不同路由器相同路由条目的入标签也不一定相同。

当路由器在开启了 MPLS 功能的接口上收到带标签的数据包时,路由器会查询 MPLS 转发表,以确定携带了该标签(入标签)的数据包该转发到哪个接口(出接口),以及转发时该携带什么标签(出标签,即出接口对端路由器的入标签)。当查询到匹配项之后,路由器将该数据包的标签改为转发时该携带的标签(出标签,即出接口对端路由器的入标签)然后发往相应的接口(出接口)。在此过程中,路由器完全不必理会三层报头。

也就是说,只要创建了 入标签 <--> 出标签 & 出接口 的映射,路由器就能使用 MPLS 来转发数据。

那么问题来了,路由器的路由条目这么多,难道要针对每个路由条目一一创建这样的标签映射项?

当然不是!使用 LDP、TDP、BGP 等协议就可以实现为路由条目分发标签并与邻居路由器共享。

2.3 LDP 简介

LDP 的全称是标签分发协议。它专门用于 MPLS。

LDP 可以为本地所有直连路由条目、静态路由条目以及所有从 IGP 学习到的路由条目分发标签。

直连路由器之间先两两建立 LDP 邻居,然后彼此共享自身接口信息。接着路由器根据收集到的接口信息为自身路由条目分发标签,再将这些标签共享给邻居。这样 LDP 邻居之间的 MPLS 转发表就形成了。

如果一个网络需要使用 MPLS 来转发数据,必须保证整网能通过 IGP 互联互通,否则会导致 LDP 无法分发标签。

另外,如果使用了 OSPF 作为 IGP,则需要让环回口 OSPF 路由条目的子网掩码与环回口的子网掩码一致。也就是说,如果环回口的子网掩码不是 255.255.255.255,则需要将环回口的 OSPF 网络类型改为 point-to-point

2.4 MPLS VPN 简介

如果需要让两个使用私网地址的客户园区彼此互联互通,可以在客户园区边界路由器(这里称为 CE)之间部署诸如 LAN-to-LAN IPSec VPN 之类的 IP 报文再封装技术,也可以找运营商拉专线。

但是,前者是依靠现有公网连接来传输私网数据的,服务质量无法得到保障;而后者成本又太高,一般客户园区可支付不起这么高昂的专线费用。

那有没有折中的解决方案呢?有!它就是 MPLS VPN。MPLS VPN 可以说是一种虚拟专线服务。

通过 MPLS VPN,CE 可以直接把未经再封装、访问另一个客户园区的数据包发送给运营商边界路由器(这里称为 PE)。PE 为该数据包打上相应的标签,然后发送给连接另一个园区的 PE,最后另一个园区的 PE 将数据包的标签去除后发给另一个园区的 CE。

2.5 MPLS VPN 的基本原理

按理来说,运营商内网路由器的路由表应该是不能存在私网路由条目的,就算是有,不同客户的园区网使用的私网地址也无法保证不重叠。那么这个问题该如何解决?

VPN 路由表技术可以用来解决私网路由条目重叠的问题。思科将 VPN 路由表称为 VRF(虚拟路由转发)路由表。在 PE 上我们可以将连接 CE 的接口绑定到某个 VRF 路由表上,这样客户园区的私网路由条目就会被放入 VRF 路由表而不是主路由表中。PE 连接不同客户的 CE 使用不同的 VRF 路由表,不同 VRF 路由表通过 RD(路由标识符)来本地唯一识别。当路由器收到 CE 发送的数据时,会查找连接该 CE 接口对应的 VRF 路由表并进行转发。

那么 PE 与 PE 之间又该如何交互 VRF 路由表?VRF 路由表中的路由条目该怎么分发标签?这些客户园区的私网数据又该如何转发?

通过在 PE 与 PE 之间建立 VPNv4 地址簇的 BGP 邻居,以及为 VRF 路由表设置相应的导入和导出 RT(路由目标),即可通过 VPNv4 BGP 表实现 PE 间 VRF 路由条目的交互。其中,导出 RT 为将本 VRF 路由表中的路由条目加入到 VPNv4 BGP 表时要携带的 RT;导入 RT 为将 VPNv4 BGP 表中携带哪些 RT 的路由条目加入到本 VRF 路由表中。(RD 和 RT 的格式都是 xx:xx)

VPNv4 BGP 可以为本地 VRF 路由表中的路由条目分发标签并共享给邻居。但是,运营商内一般只有 PE 以及路由反射器(此处不考虑)运行了 VPNv4 BGP,且它们之间并不是直连建立邻居的。也就是说,没有运行 VPNv4 BGP 的路由器将不能识别 VRF 路由条目的标签。这就需要 PE 为 CE 发来的数据包打上双重标签。其中,外层标签是由 LDP 分发的、去往另一个 PE(VPNv4 BGP 邻居)的下一跳对应的标签;内层标签是由 VPNv4 BGP 分发的 VRF 路由条目标签。这样一来,沿途没有运行 VPNv4 BGP 的路由器只需查看外层标签即可正常转发客户园区的数据包。然后当客户园区的数据包到达另一台 PE 时,PE 通过查看数据包的内层标签即可确定该数据包应查找哪个 VRF 路由表进行转发。


三、网络拓扑图及说明

如上图,有两家公司,每家公司各有两个办公区域。两家公司的所有办公区域均使用 AS 号为 100 的运营商接入公网。

公司 A 的 AS 号为 65111;公司 B 的 AS 号为 65222。

公司 A 使用进程号为 65111 的 OSPF 作为 IGP;公司 B 使用 AS 号为 65222 的 EIGRP 作为 IGP;运营商使用 IS-IS 作为 IGP。

CE 与 PE 之间使用 BGP 来传递私网路由表。

下面将介绍如何通过 MPLS VPN 来实现公司 A 两个区域的互访以及公司 B 两个区域的互访,且公司 A 和公司 B 互不干扰。

说明
• 下面不介绍配置接口 IP 地址之类的基础配置。
• 各设备各接口的 IP 地址,以及 PE 连接 CE 接口的 VRF 信息均已在图中表明。
• R1 的 Loopback 0 口地址为 1.1.1.1,R2 的 Loopback 0 口地址为 2.2.2.2,其他路由器以此类推(R19-22 除外)。
• 由于模拟器自带的 VPC 不支持检测数据包在 MPLS 域中的传输路径,所以这里用关闭路由功能的路由器来模拟 PC。


四、配置方法

4.1 在运营商内网路由器开启 MPLS 及 LDP

我们需要在运营商内网路由器除连接 CE 和 INTERNET 之外的所有链路上启用 MPLS 和 LDP。

下面以 R3 为例进行配置。其他运营商内网路由器的配置方法同 R3。

R3

R3(config)#mpls ip    % 全局启用 MPLS
R3(config)#mpls label protocol ldp    % 使用 LDP 作为标签分发协议
R3(config)#mpls ldp router-id loopback 0 force    % 强制使用 Loopback 0 口的 IP 地址作为 LDP 的路由器 ID

R3(config)#router isis    % 进入 IS-IS 路由配置模式
R3(config-router)#mpls ldp autoconfig    % 在开启了 IS-IS 的接口上启用 MPLS 和 LDP
R3(config-router)#exit

4.2 在 PE 上设置 VRF

R9

R9(config)#ip vrf COMP_A    % 创建公司 A 的 VRF
R9(config-vrf)#rd 65111:1    % 配置 RD
R9(config-vrf)#route-target export 65111:1    % 配置导出 RT(R10 对应的 VRF 必须导入该 RT)
R9(config-vrf)#route-target import 65111:2    % 配置导入 RT(R10 对应的 VRF 必须导出该 RT)
R9(config-vrf)#exit

R9(config)#ip vrf COMP_B    % 创建公司 B 的 VRF
R9(config-vrf)#rd 65222:1    % 配置 RD
R9(config-vrf)#route-target export 65222:1    % 配置导出 RT(R10 对应的 VRF 必须导入该 RT)
R9(config-vrf)#route-target import 65222:2    % 配置导入 RT(R10 对应的 VRF 必须导出该 RT)
R9(config-vrf)#exit

R9(config)#interface ethernet 0/2
R9(config-if)#ip vrf forwarding COMP_A    % 将连接公司 A CE 的接口绑定到公司 A 所属的 VRF 上
R9(config-if)#ip address 100.9.11.9 255.255.255.0    % 由于绑定接口到 VRF 上会清空接口的 IP 地址,所以需要重新配置接口的 IP 地址
R9(config-if)#exit

R9(config)#interface ethernet 0/3
R9(config-if)#ip vrf forwarding COMP_B    % 将连接公司 B CE 的接口绑定到公司 B 所属的 VRF 上
R9(config-if)#ip address 100.9.12.9 255.255.255.0    % 由于绑定接口到 VRF 上会清空接口的 IP 地址,所以需要重新配置接口的 IP 地址
R9(config-if)#exit

R10

R10(config)#ip vrf COMP_A    % 创建公司 A 的 VRF
R10(config-vrf)#rd 65111:2    % 配置 RD
R10(config-vrf)#route-target export 65111:2    % 配置导出 RT(R9 对应的 VRF 必须导入该 RT)
R10(config-vrf)#route-target import 65111:1    % 配置导入 RT(R9 对应的 VRF 必须导出该 RT)
R10(config-vrf)#exit

R10(config)#ip vrf COMP_B    % 创建公司 B 的 VRF
R10(config-vrf)#rd 65222:2    % 配置 RD
R10(config-vrf)#route-target export 65222:2    % 配置导出 RT(R9 对应的 VRF 必须导入该 RT)
R10(config-vrf)#route-target import 65222:1    % 配置导入 RT(R9 对应的 VRF 必须导出该 RT)
R10(config-vrf)#exit

R10(config)#interface ethernet 0/2
R10(config-if)#ip vrf forwarding COMP_A    % 将连接公司 A CE 的接口绑定到公司 A 所属的 VRF 上
R10(config-if)#ip address 200.10.13.10 255.255.255.0    % 由于绑定接口到 VRF 上会清空接口的 IP 地址,所以需要重新配置接口的 IP 地址
R10(config-if)#exit

R10(config)#interface ethernet 0/3
R10(config-if)#ip vrf forwarding COMP_B    % 将连接公司 B CE 的接口绑定到公司 B 所属的 VRF 上
R10(config-if)#ip address 200.10.14.10 255.255.255.0    % 由于绑定接口到 VRF 上会清空接口的 IP 地址,所以需要重新配置接口的 IP 地址
R10(config-if)#exit

4.3 PE 与 PE 之间建立 VPNv4 BGP 邻居

R9

R9(config)#router bgp 100    % 进入 AS 号为 100 的 BGP 路由配置模式
R9(config-router)#no bgp default ipv4-unicast    % 不使用 IPv4 地址簇作为默认地址簇
R9(config-router)#neighbor 10.10.10.10 remote-as 100    % 配置 R10 为邻居
R9(config-router)#neighbor 10.10.10.10 update-source loopback 0    % 使用 Loopback 0 接口与 R10 建立邻居

R9(config-router)#address-family vpnv4    % 进入 VPNv4 地址簇配置模式
R9(config-router-af)#neighbor 10.10.10.10 activate    % 与 R10 建立 VPNv4 邻居
R9(config-router-af)#neighbor 10.10.10.10 send-community extended    % 向 R10 发送扩展团体属性(包含 VRF 路由表中的 RT 信息)
R9(config-router-af)#exit-address-family 

R9(config-router)#exit 

R10

R10(config)#router bgp 100    % 进入 AS 号为 100 的 BGP 路由配置模式
R10(config-router)#no bgp default ipv4-unicast    % 不使用 IPv4 地址簇作为默认地址簇
R10(config-router)#neighbor 9.9.9.9 remote-as 100    % 配置 R9 为邻居
R10(config-router)#neighbor 9.9.9.9 update-source loopback 0    % 使用 Loopback 0 接口与 R9 建立邻居

R10(config-router)#address-family vpnv4    % 进入 VPNv4 地址簇配置模式
R10(config-router-af)#neighbor 9.9.9.9 activate    % 与 R9 建立 VPNv4 邻居
R10(config-router-af)#neighbor 9.9.9.9 send-community extended    % 向 R9 发送扩展团体属性(包含 VRF 路由表中的 RT 信息)
R10(config-router-af)#exit-address-family 

R10(config-router)#exit 

4.4 CE 与 PE 建立 IPv4 BGP 邻居

R9(PE)

R9(config)#router bgp 100    % 进入 AS 号为 100 的 BGP 路由配置模式

R9(config-router)#address-family ipv4 vrf COMP_A    % 进入公司 A 对应 VRF 的 IPv4 地址簇配置模式
R9(config-router-af)#neighbor 100.9.11.11 remote-as 65111    % 与 R11 建立 IPv4 邻居(从 R11 获取到的路由条目放入公司 A 对应的 VRF 路由表中)
R9(config-router-af)#exit-address-family 

R9(config-router)#address-family ipv4 vrf COMP_B    % 进入公司 B 对应 VRF 的 IPv4 地址簇配置模式
R9(config-router-af)#neighbor 100.9.12.12 remote-as 65222    % 与 R12 建立 IPv4 邻居(从 R12 获取到的路由条目放入公司 B 对应的 VRF 路由表中)
R9(config-router-af)#exit-address-family 

R9(config-router)#exit 

R10(PE)

R10(config)#router bgp 100    % 进入 AS 号为 100 的 BGP 路由配置模式

R10(config-router)#address-family ipv4 vrf COMP_A    % 进入公司 A 对应 VRF 的 IPv4 地址簇配置模式
R10(config-router-af)#neighbor 200.10.13.13 remote-as 65111    % 与 R13 建立 IPv4 邻居(从 R13 获取到的路由条目放入公司 A 对应的 VRF 路由表中)
R10(config-router-af)#exit-address-family 

R10(config-router)#address-family ipv4 vrf COMP_B    % 进入公司 B 对应 VRF 的 IPv4 地址簇配置模式
R10(config-router-af)#neighbor 200.10.14.14 remote-as 65222    % 与 R14 建立 IPv4 邻居(从 R14 获取到的路由条目放入公司 B 对应的 VRF 路由表中)
R10(config-router-af)#exit-address-family 

R10(config-router)#exit 

R11(CE)

R11(config)#router bgp 65111    % 进入 AS 号为 65111 的 BGP 路由配置模式
R11(config-router)#neighbor 100.9.11.9 remote-as 100    % 与 R9 建立 IPv4 邻居
R11(config-router)#neighbor 100.9.11.9 allowas-in    % 允许从 R9 接收到、AS-PATH 中带有本 AS 号的路由条目加入到路由表中(打破 BGP 防环原则)
R11(config-router)#exit

R12(CE)

R12(config)#router bgp 65222    % 进入 AS 号为 65222 的 BGP 路由配置模式
R12(config-router)#neighbor 100.9.12.9 remote-as 100    % 与 R9 建立 IPv4 邻居
R12(config-router)#neighbor 100.9.12.9 allowas-in    % 允许从 R9 接收到、AS-PATH 中带有本 AS 号的路由条目加入到路由表中(打破 BGP 防环原则)
R12(config-router)#exit

R13(CE)

R13(config)#router bgp 65111    % 进入 AS 号为 65111 的 BGP 路由配置模式
R13(config-router)#neighbor 200.10.13.10 remote-as 100    % 与 R10 建立 IPv4 邻居
R13(config-router)#neighbor 200.10.13.10 allowas-in    % 允许从 R10 接收到、AS-PATH 中带有本 AS 号的路由条目加入到路由表中(打破 BGP 防环原则)
R13(config-router)#exit

R14(CE)

R14(config)#router bgp 65222    % 进入 AS 号为 65222 的 BGP 路由配置模式
R14(config-router)#neighbor 200.10.14.10 remote-as 100    % 与 R10 建立 IPv4 邻居
R14(config-router)#neighbor 200.10.14.10 allowas-in    % 允许从 R10 接收到、AS-PATH 中带有本 AS 号的路由条目加入到路由表中(打破 BGP 防环原则)
R14(config-router)#exit

4.5 在 CE 上进行双向路由重分发

我们需要在 CE 上把 IGP 的路由条目重分发进 BGP 中,把 BGP 的路由条目重分发进 IGP 中。这样才能让公司的两个区域获取到该公司所有的内网路由条目。

R11

R11(config)#router ospf 65111    % 进入进程号为 65111 的 OSPF 路由配置模式
R11(config-router)#redistribute bgp 65111 subnets    % 将属于 AS 号 65111 的 BGP 路由条目重分发到 OSPF 中(包含子网路由)
R11(config-router)#exit

R11(config)#router bgp 65111    % 进入 AS 号为 65111 的 BGP 路由配置模式
R11(config-router)#redistribute ospf 65111    % 将属于进程号 65111 的 OSPF 路由条目重分发进 BGP 中
R11(config-router)#exit

R12

R12(config)#router eigrp 65222    % 进入 AS 号为 65222 的 EIGRP 路由配置模式
R12(config-router)#redistribute bgp 65222 metric 10000 100 255 1 1500    % 将属于 AS 号 65222 的 BGP 路由条目重分发到 EIGRP 中并设置默认的度量值(由其他路由协议重分发进 EIGRP 的路由条目必须指定默认度量值,否则视为不可达)
R12(config-router)#exit

R12(config)#router bgp 65222    % 进入 AS 号为 65222 的 BGP 路由配置模式
R12(config-router)#redistribute eigrp 65222    % 将属于 AS 号 65222 的 EIGRP 路由条目重分发到 BGP 中
R12(config-router)#exit

R13

R13(config)#router ospf 65111    % 进入进程号为 65111 的 OSPF 路由配置模式
R13(config-router)#redistribute bgp 65111 subnets    % 将属于 AS 号 65111 的 BGP 路由条目重分发到 OSPF 中(包含子网路由)
R13(config-router)#exit

R13(config)#router bgp 65111    % 进入 AS 号为 65111 的 BGP 路由配置模式
R13(config-router)#redistribute ospf 65111    % 将属于进程号 65111 的 OSPF 路由条目重分发进 BGP 中
R13(config-router)#exit

R14

R14(config)#router eigrp 65222    % 进入 AS 号为 65222 的 EIGRP 路由配置模式
R14(config-router)#redistribute bgp 65222 metric 10000 100 255 1 1500    % 将属于 AS 号 65222 的 BGP 路由条目重分发到 EIGRP 中并设置默认的度量值(由其他路由协议重分发进 EIGRP 的路由条目必须指定默认度量值,否则视为不可达)
R14(config-router)#exit

R14(config)#router bgp 65222    % 进入 AS 号为 65222 的 BGP 路由配置模式
R14(config-router)#redistribute eigrp 65222    % 将属于 AS 号 65222 的 EIGRP 路由条目重分发到 BGP 中
R14(config-router)#exit

五、验证结果

在验证结果之前,请在 R9 和 R10 的特权模式下执行以下命令来刷新 BGP 路由表项:

R9#clear ip bgp * soft 

5.1 公司 A 两区域互访

R19 ping R21

R19#ping 192.168.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 5/5/8 ms

R19 trace R21

R19#traceroute 192.168.2.2 numeric 
Type escape sequence to abort.
Tracing the route to 192.168.2.2
VRF info: (vrf in name/id, vrf out name/id)
  1 192.168.1.1 1 msec 1 msec 0 msec
  2 172.16.1.1 1 msec 1 msec 1 msec  此处可看到带双重标签的数据包。这里外层标签是 27、内层标签是 37
  3 100.9.11.9 2 msec 1 msec 2 msec  ↙︎                        ___
  4 100.4.9.4 [MPLS: Labels 27/37 Exp 0] 4 msec 5 msec 3 msec    │
  5 100.3.4.3 [MPLS: Labels 27/37 Exp 0] 3 msec 3 msec 3 msec    │
  6 100.1.3.1 [MPLS: Labels 26/37 Exp 0] 4 msec 3 msec 3 msec    │
  7 12.1.1.2 [MPLS: Labels 20/37 Exp 0] 3 msec 3 msec 3 msec     │ --> 数据包在 MPLS 域内的传输路径
  8 200.2.5.5 [MPLS: Labels 21/37 Exp 0] 3 msec 2 msec 3 msec    │
  9 200.5.8.8 [MPLS: Labels 16/37 Exp 0] 3 msec 2 msec 3 msec    │
 10 200.10.13.10 [MPLS: Label 37 Exp 0] 3 msec 2 msec 2 msec  ___│
 11 200.10.13.13 3 msec 2 msec 3 msec
 12 172.16.1.6 2 msec 3 msec 2 msec
 13 192.168.2.2 3 msec *  10 msec

可以看出,公司 A 的两个区域已经可以通过正确的路径互访。验证通过。

5.2 公司 B 两区域互访

R22 ping R20

R22#ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/5/7 ms

R22 trace R20

R22#traceroute 192.168.1.2 numeric 
Type escape sequence to abort.
Tracing the route to 192.168.1.2
VRF info: (vrf in name/id, vrf out name/id)
  1 192.168.2.1 1 msec 1 msec 0 msec
  2 172.16.1.5 1 msec 1 msec 1 msec  此处可看到带双重标签的数据包。这里外层标签是 27、内层标签是 41
  3 200.10.14.10 1 msec 2 msec 1 msec  ↙︎                        ___   
  4 200.8.10.8 [MPLS: Labels 27/41 Exp 0] 3 msec 5 msec 3 msec     │
  5 200.5.8.5 [MPLS: Labels 26/41 Exp 0] 3 msec 4 msec 3 msec      │
  6 200.2.5.2 [MPLS: Labels 29/41 Exp 0] 3 msec 3 msec 2 msec      │
  7 12.1.1.1 [MPLS: Labels 23/41 Exp 0] 3 msec 3 msec 4 msec       │ --> 数据包在 MPLS 域内的传输路径
  8 100.1.3.3 [MPLS: Labels 22/41 Exp 0] 2 msec 2 msec 2 msec      │
  9 100.3.7.7 [MPLS: Labels 16/41 Exp 0] 2 msec 2 msec 3 msec      │
 10 100.9.12.9 [MPLS: Label 41 Exp 0] 2 msec 2 msec 3 msec      ___│
 11 100.9.12.12 3 msec 3 msec 3 msec
 12 172.16.1.2 3 msec 3 msec 3 msec
 13 192.168.1.2 3 msec *  8 msec

可以看出,公司 B 的两个区域已经可以通过正确的路径互访。验证通过。

5.3 PE 的 VPNv4 BGP 表

R9

R9#show bgp vpnv4 unicast all 
BGP table version is 33, local router ID is 9.9.9.9
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 65111:1 (default for vrf COMP_A)    ← 公司 A 的 BGP 表
 *>  11.11.11.11/32   100.9.11.11              0             0 65111 ?
 *>i 13.13.13.13/32   10.10.10.10              0    100      0 65111 ?
 *>  15.15.15.15/32   100.9.11.11             11             0 65111 ?
 *>i 17.17.17.17/32   10.10.10.10             11    100      0 65111 ?
 *>  172.16.1.0/30    100.9.11.11              0             0 65111 ?
 *>i 172.16.1.4/30    10.10.10.10              0    100      0 65111 ?
 *>  192.168.1.0      100.9.11.11             20             0 65111 ?
 *>i 192.168.2.0      10.10.10.10             20    100      0 65111 ?
Route Distinguisher: 65111:2    ← 对端 PE 发送的公司 A 私网路由条目
 *>i 13.13.13.13/32   10.10.10.10              0    100      0 65111 ?
 *>i 17.17.17.17/32   10.10.10.10             11    100      0 65111 ?
 *>i 172.16.1.4/30    10.10.10.10              0    100      0 65111 ?
 *>i 192.168.2.0      10.10.10.10             20    100      0 65111 ?
Route Distinguisher: 65222:1 (default for vrf COMP_B)    ← 公司 B 的 BGP 表
     Network          Next Hop            Metric LocPrf Weight Path
 *>  12.12.12.12/32   100.9.12.12              0             0 65222 ?
 *>i 14.14.14.14/32   10.10.10.10              0    100      0 65222 ?
 *>  16.16.16.16/32   100.9.12.12         409600             0 65222 ?
 *>i 18.18.18.18/32   10.10.10.10         409600    100      0 65222 ?
 *>  172.16.1.0/30    100.9.12.12              0             0 65222 ?
 *>i 172.16.1.4/30    10.10.10.10              0    100      0 65222 ?
 *>  192.168.1.0      100.9.12.12         307200             0 65222 ?
 *>i 192.168.2.0      10.10.10.10         307200    100      0 65222 ?
Route Distinguisher: 65222:2    ← 对端 PE 发送的公司 B 私网路由条目
 *>i 14.14.14.14/32   10.10.10.10              0    100      0 65222 ?
 *>i 18.18.18.18/32   10.10.10.10         409600    100      0 65222 ?
 *>i 172.16.1.4/30    10.10.10.10              0    100      0 65222 ?
 *>i 192.168.2.0      10.10.10.10         307200    100      0 65222 ?

R10

R10#show bgp vpnv4 unicast all 
BGP table version is 33, local router ID is 10.10.10.10
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 65111:1    ← 对端 PE 发送的公司 A 私网路由条目
 *>i 11.11.11.11/32   9.9.9.9                  0    100      0 65111 ?
 *>i 15.15.15.15/32   9.9.9.9                 11    100      0 65111 ?
 *>i 172.16.1.0/30    9.9.9.9                  0    100      0 65111 ?
 *>i 192.168.1.0      9.9.9.9                 20    100      0 65111 ?
Route Distinguisher: 65111:2 (default for vrf COMP_A)    ← 公司 A 的 BGP 表
 *>i 11.11.11.11/32   9.9.9.9                  0    100      0 65111 ?
 *>  13.13.13.13/32   200.10.13.13             0             0 65111 ?
 *>i 15.15.15.15/32   9.9.9.9                 11    100      0 65111 ?
 *>  17.17.17.17/32   200.10.13.13            11             0 65111 ?
 *>i 172.16.1.0/30    9.9.9.9                  0    100      0 65111 ?
 *>  172.16.1.4/30    200.10.13.13             0             0 65111 ?
 *>i 192.168.1.0      9.9.9.9                 20    100      0 65111 ?
 *>  192.168.2.0      200.10.13.13            20             0 65111 ?
     Network          Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 65222:1    ← 对端 PE 发送的公司 B 私网路由条目
 *>i 12.12.12.12/32   9.9.9.9                  0    100      0 65222 ?
 *>i 16.16.16.16/32   9.9.9.9             409600    100      0 65222 ?
 *>i 172.16.1.0/30    9.9.9.9                  0    100      0 65222 ?
 *>i 192.168.1.0      9.9.9.9             307200    100      0 65222 ?
Route Distinguisher: 65222:2 (default for vrf COMP_B)    ← 公司 B 的 BGP 表
 *>i 12.12.12.12/32   9.9.9.9                  0    100      0 65222 ?
 *>  14.14.14.14/32   200.10.14.14             0             0 65222 ?
 *>i 16.16.16.16/32   9.9.9.9             409600    100      0 65222 ?
 *>  18.18.18.18/32   200.10.14.14        409600             0 65222 ?
 *>i 172.16.1.0/30    9.9.9.9                  0    100      0 65222 ?
 *>  172.16.1.4/30    200.10.14.14             0             0 65222 ?
 *>i 192.168.1.0      9.9.9.9             307200    100      0 65222 ?
 *>  192.168.2.0      200.10.14.14        307200             0 65222 ?

可以看出,两台 PE 已经可以学到两个公司的私网路由条目并正确区分。验证通过。

发表评论