AS 路徑(AS path)
AS 路徑是 BGP 路由宣告的核心:一份依序排列的自治系統清單,列出封包為了抵達某一段位址區塊所會穿越的網路。若把 AS 路徑想成一份旅行行程,[C, B, A] 的意思就是「你會先經過網路 C,再經過 B,然後抵達擁有目的地的 A」。由右往左讀,就知道這個前綴位於何處、以及哪些網路自願承載通往它的流量。
每條 AS 路徑都是一跳一跳建起來的。擁有某前綴的網路會以一條只含自己的路徑來「起源」(originate)這條路由,譬如 [A]。每個把這條路由再宣告給鄰居的 AS,都會把自己的 AS 編號加在最前面,於是清單往左成長:[A] 變成 [B, A],再變成 [C, B, A]。因為最左邊的 AS 編號永遠是最近一個宣告者,路由器便能讀出究竟是誰把這條路由交給它的、以及一路回溯到起源的完整鏈條。這正是 BGP 之所以是路徑向量協定的原因。
AS 路徑同時擔負三件事。它防止迴圈(AS 會拒絕任何已列出自身編號的路徑)。它是路由選擇的決勝關鍵:當政策無法定奪時,BGP 通常偏好 AS 較少的那條路由——一個粗略、類似跳數、用來近似「較近」的指標。它也給了營運者一根操控桿:一個網路可以故意重複自己的編號,稱為 AS 路徑加長(AS path prepending,例如用 [A, A, A] 取代 [A]),讓一條路由看起來較長、因而較不吸引人,藉此把流量導向另一個進入點。
一條通往 198.51.100.0/24 的路由抵達你的路由器,其 AS 路徑為 [7922, 174, 64500]。可以這樣讀:AS64500 擁有這個區塊,它把路由宣告給 AS174(一家轉送供應商),AS174 再宣告給 AS7922,AS7922 把它交給你。共三個 AS 長。另一條競爭路由的路徑是 [3356, 64500],只有兩個 AS——在其他條件相同時,BGP 會偏好較短的那條。
AS 路徑列出一條路由所跨越的網路(起源在右側);較短的路徑通常在平手時勝出。
AS 路徑短,並不代表這條路由在里程或毫秒上短或快——一個 AS 可能橫跨一整片大陸,所以直連的 [起源] 路徑,可能比經過連線良好的轉送網路、AS 較多的路徑還慢。