ibgp和ebgp的区分 ebgp option a_R3

还是这张图,R2,R3fa1/0shu同理R5,R7。

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

既然R3,R6要建立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
对于R5,R6,R7的路由没有最优,采用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
nolabel/603
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的路由在ASBR(R4,R5)上重分发进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次所以底层标签改变两次。
现在我打开R2R4和R5R7之间的接口!宣告进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直接从R6到R8,这样减少了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

https://blog.51cto.com/jiuyou/1254851