此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍统一多协议标签交换(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需要将PE的环回前缀从汇聚IGP重新分配到核心IGP。如果这样做,则没有可扩展性。
可以应用不同的配置,为ABR上的反射iBGP标记单播路由将下一跳设置为自身。
在Cisco IOS XR中启用RFC 3107时,这些解决方案不起作用:
例如:
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
!
例如:
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
例如:
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
例如:
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
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
!
!
!
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
目前没有针对此配置的故障排除信息。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
31-Jul-2015 |
初始版本 |