目录

简介

先决条件

要求

使用的组件

背景信息

配置

网络图

PE1上的配置

ABR1上的配置

验证

故障排除

相关信息

简介

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

先决条件

要求

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

使用的组件

本文档特定于Cisco IOS XR，但不限于特定的软件版本或硬件。

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

背景信息

Unified MPLS的用途就是扩展。为了扩展MPLS网络，在网络的某些部分有不同类型的平台和服务，有必要将网络划分为不同区域。典型的设计引入了分层结构，其核心位于中心，汇聚位于一侧。为了扩展，核心与汇聚中可能有不同的内部网关协议(IGP)。为了扩展，您不能将IGP前缀从一个IGP分配到另一个IGP。如果不将IGP前缀从一个IGP分发到另一个IGP，则端到端标签交换路径(LSP)将不可行。

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

配置

注意：请参阅搜索命令的最佳实践(仅限注册客户)，以获取有关如何研究命令的详细信息。

网络图

图1显示了包含三个不同区域的网络：一端是一个核心区域，另一端有两个汇聚区域。每个区域运行自己的IGP，在区域边界路由器(ABR)上它们之间不进行重分发。需要使用BGP来提供端到端MPLS LSP。BGP在整个域内使用标签通告PE路由器的环回，并提供端到端LSP。使用RFC 3107（BGP标记的单播）在PE和ABR之间部署BGP，这意味着BGP发送IPv4前缀+标签(地址系列标识符(AFI)1和后续地址系列标识符(SAFI)4)。

图 1

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

此处未使用新技术或协议，只有MPLS、标签分发协议(LDP)、IGP和BGP。由于您不想将PE路由器的环回前缀从网络的一部分分发到其他部分，因此需要在BGP中携带前缀。内部边界网关协议(iBGP)在一个网络中使用，因此前缀的下一跳地址是PE路由器的环回前缀，而网络其他部分的IGP不知道该前缀。这意味着下一跳地址不能用于递归为IGP前缀。诀窍是使ABR路由器成为路由反射器(RR)，并将下一跳设置为自身，即使对于反射的iBGP前缀也是如此。

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

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

有两种可能的方案：

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

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

在这两种情况下，ABR都将ABR通告的前缀的下一跳设置为自身（由BGP反映），这些前缀从网络的汇聚部分到核心部分。如果不这样做，ABR需要将PE的环回前缀从汇聚IGP重新分配到核心IGP。如果这样做，则没有可扩展性。

可以应用不同的配置，为ABR上的反射iBGP标记单播路由将下一跳设置为自身。

在Cisco IOS XR中启用RFC 3107时，这些解决方案不起作用：

- next-hop-self不起作用。

例如：

router bgp 1

neighbor 10.100.1.1

remote-as 1

update-source Loopback0

address-family ipv4 labeled-unicast

route-reflector-client

next-hop-self

!

- RPL和set next-hop self不起作用。

例如：

router bgp 1

neighbor 10.100.1.1

remote-as 1

update-source Loopback0

address-family ipv4 labeled-unicast

route-reflector-client

route-policy nhs-ibgp-3107 out

!

route-policy nhs-ibgp-3107

set next-hop self

end-policy

- set next-hop to peer-address不是连接点的有效运算符。

例如：

router bgp 1

neighbor 10.100.1.1

address-family ipv4 labeled-unicast

route-policy nhs-ibgp-3107-peer out

!!% Could not find entry in list: Policy [nhs-ibgp-3107-peer]

uses 'set-to-peer-address next-hop'. 'set' is not a valid

operator for the 'next-hop' attribute at the bgp neighbor-out-dflt attach point.

!

!

!

route-policy nhs-ibgp-3107-peer

set next-hop peer-address

end-policy

- 将下一跳设置为路由策略中的特定地址，ibgp policy out enforce-modifications不起作用

例如：

router bgp 1

ibgp policy out enforce-modifications

!

neighbor 10.100.1.1

remote-as 1

update-source Loopback0

address-family ipv4 labeled-unicast

route-reflector-client

route-policy nhs-ibgp-3107 out

!

!

route-policy nhs-ibgp-3107-peer

set next-hop 10.100.1.3

end-policy

这些解决方案有效。

确保具有ibgp policy out enforce-modifications!

例如：

router bgp 1

ibgp policy out enforce-modifications

!

neighbor 10.100.1.1

remote-as 1

update-source Loopback0

address-family ipv4 labeled-unicast

route-reflector-client

next-hop-self

!

!

例如：

router bgp 1

ibgp policy out enforce-modifications

!

neighbor 1.100.1.1

remote-as 1

update-source Loopback0

address-family ipv4 labeled-unicast

route-reflector-client

route-policy nhs-ibgp-3107 out

!

!

route-policy nhs-ibgp-3107

set next-hop self

end-policy

例如：

router bgp 1

ibgp policy out enforce-modifications

!

neighbor 10.100.1.1

remote-as 1

update-source Loopback0

address-family ipv4 labeled-unicast

route-reflector-client

route-policy nhs-ibgp-3107 out

next-hop-self

!

!

!

route-policy nhs-ibgp-3107

set next-hop self

end-policy

例如：

router bgp 1

ibgp policy out enforce-modifications

!

neighbor 10.100.1.1

remote-as 1

update-source Loopback0

address-family ipv4 labeled-unicast

route-reflector-client

route-policy nhs-ibgp-3107 out

next-hop-self

!

!

!

route-policy nhs-ibgp-3107

set next-hop 10.100.1.3

end-policy

PE1上的配置

hostname PE1

!

vrf one     <<< MPLS service is MPLS VPN

address-family ipv4 unicast

import route-target

1:1

!

export route-target

1:1

!

!

address-family ipv6 unicast

import route-target

1:1

!

export route-target

1:1

!

!

interface Loopback0

ipv4 address 10.100.1.1 255.255.255.255

!

!

interface GigabitEthernet0/0/0/0

ipv4 address 10.1.1.1 255.255.255.0

!

!

interface GigabitEthernet0/0/0/1   <<< VRF interface to CE1

vrf one

ipv4 address 10.9.1.3 255.255.255.0

!

!

router ospf 1

router-id 10.100.1.1

area 0

interface Loopback0

!

interface GigabitEthernet0/0/0/0

network point-to-point

!

!

!

router bgp 1

address-family ipv4 unicast

network 10.100.1.1/32    <<< advertise PE loopback in BGP

allocate-label all

!

address-family vpnv4 unicast

!

neighbor 10.100.1.3

remote-as 1

update-source Loopback0

address-family ipv4 labeled-unicast

!

!

neighbor 10.100.1.7     <<< vpnv4 iBGP session to PE2

remote-as 1

update-source Loopback0

address-family vpnv4 unicast

!

!

vrf one

rd 1:1

address-family ipv4 unicast

!

neighbor 10.9.1.2    <<< eBGP session to CE1

remote-as 65001

address-family ipv4 unicast

route-policy pass in

route-policy pass out

!

!

!

!

mpls ldp

mldp

logging notifications

address-family ipv4

!

!

router-id 10.100.1.1

address-family ipv4

!

interface GigabitEthernet0/0/0/0

address-family ipv4

!

!

!

ABR1上的配置

hostname ABR1

!

interface Loopback0

ipv4 address 10.100.1.3 255.255.255.255

!

!

interface GigabitEthernet0/0/0/0

ipv4 address 10.1.3.3 255.255.255.0

!

interface GigabitEthernet0/0/0/1

ipv4 address 10.1.2.3 255.255.255.0

!

route-policy nhs-ibgp-3107

set next-hop 10.100.1.3    <<< set next hop to loopback

end-policy

!

route-policy connected-into-ospf2

if destination in (10.100.1.3/32) then

pass

endif

end-policy

!

router ospf 1

router-id 10.100.1.3

area 0

interface Loopback0

!

interface GigabitEthernet0/0/0/1

network point-to-point

!

!

!

router ospf 2

redistribute connected route-policy connected-into-ospf2

area 0

interface GigabitEthernet0/0/0/0

network point-to-point

!

!

!

router bgp 1

ibgp policy out enforce-modifications

address-family ipv4 unicast

allocate-label all

!

neighbor 10.100.1.1     <<< iBGP neighbor PE1

remote-as 1

update-source Loopback0

address-family ipv4 labeled-unicast

route-reflector-client

route-policy nhs-ibgp-3107 out

next-hop-self

!

!

neighbor 10.100.1.5      <<< iBGP neighbor ABR2

remote-as 1

update-source Loopback0

address-family ipv4 labeled-unicast

route-policy nhs-ibgp-3107 out

next-hop-self

!

!

!

mpls ldp

mldp

address-family ipv4

!

!

router-id 10.100.1.3

interface GigabitEthernet0/0/0/0

address-family ipv4

discovery transport-address interface

!

!

interface GigabitEthernet0/0/0/1

address-family ipv4

!

!

注:allocate-label all或allocate-label route-policy是必需的。否则，标记的单播路由没有它们需要的本地标签，因为ABR是iBGP反射路由的下一跳。

注意：不执行核心IGP(OSPF 2)重分发到聚合IGP（OSPF 1或OSPF 3），反之亦然。但是，RR的环回前缀也必须在聚合IGP中知道，这样PE路由器上的BGP就可以与ABR/RR的环回对等。为此，需要使用RPL将连接的路由重分布到聚合IGP中。重分发的相连路由仅限于带RPL的ABR的环回前缀。

验证

请参阅图2以验证控制平面操作：

图 2

请参阅图3以验证MPLS标签通告：

图 3

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

图 4

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

RP/0/0/CPU0:PE1#traceroute

Protocol [ipv4]:

Target IP address: 10.100.1.7

Source address: 10.100.1.1

Numeric display? [no]:

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.7

1  10.1.1.2 [MPLS: Labels 24000/24005 Exp 0] 439 msec  119 msec  109 msec

2  10.1.2.3 [MPLS: Label 24005 Exp 0] 109 msec  109 msec  109 msec

3  10.1.3.4 [MPLS: Labels 24001/24003 Exp 0] 99 msec  99 msec  149 msec

4  10.1.4.5 [MPLS: Label 24003 Exp 0] 119 msec  119 msec  99 msec

5  10.1.5.6 [MPLS: Label 24001 Exp 0] 109 msec  139 msec  99 msec

6  10.1.6.7 109 msec  *  109 msec

标签24000是从P2获知的前缀10.100.1.3/32的LDP标签。标签24005是为前缀10.100.1.7/32获取的BGP RFC 3107标签。

RP/0/0/CPU0:PE1#show route 10.100.1.7/32

Routing entry for 10.100.1.7/32

Known via "bgp 1", distance 200, metric 0, [ei]-bgp, type internal

BIER rid=0x0, flags=0x0, count=0

Installed May 27 02:52:07.184 for 00:08:52

Routing Descriptor Blocks

10.100.1.3, from 10.100.1.3      <<< next-hop is ABR1

Route metric is 0

No advertising protos.

RP/0/0/CPU0:PE1#show cef 10.100.1.7/32

10.100.1.7/32, version 89, internal 0x1000001 0x0 (ptr 0xa1470f74)

[1], 0x0 (0xa1456614), 0xa08 (0xa16181e0)

Updated May 27 02:52:07.203

Prefix Len 32, traffic index 0, precedence n/a, priority 4

via 10.100.1.3, 3 dependencies, recursive [flags 0x6000]

path-idx 0 NHID 0x0 [0xa16806f4 0x0]

recursion-via-/32

next hop 10.100.1.3 via 24001/0/21

local label 24003

next hop 10.1.1.2/32 Gi0/0/0/0    labels imposed {24000 24005}

RP/0/0/CPU0:PE1#show bgp ipv4 unicast labels

BGP router identifier 10.100.1.1, local AS number 1

BGP generic scan interval 60 secs

Non-stop routing is enabled

BGP table state: Active

Table ID: 0xe0000000   RD version: 44

BGP main routing table version 44

BGP NSR Initial initsync version 2 (Reached)

BGP NSR/ISSU Sync-Group versions 0/0

BGP scan interval 60 secs

Status codes: s suppressed, d damped, h history, * valid, > best

i - internal, r RIB-failure, S stale, N Nexthop-discard

Origin codes: i - IGP, e - EGP, ? - incomplete

Network            Next Hop        Rcvd Label      Local Label

*> 10.100.1.1/32      0.0.0.0         nolabel         3

*>i10.100.1.7/32      10.100.1.3      24005           24003

Processed 2 prefixes, 2 paths

有向ABR1的倒数第二跳跳跳跃(PHP)。

RP/0/0/CPU0:P2#show mpls forwarding labels 24000

Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes

Label  Label       or ID              Interface                    Switched

------ ----------- ------------------ ------------ --------------- ------------

24000  Pop         10.100.1.3/32      Gi0/0/0/1    10.1.2.3        694765

标签24005换为ABR1上的标签24003。

RP/0/0/CPU0:ABR1#show bgp ipv4 unicast labels

BGP router identifier 10.100.1.3, local AS number 1

BGP generic scan interval 60 secs

Non-stop routing is enabled

BGP table state: Active

Table ID: 0xe0000000   RD version: 60

BGP main routing table version 60

BGP NSR Initial initsync version 2 (Reached)

BGP NSR/ISSU Sync-Group versions 0/0

BGP scan interval 60 secs

Status codes: s suppressed, d damped, h history, * valid, > best

i - internal, r RIB-failure, S stale, N Nexthop-discard

Origin codes: i - IGP, e - EGP, ? - incomplete

Network            Next Hop        Rcvd Label      Local Label

*>i10.100.1.1/32      10.100.1.1      3               24003

*>i10.100.1.7/32      10.100.1.5      24003           24005

Processed 2 prefixes, 2 paths

RP/0/0/CPU0:ABR1#show mpls forwarding labels 24005

Wed May 27 04:08:24.255 UTC

Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes

Label  Label       or ID              Interface                    Switched

------ ----------- ------------------ ------------ --------------- ------------

24005  24003       10.100.1.7/32                   10.100.1.5      6347

存在从P1到ABR2的PHP。

RP/0/0/CPU0:P1#show mpls forwarding labels 24001

Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes

Label  Label       or ID              Interface                    Switched

------ ----------- ------------------ ------------ --------------- ------------

24001  Pop         10.100.1.5/32      Gi0/0/0/1    10.1.4.5        348835

ABR2从PE2收到的RFC 3107路由10.100.1.7/32的BGP标签为3。这是表示PHP的隐式null标签。

RP/0/0/CPU0:ABR2#show bgp ipv4 unicast labels

BGP router identifier 10.100.1.5, local AS number 1

BGP generic scan interval 60 secs

Non-stop routing is enabled

BGP table state: Active

Table ID: 0xe0000000   RD version: 47

BGP main routing table version 47

BGP NSR Initial initsync version 2 (Reached)

BGP NSR/ISSU Sync-Group versions 0/0

BGP scan interval 60 secs

Status codes: s suppressed, d damped, h history, * valid, > best

i - internal, r RIB-failure, S stale, N Nexthop-discard

Origin codes: i - IGP, e - EGP, ? - incomplete

Network            Next Hop        Rcvd Label      Local Label

*>i10.100.1.1/32      10.100.1.3      24003           24005

*>i10.100.1.7/32      10.100.1.7      3               24003

Processed 2 prefixes, 2 paths

标签24003换为ABR2上的标签24001。

RP/0/0/CPU0:ABR2#show mpls forwarding labels 24003

Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes

Label  Label       or ID              Interface                    Switched

------ ----------- ------------------ ------------ --------------- ------------

24003  24001       10.100.1.7/32      Gi0/0/0/0    10.1.5.6        403676

从P3到PE2有PHP。

RP/0/0/CPU0:P3#show mpls forwarding labels 24001

Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes

Label  Label       or ID              Interface                    Switched

------ ----------- ------------------ ------------ --------------- ------------

24001  Pop         10.100.1.7/32      Gi0/0/0/1    10.1.6.7        685191

RP/0/0/CPU0:PE2#show bgp ipv4 unicast labels

BGP router identifier 10.100.1.7, local AS number 1

BGP generic scan interval 60 secs

Non-stop routing is enabled

BGP table state: Active

Table ID: 0xe0000000   RD version: 42

BGP main routing table version 42

BGP NSR Initial initsync version 2 (Reached)

BGP NSR/ISSU Sync-Group versions 0/0

BGP scan interval 60 secs

Status codes: s suppressed, d damped, h history, * valid, > best

i - internal, r RIB-failure, S stale, N Nexthop-discard

Origin codes: i - IGP, e - EGP, ? - incomplete

Network            Next Hop        Rcvd Label      Local Label

*>i10.100.1.1/32      10.100.1.5      24005           24004

*> 10.100.1.7/32      0.0.0.0         nolabel         3

Processed 2 prefixes, 2 paths

故障排除

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

相关信息

- 无缝MPLS架构

- 技术支持和文档 - Cisco Systems