什麼是 BGP? | 解釋 BGP 路由

邊界閘道通訊協定 (BGP) 是網際網路的路由通訊協定。就像郵局處理郵件一樣,BGP 選擇最高效的路線來傳遞網際網路流量。

學習目標

閱讀本文後,您將能夠:

  • Define BGP routing
  • Explore the relationship between autonomous systems
  • Explain how BGP can impact the functionality of the Internet

複製文章連結

什麼是 BGP?

邊界閘道通訊協定 (BGP) 就是網際網路的郵政服務。當有人把一封信投進郵筒時,郵政服務就會處理這封郵件,並選擇一條快速、高效的路線將這封信投遞給收件人。同樣地,當有人通過網際網路提交資料時,BGP 負責尋找資料能傳播的所有可用路徑,並選擇最佳的路由,這通常意味著在自治系統之間跳躍。

BGP 是通過啟用資料路由來使網際網路正常工作的通訊協定。當一位在新加坡的使用者載入一個原始伺服器位於阿根廷的網站時,BGP 就是使這種通信快速、高效地進行的通訊協定。

什麽是自治系統

網際網路是一個由網路組成的網路。它包括成千上萬個被稱為「自治系統」(autonomous system,AS)的更小網路。這些網路中的每一個實際上就是由單一組織運行的一個大型路由器池。

互聯網拓撲

如果我們繼續將 BGP 比作網際網路的郵政服務,那麼自治系統就相當於各郵政分局。一個城鎮可能有數百個郵箱,但郵箱中的所有郵件都必須先經過本地郵政分局,然後再運送到另一個目的地。自治系統中的內部路由器就好比郵箱。它們將出站流量路由到自治系統,然後使用 BGP 路由將這些流量傳輸到其目的地。

BGP 簡化版

上圖展示了一個簡化版的 BGP。在此版本中,網際網路上只有 6 個自治系統。如果 AS1 需要向 AS3 路由一個資料包,它有兩種不同的選擇:

跳躍到 AS2,然後到 AS3:

AS2 → AS3

或跳躍到 AS6,然後到 AS5、AS4,最後到 AS3:

AS6 → AS5 → AS4 → AS3

在這個簡化的模型中,決策似乎很簡單直接。AS2 路由所需的躍點比 AS6 路由要少,因此它是最快、最高效的路由。現在假設有成百上千個 AS,而且躍點數只是一種複雜的路線選擇演算法中的一部分。這就是網際網路上 BGP 路由的實際情況。

網際網路的結構是不斷變化的,新系統不斷出現,現有系統也會變得不可用。因此,每一個自治系統都必須掌握有關新路由和廢棄路由的最新資訊。這是通過點對點工作階段完成的,其中,每一個自治系統都會通過 TCP/IP 協定連接到相鄰的自治系統,以共用路由資訊。通過這些資訊,每個自治系統都能夠正確地路由出站資料。

在這裡,我們上面所做的比喻不再成立。與郵局不同,自治系統並非都屬於同一個組織。事實上,它們往往屬於互相競爭的公司。因此,BGP 路由有時會將業務因素考慮在內。自治系統往往會互相收取費用來傳輸通過其網路的流量,相關價格會成為最終選擇哪條路由的因素。

誰運作 BGP 自治系統?

自治系統一般屬於網際網路服務提供者(ISP)或其他大型組織,例如科技公司、高校、政府機構和科研機構。每個希望交換路由資訊的 AS 都必須具有一個註冊的自治系統編號(ASN)。網際網路號碼分配機構(IANA)向地區網際網路註冊機構(RIR)分配 ASN,後者再將其分配給 ISP 和網路。ASN 是介於 1 到 65534 之間的 16 位元數字,以及介於 131072 和 4294967294 之間的 32 位元數字。截至 2018 年,全世界使用中的 ASN 共有大約 6.4 萬個。只有外部 BGP 才需要 ASN。

外部 BGP 與內部 BGP 有什麼區別?

在網際網路上,路由交換和流量傳輸是通過外部 BGP(eBGP)進行的。自治系統也可使用 BGP 的內部版本來路由內部網路上的資料,也就是 iBGP。應該指出的是,使用內部 BGP 並非使用外部 BGP 的前提條件。自治系統可從多種內部協定中選擇,來連接內部網路上的路由器。

外部 BGP 就像國際運輸。在國際上運送郵件時,需要遵循特定的標準和規則。郵件到達目的地國家後,必須通過目的地國家的本地郵政服務才能達到其最終目的地。每個國家都有自己的內部郵政服務,不必遵循其他國家的相同規則。同樣,每個自治系統都可以有自己的內部路由式通訊協定,用於路由自身網路內部的資料。

BGP 的缺陷以及解決方法

在 2004 年,一家名為 TTNet 的土耳其 ISP 意外地向相鄰的網路發佈了錯誤的 BGP 路由。這些路由聲稱,TTNet 自己是網際網路上所有流量的最佳目的地。隨著這些路由不斷傳播到越來越多的自治系統,發生了一次大規模的中斷,導致持續一天的危機,世界各地很多人都無法訪問部分或全部網際網路。

同樣,在 2008 年,一家巴基斯坦 ISP 嘗試使用一個 BGP 路由來阻止巴基斯坦用戶訪問 YouTube。該 IPS 隨後意外地將這些路由發給了鄰近的自治系統,該路由在網際網路上的 BGP 網路中迅速傳播開來。這個路由將嘗試訪問 YouTube 的使用者發送到一個無效的目的地,導致 YouTube 數小時內無法訪問。

這些是所謂 BGP 劫持的實例,而這種情況並不總是意外發生的。2018 年 4月,攻擊者故意創建了一個錯誤的 BGP 路由,將原定目的地為亞馬遜 DNS 服務的流量重定向。通過將這些流量重定向給自己,攻擊者成功竊取了價值 10 萬美元的加密貨幣

這樣的事件之所以會發生,是因為 BGP 的路由共用功能依賴于信任,以及自治系統隱式信任與它們共用的路由。當對等網路(有意或無意地)公告不正確的路由資訊時,流量就會到達錯誤的目的地,有可能產生惡意的結果。

幸運的是,在保護 BGP 方面已經取得了一些進展。最引人注目的是 2008 年推出的資源公開金鑰基礎結構(RPKI)的路由安全框架。RPKI 使用被稱為路由源授權(Route Origin Authorization, ROA)的加密簽名記錄,以驗證哪個網路運營商允許使用 BGP 來公告某個組織的 IP 位址。這確保了獲授權方才能公告某個組織的首碼。

但僅有 RPKI 的存在並不足夠。如果大型網路沒有部署 RPKI,就有可能傳播大規模的劫持攻擊。目前,超過 50% 的頂級網際網路服務提供者在某種程度上支援 RPKI,但需要大多數的支援才能完全保障 BGP 的安全。網路運營商可以通過實施 RPKI 和使用 Cloudflare 路由洩漏檢測等網路警報技術來保護其網路。這個功能可以讓客戶在有未經授權者發佈其首碼收到通知,從而預防 BGP 劫持攻擊。