跳至內容

邊界的道器協定

出自Taiwan Tongues 台語維基
於 2025年8月24日 (日) 09:48 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

邊界的道器協定(英語:Border Gateway Protocol,縮寫:BGP)是網際網路頂一个核心的去中心化自治路由協定。伊通過維護 IP 路由表抑是「字條」表來實現自治系統(AS)之間的可達性,屬於向量路由協定。BGP 無使用傳統的內部網路關協定(IGP)的指標,來使用基於路徑、網路策略抑是規則集來決定路由。所以,伊閣較適合予人號做向量性協定,毋是路去協定。

大多數啦 ISP 著愛使用 BGP 來佮其他 ISP 建立路是由連接(尤其是當𪜶採取內底送流量備援容錯機制連接時)。 所以,雖然大多數網際網路使用者無直接使用伊,但是佮七號信令系統—— 即通過 PSTN 的跨供應商核心回應設定協定相比,BGP 猶原是網際網路上重要的協定之一。特大型的私有 IP 網路嘛會使使用 BGP。比如講,當需要將若干個大型的 OSPF(開放上短的路草優先)網路進行合併,而且 OSPF 本身又閣無法度提供這款會當延伸性的時陣。使用 BGP 的另外一个原因是其實會當替內送流量備援容錯機制的單個還多個 ISP(RFC 一千九百九十八)網路提供閣較好的趁錢。

歷史

BGP 是為著欲取代外部的道器協定(EGP)協定而起的,其允准執行一个完全分散的路是由系統,對 ARPANET 模型的核心路是由系統過渡到包括 NSFNET 骨幹網佮其相關的區域網路的分散系統。這予網路成做一个真正的分權制度。自一九九四年以來,第四版的 BGP 佇網路頂懸使用,所有較早的版本這馬攏已經過時間而且無可用。第四版中主要的增強功能是通過支援無類別域間路由和路由聚合來減少路由表的大細。第四版(BGP 扳四)是較早的 RFC 一千七百七十一第四版的基礎上編織,通過二十幾个草案修改,終其尾佇二空空六年一月通過,形成 RFC 四千兩百七十一。RFC 四千兩百七十一版本糾正矣一寡錯誤,澄清模糊的所在,紮來更加倚工業級應用標準的 RFC 行業的慣例。

IPv 六 BGP 佇咧一九九五年予人 RFC 一千八百八十三定義,佇一九九八年的 RFC 兩千兩百八十三中有所改進。伊會使 BGP 抹四會當支援諸如 IPv 四、IPv 六等一系列的位址類型,人講是多協定 BGP(Multiprotocol BGP,MP-BGP)。

BGP 執行

BGP 的厝邊頭尾關係(抑是通信對端 / 著等實體,peer)是通過人工組態實現的,嘿等實體之間會通過 TCP 埠頭一百七十九建立對談交換資料。BGP 路由器會周期地傳送十九位元組的保持存活(keep-alive)訊息來維護連接(預設彼禮拜為六十秒)。 佇各種路由協定中,只有 BGP 使用 TCP 作為傳輸層協定。

仝一个 AS 自治系統中的兩个抑是濟个對等實體之間執行的 BGP 予人叫做是 iBGP(Internal / Interior BGP)。 歸屬無仝款的 AS 的嘿等實體之間執行的 BGP 這號做 eBGP(External / Exterior BGP)。 佇咧 AS 邊界上佮其他 AS 交換資訊的路由器予人稱做邊界路由器(border / edge router), 邊界路由器之間互為 eBGP 對端。佇咧 Cisco IOS 中,iBGP 通告的路由距離做兩百,優先級比 eBGP 佮任何內部網路關協定(IGP)通告的路由攏低。其他的路由器實現中,優先級順序嘛是 eBGP 懸於 IGP,而且 IGP 閣懸於 iBGP。

iBGP 和 eBGP 的區別主要佇咧轉發路由資訊的行為。比如講,對 eBGP peer 得著的路由資訊會分發予所有 iBGP peer 和 eBGP peer,毋過自 iBGP peer 得著的路由資訊干焦會分發予所有 eBGP peer。所有的 iBGP peer 之間需要全互聯。

BGP 嘛會當執行 VPN 之上,也予位置頂懸相隔較遠的站點會用安全交換路由資訊。

協定擴充協商

佇咧 peer 的握手過程中,通過 OPEN 訊息來協商所支援的協定擴充,譬如講加協定擴充(多協定 BGP)、 各種故障恢復模式等等。

BGP 路由聯通性和路由學習

仝一 AS 內若有幾个路對器參與 BGP 路由,則𪜶之間著愛組態做全連通的網狀網格結構:任意兩个路由器之間攏必須組態成對等實體。按呢做會帶來擴充方面的問題,因為所需要的(TCP)連接數是(BGP)路由器數量的平方。為著緩減這个問題,BGP 支援兩種選項:route reflectors(RFC 四千四百五十六)和 confederations(RFC 五千空六十五)。 下跤咧討論矣佇全連通的 IBGP 網格中的基本更新處理(UPDATE)。

基本更新過程

NLRI(Network Layer Reachability Information 網路層會當達訊)。

一个 BGP 路由器會當對濟厝邊來接收 NLRI 更新的資訊,而且將(家己擁有的)NLRI 資訊通告予家己的厝邊隔壁(佮收著 NLRI 閣較新訊息的厝邊頭尾會當無一致)。 BGP 維護家己的主路由來,這號做 Loc-RIB(本地路由資訊庫), 注意佮路由器的主路由來的區別。針對每一个厝邊,當前 BGP 的行程(會當理解講本地 BGP 實體)維護一个 Adj-RIB-In(鄰接路由資訊庫,入站), 對該是厝邊頭尾收著的 NLRI 訊息;愛閣維護一个 Adj-RIB-Out(出站), 記錄對本地 BGP 實體傳送予該厝邊頭尾的 NLRI 資訊。

佇頂一段中講著的 Loc-RIB , Adj-RIB-In 和 Adj-RIB-Out 的具體實現(這是 RIB 的物理儲存佮結構)攏由無仝款的廠商佇咧實現 BGP 彼陣仔家己決定。雖然本地路由器上往通過管理指令查詢遮的 RIB,猶毋過 BGP 路由器並無關心其他 BGP 路由器是按怎實現遮的 RIB 的。具體實現方法會當無仝,咱逐家往往共兩个 Adj-RIBs 和 loc-RIB 存在仝一个資料結構內底,倚靠每一个 RIB 表現了後附加額外資訊來區分。BGP 行程會當對附加資訊中得知影足濟資訊,比如講佗一寡表項是屬於為著某一个特定厝邊準備的 Adj-RIBs,Loc-RIB 表項敢有資格予人遞交予本地路由器的路由表管理行程,逐家接路由選擇行程收著的 Loc-RIB 是毋是符合策略。

若是 Loc-RIB 表項有資格予人提交予本地路由器的路由表管理的行程,BGP 會共自認為最佳的多條路由遞交予主路由表行程。所遞交的 BGP 路裡敢有予人選用,是完全由上述行程的具體實現決定的。比如講,若對路由器的本地埠頭知影講某一字首佮本路由器直接相連,通常會選擇直接轉發的路由。只要坦白亂的埠閣佇正常工作,去向這个該目的字條的 BGP 路由就袂予真正納入路由表(主路由表)。 若是直及碼不法正常工作,而且不存在優先級較懸的由,著 Loc-RIB 路由表項就會予人載入主路由表。進前有一个定定看著的誤解,認為講 BGP 傳送各種策略。實際上 BGP 干焦傳送的資訊,因為遮的資訊,BGP 行程會當做決策。有一寡資訊顯然是用決策的,比如講 communities 和 multi-exit discriminators(MED)。

路選擇

佇選擇合適的 NLRI 加入 loc-RIB 時,BGP 標準規定了真濟決策準備。評價 NLRI 的第一个準則就是判斷伊的下一跳屬性必須是會當達到(reachable 抑是 resolvable)。 後一跳會達猶閣會使做如下解說:在本路由器的主路由表中,有一條活動通用的路由,指向後一跳位址所在的字條。嘛會使講,著愛有一條活動通用的路由去向下跤一跳。

其次,針對逐个厝邊,在地 BGP 行程會當用無仝的標準佮廠商自訂的原則決定佗一寡路由會當加入該厝邊對應的 Adj-RIB-in。厝邊頭尾會當共去向某一个目的地的濟條路由發予你,but the first level of preference is at the neighbor level。對某一个目的地,干焦一條路會予人加入所謂的 Adj-RIB-In(註:佇咧在地,針對逐个厝邊攏有一个 Adj-RIB-In)。 若是厝邊復原任何路由,該 BGP 行程愛閣負責對 Adj-RIB-In 中刪除對應的條目(伊若有)。

若某一个 Adj-RIB-In 發生變化,原生的主 BGP 行程會判斷對應的厝邊通告的新路敢有比 Loc-RIB 中現有路由閣較好。如果是,將進行替換。若某一个路由去予厝邊復原,而且無別个路由指向相應的目的地,著愛對 Loc-RIB 中刪除相應的路由表項,並且 BGP 無欲閣表現遞交予主路由表管理器。若是 OSPF 抑是按怎非 BGP 協定嘛無才調替本路由器揣著一條指向該目的地的路由,是相應的路由表項會對主路由表中刣除。

逐家厝邊選擇

若是某條路由資訊(NLRI)來自一个本域內的著等實體(IBGP), BGP 標準規定的第一條準著就是檢查 LOCAL \ _ PREFERENCE(以下簡稱 LOCAL \ _ PREF)屬性。若是來自厝邊(仝一 AS 域)幾若條 IBGP 路由指向仝一目的字條,是選擇有上懸的 LOCAL \ _ PREF 彼條路由。若是拄好有偌條路由攏有相仝的上懸 LOCAL \ _ PREF,則執行後一條準則。標準中規定 LOCAL \ _ PREF 為第一準,一旦確定矣後一跳(NEXT \ _ HOP)會當達到,Cisco 佮其他幾个廠商首先考慮著本地路是由器定義的 WEIGHT 值(該屬性干焦佇本地路由器有效,袂過啦 BGP 湠開), 即選擇有上大的 WEIGHT 的路由。

會當通過本地組態抑是控制軟體會當操縱 LOCAL \ _ PREF、WEIGHT 猶閣有其他的準則。標準中並無定義按呢操縱,但佇實際產品當中廣泛存在。比如講,BGP 選擇行程(selection process)並無直接使用 COMMUNITY 屬性(見下跤)。 猶毋過 BGP 厝邊行程(neighbor process)會當根據手動組態的規則來設定 LOCAL \ _ PREF 抑是別項 factor 的屬性值。比如講,當 COMMUNITY 屬性值滿足某一種模式匹配準(抑是講具有啥物款的模式)時,BGP 厝邊頭尾行程就會當修改 LOCAL \ _ PREF 的值。若某條路由是對相鄰 AS 的某一个對等實體(BGP)得知的,per-neighbor BGP process 會根據原生的策略規則算該路由的 LOCAL \ _ PREF,而且佮來自同一厝邊的其他路由的 LOCAL \ _ PREF 較大細項。

若無考慮廠商家己對規則的修改,佇咧 BGP 協定內底,per-neighbor level 上依次執行下跤的準則,一直至選出唯一的一條路由:

一 . 選擇有上短 AS \ _ PATH 的路徑。AS \ _ PATH 是由著達通告中的目的地所必須愛經過的 AS 號組成。比如講:AS 一-AS 二-AS 三比 AS 四-AS 五-AS 六-AS 七短。 二 .(若濟條路是有仝款的 AS \ _ PATH 長度)選擇有上細項的 ORIGIN 值的路由。 三 .(若濟條路是有仝款的 ORIGIN)選擇有上細項的 MED 值的路由。

BGP 組態錯誤事件

BGP 組態對網際網路流量路由至關係,組態錯誤,經過 BGP 的自動湠開,會致使網際網路流量影響著甚至中斷。

  • AS 七千空七事件
  • 二空一八年十一月十四號,尼日尼亞網路服務商 MainOne 因為組態的錯誤,將直連 Google 的網路對泄漏去中國電信的網路,然後通過中國電信的 BGP 傳播到其他 ISP 中,致使一部份北美連接 Google 服務的流量通過抹迴的 AS 路徑傳輸。MainOne 其後承認出現錯誤。
  • 二空一九年六月初六,甲骨文的一名安全分析師發現瑞士資料中心代管商 Safe Host 的 AS 泄露七萬个路由記錄著中國電信的網路,而且通過中國電信的 BGP 傳播,致使部份歐洲的網際網路流量踅入去矣中國電信的網路,這个組態錯誤至少會延續兩點鐘。
  • 二空一九年六月二五,美國網際網路運營商 Verizon 共其客戶 Allegheny Technologies 泄漏來自 DQE Communications BGP 最佳化器的路由傳播到其他 ISP 中,致使北美部分地區的流量通過 DQE Communications 傳輸,致使網路半遂。
  • 二空二一年 Facebook 當機事件:二空二一年十月初四,因為組態的錯誤,Facebook 的 DNS 權威侍服器位址通過 BGP 復原,致使著使用者佮 Facebook 的其他服務的侍服器無法度根據 DNS 得著相應的侍服器位址,致使著 Facebook 網路服務斷去六 ~ 七點鐘。

參考文獻

外部連結

  • LinkRank University of California , Los Angeles 製作的 BGP 路由圖形化工具
  • BGP Routing Resources(包含一个專門的章節佇咧 BGP & ISP Core Security)
  • BGP 表統計