还是这张图,R2R3fa1/0shu同理R5R7

这次MP-EBGP邻居建立在RR上,因为R4R5没有必要收到这么多***v4的前缀,而R3R6上都有。

既然R3R6要建立MP-EBGP邻居关系,首先要知道对方环回口的地址,怎么得到对方环回口的地址呢?

通过BGP即图中蓝色的部分。

R2(config)#router bgp 10

R2(config-router)#add ipv4

R2(config-router-af)#nei 3.3.3.3 ac

R3(config)#router bgp 10

R3(config-router)#add ipv4

R3(config-router-af)#nei 2.2.2.2 ac 

R3(config-router-af)#nei 2.2.2.2 route-reflector-client 

R3(config-router-af)#nei 4.4.4.4 ac

R3(config-router-af)#nei 4.4.4.4 route-reflector-client 

R4(config)#router bgp 10

R4(config-router)#add v

R4(config-router-af)#nei 3.3.3.3 ac

R4(config-router-af)#nei 3.3.3.3 route-reflector-client 

R4(config-router)#nei 45.45.45.5 remote 20

R4(config-router)#add ipv4

R4(config-router-af)#nei 45.45.45.5 ac

邻居关系已经建立,现在在BGP中宣告环回口地址。宣告完之后查看:

R3#show ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

r>i2.2.2.2/32       2.2.2.2                  0    100      0 i

*> 3.3.3.3/32       0.0.0.0                  0         32768 i

r>i4.4.4.4/32       4.4.4.4                  0    100      0 i

* i5.5.5.5/32       45.45.45.5               0    100      0 20 i

* i6.6.6.6/32       45.45.45.5               0    100      0 20 i

* i7.7.7.7/32       45.45.45.5               0    100      0 20 i

对于R5R6R7的路由没有最优,采用Next-hop-self的方式解决

R4(config-router-af)#nei 3.3.3.3 next-hop-self (在add ipv4

R3#show ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

r>i2.2.2.2/32       2.2.2.2                  0    100      0 i

*> 3.3.3.3/32       0.0.0.0                  0         32768 i

r>i4.4.4.4/32       4.4.4.4                  0    100      0 i

*>i5.5.5.5/32       4.4.4.4                  0    100      0 20 i

*>i6.6.6.6/32       4.4.4.4                  0    100      0 20 i

*>i7.7.7.7/32       4.4.4.4                  0    100      0 20 i

既然学习到了对端的地址,那么就可以建立MP-BGP关系

R3(config)#router bgp 10

R3(config-router)#nei 6.6.6.6 remote 20

R3(config-router)#nei 6.6.6.6 up lo 0

R3(config-router)#nei 6.6.6.6 e 

R3(config-router)#add ***v

R3(config-router-af)#nei 6.6.6.6 ac

现在已经学习到了路由,控制层面的问题解决了,但是ping的通吗?

R1#show ip route ospf

     8.0.0.0/32 is subnetted, 1 subnets

O IA    8.8.8.8 [110/11] via 12.12.12.2, 00:00:26, FastEthernet0/0

     78.0.0.0/24 is subnetted, 1 subnets

O IA    78.78.78.0 [110/11] via 12.12.12.2, 00:00:25, FastEthernet0/0

R1#ping 8.8.8.8

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds:

.....

Success rate is 0 percent (0/5)

问题出在哪呢?

R2#show ip bgp ***v4 all labels 

Route Distinguisher: 10:2 (abc)

   1.1.1.1/32       12.12.12.1      203/nolabel

   8.8.8.8/32       6.6.6.6         205/603

   12.12.12.0/24    0.0.0.0         204/aggregate(abc)

   78.78.78.0/24    6.6.6.6         206/602

Route Distinguisher: 10:7

   8.8.8.8/32       6.6.6.6         nolabel/603

   78.78.78.0/24    6.6.6.6         nolabel/602

R6收到了一个标签,木问题。

然后查看R3

R3#show mpls forwarding-table 

Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop    

tag    tag or VC   or Tunnel Id      switched   interface              

300    Pop tag     2.2.2.2/32        0          Fa0/0      23.23.23.2   

301    Pop tag     4.4.4.4/32        590        Fa0/1      34.34.34.4   

302    204         10:2:12.12.12.0/24    \

                                     0          Fa0/0      23.23.23.2   

303    203         10:2:1.1.1.1/32   0          Fa0/0      23.23.23.2   

304    Untagged    7.7.7.7/32        0          Fa0/1      34.34.34.4   

305    Untagged    6.6.6.6/32        0          Fa0/1      34.34.34.4   

306    Untagged    5.5.5.5/32        0          Fa0/1      34.34.34.4   

对于6.6.6.6的路由是Untag的!到达不了下一跳。

为什么呢?

因为这条路由是BGP路由!对于BGP路由只分配下一跳的标签而不分配路由的标签。

解决方法:

BGP的路由在ASBRR4R5)上重分发进IGP

R4(config)#router ospf 1

R4(config-router)#redistribute bgp 10 subnets 

 

R5(config)#router ospf 1

R5(config-router)#redistribute bgp 20 subnets 

查看现象,还是没有分配标签!

R3#show mpls forwarding-table 

Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop    

tag    tag or VC   or Tunnel Id      switched   interface              

300    Pop tag     2.2.2.2/32        0          Fa0/0      23.23.23.2   

301    Pop tag     4.4.4.4/32        590        Fa0/1      34.34.34.4   

302    204         10:2:12.12.12.0/24    \

                                     0          Fa0/0      23.23.23.2   

303    203         10:2:1.1.1.1/32   0          Fa0/0      23.23.23.2   

304    Untagged    7.7.7.7/32        0          Fa0/1      34.34.34.4   

305    Untagged    6.6.6.6/32        0          Fa0/1      34.34.34.4   

306    Untagged    5.5.5.5/32        0          Fa0/1      34.34.34.4   

对于6.6.6.6的路由是Untag的!这个不应该,没有从R4收到标签!!

为什么呢?

R4#show ip route bgp

     5.0.0.0/32 is subnetted, 1 subnets

B       5.5.5.5 [20/0] via 45.45.45.5, 00:18:24

     6.0.0.0/32 is subnetted, 1 subnets

B       6.6.6.6 [20/0] via 45.45.45.5, 00:17:53

     7.0.0.0/32 is subnetted, 1 subnets

B       7.7.7.7 [20/0] via 45.45.45.5, 00:17:53

因为R4上仍然是BGP的路由!怎么解决?

R4(config)#router bgp 10

R4(config-router)#address-family ipv4

R4(config-router-af)#nei 45.45.45.5send-label 

 

R5(config)#router bgp 20

R5(config-router)#address-family ipv4

R5(config-router-af)#nei 45.45.45.4 send-label 

查看现象:

R3#show mpls forwarding-table 

Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop    

tag    tag or VC   or Tunnel Id      switched   interface              

300    Pop tag     2.2.2.2/32        0          Fa0/0      23.23.23.2   

301    Pop tag     4.4.4.4/32        590        Fa0/1      34.34.34.4   

302    204         10:2:12.12.12.0/24    \

                                     0          Fa0/0      23.23.23.2   

303    203         10:2:1.1.1.1/32   0          Fa0/0      23.23.23.2   

304    403         5.5.5.5/32        0          Fa0/1      34.34.34.4   

305    408         6.6.6.6/32        0          Fa0/1      34.34.34.4   

306    409         7.7.7.7/32        0          Fa0/1      34.34.34.4  

R2#show ip cef vrf abc 8.8.8.8

8.8.8.8/32, version 12, epoch 0, cached adjacency 23.23.23.3

0 packets, 0 bytes

  tag information set

    local tag: 207

fast tag rewrite with Fa0/1, 23.23.23.3, tags imposed: { 305 603}

R1#traceroute 8.8.8.8

1 12.12.12.2 116 msec 68 msec 20 msec

2 23.23.23.3 [MPLS: Labels 305/603 Exp 0] 144 msec 132 msec 144 msec

3 34.34.34.4 [MPLS: Labels 408/603 Exp 0] 184 msec 168 msec 60 msec

4 45.45.45.5 [MPLS: Labels 500/603 Exp 0] 80 msec 92 msec 108 msec

5 56.56.56.6 [MPLS: Label 603 Exp 0] 68 msec 56 msec 52 msec

6 78.78.78.7 [MPLS: Label 703 Exp 0] 152 msec 172 msec 68 msec

7 78.78.78.8 188 msec *  212 msec

顶层标签用来到达下一跳,因为下一跳改变2次所以底层标签改变两次。

现在我打开R2R4R5R7之间的接口!宣告进IGP

R1#traceroute 8.8.8.8

 1 12.12.12.2 108 msec 28 msec 32 msec

  2 24.24.24.4 [MPLS: Labels 408/603 Exp 0] 176 msec 160 msec 140 msec

  3 45.45.45.5 [MPLS: Labels 500/603 Exp 0] 72 msec 128 msec 164 msec

  4 56.56.56.6 [MPLS: Label 603 Exp 0] 116 msec 200 msec 84 msec

  5 78.78.78.7 [MPLS: Label 703 Exp 0] 124 msec 104 msec 80 msec

  6 78.78.78.8 192 msec *  224 msec

明显跳过了R3,因为标签的原因,到达下一跳走最优路径。但能不能跳过R7直接从R6R8,这样减少了RR上的带宽?

 

R6(config)#router bgp 20

R6(config-router)#add v

R6(config-router-af)#nei 3.3.3.3 next-hop-unchanged 

只要在R6上对R3下一跳不变就可以了

R1#traceroute 8.8.8.8

  1 12.12.12.2 36 msec 240 msec 4 msec

  2 24.24.24.4 [MPLS: Labels 409/703 Exp 0] 216 msec 8 msec 160 msec

  3 45.45.45.5 [MPLS: Labels 502/703 Exp 0] 108 msec 132 msec 84 msec

  4 78.78.78.7 [MPLS: Label 703 Exp 0] 120 msec 76 msec 52 msec

  5 78.78.78.8 152 msec *  220 msec

同理R6

数据层面已经解决,总结一下:

1.两个路由反射器要互通

运行IPV4的BGP,通告接口Lo 0

2.解决顶层标签的问题

在ASBR上,把BGP路由redistribute进IGP

3.解决两个ASBR边界路由器的链路上标签的问题

        IPv4 BGP+ send-label

4.数据面路径最优的问题

         next-hop-unchanged

下面是一些优化的问题:

!把所有BGP路由重发布进IGP,这种不行!

可以采用BGP community的方式来控制路由

R2和R3宣告Lo0的时候community 234:1

R6和R7宣告Lo0的时候community 567:1

3.把所有的BGP的路由都设成标签了,需要改进

     set mpls-label

      match mpls-label