BGP路径属性与路由反射器
公认属性:所有BGP路由器都能识别
公认必遵:所有BGP路由器都能识别,且必须携带在Update报文中
-
origin:起源属性,用于标识BGP路由的发布方式
- IGP:通过network宣告到BGP中的路由,使用”i“
- EGP:通过EGP学习到的BGP路由,使用“e”标识
- incomplete:通过其他方式学习到的路由,如通过import-route引入的路由,使用“?”标识
- 优先级:i>e>?
-
as-path:AS路径属性
-
按矢量顺序记录从本地到目的地经过的所有AS号
-
当BGP speaker将路由通告给对等体时,会创建一个空的AS-path列表
- 如果通告给EBGP对等体,则将本地AS号添加在AS-path最左端
- 如果通告给IBP对等体,则会创建一个空的AS-path列表
- 如果是从EBGP对等体学习到的BGP路由通告给IBGP对等体时,则不对AS-path进行修改
- 总结:只有在离开AS时,才会将本地AS号添加在AS-path最左端
-
-
AS间防环
- 在接收到BGP路由时,设备发现AS-path列表中存在本地AS号,则不接收此路由,从而避免了AS间路由环路
-
控制选路
-
当收到两条相同的路由前缀时,优选as-path短的
-
分为两类
- as-squence-path:AS号有序排列的AS-path列表(默认)
- as-set-path:无序的as-path列表
-
-
-
next-hop:下一跳属性,记录路由的下一跳信息
-
BGP路由的下一跳,不一定时邻居设备的IP地址
- 将路由通告给EBGP对等体时,会将路由下一跳地址设置为自己与对端建立对等体关系的更新源地址
- 将始发路由通告给IBGP对等体时,会将路由的下一跳地址设置为自己与对端建立邻居的更新源地址
- 将从EBGP学习到的路由通告给IBGP对等体时,不会修改路由的下一跳属性
-
控制选路
- 下一跳地址可达:可能时有效路由
- 下一跳地址不可达:一定是无效路由
-
公认任意:所有的BGP路由器都能识别,可以不携带在Update报文中
-
local-preference:本地优先级,表明BGP路由的优先级
-
作用:用于判断流量离开AS的最优路径
-
特点
-
只在本地AS内生效(只在IBGP邻居间传递时携带)
-
默认100,值越大越优先,可以手动修改
- 在route-policy视图下:apply local-preference
-
-
-
automic-aggregate:原子聚合
- 作用:用来提醒管理者,哪些路由被聚合,出现了路由属性丢失的情况
- 产生条件:聚合路由,并抑制明细
可选属性:BGP路由器可以识别也可以不识别
可选过渡:对于不识别的BGP属性会接收,也会通告给其他BGP对等体
-
aggregator:聚合者
- 作用:用来标识产生聚合路由的BGP路由器(router id)以及所处的AS
- 内容:产生聚合路由的BGP设备的RID和AS号
-
community:团体属性
-
取值范围:0~0XFFFFFFF
-
基本团体属性:48bit
-
自定义团体属性
-
书写格式:AA:NN
-
无特殊含义,主要用于路由策略
- 不能直接用与路由选路,只是用来标识路由,便于路由策略的实施,等同于tag
-
BGP中也有专属的路由策略基于此属性匹配路由
- community-fiter
-
-
公认团体属性:已经定义了跳数含义,用于现指BGP路由范围
- internet:所有BGP路由器都默认具备该团体属性,标识可以通告给任何的BGP对等体
- no-advertise:标识不通告给任何BGP对等体
- no-export:标识不同该给EBGP对等体(AS联盟除外)
- no-export-subconfed:标识不通告给EBGP对等体(包括AS联盟)
-
扩展团体属性:64bit
- RT:router-target,用于将VPNv4路由导入到正确的VRF中,实现不同的VRF间的通信
- SOO:site of origin:用于在CE双归场景中防环
-
-
可选非过渡:对于不识别的BGP属性,接收时,通告给其他BGP对等体时剥离此属性
-
MED:多出口鉴别器
-
作用:用于判断流量进入AS的最优路径
- 可以认为是BGP的开销,类似于IGP的cost
-
特征
-
在相连的AS之间传递有效
- 如果BGP路由是始发路由,只会在传递给EBGP对等体时,携带MED
- 如果从EBGP路由学到的再传给IBGP对等体,会携带且不会修改此属性,若是再传给其他EBGP对等体时,则会剥离此属性
- 如果是从IBGP对等体学到的路由,在传递给EBGP对等体时,会剥离此属性
-
MED值越小越优先
- 可以在import-route和配置路由聚合时修改MED的缺省值
- 通过network宣告IP,路由表中的IBGP路由时,MED等于这些IBGP路由的metric(度量值),如果宣告的直连或者静态路由,则MED值为0
- 默认只会对相同AS传递过来的路由进行MED比较,对不同AS传递过来的路由不进行比较,但是可以通过命令进行强制比较
-
-
-
cluster_list:集群列表
-
作用
-
用于RR场景中,RR集群间防环
-
集群:由路由反射器和它的客户端组成的的路由器的集合
- cluster_id:集群标识(唯一标识一个集群)
- 集群内所有RR设备维护同一个集群ID,默认为RR的router id
-
当RR设备反射一条路由时,会将cluster_id添加到cluster_list中,当其他RR接收到时,会查看cluster_list中是否存在自身的cluster_id
- 如果存在则不接收
- 如果不存在则接收并在反射给其他集群时将自身的cluster_id添加到cluster_list中
-
-
用于RR场景中,控制选路
- cluster_list越短越优
-
-
-
originator:起源者
-
作用
-
用于RR场景中,RR集群内防环
-
由第一跳RR产生,使用始发路由器的router id标识路由的始发者
-
当第一跳RR接收到客户端发送的路由时,RR将originator_id属性添加到该路由中,标识该路由的始发者
- 如果该路由中已经存在originator_id属性,则RR不会修改此属性;RR将此路有反射给其他客户端,其他客户端接收到此路由时查看originator_id与自身RID是否一致,一致不接收,不一致则接收
-
-
-
用于RR场景中,控制选路
- 当RR接收到两条路由具有相同前缀,但是携带了不同的originator_id属性的路由时,优选originator_id小的
-
-
RR:router reflector路由反射器
-
作用:减少AS内BGP邻居关系,打破了AS内IBGP之间的路由传递的水平分割机制
-
名称解释
-
RR反射器:将从IBGP对等体学习到的路由,反射给其他IBGP对等体
-
RRcliebt:RR客户端,接收RR反射器发送给过来的路由
-
RR非客户端:不是RR客户端,只有RR建立普通的IBGP对等体关系
-
集群cluster:由RR反射器和RR客户端组成的集合
- 集群通过集群ID唯一标识,处于一个集群内的RR必须配置相同的集群ID,不做配置,则默认为RR的router id
- 一个RR只能属于一个集群,RR客户端可以同时属于多个集群
-
-
邻居关系
- RR反射器与RR反射器之间建立IBGP全互联
- RR与RR客户端之间建立IBGP全互联
- RR与RR非客户端之间建立IBGP全互联
- RR非客户端与RR非客户端之间建立IBGP全互联
- RR客户端与RR客户端之间不建立IBGP邻居关系
-
反射规则
- RR从RR客户端接收到的路由,反射给所有对等体(客户端和非客户端以及EBGP)
- RR从RR非客户端接收到的路由,反射给所有的客户端和EBGP邻居
- RR从EBGP邻居接收到的路由,反射给所有的对等体(客户端和非客户端以及EBGP)
-
防环机制
- 集群内防环:不接收originator_id与自身router id相同的路由
- 集群见防环:不接收cluster_list中存在本集群ID的路由