基于FRR全面解析BGP协议(二):BGP协议的路径属性

BGP协议的路径属性

当一条BGP路由被BGP路由器通告给其对等体时,这条BGP路由会携带多个路径属性值(Path Attributes)并传递给对等体。 这些路径属性,将影响BGP的路由优选,使得BGP的路由策略能力异常强大。

基于FRR全面解析BGP协议(二):BGP协议的路径属性_第1张图片

BGP路径属性分为公认属性和可选属性。公认属性是所有BGP协议实现必须都能正确识别的属性;可选属性是BGP协议实现可不支持的属性。公认属性又分为公认必遵和公认自决属性。公认必遵是在update报文中必须携带的属性;而公认自决并不要求必须包含在update报文中。可选属性分为可选传递和可选非传递。可选传递必须在报文接收到包含该属性的路由后,将属性传递给其他对等体;可选非传递即使在收到该属性的路由,可不支持也可不传递该属性给其他对等体。

Origin

Origin属于公认必遵属性,表示BGP路由的起源。根据路由被引入BGP的方式不同,存在三种类型的Origin:igp、egp和incomplete。当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按Origin:IGP > EGP > Incomplete的顺序优选路由。

名称 标记 描述
igp i 通过BGP network通告的路由
egp E 通过EGP这种早期的协议重发布而来
incomplete ? 通过import命令,从其他协议引入到BGP的路由

AS_Path

AS_Path属于公认必遵属性,是前往目标网络的路由经过的AS号列表,该属性有两个作用,一是确保路由在EBGP对等体之间传递不会出现环路;二是作为路由优选的衡量标准之一。路由在被通告给EBGP对等体时,路由器会在该路由的AS_Path中追加上本地的AS号;路由被通告给IBGP对等体时,AS-path不会发生改变。

基于FRR全面解析BGP协议(二):BGP协议的路径属性_第2张图片

AS_Path的重要作用之一便是影响BGP路由的优选,在上图中,R5同时从R2及R4学习到去往10.1.1.0/24网段的BGP路由,在其他条件相同的情况下,R5会优选R2通告的路由,因为该条路由的AS_Path属性值较短,也即AS号的个数更少。

AS_Path类型

在这里插入图片描述
AS_Path分为四种类型:AS_SET、AS_SEQUENCE、AS_CONFED_SEQUENCE和AS_CONFED_SET。

  • AS_SET指去往目标网络需要经过路径的无序AS号列表,一般用于指示汇总路由

  • AS_SEQUENCE指去往目标网络需要经过路径的有序AS号列表

  • AS_CONFED_SEQUENCE指去往目标网络需要经过路径的有序AS本地联邦号列表

  • AS_CONFED_SET指去往目标网络需要经过路径的无序AS本地联邦号列表

Next_hop

下一跳(Next_hop)属于公认必遵属性,用于指定到达目标网络的下一跳地址 。当路由器学习到BGP路由后,需对BGP路由的Next_hop属性值进行检查,该属性值(IP地址)必须在本地路由可达,如果不可达,则这条BGP路由不可用。

缺省情况下,路由器将BGP路由通告给自己的EBGP对等体时,将该路由的Next_hop设置为自己的更新源IP地址 ,但是如果路由的Next_Hop地址值与EBGP对等体(更新对象)同属一个网段,那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体

基于FRR全面解析BGP协议(二):BGP协议的路径属性_第3张图片

B将路由100.100.100.0/24传递给A,Next_Hop为10.1.123.2;
A将路由100.100.100.0/24传递给C,此时Next_Hop保持不变;

另外,在将路由传递给自己的IBGP对等体时,也会保持路由的Next_hop属性值不变 ,这就会出现一种情况,就是IBGP对等体与下一跳属性的IP地址网络不可达,为了避免出现这样的情况,可以通过next-hop-self变更next-hop属性。

基于FRR全面解析BGP协议(二):BGP协议的路径属性_第4张图片

Local-Preference

又叫本地优先级属性,属于公认自决属性,用于告诉AS中的路由器,哪条路径是离开AS的首选路径。

基于FRR全面解析BGP协议(二):BGP协议的路径属性_第5张图片

在A及C上分别对B部署路由策略,使得A发送给B的10.0.1.0/24路由的Local_Preference为200,而C则保
持缺省,那么对于B而言,关于10.0.1.0/24,会优选A传递过来的BGP路由。

缺省的Local_Preference值为100,Local_Preference属性值越大则BGP路由优先级越高。这里的Local指的是AS内部,因此该属性只能被传递给IBGP对等体,而不会传递给EBGP对等体。本地使用network命令引入、重发布引入和EBGP更新的路由可将该属性的默认值(100)发给IBGP对等体,FRR可通过bgp default local-preference来修改默认值,set local-preference可以为路由策略设置独立的Local-Preference。

Community

Community属于可选传递属性,是一种路由标记,类似于一种标签,能对路由进行分类,用于简化路由策略的执行。有了Community属性,我们可以为不同种类的路由打上不同的Community属性值,这些属性值会随着BGP路由更新给其他对等体,那么在其他对等体上,只需要根据Community属性值来执行差异化的策略即可。

Community属性值长度为32个比特,也就是4个字节,可用十进制表示,也常用(AS号:编号),其中AS号是高位2字节,编号是低位2字节。

FRR给出了Well-Known的Community值,具体可参考Community

Community 描述
no-advertise 路由不会传递给其他对等体
no-export 路由不会传递给EBGP对等体(联邦除外)
no-export-subconfed 路由不会传递给EBGP对等体(包括联邦)

MED

MED(Multi Exit Discriminator )属于可选非传递属性,用于向外部对等体指出进入本AS的首选路径,即当进入本AS的入口有多个时,AS可以使用MED动态地影响其他AS选择进入的路径。MED属性值越小则BGP路由越优。MED主要用于在AS之间影响BGP的选路。 MED被传递给EBGP对等体后,对等体在其AS内传递路由时,携带该MED值,但将路由传递给其EBGP对等体时,缺省不会携带MED属性。

基于FRR全面解析BGP协议(二):BGP协议的路径属性_第6张图片

在A、 B上部署策略,使得A通告给C的BGP路由1.1.1.0/24的MED值为10,而B通告的1.1.1.0/24路由的MED值为20。当其他条件相同时,C将优选A传递过来的BGP路由。缺省情况下,路由器只比较来自同一相邻AS的BGP路由的MED值,也就是说如果去往同一个目的地的两条路由来自不同的相邻AS,则不进行MED值的比较

#FRR使能不同AS的MED值比较
bgp always-compare-med

其他

  • ORIGINATOR_ID

    Originator_ID用于路由反射器,参考路由反射器Originator_ID

  • Cluster_list

    Cluster_list用于路由反射器,参考路由反射器Cluster_list

你可能感兴趣的:(FRR)