眾所周知,Cisco正憑借Nexus產品平定整個數據中心網絡市場,2010年,Cisco打出了深藏已久的最后一張王牌—FabricPath,至此,Nexus交換機的主要特性已全部面向公眾發布,FabricPath為整個計劃添上了最后一塊基石,進一步穩固了Nexus作為下一代數據中心網絡平臺的地位。
大部分人(包括我)第一次閱讀FabricPath華麗的白皮書后,只朦朧地知道這是一個“能在大型二層數據中心網絡實現多路徑的東東”,既然FabricPath解決的是數據中心的問題,我們首先需要弄清楚數據中心到底有什么問題。
今天的大部分數據中心網絡是遵循標準的層次化理念建設的,分為接入層和匯聚/核心層,接入層和匯聚層之間為二層鏈路,三層網關設在匯聚或核心,所有的二層鏈路上都運行生成樹協議(STP),當任意兩點間有一條以上路徑可達時,STP會block多余的路徑,以保證兩點間只有一條路徑可達,從而防止環路的產生。這種模式在過去很長一段時間被大規模采用,因為其部署起來非常簡單,接入層設備不需要復雜的配置,大部分的網絡策略只要在匯聚層集中部署就能分發到全網。但隨著數據中心的規模不斷擴張,這種模型逐漸顯得力不從心。
未來數據中心內部的橫向流量將越來越大,新加入的設備同原有設備之間仍然要運行STP,如果兩臺服務器之間只有一條鏈路可行,其余的萬兆交換機端口全被block,不但是投資的極大浪費,也無法支持業務的快速擴展;其次,當交叉鏈路數量增加時,二層網絡的設計會變得非常復雜,哪條鏈路該保留哪條鏈路該阻斷?三層網關設在何處?類似這樣的問題會冒出一大堆,這就失去二層網絡配置簡單的優勢;最后,傳統的二層MAC地址沒有層次化的概念,同一個二層網絡內的接入交換機上存儲本網段所有設備的MAC地址,這很容易導致邊緣設備的MAC地址空間耗盡,特別是在虛擬化的數據中心內,虛擬機的MAC地址數量可能以千計。
如果二層互聯不能解決問題,另一種思路是在匯聚交換機和接入交換機上設置IP網關,通過三層路由將所有交換機連接起來,類似的解決方案還包括將網關設置在核心設備上,通過核心設備集中互聯。這個做法以前也許勉強可行,但在虛擬化環境中,二層網絡是虛擬機遷移的基礎。虛擬化的最大特點是可以將業務動態部署到數據中心的任何計算資源上,如果這些計算資源(也就是服務器)被過多的三層網關隔離開來,也就失去了虛擬化的優勢。
同時,采用三層接入設備會產生大量的三層網關以及無數個讓網管人員抓狂的地址段。動態路由協議的行為往往難以預測,在重要數據中心,為了保證網絡行為的可控性,每臺交換機的路由策略都要經過仔細琢磨,這個工作量過于龐大;而如果采用靜態路由,一旦后期需要改動某個地址段的范圍,可能需要改寫一大段接入換機的路由表,更不用提相關訪問控制策略的變動。
至此,我們走進了死胡同,虛擬化的應用要求基礎網絡在擴展時保持一個完整的二層環境,而隨之而來的STP和地址空間問題又成為繞不開的坎,在接受二層環境的同時,我們基本上也就同一大堆時髦的字眼say byebye了,這些字眼包括但不僅限于“動態擴展”、“多路徑”、“快速收斂”、“層次化尋址”等等,仰望IP路由,二層網絡就好象一個生活在原始社會的苦行僧,忍受著種種的考驗,傳統網絡在支持虛擬化數據中心擴張時已經越來越吃力。
為了改變這種尷尬的局面,在燒掉大把銀子之后,Cisco的FabricPath終于閃亮登場了!
目標
簡單說,FabricPath是Cisco Nexus交換機上的一項技術特性,其目標是在保證二層環境的前提下,修復前文所說的缺陷,這個技術需要做到以下幾點:
實現兩點間多條路徑同時轉發流量EMCP(Equal Cost Multi Pathing);
類似IP網絡的平滑擴展;
快速收斂;
防止廣播風暴;
保持原有二層網絡配置的簡潔性
更準確地說,我們要擺脫傳統二層“交換”的弊端,在二層環境中實現類似三層IP的“路由”行為。
二、FabricPath:從“交換”到“路由”
L2不給力的原因
我們知道FabricPath的目標是為傳統二層環境設計一個增強型方案,以屏蔽原來的缺陷,實現對數據幀的“路由”轉發。要明白FabricPath是怎么做到這點的,首先要看看layer 2這些不給力的毛病到底是怎么出來的?
傳統二層以太網環境中的數據轉發是非常簡單的,一臺二層交換機一輩子干的活可以用以下幾句話概括:
1)收到數據幀–>2)查看目的地址–>3)查看MAC地址表–>4)將數據幀從對應端口送出去
偶爾,當這個流程進行到第三步時,交換機會發現目的地址不在自己的MAC地址表中,它會怎么做呢?這臺茫然的交換機就會將這個數據幀從所有的端口廣播出去!沒錯,是整個幀從所有端口發送出去,希望其他交換機能知道正確目的地。且不說,這個方式在今天看來是多沒有效率,當設備之間存在環路時,這種幀會被無盡地轉發下去,最終形成廣播風暴。
為了解決這個問題,交換機廠商引入了STP。STP的機制也極其簡單,就是通過阻斷二層端口來防止環路,并阻止數據幀從其接收到的端口再轉發出去。
廣播幀在任意節點只會被轉發一次,避免了被永遠轉發下去。但如前所述,運行STP的代價是非常昂貴的,接入設備只有一條上聯鏈路沒被block,而且,在復雜的網絡連接中,控制STP的行為變得很困難,一旦出現震蕩,其收斂效率也非常低下。
另一方面,二層交換機通過學習接收到的數據幀的源地址建立MAC地址表,所有接收到的數據幀源地址都會被放進MAC地址表中,導致一臺交換機可能學習到整個網段內的所有二層地址,就算它大部分時間只跟其中的一小部分有聯系。
由此可見,今天的二層網絡過于簡單,交換機只會學習網絡地址,不會基于學到的地址規劃出一套轉發數據的最優方案,它的問題類似于只有一個數據平面,沒有控制平面的概念,這就導致二層交換機不可能有效地進行“路由”,從而引入了STP等一系列問題。
FabricPath的實現:新的控制平面
既然二層網絡的問題是控制平面的缺失,FabricPath的思路就清晰了,那就是重塑一個控制平面。
為了能夠高效地支持數據中心擴展,這個新的控制平面需要具備幾個基本功能,包括:主動建立鄰居關系,并基于鏈路狀態維護一個路由數據庫,支持等價路由
支持靈活的尋址方式,保留原有二層網絡配置簡單的風格。
為了構建這樣一個控制平面,FabricPath主要做了以下兩件事:
1)新增一個二層幀頭
2)增加一套簡化的IS-IS路由協議
這個新的幀頭添加在原有數據幀之外,包含了豐富的信息,其中最重要的三個字段是源地址、目的地址和TTL。
源地址和目的地址來自FabricPath新定義的一個名為switch ID的全新地址空間,任何一個新加入FabricPath網絡的設備都會被分配一個1~4094之間的整數,作為唯一的switch ID,用于標識一臺交換機的身份,也是節點之間進行路由尋址的依據。
TTL(Time To Live)字段定義了一個數據幀的最長生存周期。當生成一個數據幀時,其TTL字段被寫入一個整數,每當其經過一臺交換設備TTL就減一,直到TTL為零時,這個幀將被丟棄。TTL的概念是TCP/IP的基礎之一,在FabricPath中,TTL承擔了同樣的任務,保證數據幀不會在成環的鏈路中被無限次轉發,從而使得二層環境不再需要運行STP協議,不再有鏈路被Block,這是實現兩點之間多路徑轉發的基礎。
相較幀結構的變化,FabricPath更重要的改進在于引入IS-IS這樣一套完整的路由協議。IS-IS是一個廣泛運行于運營商等大型網絡的路由協議,同OSPF類似,IS-IS也是一個鏈路狀態協議,會維護一個鏈路狀態數據庫,相比MAC尋址這樣的距離矢量行為,運行鏈路狀態協議的設備能夠在內存中建立一張包含全網設備的拓撲,并且在這個拓撲的基礎上挑選當前鏈路狀態下的最短路徑來轉發數據。IS-IS的效率很高,且IS-IS區域能平滑地平移、分割、合并,但相較OSPF最大的不同在于,IS-IS可以封裝在鏈路層報文中支持多種網絡層協議,而OSPF只能封裝在IP包中支持IP協議,這就使得IS-IS能夠很容易被移植到FabricPath中,為二層數據幀的轉發提供路由服務。
FabricPath中實際運行的是一個簡化版本的IS-IS協議,不再依賴MAC地址進行尋址,依靠交換機的switch ID工作,在節點之間交換IS-IS信令構建路由表,IS-IS協議會事先計算出最優路徑作為數據轉發的依據。有了IS-IS的助陣,FabricPath能夠輕松地實現兩點之間的ECMP、網絡拓撲的快速收斂、以及快速的錯誤診斷等高級路由功能。
新的地址空間加上IS-IS協議,FabricPath基本建立起一個控制平面雛形,數據平面和控制平面各司其職。如果你是個較真的同學,你的第一個問題該出現了,為什么不延用原有的MAC地址,而要興師動眾地加入一套新地址呢?問得好!
FabricPath中的IS-IS協議會建立一套邏輯樹結構,這個結構說明了任意兩點間的最優路徑,是交換機轉發數據的依據。路由協議在計算邏輯樹的過程中往往會用到設備的標識號,由于MAC地址在設備出廠時就固定了,不同設備之間的地址沒有任何規律,如果使用MAC地址作為唯一標識,生成的將是一個隨機結構,這有可能導致最終的轉發路徑不是當前的最優路徑。由于路由協議的算法是寫死的,要避免這種情況只能人工調整各個節點的標識大小,這種情況同部署STP時調整交換機的優先級,以保證最優的轉發路徑是一個道理。然而,FabricPath設計的初衷就是保留二層配置簡潔的優勢,如果將STP的老毛病一并帶過來,無疑大大削弱了對客戶的吸引力,不利于現有網絡向FabricPath的遷移。
既然是從頭設計一套全新的機制,不如追求一把極致,將所有復雜的工作都隱藏到幕后,只呈現給用戶最簡潔的一面,這就是FabricPath費盡苦心設計一套地址空間的出發點。
FabricPath的工作模式
數據幀在進入FabricPath網絡時,會被打上新幀頭,在FabricPath網絡內根據幀頭里的switch ID進行轉發,離開Fabric Path網絡時,脫去幀頭,進入傳統的以太網交換環境。要加入FabricPath網絡,只需在交換機對應端口上啟用FabricPath模式即可,所有的地址分配和路由策略都自動生成,無需繁瑣的配置。
匯聚設備同接入設備之間為FabricPath網絡,FabricPath網絡內沒有運行STP,多條鏈路都能夠轉發數據,目前版本的FabricPath支持16條等價路由,也就是說在使用萬兆鏈路的情況下,任意兩點間的帶寬可到2.56Tbps(16條等價鏈路結合,每條等價鏈路為16個萬兆portchannel)。
接入設備作為網關連接了傳統以太網絡同FabricPath網絡,FabricPath網關上可以進行“基于會話的MAC地址學習”,只有那些目的地址為本地設備的數據幀的源地址會被放入網關的MAC地址表,其他數據幀的源地址以及廣播幀的源地址都不會被學習,這就保證了邊緣網關設備的MAC地址表里只保存與本地有會話關系的MAC地址,這個舉措能夠大大縮小虛擬化數據中心內接入設備的MAC地址表體積。
基于IS-IS的特性,FabricPath網絡設備的switch ID可以動態修改,而不影響流量轉發,當數據中心規模不斷擴張時,可以利用FabricPath平滑地擴展其匯聚層,并在接入設備間實現高達16條二層多路徑(ECMP)。
第二個問題
OK,這一切都看上去很美,但你有沒有覺得哪里不對勁?這就是我對FabricPath的第二個問題,以上說的所有這些東西,新增幀頭啦、新的選路機制啦,和VPN不是差不多嗎?在今天這個技術過剩的時代,難道找不出一個能解決這些問題的現有技術,非要重新折騰出一套新玩意嗎?
現有VPN技術種類繁多,但大多數都使用IP包承載,協議開銷較大,這與二層具備的快速轉發特性是背道而馳的,僅此一項就將IPSec等三層VPN技術屏蔽在可選項之外。剩下的二層VPN中最常見的是類似MPLS+VPLS的實現方式,MPLS是一個2.5層技術,專門用于大量數據的快速轉發,但問題是,MPLS的控制平面仍然需要IP報文進行路由,每個節點仍需要進行IP配置,而部署一個MPLS+VPLS網絡你覺得容易嗎?反正我看著都覺得頭大,如果一種局域網技術需要網管人員先學習一遍MPLS,我覺得這種技術基本也沒啥戲可演了。
標準化
FabricPath是Cisco近期在數據中心領域最重要的一個發布,同時也預示著基礎網絡向下一代模型轉型的開始。數據中心內不斷增長的橫向流量推動了二層多路徑技術的迅速發展,FabricPath是這股潮流的重要組成部分,但Cisco不是唯一的聲音。
目前致力于實現二層多路徑的標準化組織主要有IETF和IEEE,兩家的標準分別為TRILL和802.1aq,都采用IS-IS作為路由協議,實現方式大同小異。目前,TRILL和802.1aq都已接近完成,預計2011年底就能夠正式標準化。
Cisco在TRILL的制定過程中參與極深,雖然FabricPath是Cisco的私有解決方案,但可以看作一個“增強版的TRILL”,是TRILL的基本功能加上“基于會話的MAC地址學習”、“Vpc+”和“多重拓撲”等高級功能的合集。
Cisco已經發布了支持FabricPath的Nexus 7000板卡,并且承諾現有架構與TRILL標準兼容,當TRILL正式標準化之后,只需要升級現有設備的軟件,就能夠與標準的TRILL交換機互聯互通。
三、結語
隨著數據中心內虛擬化應用的不斷擴張,底層的數據行為也在悄然發生改變,帶動了基礎架構的演進。未來的數據中心不僅需要大容量、高密度的網絡設備,還要能夠順應這種數據行為的變化,并反過來提供經過優化的網絡平臺,這種從量到質的變化將深刻影響數據中心技術的發展。
FabricPath是Cisco在這個方向的重要布局之一,結合之前發布的FCoE、OTV、VN-LINK等技術,一個新一代數據中心網絡平臺已經隱約可見,Cisco只待市場大轉型的到來,再次一舉確立在網絡行業的領導地位。
了解FabricPath有助于我們認識數據中心網絡的演進方向,把握整個行業的脈搏,從而形成自己的思考,得出自己的結論。
五分鐘Q&A
1)什么是FabricPath?
FabricPath是思科Nexus交換機上的一項特性,能夠實現二層多路徑數據轉發。FabricPath能夠在二層環境實現類似三層的路由功能,幫助虛擬化數據中心網絡實現平滑擴展。
2)FabricPath有哪些好處?
FabricPath網絡不再需要運行生成樹協議(STP),沒有鏈路被阻斷,大大增加了網絡傳輸帶寬,很好地支持了服務器之間迅猛增加的橫向流量。同時,FabricPath能夠實現類似三層的路由功能,支持二層網絡的平滑擴展。
3)FabricPath與現有二層交換沖突嗎?
FabricPath的前提是不破壞現有的二層交換行為,FabricPath網絡對已部署的接入設備來說是一個透明連接。
4)如何部署FabricPath?
在支持FabricPath的設備上將端口配置為FabricPath模式,系統會自動完成地址分配、路由建立等行為,無需手動干預。
5)什么是TRILL?
為了實現二層多路徑功能,IETF在RFC5556中定義了一套方法,命名為Transparent Interconnection of Lots of Links,又名TRILL。
6)FabricPath是私有協議嗎?
FabricPath是Cisco的市場詞匯,用來表示思科的二層多路徑技術,所以,FabricPath不是一項私有協議,但它是思科的私有技術實現。
7)FabricPath同TRILL的關系?
Cisco在TRILL標準制定過程中參與極深,并且積極推動TRILL的最終成型。FabricPath是TRILL正式標準化之前,Cisco推向市場的“Pre-Standard”技術,基本內容與TRILL相同, 增加了“基于會話的MAC地址學習”、“Vpc+”和“多重拓撲”等高級功能。FabricPath架構與TRILL完全兼容,Cisco承諾FabricPath平臺將全面支持TRILL協議,TRILL正式標準化之后,通過軟件升級,現有FabricPath設備能夠與標準的TRILL交換機互聯互通。
8)什么設備能夠支持FabricPath?
2010年Cisco在Nexus 7000交換機上發布了一塊支持FabricPath的32口萬兆光纖板卡,以及相應的軟件。未來,FabricPath技術會擴展到更多的Nexus 7000和Nexus 5000交換機上。
9)市場上還有那些類似FabricPath的解決方案?
目前沒有完全相同的產品,Juniper的QFabric在二層擴展方面與FabricPath類似,但QFabric是一個私有架構,目前也沒有開放的時間表。
評論
查看更多