OpenFlow協(xié)議實現(xiàn)的SDN目前已經(jīng)得到了應用和推廣,但OpenFlow并不完美,OpeFlow交換機還不能提供更好的可編程能力。POF作為一種新的南向協(xié)議,是OpenFlow的未來方向?還是只是一個烏托邦?本文將介紹由華為提出的協(xié)議無關轉發(fā)POF,其中包括其簡介、原理、原型和應用場景以及最后的發(fā)展趨勢,希望能帶來一些有意思的想法。
簡介POF(Protocol Oblivious Forwarding)[1]是由華為提出的SDN南向協(xié)議,是一種SDN實現(xiàn)方式,中文意思為協(xié)議無關轉發(fā)。與OpenFlow相似,在POF定義的架構中分為控制平面的POF控制器和和數(shù)據(jù)平面POF轉發(fā)元件(Forwarding Element)。在POF架構中,POF交換機并沒有協(xié)議的概念,它僅在POF控制器的指導下通過{offset, length}來定位數(shù)據(jù)、匹配并執(zhí)行對應的操作,從而完成數(shù)據(jù)處理。此舉使得交換機可以在不關心協(xié)議的情況下完成數(shù)據(jù)的處理,使得在支持新協(xié)議時無需對交換機進行升級或購買新設備,僅需通過控制器下發(fā)對應流表項即可,大大加快了網(wǎng)絡創(chuàng)新的進程。
原理讀者可能會有疑問:OpenFlow所實現(xiàn)的SDN目前不是發(fā)展挺好的嗎,POF相比OpenFlow有什么優(yōu)點呢?
在OpenFlow1.0版本推出時,普遍被認為只有12個匹配域無法適應多網(wǎng)絡場景的需求。但隨著OpenFlow版本的推進,發(fā)展到OpenFlow1.3版本時已經(jīng)有了40個匹配域,已經(jīng)可以支持大部分的協(xié)議字段匹配。然而始終還會有更多的協(xié)議需要支持,所以這個增長趨勢不會停止。不斷增多的匹配域,使得OpenFlow協(xié)議越來越復雜,也使得OpenFlow交換機的設計與實現(xiàn)越來越復雜。而不穩(wěn)定的協(xié)議內容讓OpenFlow無法被廣泛支持,因為設備廠家需要不斷地開發(fā)新的交換機來支持新協(xié)議,而網(wǎng)絡所有者如運營商也會擔心協(xié)議版本不穩(wěn)定帶來的設備不兼容問題。
除此之外,OpenFlow實現(xiàn)的SDN還有兩個明顯的不足:首先,OpenFlow依然只能在現(xiàn)有交換機的轉發(fā)邏輯上來添加對應流表項來指導數(shù)據(jù)包的轉發(fā),而無法對交換機的轉發(fā)邏輯進行編程;其次,OpenFlow基本是無狀態(tài)的,其無法維護網(wǎng)絡狀態(tài)并主動做出動作。這兩個主要的缺陷將會帶來如下的不良后果:
(1)目前OpenFlow所實現(xiàn)的數(shù)據(jù)平面和控制平面分離得不夠徹底。數(shù)據(jù)平面的交換機設備依然需要掌握協(xié)議的語義信息等控制信息才能完成數(shù)據(jù)匹配。當交換機支持的協(xié)議增多時,支持特定協(xié)議的指令會大規(guī)模增長,從而增加了交換機的設計難度。
(2)在當前的交換機中,很難去對數(shù)據(jù)包進行修改或者增加一些輔助信息,更別說支持新的轉發(fā)協(xié)議的運行測試了。所以目前的新協(xié)議在交換機不支持的情況下都是通過Overlay的形式來實現(xiàn),這就必須對數(shù)據(jù)進行封裝和解封裝,這種實現(xiàn)方式即增加了數(shù)據(jù)解析的難度和壓力,也帶來了過長的報頭,降低了數(shù)據(jù)傳輸效率。
(3)在給OpenFlow添加新協(xié)議特性時,需要重寫控制器和交換機兩端協(xié)議棧。而且在最麻煩的情況下,還需要重新設計交換機的芯片和硬件才能支持新特性。雖然最新版本的OpenFlow已經(jīng)支持40多個匹配域,但這些匹配域大多是基于以太網(wǎng)的協(xié)議族的字段。還存在許多其他網(wǎng)絡的協(xié)議,以及未來誕生的協(xié)議需要支持。所以每增加一個新的協(xié)議或者特性都會帶來很多的開發(fā)量,增加了支持新協(xié)議的成本。而OpenFlow不穩(wěn)定的協(xié)議版本,也增大了OpenFlow推廣的難度。
(4)交換機目前匱乏的表達描述能力使得轉發(fā)平面的可編程性受到很大的限制,最明顯的一點就是交換機無法描述有狀態(tài)的邏輯并主動采取動作。由于OpenFlow缺乏足夠的能力去維持網(wǎng)絡狀態(tài),所以OpenFlow交換機基本無法自主實現(xiàn)有狀態(tài)的操作。與狀態(tài)相關的信息均由控制器維護,交換機只能通過控制器來指導動作,而無法在滿足條件時主動采取動作。這種完全需要控制器來指揮的機制讓數(shù)據(jù)平面過度依賴控制平面,帶來了SDN的可拓展性和性能問題。
針對以上的問題,華為提出了POF的解決方案。POF通過{offset, length}來定位數(shù)據(jù),所有的協(xié)議相關的內容由控制器來描述,而交換機僅需通過通用的指令集完成數(shù)據(jù)操作即可,從而實現(xiàn)了協(xié)議無關轉發(fā)。細心的讀者應該發(fā)現(xiàn)協(xié)議的操作無非就是增加、修改和刪除對應的字段/標簽,而這些操作可以通過通用的指令集來實現(xiàn),比如Addfiled就可以添加所有的字段,而具體的字段只有控制器了解,而交機機并不掌握這個信息。
POF的設計思想與PC的設計思想類似,所以其架構和PC的架構也類似,兩者對比見圖1。POF轉發(fā)設備無需關心具體的協(xié)議語義,只需關心最底層的數(shù)據(jù)操作即可,正如CPU并不知道執(zhí)行的運算是一個語音相關的運算,還是圖片處理,它只知道執(zhí)行了“+”操作。控制器正如PC中的操作系統(tǒng)一般,為上層業(yè)務提供豐富的業(yè)務接口,為下層提供通用的指令集,并完成兩者的翻譯工作。
圖1. POF與PC架構對比
通過使用通用指令集來實現(xiàn)協(xié)議無關轉發(fā)的設計使得交換機擁有完全的可編程能力??刂破骺梢酝ㄟ^南向協(xié)議對交換機進行編程,包括數(shù)據(jù)轉發(fā)引擎邏輯的編程以及數(shù)據(jù)流的處理規(guī)則的編程。另外,使用通用指令集的交換機很自然地就能互聯(lián)互通。當網(wǎng)絡中需要支持新的協(xié)議時,僅需通過控制器進行編程就可以實現(xiàn),這大大縮短了網(wǎng)絡創(chuàng)新周期。而對于運營商或者服務提供商而言,在添加新網(wǎng)絡服務時不再需要聯(lián)系廠商,也無需購買新的交換設備。
針對OpenFlow無狀態(tài)的缺陷,POF設計了相關指令使得在條件滿足時,交換機可以主動地創(chuàng)建、修改和刪除流表等操作。在主動執(zhí)行指令之后,交換機需要異步通知控制器發(fā)生的改變,從而實現(xiàn)數(shù)據(jù)的同步。筆者認為狀態(tài)維護特性是POF設計中的精彩之處。因為目前OpenFlow幾乎無法實現(xiàn)與狀態(tài)相關的操作,而在網(wǎng)絡安全等重要領域,維護網(wǎng)絡狀態(tài)是實現(xiàn)網(wǎng)絡安全的必要手段。當然,為實現(xiàn)狀態(tài)維護,必然需要付出一些性能代價或者成本代價。
原型與應用場景為了驗證POF的可行性,華為團隊基于FloodLight開源控制器開發(fā)了POF控制器,其架構模塊圖如圖2所示。在數(shù)據(jù)平面,分別基于華為硬件核心路由器和軟件交換機實現(xiàn)了兩個POF交換機模型用于驗證POF的可行性,其功能架構如圖3所示。
圖2. POF控制器架構模塊圖
圖3. POF硬件交換機(左),POF軟件交換機(右)
在POF的論文中還介紹了轉發(fā)性能測試的結果,其可以在40G的線卡測試中達到48Mpps的速率,雖然丟失了20%的性能,但是依然支持80-Bytes的線速轉發(fā)。性能問題也許是POF存在的最大的技術問題之一。
由于POF支持協(xié)議無關轉發(fā),所以POF可以部署在任意的網(wǎng)絡中,包括一些非以太網(wǎng)絡。此外,POF的協(xié)議無關轉發(fā)特性使得POF可以完美地支持Named Data Network (NDN)和Content-Centric Network (CCN) 等未來網(wǎng)絡領域的研究。而POF支持有狀態(tài)的網(wǎng)絡使得交換機可以實現(xiàn)更多的智能,并應用于網(wǎng)絡安全等領域。
發(fā)展趨勢為實現(xiàn)POF的平滑過渡,POF應滿足OpenFlow兼容的需求。目前OpenFlow設備已經(jīng)存在一些,如果能讓POF成為OpenFlow的一種服務,則可以平滑地從OpenFlow過渡到POF。而轉發(fā)設備方面的實現(xiàn)需要在現(xiàn)有的芯片上是支持POF的指令集,使POF的指令集作為一個方法去調用。之后才是將POF的指令集直接在ASIC上支持,從而換取更高的數(shù)據(jù)處理和轉發(fā)性能。
作為一個理想的模型、一個開創(chuàng)式的技術,POF可以重新賦予SDN新的定義,帶來具有完全編程能力的SDN。但是這個進程注定是艱難的。一個技術的發(fā)展,除了技術本身的技術缺陷以外,更多是收商業(yè)因素的左右。POF在技術方面的性能缺陷是一個問題,但是總可以通過不斷地優(yōu)化和產(chǎn)品迭代來提高性能,所以阻礙其發(fā)展的更多是來自商業(yè)方面的因素。POF帶來的變革正如OpenFlow帶來的變革一樣,甚至更甚。OpenFlow使得控制平面和轉發(fā)平面分離,交換機成為灰盒子或者白盒子,使得原有依靠專有技術的企業(yè)失去了技術壁壘,而這些擁有技術壁壘的企業(yè)基本都是行業(yè)的領頭羊,當一項技術影響到領頭羊的地位時,它必定是很難推廣和發(fā)展的。企業(yè)不僅僅是推進技術的發(fā)展,讓世界變得更好,更多的時候,他們還需要生存,而生存往往是最重要的。所以不難想象OpenFlow的推廣并不順利,而POF比OpenFlow有過之而無不及,所以同樣可以想象POF的推廣更加艱難。
POF的發(fā)展以及推廣勢必會打破現(xiàn)有的行業(yè)生態(tài),而那些在目前生態(tài)中過得很好的領頭羊自然不愿接受這個改變,而提出POF的華為司司目前在這個生態(tài)中也處于上游,POF的推廣最終會讓華為發(fā)展更好還是更差,這不得而知。目前看來,POF自發(fā)論文以來到?jīng)]有很大的進展,但在與宋浩宇前輩的溝通中得知POF項目還在繼續(xù)推進,今年年中將有產(chǎn)品推出,希望POF能帶來一些不一樣的改變。
歷史的車輪總是前進的。目前不僅僅POF提出了這種想法,由OpenFlow發(fā)明者Nick教授的團隊也提出了P4(Programming protocol-independent packet processors) [2]解決方案來解決目前OpenFlow的不足之處。POF和P4兩者思路類似,但POF強調通用指令集實現(xiàn)協(xié)議無關轉發(fā),是偏硬件的解決思路,而P4則關注上層網(wǎng)絡建模來定義交換設備轉發(fā)邏輯,是更偏軟件的解決思路。而無論哪一種解決方案,交換機將越來越開放,網(wǎng)絡也會具有更好的可編程性。P4和POF都是OpenFlow未來有前景的發(fā)展方向之一。
筆者認為,隨著技術的發(fā)展,POF技術方面的缺陷將得到解決,前提是華為繼續(xù)推進POF的研發(fā)工作。隨著技術問題的解決,成本的降低,作為網(wǎng)絡設備購買方的服務提供商應該會更加傾向與采購更加SDN的設備。因為POF將帶來可編程性能更好的SDN設備,從長遠角度看,POF也降低了設備的采購成本和運營成本。如果P4和POF可以整合,在軟件方案和硬件方案上相互彌補,會成為一個更加有前途的解決方案,而目前的POF確實也已經(jīng)支持了P4。如果谷歌、微軟等巨頭加入之后,SDN的進程就會像NFV那樣變成一個由網(wǎng)絡擁有者而非設備商主導的技術革命?也許這樣POF就可以改變未來的網(wǎng)絡,實現(xiàn)真正具有完全可編程能力的SDN。
參考文獻[1] Song H. Protocol-oblivious forwarding: Unleash the power of SDN through a future-proof forwarding plane[C]//Proceedings of the second ACM SIGCOMM workshop on Hot topics in software defined networking. ACM, 2013: 127-132.
[2] Bosshart P, Daly D, Gibb G, et al. P4: Programming protocol-independent packet processors[J]. ACM SIGCOMM Computer Communication Review, 2014, 44(3): 87-95.
作者簡介:
李呈,2014/09-至今,北京郵電大學信息與通信工程學院未來網(wǎng)絡理論與應用實驗室(FNL實驗室)攻讀碩士研究生。
個人博客:http://www.muzixing.com