本文档介绍统一多协议标签交换 (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位于转发路径中。
有两种可能的情况:
在这两种情况下,ABR将ABR通告(由BGP反映)的前缀的下一跳设置为自身,从网络的聚合部分通告到核心部分。如果不执行此操作,ABR需要将PE的环回前缀从聚合IGP重分布到核心IGP。如果完成此操作,则无可扩展性。
为了将反射的iBGP路由的下一跳设置为自己,必须配置neighbor x.x.x.x next-hop-self all命令。
这是场景2的PE路由器和ABR的配置。
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
要验证控制平面的运行,请参阅图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
P2#show ip route 10.100.1.4
% Subnet not in table
目前没有针对此配置的故障排除信息。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
03-Jul-2013 |
初始版本 |