原理分析:由于MPLS ×××涉及到两个层面,一个是控制层面的MPBGP行为,包括传递×××V4路由;另一个是转发层面的MPLS行为,包括LDP标签管理、MPLS转发等。每个层面均按照3层网络分层模型进行分析:

(一)控制层面(Routing Information Distributing)

1、接入层

接入层指的是客户接入二级ISP的网络。单纯观察这一层,如同 MPLS ×××的PE-PE模型。R7、R8使用分属不同VRF的三层接口连接Corp_A和Corp_B的4个网段,并由VRF的RD对上述网段的路由分别进行标识。同时R7、R8成为MP-iBGP peer,并相互交换×××v4路由信息。本实验里,R7使用5678:71标识C1、使用5678:72标识C3;R8使用5678:81标识C2、使用5678:82标识C4。因此,C1、C2、C3、C4的路由为:

C1

5678:71:192.168.7.0

C2

5678:81:172.16.7.0

C3

5678:72:192.168.8.0

C4

5678:82:172.16.8.0

R7#show ip bgp ***v4 all

Route Distinguisher: 5678:71 (default for vrf ×××_A)

*>i172.16.7.0/24    8.8.8.8                  0    100      0 i

*> 192.168.7.0      0.0.0.0                  0         32768 i

Route Distinguisher: 5678:72 (default for vrf ×××_B)

*>i172.16.8.0/24    8.8.8.8                  0    100      0 i

*> 192.168.8.0      0.0.0.0                  0         32768 i

Route Distinguisher: 5678:81

*>i172.16.7.0/24    8.8.8.8                  0    100      0 i

Route Distinguisher: 5678:82

*>i172.16.8.0/24    8.8.8.8                  0    100      0 i

由于接入层使用LDP进行标签分发,LDP为上述路由分配1、2层标签:

 

2、分配层

分配层指的是二级ISP内部和二级ISP接入一级ISP的网络。单纯观察这一层,如同MPLS ×××的CE-PE模型。首先,二级ISP内部只是简单的IPv4 routing+MPLS网络,传递的路由协议也是AS 5678内部路由,这从R5的RIB中可以看到;

R5#show ip route

      5.0.0.0/32 is subnetted, 1 subnets

C        5.5.5.5 is directly connected, Loopback0

      6.0.0.0/32 is subnetted, 1 subnets

B        6.6.6.6 [20/0] via 35.0.0.3, 01:18:15

      7.0.0.0/32 is subnetted, 1 subnets

O        7.7.7.7 [110/65] via 57.0.0.7, 01:17:48, Serial1/1

      8.0.0.0/32 is subnetted, 1 subnets

B        8.8.8.8 [20/0] via 35.0.0.3, 01:16:00

      35.0.0.0/8 is variably subnetted, 3 subnets, 2 masks

C        35.0.0.0/24 is directly connected, Serial1/0.503

C        35.0.0.3/32 is directly connected, Serial1/0.503

L        35.0.0.5/32 is directly connected, Serial1/0.503

      57.0.0.0/8 is variably subnetted, 2 subnets, 2 masks

C        57.0.0.0/24 is directly connected, Serial1/1

L        57.0.0.5/32 is directly connected, Serial1/1

      68.0.0.0/24 is subnetted, 1 subnets

B        68.0.0.0 [20/0] via 35.0.0.3, 01:16:00

R5#show ip bgp ***v4 all  

% Uninitialized context

与MPLS ×××模型中的CE不同的是,二级ISP内部使用了MPLS,这一点区别很重要,因为涉及到一个非常重要的配置。由于这个区别影响的是转发层面的问题,将在后面讨论。

对于一级ISP的PE,也与一般的PE-CE模型PE相仿。但这里要注意的是,一级ISP的PE所建VRF不是针对二级ISP所建VRF的,而是针对二级ISP本身的。因此,该VRF需要导入的Route-Target应该是需要建立MPiBGP peer的二级ISP所接入PE的VRF,与二级ISP的VRF无关。这句话比较绕口,请看:

R3#show ip vrf detail

VRF CSC_××× (VRF Id = 1); default RD 13:3; default ×××ID 

  Interfaces:

    Se1/0.305               

VRF Table ID = 1

  Export ××× route-target communities

    RT:24:4                  RT:13:3                 

  Import ××× route-target communities

    RT:24:4                  RT:13:3                 

  No import route-map

  No export route-map

  VRF label distribution protocol: BGP

  VRF label allocation mode: per-prefix

同时,二级ISP的路由以作为×××v4路由进行信息交换:

R3#show ip bgp ***v4 all

   Network          Next Hop            Metric LocPrf Weight Path

Route Distinguisher: 13:1

*>i6.6.6.6/32       1.1.1.1                  0    100      0 24 5678 ?

*>i8.8.8.8/32       1.1.1.1                  0    100      0 24 5678 ?

*>i68.0.0.0/24      1.1.1.1                  0    100      0 24 5678 ?

Route Distinguisher: 13:3 (default for vrf CSC_×××)

*> 5.5.5.5/32       35.0.0.5                 0             0 5678 ?

*>i6.6.6.6/32       1.1.1.1                  0    100      0 24 5678 ?

*> 7.7.7.7/32       35.0.0.5                65             0 5678 ?

*>i8.8.8.8/32       1.1.1.1                  0    100      0 24 5678 ?

*> 57.0.0.0/24      35.0.0.5                 0             0 5678 ?

*>i68.0.0.0/24      1.1.1.1                  0    100      0 24 5678 ?

3、核心层

核心层指一级ISP的内部网络和一级ISP之间的级联网络。这也是体现出Option AB的结合Option B的易扩展性优点。首先,ASBR之间使用MP-eBGP建立BGP会话,并交换×××v4路由。ASBR可就每个不同的下级ISP建立带CSC特性的OptionAB VRF。该VRF特性如下:

Specifies the VRF as an Option AB VRF, which has the following effects:

Routes imported to this VRF can be advertised to Option AB peers and ×××v4 iBGP peers.

When routes received from Option AB peers and are imported into the VRF, the next hop table ID of the route is set to the table ID of the VRF.

If the csc keyword is not used, a per-VRF label is allocated for imported routes.

When routes are received from Option AB peers and are imported next into the VRF, the learned out label can be installed only in forwarding when the csc keyword is used.The csc keyword implies the following:

A per-prefix label is allocated for imported routes.

For routes received from Option AB peers that are imported into the VRF, the learned out label is installed in forwarding.​

简单的说,eBGP peer除了通过一个三层接口建立BGP会话外,还有若干三层子接口,分别处于不同的Option AB VRF内。而这些Option AB VRF在设置时,需要设置一个next-hop,指向属于该VRF的子接口对端。

BGP收到RT为非OptionAB VRF的×××v4路由时,使用建立BGP会话的接口进行转发(该接口自动生成mpls bgp forwarding命令分配标签);

若BGP收到RT为某OptionAB VRF的×××v4路由时,自动把该路由的next-hop设置为该VRF所设置的next-hop。若该VRF是CSC属性的,则子接口使用MPLS转发数据包(同时在接口处使用mpls bgp forwarding),否则子接口使用IPv4转发。

R1#show ip vrf de 
VRF CSC_××× (VRF Id = 1); default RD 13:1; default ×××ID 
  Interfaces:
    Se1/0.192               
VRF Table ID = 1
  Export ××× route-target communities
    RT:13:3                  RT:24:4                 
  Import ××× route-target communities
    RT:13:3                  RT:24:4                 
  No import route-map
  No export route-map
  VRF label distribution protocol: not configured
  VRF label allocation mode: per-prefix
  Inter AS Hybrid mode configured, with CSC, next-hop 192.168.12.2

R1#show run in s1/0.192
Building configuration...

Current configuration : 173 bytes
!
interface Serial1/0.192 point-to-point
 ip vrf forwarding CSC_×××
 ip address 192.168.12.1 255.255.255.0
 mpls bgp forwarding
 frame-relay interface-dlci 192 IETF   
end

(二)转发层面(MPLS FORWARDING)

转发层面使用一个traceroute命令输出作为解释:

R7>trace vrf ×××_A 172.16.7.1

  1 57.0.0.5 [MPLS: Labels 19/17 Exp 0] 176 msec 204 msec 184 msec

  2 35.0.0.3 [MPLS: Labels 21/17 Exp 0] 272 msec 192 msec 292 msec

  3 13.0.0.1 [MPLS: Labels 22/17 Exp 0] 352 msec 212 msec 260 msec

  4 192.168.12.2 [MPLS: Labels 23/17 Exp 0] 284 msec 216 msec 236 msec

  5 24.0.0.4 [MPLS: Labels 0/18/17 Exp 0] 272 msec 264 msec 228 msec

  6 46.0.0.6 [MPLS: Labels 16/17 Exp 0] 276 msec 240 msec 204 msec

  7 172.16.7.1 208 msec *  200 msec

1、接入层

在接入层,MPLS为每个二级ISP ×××内的路由分配2层标签,内层标签指示×××内路由,外层标签指示MPiBGP PEER(8.8.8.8/32)

R7#show mpls ip bind 
--omited--    
  8.8.8.8/32 
 in label:     20        
 out label:    19        lsr: 5.5.5.5:0        inuse​

R8#show mpls ip binding all
--omited--

VRF ×××_A:
  172.16.7.0/24 
 in label:     17

可见接入层(包括二级ISP)使用双层MPLS标签进行转发,外层标签指定PE,内层标签指定PE内的VRF。

2、汇聚层

数据包进入R5后,继续交换外层标签,保持内层标签不变。

R5#show mpls ip bind

  8.8.8.8/32 

in label:     19        

out label:    20        lsr: 7.7.7.7:0

ICMP包交换到PE后,由PE进行MPLS交换。这里需要注意的是,对于一般的PE-CE模型,考虑到P没有CE的内部路由,因此PE需要使用双层标签分别表示×××路由和内部路由;而由于BGP对所有×××v4的路由分配标签,因此一级ISP骨干即使没有二级ISP的内部路由,但依然可以使用同一层标签进行MPLS转发:

R3#show mpls ip bind

R3#show ip bgp ***v4 all label

  Network Next Hop In label/Out label

Route Distinguisher: 13:3 (CSC_×××)

8.8.8.8/32 1.1.1.1 22/23

同理,从R4转发MPLS数据包到R6时,也将pop出

由于一级ISP使用不同的vrf区分不同的二级ISP,因此PE(R3、R4)使用vrf CSC_×××标识连接二级ISP的接口:

R3#show run in s1/0.305

interface Serial1/0.305 point-to-point

  ip vrf forwarding CSC_×××

  ip address 35.0.0.3 255.255.255.0

  mpls bgp forwarding

  frame-relay interface-dlci 305

end

R4#show run in s1/0.406

interface Serial1/0.406 point-to-point

  ip vrf forwarding CSC_×××

  ip address 46.0.0.4 255.255.255.0

  mpls bgp forwarding

  frame-relay interface-dlci 406

end

3、核心层

上面说到,骨干PE(R3、R4)将在vrf端口处接收到带有mpls标签的数据包。回想原CE-PE模型,PE处MPLS将为每条×××内的路由生成2层标签,内层标签标识VRF,外层标签标识PE。这里R3、R4接收到的本身就是2层MPLS数据包,情况将如何呢?

PE将交换原MPLS数据包的外层标签,然后再添加1层标签,作为骨干中指示本PE的标签。这样子,从PE(R3)中交换到R1的MPLS数据包封装理论上将带有3层标签:[R1][R8][172.168.7.1][数据包内容]。由于本拓扑没有P路由器,基于PHP机制,R3赋予[R1]的标签应为implic-null标签,因此从R3交换到R1的标签应为:[R8][172.16.7.1]。

从R1到R2,才是Inter-AS CSC Option AB的重点。控制层面已经说过,R1和R2之间将根据VRF的设置,决定使用何种方式转发数据包。首先,ASBR(R1、R2)之间除了一条直连的三层链路外,还要根据Option AB VRF的数量建立子链路,并在Option AB VRF内使用参数inter-as csc next-hop指定对端的IP地址。此外,ASBR之间使用MP-BGP进行标签分配。MP-BGP根据×××v4路由所属VRF,分别使用不同的next-hop作为其NLRI。假如VRF是Option AB的,MP-BGP使用Option AB VRF中指定的next-hop;假如VRF不是Option AB的,MP-BGP使用建立BGP peer IP作为下一跳。

由于下一跳不相同,因此mpls将不会把不同vrf之间的数据作为相同的fec(转发等价类),也就使用不同的标签进行转发。这样子就可以实现基于VRF的QoS了。