1. Topology
CE1------[R1(PE1)---R2(P)---R3(ASBR1)]------[R4(ASBR2)----R5(PE2)]----------CE2
[AS 100] [AS 200]
2. 基本原理
域内的PE与ASBR之间建立IBGP邻居,ASBR之间建立BGP邻居,PE之间建立MP-EBGP邻居。PE之间的可达性,是通过BGP路由学习,进而建立MPLS Tunnel来保证的。原理有点小复杂。
3. 标签分配过程 (PE2到PE1)
××× 私网标签由PE1直接分配给PE2;
到PE2 Loopback接口地址的公网标签是由BGP来逐跳分发的。
需要说明的是,由于PE的Loopback接口地址是通过BGP学习到的,BGP路由的特点是下一跳可能不直接可达,所以需要递归查找,在MPLS网络中,就需要额外建立一条Tunnel。在本例中,ASBR1分配给PE1到PE2的Loopback接口地址的标签,但PE1并不能直接到达ASBR1,它将通过 R2到达,所以R3/R2/R1会逐跳分配到ASBR1 Loopback接口地址的标签,这个标签是由LDP分发的。
4. 标签转发过程 (PE1到PE2)
PE1,通过查找VRF标签转发表,查到到×××目的网络的私网标签和下一跳(PE2);递归查找公网标签转发表,查到到PE2 Loopback接口地址的公网标签和下一跳(ASBR1),递归查找公网标签转发表,查到到ASBR1的公网标签;PE1封装3层标签,将报文转发给 P;
P,根据外层标签执行标签交换,由于是倒数第二跳,弹出1层标签;P发送给ASBR1的报文携带2层标签;
ASBR1,根据外层标签执行标签交换,将携带2层标签的报文转发给ASBR2;
ASBR2,根据外层标签执行标签交换,由于是倒数第二跳,弹出外层标签;ASBR2发送给PE2的报文只携带1层×××标签;
PE2,根据×××标签执行转发。由于是最后一跳,弹出×××标签,CE 收到的是纯IP报文。
5. 特点
ASBR上不需要感知×××的存在,只需要PE来维护×××路由和私网标签转发表。
P路由器上不需要知道到其他AS的公网路由,只需要PE维护到AS外的公网路由即可。
协议层面比较复杂
6. 各LSR上的相关表项
- R1 (PE1 in AS 100)
到ASBR1 Loopback地址的标签表项,由P通过LDP分配
C3600-R1#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
19 17 3.3.3.3/32 0 Fa0/0 172.16.12.2
到PE2 Loopback接口地址的标签表项,由ASBR1通过MP-IBGP分配
C3600-R1#sho ip bgp labels
Network Next Hop In Label/Out Label
5.5.5.5/32 3.3.3.3 nolabel/21
到×××目的网络的标签表项,由PE2通过MP-EBGP分配
C3600-R1#show ip bgp ***v4 all labels
Network Next Hop In label/Out label
Route Distinguisher: 100:1 (***-a)
10.58.1.0/24 5.5.5.5 nolabel/19
到×××目的网络的标签栈 {17 21 19}
C3600-R1#show ip cef vrf ***-a 10.58.1.0
10.58.1.0/24, version 31, epoch 0, cached adjacency 172.16.12.2
0 packets, 0 bytes
tag information set
local tag: ×××-route-head
fast tag rewrite with Fa0/0, 172.16.12.2, tags imposed: {17 21 19}
via 5.5.5.5, 0 dependencies, recursive
next hop 172.16.12.2, FastEthernet0/0 via 5.5.5.5/32
valid cached adjacency
tag rewrite with Fa0/0, 172.16.12.2, tags imposed: {17 21 19}
- R2 (P in AS 100)
P路由器感知不到××× 的存在,也感知不到PE2的存在,只维护域内的公网LSP
C3600-R2#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
17 Pop tag 3.3.3.3/32 50306 Fa1/0 172.16.23.3
- R3 (ASBR1 in AS 100)
ASBR不感知×××的存在,但能够感知到PE2的存在,它需要维护到PE2的公网 LSP
这个公网标签是通过MP-BGP分配的
C3600-R3#show ip bgp labels
Network Next Hop In Label/Out Label
5.5.5.5/32 172.16.34.4 21/17
C3600-R3#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
21 17 5.5.5.5/32 7860 Fa1/0 172.16.34.4
- R4 (ASBR2 in AS 200)
ASBR2同样感知不到×××的存在,但能够感知到PE2的存在,它需要维护到PE2的公网LSP
这个公网标签是通过MP-BGP分配的,倒数第二跳,弹出操作
C3600-R4#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
17 Pop tag 5.5.5.5/32 3351 Fa1/0 172.16.45.5
C3600-R4#sho ip bgp labels
Network Next Hop In Label/Out Label
5.5.5.5/32 172.16.45.5 17/nolabel
- R5 (PE2 in AS 200)
×××标签信息
C3600-R5#show ip bgp ***v4 all labels
Network Next Hop In label/Out label
Route Distinguisher: 100:1 (***-a)
10.58.1.0/24 0.0.0.0 19/aggregate(***-a)
C3600-R1#traceroute vrf ***-a 10.58.1.5
Type escape sequence to abort.
Tracing the route to 10.58.1.5
1 172.16.12.2 [MPLS: Labels 17/21/19 Exp 0] 204 msec 260 msec 260 msec
2 172.16.23.3 [MPLS: Labels 21/19 Exp 0] 332 msec 248 msec 212 msec
3 172.16.34.4 [MPLS: Labels 17/19 Exp 0] 224 msec 128 msec 268 msec
4 10.58.1.5 [MPLS: Label 19 Exp 0] 212 msec 312 msec *
7. 额外配置
1)由于到PE Loopback地址的公网标签都是MP-BGP分发的,所以需要在ASBR和PE上配置BGP分发标签功能
neighbor 172.16.34.4 send-label
2)由于到PE Loopback地址的路由都是通过BGP学到的,当PE之间建立起EBGP邻居之后,他们的Loopback接口地址的路由同样会通过这个EBGP邻居之间进行发送,而先前是通过IBGP学习到的,EBGP学习到的路由会优于IBGP,所以更新后会导致到PE Loopback接口地址的路由的下一跳是PE Loopback接口地址,导致死循环。解决这问题应使用策略路由进行路由发布控制。
CE1------[R1(PE1)---R2(P)---R3(ASBR1)]------[R4(ASBR2)----R5(PE2)]----------CE2
[AS 100] [AS 200]
2. 基本原理
域内的PE与ASBR之间建立IBGP邻居,ASBR之间建立BGP邻居,PE之间建立MP-EBGP邻居。PE之间的可达性,是通过BGP路由学习,进而建立MPLS Tunnel来保证的。原理有点小复杂。
3. 标签分配过程 (PE2到PE1)
××× 私网标签由PE1直接分配给PE2;
到PE2 Loopback接口地址的公网标签是由BGP来逐跳分发的。
需要说明的是,由于PE的Loopback接口地址是通过BGP学习到的,BGP路由的特点是下一跳可能不直接可达,所以需要递归查找,在MPLS网络中,就需要额外建立一条Tunnel。在本例中,ASBR1分配给PE1到PE2的Loopback接口地址的标签,但PE1并不能直接到达ASBR1,它将通过 R2到达,所以R3/R2/R1会逐跳分配到ASBR1 Loopback接口地址的标签,这个标签是由LDP分发的。
4. 标签转发过程 (PE1到PE2)
PE1,通过查找VRF标签转发表,查到到×××目的网络的私网标签和下一跳(PE2);递归查找公网标签转发表,查到到PE2 Loopback接口地址的公网标签和下一跳(ASBR1),递归查找公网标签转发表,查到到ASBR1的公网标签;PE1封装3层标签,将报文转发给 P;
P,根据外层标签执行标签交换,由于是倒数第二跳,弹出1层标签;P发送给ASBR1的报文携带2层标签;
ASBR1,根据外层标签执行标签交换,将携带2层标签的报文转发给ASBR2;
ASBR2,根据外层标签执行标签交换,由于是倒数第二跳,弹出外层标签;ASBR2发送给PE2的报文只携带1层×××标签;
PE2,根据×××标签执行转发。由于是最后一跳,弹出×××标签,CE 收到的是纯IP报文。
5. 特点
ASBR上不需要感知×××的存在,只需要PE来维护×××路由和私网标签转发表。
P路由器上不需要知道到其他AS的公网路由,只需要PE维护到AS外的公网路由即可。
协议层面比较复杂
6. 各LSR上的相关表项
- R1 (PE1 in AS 100)
到ASBR1 Loopback地址的标签表项,由P通过LDP分配
C3600-R1#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
19 17 3.3.3.3/32 0 Fa0/0 172.16.12.2
到PE2 Loopback接口地址的标签表项,由ASBR1通过MP-IBGP分配
C3600-R1#sho ip bgp labels
Network Next Hop In Label/Out Label
5.5.5.5/32 3.3.3.3 nolabel/21
到×××目的网络的标签表项,由PE2通过MP-EBGP分配
C3600-R1#show ip bgp ***v4 all labels
Network Next Hop In label/Out label
Route Distinguisher: 100:1 (***-a)
10.58.1.0/24 5.5.5.5 nolabel/19
到×××目的网络的标签栈 {17 21 19}
C3600-R1#show ip cef vrf ***-a 10.58.1.0
10.58.1.0/24, version 31, epoch 0, cached adjacency 172.16.12.2
0 packets, 0 bytes
tag information set
local tag: ×××-route-head
fast tag rewrite with Fa0/0, 172.16.12.2, tags imposed: {17 21 19}
via 5.5.5.5, 0 dependencies, recursive
next hop 172.16.12.2, FastEthernet0/0 via 5.5.5.5/32
valid cached adjacency
tag rewrite with Fa0/0, 172.16.12.2, tags imposed: {17 21 19}
- R2 (P in AS 100)
P路由器感知不到××× 的存在,也感知不到PE2的存在,只维护域内的公网LSP
C3600-R2#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
17 Pop tag 3.3.3.3/32 50306 Fa1/0 172.16.23.3
- R3 (ASBR1 in AS 100)
ASBR不感知×××的存在,但能够感知到PE2的存在,它需要维护到PE2的公网 LSP
这个公网标签是通过MP-BGP分配的
C3600-R3#show ip bgp labels
Network Next Hop In Label/Out Label
5.5.5.5/32 172.16.34.4 21/17
C3600-R3#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
21 17 5.5.5.5/32 7860 Fa1/0 172.16.34.4
- R4 (ASBR2 in AS 200)
ASBR2同样感知不到×××的存在,但能够感知到PE2的存在,它需要维护到PE2的公网LSP
这个公网标签是通过MP-BGP分配的,倒数第二跳,弹出操作
C3600-R4#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
17 Pop tag 5.5.5.5/32 3351 Fa1/0 172.16.45.5
C3600-R4#sho ip bgp labels
Network Next Hop In Label/Out Label
5.5.5.5/32 172.16.45.5 17/nolabel
- R5 (PE2 in AS 200)
×××标签信息
C3600-R5#show ip bgp ***v4 all labels
Network Next Hop In label/Out label
Route Distinguisher: 100:1 (***-a)
10.58.1.0/24 0.0.0.0 19/aggregate(***-a)
C3600-R1#traceroute vrf ***-a 10.58.1.5
Type escape sequence to abort.
Tracing the route to 10.58.1.5
1 172.16.12.2 [MPLS: Labels 17/21/19 Exp 0] 204 msec 260 msec 260 msec
2 172.16.23.3 [MPLS: Labels 21/19 Exp 0] 332 msec 248 msec 212 msec
3 172.16.34.4 [MPLS: Labels 17/19 Exp 0] 224 msec 128 msec 268 msec
4 10.58.1.5 [MPLS: Label 19 Exp 0] 212 msec 312 msec *
7. 额外配置
1)由于到PE Loopback地址的公网标签都是MP-BGP分发的,所以需要在ASBR和PE上配置BGP分发标签功能
neighbor 172.16.34.4 send-label
2)由于到PE Loopback地址的路由都是通过BGP学到的,当PE之间建立起EBGP邻居之后,他们的Loopback接口地址的路由同样会通过这个EBGP邻居之间进行发送,而先前是通过IBGP学习到的,EBGP学习到的路由会优于IBGP,所以更新后会导致到PE Loopback接口地址的路由的下一跳是PE Loopback接口地址,导致死循环。解决这问题应使用策略路由进行路由发布控制。