BGP属性

364 阅读7分钟

路径属性

  • 任何一条BGP路由都拥有多个路径属性
  • 当路由器将BGP路由通告给它的对等体时,一并被通告的还有路由所携带的各个路径属性
  • BGP的路径属性将影响路由选路

路径属性分类

  • 公认属性是所有BGP路由器都必须能够识别的属性,分为两类
    • 公认必遵(Well-known Mandatory):必须包括在每个Update消息里
    • 公认任意(Well-known Discretionary):可能包括在某些Update消息里
  • 可选属性不需要都被BGP路由器所识别,分为两类
    • 可选过渡(Optional Transitive):BGP设备不识别此类属性依然会接受该类属性并通告给其他对等体
    • 可选非过渡(Optional Non-transitive):BGP设备不识别此类属性会忽略该属性,且不会通告给其他对等体

image.png

公认必遵

Origin
起源名称标记描述
IGPi如果路由是由始发的BGP路由器使用network命令注入到BGP的,那么该BGP路由的origin属性为IGP
EGPe如果路由是通过EGP学习到的,那么该BGP路由的origin属性为EGP
Incomplete?如果路由是通过其他方式学习到的,则origin属性为Incomplete(不完整的)。例如通过import-route命令引入到BGP的路由
  • 当去往同一个目的地存在多条不同的origin属性的路由时,在其他条件都相同的情况下,BGP将按照如下顺序优选路由:IGP>EGP>Incomplete
AS_Path

image.png

  • 该属性为公认必遵属性,是前往目标网络的路由经过的AS号列表
  • 作用:确保路由在EBGP对等体之间传递无环路;另外也作为路由优选的衡量标准之一(AS号个数越少,越优先)
  • 路由在传递给EBGP对等体时,路由器会在该路由的AS_Path中追加上本地的AS号;传递给IBGP对等体时,AS_Path不会发生改变

两种AS_Path类型

AS_SEQENCE

image.png

AS_SET

image.png

修改AS_Path三种方式
//additive
apply as-path 300 additive//将300添加进AS_Path

//overwrite
apply as-path 400 overwrite//将已经AS_Path值替换成新的值

//none overwrite
apply as-path none overwrite//将已经AS_Path的值清空
Next_hop
  • 当路由器学习到BGP路由后,需要对BGP路由的Next_hop属性值进行检查,该属性值(IP地址)必须在本地路由可达,如果不可达,则这条BGP路由不可用
  • 不不同的场景中,设备对BGP路由的缺省Next_hop属性值的设置规则如下:
    • 路由器将BGP路由通告给自己的EBGP对等体时,将该路由的Next_hop设置为自己的更新源IP地址
    • 路由器在收到EBGP对等体所通告的BGP路由后,在将路由传递给自己的IBGP对等体时,会保持路由的Next_hop属性值不变
    • 如果路由器收到某条BGP路由,该路由的Next_hop属性值与EBGP对等体(更新对象)同属一个网段,那么该条路由的Next_hop地址将保持不变并传递给它的BGP对等体,如下图:

image.png

公认任意

Local_Preference

image.png

  • Local_Preference指示AS中的路由器,哪条路径优先传输对端路由
  • Local_Preference属性值越大则BGP路由越优先,缺省的Local_Preference值为100
  • 该属性只能被传递给IBGP对等体,而不能传递给EBGP对等体
Local_Preference注意事项
  • Local_Preference属性只能在IBGP对等体间传递(除非做了策略,否则Local_Preference值在IBGP对等体间传递过程中不会丢失,比如通过RR反射给另外一台路由器,也会带着Local_Preference),而不能在EBGP对等体间传递,如果在EBGP对等体间收到的路由的路径属性中携带了Local_Preference,则会进行错误处理
  • 可以在发送路由器做Local_Preference属性值,也可以在接收路由器做Local_Preference属性值,出入方向都可以
  • 使用bgp default local-preference命令修改缺省Local_Preference值,该值缺省为100
  • 本地使用network命令及import-route命令引入的路由,Local_Preference为缺省值100,并能在AS内向其他IBGP对等体传递,传递过程中除非受路由策略影响,否则Local_Preference不变
Atomic_aggregate

image.png

可选过渡

Aggregator
Community
  • 可以将某些路由分配一个特定的Community属性值,之后就可以基于Community值而不是网络前缀/掩码信息来匹配路由并执行相应的策略
团体属性名称团体属性号说明
Internet0(0x00000000)设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。缺省时,所有的路由都属于Internet团体
No_Advertise4294967042(0xFFFFFF02)设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由
No_Export4294967041(0xFFFFFF01)设备收到具有此属性的路由后,将不向AS外发送该路由
No_Export_Subconfed4294967043(0xFFFFFF03)设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS(联盟)发送此路由
Community属性格式

image.png Community属性值长度为32bit,使用两种形式呈现:

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

可选非过渡

MED

image.png

  • MED(Multi-Exit Discriminator,多出口鉴别器),是一种度量值,用于向外部对等体指出进入本AS的首选路径
  • MED属性值越小则BGP路由越优先
  • MED主要用于在AS之间影响BGP的选路,MED被传递给EBGP对等体后,对等体在其AS内传递路由时,携带该MED值,但将路由再次传递给其它EBGP对等体时,缺省不会携带MED属性
MED注意事项
  • 缺省情况下,路由器只比较来自同一相邻AS的BGP路由的MED值,如果去往同一个目的地的两条路由来自不同的相邻AS,则不进行MED值比较
  • 一台BGP路由器将路由通告给EBGP对等体时,是否携带MED属性,需要根据以下条件进行判断(不对EBGP对等体使用策略的情况下):
    • 如果该BGP路由是本地始发(本地通过network或者import-route命令引入)的,则缺省携带MED属性发送给EBGP对等体(案例一)
    • 如果该BGP路由是从BGP对等体学习到,那么该路由传递给EBGP对等体时缺省不会携带MED属性(案例二)
    • 在IBGP对等体之间传递路由时,MED值会被保留并传递,除非部署了策略,否则MED值在传递过程中不发生改变也不会丢失
案例一

image.png

  • 如果路由器通过IGP学习到一条路由,并通过network或者import-route的方式将路由引入BGP,产生的BGP路由的MED值继承路由在IGP中的metric。如图,若R2通过OSPF学习到10.0.1.0/24路由,并且该路由在R2的全局路由表中OSPF cost=100,那么当R2将该路由network进BGP后,产生的BGP路由的MED值为100
  • 如果路由器将本地直连、静态路由通过network或者import-route的方式引入BGP,那么这条BGP路由的MED为0,因为直连、静态路由cost为0
案例二

image.png

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

特有属性

Preferred-value

image.png

  • Preferred-value(协议首选值)是华为设备的特有属性,该属性仅在本地有效。当BGP路由表中存在到达相同目的地址的路由时,将优先选择Preferred-value值高的路由
  • 取值范围:0-65535;该值越大,则路由越优先
  • Preferred-value只能在路由器本地配置,且只影响本设备的路由优选。该属性不会传递给任何BGP对等体