IT行業(yè)的發(fā)展一日千里,競爭的重點已經(jīng)從參數(shù),、指標的追趕,,發(fā)展到對標準、概念的主導,,市場的領導廠商不再拘泥于設備的具體性能,,而是通過掌握最有力的話語權來引導整個行業(yè)的發(fā)展,最終贏得客戶的信任,。
在這個爭奪話語權的過程中,,不計其數(shù)的技術名詞被制造出來,成百上千的白皮書被PO到網(wǎng)上,,如果我們連這些名詞的真正含義都不清楚,,別說趕英超美,可能被人家忽悠完了都渾然不知,,因為至少在目前,,信息技術的領軍人物還在大洋彼岸,而且這個趨勢還將持續(xù)很長一段時間,。
這也是我寫《撥云見日》的本意,,就是要撥開表面的浮云,真正探究新技術的本質(zhì)。在有限的篇幅里,,我會以我的理解,,盡力說明市場名詞背后的技術實現(xiàn),并摸清新技術產(chǎn)生的商業(yè)動機和相應的發(fā)展脈絡,。
關鍵詞:FabricPath
廠商:Cisco
領域:數(shù)據(jù)中心網(wǎng)絡
模糊程度:四星
一、為什么需要FabricPath
緣起
眾所周知,,Cisco正憑借Nexus產(chǎn)品平定整個數(shù)據(jù)中心網(wǎng)絡市場,,2010年,Cisco打出了深藏已久的最后一張王牌—FabricPath,,至此,,Nexus
交換機的主要特性已全部面向公眾發(fā)布,F(xiàn)abricPath為整個計劃添上了最后一塊基石,,進一步穩(wěn)固了Nexus作為下一代數(shù)據(jù)中心網(wǎng)絡平臺的地位,。
大部分人(包括我)第一次閱讀FabricPath華麗的白皮書后,只朦朧地知道這是一個“能在大型二層數(shù)據(jù)中心網(wǎng)絡實現(xiàn)多路徑的東東”,,既然FabricPath解決的是數(shù)據(jù)中心的問題,,我們首先需要弄清楚數(shù)據(jù)中心到底有什么問題。
今天的大部分數(shù)據(jù)中心網(wǎng)絡是遵循標準的層次化理念建設的,,分為接入層和匯聚/核心層,,接入層和匯聚層之間為二層鏈路,三層網(wǎng)關設在匯聚或核心,,所有的二層鏈路上都運行生成樹協(xié)議(STP),,當任意兩點間有一條以上路徑可達時,STP會block多余的路徑,,以保證兩點間只有一條路徑可達,,從而防止環(huán)路的產(chǎn)生。這種模式在過去很長一段時間被大規(guī)模采用,,因為其部署起來非常簡單,,接入層設備不需要復雜的配置,大部分的網(wǎng)絡策略只要在匯聚層集中部署就能分發(fā)到全網(wǎng),。但隨著數(shù)據(jù)中心的規(guī)模不斷擴張,,這種模型逐漸顯得力不從心。
未來數(shù)據(jù)中心內(nèi)部的橫向流量將越來越大,,新加入的設備同原有設備之間仍然要運行STP,,如果兩臺服務器之間只有一條鏈路可行,其余的萬兆交換機端口全被block,,不但是投資的極大浪費,,也無法支持業(yè)務的快速擴展;其次,當交叉鏈路數(shù)量增加時,二層網(wǎng)絡的設計會變得非常復雜,,哪條鏈路該保留哪條鏈路該阻斷,?三層網(wǎng)關設在何處?類似這樣的問題會冒出一大堆,,這就失去二層網(wǎng)絡配置簡單的優(yōu)勢;最后,,傳統(tǒng)的二層MAC地址沒有層次化的概念,同一個二層網(wǎng)絡內(nèi)的接入交換機上存儲本網(wǎng)段所有設備的MAC地址,,這很容易導致邊緣設備的MAC地址空間耗盡,,特別是在虛擬化的數(shù)據(jù)中心內(nèi),虛擬機的MAC地址數(shù)量可能以千計,。
如果二層互聯(lián)不能解決問題,,另一種思路是在匯聚交換機和接入交換機上設置IP網(wǎng)關,通過三層路由將所有交換機連接起來,,類似的解決方案還包括將網(wǎng)關設置在核心設備上,,通過核心設備集中互聯(lián)。這個做法以前也許勉強可行,,但在虛擬化環(huán)境中,二層網(wǎng)絡是虛擬機遷移的基礎,。虛擬化的最大特點是可以將業(yè)務動態(tài)部署到數(shù)據(jù)中心的任何計算資源上,,如果這些計算資源(也就是服務器)被過多的三層網(wǎng)關隔離開來,也就失去了虛擬化的優(yōu)勢,。
同時,,采用三層接入設備會產(chǎn)生大量的三層網(wǎng)關以及無數(shù)個讓網(wǎng)管人員抓狂的地址段。動態(tài)路由協(xié)議的行為往往難以預測,,在重要數(shù)據(jù)中心,,為了保證網(wǎng)絡行為的可控性,每臺交換機的路由策略都要經(jīng)過仔細琢磨,,這個工作量過于龐大;而如果采用靜態(tài)路由,,一旦后期需要改動某個地址段的范圍,可能需要改寫一大段接入換機的路由表,,更不用提相關訪問控制策略的變動,。
至此,我們走進了死胡同,,虛擬化的應用要求基礎網(wǎng)絡在擴展時保持一個完整的二層環(huán)境,,而隨之而來的STP和地址空間問題又成為繞不開的坎,在接受二層環(huán)境的同時,,我們基本上也就同一大堆時髦的字眼say byebye了,,這些字眼包括但不僅限于“動態(tài)擴展”、“多路徑”、“快速收斂”,、“層次化尋址”等等,,仰望IP路由,二層網(wǎng)絡就好象一個生活在原始社會的苦行僧,,忍受著種種的考驗,,傳統(tǒng)網(wǎng)絡在支持虛擬化數(shù)據(jù)中心擴張時已經(jīng)越來越吃力。
為了改變這種尷尬的局面,,在燒掉大把銀子之后,,Cisco的FabricPath終于閃亮登場了!
目標
簡單說,F(xiàn)abricPath是Cisco Nexus交換機上的一項技術特性,,其目標是在保證二層環(huán)境的前提下,,修復前文所說的缺陷,這個技術需要做到以下幾點:
實現(xiàn)兩點間多條路徑同時轉發(fā)流量EMCP(Equal Cost Multi Pathing);
類似IP網(wǎng)絡的平滑擴展;
快速收斂;
防止廣播風暴;
保持原有二層網(wǎng)絡配置的簡潔性
更準確地說,,我們要擺脫傳統(tǒng)二層“交換”的弊端,,在二層環(huán)境中實現(xiàn)類似三層IP的“路由”行為。
二,、FabricPath:從“交換”到“路由”
L2不給力的原因
我們知道FabricPath的目標是為傳統(tǒng)二層環(huán)境設計一個增強型方案,,以屏蔽原來的缺陷,實現(xiàn)對數(shù)據(jù)幀的“路由”轉發(fā),。要明白FabricPath是怎么做到這點的,,首先要看看layer 2這些不給力的毛病到底是怎么出來的?
傳統(tǒng)二層以太網(wǎng)環(huán)境中的數(shù)據(jù)轉發(fā)是非常簡單的,,一臺二層交換機一輩子干的活可以用以下幾句話概括:
1)收到數(shù)據(jù)幀–>2)查看目的地址–>3)查看MAC地址表–>4)將數(shù)據(jù)幀從對應端口送出去
偶爾,,當這個流程進行到第三步時,交換機會發(fā)現(xiàn)目的地址不在自己的MAC地址表中,,它會怎么做呢,?這臺茫然的交換機就會將這個數(shù)據(jù)幀從所有的端口廣播出去!沒錯,是整個幀從所有端口發(fā)送出去,,希望其他交換機能知道正確目的地,。且不說,這個方式在今天看來是多沒有效率,,當設備之間存在環(huán)路時,,這種幀會被無盡地轉發(fā)下去,最終形成廣播風暴,。
為了解決這個問題,,交換機廠商引入了STP。STP的機制也極其簡單,,就是通過阻斷二層端口來防止環(huán)路,,并阻止數(shù)據(jù)幀從其接收到的端口再轉發(fā)出去,。
廣播幀在任意節(jié)點只會被轉發(fā)一次,避免了被永遠轉發(fā)下去,。但如前所述,,運行STP的代價是非常昂貴的,接入設備只有一條上聯(lián)鏈路沒被block,,而且,,在復雜的網(wǎng)絡連接中,控制STP的行為變得很困難,,一旦出現(xiàn)震蕩,,其收斂效率也非常低下。
另一方面,,二層交換機通過學習接收到的數(shù)據(jù)幀的源地址建立MAC地址表,,所有接收到的數(shù)據(jù)幀源地址都會被放進MAC地址表中,導致一臺交換機可能學習到整個網(wǎng)段內(nèi)的所有二層地址,,就算它大部分時間只跟其中的一小部分有聯(lián)系,。
由此可見,今天的二層網(wǎng)絡過于簡單,,交換機只會學習網(wǎng)絡地址,,不會基于學到的地址規(guī)劃出一套轉發(fā)數(shù)據(jù)的最優(yōu)方案,它的問題類似于只有一個數(shù)據(jù)平面,,沒有控制平面的概念,,這就導致二層交換機不可能有效地進行“路由”,從而引入了STP等一系列問題,。
FabricPath的實現(xiàn):新的控制平面
既然二層網(wǎng)絡的問題是控制平面的缺失,F(xiàn)abricPath的思路就清晰了,,那就是重塑一個控制平面,。
為了能夠高效地支持數(shù)據(jù)中心擴展,這個新的控制平面需要具備幾個基本功能,,包括:主動建立鄰居關系,,并基于鏈路狀態(tài)維護一個路由數(shù)據(jù)庫,支持等價路由
支持靈活的尋址方式,,保留原有二層網(wǎng)絡配置簡單的風格,。
為了構建這樣一個控制平面,F(xiàn)abricPath主要做了以下兩件事:
1)新增一個二層幀頭
2)增加一套簡化的IS-IS路由協(xié)議
這個新的幀頭添加在原有數(shù)據(jù)幀之外,,包含了豐富的信息,,其中最重要的三個字段是源地址、目的地址和TTL,。
源地址和目的地址來自FabricPath新定義的一個名為switch ID的全新地址空間,,任何一個新加入FabricPath網(wǎng)絡的設備都會被分配一個1~4094之間的整數(shù),,作為唯一的switch ID,用于標識一臺交換機的身份,,也是節(jié)點之間進行路由尋址的依據(jù),。
TTL(Time To Live)字段定義了一個數(shù)據(jù)幀的最長生存周期。當生成一個數(shù)據(jù)幀時,,其TTL字段被寫入一個整數(shù),,每當其經(jīng)過一臺交換設備TTL就減一,直到TTL為零時,,這個幀將被丟棄,。TTL的概念是TCP/IP的基礎之一,在FabricPath中,,TTL承擔了同樣的任務,,保證數(shù)據(jù)幀不會在成環(huán)的鏈路中被無限次轉發(fā),從而使得二層環(huán)境不再需要運行STP協(xié)議,,不再有鏈路被Block,,這是實現(xiàn)兩點之間多路徑轉發(fā)的基礎。
相較幀結構的變化,,F(xiàn)abricPath更重要的改進在于引入IS-IS這樣一套完整的路由協(xié)議,。IS-IS是一個廣泛運行于運營商等大型網(wǎng)絡的路由協(xié)議,同OSPF類似,,IS-IS也是一個鏈路狀態(tài)協(xié)議,,會維護一個鏈路狀態(tài)數(shù)據(jù)庫,相比MAC尋址這樣的距離矢量行為,,運行鏈路狀態(tài)協(xié)議的設備能夠在內(nèi)存中建立一張包含全網(wǎng)設備的拓撲,,并且在這個拓撲的基礎上挑選當前鏈路狀態(tài)下的最短路徑來轉發(fā)數(shù)據(jù)。IS-IS的效率很高,,且IS-IS區(qū)域能平滑地平移,、分割、合并,,但相較OSPF最大的不同在于,,IS-IS可以封裝在鏈路層報文中支持多種網(wǎng)絡層協(xié)議,而OSPF只能封裝在IP包中支持IP協(xié)議,,這就使得IS-IS能夠很容易被移植到FabricPath中,,為二層數(shù)據(jù)幀的轉發(fā)提供路由服務。
FabricPath中實際運行的是一個簡化版本的IS-IS協(xié)議,,不再依賴MAC地址進行尋址,,依靠交換機的switch ID工作,在節(jié)點之間交換IS-IS信令構建路由表,,IS-IS協(xié)議會事先計算出最優(yōu)路徑作為數(shù)據(jù)轉發(fā)的依據(jù),。有了IS-IS的助陣,,F(xiàn)abricPath能夠輕松地實現(xiàn)兩點之間的ECMP、網(wǎng)絡拓撲的快速收斂,、以及快速的錯誤診斷等高級路由功能,。
新的地址空間加上IS-IS協(xié)議,F(xiàn)abricPath基本建立起一個控制平面雛形,,數(shù)據(jù)平面和控制平面各司其職,。如果你是個較真的同學,你的第一個問題該出現(xiàn)了,,為什么不延用原有的MAC地址,,而要興師動眾地加入一套新地址呢?問得好!
FabricPath中的IS-IS協(xié)議會建立一套邏輯樹結構,,這個結構說明了任意兩點間的最優(yōu)路徑,,是交換機轉發(fā)數(shù)據(jù)的依據(jù)。路由協(xié)議在計算邏輯樹的過程中往往會用到設備的標識號,,由于MAC地址在設備出廠時就固定了,,不同設備之間的地址沒有任何規(guī)律,如果使用MAC地址作為唯一標識,,生成的將是一個隨機結構,,這有可能導致最終的轉發(fā)路徑不是當前的最優(yōu)路徑。由于路由協(xié)議的算法是寫死的,,要避免這種情況只能人工調(diào)整各個節(jié)點的標識大小,,這種情況同部署STP時調(diào)整交換機的優(yōu)先級,以保證最優(yōu)的轉發(fā)路徑是一個道理,。然而,,F(xiàn)abricPath設計的初衷就是保留二層配置簡潔的優(yōu)勢,如果將STP的老毛病一并帶過來,,無疑大大削弱了對客戶的吸引力,,不利于現(xiàn)有網(wǎng)絡向FabricPath的遷移。
既然是從頭設計一套全新的機制,,不如追求一把極致,將所有復雜的工作都隱藏到幕后,,只呈現(xiàn)給用戶最簡潔的一面,,這就是FabricPath費盡苦心設計一套地址空間的出發(fā)點。
FabricPath的工作模式

上圖中,,數(shù)據(jù)幀在進入FabricPath網(wǎng)絡時,,會被打上新幀頭,在FabricPath網(wǎng)絡內(nèi)根據(jù)幀頭里的switch ID進行轉發(fā),,離開Fabric Path網(wǎng)絡時,,脫去幀頭,,進入傳統(tǒng)的以太網(wǎng)交換環(huán)境。要加入FabricPath網(wǎng)絡,,只需在交換機對應端口上啟用FabricPath模式即可,,所有的地址分配和路由策略都自動生成,無需繁瑣的配置,。
上圖是一個典型的FabricPath組網(wǎng),,匯聚設備同接入設備之間為FabricPath網(wǎng)絡,F(xiàn)abricPath網(wǎng)絡內(nèi)沒有運行STP,,多條鏈路都能夠轉發(fā)數(shù)據(jù),,目前版本的FabricPath支持16條等價路由,也就是說在使用萬兆鏈路的情況下,,任意兩點間的帶寬可到2.56Tbps(16條等價鏈路結合,,每條等價鏈路為16個萬兆portchannel)。
接入設備作為網(wǎng)關連接了傳統(tǒng)以太網(wǎng)絡同F(xiàn)abricPath網(wǎng)絡,,F(xiàn)abricPath網(wǎng)關上可以進行“基于會話的MAC地址學習”,,只有那些目的地址為本地設備的數(shù)據(jù)幀的源地址會被放入網(wǎng)關的MAC地址表,其他數(shù)據(jù)幀的源地址以及廣播幀的源地址都不會被學習,,這就保證了邊緣網(wǎng)關設備的MAC地址表里只保存與本地有會話關系的MAC地址,,這個舉措能夠大大縮小虛擬化數(shù)據(jù)中心內(nèi)接入設備的MAC地址表體積。
基于IS-IS的特性,,F(xiàn)abricPath網(wǎng)絡設備的switch ID可以動態(tài)修改,,而不影響流量轉發(fā),當數(shù)據(jù)中心規(guī)模不斷擴張時,,可以利用FabricPath平滑地擴展其匯聚層,,并在接入設備間實現(xiàn)高達16條二層多路徑(ECMP)。
第二個問題
OK,,這一切都看上去很美,,但你有沒有覺得哪里不對勁?這就是我對FabricPath的第二個問題,,以上說的所有這些東西,,新增幀頭啦、新的選路機制啦,,和VPN不是差不多嗎,?在今天這個技術過剩的時代,難道找不出一個能解決這些問題的現(xiàn)有技術,,非要重新折騰出一套新玩意嗎,?
現(xiàn)有VPN技術種類繁多,但大多數(shù)都使用IP包承載,,協(xié)議開銷較大,,這與二層具備的快速轉發(fā)特性是背道而馳的,,僅此一項就將IPSec等三層VPN技術屏蔽在可選項之外。剩下的二層VPN中最常見的是類似MPLS+VPLS的實現(xiàn)方式,,MPLS是一個2.5層技術,,專門用于大量數(shù)據(jù)的快速轉發(fā),但問題是,,MPLS的控制平面仍然需要IP報文進行路由,,每個節(jié)點仍需要進行IP配置,而部署一個MPLS+VPLS網(wǎng)絡你覺得容易嗎,?反正我看著都覺得頭大,,如果一種局域網(wǎng)技術需要網(wǎng)管人員先學習一遍MPLS,我覺得這種技術基本也沒啥戲可演了,。
標準化
FabricPath是Cisco近期在數(shù)據(jù)中心領域最重要的一個發(fā)布,,同時也預示著基礎網(wǎng)絡向下一代模型轉型的開始。數(shù)據(jù)中心內(nèi)不斷增長的橫向流量推動了二層多路徑技術的迅速發(fā)展,,F(xiàn)abricPath是這股潮流的重要組成部分,,但Cisco不是唯一的聲音。
目前致力于實現(xiàn)二層多路徑的標準化組織主要有IETF和IEEE,,兩家的標準分別為TRILL和802.1aq,,都采用IS-IS作為路由協(xié)議,實現(xiàn)方式大同小異,。目前,,TRILL和802.1aq都已接近完成,預計2011年底就能夠正式標準化,。
Cisco在TRILL的制定過程中參與極深,,雖然FabricPath是Cisco的私有解決方案,但可以看作一個“增強版的TRILL”,,是TRILL的基本功能加上“基于會話的MAC地址學習”,、“Vpc+”和“多重拓撲”等高級功能的合集。
Cisco已經(jīng)發(fā)布了支持FabricPath的Nexus 7000板卡,,并且承諾現(xiàn)有架構與TRILL標準兼容,,當TRILL正式標準化之后,只需要升級現(xiàn)有設備的軟件,,就能夠與標準的TRILL交換機互聯(lián)互通,。
三、結語
隨著數(shù)據(jù)中心內(nèi)虛擬化應用的不斷擴張,,底層的數(shù)據(jù)行為也在悄然發(fā)生改變,帶動了基礎架構的演進,。未來的數(shù)據(jù)中心不僅需要大容量,、高密度的網(wǎng)絡設備,,還要能夠順應這種數(shù)據(jù)行為的變化,并反過來提供經(jīng)過優(yōu)化的網(wǎng)絡平臺,,這種從量到質(zhì)的變化將深刻影響數(shù)據(jù)中心技術的發(fā)展,。
FabricPath是Cisco在這個方向的重要布局之一,結合之前發(fā)布的FCoE,、OTV,、VN-LINK等技術,一個新一代數(shù)據(jù)中心網(wǎng)絡平臺已經(jīng)隱約可見,,Cisco只待市場大轉型的到來,,再次一舉確立在網(wǎng)絡行業(yè)的領導地位。
了解FabricPath有助于我們認識數(shù)據(jù)中心網(wǎng)絡的演進方向,,把握整個行業(yè)的脈搏,,從而形成自己的思考,得出自己的結論,。
五分鐘Q&A
1)什么是FabricPath,?
FabricPath是
思科Nexus交換機上的一項特性,能夠實現(xiàn)二層多路徑數(shù)據(jù)轉發(fā),。FabricPath能夠在二層環(huán)境實現(xiàn)類似三層的路由功能,,幫助虛擬化數(shù)據(jù)中心網(wǎng)絡實現(xiàn)平滑擴展。
2)FabricPath有哪些好處,?
FabricPath網(wǎng)絡不再需要運行生成樹協(xié)議(STP),,沒有鏈路被阻斷,大大增加了網(wǎng)絡傳輸帶寬,,很好地支持了服務器之間迅猛增加的橫向流量,。同時,F(xiàn)abricPath能夠實現(xiàn)類似三層的路由功能,,支持二層網(wǎng)絡的平滑擴展,。
3)FabricPath與現(xiàn)有二層交換沖突嗎?
FabricPath的前提是不破壞現(xiàn)有的二層交換行為,,F(xiàn)abricPath網(wǎng)絡對已部署的接入設備來說是一個透明連接,。
4)如何部署FabricPath?
在支持FabricPath的設備上將端口配置為FabricPath模式,,系統(tǒng)會自動完成地址分配,、路由建立等行為,無需手動干預,。
5)什么是TRILL,?
為了實現(xiàn)二層多路徑功能,IETF在RFC5556中定義了一套方法,命名為Transparent Interconnection of Lots of Links,,又名TRILL,。
6)FabricPath是私有協(xié)議嗎?
FabricPath是Cisco的市場詞匯,,用來表示思科的二層多路徑技術,,所以,F(xiàn)abricPath不是一項私有協(xié)議,,但它是思科的私有技術實現(xiàn),。
7)FabricPath同TRILL的關系?
Cisco在TRILL標準制定過程中參與極深,,并且積極推動TRILL的最終成型,。FabricPath是TRILL正式標準化之前,Cisco推向市場的“Pre-Standard”技術,,基本內(nèi)容與TRILL相同,, 增加了“基于會話的MAC地址學習”、“Vpc+”和“多重拓撲”等高級功能,。FabricPath架構與TRILL完全兼容,,Cisco承諾FabricPath平臺將全面支持TRILL協(xié)議,TRILL正式標準化之后,,通過軟件升級,,現(xiàn)有FabricPath設備能夠與標準的TRILL交換機互聯(lián)互通。
8)什么設備能夠支持FabricPath,?
2010年Cisco在Nexus 7000交換機上發(fā)布了一塊支持FabricPath的32口萬兆光纖板卡,,以及相應的軟件。未來,,F(xiàn)abricPath技術會擴展到更多的Nexus 7000和Nexus 5000交換機上,。
9)市場上還有那些類似FabricPath的解決方案?
目前沒有完全相同的產(chǎn)品,,Juniper的QFabric在二層擴展方面與FabricPath類似,,但QFabric是一個私有架構,目前也沒有開放的時間表,。