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