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分