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