天天看点

CCNP15-BGP增强零、BGP的路由黑洞一、BGP的宣告问题二、关闭自动汇总三、BGP的认证四、BGP邻居关系重置五、查看收发的信息六、BGP的聚合(汇总)七、BGP的peer-group

文章目录

  • 零、BGP的路由黑洞
    • 1,下一跳不可达
    • 从而导致的路由黑洞
    • 2,同步问题
  • 一、BGP的宣告问题
  • 二、关闭自动汇总
  • 三、BGP的认证
  • 四、BGP邻居关系重置
  • 五、查看收发的信息
  • 六、BGP的聚合(汇总)
    • 1,汇总为防环路由,然后宣告
    • 2,正常的聚合
    • 3,聚合其他AS的路由
  • 七、BGP的peer-group
CCNP15-BGP增强零、BGP的路由黑洞一、BGP的宣告问题二、关闭自动汇总三、BGP的认证四、BGP邻居关系重置五、查看收发的信息六、BGP的聚合(汇总)七、BGP的peer-group

零、BGP的路由黑洞

1,下一跳不可达

1,直连路由和出接口写法的静态路由被network通告时的下一跳属性为0.0.0.0

比如R1通告自己的环回(直连),下一跳属性为0.0.0.0

R1#sho ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.0/24       0.0.0.0                  0         32768 i
           

比如R1通告一条出接口写法的静态路由,下一跳属性为0.0.0.0

R1(config)#ip route 100.1.1.0 255.255.255.0 serial 1/1
R1(config)#router bgp 1
R1(config-router)#network 100.1.1.0 mask 255.255.255.0
R1(config-router)#en
R1#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.0/24       0.0.0.0                  0         32768 i
*> 100.1.1.0/24     0.0.0.0                  0         32768 i
           

2,下一跳写法的静态路由和动态路由被network通告时的下一跳属性为这条路由的下一跳地址

R1(config)#ip route 200.1.1.0 255.255.255.0 12.1.1.2
R1(config)#router bgp 1
R1(config-router)#network 200.1.1.0 mask 255.255.255.0
R1(config-router)#en 
R1#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.0/24       0.0.0.0                  0         32768 i
*> 200.1.1.0        12.1.1.2                 0         32768 i
           

3,EBGP邻居传路由会自动修改下一跳属性为自己,IBGP邻居传路由不改变下一跳属性

比如,R1和R2为EBGP邻居,R1发送给R2的1.1.1.0/24路由到R2时,下一跳属性为自己的更新源地址

R2#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
r> 1.1.1.0/24       1.1.1.1                  0             0 1 i
           

而R2传给自己的IBGP邻居R4时,下一跳属性不变,因为AS-BY-AS规则,其下一跳为上一个AS的边界

R4#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
* i1.1.1.0/24       1.1.1.1                  0    100      0 1 i
           

这也是为什么R4路由器不把这条路由加表的原因:下一跳不可达

我们将R2传给R4时把下一跳属性改为自己,R4就会加表

R2(config)#router bgp 234
R2(config-router)#neighbor 4.4.4.4 next-hop-self 

R4#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
*>i1.1.1.0/24       2.2.2.2                  0    100      0 1 i
           

MA网络中的下一跳问题

CCNP15-BGP增强零、BGP的路由黑洞一、BGP的宣告问题二、关闭自动汇总三、BGP的认证四、BGP邻居关系重置五、查看收发的信息六、BGP的聚合(汇总)七、BGP的peer-group

R1,R2,R3连接到同一个MA网络,R1在一个AS内,R2、R3在一个AS内,并且通过物理接口建立邻居

R3把一条路由A传递给ibgp邻居R2,R2把路由传递给ebgp邻居R1,同一修改下一跳属性为自己

那么数据从R1到达路由A时,一般来说,R1把数据给R2,R2把数据给R3,这显示多走了

那么,在此MA网络中,bgp协议利用icmp重定向,数据从R1到达A路由时的下一跳属性直接改为R3,

即,数据直接从R1到达R3。也就是说这种情况下,R1到达A路由的下一跳地址不是R2,而是R3.

从而导致的路由黑洞

R5已经将1.1.1.0/24加表,我们在R5上宣告自己的环回,并在R4上对R2修改下一跳属性为自己,那么路由R5传给R4,R4传给R2,R2传给R1,R1加表

R5(config)#router bgp 5
R5(config-router)#network 5.5.5.0 mask 255.255.255.0

R4(config)#router bgp 234
R4(config-router)#neighbor 2.2.2.2 next-hop-self 
           

那么我们在R1上用R1的环回pingR5的环回,路由全齐,但是数据层面不通

R1#sho ip bgp 
*> 1.1.1.0/24       0.0.0.0                  0         32768 i
*> 5.5.5.0/24       2.2.2.2                                0 234 5 i
R1#ping 5.5.5.5 source 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 5.5.5.5, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1 
.....
Success rate is 0 percent (0/5)
           

这是因为,R3上没有去往5.5.5.5和1.1.1.1的路由,数据到达R3之后便会被R3丢弃,这就是bgp的路由黑洞

因为BGP可以非直连建立邻居关系,故可能导致路由条目通过TCP的单播会话穿越未运行BGP协议的设备传递到BGP邻居;导致路由表显示可达,但数据层面在进入AS内部后,未运行BGP协议的设备将无法转发流量---控制层面可达,数据层面不可达

解决办法:

1、全连的BGP邻居关系,所有设备运行BGP

即在一个AS内,每一个路由器都要和其他的路由器建立ibgp邻居关系,导致建邻过多,过于麻烦

比如这里的R2和R3建邻,R3和R4建邻,R2和R4建邻,这样R2,R3,R4的bgp路由表才会齐全(由于ibgp水平分割,R3从R2学习到的路由不会传给R4)

2、将BGP路由重发布到IGP’

比如这里,在R2上将bgp路由重发布进eigrp中,那么R3就有了到达1.1.1.0/24的路由。

注意:默认只能将ebgp邻居学到的路由和network通告的路由重发布到igp中

3、(推荐)MPLS—多协议标签交换

后续讲到。

2,同步问题

通过ibgp邻居学习到的路由,必须通过IGP协议也学习到,否则路由不加表,避免了路由黑洞,该方法现下已经不可取,建议在低版本设备中直接关闭同步

比如R3也运行BGP,R3通过R2学习到了1.1.1.0/24的路由,但是R3没有通过igp协议学习到,那么R3就不会加表这条路由,从而避免了路由黑洞。

一、BGP的宣告问题

若BGP协议宣告的路由条目,非本地直连路由,而是通过其他协议学习,那么在宣告后,条目将携带本地到达这些网段的下一跳和度量值;

度量问题:R2与AS 1为直连的ebgp邻居关系,在宣告时,将携带本地到达这些目标的度量;该度量在进入AS 1后一直存在且不再变化,意义在于便于AS1内部BGP设备对R2所在AS合理的选路;

若R2将该条目传递给本地的IBGP邻居R4,R4在将其传递到R5所在的AS 5时将度量归0,因为该度量并不是R4到达目标的度量值;故为了AS 5的选路准确,建议R4同时宣告该路由,来携带R4到达目标的度量。

下一跳问题:接收到的BGP路由条目中,若下一跳地址为本地,将拒绝接收该条目;意义在于同一AS内部的IBGP邻居间减少无用路由条目的记录,但要求所有存在ebgp邻居的设备宣告本AS路由,同时修改下一跳属性为本地的行为 仅针对其他AS路由进行,打破IBGP水平分割;

总结:所有存在EBGP邻居关系的BGP路由器,均需要本地AS的路由,来携带自己到达目标的度量值;

二、关闭自动汇总

仅针对从IGP重发布到BGP的路由条目;

auto-summary 不携带路由条目中的度量、下一跳、掩码

no auto-summary 携带度量、下一跳、度量

携带下一跳和度量的意义与上面的宣告问题规则完全一致;故一旦使用重发布,建议在所有存在EBGP邻居关系的BGP设备进行;

宣告就是逐条的重发布,重发布就是批量的宣告;两者所产生的路由,仅起源属性不同;

三、BGP的认证

R2(config-router)#neighbor 4.4.4.4 password cisco
R4(config-router)#neighbor 2.2.2.2 password cisco
           

认证基于邻居之间,且仅支持MD5,BGP认证信息出现在TCP报文头部

四、BGP邻居关系重置

1,硬性重置

断开TCP的会话连接,重新建立BGP邻居,针对所有策略生效

R1#clear ip bgp *
R1#clear ip bgp 2.2.2.2  //仅和某个邻居进行硬重启
           

2,软性重置

不断开TCP会话连接,不断开BGP邻居,建议在out方向实施

R1#clear ip bgp * soft
R1#clear ip bgp 2.2.2.2 soft out  仅与某个邻居进行软重启
           

五、查看收发的信息

查看本地发送给该邻居的路由信息

R1#sho ip bgp neighbors 2.2.2.2 advertised-routes

默认没有专门存储某邻居发送过来的路由信息表格,需要先定义独立存储空间

R1(config)#router bgp 1

R1(config-router)#neighbor 2.2.2.2 soft-reconfiguration inbound //配置针对该邻居发送过来的路由信息空间;建议在查看完所有信息后,删除该空间(no掉)

才能查看本地从该邻居处学习到的路由信息

R1#sho ip bgp neighbors 2.2.2.2 received-routes

六、BGP的聚合(汇总)

1,汇总为防环路由,然后宣告

BGP宣告特点,必须宣告路由表中的条目,宣告时必须和条目的网络号完全一致,无论条目的产生方式,利用BGP的宣告特点,BGP协议可以宣告本地路由表中的任意路由,且在宣告时仅宣告网络号,不携带下一跳或出接口,故在更新源设备上,不去逐一宣告明细路由,而是先编辑到达汇总网段空接口防环路由,然后使用BGP将该空接口路由的目标网络号进行宣告,最后实现汇聚汇总的效果;

这里在R1上创建几个环回,然后写指向null 0 的防环路由,再把这条路由宣告进bgp

R1(config)#int lo1
R1(config-if)#ip address 10.1.1.1 255.255.255.0
R1(config-if)#int lo2                          
R1(config-if)#ip address 10.1.2.1 255.255.255.0
R1(config-if)#int lo3                          
R1(config-if)#ip address 10.1.3.1 255.255.255.0
R1(config-if)#exi
R1(config)#ip route 10.1.0.0 255.255.252.0 null 0
R1(config)#router bgp 1
R1(config-router)#network 10.1.0.0 mask 255.255.252.0 
R1(config-router)#en
R1#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.0/24       0.0.0.0                  0         32768 i
*> 5.5.5.0/24       2.2.2.2                                0 234 5 i
*> 10.1.0.0/22      0.0.0.0                  0         32768 i

R2#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
r> 1.1.1.0/24       1.1.1.1                  0             0 1 i
*>i5.5.5.0/24       4.4.4.4                  0    100      0 5 i
*> 10.1.0.0/22      1.1.1.1                  0             0 1 i
           

注意:这里bgp中,宣告汇总路由,并不会抑制明细路由,若此时需要在发送聚合条目的同时再发送部分明细路由,直接对明细路由进行宣告即可

2,正常的聚合

先逐条宣告明细路由,然后再进行聚合配置;正常聚合配置后,会自动生成空接口防环路由;

R1(config)#router bgp 1
R1(config-router)#network 10.1.1.0 mask 255.255.255.0
R1(config-router)#network 10.1.2.0 mask 255.255.255.0
R1(config-router)#network 10.1.3.0 mask 255.255.255.0
R1(config-router)#aggregate-address 10.1.0.0 255.255.252.0 summary-only 
//若不加 summary-only 那么聚合路由和明细路由会同时发送
R2#sho ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
r> 1.1.1.0/24       1.1.1.1                  0             0 1 i
*>i5.5.5.0/24       4.4.4.4                  0    100      0 5 i
*> 10.1.0.0/22      1.1.1.1                  0             0 1 i
           

suppress-map

首先让路由器将明细和聚合条目同时发出,然后使用抑制列表,限制不愿意共享的明细

R2#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
r> 1.1.1.0/24       1.1.1.1                  0             0 1 i
*>i5.5.5.0/24       4.4.4.4                  0    100      0 5 i
*> 10.1.0.0/22      1.1.1.1                  0             0 1 i
*> 10.1.1.0/24      1.1.1.1                  0             0 1 i
*> 10.1.2.0/24      1.1.1.1                  0             0 1 i
*> 10.1.3.0/24      1.1.1.1                  0             0 1 i

R1(config)#access-list 1 permit 10.1.1.0
R1(config)#route-map ccnp permit 10
R1(config-route-map)#match ip address 1
R1(config-route-map)#exi
R1(config)#router bgp 1
R1(config-router)#aggregate-address 10.1.0.0 255.255.252.0 suppress-map ccnp
R1(config-router)#do clear ip bg * so o

R2#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
r> 1.1.1.0/24       1.1.1.1                  0             0 1 i
*>i5.5.5.0/24       4.4.4.4                  0    100      0 5 i
*> 10.1.0.0/22      1.1.1.1                  0             0 1 i
*> 10.1.2.0/24      1.1.1.1                  0             0 1 i
*> 10.1.3.0/24      1.1.1.1                  0             0 1 i
           

注:因为调用时为抑制列表,故在抓取和策略时允许的网段,最终反而被抑制传输,所以route-map不能加空语句允许所有

route-map

聚合过程中对路由属性的改变,比如,对聚合的路由,将其起源属性从i改为?

R1(config)#route-map cc permit 10
R1(config-route-map)#set origin incomplete 
R1(config-route-map)#exi
R1(config)#router bgp 1
R1(config-router)#aggregate-address 10.1.0.0 255.255.252.0 route-map cc
R1(config-router)#en
R1#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.0/24       0.0.0.0                  0         32768 i
*> 5.5.5.0/24       2.2.2.2                                0 234 5 i
*> 10.1.0.0/22      0.0.0.0                            32768 ?
           

注:不写match就是match所有

as-set

聚合其他AS的路由时默认会丢弃一些属性,包括as-path,有可能这些聚合的路由会回到其初始的AS中,导致环路,在聚合时加上as-set则会还原这些属性,避免环路。

3,聚合其他AS的路由

聚合其他AS的路由时默认会丢弃一些属性,包括as-path,有可能这些聚合的路由会回到其初始的AS中,导致环路,在聚合时加上as-set则会还原这些属性,避免环路。

比如这里可以在AS234上对AS1的路由进行聚合

R2#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
r> 1.1.1.0/24       1.1.1.1                  0             0 1 i
*>i5.5.5.0/24       4.4.4.4                  0    100      0 5 i
*> 10.1.1.0/24      1.1.1.1                  0             0 1 i
*> 10.1.2.0/24      1.1.1.1                  0             0 1 i
*> 10.1.3.0/24      1.1.1.1                  0             0 1 i
R2(config)#router bgp 234
R2(config-router)#aggregate-address 10.1.0.0 255.255.252.0        
R2(config-router)#en
R2#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
r> 1.1.1.0/24       1.1.1.1                  0             0 1 i
*>i5.5.5.0/24       4.4.4.4                  0    100      0 5 i
*> 10.1.0.0/22      0.0.0.0                            32768 i
*> 10.1.1.0/24      1.1.1.1                  0             0 1 i
*> 10.1.2.0/24      1.1.1.1                  0             0 1 i
*> 10.1.3.0/24      1.1.1.1                  0             0 1 i
           

可以看到聚合后的路由丢失了部分属性,包括as-path

R2(config)#router bgp 234
R2(config-router)#aggregate-address 10.1.0.0 255.255.252.0 as-set 
R2(config-router)#en
R2#sho ip bgp 
   Network          Next Hop            Metric LocPrf Weight Path
r> 1.1.1.0/24       1.1.1.1                  0             0 1 i
*>i5.5.5.0/24       4.4.4.4                  0    100      0 5 i
*> 10.1.0.0/22      0.0.0.0                       100  32768 1 i
*> 10.1.1.0/24      1.1.1.1                  0             0 1 i
*> 10.1.2.0/24      1.1.1.1                  0             0 1 i
*> 10.1.3.0/24      1.1.1.1                  0             0 1 i
           

加上as-set之后属性还原

七、BGP的peer-group

作用:当需要和多个邻居进行配置时,用于简化命令

R1(config)#router bgp 1 R1(config-router)#neighbor xxx peer-group

创建名为xxx的peer-group

R1(config-router)#neighbor xxx remote-as 2 定义该peer-group的内容

R1(config-router)#neighbor xxx update-source lo0

R1(config-router)#neighbor xxx ebgp-multihop

针对各个邻居调用 R1(config-router)#neighbor 2.2.2.2 peer-group xxx

R1(config-router)#neighbor 3.3.3.3 peer-group xxx

R1(config-router)#neighbor 4.4.4.4 peer-group xxx

注:其缺陷在于,针对某个邻居一旦调用到了peer-group中,那么部分命令将无法给该邻居单独配置,只能设定于peer-group中;

继续阅读