The NetFPGA project[1] is an effort to develop open source hardware and software for rapid prototyping of computer network devices. The project targeted academic researchers, industry users, and students. It was not the first platform of its kind in the networking community.[2][3][4][5] NetFPGA used an FPGA-based approach to prototyping networking devices. This allows users to develop designs that are able to process packets at line-rate, a capability generally unafforded by software based approaches. NetFPGA focused on supporting developers that can share and build on each other's projects and IP building blocks.
The NetFPGA is an open source hardware and software platform designed for research and teaching. Currently there are three supported platforms: NetFPGA-SUME, NetFPGA-1G-CML and the NetFPGA-10G and one deprecated platform: NetFPGA-1G. These platforms allow researchers, and students to build prototypes of high-speed, hardware-accelerated networking systems. As of 2014 the NetFPGA platforms have been used in over 226 academic papers. Both platforms are open-source and the hardware is made available at low cost through donations of gifts and silicon chips by sponsors of the NetFPGA project.
Tutorials have been held worldwide to teach new users with hands-on experience using the NetFPGA. There are now over 150 groups around the globe that use the NetFPGA.
NetFPGA 是由美國斯坦福大學 (Stanford University) 開發設計的一個低成本 可重用硬件平台.它的出現使研究人員可以在硬件級別的開發環境上搭建 Gb/s 級高性能網絡系統模型,從而進行網絡系統的研究和測試.NetFPGA平台的軟件系統包括操作系統、作為軟件接口的驅動程序、實現各種硬件功能的邏輯代碼、執行控制功能的軟件程序、系統測試的腳本程序,以及計算機輔助設計軟件工具。

NetFPGA的概述
- NetFPGA 能夠很好地支持模塊化設計,復雜的硬件設計可以通過各個子模 塊的組合來完成.更重要的是,NetFPGA 是一個基於 Linux 的開放性平台,所 有對它感興趣的人都可以利用平台上現有的資源, 在前人開發的基礎上搭建自己 的系統, 而自己開發的系統也可以被其他人所用,而不再需要重復地搭建外圍模 塊,開發驅動和 GUI 等,只要添加自己的模塊和修改現有的系統即可. NetFPGA 的模塊化和開放性,大大簡化了網絡研究的任務量,從而使其獲 得了全球眾多研究機構的青睞. 目前, 基於 NetFPGA 的網絡設計和路由器設計, 已經作為一門實驗課程在美國的很多高校里講授. 國內也有很多學校和研究機構采用基於 NetFPGA 進行實驗與教學的實例.
NetFPGA的結構
-
最新的2.1版本NetFPGA開發板的實物圖如圖所示
NetFPGA的主要組成部分為:
Xilinx Virtex-II Pro 50 (賽靈思Virtex-II Pro 50 FPGA )
JTAG cable connector can be used to run Xilinx (國際通用的JTAG測試端口)
4.5 MBStatic Random Access Memory (SRAM) (4.5 MB高速靜態隨機存取器)
Connector block on left of PCB interfaces to 4 external RJ45 plugs (4組高速以太網口)
Interfaces to standard Gigabit Ethernet using Cat5E or Cat6 copper network cables (支持Cat5E或Cat6標准電纜)
Wire-speed processing on all ports at all time using FPGA logic (基於FPGA硬件控制電路)
Two SATA-style connectors to Multi-Gigabit I/O (MGIO) on right-side of PCB (右側兩個串口連接線)
Double-Date Rate Random Access Memory (DDR2 DRAM) (64MB二代內存)
Standard PCI Form Factor (標准PCI接口)
Dimensions: 25cm long x 10cm tall (10" x 4")(25厘米長x 10厘米高)
NetFPGA的軟件系統
-
NetFPGA平台的軟件系統包括操作系統、作為軟件接口的驅動程序、實現各種硬件功能的邏輯代碼、執行控制功能的軟件程序、系統測試的腳本程序,以及計算機輔助設計軟件工具。
為了保證開放性,NetFPGA平台選擇了CentOS操作系統。CentOS是一個開放源代碼的 Linux操作系統,全名為"社區企業操作系統"(Community Enterprise Operating System),是Red Hat的免費版本,相對於其他Linux發行版,其穩定性值得信賴,非常適合應用在網絡和服務器平台。目前,NetFPGA平台已經支持32位的 CentOS 4.4版本直至最新的5.2版本。
基於Linux內核的設備驅動程序是NetFPGA開發板與主機操作系統的軟件接口。首先,驅動程 序對NetFPGA的四個千兆以太網口進行配置,在系統內添加了四個命名為nf2c0、nf2c1、nf2c2、nf2c3的網絡連接,從而使得PC主機 上的用戶空間軟件可以通過NetFPGA開發板上的以太網端口來收發數據分組,就像使用普通的以太網口一樣。其次,驅動程序給安裝在主機上的每個 NetFPGA板子預留了128MB的主機內存空間,開發板的片上寄存器、SRAM、DRAM被映射到內存中,應用程序通過對這些寄存器映像進行讀寫,從 而控制NetFPGA的運行模式,監視數據通道的分組處理狀態。再者,驅動程序使主機和NetFPGA之間按照DMA方式傳送這個以太網幀,從而使主機在 I/O進行的同時能夠並行運算而不必等待I/O結束。
實現各種硬件功能的邏輯代碼是由Verilog硬件設計語言編寫的,這些代碼通過仿真來測試和改進 邏輯功能,之后生成bit文件下載到FPGA中,執行相應的硬件功能。NetFPGA作為一個開放平台,其研究者們已經貢獻出了很多Verilog模塊, 這為我們的研究開發提供了很大的便捷。
完成控制功能的軟件程序主要是由C語言編寫,包括讀寫寄存器、網絡協議的執行等功能。為了使操作簡單和便捷,NetFPGA平台還提供了Java程序開發的圖形用戶界面(Java GUI)。
此外,Linux操作系統下的Shell腳本程序,可以用來調用C語言程序,從而對系統進行測試,評估其網絡性能等。這些腳本程序通常是在Shell終端里,以命令行的方式運行的。
用於NetFPGA平台開發的計算機輔助設計(CAD)工具,對硬件設計進行仿真和調試。設計方案 通過Mentor Graphics ModelSim來仿真,確保邏輯能夠正確地執行。Verilog源代碼通過Xilinx ISE進行綜合,最終生成bit文件。最后,bit文件通過PC主機的命令行程序下載到FPGA並對其進行編程,從而執行設計的硬件功能。硬件電路的調試 可以使用Xilinx ChipScope的片上邏輯分析儀,通過JTAG接口來完成。
NetFPGA的搭建
-
組裝PC主機
主機配置要求為雙核或四核處理器,2G以上內存,額定功率400W以上的電源,主板必須帶有PCI-Express和PCI插槽。主機攢好之后,將雙口網卡和NetFPGA分別插到主板的PCI-Express和PCI插槽,並牢牢固定住。
安裝操作系統
目前NetFPGA已經兼容從4.4到5.2的各個CentOS版本,由於CentOS暫時不支持SATA硬盤,需要通過設置主板BIOS使SATA硬盤工作在IDE模式。為了保險起見,安裝過程中選擇所有的組件。
安裝Java
由於NetFPGA平台的控制軟件中包含了Java語言編寫的GUI界面,因此還必須安裝Java JDK和JRE。
安裝NetFPGA軟件包
包含NetFPGA驅動程序和基本模塊的軟件包,可以從官方網站直接下載,安裝之后進行編譯,系統已經為NetFPGA的四個端口添加了驅動,出現了nf2c0,nf2c1,nf2c2和nf2c3四個網絡連接。
安裝CAD工具
編譯工具采用Xilinx的ISE Foundation,仿真工具采用Mentor Graphics的ModelSim,調試NetFPGA上的信號采用Xilinx的 ChipScope Pro 。
測試
為了確保軟硬件系統的正確設置,在安裝完所有軟件之后,對NetFPGA平台做了一系列測試。這些測試是由一系列Shell腳本程序來完成的,NetFPGA的基本軟件包里已經包含了這些程序
_____________________________________________________
介紹
NetFPGA是一款低功耗的開發平台,作為網絡硬件教學和路由設計的設計工具。NetFPGA可以很方便的使得研究人員或者高校的學生搭建一個高速、硬件加速的網絡系統。興起於北美,最初只是斯坦福大學課堂教學使用的Project。NetFPGA把FPGA的可配置的特性帶入了網絡通訊領域,可以為更多的研究人員研究下一代網絡提供了一個開放的平台。愈來愈多的人開始關注到NetFPGA的特性,並有很多人參與了基於NetFPGA的開源項目。
NetFPGA的參數
NetFPGA平台(如圖1)包含了一個Xilinx Virtex-2 Pro 50 的FPGA,運行在125MHz的時鍾頻率下,用於用戶自定義邏輯的設計;還包含了Xilinx Spartan-II FPGA,運行PCI接口控制器的控制邏輯,用於與主處理器的通信。兩個2.25MB的外部SDRAM以及擴展的64MB的DDR SDRAM作出數據存儲介質。平台還提供了四個千兆以太網接口,以配合在FPGA中的四個千兆以太網控制器軟核。NetFPGA還包含了兩個SATA連接器,使得在一個系統中多個NetFPGA板直接交換數據,而不需通過PCI總線。
圖1 . NetFPGA的硬件組成
板上的主要資源:
用於邏輯設計的Xilinx Virtex-2 Pro FPGA
用於PCI主接口的Xilinx Spartan
2*2.25MB ZBT SRAM
64MB DDR2 DRAM
物理層上的4個千兆以太網口
開發環境
NetFPGA的系統架構(如圖2所示)。在研究開發的過程中主要包括硬件層的設計(FPGA的邏輯層的設計)以及軟件層的開發(對應硬件層的驅動開發以及應用程序的開發)。
硬件
購置的主機(配置越高越好),注意主板需留一個PCI-E給網卡使用,所以選主板的時候最好選擇集成顯卡。
圖2. NetFPGA的系統框架
軟件
操作系統推薦的是CentOS 4.4,CentOS 4.5 CentOS 5.1;用戶需要對Xilinx的FPGA進行配置,所以需要安裝ISE9.1i軟件;還有相關FPGA的工具,如ModelSim(FPGA邏輯仿真),ChipScope(片上邏輯分析)等。還需要安裝NetFPGA Base package,在安裝之前還需要Java和RPMforge yum工具包的支持。需要注意安裝的每個軟件的版本問題,因為彼此存在很大的依賴。
開源項目
在http://www.netfpga.org/上可以找到一些開源項目,羅列如下:
1. NetFlow Probe
2. Hardware Accelerated Linux Router
3. NetFPGA Ethernet Switch
4. Quad-Port Gigabit NIC
5. NetFPGA OpenFlow Switch
在國內也有多個團隊在開發使用NetFPGA,在http://www.openhw.org/上可以找到的開源項目,如:
1. 基於NetFPGA的可重構科學計算平台(寧夏大學)
2. 基於NetFPGA的網絡流量采集器(濟南大學)
3. 基於NetFPGA的網絡處理器設計與實現(山東大學)
4. 基於NetFPGA的包過濾防火牆的設計與實現(哈爾濱工程大學)
從各種開源項目中可以看到NetFPGA的實際應用,相信能促進下一代網絡的發展。
注:最近本人在學習和應用FPGA,無意中在網上發現NetFPGA的一些資料,雖然這種技術才剛剛起步,關於NetFPGA的項目很多都是開源的,適合高校的學生、老師、研究人員開發研究,相信在不久的將來肯定會帶來更過的驚喜。在中國NetFPGA也已經引起了很多高校、公司的興趣,如北京交通大學、華為,但尚屬起步階段,所以對NetFPGA做一些簡單的介紹。詳細的開發指南請見參考文獻1。
參考資料
1. NetFPGA開源官方網站http://netfpga.org/static/guide.html#Install_Software
2. NetFPGA開發初探,http://www.eefocus.com/myspace/blog/show_155829.html
3. 開放源碼硬件社區 http://www.openhw.org/activity/opproject/