在上一章节《誉天数通技术专栏:BGP之内忧外患》中,我们说到,BGP为了更好地解决路由传递过程中出现的问题,提供了多种路由属性来进行优化。那么这一期,咱们就来详细地说一说BGP属性。
开始之前,我们再来熟悉下BGP的路由表:
Status codes是表示前面的值,包括 *,>,d,h,i,s,S
Origin codes是表示后面的值,包括 i,e,?
*:意思为是可以使用的路由(为空表示是不可以使用的路由,或者从更小cost值IGP中学到了路由,s表示聚合时明细路由被抑制了)
>:表示路由为最优的(要确保>存在,才能将路由放入路由表中,且传递给EBGP邻居)
i:>号后面的i代表从IBGP学到的路由,本地通告的或者从EBGP邻居学到的路由不打i
?:表示是通过路由引入得来的
以上就是BGP路由表中必须熟知的信息,下面就开始具体学习BGP的属性。BGP的四大属性具有防止BGP路由环路和实现BGP路由选路、管理的能力。
公认必遵属性
公认必遵属性,每个厂商的每个设备都必须识别并且在BGP路由中必须携带,如果没有携带,则会出错。
As-path:用于记录路由经过的AS的路径信息。在路由更新给EBGP邻居时,会在AS-path中添加自身所在的AS号。
在AR4上宣告路由信息:
AR4上没有看到存在AS-path的信息,在AR3上继续查看:
可以看到AR3的as-path属性中记录了AR4所在的AS。
AS-path的功能为选路和防环
A.选路:优选AS-path短的路由。可以通过路由策略加长AS-path影响选路,在路由策略中由情况(none)AS-path和重写(overwrite)AS-path,由于AS-path具备防环功能,所以在使用时需要提前规划和协商,none和overwrite也可以提供影响选路的功能而且可以有效的避免AS路径被泄露。
如果AR3同时收到AR4和AR5宣告的相同路由,可以通过as-path的长度来进行优选。在AR5通告路由时使用路由策略添加一个AS。
可以查看AR3优选下一跳为10.1.34.4的具体原因:
2.防环:当从EBGP邻居学到路由会检查该路由的AS-path有没有自身所在的AS,如果有则丢弃该路由。(从IBGP邻居学到路由不检查AS-path,即AS内部无需检查) 防环机制在路由器收到路由时就进行,通过防环机制的路由才会进入入策略。
在AR5通告路由时,使用策略添加一个AS(AS值为100)
通过命令查看AR5通告路由时的具体信息:
再次查看AR3的BGP路由信息:
Origin:用于标记一条路由最初的引入方式。可以用于选路使用。
1. i:IGP,通过network形式引入的路由(在AR4上进行BGP路由的宣告)
2. e:EGP,通过EGP引入到BGP的路由(BGP的前生协议,现网中已不存在)
3. ?:incomplete,通过import引入的路由(在AR4上进行直连路由的引入)
引入直连路由后可以看到起源属性变为了“?”
4. 起源属性是BGP路由的最初属性,默认情况不会因为邻居之间的传递而改变,所以一般不使用此属性来影响选路。
Next-hop:标识去往目的网络的出口。下一跳的携带规则如下:
1. 将自身的路由更新给邻居时下一跳携带为自身和邻居建立邻居关系的接口IP地址。
2. 从IBGP/EBGP邻居学到的路由更新给EBGP邻居时,将下一跳修改为自身和EBGP邻居建立邻居关系的接口IP地址。
3. 从EBGP邻居学到的路由更新给IBGP邻居时,不修改下一跳属性。会导致路由不被优选,解决方法就是在传递给IBGP邻居时将下一跳进行修改。(上期已经配置)
4. 路由在AS内部传递,默认不修改下一跳属性
*由于BGP建立邻居时基于TCP可以非直连,所以BGP路由容易出现非直连的下一跳,需要借助IGP查找直连下一跳,该过程为路由递归。但是当出现非直连下一跳时,容易产生环路问题,因为递归后的直连下一条的路径不可控。不过非直连的下一跳具有最优路径选择以及提供了基于IGP的负载分担(备份)的优点。
公认任意属性
公认任意属性,每个厂商的每个设备都必须识别但是可以选择性携带,不携带也不会出错。
Local-preference:本地优先级,用于选路的属性工具。
1. 该值越大越优先,默认为100,如果路由没有携带该属性则当作100处理。(在AR3上通告一条100.3.3.3/32的路由信息,在AR6上进行查看。)
2. 只能在AS内部传递,无法传递给EBGP邻居。
3. 本地优先级是通过修改值的大小来告知本AS内的路由器如何选择一个最优流量出口。
4. 本地优先级值越大越优先
Atomic-aggregate:原子聚合,当手工聚合抑制所有明细路由时就会在聚合路由中携带该属性,标识该路由抑制了所有的明细,不精确。
1. 本质是一种警告,代表汇总路由聚合后丢失了明细路由的部分属性。
2. 在AR3上执行汇总:
3. 查看汇总路由的明细信息:
可选传递属性
可选传递属性,每个厂商的每个设备可以选择性识别,如果不识别也可以传递给其他邻居。
community:团体属性,标识一类具有相同特征的路由,一般使用AS(0-65535):NN(0-65535),团体属性可以实现下列功能:
1. 标识:使用自定义的团体属性实现
2. 限制路由传递范围:使用公认团体属性实现,公认团体属性就是从团体属性取值范围定义的四个特殊功能。
编号4294967041:no-export 只传递给IBGP邻居
编号4294967042:no-advertise 不传递给任何BGP邻居
编号4294967043:no-export-subconfd 设备收到具有此属性的路由后,不会向AS外发送该路由,也不向AS内其他子AS发布此路由
编号0:Internet 可以将路由传递给任何邻居
在AR4上进入路由策略视图:
查看团体属性的信息:
3. 使用自定义团体属性来过来路由信息:
通过配置路由策略来生成团体属性
将路由策略调用在邻居之间
邻居之间需要使能传递团体属性的功能
在AR6上继续查看AR4传递的路由信息:
aggregator:聚合者,聚合者会将自身的AS号和RID放入该属性中,表示该路由聚合的起源。
1. 表明该汇总路由在那个AS被聚合起来,与aggregator id(聚合者ID)合用来表示具体汇总的是谁。(具体现象参考原子聚合的截图信息。)
可选非传递属性
可选非传递属性,每个厂商的每个设备可以选择性识别,如果不识别则将该属性丢弃不传递。
MED:多出口鉴别器,其本质就是BGP路的开销。
1. BGP路由携带的MED值默认为IGP引入时的开销(优先选择MED小的,如果没有携带MED则当作0来处理。)
2. MED只能影响邻居AS,不能再影响邻居AS的第三方AS。
3. 一般配置在AS间,用于告知其他AS如何选择一个最优的流量入口。
4. 默认不比较来自不同AS的MED值,可以通过配置命令强制比较来自不同AS的MED(compare-different-as-med)。
5. 在AR4上使用策略添加MED值
向邻居通告时添加该路由策略:
在AR6上进行查看:
Originator-id:(起源者ID)Originator-id:是BGP的可选非传递属性,是RR中用于防止簇内出现环路的机制。
cluster-list:(簇列表)Cluster-list:是 BGP的可选非传递属性,是RR中用于防止路由又反射回簇的一种簇间的防环机制。
下一期咱们会重点介绍Originator-id、cluster-list属性。