提到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是纯软件的解决方案,不需要更新转发芯片去支持,因此只要其标准化后,任何厂家都可以很快推出支持的版本,