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