路径属性
- 任何一条BGP路由都拥有多个路径属性
- 当路由器将BGP路由通告给它的对等体时,一并被通告的还有路由所携带的各个路径属性
- BGP的路径属性将影响路由选路
路径属性分类
- 公认属性是所有BGP路由器都必须能够识别的属性,分为两类
-
- 公认必遵(Well-known Mandatory):必须包括在每个Update消息里
-
- 公认任意(Well-known Discretionary):可能包括在某些Update消息里
- 可选属性不需要都被BGP路由器所识别,分为两类
-
- 可选过渡(Optional Transitive):BGP设备不识别此类属性依然会接受该类属性并通告给其他对等体
-
- 可选非过渡(Optional Non-transitive):BGP设备不识别此类属性会忽略该属性,且不会通告给其他对等体
公认必遵
Origin
| 起源名称 | 标记 | 描述 |
|---|---|---|
| IGP | i | 如果路由是由始发的BGP路由器使用network命令注入到BGP的,那么该BGP路由的origin属性为IGP |
| EGP | e | 如果路由是通过EGP学习到的,那么该BGP路由的origin属性为EGP |
| Incomplete | ? | 如果路由是通过其他方式学习到的,则origin属性为Incomplete(不完整的)。例如通过import-route命令引入到BGP的路由 |
- 当去往同一个目的地存在多条不同的origin属性的路由时,在其他条件都相同的情况下,BGP将按照如下顺序优选路由:IGP>EGP>Incomplete
AS_Path
- 该属性为公认必遵属性,是前往目标网络的路由经过的AS号列表
- 作用:确保路由在EBGP对等体之间传递无环路;另外也作为路由优选的衡量标准之一(AS号个数越少,越优先)
- 路由在传递给EBGP对等体时,路由器会在该路由的AS_Path中追加上本地的AS号;传递给IBGP对等体时,AS_Path不会发生改变
两种AS_Path类型
AS_SEQENCE
AS_SET
修改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对等体,如下图:
公认任意
Local_Preference
- 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
可选过渡
Aggregator
Community
- 可以将某些路由分配一个特定的Community属性值,之后就可以基于Community值而不是网络前缀/掩码信息来匹配路由并执行相应的策略
| 团体属性名称 | 团体属性号 | 说明 |
|---|---|---|
| Internet | 0(0x00000000) | 设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。缺省时,所有的路由都属于Internet团体 |
| No_Advertise | 4294967042(0xFFFFFF02) | 设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由 |
| No_Export | 4294967041(0xFFFFFF01) | 设备收到具有此属性的路由后,将不向AS外发送该路由 |
| No_Export_Subconfed | 4294967043(0xFFFFFF03) | 设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS(联盟)发送此路由 |
Community属性格式
Community属性值长度为32bit,使用两种形式呈现:
- 十进制整数格式
- AA:NN格式,其中AA表示AS号,NN是自定义的编号
可选非过渡
MED
- 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值在传递过程中不发生改变也不会丢失
案例一
- 如果路由器通过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
案例二
- 如果路由器通过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
- Preferred-value(协议首选值)是华为设备的特有属性,该属性仅在本地有效。当BGP路由表中存在到达相同目的地址的路由时,将优先选择Preferred-value值高的路由
- 取值范围:0-65535;该值越大,则路由越优先
- Preferred-value只能在路由器本地配置,且只影响本设备的路由优选。该属性不会传递给任何BGP对等体