BGP學習筆記
阿新 • • 發佈:2018-03-12
BGPBGP:
一、基本概念
1、基於TCP 179,基於TCP的好處:面向鏈接的,有確認機制可靠的
2、是一種用於AS之間路由傳遞和控制的協議(AS)
3、BGP報文:
open:協商建立鄰居關系(版本,AS號,hold-time,router-id)
keepalive :周期60s發送,用來保活TCP鏈接
update :用來進行增量的路由更新
notification :差錯報文,在任何階段都有可能發送,一旦收到直接進入IDLE
route-refresh:向對等體發送路由更新請求
4、BGP狀態機:idle connect active opensent openconfirm established
5、BGP鄰居關系:IBGP,EBGP
二、路由更新規則
1、只將最優路由通告給對等體
2、從EBGP鄰居學來的會通告給所有鄰居關系
3、從IBGP鄰居學來的不會通告給IBGP鄰居
4、從IBGP鄰居學來的默認會通告給EBGP鄰居
從IBGP鄰居學到的路由在傳給EBGP鄰居時要根據IBGP和IGP同步的情況來決定
同步:要向EBGP更新一條來自IBGP鄰居的路由,需要在BGP和IGP同時學到這條路由
(華為設備默認關閉同步並且不能開啟)
三、BGP的屬性——通過更改BGP路由屬性控制路由的傳遞
1、next-hop:公認必遵屬性,必須攜帶在update中,不攜帶就會出錯
當通告給對等體一條BGP路由時,對等體會將此路由下一跳置為對方和我建立鄰居關系的地址
從EBGP鄰居學來的路由在傳給IBGP鄰居的時候,不修改下一跳
從EBGP/IGBP學來的路由在傳給EBGP鄰居時,要修改下一跳為自己和對方建立鄰居關系的地址
當要使用一條BGP路由時,下一跳必須可達;使用BGP路由時需要先遞歸IGP查找BGP路由的下一跳
可以在BGP路由器上使用peer X.X.X.X next-hop-local來強制修改下一跳屬性,此命令用於將從EBGP鄰居學來的路由傳給IBGP鄰居的時候使用。
2、origin:起源屬性,公認必遵,BGP路由必須攜帶在update報文,如果不攜帶就會出錯
用來標識此路由最初是以什麽方式引入BGP的(network,import,egp)
如果是以network則標識為 i(igp)
如果是以egp則標識為 e(egp)
如果是以import則標識為 ?(incomplete)
I > e > ?
可以在整個BGP域內出入方向做修改
3、AS-path:公認必遵屬性,必須攜帶在update中,不攜帶就會出錯
用來標識路由在AS之間傳遞的時候經過了哪些AS,將經過的AS編號加入AS-path
(1)選路:優選AS-path短的BGP路由
(2)AS間防環:在從EBGP鄰居收到一條路由時會對AS-path做檢查,檢查AS-path中有沒有自身的AS號,如果有,則丟棄此路由,如果沒有則繼續使用。
可以在AS內,AS間通過修改AS-path的長度來影響選路,只能添加已經經過的AS編號
4、Local-Preference:公認任意屬性,每個廠商都支持,但可以不攜帶在update報文中
默認值為100,值越大越優先,只能在AS內部生效,不能傳出AS
用來影響AS內部路由器如何訪問其他AS的路由
只能在IBGP鄰居的出入方向和EBGP鄰居的入方向修改
5、MED(multi-exit-disc):多出口鑒別器,可選非過渡屬性,可以選擇性攜帶和識別,如果不識別,將不會傳遞該屬性;用於告知鄰居AS一條最好的路徑進入本AS;本質是開銷值
比較原則:越小越優先,默認為0;
默認只能比較來自一個AS的MED值,可以通過配置命令來比較來自不同AS的MED;
可以影響鄰居AS以及他的IBGP鄰居,不能影響鄰居AS的其他EBGP鄰居
6、community:團體屬性,可選過渡屬性,可以選擇性識別和攜帶,如果不識別,則會將此屬性透傳給其他設備;默認不傳遞給鄰居,必須通過配置peer X.X.X.X advertise-community來將團體屬性通告給鄰居。
作用:用來限制路由的傳遞範圍,使用公認團體屬性限制
用來標識一類具有相同特征的路由,使用擴展團體屬性標記
公認團體屬性:internat:路由默認團體屬性,具有此團體屬性,會將路由傳遞給鄰居
No-advertise:具有此團體屬性,不會將路由傳遞給任何鄰居
No-export:具有此團體屬性,不會將路由傳出AS
No-export-subconfed:在聯盟中使用,不會傳給其他聯盟AS
擴展團體屬性:AA:NN標識,AA一般用AS編號表示,NN表示AS內部的團體編號
四、選路原則——13條選路原則
1、比較prefrence-value,越大越優先,華為私有屬性,只在本臺路由器上生效
2、比較local-preference,越大越優先
3、本地始發:手工聚合>自動聚合>network>import>從鄰居學到的
4、比較as-path,越短越優先
5、比較origin,i(network)>e(egp)>?(import)
6、比較MED值,越小越優先
7、EBGP鄰居>IBGP鄰居
8、優選BGP路由下一跳遞歸IGP路由開銷值小的
9、如果前八條一模一樣,則可以實現負載分擔
AS-PATH必須嚴格一致
默認BGP路由負載分擔條目為1
10、比較cluster-list,越短越優先
11、比較originator-id,越小越優先
12、比較router-id,越小越優先
13、比較對等體的IP地址,越小越優先
五、防環機制——AS內/AS間/特殊場景
1、AS內防環:從IBGP鄰居學來的不會通告給IBGP鄰居(IBGP水平分割)
問題:AS內某些路由器學不到BGP路由
解決方法:(1)AS內部IBGP全互連
2、AS間防環:使用AS-PATH防環
3、路由反射器:(Route-Reflector)
(1)角色:反射器,客戶機,非客戶機(都是在反射器上定義的)
(2)路由傳遞原則:路由反射器打破了水平分割,非非不傳
只反射最優路由
從客戶機學來的路由會反射給客戶機和非客戶機
從非客戶機學來的路由會反射給客戶機
(3)如何在RR中規劃IBGP:
客戶機只需要和反射器建立IBGP鄰居
非客戶機需要和反射器建立IBGP鄰居
非客戶機和非客戶機之間需要全互連IGBP
(4)防環機制:
簇內防環:使用originator-id防環,此屬性是可選非過渡屬性
在RR上反射路由時,如果此屬性為空,
則會打上本AS始發路由器的router-id
其他路由器收到帶有originator-id的路由,
會將此屬性和本路由器router-id比較,
如果一樣,則不接受,如果不一樣,則接受。
簇間防環:使用cluster-list防環,此屬性是可選非過渡屬性
當RR在反射路由時,會檢查此路由有沒有cluster-list
如果沒有,則創建一個,並將自身的cluster-id寫入
(Cluster-id默認是router-id,但可以修改)
其他RR在接收到反射的路由時,會檢查此屬性cluster-list
若其中包含自身的cluster-id,則忽略該路由
4、BGP聯盟
(1)角色:成員AS(小AS),聯盟AS(大AS)
(2)路由傳遞原則:聯盟EBGP鄰居,聯盟IBGP鄰居
從EBGP鄰居學到的路由會傳給聯盟EBGP/聯盟IBGP
從聯盟EBGP鄰居學到的路由會傳給聯盟EBGP/聯盟IBGP/EBGP
聯盟EBGP鄰居之間傳遞路由時,下一跳不做修改
只傳遞最優路由
(3)配置原則:需要在BGP進程中指定聯盟AS的AS號
需要在BGP進程中指定聯盟EBGP鄰居的AS號
(4)防環機制:使用聯盟內有序AS防環
在路由經過聯盟AS時,會創建一個(小括號),
並在小括號裏面最前添加成員AS的AS編號
每經過一個成員AS,都會在最前面添加成員AS
在此路由出聯盟AS時,會將小括號替換成聯盟AS
中間成員AS在收到路由時,會檢查AS-path中有沒有自身as
如果有,則忽略該路由
六、BGP特性
1、路由聚合:自動聚合,手動聚合
(1)自動聚合
手動聚合
(2)路由聚合需要考慮的問題:
路由屬性的繼承問題:next-hop,自動/手動聚合相當於新引入一條路由,下一跳為自己
Origin,自動聚合起源屬性為?(incomplet)
手動聚合起源屬性繼承明細路由中起源屬性最劣的
As-path,自動聚合相當於新引入一條路由,AS-path沒有繼承
手動聚合中默認不繼承明細的AS-path,
(可以使用as-set參數讓聚合路由的AS-path中使用{}攜帶明細路由的AS-path)
明細路由的通告問題:自動聚合的路由默認不通告明細路由
手動聚合的路由默認通告明細路由,可以使用detail-suppressed抑制所有明細路由,
一、基本概念
1、基於TCP 179,基於TCP的好處:面向鏈接的,有確認機制可靠的
2、是一種用於AS之間路由傳遞和控制的協議(AS)
3、BGP報文:
open:協商建立鄰居關系(版本,AS號,hold-time,router-id)
keepalive :周期60s發送,用來保活TCP鏈接
update :用來進行增量的路由更新
notification :差錯報文,在任何階段都有可能發送,一旦收到直接進入IDLE
route-refresh:向對等體發送路由更新請求
4、BGP狀態機:idle connect active opensent openconfirm established
5、BGP鄰居關系:IBGP,EBGP
1、只將最優路由通告給對等體
2、從EBGP鄰居學來的會通告給所有鄰居關系
3、從IBGP鄰居學來的不會通告給IBGP鄰居
4、從IBGP鄰居學來的默認會通告給EBGP鄰居
從IBGP鄰居學到的路由在傳給EBGP鄰居時要根據IBGP和IGP同步的情況來決定
同步:要向EBGP更新一條來自IBGP鄰居的路由,需要在BGP和IGP同時學到這條路由
(華為設備默認關閉同步並且不能開啟)
三、BGP的屬性——通過更改BGP路由屬性控制路由的傳遞
1、next-hop:公認必遵屬性,必須攜帶在update中,不攜帶就會出錯
當通告給對等體一條BGP路由時,對等體會將此路由下一跳置為對方和我建立鄰居關系的地址
從EBGP/IGBP學來的路由在傳給EBGP鄰居時,要修改下一跳為自己和對方建立鄰居關系的地址
當要使用一條BGP路由時,下一跳必須可達;使用BGP路由時需要先遞歸IGP查找BGP路由的下一跳
可以在BGP路由器上使用peer X.X.X.X next-hop-local來強制修改下一跳屬性,此命令用於將從EBGP鄰居學來的路由傳給IBGP鄰居的時候使用。
2、origin:起源屬性,公認必遵,BGP路由必須攜帶在update報文,如果不攜帶就會出錯
用來標識此路由最初是以什麽方式引入BGP的(network,import,egp)
如果是以network則標識為 i(igp)
如果是以import則標識為 ?(incomplete)
I > e > ?
可以在整個BGP域內出入方向做修改
3、AS-path:公認必遵屬性,必須攜帶在update中,不攜帶就會出錯
用來標識路由在AS之間傳遞的時候經過了哪些AS,將經過的AS編號加入AS-path
(1)選路:優選AS-path短的BGP路由
(2)AS間防環:在從EBGP鄰居收到一條路由時會對AS-path做檢查,檢查AS-path中有沒有自身的AS號,如果有,則丟棄此路由,如果沒有則繼續使用。
可以在AS內,AS間通過修改AS-path的長度來影響選路,只能添加已經經過的AS編號
4、Local-Preference:公認任意屬性,每個廠商都支持,但可以不攜帶在update報文中
默認值為100,值越大越優先,只能在AS內部生效,不能傳出AS
用來影響AS內部路由器如何訪問其他AS的路由
只能在IBGP鄰居的出入方向和EBGP鄰居的入方向修改
5、MED(multi-exit-disc):多出口鑒別器,可選非過渡屬性,可以選擇性攜帶和識別,如果不識別,將不會傳遞該屬性;用於告知鄰居AS一條最好的路徑進入本AS;本質是開銷值
比較原則:越小越優先,默認為0;
默認只能比較來自一個AS的MED值,可以通過配置命令來比較來自不同AS的MED;
可以影響鄰居AS以及他的IBGP鄰居,不能影響鄰居AS的其他EBGP鄰居
6、community:團體屬性,可選過渡屬性,可以選擇性識別和攜帶,如果不識別,則會將此屬性透傳給其他設備;默認不傳遞給鄰居,必須通過配置peer X.X.X.X advertise-community來將團體屬性通告給鄰居。
作用:用來限制路由的傳遞範圍,使用公認團體屬性限制
用來標識一類具有相同特征的路由,使用擴展團體屬性標記
公認團體屬性:internat:路由默認團體屬性,具有此團體屬性,會將路由傳遞給鄰居
No-advertise:具有此團體屬性,不會將路由傳遞給任何鄰居
No-export:具有此團體屬性,不會將路由傳出AS
No-export-subconfed:在聯盟中使用,不會傳給其他聯盟AS
擴展團體屬性:AA:NN標識,AA一般用AS編號表示,NN表示AS內部的團體編號
四、選路原則——13條選路原則
1、比較prefrence-value,越大越優先,華為私有屬性,只在本臺路由器上生效
2、比較local-preference,越大越優先
3、本地始發:手工聚合>自動聚合>network>import>從鄰居學到的
4、比較as-path,越短越優先
5、比較origin,i(network)>e(egp)>?(import)
6、比較MED值,越小越優先
7、EBGP鄰居>IBGP鄰居
8、優選BGP路由下一跳遞歸IGP路由開銷值小的
9、如果前八條一模一樣,則可以實現負載分擔
AS-PATH必須嚴格一致
默認BGP路由負載分擔條目為1
10、比較cluster-list,越短越優先
11、比較originator-id,越小越優先
12、比較router-id,越小越優先
13、比較對等體的IP地址,越小越優先
五、防環機制——AS內/AS間/特殊場景
1、AS內防環:從IBGP鄰居學來的不會通告給IBGP鄰居(IBGP水平分割)
問題:AS內某些路由器學不到BGP路由
解決方法:(1)AS內部IBGP全互連
2、AS間防環:使用AS-PATH防環
3、路由反射器:(Route-Reflector)
(1)角色:反射器,客戶機,非客戶機(都是在反射器上定義的)
(2)路由傳遞原則:路由反射器打破了水平分割,非非不傳
只反射最優路由
從客戶機學來的路由會反射給客戶機和非客戶機
從非客戶機學來的路由會反射給客戶機
(3)如何在RR中規劃IBGP:
客戶機只需要和反射器建立IBGP鄰居
非客戶機需要和反射器建立IBGP鄰居
非客戶機和非客戶機之間需要全互連IGBP
(4)防環機制:
簇內防環:使用originator-id防環,此屬性是可選非過渡屬性
在RR上反射路由時,如果此屬性為空,
則會打上本AS始發路由器的router-id
其他路由器收到帶有originator-id的路由,
會將此屬性和本路由器router-id比較,
如果一樣,則不接受,如果不一樣,則接受。
簇間防環:使用cluster-list防環,此屬性是可選非過渡屬性
當RR在反射路由時,會檢查此路由有沒有cluster-list
如果沒有,則創建一個,並將自身的cluster-id寫入
(Cluster-id默認是router-id,但可以修改)
其他RR在接收到反射的路由時,會檢查此屬性cluster-list
若其中包含自身的cluster-id,則忽略該路由
4、BGP聯盟
(1)角色:成員AS(小AS),聯盟AS(大AS)
(2)路由傳遞原則:聯盟EBGP鄰居,聯盟IBGP鄰居
從EBGP鄰居學到的路由會傳給聯盟EBGP/聯盟IBGP
從聯盟EBGP鄰居學到的路由會傳給聯盟EBGP/聯盟IBGP/EBGP
聯盟EBGP鄰居之間傳遞路由時,下一跳不做修改
只傳遞最優路由
(3)配置原則:需要在BGP進程中指定聯盟AS的AS號
需要在BGP進程中指定聯盟EBGP鄰居的AS號
(4)防環機制:使用聯盟內有序AS防環
在路由經過聯盟AS時,會創建一個(小括號),
並在小括號裏面最前添加成員AS的AS編號
每經過一個成員AS,都會在最前面添加成員AS
在此路由出聯盟AS時,會將小括號替換成聯盟AS
中間成員AS在收到路由時,會檢查AS-path中有沒有自身as
如果有,則忽略該路由
六、BGP特性
1、路由聚合:自動聚合,手動聚合
(1)自動聚合
手動聚合
(2)路由聚合需要考慮的問題:
路由屬性的繼承問題:next-hop,自動/手動聚合相當於新引入一條路由,下一跳為自己
Origin,自動聚合起源屬性為?(incomplet)
手動聚合起源屬性繼承明細路由中起源屬性最劣的
As-path,自動聚合相當於新引入一條路由,AS-path沒有繼承
手動聚合中默認不繼承明細的AS-path,
(可以使用as-set參數讓聚合路由的AS-path中使用{}攜帶明細路由的AS-path)
明細路由的通告問題:自動聚合的路由默認不通告明細路由
手動聚合的路由默認通告明細路由,可以使用detail-suppressed抑制所有明細路由,
BGP學習筆記