目录

简介

先决条件

要求

使用的组件

背景信息

配置

网络图

配置

解释

验证

从CE1 ping CE2，反之亦然

交换更新和MPLS标签的说明

通过Traceroutes进行验证

从CE1到CE2的Traceroute

从CE2到CE1的Traceroute

故障排除

简介

本文档介绍如何配置和验证AS间第3层多协议标签交换(MPLS)VPN选项C功能。Cisco IOS®和Cisco IOS-XR平台用于解释和验证。示例网络场景及其配置和输出已显示，以便更好地了解。

先决条件

要求

本文档没有任何特定的要求。但是，MPLS的基本知识和Cisco IOS-XR平台的工作知识将很有帮助。

使用的组件

本文档不限于特定的软件和硬件版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

背景信息

MPLS广泛部署在全球的互联网服务提供商(ISP)中。ISP为客户提供大量服务，其中一项服务是MPLS第3层VPN。MPLS第3层VPN主要将客户的路由边界从一个地理位置延伸到另一个地理位置。ISP主要用作中转。在一个地理位置和另一个地理位置上与ISP对等完成，然后在客户边缘(CE)设备上从PE（提供商边缘/ISP）设备接收客户特定路由。

如果客户需要为两个不同地理位置（两个不同的ISP存在）扩展路由边界，则两个ISP需要协调，以便向最终客户提供MPLS第3层VPN。这种解决方案称为AS间第3层MPLS VPN。

AS间第3层MPLS VPNS可以采用四种不同的方式部署，即选项A、选项B、选项C和选项D。本文档将介绍使用选项C实施。

配置

网络图

AS间选项C交换的拓扑如下图所示。

编址方案非常简单。每台路由器的loopback1接口都描述为192.168.255.X，当路由器1受到关注时，X=1。接口编址类型为192.168.XY.X 。假设R1和R2处于考虑状态，则路由器R1下的接口配置为192.168.12.1（此处X =1,Y = 2）。

CE — 客户边缘

PE — 提供商边缘

RR — 路由反射器

ASBR — 自治系统边界路由器

在本文档中，术语CE表示两个客户边缘设备。如果必须对特定设备进行特定引用，则将其引用为CE1。这同样适用于PE、RR和ASBR。

所有设备都运行Cisco IOS，而ASBR2/R11和PE2/R12运行Cisco IOS-XR。

两个ISP被引用自治系统(AS)65000和AS 65001。ISP AS 65000位于拓扑的左侧，ISP A和ISP AS 65001位于拓扑的右侧，ISP B被引用。

配置

描述了设备的配置。

CE1

interface Loopback1                       #Customer Edge configuration.

ip address 192.168.255.1 255.255.255.255                                   !

interface FastEthernet0/0

ip address 192.168.12.1 255.255.255.0

!

router eigrp 1

network 0.0.0.0

!

PE1

vrf definition A                          #Provider Edge Configuration.

rd 192.168.255.2:65000

!

address-family ipv4

route-target export 99:99

route-target import 99:99

exit-address-family

!

interface Loopback1

ip address 192.168.255.2 255.255.255.255

ip ospf 1 area 0

!

interface FastEthernet0/0

vrf forwarding A

ip address 192.168.12.2 255.255.255.0

!

interface FastEthernet1/0

ip address 192.168.24.2 255.255.255.0

ip ospf 1 area 0

mpls ip

!

router eigrp 65000                        #EIGRP is PE-CE routing

!                                         #protocol.

address-family ipv4 vrf A autonomous-system 1

redistribute bgp 65000 metric 10000 10 255 1 1500

network 192.168.12.2 0.0.0.0

exit-address-family

!

router ospf 1

!

router bgp 65000

bgp log-neighbor-changes

no bgp default ipv4-unicast

neighbor 192.168.255.3 remote-as 65000

neighbor 192.168.255.3 update-source Loopback1

!

address-family ipv4

exit-address-family

!

address-family vpnv4                      #Advertising vpnv4 routes

neighbor 192.168.255.3 activate           #from PE1 to RR1.

neighbor 192.168.255.3 send-community both

exit-address-family

!

address-family ipv4 vrf A

redistribute eigrp 1

exit-address-family

!

P1

interface Loopback1                       #P router configuration.

ip address 192.168.255.4 255.255.255.255

ip ospf 1 area 0

!

interface FastEthernet0/0

ip address 192.168.24.4 255.255.255.0

ip ospf 1 area 0

duplex half

mpls ip

!

interface FastEthernet1/0

ip address 192.168.34.4 255.255.255.0

ip ospf 1 area 0

mpls ip

!

interface FastEthernet1/1

ip address 192.168.45.4 255.255.255.0

ip ospf 1 area 0

mpls ip

!

router ospf 1

!

RR1

interface Loopback1                       #Route-Reflector configuration.

ip address 192.168.255.3 255.255.255.255

ip ospf 1 area 0

!

interface FastEthernet0/0

ip address 192.168.34.3 255.255.255.0

ip ospf 1 area 0

mpls ip

!

router ospf 1

!

router bgp 65000

bgp log-neighbor-changes

neighbor 192.168.255.2 remote-as 65000

neighbor 192.168.255.2 update-source Loopback1

neighbor 192.168.255.7 remote-as 65001

neighbor 192.168.255.7 ebgp-multihop 255       #EBGP-Multihop vpnv4

neighbor 192.168.255.7 update-source Loopback1 #peering with RR2.

!

address-family vpnv4

neighbor 192.168.255.2 activate

neighbor 192.168.255.2 send-community both

neighbor 192.168.255.2 route-reflector-client

neighbor 192.168.255.7 activate

neighbor 192.168.255.7 send-community both

neighbor 192.168.255.7 next-hop-unchanged

exit-address-family

!

ASBR1

interface Loopback1                       #Autonomous-System boundary-

ip address 192.168.255.5 255.255.255.255  #router configuration.

ip ospf 1 area 0

!

interface FastEthernet0/0

ip address 192.168.45.5 255.255.255.0

ip ospf 1 area 0

mpls ip

!

interface FastEthernet1/0

ip address 192.168.115.5 255.255.255.0

mpls bgp forwarding

!

router ospf 1

redistribute bgp 65000 subnets route-map REDISTRIBUTE_IN_IGP

!                                         #Redistributing the loopbacks of

router bgp 65000                          #RR2 and PE2 in AS 65000.

bgp log-neighbor-changes

network 192.168.255.2 mask 255.255.255.255

network 192.168.255.3 mask 255.255.255.255

neighbor 192.168.115.11 remote-as 65001

neighbor 192.168.115.11 send-label

!

ip prefix-list FOREIGN_PREFIXES seq 5 permit 192.168.255.12/32

ip prefix-list FOREIGN_PREFIXES seq 10 permit 192.168.255.7/32

!

route-map REDISTRIBUTE_IN_IGP permit 10

match ip address prefix-list FOREIGN_PREFIXES

!

ASBR2

interface Loopback1                         #Autonomous System boundary

ipv4 address 192.168.255.11 255.255.255.255 #configuration.

!

interface GigabitEthernet0/0/0/0

ipv4 address 192.168.115.11 255.255.255.0

!

interface GigabitEthernet0/0/0/1

ipv4 address 192.168.116.11 255.255.255.0

!

prefix-set FOREIGN_PREFIXES

192.168.255.2/32,

192.168.255.3/32

end-set

!

route-policy DEFAULT

pass

end-policy

!

route-policy REDISTRIBUTE_IN_IGP

if destination in FOREIGN_PREFIXES then

pass

endif

end-policy

!

router static

address-family ipv4 unicast

192.168.115.5/32 GigabitEthernet0/0/0/0

!

router ospf 1

redistribute bgp 65001 route-policy REDISTRIBUTE_IN_IGP

area 0                                    #Redistributing the loopback

interface Loopback1                       #of RR1 and PE1 in AS 65001.

!

interface GigabitEthernet0/0/0/1

!

router bgp 65001

address-family ipv4 unicast

network 192.168.255.7/32

network 192.168.255.12/32

allocate-label all

!

neighbor 192.168.115.5

remote-as 65000

address-family ipv4 labeled-unicast

route-policy DEFAULT in

route-policy DEFAULT out

!

mpls ldp

address-family ipv4

!

interface GigabitEthernet0/0/0/1

!

RR2

interface Loopback1                       #Route-Refector Configuration.

ip address 192.168.255.7 255.255.255.255

ip ospf 1 area 0

!

interface FastEthernet0/0

ip address 192.168.67.7 255.255.255.0

ip ospf 1 area 0

mpls ip

!

router ospf 1

!

router bgp 65001

bgp log-neighbor-changes

neighbor 192.168.255.3 remote-as 65000    #EBGP-Multihop vpnv4 peering

neighbor 192.168.255.3 ebgp-multihop 255  #with RR1 in AS 65000.

neighbor 192.168.255.3 update-source Loopback1

neighbor 192.168.255.12 remote-as 65001

neighbor 192.168.255.12 update-source Loopback1

!

address-family vpnv4

neighbor 192.168.255.3 activate

neighbor 192.168.255.3 send-community both

neighbor 192.168.255.3 next-hop-unchanged

neighbor 192.168.255.12 activate

neighbor 192.168.255.12 send-community both

neighbor 192.168.255.12 route-reflector-client

exit-address-family

!

P2

interface Loopback1                       #P router configuration.

ip address 192.168.255.6 255.255.255.255

ip ospf 1 area 0

!

interface FastEthernet0/0

ip address 192.168.116.6 255.255.255.0

ip ospf 1 area 0

mpls ip

!

interface FastEthernet1/0

ip address 192.168.67.6 255.255.255.0

ip ospf 1 area 0

mpls ip

!

interface FastEthernet1/1

ip address 192.168.126.6 255.255.255.0

ip ospf 1 area 0

mpls ip

!

router ospf 1

!

PE2

vrf A                                     #Provider Edge Configuration.

address-family ipv4 unicast

import route-target

99:99

!

export route-target

99:99

!

!

interface Loopback1

ipv4 address 192.168.255.12 255.255.255.255

!

interface GigabitEthernet0/0/0/0

ipv4 address 192.168.126.12 255.255.255.0

!

interface GigabitEthernet0/0/0/1

vrf A

ipv4 address 192.168.128.2 255.255.255.0

!

router ospf 1

address-family ipv4

area 0

interface Loopback1

!

interface GigabitEthernet0/0/0/0

!

router bgp 65001

address-family vpnv4 unicast

!

neighbor 192.168.255.7                    #Advertising vpnv4 routes from

remote-as 65001                           #PE2 to RR2.

update-source Loopback1

address-family vpnv4 unicast

!

!

vrf A

rd 192.168.255.12:65001

address-family ipv4 unicast

redistribute eigrp 1

!

mpls ldp

address-family ipv4

!

interface GigabitEthernet0/0/0/0

!

router eigrp 65001                        #EIGRP as PE-CE protocol

vrf A

address-family ipv4

autonomous-system 1

redistribute bgp 65001

interface GigabitEthernet0/0/0/1

!

CE2

interface Loopback1                       #Customer-Edge Configuration.

ip address 192.168.255.8 255.255.255.255

!

interface FastEthernet1/0

ip address 192.168.128.8 255.255.255.0

!

router eigrp 1

network 0.0.0.0

!

解释

- 部署PE-CE路由协议时的增强型内部网关路由协议(EIGRP)。

- 开放最短路径优先(OSPF)用作ISP核心的内部网关协议(IGP)。在所有物理链路上的两个ISP上都部署了标签分发协议(LDP)+ IGP。ASBR1和ASBR2之间的AS间链路上未配置LDP + IGP。

- 在VRF A下将EIGRP重分发到边界网关协议(BGP)，反之亦然。

- 这些重分发的路由作为VPNv4路由通告给路由反射器(RR)。

- 路由反射器RR1与PE1对等体，并反映通过eBGP VPNv4多跳对等通过PE1获知的这些路由到RR2。

- 此eBGP VPNv4多跳对等位于不同AS中的两个RR之间。

- 两个RR之间应存在LSP（标签交换路径），这一点非常重要。

- 为了在位于不同AS中的两个RR之间实现LSP，需要泄漏AS之间的特定路由。

- ASBR1和ASBR2会泄漏特定路由，基本上是PE的loopback1和RR自己的AS。泄漏通过在ASBR之间的正常eBGP对等中通告路由来完成。

- ASBR相互接收对方通告的RR和PE路由器的loopback1前缀。接下来，在IGP（此处为OSPF）中重分发收到的路由。 重分发在本质上是特定的，只有两个前缀，即远程RR和PE的loopback1被重分发。

- 从BGP到OSPF的路由重分发以及与要在OSPF中重分发的路由匹配在Cisco IOS-XR中略有不同，需要了解前缀集和路由策略配置。前缀集类似于Cisco IOS中的前缀列表，路由策略等效于路由映射。

- 现在RR1和RR2之间以及PE1和PE2之间存在LSP。

- eBGP VPNv4对等体的下一跳未更改用于RR。必须注意，VPNv4路由的下一跳定义了LSP。现在，如果更新源自PE2并被发送到RR2（iBGP对等）下一跳，则保留。当RR2向RR1反映此更新时，由于这是eBGP对等，正常情况下，RR2将将自己设置为更新的下一跳，并将其通告给RR1。RR1将将此更新反映给PE1。因此，PE1将安装更新，并将更新的下一跳显示为RR2。如前所述，VPNv4路由的跳数定义LSP。因此，对于PE1到PE2,RR2是下一跳。因此，需要两个LSP，一个从PE1到RR2，另一个从RR2到PE2。这种设计的缺点是流量可能通过同一链路两次（如此拓扑中），而RR也位于流量的中转路径中。

- 为了克服这种设计问题，使用next-hop-unchanged。当RR2从PE2获取更新并反映到RR1时，更新中的下一跳仍为PE2，当RR1将其反映到PE1时，PE1将安装更新，其下一跳为PE2。这意味着从PE1到PE2的一个LSP，且没有RR在传输。

- 必须注意，在AS间链路上，未部署MPLS或LDP。ASBR使用BGP发送标签。XR需要启用IPv4标记为单播地址系列。

- 当带有eBGP标签的单播对等在ASBR1(Cisco IOS)上与Cisco IOS-XR设备建立时，会自动在AS间链路上配置“MPLS BGP转发”。与ASBR2交换标签是通过BGP完成的，不是通过LDP。Cisco IOS还会自动向ASBR2的接口添加已连接的/32路由，以便MPLS标签绑定到/32路由，并且标签交换已正确完成。

- 对于Cisco IOS-XR over Inter-AS链路，与Cisco IOS的逻辑不同。需要配置到ASBR1接口的静态/32路由，以便MPLS标签绑定为/32前缀。如果不执行此操作，则控制平面将出现，但流量不会转发。

验证

从CE1 ping CE2，反之亦然

从CE1到CE2的ping输出中，环回接口1作为源：

R1#ping 192.168.255.8 source lo1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.255.8, timeout is 2 seconds:

Packet sent with a source address of 192.168.255.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 104/300/420 ms

从CE2到CE1的ping输出中，环回接口1作为源：

R8#ping 192.168.255.1 source lo1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.255.1, timeout is 2 seconds:

Packet sent with a source address of 192.168.255.8

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 168/303/664 ms

交换更新和MPLS标签的说明

- 在CE1上，show ip route命令为另一端的CE2的loopback1提供路由。
R1#show ip route 192.168.255.8

Routing entry for 192.168.255.8/32

Known via "eigrp 1", distance 90, metric 156416, type internal

- 这里讨论沿CE1到CE2的路径实施/放置MPLS标签的流量，以及当流量从CE1的源环回1到CE2的环回1时如何获得可达性。

- 在MPLS第3层VPN设计中，应记住在标签交换操作期间传输标签会交换，而VPN标签不会变。当出现倒数第二跳跳跃(PHP)且流量到达PE或终止标签交换路径(LSP)时，VPN标签会暴露。

- 在PE1上，CE2的loopback1通过BGP VPNv4更新获知，并重分发到VRF感知EIGRP。通过CE1通过EIGRP获知的loopback1将重分发到BGP，并且也成为VPNv4路由。
R2#show bgp vpnv4 unicast all labels

Network            Next Hop         In label/Out label

Route Distinguisher: 192.168.255.2:65000 (A)

192.168.12.0       0.0.0.0          24/nolabel(A)

192.168.128.0      192.168.255.12   nolabel/24000

192.168.255.1/32   192.168.12.1     25/nolabel

192.168.255.8/32   192.168.255.12   nolabel/24007

- 从前面的输出可以得出，到达192.168.255.8/32;即CE2的loopback1，即通过BGP VPNv4更新获取传出标签24007。同样，PE1通过VPN标签25向CE1的loopback1通告可达性。
R2#show mpls forwarding-table

Local   Outgoing  Prefix             Bytes Label   Outgoing  Next Hop

Label   Label     or Tunnel Id       Switched      interface

22      20        192.168.255.12/32  0             Fa1/0     192.168.24.4

25      No Label  192.168.255.1/32[V]5976          Fa0/0     192.168.12.1

- 到达192.168.255.8/32的下一跳是192.168.255.12，下一跳决定LSP。MPLS转发表显示20作为传出标签，以到达192.168.255.12。因此，从CE1发往CE2的环回1的流量将有20作为传输标签，24007作为VPN标签。

- 对于发往CE1的loopback1的返回流量，PHP操作已在P1上发生，因为192.168.255.1/32属于CE1。发往192.168.255.1/32的流量将到达VPN标签为25的PE1，此标签将被删除，此数据包将发送到fa0/0接口；即CE1。

- RR1上的VPNv4标签重新确认相同。
R3#show bgp vpnv4 unicast all labels

Network               Next Hop          In label/Out label

Route Distinguisher: 192.168.255.2:65000

192.168.255.1/32      192.168.255.2     nolabel/25

Route Distinguisher: 192.168.255.12:65001

192.168.255.8/32      192.168.255.12    nolabel/24007

- 在P1上，从CE1发往CE2的流量将以传输标签20命中。
R4#show mpls forwarding-table

Local  Outgoing  Pefix             Bytes Label Outgoing   Next Hop

Label  Label     or Tunnel Id      Switched    interface

20     22        192.168.255.12/32 5172        Fa1/1      192.168.45.5

- 现在，从CE1发往CE2的流量将到达传输标签为22的ASBR1。
R5#show mpls forwarding-table

Local  Outgoing  Prefix            Bytes Label Outgoing   Next Hop

Label  Label     or Tunnel Id      Switched    interface

22     24002     192.168.255.12/32 5928        Fa1/0      192.168.115.11

- 现在，从CE1发往CE2的流量将到达传输标签为24002的ASBR2。
RP/0/0/CPU0:ios#show mpls forwarding

Local    Outgoing   Prefix             Outgoing   Next Hop       Bytes

Label    Label      or ID              Interface                 Switched

24002    19         192.168.255.12/32  Gi0/0/0/1  192.168.116.6  7092

- 现在，从CE1发往CE2的流量将到达传输标签为19的P2。
R6#show mpls forwarding-table

Local   Outgoing  Prefix            Bytes Label  Outgoing  Next Hop

Label   Label     or Tunnel Id      Switched     interface

19      Pop Label 192.168.255.12/32 9928         Fa1/1     192.168.126.12

- 在P2路由器上观察到PHP运行并弹出传输标签。当流量到达PE2时，会按照前面讨论的VPN标签24007命令。还应观察到，PE2将通过VPN标签24007通告到CE2的loopback1的可达性。
RP/0/0/CPU0:ios#show mpls forwarding

Local   Outgoing    Prefix              Outgoing   Next Hop      Bytes

Label   Label       or ID               Interface                Switched

24007   Unlabelled  192.168.255.8/32[V] Gi0/0/0/1  192.168.128.6 7992

24008   18          192.168.255.2/32    Gi0/0/0/0  192.168.126.6 673200

RP/0/0/CPU0:ios#show bgp vpnv4 unicast labels

Network                Next Hop         Rcvd Label Local Label

Route Distinguisher: 192.168.255.12:65001 (default for vrf A)

*>i192.168.255.1/32    192.168.255.2      25           nolabel

*> 192.168.255.8/32    192.168.128.8      nolabel      24007

- 可以在此观察到，从CE1到CE2的流量到达PE2,VPN标签为24007，流量发送到CE2所在的Gi/0/0/0/1,VPN标签弹出。还观察到PE2通过VPN标签24007通告到192.168.255.8/32的可达性。之前在PE1上学到了同样的信息。同样，PE1通过VPN标签25通告了到192.168.255.1/32的可达性，并在此获知相同信息。为了从CE2到达CE1上的192.168.255.1/32，将使用VPN标签25和传输标签18，因为下一跳192.168.255.2可通过标签18到达。

通过Traceroutes进行验证

- 标签可在traceroute中看到，与讨论的标签完全相同。

- VPNv4更新中的下一跳控制标签交换机路径，从而控制传输标签。

- 在下面显示的两个traceroute中，可以看到VPN标签在LSP的所有跳处保持一致。只交换传输标签。

- 当PE1从PE2获知更新时，下一跳是PE2，不是任何RR或ASBR。这会导致LSP在PE2终止，从而在从AS 65000到AS 65001的中转路径中产生单个LSP，反之亦然。

从CE1到CE2的Traceroute

R1#traceroute 192.168.255.8 source lo1

Type escape sequence to abort.

Tracing the route to 192.168.255.8

VRF info: (vrf in name/id, vrf out name/id)

1 192.168.12.2 8 msec 36 msec 16 msec

2 192.168.24.4 [MPLS: Labels 20/24007 Exp 0] 828 msec 628 msec 2688 msec

3 192.168.45.5 [MPLS: Labels 22/24007 Exp 0] 1456 msec * 1528 msec

4 192.168.115.11 [MPLS: Labels 24002/24007 Exp 0] 1544 msec 2452 msec  2164 msec

5 192.168.116.6 [MPLS: Labels 19/24007 Exp 0] 1036 msec 908 msec 1648 msec

6 192.168.126.12 [MPLS: Label 24007 Exp 0] 2864 msec 1676 msec 1648 msec

7 192.168.128.8 2008 msec 400 msec 572 msec

VPN标签24007在整个LSP中保持一致。

从CE2到CE1的Traceroute

R8#traceroute 192.168.255.1 source lo1

Type escape sequence to abort.

Tracing the route to 192.168.255.1

VRF info: (vrf in name/id, vrf out name/id)

1 192.168.128.2 1228 msec 68 msec 152 msec

2 192.168.126.6 [MPLS: Labels 18/25 Exp 0] 1188 msec 816 msec 1316 msec

3 192.168.116.11 [MPLS: Labels 24007/25 Exp 0] 1384 msec 1816 msec 504  msec

4 192.168.115.5 [MPLS: Labels 23/25 Exp 0] 284 msec 900 msec 972 msec

5 192.168.45.4 [MPLS: Labels 17/25 Exp 0] 436 msec 608 msec 292 msec

6 192.168.12.2 [MPLS: Label 25 Exp 0] 292 msec 108 msec 536 msec

7 192.168.12.1 224 msec 212 msec 620 msec

VPN标签25在整个LSP中保持一致。

故障排除

目前没有针对此配置的故障排除信息。