本文作者:大河云聯,閆浩
IP網絡從1982年TCP/IP 成為互聯網前身的ARPANET標配以來,隨著互聯網的發展而迅猛擴展。在數據網絡方面基本已經一統天下,做到了 everything over IP。IP網絡作為承載互聯網,物聯網,云計算以及VR,AI等未來各種無限可能的數據服務的底層網絡,其靈活性,擴展性以及對業務的支持可編程需求要求網絡更快的完成自身演進。
從IP網絡的整體發展看,從網絡的基本可以清晰的分為三個階段,當然這三個階段的網絡在現實世界是并存的。
純IP網絡 (IP戰勝了其他網絡層協議,成為數據網絡的主流)MPLS based 網絡SDN 網絡純IP網絡回退到幾十年前,IP網剛誕生時,IP協議和IP網絡還是有很多競爭對手的,比如IPX,Appletalk,Netbios,這些現在聽著很久遠的協議當時還是很流行的。比如IPX在企業網就遠比IP流行。當年的網絡和網絡設備復雜性很大程度體現于支持多種網絡層協議,支持從E1到OC-12,OC-48的多種網絡速率和接口類型。IP以及Ethernet僅是眾多選擇中的一種。
APPANET 選擇TCP/IP組合后,IP的簡單易用,Ethernet的低成本,再加上互聯網的病毒式傳播,短短的20年。這三者的強力組合就像 Intel + 微軟一樣,橫掃數據網絡。 可以認為應用層發軔的Everything Over IP 水到渠成,到了2000年左右,語音網絡,視頻網絡和數據網絡,已經可以說是 Everything Over IP了。
純IP網絡主要在統一網絡層協議和簡化傳輸介質上貢獻顯著。
純IP網絡的轉發
從本質上說是逐跳基于目的IP地址轉發完成這個動作的方式是通過 IGP + BGP 路由協議來實現附加的網絡調控手段:PBR,ACL, IP-Based QoS這個階段的網絡主要實現連通的目的,通過IGP和BGP路由協議,獲取AS域內和域間路由。構成網絡的路由器或交換機根據路由表,形成轉發表。當IP報文到達接口,入方向的芯片提取IP報文頭,根據目的IP查找轉發表,找到出端口。
多年來,大多數企業網,園區網以及相當多運營商的公眾網都采用這種方式。優點是簡單,大多數設備都支持。隨著路由協議的大規模使用和設備的大規模部署,作為整體系統的健壯性,可擴展性和穩定性以及建網成本都有了很大的優化。相應的網絡設備芯片體系也日趨完備。
但從服務的角度則看起來乏善可陳。當業務對網絡有連通以外的要求時,比如要基于源地址進行選路時,設備可以通過PBR(Policy-based routing)實現。但這并不是一種普世的服務,對于少量,臨時,非做不可的需求,可以用CLI在某些節點配置,但沒有人會瘋狂到在全網通過PBR去做路由。網絡工程師通常稱PBR這樣的實現叫做“Feature”。
在那些年里,廠商們各自都有很多Feature。用于炫技,用于投標,用于教育客戶。用于不那么完美的解決某些實際問題。
Feature 有兩個隱含的意思:
另一個現象是當某些需求用Feature無法滿足,或者是設備的性能瓶頸,或者是功能瓶頸時,網絡工程師又設計出各種appliance,疊加了特殊功能的各種大box和小Box,最著名的就是防火墻,還有4-7層交換,廣域網優化等。這些設備說到底,還是在對IP報文的處理上,解決了“基于目的地址尋址”以外的問題。
總結來說,在純IP網絡時代,是靠路由協議+feature+appliance滿足基本需求的。
MPLS based網絡在IP協議和IP網絡PK掉ATM時,盡管ATM協議的復雜和設備昂貴等諸多原因導致了市場的失敗。 IP網也由衷的羨慕ATM實現的虛電路的優勢,對于無連接的IP來說,如果能形成一個按需的虛電路,能夠根據用戶的特點提供不同的服務質量和轉發路徑,是非常有吸引力的事情,再加上當時轉發性能的一些瓶頸,綜合因素促成了MPLS的誕生和流行。
當MPLS開始規劃化使用和部署時,兩個基本概念是代表了運營商期盼已久的事情。
FEC轉發等效類
FEC(Forwarding equivalence class) ,對于相同分類的一組數據報文,提供相同的轉發處理方式。 這里所說的相同分類,相同的目的地址僅是其中的一種,基于不同的標準進行自由的網絡轉發一直是網絡工程師的愿景之一。LSP:Label-switched path
LSP 基于FEC對報文的分類,實現了端到端的對IP報文封裝,在每跳基于Label進行轉發的單向虛電路,正如IP網絡向Frame Rely,ATM, SONET/SDH 學習的初衷,MPLS把網絡分為Core 和Edge兩個部分,其基本想法是Edge設備封裝各種需求,Core部分僅完成標簽轉發。在全網通過Label的分發機制,從Edge節點通過Label替代目的IP地址,在網絡的提供了轉發平面的抽象。
MPLS的強大之處在于基于標簽交換,開發了一系列服務。
其中最成功的要算部署相當廣泛的L3VPN服務。其背后原因可能是三層網絡隔離而出現的巨大市場需求。即使在沒有L3VPN的互聯網,IPsec,SSL VPN等技術也發展起來。
其他的VPN如VPLS,盡管有一定的使用。但由于其市場需求有限,且有一些MPLS網絡共性的缺點和自身弱點,始終沒有大規模實施。
MPLS 當年雄心勃勃,在IETF有多個WG,無數RFC在同時演進。但復雜套著復雜,最后很多內容變成曲高和寡的紙上文章。至少在能接觸到的中國運營商和企業網層面無法大規模落地。
MPLS服務的共性弱點
多層協議累加帶來的復雜度和協議之間的配合問題以實現VPLS的網絡為例,至少需要如下協議:IGP - 最底層的PE的/32 路由LDP - 用于外層標簽,PE的尋址BGP - 用于Internet服務,盡管不是VPLS必須的,但IP服務的BGP,其實也是運營商的標配。MP-BGP - 用于topology發現和提供內層標簽
當多層協議并存時,網絡服務的脆弱性來自每臺設備上的每個協議是否能正常工作。同時,不同協議之間的配合存在問題時,也可能導致問題,比如經典的LDP和IGP之間的同步問題。
另外VPLS自身也存在一些弱點,比如:
MPLS-TE
TE最希望解決的問題是IGP路由協議相同的最短路徑視角造成的流量過于集中在少量路徑上,需要提高整個網絡的利用率。因此TE需要建立和維護大量的端到端tunnel。維護這些tunnel的代價可謂不菲。而在分布式的網絡架構下,TE始終沒有解決好tunnel計算/維護/排障的問題,TE也局限在部分運營商網絡內使用。當然我們經過了多年之后,我們也知道理想中的FEC不過是存在想象中的美好,現實中99.9%的報文仍然是按照目的地址進行轉發。受限于芯片,設備,協議/標準化,設備,操作等諸多因素制約。
通過對MPLS服務的簡單分析,我們很容易看出,MPLS用Label較好的解決了轉發平面的抽象,但并沒有解決控制平面抽象。正是其控制平面的復雜性給網絡帶來的影響削弱了其部署范圍。 控制平面的復雜性究其本質,還是每個協議各管一段,各滿足一種需求造成的。要做VPN,需要L3VPN 或VPLS,要做流量工程,需要TE,要做QoS,需要IP or MPLS Qos 等等。 如果這些都要,你的設備是否都同時支持?你是否敢都部署?你是否愿意運維這張網絡?相信大多數網工無論是運營商,集成商還是廠商背景的面對這些問題都一臉苦笑。
所以很多技術很多年后,還是被稱為Advanced Technology,而非普世應用。很多時候,泛泛的說,能否實現某個功能?能,但能的前提條件太多:網絡設計考慮,大量配置的復雜度,設備硬件性能支持,多廠家互通時不同設備對相同feature的配置方法和缺省行為,互操作性和兼容性,排障的可操作性。
久而久之,能就成了個理論上的,理想化的說法。 而非實打實可以簡單落地的能力。
Segment Routing 是否是白衣騎士?
這兩年,SR橫空出世,讓人眼前一亮,很有些傳統網絡救世主的樣子,SR有兩個顯著的優點超越了前一階段的MPLS 相關協議。確實是非常精巧的運用了MPLS和IGP協議,大幅度省略了對標簽分發協議的需求。簡化了協議和網絡設計。SR不負責路徑的計算,只負責轉發。中間node真正做到了僅基于Label轉發,通過在頭端設備的多層壓棧把路徑地圖內嵌在數據包頭。好似帶著幾個錦囊出發,每到一個關鍵節點,再打開一個錦囊,查看下一關鍵節點名字和路徑。 SR因此超越了最短路徑算法對報文的轉發限制又無需維護繁瑣的無數tunnel。SR更像一個航海大師,只要有明確的航線(路徑)就能按照要求去航行。但很明確的是,SR雖好,仍然需要有人去計算和設計路轉發路徑。誰更合適來做?顯然是SDN。
SDN網絡控制平面和具體的網絡設備解耦,是SDN最重要的特點。控制平面只有在解耦后才能形成強大的大腦,對千變萬化的業務層需求進行適配和編排后,再用不同方式下發成設備的轉發。毋庸置疑,控制平面是否集中,集中后又如何保持HA和對全網拓撲變化的快速收斂都是問題。
從這個層面看,控制平面集中與其說是SDN的特點,不如說是這個階段SDN為了實現而付出的必然而且必要的代價。
從某個角度說:路由需要完成的內容主要是以下三項:
建立拓撲,相當于網絡地圖傳遞不同Node的路由信息,相當于不同村莊的居民根據不同需求,計算出的從甲地到乙地的路徑從這3點看,SDN天然比路由協議有優勢。因為天然就有全網視圖,因為天然就已知各Node的信息。因為對接業務編排,能夠綜合各種需求,進行全局的選路計算。但從落地情況看也不完全如此,主要是第1點,在拓撲變化時,SDN的收斂能力在現階段不如傳統路由協議快速有效。
網絡服務 vs. 網絡為你而服務簡單梳理完網絡的三個發展階段,我們可以比較清楚的看到網絡的變化是從最初提供可達性的IP網絡,到有基本網絡分割服務的MPLS 網絡,到以需求為中心,能夠按需提供服務的SDN網絡。
事實證明為每一種需求單獨創造協議是行不通的,既增加控制平面的復雜性又不具有快速演進的能力。
網絡一直被應用所詬病和抱怨的是,部署速度和同時滿足多種需求的靈活性。網絡越大就越趨近于簡單,基礎的可達服務,而非能為某個application,某個臨時連接,或者某個重要用戶提供的即時定制服務。提供這樣服務的代價在設計層面是不可規模化的,在運維層面是全手工打造的,在排障層面是災難性的。
如何讓網絡在更多維度,更細顆粒度上為上層工作,除了有統一的北向接口,能夠用一個大腦理解拓撲,管理設備,設計路徑是一切成為的可能的基礎。