BGP路径属性:

当一条BGP路由被BGP 路由器更新给其对等体时,这条BGP路由会携带多个路径属性值并传递给对等体。这些路径属性将影响BGP的路由优选,它们的存在使得BGP的路由策略能力异常强大。

常见的BGP路径属性:

Preferred-value、Local_Preference、AS_Path、Origin、MED、Next-Hop、Community、Atomic_Aggregate、aggregator

Preferred-Value

● 华为私有的路径属性,相当于路由的权重值,取值范围:0~65535,值越大,则路由越优先;
● Preferred-Vlaue只能在路由器本地配置,而且只影响本设备的路由优选,该属性不会传递给任何BGP对等体;
● 路由器本地始发的BGP路由默认的Preferred-Value为0,从其他BGP对等体学习到的路由默认Preferred-Value也为0
BGP的路径属性
如上图:在B上部署路由策略,将A传递过来的10.0.1.0/24路由的Preferred-Value值设定为100,而C传递过来的路由Preferred-Value值则保持缺省,也就是0。如此一来关于10.0.1.0/24,B会优选A传递过来的路由。

Local_Preference

● 本地优先级属性,用于告诉AS中的路由器,哪条路径是离开AS的首选路径;
● Local_Preference属性值越大则BGP路由越优,缺省的Local_Preference值为100;
● 该属性只能在IBGP对等体间传递,而不能传递给EBGP对等体;若EBGP对等体收到了该属性,就会触发Notifacation报文,造成会话中断;
●使用bgp default local-preference命令修改缺省Local_Preference值
BGP的路径属性
如上图:在A及C上分别对B部署路由策略,使得A发送给B的10.0.1.0/24路由的Local_Preference为200,而C则保持缺省,那么对于B而言,关于10.0.1.0/24,会优选A传递过来的BGP路由。

AS_Path

● 该属性记录了BGP路由前往目标网络时经过的AS号列表;
● 作用:确保路由在EBGP对等体之间传递无环;另外也作为路由优选的衡量标准之一;
● 路由在被通告给EBGP对等体时,路由器会在该路由的AS_Path中追加上本地的AS号;路由被通告给IBGP对等体时,AS_Path不会发生改变。
BGP的路径属性
BGP的路径属性
如上图:AS_Path的重要作用之一便是影响BGP的路由优选,R5同时从R2和R4学习到去往10.0.1.0/24网段的BGP路由,在其他条件相同的情况下,R5会优选R2通告的路由,因为该条路由的AS_Path属性值较短,也就是AS号的个数更少。

Origin

● 该属性标识了BGP路由的起源,如下表所示,根据路由被引入BGP的方式不同,存在三种类型的Origin;
● 当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按次顺序优选路由:IGP>EGP>Incomplete
BGP的路径属性

MED

● MED是一种度量值,用于向外部对等体指出进入本AS的首选路径,即当进入本AS的入口有多个时,AS可以使用MED动态地影响其他AS选择进入的路径;
● MED属性值越小则BGP路由越优;
● MED主要用于在AS之间影响BGP的选路。MED被传递给EBGP对等体后,对等体在其AS内传递路由时,携带该MED值,但将路由传递给其EBGP对等体时,缺省不会携带MED属性。
BGP的路径属性
如上图:在A、B上部署策略,使得A通告给C的BGP路由1.1.1.0/24的MED值为10,而B通告的1.1.1.0/24路由的MED值为20,当其他条件相同时,C将优选A传递过来的BGP路由。

注意:
BGP的路径属性
MED的默认操作:
BGP的路径属性
● 如果路由器通告IGP学习到一条路由,并通告network或import-route的方式将路由引入BGP,产生的BGP路由的MED值将继承该路由在IGP中的mertic。例如上图中如果R2通告OSPF学习到了11.1.1.0/24的路由,并且该路由在R2的全局路由表中OSPF Cost=100,那么当R2将路由network进BGP后,产生的BGP路由的MED值为100.
● 如果路由器将本地直连路由和本地静态路由通过network或import-route的方式引入BGP,那么这条BGP的MED为0,因为直连路由和静态路由的cost=0.

BGP的路径属性
● 如果路由器通过BGP学习到其他对等体传递过来的一条路由, 那么将路由更新给自己的EBGP对等体时,默认不携带MED,这就是“MED不会跨AS传递"。例如在上图中,R2将携带MED属性的BGP路由传递给R3,则R3将该路由传递给R4时,不会携带MED;
● 可以使用default med命令修改缺省的MED值,default med命令只对本设备上用import-route命令引入的路由和BGP的聚合路由生效。例如在R2上配置default med 999,那么R2通过import-route及aggregate命令产生的路由传递给R3时,路由携带的MED为999.

Next_Hop

● 该属性用于指定到达目标网络的下一跳地址;
● 当路由器学习到BGP路由后,需对BGP路由的Next_Hop属性值进行检查,该属性(IP地址)必须在本地路由可达,如果不可达,则这条BGP路由不可用;
● EBGP之间传递时,路由器将BGP路由通告给自己的EBGP对等体时,将该路由的Next_Hop设置为自己的更新源地址;
● IBGP之间传递时,会保持路由的Next_Hop属性值不变;
● 修改本地为更新源地址,命令:peer x.x.x.x next-hop-local

Next_Hop的缺省操作:
BGP的路径属性
B将路由100.100.100.0/24传递给A,Next_Hop为10.1.123.2;
A将路由100.100.100.0/24传递给C。此时Next_Hop保持不变;
原因:如果路由器收到某条BGP路由,该路由的Next_Hop地址值与EBGP对等体(更新对象)同属一个网段,那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体。

Community

● 该属性是一种路由标记,用于简化路由策略的执行;
● 可以将某些路由分配一个特定的Community属性值,之后就可以基于Community值而不是网络号/掩码信息来抓取路由并执行相应的策略了。
BGP的路径属性
AS100内有大量的路由被引入BGP,这些路由分别用于生产及办公网络。现在AS200的BGP路由需要分别针对这些路由执行不同的策略,如果使用ACL、ip prefix这样的工具,效率非常低。
有了Community属性,我们可以为不同种类的路由打上不同的Community属性值,这些属性值会随着BGP路由更新给AS200,那么在AS200内的BGP路由器上,只需要根据Community属性值来执行差异化的策略即可,而不用去关心具体的路由前缀。

Community:no-advertise

BGP的路径属性
如果路由器收到一条携带Community属性的BGP路由,且其中包含no-advertise属性值,那么该条路由将不能传递给任何其他BGP对等体。在本例中,R2不会将1.1.1.0/24路由再通告给自己任何BGP对等体,也就是路由只能自己用。

Community:no-export

BGP的路径属性
如果路由器收到一条携带Community属性的BGP路由,且其中包含no-export属性值,那么该条路由将不能再传递给任何其他EBGP对等体(联邦EBGP对等体除外)
在本例中,R2不会将1.1.1.0/24路由再通告给EBGP对等体R6,但是依然会传递给联邦EBGP对等体R4。

Community:no-export-subconfed
BGP的路径属性
如果路由器收到一条携带Community属性的BGP路由,且其中包含no-export-subconfed属性值,那么该条路由将不能再传递给任何其他EBGP对等体(包括联邦EBGP对等体)
在本例中,R2不会将1.1.1.0/24路由再通告给EBGP对等体R6,以及联邦EBGP对等体R4.

Atomic_Aggregate及aggregator

BGP的路径属性
R3上对明细路由进行汇总,汇总成:172.16.0.0/16,汇总路由丢失明细路由的路径属性,需要给下游对等体告警,并提示”汇总点“及汇总地AS。

相关文章: