通過TRILL實現(xiàn)大二層擴展及多路徑轉發(fā)
TRILL(Transparent Interconnection of lots of links,多鏈路透明互聯(lián))是IETF為實現(xiàn)數(shù)據(jù)中心大二層擴展制定的一個標準,目前已經(jīng)有一些協(xié)議文稿標準化,如RFC6325,6326,6327等等。該協(xié)議的核心思想是將成熟的三層路由的控制算法引入到二層交換中,將原先的L2報文加一個新的封裝(隧道封裝),轉換到新的地址空間上進行轉發(fā)。而新的地址有與IP類似的路由屬性,具備大規(guī)模組網(wǎng)、最短路徑轉發(fā)、等價多路徑、快速收斂、易擴展等諸多優(yōu)勢,從而規(guī)避STP/MSTP等技術的缺陷,實現(xiàn)健壯的大規(guī)模二層組網(wǎng)。
一、 TRILL——實現(xiàn)二層多路徑轉發(fā)
TRILL標準涉及幾個重要的概念:
Routing Bridge:路由橋,簡稱RBridge或RB,是支持TRILL功能的網(wǎng)絡節(jié)點的統(tǒng)稱,類似一個IP Router;
VLAN x Forwarder:VLAN X轉發(fā)器,類似于VPN中的PE角色,基于VLAN來選舉。主要功能是對用戶側的報文封裝TRILL頭送入TRILL網(wǎng)絡進行轉發(fā)或者將TRILL網(wǎng)絡的報文解封裝還原成用戶側的報文發(fā)送給用戶;
Nickname:16bit長,類似于IP地址,是RB節(jié)點路由計算的基礎。Nickname從Mac地址演變而來,因為Mac地址有48個bit,如果直接用于編碼開銷太大,而且表示的空間太大,因此從48bit縮減到16bit,64K范圍。每個節(jié)點的Nickname各不相同,Nickname可以自動選舉也可以手工配置,每個RB可以有多個Nickname。
“多路徑”概念以往只用于IP轉發(fā)。當兩臺路由器間存在多條等價轉發(fā)路徑(等價或非等價),路由器可根據(jù)路由協(xié)議的計算結果,將IP報文沿最短路徑、并按照路徑度量值,基于流的方式進行分擔轉發(fā),由此可充分利用帶寬資源。如果我們仔細回想一下我們交換機中最常使用的L2轉發(fā)表,即MAC表,我們可以看到對于一個單播表項,其出端口只能是唯一的一個物理端口或者聚合端口,并不能同時有多個獨立的物理端口,如果是那樣的話,表項就變成了一個多播表項。也就是說MAC轉發(fā)表天生不具備二層多路徑能力。TRILL技術的出現(xiàn)并沒有改變這種狀況,而是通過隧道封裝,將原本的二層MAC轉發(fā)轉換成一個類IP的三層路由轉發(fā),即TRILL技術將IP報文轉發(fā)思路應用于以太幀轉發(fā),支持TRILL技術的以太網(wǎng)交換機被稱為“RBridge(Routing Bridge)”。
由于RB要對用戶側的報文進行封裝和解封裝操作,我們可以通俗的將負責報文加封裝/拆封裝的端點設備稱為Vlan X Forwarder,類似VPN中的PE。
路由器可通過鏈路狀態(tài)路由協(xié)議計算相互之間的最短路徑、等價多路徑/ECMP,并在拓撲變化時更新轉發(fā)路徑。RBridge間通過類似IS-IS路由協(xié)議的鏈路狀態(tài)控制協(xié)議TRILL IS-IS實現(xiàn)相互間最短路徑和等價多路徑的計算。TRILL IS-IS只計算RBridge間的拓撲,而不關心網(wǎng)絡中兩臺主機間的拓撲(事實上,兩臺RB之間最常使用的拓撲是直連方式)。
為了實現(xiàn)上述的路由控制功能,需要在網(wǎng)絡中為每個RB定義一個全局唯一的標識,由于Router ID已經(jīng)被IP使用了,且其形式類似IP地址,考慮到TRILL IS-IS還是為L2服務,因此TRILL重新選擇了一種新的ID,名字叫Nickname,用來標識每個RB設備。TRILL IS-IS計算的最后結果就是為了形成到不同Nickname的單播和組播轉發(fā)表。
圖1. RBridge對已知單播的轉發(fā)
如圖1所示,當單播以太幀通過位于TRILL網(wǎng)絡邊緣的Ingress RBridge進入TRILL網(wǎng)絡時,原始幀頭前被增加一個額外的“TRILL頭”(類似IP報文頭),其中包含Ingress RBridge Nickname和Egress RBridge Nickname,就像IP頭中的源IP地址和目的IP地址。“TRILL頭”前還要添加“Next-Hop頭”(就像IP報文前的MAC頭或PPP頭),由此完成TRILL幀封裝。此后,TRILL幀在RBridge間的轉發(fā)過程就像IP報文在路由器間的轉發(fā)過程。RBridge根據(jù)TRILL頭中的Egress Nickname進行逐跳轉發(fā),Next-hop頭在每一跳都要修改,而TRILL頭中只有TTL值發(fā)生變化。RBridge間對TRILL幀實現(xiàn)最短路徑轉發(fā)和等價路徑分擔,避免了傳統(tǒng)二層網(wǎng)絡由于運行STP造成的鏈路阻塞問題。TRILL幀最終在TRILL網(wǎng)絡邊緣的Egress RBridge被還原成標準以太幀,并被送出TRILL網(wǎng)。
#p#
RBridge只需要知道到達下一跳RBridge的最優(yōu)路徑即可,無需知道如何到達目的主機。因此,只有Ingress/Egress RBridge需要使能傳統(tǒng)的MAC地址學習(MAC表中區(qū)分從本地端口學到的MAC地址,以及從遠端Egress RBridge上學到的MAC地址),而TRILL網(wǎng)絡上的核心RBridge無需維護與主機相關的MAC表。另外,RBridge之間可以采用傳統(tǒng)以太交換機互聯(lián),并且在BRridge與互聯(lián)交換機可運行STP協(xié)議,但RBridge會終結STP實例,不會將BPDU通過RBridge擴散。
圖2. RBridge對多目的幀的轉發(fā)
如圖2所示,對于多目的以太幀(廣播、組播、未知單播)的處理,要求RBridge通過TRILL IS-IS的計算結果生成出多棵具有不同樹根的分發(fā)樹。多目的幀進入TRILL網(wǎng)絡,由Ingress RBridge選擇一顆分發(fā)樹用于該幀在TRILL網(wǎng)的轉發(fā),并將樹根RBridge Nickname作為“TRILL頭”中的Egress RBridge Nickname。此后的處理過程與IP組播報文在組播路由器間的轉發(fā)類似,每個RBridge只根據(jù)樹根RBridge標識的分發(fā)樹選擇TRILL的復制和轉發(fā)策略。
需要說明一點,由于TRILL技術定義了新的幀格式,所以傳統(tǒng)的以太網(wǎng)交換機不能通過升級軟件支持該特性,只有采用新款ASIC/NP芯片的以太網(wǎng)交換機才能支持TRILL轉發(fā)。
二、 TRILL的局限
雖然TRILL具備明顯的特點,但它也存在一些問題待解決。到目前為止,TRILL還在不斷的標準化過程中,依舊有大量的草案在討論中。其協(xié)議本身問題主要包括:
不支持大于4K的VLAN擴展能力。對于虛擬化多租戶的云計算數(shù)據(jù)中心,往往有大于4K的VLAN隔離需求,而TRILL的支持能力依舊限定在4K以內,難以滿足需求;
OAM支持能力弱;
由于TRILL多用于數(shù)據(jù)中心,RB之間多是直連組網(wǎng),不跨越傳統(tǒng)Ethernet網(wǎng)絡,對于這種組網(wǎng),TRILL的外層以太頭封裝顯得多余,可以精簡優(yōu)化。
只支持Level0,沒有Multi Level的機制;
沒有考慮如何承載FCoE業(yè)務。
三、 TRILL的應用
TRILL在國內的應用目前還處于起步階段。部分運營商、金融、大企業(yè)以及互聯(lián)網(wǎng)公司用戶已經(jīng)開始在關注或者開始考慮TRILL技術。
TRILL的組網(wǎng)需要考慮下列因素:
收斂比大小
L3網(wǎng)關的部署位置
L3網(wǎng)關的負載分擔方式
設備本身MAC/ARP表項的大小
具體到組網(wǎng)應用,按照部署場景列舉如下幾種組網(wǎng)類型:
1. 組網(wǎng)模型1:現(xiàn)有組網(wǎng)擴建TRILL域
leaf+aggregation+spine三層組網(wǎng)環(huán)境,L3網(wǎng)關在aggregation層,集中式L3網(wǎng)關
圖3. 現(xiàn)有組網(wǎng)擴建TRILL域
組網(wǎng)說明(如圖3所示):
在現(xiàn)有的POD基礎上,橫向擴展新的TRILL POD域,TRILL域的L3網(wǎng)關在aggregation層,向上和核心層通過路由協(xié)議對接;
為了解決leaf層的雙活接入的問題,leaf節(jié)點支持N:1虛擬化,如H3C的IRF;
兩個aggregation節(jié)點也做N:1虛擬化,以便免VRRP配置,實現(xiàn)L3轉發(fā)的流量在網(wǎng)關的均勻分擔;
由于現(xiàn)有商用ASIC難以支持在一個Pipeline中同時處理TRILL+L3,那么aggregation節(jié)點處如何實現(xiàn)TRILL+L3轉發(fā)?
采用板卡代理的方式:將設備上TRILL和L3分開到兩種不同的板卡上,然后在他們之間啟用proxy代理,本質上是將原先一個芯片一個pipeline流程分解到兩塊芯片上分開執(zhí)行,降低對芯片的要求。典型的如思科N7K上的M1/F1板卡組合;
#p#
采用1:N設備虛擬化方式,將一個設備虛擬成兩個設備,其中一個虛擬設備運行TRILL,一個虛擬設備運行L3。兩個虛擬設備通過外部連線連接,就像完全獨立的兩臺設備之間互聯(lián)一樣(如圖4所示)。例如采用H3C的MDC技術,或者思科的VDC技術。
圖4. 通過設備1:N技術實現(xiàn)TRILL+L3
這種組網(wǎng)模型能在現(xiàn)有傳統(tǒng)技術組建的數(shù)據(jù)中心網(wǎng)絡基礎上平滑擴建TRILL域,實現(xiàn)TRILL域內的VLAN跨機架二層連通。免STP,鏈路全活利用率高,高可靠。但其TRILL域規(guī)模有限,VLAN只能在POD內二層連通,無法跨POD;才外,集中的L3網(wǎng)關使得L3轉發(fā)性能有限。
2. 組網(wǎng)模型2:新建TRILL核心實現(xiàn)VLAN跨POD聯(lián)通
新建TRILL core,和L3 core并列
圖5. 新建TRILL核心實現(xiàn)VLAN跨POD聯(lián)通
組網(wǎng)說明(如圖5所示):
在組網(wǎng)模型1的基礎上,滿足VLAN跨POD更大范圍的二層聯(lián)通需求;
為了不影響現(xiàn)有的組網(wǎng),加入專門的TRILL核心,和現(xiàn)有的L3核心并列;
VLAN分本POD內的本地VLAN,如VLAN10,20,30,40和跨POD VLAN,如VLAN1000;
POD內本地VLAN之間的三層轉發(fā)流量,比如VLAN10和VLAN20之間或者VLAN30和VLAN40之間,直接在本地的L3網(wǎng)關上進行轉發(fā)(如圖5中流量1所示);
跨POD VLAN的L2互通,通過TRILL進行,繞行TRILL core(如圖5中流量2所示);
跨PODVLAN和本地VLAN之間的L3轉發(fā),需要繞行L3 core進行轉發(fā)(如圖5中流量3所示)。
這種組網(wǎng)模型可以在現(xiàn)有組網(wǎng)基礎上平滑演進,實現(xiàn)VLAN跨POD聯(lián)通。但跨POD VLAN L3網(wǎng)關目前只能位于某個POD的aggregation節(jié)點上,存在性能瓶頸。
3. 組網(wǎng)模型3:新建兩層架構的TRILL網(wǎng)絡
完全新建TRILL,采用leaf+spine兩層結構,網(wǎng)關集中在Spine節(jié)點上
圖6. 新建兩層架構的TRILL網(wǎng)絡
組網(wǎng)說明(如圖6所示):
取消aggregation層,整個網(wǎng)絡精簡為兩層;
#p#
網(wǎng)關在spine節(jié)點上,多網(wǎng)關負載分擔,由于網(wǎng)關數(shù)量大于2個,此處可采用VRRPE,實現(xiàn)多網(wǎng)關負載分擔和備份功能。圖6中用藍色箭頭示出了不同的host發(fā)出的流量采用不同的網(wǎng)關MAC,轉發(fā)到不同的網(wǎng)關節(jié)點上進行分擔。
這種組網(wǎng)模型的兩層架構更精簡,低時延;VLAN可以在數(shù)據(jù)中心內任意位置部署;L3網(wǎng)關負載分擔和備份;L2轉發(fā)可以做到橫向無收斂,擴展性好。但是集中式網(wǎng)關對于大型組網(wǎng)來如幾千甚至上萬臺虛擬化服務器組網(wǎng)來說,一是ARP表項要求高;其次VRRPE的分擔方式對域同一個host的流量不能分擔。
4. 組網(wǎng)模型4:L3網(wǎng)關在leaf節(jié)點使能
圖7. L3網(wǎng)關在leaf節(jié)點
組網(wǎng)說明(如圖7所示):
對于L3轉發(fā)要求不高的場合,可以采用在leaf邊緣使能集中的L3網(wǎng)關功能;
Spine節(jié)點不再擔當L3網(wǎng)關的功能,只執(zhí)行TRILL轉發(fā)功能,也不學習用戶的MAC;
執(zhí)行l(wèi)eaf功能的節(jié)點可以做N:1虛擬化,實現(xiàn)免VRRP配置和網(wǎng)關雙活轉發(fā)。
這種組網(wǎng)模型spine節(jié)點處流量實現(xiàn)了均勻的分擔和備份,將leaf節(jié)點翻上去,相當于三層設備組部署TRILL(如圖8所示),核心集中到一臺邏輯設備上。對于spine節(jié)點,完全按照TRILL的多路徑進行L3轉發(fā)流量的分擔,即使對于同一個host發(fā)出的不同的流量,也可以在spine節(jié)點之間進行分擔,分擔更均勻。但局限性體現(xiàn)在該組網(wǎng)只適合L3轉發(fā)性能要求不高的場合。
圖8. 三層設備部署TRILL網(wǎng)絡
5. 組網(wǎng)模型5:在模型3的基礎上采用分布式L3網(wǎng)關方式
圖9. 分布式L3網(wǎng)關組網(wǎng)
組網(wǎng)說明(如圖9所示):
leaf節(jié)點和core節(jié)點同時使能L3網(wǎng)關功能;
#p#
為保證leaf節(jié)點VLAN之間的聯(lián)通性,整網(wǎng)所有網(wǎng)關設備之間配置一個共同的互通VLAN。等價于將所有的網(wǎng)關節(jié)點連接在一個廣播網(wǎng)上;
各網(wǎng)關設備上可以配置靜態(tài)路由,也可以配置動態(tài)路由協(xié)議,形成路由轉發(fā)表;
本地VLAN的網(wǎng)關在各個leaf節(jié)點上,跨leaf節(jié)點的VLAN的三層網(wǎng)關在spine節(jié)點上;
同leaf本地VLAN之間三層轉發(fā)流量如圖9中藍色線所示,不同leaf節(jié)點本地VLAN之間轉發(fā)需要通過互通VLAN轉接,如圖9中紅色線所示;
Leaf節(jié)點的本地VLAN和跨leaf節(jié)點的VLAN之間互通需要到spine節(jié)點上去轉發(fā),如圖9中粉色線所示;
這種組網(wǎng)模型將原先通過spine節(jié)點轉發(fā)的leaf本地VLAN的三層接口下移到leaf節(jié)點,減輕了spine節(jié)點的負擔,降低了ARP表項需求;但配置相對復雜,需要引入互聯(lián)VLAN實現(xiàn)各leaf節(jié)點的路由可達。
四、 結束語
通過以上這些組網(wǎng)模型的優(yōu)缺點分析,可以看出在滿足大二層擴展、鏈路利用率以及穩(wěn)定性可靠性方面,TRILL已經(jīng)表現(xiàn)出比傳統(tǒng)STP技術的明顯優(yōu)勢。
技術在不斷發(fā)展,TRILL也在不斷發(fā)展進步之中,這其中既包括協(xié)議本身的完善,也包括ASIC功能的不斷完善。當前的TRILL解決方案并不是十全十美的,還有改進優(yōu)化的余地。我們期望未來能獲得更完美的TRILL組網(wǎng)方案,更好的滿足用戶的需求。