1. Topology 
  
CE1------[R1(PE1)---R2(P)---R3(ASBR1)]------[R4(ASBR2)----R5(PE2)]----------CE2 
  
                              [AS 100]                                              [AS 200] 
  
2. 标签分配过程 
  
    PE1与ASBR1之间是两层标签,内层标签为到×××目的网络的私网标签,PE1通过MP-IBGP分配的;外层标签为到PE1 Loopback接口地址的公网标签,由LDP分配的。 
  
    ASBR1与ASBR2之间是一层标签,为到×××目的网络的私网标签,由 ASBR1通过MP-EBGP分配的。 
  
    ASBR2与PE2之间是两层标签,这要分为两种情况: 
  
      - 如果ASBR2没有执行next-hop-self,内层标签为到×××目的网络的私网标签,是由ASBR1通过MP-EBGP分配给ASBR2的,而 ASBR2没有改变标签信息,通过MP-IBGP将其分配给PE2;外层标签为到ASBR1与ASBR2建立EBGP的IP地址的公网标签,由LDP分配的。注意,到这个32位主机地址的IP路由要发布到整个AS200中去。 
  
      - 如果ASBR2执行了next-hop-self,内层标签为到×××目的网络的私网标签,是由ASBR2通过MP-IBGP分配的;外层标签为到 ASBR2的Loopback接口地址的公网标签,由LDP分配的。 
  
3. 标签转发过程 
  
    - 如果ASBR2上没有执行next-hop-self: 
  
    PE2上,查找VRF标签转发表,找到到×××目的网络的下一跳地址和私网标签;由于下一跳地址为ASBR1上与ASBR2建立EBGP的地址,于是递归查找到该地址的公网标签转发表,得公网标签;PE2封装2层标签转发给 ASBR2; 
  
    ASBR2上,根据公网标签执行标签转发,由于是倒数第二跳,弹出外层标签,ASBR2将只有1层×××标签的报文转发给 ASBR1; 
  
    ASBR1上,根据私网标签执行标签转发,执行一个×××的标签交换动作,并查到下一跳为PE1 Loopback地址,所以进行递归查找公网标签转发表,得公网标签;ASBR1封装2层标签转发给AS100中得P,即,R2; 
  
    P (R2)上,根据公网标签执行标签转发,由于是倒数第二跳,所以弹出公网标签,将只有1层×××标签得报文转发给PE1; 
  
    PE1上,根据私网标签执行标签转发,由于是最有一跳,所以弹出私网标签,将IP报文转发给CE1。 
  
    - 如果ASBR2上执行了next-hop-self: 
  
    PE2上,查找VRF标签转发表,找到到×××目的网络的下一跳地址和私网标签;由于下一跳地址为ASBR2 Loopback接口得地址,于是递归查找到该地址的公网标签转发表,得公网标签3,即,倒数第二跳;PE2只封装1层×××标签转发给ASBR2; 
  
    ASBR2 上,根据私网标签执行标签转发,执行一个标签交换得动作,ASBR2将只有1层×××标签的报文转发给ASBR1; 
  
    ASBR1上,根据私网标签执行标签转发,执行一个标签交换得动作,并查到下一跳为PE1 Loopback地址,所以进行递归查找公网标签转发表,得公网标签;ASBR1封装2层标签转发给AS100中得P,即,R2; 
  
    P (R2)上,根据公网标签执行标签转发,由于是倒数第二跳,所以弹出公网标签,将只有1层×××标签得报文转发给PE1; 
  
    PE1上,根据私网标签执行标签转发,由于是最有一跳,所以弹出私网标签,将IP报文转发给CE1。 
  
     
  
4. 特点 
  
    ASBR 上维护了所有×××的路由表和标签转发表,所以,在这个解决方案中,ASBR的压力最大,要求最高。 
  
     
  
5. 各LSR上的相关表项 (在ASBR2上,没有执行next-hop-self操作) 
  
- R1 (PE1 in AS 100) 
  
C3600-R1#show ip bgp ***v4 all labels                                           
  
   Network          Next Hop      In label/Out label                             
  
Route Distinguisher: 100:1 (***-a)                                               
  
   10.16.1.0/24     0.0.0.0         20/aggregate(***-a)     *****                     
  
   10.58.1.0/24     172.16.34.4     nolabel/18                                   
  
到×××目的网络10.16.1.0/24的入标签为20,将分配给其MP-IBGP Peer R3。 
  
C3600-R1#show ip cef vrf ***-a 10.16.1.0 255.255.255.0                           
  
10.16.1.0/24, version 7, epoch 0, attached, connected                           
  
0 packets, 0 bytes                                                               
  
  tag information set                                                           
  
    local tag: 20                     *****                                           
  
  via FastEthernet1/0, 0 dependencies                                           
  
    valid glean adjacency                                                       
  
    tag rewrite with , , tags imposed: {}     *****                                   
  

- R2 (P in AS 100) 
  
P 路由器感知不到××× LSP,所以只需要关注公网LSP 
  
C3600-R2#show mpls forwarding-table                                             
  
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop             
  
tag    tag or VC   or Tunnel Id      switched   interface                       
  
16     Pop tag     1.1.1.1/32        14034      Fa0/0      172.16.12.1           
  
到 1.1.1.1/32的出标签为 弹出操作,这是由R1分配的标签3导致的动作。 
  
到1.1.1.1/32的入标签为 16,将分配给R3。 
  
C3600-R2#show ip cef 1.1.1.1                                                     
  
1.1.1.1/32, version 11, epoch 0, cached adjacency 172.16.12.1                   
  
0 packets, 0 bytes                                                               
  
  tag information set                                                           
  
    local tag: 16                                                               
  
  via 172.16.12.1, FastEthernet0/0, 0 dependencies                               
  
    next hop 172.16.12.1, FastEthernet0/0                                       
  
    valid cached adjacency                                                       
  
    tag rewrite with Fa0/0, 172.16.12.1, tags imposed: {}                       
  
- R3 (ASBR1 in AS 100) 
  
ASBR是要维护××× LFIB信息的,但是,不维护×××的FIB信息 
  
C3600-R3#show mpls forwarding-table                                             
  
Local  Outgoing    Prefix                 Bytes tag  Outgoing   Next Hop             
  
tag    tag or VC   or Tunnel Id           switched   interface                               
  
17     16          1.1.1.1/32             0          Fa0/0      172.16.23.2           
  
20     20          100:1:10.16.1.0/24     942        Fa0/0      172.16.23.2       
  
到1.1.1.1/32的出标签为16,这是由R2分配的。 
  
到100:1:10.16.1.0/24的出标签为20,这是由R1分配的。 
  
到100:1:10.16.1.0/24的入标签为 20,将分配给MP-EBGP Peer. 
  
在ASBR上,需要通过分别查找私网/公网标签,来分析到×××目的地址的出标签栈,因为在CEF表中并没有记录。 
  
在本例中,到×××目的地址100:1:10.16.1.0/24的出标签栈为{16 20} 
  
- R4 (ASBR2 in AS 200) 
  
R4将来自AS 100的×××路由通告给自己的MP-IBGP Peer时,将下一跳设置为R3 (BGP缺省行为)。所以,R4不需要维护来自AS100的××× LFIB信息,只需要维护到R3 (建立BGP邻居使用的地址)的LFIB信息 
  
C3600-R4#show mpls forwarding-table                                             
  
Local  Outgoing    Prefix                Bytes tag  Outgoing   Next Hop             
  
tag    tag or VC   or Tunnel Id          switched   interface                       
  
16     Pop tag     172.16.34.3/32        504        Fa0/0      172.16.34.3                   
  
到172.16.34.3/32 (这是R3上与R4建立BGP邻居的地址)的出标签为 弹出操作。注意,这个行为不是因为R3分配给R4标签3导致的(R3并没有分配给R4关于172.16.34.3/32的任何标签),这个行为是MP- EBGP结果。如果会话是MP-EBGP,直连,支持×××v4,就会生成该条目。 
  
到172.16.34.3/32的入标签为16,将分配给 R5。 
  
其实,R4同样也维护了到AS100 ×××目的地址的LIB信息,如果本地接入×××,那么这个条目将转化为LFIB 
  
  C3600-R4#sho ip bgp ***v4 all labels                                             
  
   Network          Next Hop      In label/Out label                             
  
Route Distinguisher: 100:1                                                       
  
   10.16.1.0/24     172.16.34.3     nolabel/20                                   
  
到10.16.1.0/24的出标签为20,这是由R3分配的。 
  
- R5 (PE2 in AS 200) 
  
C3600-R5#show mpls forwarding-table                                             
  
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop             
  
tag    tag or VC   or Tunnel Id      switched   interface                             
  
19     16          172.16.34.3/32    0          Fa0/0      172.16.45.4       
  
到 172.16.34.3/32的出标签为16,这是由R4分配的 
  
C3600-R5#show ip bgp ***v4 all labels                                           
  
   Network          Next Hop      In label/Out label                             
  
Route Distinguisher: 100:1 (***-a)                                               
  
   10.16.1.0/24     172.16.34.3     nolabel/20                                   
  
看出,该表项和R4的一样。是由于R5接收该路由信息时,没有改变吓一跳信息。 
  
到10.16.1.0/24的出标签为20,这是由R3分配的。                     
  
C3600-R5#show ip cef vrf ***-a 10.16.1.0                                         
  
10.16.1.0/24, version 8, epoch 0, cached adjacency 172.16.45.4                   
  
0 packets, 0 bytes                                                               
  
  tag information set                                                           
  
    local tag: ×××-route-head                                                   
  
    fast tag rewrite with Fa0/0, 172.16.45.4, tags imposed: {16 20}             
  
  via 172.16.34.3, 0 dependencies, recursive                                     
  
    next hop 172.16.45.4, FastEthernet0/0 via 172.16.34.3/32                     
  
    valid cached adjacency                                                       
  
    tag rewrite with Fa0/0, 172.16.45.4, tags imposed: {16 20}     
  
到×××目的 10.16.1.0/24的入标签为空,×××-route-head。 
  
到×××目的10.16.1.0/24的出标签栈为{16 20},与分别查看公网/私网标签信息得出的结论是一致的。 
  

C3600-R5#traceroute vrf ***-a 10.16.1.1                                         
  
                                                                                 
  
Type escape sequence to abort.                                                   
  
Tracing the route to 10.16.1.1                                                   
  
                                                                                 
  
  1 172.16.45.4 [MPLS: Labels 16/20 Exp 0] 136 msec 120 msec 120 msec  -->R4收到的报文的标签信息{16 20},是R5发的       
  
  2 172.16.34.3 [MPLS: Label 20 Exp 0] 176 msec 124 msec 200 msec      -->R3收到的报文的标签信息{20},是R4发的 
  
  3 172.16.23.2 [MPLS: Labels 16/20 Exp 0] 128 msec 132 msec 180 msec  -->R2收到的报文的标签信息{16 20},是R3发的 
  
  4 10.16.1.1 [MPLS: Label 20 Exp 0] 156 msec 188 msec *               -->R1收到的报文的标签信息{20},是R2发的 
  
注:ASBR(R3-R4)之间只有1层标签,为 ×××标签。在ASBR1上,其实执行了×××标签交换,由20交换为20。


6. 额外配置

在实现Option B时,需要在ASBR上做一些额外的配置

no bgp default route-target filter   -->维护所有的×××标签信息

需要将MP-EBGP邻居的32位用来建立BGP会话的地址重发布到本AS中的IGP中,以便分配标签

https://blog.51cto.com/chldlk/318333