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