我們先從IPv4 Unicast開始,最早最早,BGP也只支援IPv4 Unicast。
從IPv4 Unicast單播的世界開始討論
當BGP設定好以後,協定所載送的資訊(乘客),很容易找到。只要執行 “show ip bgp”命令,所顯示出來的,就是目前BGP協定所維護的BGP資訊庫,也就是所有的BGP資訊的集合。
BGP資訊(乘客)的集合,我故意用「BGP資訊庫」來稱呼,和其他人的習慣不同。我知道有些教材或文件,稱為BGP路由表。為了避免讓大家和IP網路層的路由表(show ip route的輸出),有所混淆,我這裡不採用這個名詞。
每一筆BGP資訊,就是一筆使用中的IPv4單播目的地網段的資訊描述。
大致上,BGP資訊庫中,每一筆的BGP資訊,包含兩個部分。
(NLRI, Path Attributes)
乘客欄位一,Network Layer Reachability Information (NLRI)
我先不翻譯,這是IETF的用詞,簡單地說,就是IPv4目的地網段。例如,168.95.0.0/16。我們經常會聽到,目前的IPv4全球網段數目,超過500,000筆,所指的就是,所有可能的IPv4目的地網段,也就是所有可能的NLRI使用中的組合,超過五十萬個。
IETF稱呼這個欄位為泛用的名詞NLRI,我認為很有道理。馬上我們就會討論到這點。
乘客欄位二,Path Attributes,路徑屬性集合
教材裡面都看得到的,例如NEXT_HOP、AS-PATH、Origin、Local Preference等等。有了路徑屬性集合,路由器軟體才能針對BGP資訊庫來做過濾、篩選、內容調整、和檢查等等。
我這裡只解釋NEXT_HOP,其他的我留給教材。
NEXT_HOP欄位,是一個IPv4地址,會直接出現在IP網路層路由表 (show ip route所印出)的 “via” 後面,意思是經由哪一個IPv4地址,可以到達這個NLRI。在BGP協定的世界裡,NEXT_HOP幾乎都”不是”本地路由器的直接相接的網段,因此,NEXT_HOP還要再做遞迴回頭查詢IP網路層路由表,才能知道,真正直接相接的相鄰地址,到底是哪一個。
給定任何一個單播的目的地(NLRI),如果有很多BGP資訊,都告訴我們如何到達,那麼,只有”最好”的那一筆,他的NEXT_HOP才會進到IP網路層的路由表,當然NLRI就是目的地網段。如何選擇 “最好”,是BGP複雜的另一個主題,教材裡面有,Cisco也在網站上整理成13大規則 “BGP Best Path Selection Algorithm”,我這裡先不重複。
為何我只介紹 NEXT_HOP?因為,NEXT_HOP就是冠軍 (“最好”) 的獎盃,只有冠軍的NEXT_HOP,才會變成 “show ip route” 真正的 Via。
等等,只有這樣嗎?教材通常都寫得很複雜,簡單分類之後,真的只有這樣。
One more thing…
IPv4單播的世界以外,BGP協定必須要被擴充,新的協定,稱為Multiprotocol BGP (MBGP)。這個擴充協定,從名稱看起來很複雜,但是,如果從乘客資訊來看,並沒有想像中複雜。
MBGP所修改的欄位,只有NLRI,和NEXT_HOP。例如IPv6單播的世界,如果也用BGP來載送資訊,IPv6的目的的網段,改編碼成新的NLRI,同時NEXT_HOP改編成IPv6地址。其他完全不變!
例如是MPLS VPN的世界,NLRI所編碼的,除了VPN內部的目的地IPv4/IPv6網段之外,再加上Route Distingusher(RD),和VPN標籤。NEXT_HOP變成VPN內部的IPv4/IPv6地址。其他也都完全不變!
0 意見:
張貼留言
小技巧:也可以 匿名 留言!