NetFPGA Demo ——reference_router_nf1_cml
前言
本博文主要介紹了reference_router_nf1_cml該demo的一路運行,以及一路上艱難跑通遇到的坑。
Github上源碼鏈接:https://github.com/NetFPGA/NetFPGA-1G-CML-live/tree/master/projects/reference_router_nf1_cml
Github Wiki鏈接:https://github.com/NetFPGA/NetFPGA-public/wiki/NetFPGA-1G-CML-Reference-Router
編譯該項目並燒寫到NetFPGA中
我們從Github Wiki鏈接可知,需該nf10_router_output_port_lookup v1_00_a IP核,而我們通過在$NF_ROOT通過make cml_core
並沒有該IP,所以需下載工具生成相關CAM的Verilog源碼,而該工具由Github上源碼鏈接可知,需下載xapp1151_Param_CAM.zip
該應用。
TCAM、CAM模塊的安裝請參加另一篇博客:xapp1151_Param_CAM模塊安裝
完成相應IP的核的安裝后,執行以下命令,進入編譯過程,
1、設置相關路徑
$ source /opt/Xilinx/14.6/ISE_DS/settings64.sh
$ source <path>/NetFPGA-1G-CML-live/bashrc_addon_NetFPGA_10G
2、進入reference_router_nf1_cml目錄進行編譯,這里可能需要花費1個多小時的時間
cd <path>/NetFPGA-1G-CML-live/projects/reference_router_nf1_cml
make
編譯成功,會出現以下提示
mkdir -p bitfiles
cp hw/implementation/download.bit bitfiles/reference_router_nf1_cml.bit
3、將配置燒到NetFPGA
$ make download
成功時,會出現
INFO:iMPACT - '1': Checking done pin....done.
'1: Programmed successfully.
Elapsed time = 62 sec.
rm -f bitfiles/download.bit
筆者這個過程曾失敗,於是換了一個USB口就ok了。
主機軟件環境的安裝
硬件搞完了,接下來搞軟件,主要參照Github Wiki鏈接
JAVA GUI的安裝
cd projects/reference_router_nf1_cml/sw/host/gui
make
編譯成功,則會出現以下提示
make[1]: Entering directory `~/NetFPGA-10G-live/projects/reference_router_nf1_cml/sw/host/common'
gcc -fpic -c nf10util.c nf_util.c
gcc -shared nf10util.o nf_util.o -o libnf10.so
make[1]: Leaving directory `~/NetFPGA-10G-live/projects/reference_router_nf1_cml/sw/host/common'
Building java...
Done
Writing router gui manifest...
Building router jar...
Writing script to start router gui...
啟動java gui
sudo ./router.sh
出現以下gui,如果發現的gui無法進行配置相應gui顯示的顯示時,請重啟電腦。
Command Line Interpreter安裝
cd projects/reference_router_nf1_cml/sw/host/cli
make
編譯成功,則會出現以下提示
gcc -g -c -o cli.o cli.c
gcc -g -c -o ../common/util.o ../common/util.c
gcc -lncurses cli.o ../common/nf2util.o ../common/util.o ../common/reg_defines.h -o cli
gcc -g -c -o regdump.o regdump.c
gcc -lncurses regdump.o ../common/nf2util.o ../common/reg_defines.h -o regdump
gcc -g -c -o show_stats.o show_stats.c
gcc -lncurses show_stats.o ../common/nf2util.o ../common/util.o ../common/reg_defines.h -o show_stats</pre>
啟動cli
sudo ./cli
會出現以下,可以通過help命令查看如何使用,基本GUI的功能,都有,只是命令行界面
SCONE
Router Kit
真機測試
實驗拓撲如下,要達成讓PC2(IP:10.1.1.1) ping 通 PC3(IP:20.1.1.1),不在一個局域網的配置,以證明路由器真正起作用。
實驗拓撲
主機配置
PC2:
IP:10.1.1.1
MAC:10:c3:7b:b1:1f:5b
掩碼:255.255.255.0
網關:10.1.1.2
PC3:
IP:20.1.1.1
MAC:90:2b:34:ba:72:8b
掩碼:255.255.255.0
網關:20.1.1.2
PC1網卡IP配置
開啟網卡驅動
cd <path>/NetFPGA-1G-CML-live/projects/reference_nic_nf1_cml/sw/host/driver
sudo insmod nf10.ko
sudo ifconfig nf0 up
sudo ifconfig nf1 up
sudo ifconfig nf2 up
sudo ifconfig nf3 up
sudo ifconfig nf0 10.1.1.2 netmask 255.255.255.0
sudo ifconfig nf1 20.1.1.2 netmask 255.255.255.0
保證PC2可以Ping通10.1.1.2,PC3可以Ping通20.1.1.2
開啟GUI,並對路由表、ARP表,端口設置
開啟GUI
cd <path>/NetFPGA-1G-CML-live/projects/reference_router_nf1_cml/sw/host/gui
sudo ./router
- 端口設置
- 路由表設置
-
ARP表設置
注:各台主機的Mac
實驗結果
從PC2執行ping 20.1.1.1可以成功Ping通,跨不同網段,體現路由器作用。