可編程網元的過去
在過去的很長一段時間里,網元之間通過OSPF(開放式最短路徑優(yōu)先協議)、BGP(邊界網關協議)等運行在設備控制面的分布式路由協議,進行交互工作。
網元提供SNMP、NETCONF、WEB、CLI等接口,進行配置下發(fā)或狀態(tài)獲取,控制面和轉發(fā)面都由設備商或芯片商實現,內部架構或實現細節(jié)對網元的擁有者而言是一個黑盒。這種網元,屬于“可配置網元”。
后來,有了SDN(軟件定義網絡)。
SDN的一個標志性動作,就是轉發(fā)面和控制面分離。這兩者破天荒地結束了你中有我、我中有你的耦合狀態(tài)。
控制面常采用軟件的方式實現,集中方式部署,可以同時管控多個數據面轉發(fā)網元。比較知名的開源SDN控制器,有ONOS、ODL等。
控制器會集中進行路由計算,并把每個受控轉發(fā)網元的表項以Openflow等標準API的方式進行下發(fā)。
網絡的擁有者可以對轉發(fā)網元的控制面按需定制(通過控制器),對轉發(fā)面的定制尺度有限,往往取決于采用的Openflow規(guī)范和所選擇的ASIC硬件。
SDN時代的硬件轉發(fā)網元,屬于“控制面可編程網元”。
可編程網元的現狀
隨著數據面可編程交換芯片及P4語言的出現,轉發(fā)網元的數據面也變的“善解人意”起來,可以根據用戶的業(yè)務場景和流量模型進行定制。
比如,傳統的IP類轉發(fā)網元,對5G用戶面網元UPF所采用的GTP報文的封裝和解封裝并不支持。數據面不可編程時代,要支持GTP就需要重新設計硬件,重走一遍傳統產品需求調研、立項、研發(fā)、測試等環(huán)節(jié),這個周期想想都很長。
可編程數據面硬件的出現,運行在設備側的P4 Runtime代理(如stratum)與控制面通過P4 Runtime交互,動態(tài)切換或改變轉發(fā)邏輯(如轉換為支持GTP的數據面)成為可能。這種網元,屬于“全可編程網元”。
通過下表,可以對三種類型網元做個簡要對比:
轉發(fā)網元數據面可編程,其實也不是可編程交換芯片的專屬。
軟件實現的虛擬網元、網絡多核處理器NP、FPGA等實現的網元,都可以作為P4語言的運行target(目標)。而且,這些網元的可編程能力較之可編程交換芯片往往更好。
不過,論帶寬、功耗、成本之類的硬指標,勝出的還是可編程交換芯片。
網元的控制面、轉發(fā)面全可編程帶來的直接好處,是網絡的擁有者不再受設備和芯片商的鎖定。
全可編程網元及由這些網元構成的可編程網絡,能夠極大激發(fā)產學研各界對網元、網絡創(chuàng)新的熱情,同時,也通過P4語言等降低了創(chuàng)新的門檻。
針對控制面的研究,隨著SDN的成熟,可謂碩果累累。
下面,筆者羅列了一些針對數據面可編程進行的優(yōu)秀創(chuàng)新和實踐。通過這些案例,可以更好地了解可編程網元的現狀:
大型數據中心網絡虛擬IP地址流量約占44%,需要做帶狀態(tài)負載均衡來維持每條連接的一致性。
數據中心通常的解決方案,是用上百臺服務器專門來做負載均衡。這大約會占用4%的計算資源,這部分計算資源無法再售賣給客戶進行變現。
雪上加霜的是,用服務器跑軟件的方式進行負載均衡,會帶來較高的延時和抖動,影響用戶的體驗。
2017年的一篇SIGCOMM論文拋出了SilkRoad方案(沒錯,漢語意思是“絲綢之路”),成功的將這一棘手問題扔進了垃圾桶。
SilkRoad使用可編程交換機來做帶狀態(tài)四層負載均衡,通過存儲流的五元組哈希值與DIP池版本號來分別減少匹配域和動作的大小,從而實現在交換機上同時維護上百萬條流的帶狀態(tài)連接。通過硬件實現的bloom filter,用于確保即使DIP池發(fā)生更新,也能維持每條連接的一致性。
SilkRoad這樣做的好處也很明顯,可以用一臺可編程交換機代替上百臺服務器來完成帶狀態(tài)負載均衡的工作。這樣不僅將帶狀態(tài)負載均衡的成本降低了兩個數量級,還錦上添花地降低了延遲與抖動。
- 網絡測量
有網絡運維經驗的讀者一定深有體會,日常的網絡管理和維護依賴于及時有效的網絡測量和監(jiān)控。
也許有的讀者也聽說過NetFlow,一款應用廣泛的網絡監(jiān)控工具。如果監(jiān)控所有流,會帶來較高的處理時間,以及較大的存儲空間消耗,很難在數據中心的商用交換機中進行部署。
因此NetFlow需要對數據包進行抽樣,只能監(jiān)控一部分流。這樣一來,對暫態(tài)路由循環(huán)、路由黑洞、突發(fā)流等進行檢測,就變得不切實際。因為這些都需要在短時間內,對所有流不采樣地進行監(jiān)控。
一篇題為《A better NetFlow for data centers》的文獻,設計了FlowRadar(流雷達),專門來解決這個痛點。
它的核心思想是,在可編程交換機上使用擴展的可逆布魯過濾器查詢表,對每條流的計數器進行編碼。然后,使用遠程采集器的計算能力,對全網流計數器進行解碼和分析。
這樣一頓折騰,FlowRadar比NetFlow的優(yōu)勢就出來了。它可擴展性更好,可以監(jiān)控所有的流,可以搞定暫態(tài)路由循環(huán)、路由黑洞、突發(fā)流等棘手問題的檢測。
DDoS攻擊,大家應該不會陌生,沒經歷過至少也應該聽說過。因為它是目前網絡環(huán)境中規(guī)模最大、頻率最高的網絡攻擊手段。
應對這種攻擊的傳統方法,是使用中間件來緩解。雖然SDN技術也可以被用來防御DDoS攻擊,但它本身又引入了新的DDoS的攻擊點。SYN-flood攻擊會使控制信道的鏈路容量和數據平面緩存很快成為瓶頸,就是個有血有肉的例子。
那么,有沒有在數據平面直接把DDoS攻擊流量清理掉的方案呢?
還真有,題為《Network anti spoofing with SDN data plane》的文獻,就提出了可以完全實現在可編程數據平面上的DDoS流量清理方法,這就避免了和控制器的交互。
它的核心思想是,數據平面設備會攔截并代理SYN請求,根據報文重新計算出的隨機SYN-ACK challenge作為應答號,成功響應challenge的源地址會被加入白名單并重設連接。
在通過challenge驗證前,服務器和數據平面設備都不需要維護任何帶狀態(tài)的信息,可以應對很大的攻擊流量。
當攻擊流量超過了單一設備資源限制時,使用同一條轉發(fā)路徑上所有可編程數據平面的資源對攻擊流量進行協同過濾,每個設備只負責清洗一部分流量,剩下的交由下游設備處理,讓DDoS攻擊來的更猛烈一些吧!
利用數據面可編程進行創(chuàng)新的例子,我們還可以舉出很多。限于篇幅,筆者打算用一張圖來進行這一節(jié)的收尾。
下圖顯示,可編程網元的研究在網絡遙測、性能優(yōu)化、加速卸載、安全等方方面面都有覆蓋。對這一領域感興趣的讀者,也可以將這張?zhí)嶙鳛殚_啟深入學習研究之旅的導航圖。
可編程網元的未來
隨著數據面可編程方案的逐漸豐富,可編程網元已經邁入控制面、數據面都可編程的全可編程網元時代。
用戶、業(yè)務和網絡對可編程網元的期待是否都已變成現實?未來的網絡是否會由可編程網元一統江湖?
上面的問題,每個讀者都有自己的理解。下面筆者拋磚引玉,說說我的看法。
首先,用戶、業(yè)務和網絡的需求,本身就在不斷的發(fā)展變化。而且,這個變化的趨勢在逐漸加快。所以,對可編程網元的需求或期待,永遠不會消失。
其次,未來網絡一定是彈性靈活高性能、SLA有保障的智慧管道,要實現這一目標,可編程網元絕對是個潛力股。
不過如前文所述,可編程網元的硬件形態(tài),較之目前五花八門的種類和型號,一定會有所減少,但也不大可能會只有一種硬件形態(tài)。至少,通用服務器的虛擬化可編程網元和采用可編程交換芯片、NP或FPGA其中的一種或幾種組合的軟硬一體化可編程硬件網元,大概率會存活下來。
目前,主流芯片供應商紛紛推出了自己的可編程芯片解決方案。白盒設備商,也迫不及待地基于可編程芯片,推出了各自的可編程網元硬件。國內外頭部互聯網公司,如AWS、Google、阿里、騰訊等,紛紛調兵遣將,進行可編程網元的研發(fā)和落地。
未來針對軟硬一體化可編程硬件網元的學術研究和產業(yè)應用,一定會呈井噴式發(fā)展。基于可編程硬件網元的玩法,也會百花齊放。
最后,上個圖供讀者參考,希望不會因此擠壓了大家對基于可編程網元進行創(chuàng)新的想象力。