跨網域路由與 BGP

路徑向量路由(path-vector routing)

想像你問路時,對方不是只說「大概 30 分鐘車程」,而是直接給你一份你會開過的城鎮清單:「先穿過 Springfield,再穿過 Riverton,然後就到了。」路徑向量路由就是這種「附上完整行程」的做法。每則路由宣告攜帶的不是距離,而是這條路由所經過、依序排列的完整網路清單。BGP 就是網際網路的路徑向量協定。

拿它和兩大經典的網域內路由家族相比。距離向量路由(如 RIP)只告訴鄰居一個距離——「我可以用 4 跳抵達 X」——這很精簡,但鏈路失效時可能陷入計數至無窮(count-to-infinity)的問題,因為沒有人看得到實際路徑。連結狀態路由(如 OSPF)則洪泛完整地圖,精確,但假設大家彼此信任、願意共享拓樸。路徑向量保留了距離向量「只告訴鄰居」的習慣(不向全世界洪泛),卻升級了訊息內容:你宣告的不是一個赤裸的數字,而是完整的 AS 路徑。這一招同時換來兩大好處。

第一,迴圈防止是自動且立即的:在接受一條路由之前,AS 會檢查自己的 AS 編號是否已出現在路徑中;若有,這條路由就會形成迴圈,於是被拒絕——不會有計數至無窮。第二,政策變得可行:因為你「看得到」一條路由穿越了哪些網路,你就能依據路徑上有誰來偏好、拒絕或過濾路由,而這正是跨網域路由所需要的,因為這裡的選擇關乎商業關係,而不只是跳數。

AS C 收到一條通往前綴 P 的路由,其 AS 路徑為 [B, A]。在 C 把它再宣告給 AS D 之前,它會在前面加上自己的編號:路徑變成 [C, B, A]。若日後有一則搞混的宣告帶著 [..., C, ...] 繞回 C,C 看到自己的編號已在路徑中,知道接受它會造成迴圈,便默默丟棄。

攜帶整條路徑,讓路由器能拒絕任何已含有自身 AS 的路由——即時偵測迴圈。

路徑向量以 AS 為單位防止路由迴圈,但它並不會讓路由變快或最佳化——而且它無法證明路徑為真,這正是路由劫持(宣告一條你其實沒有的路徑)之所以行得通的原因。

又稱
path vector路徑向量