提到SPB首先要先說一下PBB。PBB(Provider Backbone Bridging)是IEEE于2008年完成的802.1ah標準,為運營商城域以太網定義了一整套MACinMAC的轉發機制。但PBB只定義了轉發平面的封裝內容,當報文封裝上外層Ethernet報頭在運營商骨干區域二層網絡中時,仍然需要依靠傳統的STP進行環路避免和轉發控制。于是IEEE在2009年又定義了802.1Qay PBB-TE(Provider Backbone Bridge Traffic Engineering),用于在運營商的骨干區域中進行拓撲管理與環路保護,說白了就是通過手工方式配置一堆指定路徑取代STP的自動收斂。目前IEEE還有個相關的標準P802.1Qbf, PBB-TE infrastructure protection處于草案階段,預計2011年發布。
PBB-TE靜態規劃轉發路徑,明顯無法適用于大型二層網絡擴展,于是IEEE再搞出個P802.1aq SPB(Shortest Path Bridging)來,當前也還處于草案階段。從IEEE的資料上看SPB主要是為了解決STP阻塞鏈路浪費帶寬的問題而研究出來的。從實現上來看,同樣是采用了L2 ISIS作為其控制平面協議進行拓撲學習計算,用MACinMAC封裝方式在SPB區域內部進行報文傳輸。和TRILL很像吧,好在IEEE和IETF都是開放的標準化組織,不存在專利之爭。
SPB可細分為SPBV(VLAN QinQ)和SPBM(MACinMAC)兩個部分,目前看主要用到的是SPBM。

SPBM是標準的MACinMAC封裝,在SPB區域中數據報文也都是依靠外層MAC做傳統Ethernet轉發。外層Ethernet報頭中的源目的MAC就代表了SPB區域邊緣的UNI設備,此設備MAC是由L2 ISIS在SPB區域中傳遞的。
由于在SPB網絡中還是采用傳統Ethernet進行轉發,因此需要定義一系列的軟件算法以保證多路徑的廣播無環和單播負載均衡。下面介紹幾個主要的部分:
1、首先SPB定義了I-SID來區分多個拓撲,I-SID信息在數據報文中以BVID(外層Ethernet報頭中的VLAN Tag)形式攜帶,這樣可以解決不同業務多拓撲轉發的問題。
2、每個SPB節點都會為每個I-SID計算三棵樹:到達所有相關UNI節點的SPT(Shortest Path Tree)用于單播與組播報文的轉發;ECT(Equal Cost Tree)以處理兩個UNI間存在多條等價路徑時負載均衡轉發;自己為根的多播樹MT(Multicast Tree)用于未知單播與廣播報文轉發。
3、任意兩點間的Shortest Path一定是對稱的;ECT的負載均衡是基于不同I-SID分擔的;總的來說,SPB和TRILL/FabricPath相比主要有以下不同:

SPB目前的最大困擾是轉發路徑靠軟件算法保障,尤其在多路徑負載分擔時,對CPU計算壓力遠遠超過TRILL和FabricPath,因此實際轉發效率令人存疑。而且SPB的出發點是運營商的城域以太網環境應用,是否能適用于數據中心網絡還有待觀察。當前802.1aq SPB已經進入到Draft4.0,對其細節有興趣的同學可以去IEEE網站注冊下載學習。
SPB是純軟件的解決方案,不需要更新轉發芯片去支持,因此只要其標準化后,任何廠家都可以很快推出支持的版本,