TRILL(TRansparent Interconnect of Lots of Links)和FabricPath。2010年3月時(shí)TRILL已經(jīng)提交了IETF RFC 5556規(guī)范(Transparent Interconnection of Lots of Links (TRILL): Problem and Applicability Statement),此RFC只是描述了TRILL要解決的問題以及應(yīng)用范圍,定義協(xié)議細(xì)節(jié)的文檔目前都還處于Draft階段,形成完整的協(xié)議標(biāo)準(zhǔn)體系應(yīng)該還得1-2年。
TRILL并不是專門為數(shù)據(jù)中心開發(fā)的技術(shù),其定義的是在大型Ethernet網(wǎng)絡(luò)中解決多路徑問題的方案。FabricPath是Cisco在TRILL標(biāo)準(zhǔn)之上加入了很多私貨的專門為數(shù)據(jù)中心而設(shè)計(jì)的一個(gè)超集,基本的控制平面與數(shù)據(jù)平面二者沒有明顯區(qū)別。
控制平面上TRILL引入了L2 ISIS做為尋址協(xié)議,運(yùn)行在所有的TRILL RB(Routing Bridge)之間,部署于一個(gè)可自定義的獨(dú)立協(xié)議VLAN內(nèi),做的還是建立鄰接、繪制拓?fù)浜蛡鬟fTag那幾件事。數(shù)據(jù)平面在內(nèi)外層Ethernet報(bào)頭之間引入了TRILL報(bào)頭,使用NickName作為轉(zhuǎn)發(fā)標(biāo)識(shí),用于報(bào)文在TRILL網(wǎng)絡(luò)中的尋址轉(zhuǎn)發(fā)(可理解為類似IP地址在IP網(wǎng)絡(luò)里面轉(zhuǎn)發(fā)時(shí)的作用)。每個(gè)RB都具有唯一的Nickname,同時(shí)維護(hù)其他RB的TRILL公共區(qū)域MAC地址、Nickname和私有區(qū)域內(nèi)部MAC地址的對(duì)應(yīng)關(guān)系表。因?yàn)門RILL封裝是MACinMAC方式,因此在TRILL公共區(qū)域數(shù)據(jù)報(bào)文可以經(jīng)過傳統(tǒng)Bridge和Hub依靠外部Ethernet報(bào)頭轉(zhuǎn)發(fā)。TRILL報(bào)頭格式如下圖所示:
V (Version): 2 bit,當(dāng)前Draft定義為0。
R (Reserved): 2 bits,預(yù)留。
M (Multi-destination): 1 bit,0為已知單播,1為未知單播/組播/廣播,此時(shí)Egress RBridge Nickname意味著當(dāng)前轉(zhuǎn)發(fā)使用多播樹的根。
Op-Length (Options Length): 5 bit,Option字段長度。
Hop Count: 6 bit,最大跳數(shù),逐跳減一,為0丟棄,防止環(huán)路風(fēng)暴。
Egress RBridge Nickname: 16 bit,已知單播標(biāo)示目的私網(wǎng)MAC對(duì)應(yīng)的RB,多播則標(biāo)示多播樹根RB。中間傳輸RB節(jié)點(diǎn)不能改變此字段值。
Ingress RBridge Nickname: 16 bit,標(biāo)示報(bào)文進(jìn)入TRILL區(qū)域的初始邊緣RB,中間傳輸RB節(jié)點(diǎn)不能改變此字段值。
Options:目前只定義了CHbH (Critical Hop by Hop)和CItE (Critical Ingress to Egress)兩個(gè)1bit的標(biāo)志位,用于說明后面的Option預(yù)留內(nèi)容是需要逐跳設(shè)備識(shí)別處理的或是首末端設(shè)備必須識(shí)別處理的。至于真正的Option目前都還沒有定義。下圖為Option字段內(nèi)容:
普通Ethernet報(bào)文在首次從TRILL邊緣RB設(shè)備進(jìn)入TRILL區(qū)域時(shí),作為未知單播還是依照傳統(tǒng)以太網(wǎng)傳播方式,廣播給所有其他的RB節(jié)點(diǎn)。但是除了邊緣RB外,TRILL區(qū)域中間的RB和傳統(tǒng)Bridge都不會(huì)學(xué)習(xí)此數(shù)據(jù)報(bào)文中私有區(qū)域內(nèi)部MAC地址信息,有效的降低了中間設(shè)備的MAC地址表壓力。為了防止環(huán)路同時(shí)做到多路徑負(fù)載均衡,TRILL的每個(gè)RB在初始建立鄰接繪制拓?fù)鋾r(shí),都會(huì)構(gòu)造出多個(gè)多播樹,分別以不同的Nickname為根,將不同的未知單播/組播/廣播流量Hash到不同的樹,分發(fā)給其他所有RB。由于全網(wǎng)拓?fù)湮ㄒ磺覙?gòu)造樹時(shí)采用的算法一致,可保證全網(wǎng)RB的組播/廣播樹一致。在RB發(fā)送報(bào)文時(shí),通過將報(bào)文TRILL頭中的M標(biāo)志位置1來標(biāo)識(shí)此報(bào)文為多播,并填充樹根Nickname到目的Nickname字段來確保沿途所有RB采用同一顆樹進(jìn)行廣播。組播與廣播報(bào)文的轉(zhuǎn)發(fā)方式與未知單播相同。已知單播報(bào)文再發(fā)送的時(shí)候,會(huì)根據(jù)目的RB的Nickname進(jìn)行尋路,如果RB間存在多條路徑時(shí),會(huì)逐流進(jìn)行Hash發(fā)送,以確保多路徑負(fù)載分擔(dān)。
另外TRILL除了支持外層Ethernet封裝在傳統(tǒng)以太網(wǎng)中傳輸外,還規(guī)定了一種外層PPP封裝方式可以跨廣域網(wǎng)技術(shù)傳輸。以下是兩種典型的TRILL報(bào)文封裝方式:
TRILL的主要技術(shù)結(jié)構(gòu)就是上面這些了,對(duì)更細(xì)節(jié)內(nèi)容感興趣的同學(xué)可以自行去IETF翻翻相關(guān)Draft。目前各個(gè)芯片廠商都已經(jīng)進(jìn)入TRILL Ready的階段,只要技術(shù)標(biāo)準(zhǔn)完善發(fā)布并被廣泛客戶所接受,相關(guān)產(chǎn)品商用是很快的。