最近工作太忙碌,沒什麼空閒的時間整理筆記。因為專案需求的關係,最近學習了一種比較難找到相關文件的二層網路技術 SPB

SPB 最短路徑橋接

SPB (Shortest Path Bridging) 最短路徑橋接,同時也是 IEEE 802.1aq 的 IEEE 標準,根據實踐技術的方式又分為 SPBV 和 SPBM。但實際上有在用的只有 SPBM。

SPB 的技術主要是為了解決傳統乙太網路的生成樹協定 STP 的原理限制。在 STP 中,為了防止廣播風暴,會透過算法避免網路迴圈,將一些串聯成環的網路路徑封住,導致實體線路連接沒有被充分利用、次優傳輸路徑以及收斂時間較慢的問題。在一般小型企業的情境來說,不是什麼太大的問題,也不太會有人感覺到差異。但一旦規模擴大,STP 會限制網路的可擴展性和整體效率。

圖片取自 Alcatel Lucent

SPB 應運而生,旨在克服 STP 的這些挑戰。與 MPLS 需要多個協定(如 LDP、OSPF、MP-BGP 等)的「協定堆疊」不同,SPB 僅依賴單一協定——IS-IS (Intermediate System to Intermediate System),來提供多路徑拓撲、位址學習和 VPN 路由傳輸等功能。可以說 SPB 是 MPLS 的配置簡化版。

SPB 的技術原理

SPB 的核心技術在於其精巧的數據平面和控制平面設計:

數據平面採用 PBB(又稱 MAC-in-MAC)封裝。當封包進入 SPB 網路時,會被包裹上一個 PBB 頭部,該頭部包含 Backbone VLAN (B-VLAN)、Service Instance Identifier (ISID)、Backbone Source MAC Address (B-SA) 和 Backbone Destination MAC Address (B-DA)。

ISID (Service Instance Identifier):這是一個 24 位元的數字,用於唯一識別服務實例、租戶或 VPN。不同的 SPB 服務被分配不同的 ISID,彼此隔離。

SPB 骨幹節點不學習客戶端的 MAC:在 SPB 骨幹網內部(即在 BEB 和 BCB 節點之間),封包轉發完全依賴於外部 PBB 頭部 (BMAC 和 B-VLAN),而不是內部頭部或客戶端 MAC 地址。降低了骨幹節點的儲存資源消耗。

設備角色:

BEB (Backbone Edge Bridge):位於 PBB 網路邊緣的 SPB 交換機,負責學習並封裝客戶端幀,以便在骨幹網路中傳輸。和 MPLS 的 Edge Router 一樣,類似打上標籤讓整個網路依照標籤傳輸,差別在於 SPB 是改以骨幹路由器彼此間的 MAC 來代替標籤,直接在L2傳輸。

BCB (Backbone Core Bridge):位於 PBB 網路核心的 SPB 節點。主要作為 PBB 網路的轉發橋接器,不學習任何客戶端 MAC 地址。與 MPLS 的 Edge Router 不太一樣的點在於,SPB 的網路不能直接與外網連結,必須透過轉換才能與外網交流,是相對於 MPLS 的一個缺點。

控制平面:RFC 6329 IS-IS 等成本樹 (Equal-cost trees)

IS-IS (Intermediate System to Intermediate System):SPB 利用 IS-IS 協定來建立轉發數據庫 (FDB)。IS-IS 是一個可擴展的鏈路狀態協定,執行 Dijkstra 的最短路徑 (SPF) 演算法來計算路徑。

多個拓撲與最短路徑:與 STP 建立單一根橋接樹不同,在 SPB 網路中,每個節點都會建立一個以自身為根的拓撲樹。這確保了任何兩個節點之間的流量始終沿最短路徑傳輸,並且網路中沒有任何鏈路被禁用,所有路徑都是可用的。

負載平衡:SPB 網路支援多達 16 個 BVLAN。通過將不同的租戶服務 (ISID) 映射到不同的 BVLAN,可以實現負載平衡。但這個負載均衡是需要手動配置的,不是自動依照流量平衡來配置的,簡單說服務設定後,需要自己大概計算一下可能的服務消耗比例,看要分成幾個BVLAN。

路徑對稱性:SPB 網路的一個重要特性是路徑對稱性,即從節點 X 到節點 Y 的路徑與從節點 Y 到節點 X 的路徑完全相同。MPLS 相對來說只看標籤來轉發封包,不看源頭的緣故,路徑選擇上可能會走不同的路徑,需要透過額外的 RSVP 等協定來控制。

在每個BEB節點上有兩種類型的虛擬連接埠: 服務存取點(Service Access Point,SAP):SAP是與SPB服務將實體連接埠和特定的客戶流量類型(未標記、單標記、雙標記或全部)綁定的UNI端的邏輯介面。可以將多個SAP綁定到同一個實體端口,從而將不同的客戶流量封裝對應到不同的SPB服務。

這邊要說明一下標記的定義,標記指的是標註 vlan 的 access port 會顯示 (tagged <vlan number> ),未標記則指的是 trunk port 會顯示為 (untagged) 通常會有許多 vlan member 綁定在這個介面下。

服務分發點(Service Distribution Point,SDP):SDP是將SPB服務綁定到實例化服務的遠端BEB的NNI端的邏輯連接埠。 SDP僅在CP中為具有特定服務的遠端BEB動態創建,並且只為具有該特定服務的SAP的遠端BEB創建。

踩坑心得

由於 SPB 的建置不是我工作的主要目標,因此只有一些比較粗淺的理解。 SPB 的配置上相對 MPLS 簡單不少,只要 SPB 核心網路建起來後,幾乎所有的服務只要在其中一個 BEB 設定就行了,路徑啊、Policy啊以及 VPN 等服務,都可以自動發送建立。非常方便,但缺點就是,支援 SPB 的廠商很少,要找到相關的文件有點困難,而且不同的 SPB 廠商對於技術的實踐也有不小的差異性,導致後續維護困難。

SPB 組成是透過 IS-IS 的 IGP 協定,整個服務的設定也是透過 IS-IS 的擴展協定來定義,類似於 BGP ,將控制訊息包在路由協定中。在 Alcatel Lucent 的設備實踐上,不需要設定 IP,只要串聯起來,系統會自動偵測判定組成 SPB 核心網路 (這個不是很確定,因為在後續被 Nokia 收購後,還是至少需要有其他 IGP 作為底層來達到)

整體服務來說也很完整,L2VPN、L3VPN、VRF 等都有支援,配置簡單,如果不是因為我主要接觸的廠牌設備不支援,不然小型的企業網路我可能也會選擇 SPB 來做為網路的主要架構。

但也因為支援的廠牌不多的緣故,主流的骨幹網路還是以 MPLS 為主 (我很懷疑啦,哪個網路工程師沒事自己在玩MPLS) ,且如今還有新興的 L2VPN 網路技術 EVPN 的出現,EVPN 基本上算是 MPLS 和 MP-BGP 的擴展延伸,在既有網路升級上,MPLS 可能還是相對 SPB 具有優勢。最近嘗試透過 Nokia 重現 Alcatel Lucent 的 SPBM 功能,按照手冊設定也是需要先建起 MPLS。所以對於未來是否還會遇到 SPB,抱持著不看好的悲觀性。

以上是一個比較粗略的心得,等這個專案完成之後,應該會有個相對完整和關於我比較熟悉的 MPLS 網路的心得分享。