自1983年自由軟件運動領袖Richard Stallman提出了GNU計劃以來,開源為軟件開發帶來了創造性的革命和商業成功。SDN如今的快速發展也離不開開源社區的力量,比如NOX、Floodlight、OpenContrail、ONOS等開源項目極大的推動了SDN產業鏈的發展。但SDN的開源大多都局限在控制器或軟件交換機的領域,數據平面的硬件開源項目始終沒有迎來一個百花齊放的春天,同時在網絡教學研究領域,也沒有形成一個有序、規范、有創造力的生態圈,FAST的誕生或許可以提供一個嶄新的思路。
他山之石:NetFPGA的啟示NetFPGA是斯坦福大學基于Linux開發的開放性試驗平臺,能夠支持模塊化設計,可以使研究人員方便的在其上搭建Gb級的高性能網絡系統模型。斯坦福大學剛開始研究OpenFlow項目的時候,就是基于NetFPGA實現了硬件加速的線速OpenFlow交換機。
自2009年開始,NetFPGA團隊陸續將代碼和設計文檔在GitHub上公開,為四種規格的NetFPGA平臺分別建立wiki頁面和軟硬件開發指南,我們注意到開源給NetFPGA帶來了不少“紅利”:
(1)加速項目的版本迭代。由于開源能有效的共享資源,所以可以避免不必要的重復勞動,以NetFPGA 1G為例,18個月間就更新了8個版本,大幅度節約了成本和時間。
(2)使項目設計和開發變得更加規范可靠。NetFPGA的設計文檔在開放平等的基礎上供公眾審查,200多份的設計文檔就有90余人的貢獻,足以說明在相互借鑒和比較的基礎上,能使硬件單元的設計能夠變得有序和規范。
(3)鼓勵創新項目的研究。由于源碼的開放,越來越多的研究人員開始關注到NetFPGA,并參與建立了許多基于NetFPGA的項目,比如開源網絡測試儀(OSNT),OpenFlow交換機等,可以研究下一代網絡提供有益的嘗試。
但是由于NetFPGA硬件平臺自身的局限性和對SDN交換機的關注度還不夠,所以,我們決定在GitHub上建立FAST開源項目,專注于SDN硬件交換機的設計和重構,為SDN數據平面的研究提供真實實驗環境和案例,為高校網絡研究教學的發展添磚加瓦。
FAST的前世今生FAST的基礎硬件應用平臺是國內自主研發的NetMagic[1],與NetFPGA中板卡與主機緊耦合的方式不同,NetMagic采用控制平面與轉發平面分離的方式,用戶使用自己的電腦,通過網絡遠程管理配置NetMagic硬件,更具便攜性和可擴展性。
FAST(FPGA bAsed SDN swiThing)是國防科技大學師生提出的一種基于FPGA的可重構交換架構——將報文處理流程拆解成多個獨立報文處理階段,并為每個階段建立其相應的模塊庫,開發者根據需要自由地選擇功能模塊來快速重構報文處理流水線。這種“離線重構”的方式能夠滿足多樣化的網絡需求,大幅度降低網絡應用服務開發的難度和網絡設備的開發周期。
如何增強轉發平面的靈活性和可擴展性,關鍵在于對功能庫中模塊的自由選擇,而按照標準擴建模塊庫,正是建立開源社區的意義所在。在FAST的開源過程中,不僅僅是公開代碼和設計文檔,而是既能將現有工作進行整合復用,也能給開源數據平面設計提供技術支持,推而廣之,FAST實際代表了一種規范化的FPGA交換機的開發模式。
硬件:將可重構進行到底硬件部分的源代碼需要燒寫至FPGA上實現報文轉發的功能,主要由以下三部分組成:
第一部分是FAST流水線模塊庫的代碼,這是實現不同報文處理邏輯的關鍵,不涉及用什么具體電路元件來實現,是通用且可編程的功能模塊,模塊使用FAST推薦的標準接口與其他模塊相連。用戶可根據應用環境的改變而重新選擇或改良流水線模塊的內容,編譯出不同的案例,達到可編程網絡的需求。
第二部分是與開發平臺相關的邏輯代碼,比如在對數據通路和控制信息的處理上,NetMagic08采用以太網口通過NMAC協議來傳遞控制命令,而NetMagicPro和NetFPGA是通過PCIE讀寫寄存器來獲取控制信息。我們希望能廣泛支持各類FPGA硬件平臺。
第三部分是工程配置文件,用于指定所用硬件平臺和流水線模塊,便于不熟悉硬件開發的研究人員快速編譯運行,可以根據實際需求來自行編寫配置文件。
軟件:轉發平面的智囊團該軟件代碼實際上是交換機的管理軟件,與硬件代碼一起作為SDN的轉發平面,向上通過南向接口與控制器交互,實現在實驗網絡狀態下的手動、自動配置以及管理維護。分為以下四個部分:
第一部分是與平臺相關的適配通信庫,用戶態代碼實現可以用PC通過NMAC協議與NetMagic08通信,也可以將軟件部分放在帶有CPU的NetMagicPro平臺上通過DMA方式配置硬件流表,實現快速轉發,具有高度的靈活性和適配性。
第二部分是核心管理軟件,表管理軟件用于TTP定義的流表管理維護,配置信息等,與硬件中的信息保持同步;算法相關軟件用于實現硬件查表,驗證算法的性能和正確性;統計管理軟件主要對硬件轉發行為進行統計匯總,可在本地管理界面顯示,也可以通過南向接口協議傳輸到控制器報告實時狀態。
第三部分是配置管理軟件,直接與SDN控制器交互,傳輸和展示本地配置流表信息,支持OpenFlow協議,未來也可以擴展其他南向接口協議的開發與驗證。
第四部分屬于轉發平面功能的延伸,是為了解決很多課題實驗項目中需要借鑒SDN思想,但缺乏可定制化擴展功能的問題。用戶只需要在擴展模塊中添加適應于自己的轉發表項,而無需關心南向接口與平臺適配的問題。
FAST的征途:SDN科研創新與高校網絡教學目前,我們在NetMagic08上實現了一個SDN交換機SDTS(Software-Defined Tunnel Switch),以LISP隧道封裝和基于端口轉發的模式,驗證了BV算法對硬件匹配性能效果的提升,配合開源控制器Floodlight搭建了一個低成本、可重構、易部署的SDN實驗環境,后續能夠讓研究人員進行SDN相關技術的實踐和驗證。
FAST具有良好的可重構特性,雖然目前采用的開發模式是從功能模塊庫中篩選與重組的方式,但在下一步的工作中,實現硬件資源的形式化,同時實現軟件代碼重編譯為硬件代碼(例如Altera Open CL,Xilinx Vivado HLS),軟件開發者就可以單獨完成其底層功能模的設計與更新,能夠完美的支持P4的設計與實現。
SDTS演示現場高校網絡教學科研的需求是長期存在的,學生們在進行課程實驗使需要對網絡設備的轉發行為、協議的運行原理進行剖析,老師們也要需要進行更精確的數據建模和算法驗證。我們基于NetMagic08開發了一套教學案例NetlabSwitch,能夠支持協議觀測分析、令牌桶和輸出調度原理、SDN交換實現的原理等技術的研究,為網絡教學實驗提供了一個頗具代表性的示范。
FAST的目標是為基于FPGA實現SDN交換機研究提供一個開源生態圈,在這個軟硬件皆可編程的開放架構下,進一步推動 SDN 交換技術的發展,營造和提升中國高校的開源文化氛圍。下一步國防科技大學、北京郵電大學、東南大學和湖南新實網絡的相關研究人員將共同組織規范的制定和編寫,制作典型案例demo,運作開源社區。
如何使用FAST的源代碼,敬請關注SDNLAB后續的連載。欲了解更多信息,請參閱http://fast-switch.github.io
參考文獻[1]毛席龍,李韜,孫志剛等. NetMagic創新實驗平臺設計指南[M].湖南長沙:國防科技大學出版社, 2012:1-133.
作者簡介:何璐蓓、厲俊男、劉長鑫國防科技大學計算機學院