2022-04-06

網際網路的基礎架構「BGP」是什麼?

網際網路的基礎架構「BGP」是什麼?
前面的文章我們介紹到了「網域名稱系統DNS」以及改善DNS風險問題的「域名系統安全擴充DNSSEC」,讓我們回到一開始提到的事件:
  • 台灣時間2021年10月4日晚上11時左右,美國社群媒體Facebook、Instagram及WhatsApp發生全球性的大當機,全球各地數千萬用戶不斷地反應當機情況,臉書在當機1小時後在Twitter上發文,僅表示會盡快修復,並未多解釋當機原因。–
當時各路資安專家普遍將問題判定為「邊界閘道器協定BGP」復原了代管Facebook網域名稱系統(DNS)的IP位址前綴,才讓使用者無法解析、存取Facebook和相關的所有域名(網址)。
在我們試著了解這個「邊界閘道器協定BGP」前,先認識BGP的前身「外部閘道協定EGP」可能會比較好理解。


外部閘道協定EGP是什麼?
在20世紀末,網路、電腦等東西才剛被發明出來,在最一開始時,所謂的網路傳輸只是一堆電腦用電線等等方式串起來,傳輸資料的成本跟時間遠超我們的想像,在當時,用貨車將硬碟運到指定地點搞不好都比網路傳輸來得快。由於當時串連到網路上的機器數量稀少,所以多數時候都是以人工的方式來指定每台電腦之間的連線路徑該怎麼走。

不過隨著網際網路的爆發性成長,以人工處理的連線方式越來越不可行,所以就有人發明了名為外部閘道協定,External Gateway Protocol(簡稱EGP)的連結協定。EGP是一種讓兩個路由器之間進行溝通的協定,通過EGP,兩台閘道可以互相告訴對方說,目前已知有哪些路是可以走的,哪條不行,其中哪條又是走得快的。

又過了一陣子,大家又發現光是有EGP還不夠用,因為一開始是讓每台機器都各自直接的接上網路,但時間一長,機器數量越來愈多的情況下,路由器的連結也越來越混亂、越來越難管理。所以就有人發明了自製系統AS(Autonomous System)的概念,將網路以閘道做區分隔成兩層的結構,最外層是外網,可以透過EGP來進行連結,閘道內則是以AS來做管理,就像是公司內部的網絡。


每一個AS都會有一個自治系統編號 AS number,並由具有一定程度規模的組織統一進行管理,例如網際網路服務供應商、大型學校、大公司等。每個AS內部的路由表都由該組織自行管理,並事先宣告自己持有哪些網段即可,網段則是由數個IP位置所組成。

總而言之,EGP的結構就是以樹狀圖的方式來處理閘道與閘道之間的關係,但想當然爾,隨著網路的成長,開始遇到能力匹配不了的問題,於是又有人提出了我們這篇文章要介紹的「BGP」。

邊界閘道器協定BGP是什麼?
邊界閘道器協定,Border Gateway Protocol簡稱BGP,是網際網路中一種重要的自治路由協定,它通過維護IP路由表來實現AS之間的連結。BGP的目的,就是要讓每個數據封包都能知道從哪裡去到他想要去的位置,以及決定從哪條路線過去最有效率。

BGP一開始的設計就是為了取代EGP相對複雜的網絡結構,這使得網際網路成為一個真正的分權制度。自1994年以來,第四版的BGP在網際網路上使用後,所有以前的版本現在都無法使用,第四版中主要的增強功能是通過支援無類別域間路由和路由聚合來減少路由表的大小。

前面的文章我們將各個電腦的IP位置比喻為地址,「連線要求、上傳、下載資料」就是封包可被比喻為包裹,那在BGP的架構中所謂的路由表就像是一張地圖,路由表儲存著指向特定網路位址的路徑,而BGP就是負責管理這些地圖的地方。

舉例來說,Google的DNS則是8.8.8.8,我們的查詢路徑如下:
  1. 首先就會從我這台電腦為起點
  2. 進到我們家的路由器
  3. 接著到網際網路服務供應商
  4. 一路到台北的交換機
  5. 接著進入了Google的路由器
  6. 最終進到了8.8.8.8這個IP位置。
「我們的電腦要連結到Google的DNS主機」這項封包,就是透過BGP中的路由表,在經過每個節點時找到最佳路徑,一路傳送過去的。

最後補充一下BGP透過鄰居關係來組網路的概念,以上面的例子來看,我跟網際網路服務供應商組了eBGP,並將我的路由發給他,而網際網路服務供應商則會協助把我的路由發到整個網際網路,最後再發送整個網際網路的所有路由回傳給我。

在這個架構中,所謂的External Border Gateway Protocol簡稱eBGP,就是是用來跟外面的路由進行交換的;相對的internal Border Gateway Protocol簡稱iBGP,則是用來與內部路由連接的協議,也就是所謂的內部網路。