一張紙上的A、 B 兩個點,很容易就可以找到最佳連線方式,但如果 A 點是計算機,而 B 點是地球另一端的網站,如何從這紛亂復雜的線路中,找到最佳路徑呢?

在這種情況下,BGP(邊界網關協議)可根據可達性和路由信息,權衡最新的網絡狀況,從而找到最佳路徑。

BGP是一種路由協議,它定義了在AS(自治系統)之間交換路由信息的方法。BGP 管理數據包如何在構成互聯網的大型網絡之間傳輸,并使互聯網能夠高效運行。
在深入了解BGP之前,我們先來認識幾個基礎概念。
01
什么是路由協議?
路由協議是一種指定數據包轉送方式的協議。互聯網由錯綜復雜的網絡構成,因此需要適當地提供“合理的引導”,這個過程稱為路由。

| 路由圖解
路由是將計算機發送的數據(數據包)正確傳輸到目的計算機的過程。

為了進行路由選擇,需要在路由器中設置路由信息(路由表)。用于指示的信息稱為路由表,路由表包含“最終目的地”和“下一跳IP地址”。路由表的設置本身可以手動完成,但是路由信息每天都在變化。因此,需要一種機制來自動配置。這里使用的就是路由協議。

| 路由表工作示意圖
路由協議可以大致分為以下兩種類型:
IGP ( Interior Gateway Protocol ):內部網關協議,在一個AS內部所使用的一種路由協議。一個AS內部也可以有多個路由器管理多個網絡,各個路由器之間需要路由信息以知道子網絡的可達信息。IGP就是用來管理這些路由。代表的實現協議有RIP和OSPF。
EGP ( Exterior Gateway Protocol ):外部網關協議,在多個AS之間使用的一種路由協議,BGP是EGP的代表協議。
02
什么是AS?
AS(自治系統,Autonomous System)是構成互聯網的網絡單元。一個自治系統(AS)是一個有權自主地決定在本系統中應采用何種路由協議的小型單位。這個網絡單位可以是一個簡單的網絡也可以是一個由一個或多個普通的網絡管理員來控制的網絡群體,它是一個單獨的可管理的網絡單元(例如一所大學,一個企業或者一個公司個體)。它可以是一個路由器直接連接到一個LAN上,同時連到Internet上,也可以是一個由企業骨干網互連的多個局域網。

| 互聯網拓撲
每個 AS 都會被分配一個稱為 ASN(自治系統編號)的唯一編號。區域互聯網注冊機構(Regional Internet Registry,RIR),是管理世界上某特定地區Internet資源的組織。Internet資源包括IP地址(包含IPv4和IPv6)和使用在BGP路由中的自治系統號(Autonomous System number)。每個 AS 控制一組連接的路由前綴,代表一個 IP 地址范圍。當流量到達 ASN 時,它決定了網絡內部的路由策略。

| AS(自治系統)
在一個AS中的所有路由器必須相互連接,運行相同的路由協議,同時分配同一個ASN。截至 2021 年 1 月,全球有近 100000 個 ASN,其中約 29% 位于美國。

為了使各個AS相互連接并在它們之間進行通信,需要使用EGP,BGP是EGP的代表協議。

| BGP 簡化版
上圖展示了一個簡化版的 BGP。在此版本中,互聯網上有 6 個自治系統。如果 AS1 需要向 AS3 路由一個數據包,它有兩種不同的選擇:
AS2 → AS3或AS6 → AS5 → AS4 → AS3
在這個簡化的模型中,可以很簡單直接地作出決策。AS2 路由所需的躍點比 AS6 路由要少,因此它是最快、最高效的路由。
那么現在假設有成百上千個 AS,而且躍點數只是路線選擇算法中的一部分,最終決策就變得非常困難。而這就是BGP 路由的實際情況。
看到這里,我們再回顧一下BGP的概念,是不是就容易理解了!

打個比方,如果我們將 BGP 比作互聯網的郵政服務,那么AS就相當于各郵政分局,AS中的內部路由器就好比郵箱。一個城鎮可能有數百個郵箱,但郵箱中的所有郵件都必須先經過本地郵政分局,然后再運送到另一個目的地。也就是路由器將出站流量路由到AS,然后使用 BGP 路由將這些流量傳輸到其目的地。
但在這個比喻里,還存在一些偏頗。
AS與郵局不同,它們并非都屬于同一個組織。事實上,AS往往屬于互相競爭的公司。因此,BGP 路由有時會將業務因素考慮在內。AS往往會互相收取費用來傳輸通過其網絡的流量,相關價格也會成為最終選擇哪條路由的考慮因素之一。
03
互聯網流量路由簡史
在互聯網早期,只有少數網絡需要相互連接。那時,網絡節點之間的路由是靜態的,即路由器上的路由表是預先配置的,不考慮動態變化。設置路由所需要做的就是定義網絡節點并根據需要在它們之間建立連接。
然而,互聯網迅速發展,網絡越來越多,這時候就需要一個更加動態的路由系統。EGP(外部網關協議)的發明就是為了完成這項工作。1982 年,來自BBN Technologies 的Eric C. Rosen定義了 EGP。
EGP 是一種基于樹狀分層拓撲結構的簡單路由協議,用于在自治系統網絡中的兩個相鄰網關主機之間交換路由信息。

| EGP路由協議
EGP具有三個主要功能:
建立一組鄰居
檢查鄰居的可用性
通知鄰居其自治系統內的可達網絡
隨著互聯網上自治系統數量的增長,EGP 的缺點也開始暴露。EGP 僅支持樹狀拓撲,阻礙了可擴展性,并且難以有效地連接新網絡。需要定義一個更具可擴展性并提供更高級功能的外部路由協議。

| 樹狀拓撲vs網狀拓撲
1989 年 6 月,新路由協議的第一個版本正式確定。它的名字叫 BGP,代表邊界網關協議。
當時,思科的 Kirk Lougheed 和 Len Bosack 以及 IBM 的 Yakov Rekhter 利用在EGP上獲得的經驗編寫了一個新協議。他們在餐巾紙上寫下這個新協議。出于這個原因,BGP有時被稱為Two-Napkin Protoco。

| 寫在餐巾紙上的BGP注釋
與其前身 EGP 相比,BGP 支持網狀拓撲,使多路徑路由成為可能。BGP 用于路由 AS 到 AS的流量。

BGP Speaker 之間建立對等體的模式有兩種:
IBGP(Internal BGP)是指在相同AS內建立的BGP連接
EBGP是指在不同AS之間建立的BGP連接
在一個 AS 內,可以自由使用其他路由協議,如 OSPF、EIGRP 和 IS-IS。

| IBGP與EBGP示意圖
BGP 旨在互聯網上的自治系統之間交換路由和可達性信息,是當今互聯網運作方式不可或缺的一部分。沒有BGP,不同的網絡將無法通信或共享有關路由的信息,從而無法將數據高效、安全地從一個地方發送到另一個地方。
ISP(互聯網提供商)、大型組織和云提供商使用BGP 來連接彼此的的網絡,以及與互聯網的其余部分連接起來。BGP 還用于確保流量盡可能高效的路由,從而減少延遲并提高性能。BGP 基于TCP/IP,在OSI傳輸層(第 4 層)上運行以控制網絡層(第 3 層)。
04
BGP 路由的工作原理
BGP報文
BGP報文由BGP報文頭和具體報文內容兩部分組成。BGP的運行是通過消息驅動的,共有5種消息類型,這些消息有相同的報文頭。這些消息通過TCP協議進行傳播(端口號是179)。消息最長為4096字節,最短為19字節(只包含報文頭)。
1. Open報文用于對等體參數協商;
2. Keepalive報文用于維護對等體鄰居;
3. Update報文用于通告可達路由和不可達路由;
4. Notification報文 用于錯誤信息通告,斷開對等體鄰居;
5. Route-refresh報文 用于請求對等體重新發送路由信息。
BGP報文頭包括三部分,總長19字節。各個部分的格式和功能如下:

Marker:占16字節,用于檢查BGP對等體的同步信息是否完整,以及用于BGP驗證的計算。不使用驗證時所有比特均為1(十六進制則全“FF”)。
Length:占2個字節(無符號位),BGP消息總長度(包括報文頭在內),以字節為單位。長度范圍是19~4096。
Type:占1個字節(無符號位),BGP消息的類型。Type有5個可選值,表示BGP報文頭后面所接的5類報文(其中,前四種消息是在RFC4271中定義的,而Type5的消息則是在RFC2918中定義的)
自治系統通信
當兩個 AS 相互通信時,它們會彼此交換各自的網絡信息,包括 IP 地址范圍、子網掩碼和其他網絡相關數據等詳細信息。BGP 決策機制對所有數據進行分析,并將其中一個對等體設置為下一站,以轉發去往某個目的地的報文。每個對等體管理一個表,其中包含它知道的每個網絡的所有路由,并將該信息傳播到其相鄰的自治系統。
通過這種方式,BGP 允許 AS 從其相鄰AS 收集所有路由信息,并進一步“通告”這些信息。每個對等體都在其自己的自治系統內部傳輸信息。

就像在現實生活中一樣,通常有多條路線可以到達給定的目的地。BGP 類似于導航系統,負責根據收集到的信息和組織的路由策略確定最合適的路由,該路由策略基于成本、可靠性、速度和其他因素。
路由更新
一旦建立了路由表,就需要定期更新,以便網絡中的任何變化都能反映在路由表中。這個過程被稱為路由更新,它涉及在兩個 AS 之間來回發送消息,以保持它們各自的路由表的最新狀態。
BGP 路徑屬性
除了交換有關網絡的信息外,BGP 還使用路徑屬性來確定從一個AS發送數據包到另一個AS時應該走哪條路由。這些屬性包括跳數、延遲和傳輸成本等。通過考慮這些因素,BGP 可確保數據包沿著最有效的路由發送。
05
BGP的主要功能
BGP 為互聯網的運行提供了關鍵功能,包括維護路由信息、選擇最短路由、在路由錯誤的情況下提供冗余、通過身份驗證提供安全性和促進不同網絡類型之間的通信等。
路由故障時提供冗余:如果 BGP 檢測到主路徑無法正常工作,它將自動通過備用路徑重新路由流量。
檢測路由路徑環路:BGP 可以使用一組稱為 BGP 決策過程的算法來檢測和消除路由路徑中的環路。這有助于確保數據包沿著盡可能最有效的路線發送,而不會浪費帶寬或走不必要的彎路。
防止惡意攻擊:BGP 可以通過驗證 BGP 消息是否來自合法自治系統,以過濾掉惡意的流量。
提供安全保障:BGP 使用預配置的密碼或密鑰對路由器之間的消息進行身份驗證。這有助于確保只有授權實體才能交換信息并防止惡意行為者破壞流量。
控制交通流量:BGP 使 ISP 能夠通過指定將數據包從一個網絡發送到另一個網絡時采用的路由來控制流量如何通過其網絡。
促進網絡交流:BGP 允許網絡之間的通信,例如 IPv4 和 IPv6。這有助于確保所有設備都可以相互通信,無論它們位于哪種類型的網絡上。
06
BGP如何選擇最佳路徑?
上文提到了BGP可選擇兩個對等體之間的最佳路徑,那最佳路徑究竟是怎么選出來的呢?
權重:選擇權重最大的路線。權重值越大,對該路徑的偏好越高。
本地優先級:如果有多條權重相同的路由,則選擇本地優先級最高的路由。
Origin:優先選擇由本地路由器發起的路由,本地路由的下一跳是 0.0.0.0。
AS路徑:如果AS路徑長度相同,則優先選擇具有最低MED (多出口鑒別器)的路徑。
eBGP over iBGP:首選eBGP。eBGP的管理距離是 20,而iBGP的是 200。
IGP指標:優先選擇下一跳IGP最低的。
外部路徑:如果兩條路徑都是外部路徑,首先選擇最舊的路徑。
Router ID :選擇Router ID最小的路徑。
集群列表:如果多條路徑具有相同的路由器ID,則選擇最小長度。
鄰居地址:從最低鄰居地址開始選擇,此地址為BGP鄰居配置中使用的IP地址。
07
BGP的局限性
雖然BGP被廣泛使用,但是它也有以下局限性:
普適性問題
>傳播延遲
BGP在處理路由變更時需要時間來計算新的最短路徑,并需要將新路由信息通知給其他路由器。這會導致路由切換的延遲時間較長,可能會影響網絡性能。
>不穩定
如果配置不正確,BGP 會導致不穩定。如果路由設置不當,可能會導致數據包路由效率低下,從而導致性能下降和潛在的中斷。
>難以擴展
BGP是一個復雜的協議,需要大量的配置和維護工作。BGP 在處理大量路由器或同時路由大量數據時,無法很好地擴展。
安全問題
BGP還有一個很大的問題在于,默認情況下BGP 不嵌入任何安全協議,并且依賴于網絡運營商來保護他們的系統。自 2000 年代初以來, BGP劫持和泄漏事件一直是人們關注的焦點。

BGP路由泄露:路由泄漏是一種在現網中比較常見的路由事件,一般出現于ISP的錯誤配置,對外宣告了本不應該由該AS宣告的IP前綴路由,它能夠造成 BGP 路由發生嚴重錯誤、進而導致互聯網部分中斷或擁塞。
BGP路由劫持:整個BGP協議是建立在信任原則之上的。
BGP 假設每個 AS 對其擁有的IP地址和共享的路由信息都是真實的,這個原理使得它很容易受到惡意攻擊。BGP 劫持是通過破壞使用BGP 維護的互聯網路由表來非法接管IP 地址組,惡意重新路由互聯網流量。

| BGP路由劫持
攻擊者可以操縱 BGP 路由表,讓受到攻擊的路由器通告尚未分配給它的前綴。如果這些虛假通告表明有比合法路徑更好的路徑可用,流量就可能會被定向到該路徑,導致惡意服務器竊取憑據、下載惡意軟件并執行其他破壞性活動。而最終用戶始終以為他們訪問的是合法站點。
在某些情況下,BGP 路由劫持可能使攻擊者能夠訪問未加密的數據流或用于繞過 IP 屏蔽列表來發起未經請求的活動,如垃圾郵件等。
BGP DoS:這種惡意攻擊主要針對 BGP 路由協議。在這種攻擊中,網絡犯罪分子向受害系統發送意外或不需要的 BGP 流量,這會耗盡受害者的所有可用資源,從而無法處理有效的 BGP 流量。
BGP 威脅事件
多年來,BGP 經歷了無數次安全事件。
2017 年 8 月,由于谷歌錯誤泄露了 BGP 通告,日本經歷了全國范圍的中斷。同年 10 月,巴西的 Twitter 和 Google 等服務因另一起 BGP 泄漏事件而中斷。2017 年 11 月,互聯網骨干網提供商 Level 3 經歷了一次路由器配置錯誤,導致了嚴重的路由泄漏,最終直接影響了康卡斯特,并在此過程中關閉了美國大片地區的互聯網。
2018 年 4 月,惡意黑客公布了一些屬于 AWS 的 IP 前綴,一些試圖登錄加密貨幣網站的用戶被重定向到黑客所創造的虛假網頁之中,導致了超過 160000 美元的損失。
2021 年 10 月 4 日。Facebook 及其子公司經歷了一次影響全球用戶的重大中斷。中斷的原因被追溯到 BGP 故障,導致流量路由中斷。這導致許多用戶無法訪問他們的帳戶或使用 Facebook 及其子公司提供的任何服務。中斷持續了幾個小時才得到解決,并使該組織損失了 6000 萬美元的收入。

| 來源:騰訊安全應急響應中心(TSRC)
這些事件都說明了BGP協議在互聯網中的重要性,同時也提醒我們BGP安全方面的風險。
08
如何防范BGP威脅?
為了充分防范 BGP 威脅,有必要采取適當的對策和保護措施。
IP前綴過濾
大多數網絡應該只在必要時接受IP段前綴聲明,并且只應將其IP前綴聲明到某些網絡,而不是整個互聯網。這樣做有助于防止意外的路由劫持,并可能使AS不接受偽造的IP前綴聲明。但是,這在實踐中很難實施。
BGP劫持檢測
劫持檢測可以采取多種形式。基線性能的變化,例如更大的延遲、錯誤的流量或性能的普遍下降是可能表明某種形式的劫持的初步跡象。此外,監控通告以及記錄路線的可用性和停機時間是發現劫持的重要方面。
更復雜的系統還可以分析來自鄰居的公告 AS 以查看被劫持的前綴是否包含在公告中,可以識別前綴不匹配,并使用路徑分析來確保正確的路由。
全路由認證安全機制
2017年10月,國際互聯網工程任務組(IETF)和美國國家標準與技術研究院(NIST)、美國國土安全部(DHS)等機構共同啟動了一個名為安全域間路由(SIDR)的聯合項目,明確提出應對 BGP 協議進行保護以抵御BGP路由攻擊威脅。“SIDR ”項目主要分為三個基本組成部分:資源公鑰基礎設施 (RPKI)、BGP 源路由驗證(ROV)和 BGP 路徑驗證 (BGPSec)。
>RPKI
RPKI是一種專門為路由來源身份驗證開發的加密系統。RPKI 使用被稱為路由源授權(Route Origin Authorization, ROA)的加密簽名記錄。其基本思想是構建一個PKI(公鑰基礎設施)來完成對IP地址前綴和AS號的所有權和使用權的認證。
RPKI 允許網絡運營商通過使用私鑰和公鑰系統對BGP中的路由通告進行數字加密和簽名。信息可以使用私鑰加密和簽名,并且只能使用匹配的公鑰解密或驗證其簽名。數字簽名信息保證了在路由系統中看到的路由通告可以被驗證并且是真實的。

| 使用RPKI的BGP
>BGPSec
不過RPKI和ROV,只能防范如BGP路由劫持中的起源AS欺騙的簡單攻擊,像AS路徑篡改、BGP路由泄露等場景,則需要采用BGPSec方案。
BGPSec旨在補充BGP源路由驗證的不足,當它與ROV結合使用時,可以防范各種針對BGP的路由劫持攻擊。在路由宣告過程中,路由器從它的鄰居AS收到的IP前綴路由宣告消息進行簽名,簽名內容作為路由消息的BGPSec_Path屬性傳播給其它鄰居AS,當路由器接收到帶有BGPSec_Path屬性的IP前綴更新路由時通過檢查簽名判斷該路由的AS_Path路徑是否正確,若錯誤的話直接丟棄,并不廣播給其鄰居AS。
09
BGP用在什么地方?
BGP用于多種類型的網絡,包括:
互聯網服務提供商 (ISP):ISP 使用 BGP 在多個互聯網自治系統之間傳遞路由數據。這使得有效流量可在各種網絡和地理位置之間路由。
企業網絡:在工業網絡中,BGP 還用于跨多個站點或區域交換路由數據。這可以在同一組織的各個部門內實現有效的流量路由。
數據中心網絡:BGP用于數據中心網絡,在同一數據中心的不同部分之間或不同數據中心之間交換路由信息。這允許有效地路由流量并啟用負載平衡和故障轉移等功能。
服務提供商網絡:服務提供商使用 BGP 在不同網絡之間進行高效的流量路由并提供冗余。
域間路由:BGP是互聯網不同域之間使用的路由協議,它是唯一可以用來在不同自治系統之間交換路由信息的協議。
綜上所述,BGP廣泛應用于互聯網服務提供商、企業網絡、數據中心網絡、服務提供商網絡等不同類型的網絡,主要用于互聯網域間路由。
10
BGP 有其他替代方案嗎?
對于那些不想或不需要 BGP 提供的所有功能的人來說,有幾種選擇。其中最突出的是開放最短路徑優先 (OSPF) 和增強型內部網關路由協議 (EIGRP)。
OSPF
OSPF 用于在 IP 網絡中找到源和目標之間的最佳路徑,是一種內部網關協議 (IGP),可以在單個自治系統內路由數據包。與其他 IGP 不同,OSPF 是一種鏈路狀態路由協議。換句話說,它依賴于鏈路狀態信息來計算路由路徑并做出路由決策。OSPF 基于 Dijkstra 算法來尋找兩點之間的最短路徑。
OSPF 相對于其他路由協議(包括 BGP)的主要優勢之一是其高效的路徑選擇。此外,OSPF 比 BGP 具有更快的收斂時間,這意味著它可以快速檢測網絡中的變化并相應地更新其路由表。然而,OSPF 需要比 BGP 更多的內存和處理能力,因為它需要在其路由表中存儲有關鏈路的所有信息。
BGP 常用于 Internet 冗余、WAN 和 IaaS 環境。OSPF 主要用于 LAN 和數據中心,但偶爾也可用于 WAN 和 IaaS 環境。

| BGP 與OSPF 的應用場景
不過BGP 與OSPF 在大多數情況下一起使用。在數據中心,OSPF 通常是網絡交換機和/或路由器之間內部路由的通用協議。當該流量需要傳輸到另一個組織時,就需要BGP 協議了。
EIGRP
EIGRP 由思科在 1990 年代開發,最初僅限于在思科產品中使用。2013年前后,思科向IETF提出了EIGRP作為協議草案進行審查,最終批準成為官方標準。迄今為止,它仍處于 IETF 的草案模式。
與 BGP 不同,EIGRP 是一種內部網關協議,它在組織完全管理的網絡中動態路由數據流量,例如企業或政府。EIGRP 被視為混合協議,使用以下兩種協議類型的功能:
距離矢量路由,其中路由器定期發送消息,通知相鄰路由器網絡拓撲的任何變化;
鏈路狀態路由,發送消息通知每個路由器整個網絡拓撲。
EIGRP 使用擴散更新算法 (DUAL) 來計算網絡中到達目的地的最短路徑。該算法允許快速收斂時間,這意味著當網絡發生變化時,EIGRP 可以快速適應并找到新的數據傳輸路徑。
與 BGP 相比,EIGRP 具有幾個優點。它比 BGP 更容易配置和維護,因為它需要更少的參數和更少的人工干預。它還可以更有效地使用帶寬和內存等資源,更適合資源有限的網絡。而且它提供比 BGP 更快的收斂時間。
但EIGRP 也有一定的局限性。例如,雖然 EIGRP 同時支持 IPv4 和 IPv6 地址,但 BGP 同時支持 IPv4 和 IPv6 地址以及多個自治系統,這使得BGP更適合具有復雜拓撲結構的大型網絡。此外,由于 EIGRP 是專有協議,它在其他供應商設備上的實施可能具有挑戰性。

| BGP 與EIGRP的對比
11
BGP在數據中心網絡中的應用
下面介紹具體網絡架構場景下的BGP。在DC1場景中,有五排機架,排列成Spine-Leaf的網絡架構。推薦使用EBGP建立VXLAN Underlay網絡。每排機架采用EBGP時的網絡設計如下圖所示。每個主干或葉子交換機都有自己的 AS 編號。

| DC1場景下運行EBGP
EOR交換機部署DC2場景的EBGP設計如下圖所示。

| DC2場景下運行EBGP
第一排機架可以分配AS號AS65000和AS65001,然后每臺設備的AS號依次遞增1。如果在DC中選擇IBGP進行VXLAN Overlay路由交換,設計會很簡單,因為只需要為DC1中的所有設備分配相同的AS號。同樣的方法也可以用在DC2中,如下圖所示。

| DC1場景下運行IBGP

| DC2場景下運行IBGP
12
未來發展
隨著IPv4地址的枯竭,未來的互聯網將越來越多地使用IPv6地址。因此,未來的BGP協議可能會更好地支持IPv6地址。此外,隨著自動化技術的進步,BGP協議可能會更加智能化和自動化,以便更快速地適應網絡變化。
總的來說,未來的BGP協議可能會更加智能、自動化和安全,以適應不斷變化的互聯網環境和用戶需求。
審核編輯 :李倩
-
網絡安全
+關注
關注
11文章
3490瀏覽量
63425 -
路由協議
+關注
關注
1文章
128瀏覽量
30419
原文標題:圖解BGP協議:路由選擇與網絡安全
文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
動態BGP與靜態BGP的區別?
【§網絡安全技巧§】利用路由器的安全特性控制DDoS攻擊
動態BGP與靜態BGP的區別
BGP協議的路由選擇原則
bgp路由協議的路由屬性_BGP路由協議的優勢
圖解BGP協議:路由選擇與網絡安全
評論