作者簡介:張漸修,任職于上海同悅信息科技有限公司從事SDN/P4交換機的市場推廣工作。
OpenFlow從誕生之日起就與SDN劃起了等號,時至今日仍然有用戶在尋求SDN方案時潛意識在尋求OpenFlow的支持。實際上,隨著SDN的逐步演進,軟件定義網(wǎng)絡(luò)更多是一種設(shè)計思路與設(shè)計理念,SDN網(wǎng)絡(luò)的設(shè)計經(jīng)歷了螺旋式發(fā)展。近幾年SDN之父Nick教授身體力行的開始改造OpenFlow,網(wǎng)絡(luò)設(shè)備第一次和計算設(shè)備一樣具有了可編程的能力。和OpenFlow剛剛面世一樣,用于網(wǎng)絡(luò)設(shè)備編程的P4編程語言也存在眾多誤解。本文的主要目的就是解惑P4編程語言的幾個常見誤區(qū)。
誤區(qū)一:P4就是Openflow2.0
這一誤區(qū)產(chǎn)生的主要原因是斯坦福大學(xué)的Nick Mckeown教授在OpenFlow之后馬不停蹄地開始P4的設(shè)計與推廣,因此很容易讓人以為P4就是OpenFlow的新版本。雖然兩者之間是超集的關(guān)系,但是P4絕不是已經(jīng)停止更新的OpenFlow新版本。
由ONF組織推動的OpenFlow在發(fā)展到1.6版本后停止更新,ONF組織也歷經(jīng)與On.Lab和P4.org兩大組織的合并。OpenFlow本身只是SDN南向接口的一種,是控制器向轉(zhuǎn)發(fā)設(shè)備傳遞命令的一種方式;而P4 (Programming protocol-independent packet processors)則是一種編寫協(xié)議無關(guān)的包處理器的高級編程語言,它可以令設(shè)備實現(xiàn)OpenFlow同樣的功能,但是它的愿景遠(yuǎn)不是僅僅實現(xiàn)更靈活的openflow,它要給予數(shù)據(jù)平面與計算平面一樣無與倫比的可編程性。傳統(tǒng)上無論是OpenFlow設(shè)備還是非OpenFlow設(shè)備大部分都是按照固定流水線執(zhí)行指令,在芯片現(xiàn)有功能內(nèi)閃轉(zhuǎn)騰挪而不能越雷池半步。P4語言則是要打破藩籬,讓數(shù)據(jù)平面設(shè)備也具備在線實現(xiàn)新功能的能力。尤為與FPGA這種現(xiàn)場可編程門陣列不同的是,F(xiàn)PGA提供的是半定制電路,需要采用VHDL或者Verilog等語言來實現(xiàn)硬件的重構(gòu),每個邏輯單元的功能在重編程(燒寫)時確定。
所以P4是數(shù)通芯片的新一次嘗試,與OpenFlow只是定義一個南向接口截然不同。
誤區(qū)二:只有Tofino芯片可以支持P4
這個誤區(qū)仍然與Nick教授有很大關(guān)系。Nick作為SDN之父在看到OpenFlow面臨的諸多落地困局后于2013年的ACM SIGCOM發(fā)表《Forwarding Metamorphosis: Fast Programmable Match-Action Processing in Hardware for SDN》一文,并且作為創(chuàng)始人成立了Barefoot公司。因此Barefoot公司推出的Tofino系列芯片天然支持P4。但是一個好漢三個幫,即使Nick宣稱可編程的數(shù)據(jù)芯片存在諸多優(yōu)點,在商業(yè)落地時也面臨行業(yè)巨頭的打壓與客戶的質(zhì)疑,因此P4語言并不是Nick或者Barefoot公司的私有產(chǎn)品,它由P4.org社區(qū)運作推廣,希望借助社區(qū)的力量來找到應(yīng)用場景和市場,近期P4社區(qū)剛剛與ONF組織合并。
目前支持P4編程的數(shù)據(jù)平面芯片既可以是傳統(tǒng)的網(wǎng)絡(luò)處理器(NPU),也可以是上文提到的FPGA芯片,更不用說在CPU上可以模擬P4的各種行為,還有大神在GPU上開展P4的研究工作。
誤區(qū)三:P4只支持可編程芯片
P4語言并不是學(xué)術(shù)界靈光閃現(xiàn)的成果,它是業(yè)界在OpenFlow的前期探索后的成果,谷歌在其中發(fā)揮了重大作用。時至今日谷歌現(xiàn)網(wǎng)仍然有很多運行OpenFlow協(xié)議的設(shè)備,因此當(dāng)網(wǎng)絡(luò)走向可編程走向更加開放,如何利舊就是個現(xiàn)實問題。而P4作為一種語言本身就是對網(wǎng)絡(luò)行為的描述,所以只要能夠讓傳統(tǒng)非可編程網(wǎng)絡(luò)芯片可以理解由P4定義的轉(zhuǎn)發(fā)流水線就能讓傳統(tǒng)芯片也支持P4定義的行為。
目前谷歌的SDN網(wǎng)絡(luò)正在向可編程邁進,傳統(tǒng)設(shè)備通過抽象層的轉(zhuǎn)譯也可以支持P4語言,因此傳統(tǒng)廠商支持P4不是不行而是可為不可為的問題,畢竟業(yè)界老大哥攜壓倒性市場份額狂奔在另一條路上。
誤區(qū)四:P4語言是Python一樣的高級語言
P4雖然是高級語言但是屬于針對特定領(lǐng)域的DSL語言,它和Python等計算機高級語言相比有很大的差別,首先P4語言需要考慮物理資源的限制,P4最終管控的是資源有限的數(shù)據(jù)平面轉(zhuǎn)發(fā)芯片,所以注定不會像CPU所處的計算平面具有超高的外置Memory資源;也正是這個原因,p4代碼并不具備高級語言的通用移植性,在A平臺的可運行代碼在B平臺不一定可以工作,所以每個支持P4語言的廠家都會提供自家產(chǎn)品的架構(gòu)模型和編譯器,用戶需要在編譯時選擇相應(yīng)物理平臺來實現(xiàn)可落地的代碼。
P4-16版本推出的目的就是提升目標(biāo)無關(guān)性,通過語言與架構(gòu)分離和靈活的數(shù)據(jù)模型支持多種目標(biāo)設(shè)備。
誤區(qū)五: P4代碼就是SDN
如同基于OpenFlow實現(xiàn)的SDN,其最重大的改進是邏輯上的集中控制,在大規(guī)模數(shù)據(jù)中心和WAN網(wǎng)絡(luò)接入這種全局視角可以更好的解決網(wǎng)絡(luò)擁塞等傳統(tǒng)網(wǎng)絡(luò)的問題。利用P4來實現(xiàn)可編程的設(shè)備,他們完成的也只是數(shù)據(jù)平面的工作,實現(xiàn)報文的轉(zhuǎn)發(fā)流程還需要控制平面的參與。因此在OpenFlow時代誕生了OpenDaylight和ONOS等SDN控制器項目;P4語言的協(xié)議獨立意味著不會原生支持任何協(xié)議,P4語言只是描述報文頭部格式以及程序中需要的協(xié)議字段。所以并沒有解決控制層面的問題。P4優(yōu)化了數(shù)據(jù)平面的實現(xiàn),但是控制層面的工作一點也不能少。
無論是采用傳統(tǒng)OSPF/BGP路由協(xié)議,或者是沿用SDN控制器都可以實現(xiàn)對P4設(shè)備的控制。Opendaylight和ONOS都提供遠(yuǎn)程控制插件,可以Runtime實現(xiàn)控制流的發(fā)送。
P4的誕生是SDN演進的自然結(jié)果,如同OpenFlow剛剛出現(xiàn)面臨的不解一樣,P4作為新生事物也存在一些誤區(qū),相信隨著P4-16的推出以及P4.org與ONF的合并,P4將獲得更多的關(guān)注與落地。當(dāng)然這一切也取決于Intel的態(tài)度。
編輯:hfy
-
交換機
+關(guān)注
關(guān)注
20文章
2610瀏覽量
99055 -
可編程芯片
+關(guān)注
關(guān)注
0文章
51瀏覽量
18606 -
python
+關(guān)注
關(guān)注
55文章
4766瀏覽量
84360 -
sdn
+關(guān)注
關(guān)注
3文章
254瀏覽量
44728
發(fā)布評論請先 登錄
相關(guān)推薦
評論