一、BGP簡介
BGP(Border Gateway Protocol,邊界網關協議)是一種既可以用於不同 AS(Autonomous
System,自治系統)之間,又可以用於同一 AS 內部的動態路由協議。當 BGP 運行於同一 AS 內部
時,被稱為 IBGP(Internal BGP);當 BGP 運行於不同 AS 之間時,稱為 EBGP(External
BGP)。AS 是擁有同一選路策略,屬於同一技術管理部門的一組路由器。
二、BGP選路原則【重要】
目前,BGP 選擇路由的過程為:
(1) 丟棄下一跳(NEXT_HOP)不可達的路由;
(2) 優選首選值(Preferred-value)最大的路由;
(3) 優選本地優先級(LOCAL_PREF)最高的路由;
(4) 依次選擇 network 命令生成的路由、import-route 命令引入的路由、聚合路由;
(5) 優選 AS 路徑(AS_PATH)最短的路由;
(6) 依次選擇 ORIGIN 類型為 IGP、EGP、Incomplete 的路由;
(7) 優選 MED 值最低的路由;
(8) 依次選擇從 EBGP、聯盟 EBGP、聯盟 IBGP、IBGP 學來的路由;
(9) 優選下一跳 Cost 值最低的路由;
(10) 優選 CLUSTER_LIST 長度最短的路由;
(11) 優選 ORIGINATOR_ID 最小的路由;
(12) 優選 Router ID 最小的路由器發佈的路由;
(13) 優選 IP 地址最小的對等體發佈的路由。
三、BGP路由屬性【重要的屬性】
BGP 路由屬性是跟隨路由一起發佈出去的一組參數。它對特定的路由進行了進一步的描述,使得路
由接收者能夠根據路由屬性值對路由進行過濾和選擇。
1. 源(ORIGIN)屬性
ORIGIN 屬性定義了路由信息的來源,標記一條 BGP 路由是怎麼生成的。它有以下三種類型:
A、IGP:優先級最高,表示路由產生於本 AS 內。
B、 EGP:優先級次之,表示路由通過 EGP 學到。
C、 Incomplete:優先級最低,表示路由的來源無法確定。例如,從其它路由協議引入的路由信
息。
2. AS路徑(AS_PATH)屬性
AS_PATH 屬性記錄了某條路由從本地到目的地址所要經過的所有 AS 號。當 BGP 路由器將一條路
由通告到其他 AS 時,會把本地 AS 號添加在 AS_PATH 列表中。收到此路由的 BGP 路由器根據
AS_PATH 屬性就可以知道到達目的地址所要經過的 AS。
AS_PATH 作用:
A、避免路由環路的形成:缺省情況下,如果 BGP 路由器接收到的路由的 AS_PATH 屬性中已經
包含了本地的 AS 號,則 BGP 路由器認為出現路由環路,不會接受該路由。
B、影響路由的選擇:在其他因素相同的情況下,BGP會優先選擇路徑較短的路由。
C、 對路由進行過濾:通過配置 AS 路徑過濾列表,可以針對 AS_PATH 屬性中所包含的 AS 號來
對路由進行過濾。
3. 下一跳(NEXT_HOP)屬性
BGP的NEXT_HOP屬性取值不一定是鄰居路由器的IP地址。NEXT_HOP屬性取值
情況分為幾種:
A、BGP 發言者把自己產生的路由發給所有鄰居時,將該路由信息的 NEXT_HOP 屬性設置為自
己與對端連接的接口地址;
B、BGP 發言者把接收到的路由發送給 EBGP 對等體時,將該路由信息的 NEXT_HOP 屬性設置
為自己與對端連接的接口地址;
C、BGP發言者把從EBGP鄰居得到的路由發給IBGP鄰居時,並不改變該路由信息的NEXT_HOP
屬性。
4. MED(Multi-Exit Discriminator,多出口區分)屬性
MED 屬性僅在相鄰兩個 AS 之間交換,收到此屬性的 AS 不會再將其通告給其它 AS。
MED屬性相當於IGP使用的度量值(metrics),它用於判斷流量進入AS時的最佳路由。當一個BGP
路由器通過不同的EBGP對等體得到目的地址相同但下一跳不同的多條路由時,在其它條件相同的
情況下,將優先選擇MED值較小者作為最佳路由。
5. 本地優先(LOCAL_PREF)屬性
LOCAL_PREF 屬性僅在 IBGP 對等體之間交換,不通告給其他 AS。它表明 BGP 路由器的優先級。
LOCAL_PREF屬性用於判斷流量離開AS時的最佳路由。當BGP路由器通過不同的IBGP對等體得到
目的地址相同但下一跳不同的多條路由時,將優先選擇LOCAL_PREF屬性值較高的路由。
閱讀更多 專注分享網絡技術 的文章