卓志強(qiáng)
摘 要:該論文討論了TRILL協(xié)議在以太網(wǎng)交換機(jī)上的設(shè)計(jì)和實(shí)現(xiàn)方法。首先簡(jiǎn)要介紹了數(shù)據(jù)中心網(wǎng)絡(luò)的發(fā)展和所涉及的技術(shù),并提出了使用TRILL來(lái)構(gòu)建數(shù)據(jù)中心二層網(wǎng)絡(luò)。再介紹了TRILL中相關(guān)概念、工作原理和優(yōu)勢(shì)。提出了交換機(jī)上實(shí)現(xiàn)TRILL協(xié)議功能的模塊模型、以及各個(gè)模塊的實(shí)現(xiàn)。該論文的研究為實(shí)現(xiàn)數(shù)據(jù)中心交換機(jī)的TRILL功能提供了啟發(fā)性的解決方案。
關(guān)鍵詞:多鏈接透明互聯(lián) 路由橋 數(shù)據(jù)中心
中圖分類(lèi)號(hào):TN919 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2015)03(c)-0039-02
1 背景
信息化發(fā)展到今天,已經(jīng)進(jìn)入了云計(jì)算平臺(tái)的時(shí)代,而服務(wù)器集群技術(shù)的高可用性和虛擬服務(wù)器動(dòng)態(tài)遷移技術(shù),在數(shù)據(jù)中心容災(zāi)及計(jì)算資源調(diào)配方面得以廣泛應(yīng)用,這兩種技術(shù)要求實(shí)現(xiàn)大范圍的二層的數(shù)據(jù)中心網(wǎng)絡(luò)接入,而原先的標(biāo)準(zhǔn)——生成樹(shù)協(xié)議(STP)因其一些固有缺陷將不再適合超大型數(shù)據(jù)中心的擴(kuò)展。
STP在數(shù)據(jù)中心網(wǎng)絡(luò)應(yīng)用中的缺陷表現(xiàn)為以下幾點(diǎn):
(1)STP是通過(guò)阻斷端口來(lái)工作的,所有的冗余鏈路不進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),該方式雖然解決了二層數(shù)據(jù)環(huán)路的問(wèn)題,卻帶來(lái)了帶寬資源的浪費(fèi),而數(shù)據(jù)中心因其巨大的數(shù)據(jù)通訊量,對(duì)帶寬資源的浪費(fèi)是比較難以接受的。
(2)STP整網(wǎng)只有一棵生成樹(shù),其特點(diǎn)是所有結(jié)點(diǎn)交換機(jī)都只看到從它自身到達(dá)根橋的枝干,如果一個(gè)橋設(shè)備要到達(dá)相鄰枝干上的橋設(shè)備,哪怕它們之間有直連的鏈路,數(shù)據(jù)報(bào)文都要經(jīng)過(guò)根橋中轉(zhuǎn)后才能到達(dá),這影響了整網(wǎng)的轉(zhuǎn)發(fā)效率,同時(shí)造成了根橋的轉(zhuǎn)發(fā)瓶頸,數(shù)據(jù)中心對(duì)數(shù)據(jù)轉(zhuǎn)發(fā)的低延遲、瓶頸的丟包率需求會(huì)對(duì)此提出改進(jìn)要求。
(3)以太網(wǎng)數(shù)據(jù)幀是沒(méi)有TTL的,這會(huì)造成一旦數(shù)據(jù)在二層網(wǎng)絡(luò)中出現(xiàn)環(huán)路,會(huì)造成整個(gè)網(wǎng)絡(luò)立即癱瘓,而且還無(wú)法自愈,尤其是廣播幀,這雖然不是STP協(xié)議的問(wèn)題,但我們可歸其為STP網(wǎng)絡(luò)的問(wèn)題。
2 課題的提出和意義
TRILL(Transparent Interconnec tion of Lots of Link,多鏈接透明互聯(lián))正是為了彌補(bǔ)當(dāng)前STP協(xié)議在數(shù)據(jù)中心使用缺陷而產(chǎn)生的,其目標(biāo)正是解決上述STP存在的問(wèn)題。協(xié)議把2層配置和靈活性與3層融合和規(guī)模有效結(jié)合在一起。大二層不需要配置的情況下,就可實(shí)現(xiàn)整網(wǎng)無(wú)環(huán)路轉(zhuǎn)發(fā)。為數(shù)據(jù)中心虛擬化(虛擬機(jī)+網(wǎng)絡(luò))奠定基礎(chǔ),更是為跨地域的數(shù)據(jù)中心之間的承載網(wǎng)網(wǎng)絡(luò)(云網(wǎng)絡(luò))奠定基礎(chǔ)。
3 TRILL協(xié)議分析與實(shí)現(xiàn)
3.1 TRILL標(biāo)準(zhǔn)分析
本課題研究我們針對(duì)的協(xié)議標(biāo)準(zhǔn)主要是RFC6325,RFC6326和RFC6327。RFC6325是TRILL協(xié)議草案,介紹了TRILL相關(guān)概念,同時(shí)介紹了TRILL協(xié)議轉(zhuǎn)發(fā)面的實(shí)現(xiàn)。RFC6326介紹了TRILL控制面的實(shí)現(xiàn)。RFC6327介紹了ISIS for TRILL鄰接狀態(tài)機(jī)的過(guò)程。
3.2 TRILL工作原理
RFC 6325,RFC6327兩個(gè)標(biāo)準(zhǔn)詳細(xì)介紹了TRILL工作原理。RBridge通過(guò)運(yùn)行的鏈路狀態(tài)協(xié)議(通過(guò)ISIS擴(kuò)展的)認(rèn)知TRILL Campus的拓?fù)?。并使用最短路徑?shù)算法生成從該RBridge到達(dá)TRILL Campus里的各個(gè)RB的路由轉(zhuǎn)發(fā)表(稱(chēng)之為T(mén)RILL路由表)。RBridge接收到普通以太網(wǎng)數(shù)據(jù)幀時(shí)(這里專(zhuān)指802.1)查找Mac表,若該Mac源發(fā)自某TRILL Edge RBridge,就將數(shù)據(jù)幀轉(zhuǎn)換成TRILL數(shù)據(jù)幀在TRILL Campus里轉(zhuǎn)發(fā),TRILL數(shù)據(jù)幀包含有源目RBridge信息,而RBridge則有到達(dá)各個(gè)RBridge的路由信息,這樣RBridge可以對(duì)TRILL數(shù)據(jù)幀進(jìn)行轉(zhuǎn)發(fā),當(dāng)一臺(tái)RBridge接收到一個(gè)TRILL數(shù)據(jù)幀時(shí),該數(shù)據(jù)幀的目的RBridge為其自身,則解封裝TRILL報(bào)頭,獲得最初進(jìn)入TRILL Campus的以太網(wǎng)數(shù)據(jù)幀,再進(jìn)行轉(zhuǎn)發(fā)。
這也就是說(shuō)TRILL作為二層轉(zhuǎn)發(fā)技術(shù),通過(guò)引入三層路由的鏈路狀態(tài)發(fā)現(xiàn)協(xié)議將此前的Bridge升級(jí)為了具備路由能力的Routing-Bridge。
TRILL協(xié)議首先針對(duì)二層環(huán)路沒(méi)有TTL的問(wèn)題進(jìn)行了改進(jìn),在TRILL報(bào)文頭中引入了TTL字段(即Hop Count),這樣TRILL報(bào)文在TRILL Campus中即使發(fā)生了環(huán)路問(wèn)題也不至于造成嚴(yán)重的后果。
另外TRILL協(xié)議對(duì)多播及廣播報(bào)文的轉(zhuǎn)發(fā)設(shè)計(jì)了分發(fā)樹(shù)的多播轉(zhuǎn)發(fā)行為,與STP的生成樹(shù)算法不同的是TRILL的分發(fā)樹(shù)是從ISIS的網(wǎng)絡(luò)拓?fù)渲杏?jì)算產(chǎn)生的,并為每一個(gè)VLAN生成一棵分發(fā)樹(shù),在發(fā)生VLAN變化或接口變化時(shí),這種分發(fā)樹(shù)的過(guò)程不需要額外的配置,完全是由RBridge自動(dòng)完成的。當(dāng)一臺(tái)邊緣RBridge收到一個(gè)某VLAN的廣播幀或多播幀時(shí),RBridge除了向自己的其它普通VLAN口分發(fā)該數(shù)據(jù)幀外,還要封裝該數(shù)據(jù)幀為T(mén)RILL數(shù)據(jù)幀,目的RBridge為該VLAN分發(fā)樹(shù)的根橋,通過(guò)根橋?qū)⒃摂?shù)據(jù)幀擴(kuò)散的與該VLAN相關(guān)的其它所有RBridge設(shè)備上。
因此,TRILL有如下優(yōu)勢(shì):
(1)帶寬充分利用。
RBridge Campus與STP相比具有更好的網(wǎng)絡(luò)帶寬利用效果,這一特性對(duì)于數(shù)據(jù)中心場(chǎng)景而言具有很重要意義。TRILL構(gòu)建網(wǎng)絡(luò)的帶寬資源得到充分的利用,不存在阻塞鏈路的情況。
(2)最優(yōu)路徑。
TRILL Campus的數(shù)據(jù)報(bào)文傳輸都是使用最短路徑傳輸,這也明顯優(yōu)于STP。
選擇最短路由進(jìn)行報(bào)文傳輸是TRILL的技術(shù)特征,當(dāng)同時(shí)存在多條最短路徑的情況下RBridge應(yīng)能支持ECMP功能,RBridge在轉(zhuǎn)發(fā)中自動(dòng)為其進(jìn)行負(fù)載分擔(dān)。
(3)易管理性。
TRILL的易管理性從組網(wǎng)上體現(xiàn)為將網(wǎng)絡(luò)扁平化,這將大大降低網(wǎng)絡(luò)管理的復(fù)雜性。
3.3 TRILL協(xié)議的概要設(shè)計(jì)
本章描述整個(gè)TRILL功能的模塊劃分,指明各模塊所需具備的功能與職責(zé);分析模塊間的控制流與數(shù)據(jù)流。具體如下:
通過(guò)對(duì)TRILL的協(xié)議的數(shù)據(jù)面和控制面的需求分析,以太網(wǎng)交換機(jī)的TRILL協(xié)議實(shí)現(xiàn)主要由以下幾個(gè)模塊組成:
(1)ISIS模塊。
負(fù)責(zé)實(shí)現(xiàn)TRILL控制面協(xié)議部分。要實(shí)現(xiàn)TRILL控制面協(xié)議,涉及:
①協(xié)議報(bào)文收發(fā);
②鄰居發(fā)現(xiàn)及其鄰居表項(xiàng)下發(fā);
③接口狀態(tài)維護(hù)(DRB及指派forwarder),以及接口狀態(tài)引起的端口配置變化。
④Nickname路由表的生成及其表項(xiàng)下發(fā)
⑤分發(fā)樹(shù)生成,及其分發(fā)樹(shù)轉(zhuǎn)發(fā)表項(xiàng)下發(fā)。
⑥TRILL LSP通告處理
(2)Netlink Socket模塊。
Netlink Socket模塊是內(nèi)核與應(yīng)用程序交互的通訊模塊,利用該Socket:
①將“二層接口表,RBridge信息,mac信息,VLAN信息”通告給ISIS模塊;
②支持ISIS通過(guò)Netlink Socket寫(xiě)操作通告內(nèi)核。
(3)TRILL RBridge模塊。
該模塊涉及的功能包括以下表項(xiàng)的維護(hù)建立:本地Nickname 表、RBridge鄰接表、RBridge路由表(TRILL Nickname路由表)、分發(fā)樹(shù)轉(zhuǎn)發(fā)表。
(4)端口管理模塊。
此模塊對(duì)上提供二層接口列表的信息庫(kù),以及接口事件通告,接口狀態(tài)維護(hù)等業(yè)務(wù),對(duì)下掛接不同的接口驅(qū)動(dòng)。
TRILL Frame驅(qū)動(dòng)是掛接于二層接口之下的,端口管理模塊要為T(mén)RILL生成邏輯接口,這里的邏輯接口還是邏輯鏈路接口,該鏈路接口所對(duì)應(yīng)的邏輯物理接口為驅(qū)動(dòng)層提供的邏輯物理口。其它與二層接口相關(guān)的功能模塊都建立于邏輯接口之上。要想讓TRILL針對(duì)所有這些二層接口之上的功能模塊實(shí)現(xiàn)透明化必須關(guān)注以下關(guān)注點(diǎn):
①TRILL報(bào)文接收時(shí)轉(zhuǎn)化為T(mén)RILL邏輯接口向上遞送。
②以太網(wǎng)報(bào)文CPU發(fā)送時(shí)查找MAC表,將查找到的出接口(邏輯接口)正確掛接到TRILL Frame設(shè)備上發(fā)送。
③要能區(qū)分識(shí)別出TRILL單播邏輯口及TRILL多播邏輯口,以便“TRILL Frame”模塊能夠正確發(fā)送TRILL報(bào)文。
(5)TRILL Frame模塊。
此模塊為T(mén)RILL Frame驅(qū)動(dòng),處理TRILL報(bào)文的封裝和解封裝,該驅(qū)動(dòng)涉及與TRILL RBridge所維護(hù)的轉(zhuǎn)發(fā)表項(xiàng)的查詢交互:
①當(dāng)接收到TRILL封裝的報(bào)文時(shí),負(fù)責(zé)為其解TRILL封裝。
②當(dāng)CPU向TRILL的邏輯接口發(fā)送報(bào)文時(shí),負(fù)責(zé)為報(bào)文封裝TRILL頭。
(6)報(bào)文收發(fā)模塊。
接收到TRILL報(bào)文時(shí),調(diào)用“TRILL Frame”模塊的接口解TRILL封裝。
發(fā)送報(bào)文時(shí),調(diào)用“TRILL Frame”模塊提供的接口封裝TRILL頭。
4 結(jié)語(yǔ)
該文主要圍繞如何在交換機(jī)上實(shí)現(xiàn)TRILL協(xié)議的基本功能和概要設(shè)計(jì).
作者在項(xiàng)目實(shí)施過(guò)程中完成了系統(tǒng)主體數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),以及TRILL鏈路層實(shí)現(xiàn)編碼、并進(jìn)行了部分系統(tǒng)調(diào)試測(cè)試和交換機(jī)上各模塊集成測(cè)試工作。成功的達(dá)到了在交換機(jī)上實(shí)現(xiàn)TRILL的基本功能,確保RBridge設(shè)備能夠構(gòu)建一個(gè)大二層網(wǎng)絡(luò),同時(shí)具備TRILL的ECMP特性。
由于作者水平有限,文中不免有疏漏甚至錯(cuò)誤之處,敬請(qǐng)各位專(zhuān)家、學(xué)者和廣大讀者提出批評(píng)指正!
參考文獻(xiàn)
[1] IETF RFC6325 (Routing Bridges (RBridges): Base Protocol Specification), 2011:1-40.
[2] IETF RFC6326 (Transparent Interconnection of Lots of Links (TRILL) Use of IS-IS), 2011:1-30.
[3] IETF RFC6327 (Routing Bridges (RBridges): Adjacency), 2011:1-35.
[4] IETF RFC6439 (draft-ietf-TRILL-RBridge-af),2011:1-30.
[5] IETF RFC5556 (draft-ietf-TRILL-prob), 2009:1-38.