# 一、BGP特點 #
無類別路徑向量——距離向量的升級版(AS–BY–AS)
使用單播更新來發送所有資訊;基於TCP 179埠工作
增量更新–僅觸發無週期
具有豐富的屬性來取代IGP中度量進行選路——多個引數控制協議
可以在進項和出項對流量實施強大的策略–可控性
預設不被用於負載均衡——-透過各種選路規則僅僅產生一條最佳路徑
BGP支援認證和聚合(彙總)
注:不可以認為彙總可以解決問題,有時候可能會影響選路,BGP中彙總減少的路由條目是有限的,有些條目會攜帶一些路由明細
HAPPY TEACHER‘S DAY
# 二、BGP資料包 #
BGP基於TCP的179埠工作;故BGP協議中所有的資料包均需要在tcp會話建立後,基於TCP的會話來進行傳輸及可靠性的保障;
首先透過TCP的三次握手來尋找到鄰居;
型別:
Open
僅負責鄰居關係的建立,正常進收發一次即可;攜帶route-id,hold time 預設為 3min
Keeplive
負責保活 ,週期為 1min,查詢鄰居關係是否存在;實際保活TCP會話;
Update
攜帶路由條目,目標網路號+各種屬性(其他是度量)
Notification
出現錯誤資料時收發
HAPPY TEACHER’S DAY
# 三、BGP的工作過程 #
1、配置完成後,鄰居間單播TCP三次握手,目標埠179,建立TCP的會話;之後所有的BGP協議資料包基於該會話進行傳輸;
會話建立後,鄰居間正常收發一次open報文建立BGP的鄰居關係,生成鄰居表;
BGP協議的open報文中將攜帶本地的RID—生成方式和OSPF一致;僅需要本地及本地所有鄰居唯一即可;
鄰居關係建立後,預設每1min,使用keeplive週期保活鄰居關係(週期保活TCP會話)
2、鄰居關係建立後,管理員選擇性將本地路由表中透過任意來源獲取的路由條目,向BGP協議中進行宣告;使用updata資料包進行鄰居間路由共享;之後生成BGP表;— 裝載本地發出及接收到的所有路由條目;
預設將最優路徑加載於路由表中(最優-僅僅基於BGP的選路規則,不一定為最佳路徑;BGP預設不支援負載均衡)
3、收斂完成,僅keeplive週期保活即可;
4、若出現錯誤資訊,鄰居間將使用Notification報文進行報錯操作
5、結構突變
新增 — 本地使用updata向本地所有鄰居告知,前提該路由不被已經發出的聚合路由包含
斷開 — 本地使用updata向本地所有鄰居告知,前提該路由不被已經發出的聚合路由包含
只有到聚合條目中包含的所有明細路由均在本地失效,才告知鄰居刪除聚合條目
無法溝通 — hold time為3min,如果連續3次未收到鄰居的keeplive包;則斷開鄰居關係、TCP會話,刪除從該鄰居處學習到的所有路由;
名詞
鄰居—直連 因為BGP協議中存在非直連鄰居的需求,故BGP鄰居稱為毗鄰關係;
EBGP鄰居關係 —— 外部BGP鄰居關係,建鄰的兩臺裝置處於不同的AS中
IBGP鄰居關係 —— 內部BGP鄰居關係,建鄰的兩臺裝置處於相同的AS中
HAPPY TEACHER‘S DAY
# 四、BGP的路由黑洞問題 #
什麼是路由黑洞
定義:非直連建鄰到達控制層面路由條目可傳遞,遞迴計算路由達;而實際資料層面流量在經過沒有執行BGP協議的路由器時無法透過,最終有去無回
解決方法
物理、邏輯拓撲全連 – 物理鏈路直連、或者VPN
鄰居關係全連 – 網路中所有裝置執行BGP
BGP重發布到IGP(LAB)
MPLS 多協議標籤交換 – 推薦做法
HAPPY TEACHER’S DAY
# 五、BGP的防環機制-水平分割 #
EBGP水平分割
依賴了BGP路由條目中的一種屬性(AS-PASH路徑屬性)來進行防環;BGP協議在傳遞路由條目的過程中,將記錄所有經過的AS的編號;
EBGP水平分割:接收到的路由條目中,若存在本地的AS號將拒絕該條目進入;
IBGP水平分割
本地從一個IBGP鄰居處學習到的路由條目,不得傳遞給本地的其他IBGP鄰居;
注:AS-BY-AS在一個AS內部條目傳遞的過程中,預設不會修改任何的屬性;
由於BGP可以非直連建立鄰居關係,故在一個AS內部,可以透過與多臺執行BGP協議的路由器建立BGP鄰居關係,來穩定關係網路;因此在一個AS內部執行BGP協議的裝置,正常均存在EBGP鄰居(均同時連線其他AS),在IBGP水平分割的限制下,雖然避免了IBGP的環路產生,但同時也使得AS內部為了能夠傳遞路由條目,必須兩兩間建立IBGP鄰居關係,鄰居關係成指數上升,配置量巨大;後期可以依賴打破水平分割的機制來解決—聯邦、路由反射器。
HAPPY TEACHER‘S DAY
老師,您就是光,
是溫暖,是大愛無疆。