目录

简介

先决条件

要求

使用的组件

背景

架构

配置

验证

故障排除

相关信息

简介

本文档介绍统一多协议标签交换 (MPLS) 的用途并提供配置示例。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

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

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

背景

统一MPLS的用途完全在于扩展。为了扩展MPLS网络，将网络划分为不同区域是有意义的。典型设计引入的分层结构中心有核心，侧面有汇聚。为了扩展，核心和聚合中可能有不同的内部网关协议(IGP)。为了扩展，您不能将IGP前缀从一个IGP分发到另一个IGP。如果不将IGP前缀从一个IGP分发到另一个IGP，则不可能使用端到端标签交换路径(LSP)。

为了端到端地提供MPLS服务，您需要LSP为端到端。目标是保持MPLS服务(MPLS VPN、MPLS L2VPN)的原样，但引入更高的可扩展性。为此，请将一些IGP前缀移入边界网关协议(BGP)(提供商边缘(PE)路由器的环回前缀)，然后将这些前缀端到端分配。

架构

图1显示了具有三个不同区域的网络：一个核心和两个汇聚区域。每个区域都运行自己的IGP，在区域边界路由器(ABR)上它们之间不进行重分发。 要提供端到端MPLS LSP，需要使用BGP。BGP在整个域中通告带标签的PE路由器环回，并提供端到端LSP。BGP在PE和ABR之间部署RFC 3107，这意味着BGP发送IPv4前缀+标签(AFI/SAFI 1/4)。

由于网络的核心和聚合部分是集成的，并且提供端到端LSP，因此统一MPLS解决方案也称为“无缝MPLS”。

此处不使用新技术或协议，仅使用MPLS、标签分发协议(LDP)、IGP和BGP。由于您不想将PE路由器的环回前缀从网络的一个部分分发到另一个部分，因此需要在BGP中传输前缀。内部边界网关协议(iBGP)用于一个网络，因此前缀的下一跳地址是PE路由器的环回前缀，而IGP在网络的其他部分并不知道该前缀。这意味着下一跳地址不能用于递归到IGP前缀。诀窍是使ABR路由器成为路由反射器(RR)，并将下一跳设置为自己，即使是反射的iBGP前缀。为了使此功能正常工作，需要新的旋钮。

只有路由反射器需要更新的软件来支持此架构。由于RR通告BGP前缀，并将下一跳设置为自己，因此它们会向BGP前缀分配本地MPLS标签。这意味着在数据平面中，这些端到端LSP上转发的数据包在标签堆栈中有额外的MPLS标签。RR位于转发路径中。

注意：通过此架构，可提供任何MPLS服务。例如，MPLS VPN或MPLS L2VPN在PE路由器之间提供。这些数据包的数据平面的区别在于，它们现在在标签堆栈中有三个标签，而在未使用统一MPLS时，它们在标签堆栈中有两个标签。

有两种可能的情况：

- ABR不会将ABR通告（由BGP反映）到网络汇聚部分的前缀的下一跳设置为自己。因此，ABR需要将ABR的环回前缀从核心IGP重分布到聚合IGP。如果完成此操作，仍然具有可扩展性。只有ABR环回前缀（从核心）需要通告到聚合部分，而不是来自远程聚合部分的PE路由器的环回前缀。

- ABR将ABR通告（由BGP反映）到汇聚部分的前缀的下一跳设置为自己。因此，ABR无需将ABR的环回前缀从核心IGP重分布到聚合IGP。

在这两种情况下，ABR将ABR通告（由BGP反映）的前缀的下一跳设置为自身，从网络的聚合部分通告到核心部分。如果不执行此操作，ABR需要将PE的环回前缀从聚合IGP重分布到核心IGP。如果完成此操作，则无可扩展性。

为了将反射的iBGP路由的下一跳设置为自己，必须配置neighbor x.x.x.x next-hop-self all命令。

配置

这是场景2的PE路由器和ABR的配置。

注意：图2显示了拓扑。示例服务是xconnect(MPLS L2VPN)。 在PE路由器和ABR之间，有BGP for IPv4 +标签。

PE1

interface Loopback0

ip address 10.100.1.4 255.255.255.255

!

interface Ethernet1/0

no ip address

xconnect 10.100.1.5 100 encapsulation mpls

!

router ospf 2

network 10.2.0.0 0.0.255.255 area 0

network 10.100.1.4 0.0.0.0 area 0

!

router bgp 1

bgp log-neighbor-changes

network 10.100.1.4 mask 255.255.255.255

neighbor 10.100.1.1 remote-as 1

neighbor 10.100.1.1 update-source Loopback0

neighbor 10.100.1.1 send-label

RR1

interface Loopback0

ip address 10.100.1.1 255.255.255.255

router ospf 1

network 10.1.0.0 0.0.255.255 area 0

network 10.100.1.1 0.0.0.0 area 0

!

router ospf 2

redistribute ospf 1 subnets match internal route-map ospf1-into-ospf2

network 10.2.0.0 0.0.255.255 area 0

!

router bgp 1

bgp log-neighbor-changes

neighbor 10.100.1.2 remote-as 1

neighbor 10.100.1.2 update-source Loopback0

neighbor 10.100.1.2 next-hop-self all

neighbor 10.100.1.2  send-label

neighbor 10.100.1.4 remote-as 1

neighbor 10.100.1.4 update-source Loopback0

neighbor 10.100.1.4 route-reflector-client

neighbor 10.100.1.4 next-hop-self all

neighbor 10.100.1.4 send-label

ip prefix-list prefix-list-ospf1-into-ospf2 seq 5 permit 10.100.1.1/32

route-map ospf1-into-ospf2 permit 10

match ip address prefix-list prefix-list-ospf1-into-ospf2

RR2

interface Loopback0

ip address 10.100.1.2 255.255.255.255

router ospf 1

network 10.1.0.0 0.0.255.255 area 0

network 10.100.1.2 0.0.0.0 area 0

!

router ospf 3

redistribute ospf 1 subnets match internal route-map ospf1-into-ospf3

network 10.3.0.0 0.0.255.255 area 0

!

router bgp 1

bgp log-neighbor-changes

neighbor 10.100.1.1 remote-as 1

neighbor 10.100.1.1 update-source Loopback0

neighbor 10.100.1.1 next-hop-self all

neighbor 10.100.1.1 send-label

neighbor 10.100.1.5 remote-as 1

neighbor 10.100.1.5 update-source Loopback0

neighbor 10.100.1.5 route-reflector-client

neighbor 10.100.1.5 next-hop-self all

neighbor 10.100.1.5 send-label

ip prefix-list prefix-list-ospf1-into-ospf3 seq 5 permit 10.100.1.2/32

route-map ospf1-into-ospf3 permit 10

match ip address prefix-list prefix-list-ospf1-into-ospf3

PE2

interface Loopback0

ip address 10.100.1.5 255.255.255.255

interface Ethernet1/0

no ip address

xconnect 10.100.1.4 100 encapsulation mpls

router ospf 3

network 10.3.0.0 0.0.255.255 area 0

network 10.100.1.5 0.0.0.0 area 0

router bgp 1

bgp log-neighbor-changes

network 10.100.1.5 mask 255.255.255.255

neighbor 10.100.1.2 remote-as 1

neighbor 10.100.1.2 update-source Loopback0

neighbor 10.100.1.2 send-label

注意：使用路由映射将核心IGP(ospf 1)重分发到聚合IGP(ospf2或ospf 3)。此路由映射允许路由反射器的环回前缀重新分发到聚合IGP。原因是RR的环回前缀仅直接通告到核心IGP(ospf 1)。 但是，RR的环回前缀必须在聚合IGP中也已知，以便PE路由器上的BGP可以与RR的环回对等。

验证

要验证控制平面的运行，请参阅图2。

要验证MPLS标签通告，请参阅图3。

请参阅图4以验证数据包转发。

这是数据包从PE1转发到PE2的方式。PE2的环回前缀是10.100.1.5/32，因此前缀是值得关注的。

PE1#show ip route 10.100.1.5

Routing entry for 10.100.1.5/32

Known via "bgp 1", distance 200, metric 0, type internal

Last update from 10.100.1.1 00:11:12 ago

Routing Descriptor Blocks:

* 10.100.1.1, from 10.100.1.1, 00:11:12 ago

Route metric is 0, traffic share count is 1

AS Hops 0

MPLS label: 22

PE1#show ip cef 10.100.1.5

10.100.1.5/32

nexthop 10.2.2.6 Ethernet0/0 label 19 22

PE1#show ip cef 10.100.1.5 detail

10.100.1.5/32, epoch 0, flags rib defined all labels

1 RR source [no flags]

recursive via 10.100.1.1 label 22

nexthop 10.2.2.6 Ethernet0/0 label 19

PE1#show bgp ipv4 unicast labels

Network          Next Hop      In label/Out label

10.100.1.4/32    0.0.0.0         imp-null/nolabel

10.100.1.5/32    10.100.1.1      nolabel/22

P1#show mpls forwarding-table labels 19 detail

Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop

Label      Label      or Tunnel Id     Switched      interface

19         Pop Label  10.100.1.1/32    603468        Et1/0      10.2.1.1

MAC/Encaps=14/14, MRU=1504, Label Stack{}

AABBCC000101AABBCC0006018847

No output feature configured

RR1#show mpls forwarding-table labels 22 detail

Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop

Label      Label      or Tunnel Id     Switched      interface

22         21         10.100.1.5/32    575278        Et0/0      10.1.1.3

MAC/Encaps=14/22, MRU=1496, Label Stack{17 21}

AABBCC000300AABBCC0001008847 0001100000015000

No output feature configured

RR1#show bgp ipv4 unicast labels

Network          Next Hop      In label/Out label

10.100.1.4/32    10.100.1.4      19/imp-null

10.100.1.5/32    10.100.1.2      22/21

P3#show mpls forwarding-table labels 17 detail

Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop

Label      Label      or Tunnel Id     Switched      interface

17         Pop Label  10.100.1.2/32    664306        Et1/0      10.1.2.2

MAC/Encaps=14/14, MRU=1504, Label Stack{}

AABBCC000201AABBCC0003018847

No output feature configured

RR2#show mpls forwarding-table labels 21 detail

Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop

Label      Label      or Tunnel Id     Switched      interface

21         17         10.100.1.5/32    615958        Et0/0      10.3.1.7

MAC/Encaps=14/18, MRU=1500, Label Stack{17}

AABBCC000700AABBCC0002008847 00011000

No output feature configured

RR2#show bgp ipv4 unicast labels

Network          Next Hop      In label/Out label

10.100.1.4/32    10.100.1.1      22/19

10.100.1.5/32    10.100.1.5      21/imp-null

P2#show mpls forwarding-table labels 17 detail

Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop

Label      Label      or Tunnel Id     Switched      interface

17         Pop Label  10.100.1.5/32    639957        Et1/0      10.3.2.5

MAC/Encaps=14/14, MRU=1504, Label Stack{}

AABBCC000500AABBCC0007018847

No output feature configured

PE1#trace

Protocol [ip]:

Target IP address: 10.100.1.5

Source address: 10.100.1.4

DSCP Value [0]:

Numeric display [n]:

Timeout in seconds [3]:

Probe count [3]:

Minimum Time to Live [1]:

Maximum Time to Live [30]:

Port Number [33434]:

Loose, Strict, Record, Timestamp, Verbose[none]:

Type escape sequence to abort.

Tracing the route to 10.100.1.5

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

1 10.2.2.6 [MPLS: Labels 19/22 Exp 0] 3 msec 3 msec 3 msec

2 10.2.1.1 [MPLS: Label 22 Exp 0] 3 msec 3 msec 3 msec

3 10.1.1.3 [MPLS: Labels 17/21 Exp 0] 3 msec 3 msec 2 msec

4 10.1.2.2 [MPLS: Label 21 Exp 0] 2 msec 3 msec 2 msec

5  *  *  *

6 10.3.2.5 4 msec *  4 msec

注意：第5跳显示？5 * * * ?。这是因为路由器P2没有跟踪路由的源IP地址10.100.1.4(PE1)的路由。因此，路由器P2无法将Internet控制消息协议(ICMP)错误消息发回PE1。这是正常的，因为统一MPLS的目的是不让一个聚合部分中的所有PE路由器的环回前缀显示在其他聚合部分的IGP中。路由器P2不尝试使用原始标签堆栈转发ICMP错误消息。这是因为原始标签堆栈只有一个标签。如果数据包的此原始标签堆栈有两个或多个标签，则ICMP错误消息会沿LSP转发，并可返回到traceroute的源。如果原始标签堆栈只有一个标签，则生成ICMP错误消息的路由器会尝试路由查找，并尝试使用路由表（不使用原始标签堆栈）进行路由。

P2#show ip route 10.100.1.4

% Subnet not in table

故障排除

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

相关信息

- 无缝MPLS架构

- 技术支持和文档 - Cisco Systems