BGP 十一条选路原则与BGP路由传递的注意事项介绍

十一条选路规则

1.优选Preferred-Value 属性值最大的路由。

2.优选Local_Preference 属性值最大的路由。

3.本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的。

即本地产生的BGP路由更优先,而本地的路由又分为普通路由与聚合路由,其中聚合路由更优先。

4.优选AS_Path属性值最短的路由。

5.优选Origin属性最优的路由。Origin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete。

6.优选MED属性值最小的路由。

7.优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由)。

指学习到两条相同目的路由时,一条为IBGP路由,一条为EBGP路由,将优先选择EBGP路由。

8.优选到Next_Hop的IGP度量值最小的路由。

9.优选Cluster_List最短的路由。

扫描二维码关注公众号,回复: 15587962 查看本文章

经过反射簇次数最少的路由条目。

10.优选Router ID(Originator_ID)最小的设备通告的路由。

指学习到两条相同目的路由,其它属性一致,但通告的router-id(或反射后的路由Originator ID)不一致时,优先选择地址最小的通告者路由。

11.优选具有最小IP地址的对等体通告的路由。

在这里插入图片描述

选路规则口诀

1、在BGP路由选择中,如果存在多条路由的前8条规则相同,那么这些路由将会进行负载分担。

 前8条相同路由会负载分担,但默认负载分担的条目只有1条,故只看到一个下一跳。

 需要存在多个下一跳,需要在BGP模式中输入:

[实现IBGP路由负载分担]
maximum load-balancing ibgp 2

[实现EBGP路由负载分担]
maximum load-balancing 2

 虽然说前8条相同则在IBGP内负载,但对外EBGP不可能说存在两条相同的路由,故需要后3条进行选举出最优的路由传递给EBGP。

2、为了方便记忆这些规则可记忆该口诀:漂亮老男人(PL LAO MEN)

P=	preferred-value协议首选值
L=	Local_Preference本地优先级

L=	Local,本地始发路由的更优先
A=	AS_Path
O=	Origin起源

M=	Med值
E=	EBGP对等体优先于IBGP
N=	Next_Hop下一跳最小

BGP路由传递注意事项

1、建立邻居时,需要确保TCP可达

如何定义TCP可达?

两端都有对方的路由,中间设备无TCP过滤(TCP/179)

2、路由传递时,从IBGP邻居学习到的路由不会传递给IBGP邻居(水平分割机制,用来防止环路产生)

3、路由传递时,从EBGP邻居学习到的路由可以传递给其它EBGP邻居,也可以传递给IBGP邻居,但传递给IBGP邻居时,下一跳不变。

BGP在传递路由时,从EBGP邻居学习到的路由,发布给IBGP邻居时,下一跳不变。
【十大路径属性中Next_Hop缺省值定义提到】

为了解决EBGP下一跳不变,通过命令:

​ peer 邻居 next-hop-local

有下一跳改变,也有下一跳不改变:

​ peer 邻居 next-hop-invariable

4、在建立IBGP邻居时建议使用Loop环回口建立,保证网络的冗余性、可靠性。

避免使用物理接口建立邻居时,链路坏了还需要重新配置。

使用环回口建立邻居,如果一边不指定源环回口,一边指定源,结果还是会正常进行建立邻居的。

因为BGP只要建立起了一个TCP连接就能够建立起BGP邻居并传递路由。

在ENSP中,BGP建立双向邻居时,会产生两个TCP连接,但最终只会保留router-id大的一方发起的TCP连接。

但在实际环境中,BGP建立邻居产生的两个TCP连接,只会保留最后建立的TCP连接。

 关于BGP的TCP连接数量个人见解

  以IBGP使用环回口建立为例,如果双方路由器都相互指定环回口建立,那么在这个BGP对等关系中将会产生两条TCP连接。虽然最后会自动删除掉一条TCP连接,但这个过程还是消耗了设备与链路的一定资源。

 当网络存在多个邻居,重复如此建立两条TCP连接,又删除一条连接的动作,对设备的负担和链路的负担是直线上升的。

 为此,IBGP在使用环回口建立邻居时,进行单向的指定即可。

 这样只会建立一条TCP连接,同时也能正常的进行传递路由。

5、在建立EBGP邻居时一般使用直连接口建立,因为EBGP邻居建立时考虑到安全问题,默认数据包的TTL为1,只有直连链路会接收并处理该数据包,非直连链路不会处理该数据包(TTL归0)。

 如果通过环回口建立EBGP邻居,首先保证两台设备之间的环回口TCP可达,其次需要更改EBGP默认的TTL,才能让EBGP邻居之间通过环回口建立邻居关系。

1、EBGP邻居建立关系时,使用环回口建立:

​  peer 1.1.1.1 connect-interface loopback0

2、设置TTL最大跳数:

​  peer 1.1.1.1 ebgp-max-hop 100

6、运行BGP的设备,默认情况下同一条路由有多个下一跳时,只会将BGP路由表中最优且有效的路由,将进路由表中(即BGP路由条目左侧有*>)。

若该路由条目没有*也没有>,表示该路由条目并非最优的、非有有效的,自身不计算该路由同时也不会传递给其它邻居。(BGP只传递最优路由,只计算有效路由)

在这里插入图片描述

7、BGP的同步机制

 同步机制,指路由器学习到一条IBGP路由时,默认不能将该路由通告给其它BGP对等体。

 除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条IBGP路由,也就是要求IBGP路由与IGP路由同步时才能将进行传递给其它BGP邻居。

 同步规则主要用于规避BGP路由黑洞问题。

原因:我学习到该IBGP路由,我并不一定知道去往该路由的下一跳(学习到的IBGP路由并不一定有效)故不会使用且不会通告给其它IBGP邻居,如果我配置的IGP知道路由下一跳的话,我才就能使用和通告该路由。

扩展华为设备默认禁止BGP路由同步机制,故学习到的IBGP路由可以传递给其它邻居。即使说该IBGP的下一跳不可达,也会进行传递出去。

关于BGP的一些疑惑记录

1、IBGP进行跨设备建立时,会产生BGP路由黑洞,那么如何解决BGP路由黑洞呢?

1、建立BGP全互联,BGP两两建立,但手动建立的命令数量过大。

2、配置BGP反射器,大减少命令配置。会打破原先的水平分割机制,但也引入其它防环机制(cluster-list、Originator ID)。

3、还有后面会介绍到的MPLS标签交换

2、跨设备配置BGP的好处?

减轻中间网络设备的负担

3、为什么说BGP一般传业务路由,不会传递邻居的链路信息?

 假设两个EBGP邻居通过环回口建立建立邻居,必然需要提前配置去往对端环回口的静态路由(优先级60)。

 那么EBGP中发布环回口的话,EBGP路由优先级为255,很明显没有静态路由的优先,故BGP一般传业务不传建立邻居路由信息。

 IGBP建立发布也是一样的,底层的IGP路由肯定比IBGP的路由优先级高。

猜你喜欢

转载自blog.csdn.net/qq_45443704/article/details/129911306
BGP