BGP选路原则

先简单介绍BGP属性分为4类:(华为)

BGP选路原则
图中公认属性:所有BGP路由器都必须识别并支持的属性。

公认必遵: BGP的Update消息中必须包含的属性。(无论来自哪个厂商的属性都必包含的属性)

origin (起源)、AS-path,next-hop对端必须能够识别,且这些属性必须包含在update更新报文中

公认任意: 不必存在于BGP的Update消息中,可以根据需求自由选择的属性。

Local_Pref (本地优先级)、AtomicAggregate原子聚合,对端必须能够识别,但这些属性不一定会携带在update报文中.

图中可选属性: 不要求所有的BGP路由器都能够识别的属性。

可选过渡: BGP不能识别该属性,但可以接收该属性并将其发布给它的邻居的属性。

可选非过渡: BGP可以忽略包含该属性的消息并且不向它的邻居发布。

了解分类属性后,下面我们详细介绍一下BGP选路的细则:(以下规则按照数字顺序进行比较)

BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况
① 该路由是到达目的地的唯一路由,直接优选.
② 对到达同一目的地的多条路由,优选优先级最高的.
③ 对到达同一目的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的。
一般来说,BGP计算路由优先级规则如下:(更细的原则分为以下13条原则)
1 丢弃下一跳不可达的路由

#next_hop不可达直接丢弃,这是前提条件.

2 优选Preference_Value值(首选值)最高的路由(私有,本地有效) 默认情况下该值为0,越大越优先.

#设置该首选值后,不可以传给邻居,所以是本地有效./因为是华为私有,所以不能在不同厂商之间兼容.
修改命令:apply(需要做ACL route policy 配合)

3 优选本地优先级( Local_Pre)最高的路由(公认任意)

#Local-preference本地优先级:默认值100 ,越大越优先,IBGP邻居之间有效,只能在本AS内传播.
local-pre为空原因: (公认任意属性) ,由于Local_Pre属性仅在IBGP邻居之间有效,因此从EBGP邻居收到的update报文不携带local_pre值。因此从ebgp邻居收到的路由的local_pre值是空。

4 优选手动聚合>自动聚合>network>import>从对等体学到.

#字面理解即可,一般情况下用到的不多.

5 优选AS_Path短的路由(公认必遵)

#经过的AS号个数少越优先.具体配置如下:这里使用的是前缀列表过滤

6 起源类型Original |>E>?(公认必遵)

#IGP>EGP>?(引入的,未知的),incomplete是"未知的"

7 对于来自同-AS的路由,优选MED值小的。

#MED:Multi-Exit-Discriminator(多出口甄别器)默认值是0,越小越优先该属性仅在相邻两个AS直间传递用于判断流量进入AS时的最佳路由.
默认是比较同一个AS的,如果不是同一个AS则需要输入命令来进行换算比较.
当属性跨越EBGP时候需要做一个路由策略.(当apply时候,MED就是cost,直接apply cost即可)
MED值为空原因: (可选非过渡属性) ,在向EBGP邻居发送update更新时默认不携带MED属性,除非手动配置路由策略( route-policy )才会携带.

8 优选从EBGP学来的路由

#(EBGP>IBGP) 一般情况无法手动调整

9 优选AS内部IGP的Metric最小的路E

#可以理解为:到达下一跳的IGP开销

如果以上9条规则都一样,那么可以开启负载分担(开启后,只能在路由表中看到,BGP转发表中看不到) 如果不开启负载分担,那么BGP会一直比较到最后一条(13)规则,直至选出结果.

10 优选Cluster_List ( RR反射器)最短的路由

#前提是配置反射器.Cluster_list就是RR反射器上的router id,通过多个路由反射器的router id进行比较,(经过RR数量最少的)最短的路由胜出.

11 优选Orginator_ID(RR反射器)最小的路由

#前提是配置反射器.路由起源router id,当路由进入某个AS区域时候,比较起始的路由器router id.

12 优选Router_ID最小的路由器发布的路由

#如果不做反射器则,比较第12条,选择路由器最小的router id.

13 优选具有较小IP地址的邻居学来的路由

#最后比较IP地址,谁小用谁

总结:规则2 3 5 6 7是实际中比较常见的,其他通常不会被用到.

实际中根据表项进行记录比较容易,下图中的数字顺序就是一般情况我们判断优先的顺序。

BGP选路原则
以上省略了具体修改属性的配置,如有需要或指正可以留言。希望各位大神不吝赐教!