BGP属性----nexthop+origin 详解
BGP属性的作用:
BGP路由表中,到达同一目的地可能存在多条路由。此时BGP会选择其中一条路由作为最佳路由,并只把此路由发送给其对等体。BGP为了选出最佳路由,会根据BGP的路由优选规则依次比较这些路由的BGP属性。
BGP属性分类:
路由属性是对路由的特定描述,所有的BGP路由属性都可以分为以下4类,常见BGP属性类型如表1所示:
-
公认必须遵循(Well-known mandatory):所有BGP设备都可以识别此类属性,且必须存在于Update报文中。如果缺少这类属性,路由信息就会出错。
-
公认任意(Well-known discretionary):所有BGP设备都可以识别此类属性,但不要求必须存在于Update报文中,即就算缺少这类属性,路由信息也不会出错。
-
可选过渡(Optional transitive):BGP设备可以不识别此类属性,如果BGP设备不识别此类属性,但它仍然会接收这类属性,并通告给其他对等体。
-
可选非过渡(Optional non-transitive):BGP设备可以不识别此类属性,如果BGP设备不识别此类属性,则会被忽略该属性,且不会通告给其他对等体
Next_Hop属性
Next_Hop属性记录了路由的下一跳信息。BGP的下一跳属性和IGP的有所不同,不一定就是邻居设备的IP地址。通常情况下,Next_Hop属性遵循下面的规则:
-
BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
-
BGP Speaker将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
-
BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。
Next-hop属性:
特点:1、公认必遵属性。
@BGP本身不计算路由,只是路由的搬运工,所以BGP在传递路由的时候,需要携带下一跳属性。
@从EBGP邻居收到的路由传递给IBGP邻居的时候下一跳不变。
@从EBGP邻居收到的路由传递给EBGP邻居的时候下自动改变。
@从IBGP邻居收到的路由传递给EBGP邻居的时候下自动改变。
@自身始发的路由,传递所有BGP邻居下一跳自动改变。
下一跳取值:为本设备与邻居建立BGP邻居关系的接口的地址。
Origin属性
Origin属性用来定义路径信息的来源,标记一条路由是怎么成为BGP路由的。它有以下3种类型:
-
IGP:具有最高的优先级。通过network命令注入到BGP路由表的路由,其Origin属性为IGP。
-
EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。
-
Incomplete:优先级最低。通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由,其Origin属性为Incomplete。
Origin属性:
特点:
1、公认必遵属性
2、描述当前这条路由是如何形成BGP路由。
3、用于BGP路由的路径选择。(i>e>?)
i:标识通告network生成的BGP路由
?:标识通过import-route命令,引入到BGP中的IGP路由。
e:从EGP协议中引入到BGP的路由。
route-policy修改的属性与Origin默认产生的属性冲突的时候,策略修改的优选。
BGP路由的选路原则:
1,如果此路由的下一跳不可达,忽略此路由
2,优选协议首选值(PrefVal)最高的路由
3,优选本地优先级(Local_Pref)最高的路由
4,优选本地生成的路由
5,优选AS路径(AS_Path)最短的路由
6,比较Origin属性,依次优选Origin类型为IGP、EGP、Incomplete的路由
7,优选MED值最低的路由
8,优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)
9,优选到BGP下一跳IGP Metric较小的路由
10,优选Cluster_List最短的路由
11,优选Router ID最小的路由器发布的路由
12,比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由
Origin属性小应用举例:
解决思路: 因为 i > ? 所以我们在AR1这里宣告192.168.1.0 引入192.168.2.0 。而在AR5那边宣告192.168.2.0,引入192.168.1.0
配置:AR1 ----- bgp 1
network 192.168.1.0 24
import-route static route-policy ogi //, 使用route-policy 过滤 只引入192.168.2.0
route-plicy ogi permit node 10 //配置route-policy
if- nutch ip ip-prefix 1 //调用前缀列表
ip ip-prefix 1 permit 192.168.2.0 24 // 前缀列表抓取192.168.2.0
结果如下图:
AR5 配置----
network 192.168.2.0 24
import-route static route-policy ogi //, 使用route-policy 过滤 只引入192.168.1.0
route-plicy ogi permit node 10 //配置route-policy
if- nutch ip ip-prefix 1 //调用前缀列表
ip ip-prefix 1 permit 192.168.1.0 24 // 前缀列表抓取192.168.1.0
AR2与AR4上面的BGP路由表分别为:
====================================================================================================================================
BGP修改路由属性的方法:
1、在network这条路由的时候关联route-policy修改
2、在import这条路由的时候关联route-policy修改
3、针对发送/接受邻居路由的时候关联route-policy修改。
4、某些路由的属性支持修改默认取值。
route-policy修改的属性与Origin默认产生的属性冲突的时候,策略修改的优选。
简单举例说明:
1. 在AS1的AR1里面的静态路由192.168.1.0 24 Null0 ,network进了bgp协议,我们在ae2上查看bgp路由表
我们在AR1上在network的时候关联route-policy修改它的属性
bgp 1
network 192.168.1.0 route-policy ogi
route-policy ogi permit node 10
apply origin igp
<>refresh bgp all export
在查看ar2上的结果:
2,import 在引入的时候关联route-policy修改origin的属性:
2.1 我们在AR1上引入静态路由到bgp ----import- route static
2.2 关联route-policy 修改origin的属性
import-route static route-policy ogi
route-policy ogi permit node 10
apply origin igp
<>refresh bgp all export
3, 在发送或者接收给邻居的时候关联route-policy修改属性
route-policy ogi permit node 10
apply origin incomlete // 修改origin属性为引入
bgp 1
peer 10.0.12.2 route-policy ogi export //在发送给邻居的时候调用route-policy 修改origin属性为 incomlete
network 192.168.1.0 24 // network静态路由到bgp协议
查看AR2的BGP路由表
接下来,我们在AR2上在接收的方向在修改过来为igp
route-policy ogi permit node 10
apply origin igp // 修改origin属性为network
bgp 2
peer 10.0.12.1 route-policy ogi import // 在接收邻居的时候调用route-policy 修改origin属性为 igp
origin属性知识点完 2022-04-22 下午16:45分