12、BGP路径属性

路径属性分类

公认属性:所有BGP路由器都能够识别

  • 公认必遵:包括再每个Update消息里
  • 公认任意:可能包括再某些Update消息里

可选属性:许需要都被BGP路由器所识别

  • 可选过度:即使BGP设备不识别此类属性依然会接受该类属性并通告给其他对等体。
  • 可选非过度:如果BGP设备不识别此类属性,则不会通告给其他对等体。

image-20250228090731527

公认必遵

AS_Path

该属性为公认必遵属性,是前往目标网络的路由经过的AS号列表;

作用:确保路由在EBGP对等体之间传递无环;另外也作为路由优选的衡量标准之一;

  • AS_Path防止环路:当接受到的路由的AS_Path中存在自身的AS号时,不接收该路由。
  • 再两条路由其他条件相同的情况下,会选择AS_Path属性值较短的路由,即经过的AS较少的路由。

路由在被通告给EBGP对等体时,路由器会在该路由的AS_Path中追加上本地的AS号;通告给IBGP对等体时,则不会发生改变。

image-20250228091303039

路由经过的AS的顺序,是从AS_Path从右往左的顺序。

AS_Path类型:

  • 默认是AS_SEQENCE类型,是一个有序的列表。
  • AS_SET类型则是无序的集合。

image-20250228091852525

修改AS_Path:

使用Route-Policy修改BGP路由的AS_Path属性时,可以使用以下三种方式:

image-20250228092317350

Origin

Origin标识了BGP路由的起源。

起源名称 标记 描述
IGP i 如果路由是由始发的BGP路由器使用network命令注入到BGP的,那么该 BGP路由的Origin属性为IGP
EGP e 如果路由是通过EGP协议学习到的,那么该BGP路由的Origin属性为EGP
Incomplete ? 如果路由是通过其他方式学习到的,则Origin属性为lncomplete(不完整的)。例如通过import-route命令引l入到BGP的路由

在其他条件都相同的情况下,BGP将按如Origin的下顺序优选路由:IGP > EGP > Incomplete。

Next_Hop

用于指定到达目标网络的下一跳地址。

当路由器学习到BGP路由后,需对BGP路由的Next_Hop属性值进行检查,该属性值(IP地址)必须在本地路由可达,如果不可达,则这条BGP路由不可用。

设备对BGP路由的缺省Next_Hop属性值的设置规则如下:

  1. 向EBGP对等体发布路由时,把Next_Hop设置为本地与对端建立BGP邻居关系的接口地址(即自己的TCP连接源地址)。
  2. 将本地始发的路由发布给IBGP对等体时,把Next_Hop设置为本地与对端建立BGP邻居关系的接口地址。
  3. 将从EBGP收到的路由传递给IBGP时,会保持下一跳属性不变。
  4. 收到某条路由,Next_Hop属性值与EBGP对等体(更新对象)同属一个网段,那么将保持Next_Hop不变,传递给EBGP。

image-20250228093754480

修改Next_Hop属性

image-20250228093906109

公认任意

Local_Preference

本地优先级属性,用于告诉AS中的路由器,哪条路径是离开本AS的首选路径。值越大越优,默认为100。

只能传递给IBGP,不能传递给EBGP对等体。

可以在AS边界路由器上使用Import方向的策略来修改Local_Preference属性值。也就是在收到路由之后,在本地为路由赋予Local_Preference。

可使用下面的命令修改缺省的Local_Preference值。

bgp default local-preference

路由器在向其EBGP对等体发送路由更新时,不能携带Local_Preference属性,但是对方接收路由之后,会在本地为这条路由赋一个缺省Local_Preference值(100),然后再将路由传递给自己的IBGP对等体。

本地使用network命令及import-route命令引入的路由, Local_Preference为缺省值100,并能在AS内向其他IBGP对等体传递。

可选过度

是一种路由标记,用于简化路由策略的执行。

可以将某些路由分配一个特定的Community属性值,之后就可以基于Community值而不是网络前缀/掩码信息来匹配路由并执行相应的策略了。

Community属性值长度为32bit,也就是4Byte。可使用两种形式呈现:

  • 十进制整数格式。
  • AA:NN格式,其中AA表示AS号,NN是自定义的编号。

image-20250301073635827

Community属性又分为自定义团体属性和公认团体属性。

RFC1997定义的公认Community属性:

image-20250301073815372

可选非过度

MED

MED(Multi-Exit Discriminator,多出口鉴别器)是可选非过渡属性,是一种度量值,用于向外部对等体指出进入本AS的首选路径,即当进入本AS的入口有多个时,AS可以使用MED动态地影响其他AS选择进入的路径。

MED属性值越小则BGP路由越优。

MED主要用于在AS之间影响BGP的选路。MED被传递给EBGP对等体后,对等体在其AS内传递路由时,携带该MED值,但将路由再次传递给其EBGP对等体时,缺省不会携带MED属性。

image-20250301074019012

缺省情况下,路由器只比较来自同一相邻AS的BGP路由的MED值,也就是说如果去往同一个目的地的两条路由来自不同的相邻AS,则不进行MED值的比较。

一台BGP路由器将路由通告给EBGP对等体时,是否携带MED属性,需要根据以下条件进行判断(不对EBGP对等体使用策略的情况下):

  1. 如果该BGP路由是本地始发(本地通过network或import-route命令引入)的,则缺省携带MED属性发送给EBGP对等体。
  2. 如果该BGP路由为从EBGP对等体学习到,那么该路由传递给EBGP对等体时缺省不会携带MED属性。
  3. 在IBGP对等体之间传递路由时,MED值会被保留并传递,除非部署了策略,否则MED值在传递过程中不发生改变也不会丢失。

MED的默认操作

如果路由器通过IGP学习到一条路由,并通过networkimport-route的方式将路由引入BGP,产生的BGP路由的MED值继承路由在IGP中的metric。

如果路由器将本地直连、静态路由通过networkimport-route的方式引入BGP,那么这条BGP路由的MED为0,因为直连、静态路由cost为0。

image-20250301074607059

可以使用default med命令修改缺省的MED值,default med命令只对本设备上import-route命令引入的路由和BGP的聚合路由生效。

Atomic_Aggregate和Aggregator

R3上通过aggregate命令将BGP路由10.0.1.0/24、10.0.2.0/24、10.0.3.0/24、10.0.4.0/24聚合成了10.0.0.0/16,并使用detail-suppressed抑制了明细路由的对外发布,R3只会将聚合后的BGP路由传递给R4,而不传递聚合前的明细路由。

Atomic_Aggregate(原子聚合)是一个公认自由决定属性,它只相当于一种预警标记,而并不承载任何信息。当路由器收到一条BGP路由更新且发现该条路由携带Atomic_Aggregate属性时,它便知道该条路由可能出现了路径属性的丢失,此时该路由器把这条路由再通告给其他对等体时,需保留路由的Atomic_Aggregate属性。另外,收到该路由更新的路由器不能将这条路由再度明细化。

另一个重要的属性是Aggregator(聚合者),这是一个可选传递属性,当路由聚合被执行时,执行路由聚合操作的路由器可以为该聚合路由添加Aggregator属性,并在该属性中记录本地AS号及自己的Router-ID,因此Aggregator属性用于标记路由聚合行为发生在哪个AS及哪台BGP路由器上。

image-20250301075321775

Preferred-Value

Preferred-Value(协议首选值)是华为设备的特有属性,该属性仅在本地有效。用于BGP路由优选。

取值范围:0~65535;该值越大,则路由越优先。

Preferred-Value只能在路由器本地配置,而且只影响本设备的路由优选。该属性不会传递给任何BGP对等体。

实验

实验目的:掌握如何修改BGP路由的下一跳属性,熟悉BGP AS_Path属性控制选路的应用场景。

image-20250303084254226

接口配置、ospf配置、BGP基本配置省略。

在R5中引入10.5.5.5/24网段:

bgp 300
network 10.5.5.5 24

查看各路由器的路由表:

R2的路由表如下,因为R2与R4是EBGP邻居,所以R4将路由传递给R2时会将下一跳改为自己(TCP连接源地址)。同时,path属性中记录了该条路由经过的AS。

image-20250303085138317

R3的路由表如下,下一跳是R5的tcp连接源地址。

image-20250303085156798

R1的路由表如下。可以看到,R1中有两条路由,但都不是可用路由,因为下一跳不可达。

BGP路由器将从EBGP收到的路由传递给IBGP邻居时不会改变下一跳地址。

*号表示有效路由,>表示最优路由。

image-20250303085437674

现在,在R2、R3中修改下一跳属性,将下一跳属性修改为自己的TCP连接源地址。

[R2-bgp]peer 1.1.1.1 next-hop-local
[R3-bgp]peer 1.1.1.1 next-hop-local

这样,当R2、R3收到来自EBGP的路由,要发给1.1.1.1时,就会将路由的下一跳修改为本地(与1.1.1.1建立邻居的TCP链接 源地址)

再次查看R1中的BGP路由表。

可以看到,两条路由都变得有效了。而之所以下一跳为3.3.3.3的路由被优选,是因为它的path属性最短(其他条件都相同)。

image-20250303085935687

posted @ 2025-05-28 11:55  最爱喝开水  阅读(48)  评论(0)    收藏  举报