NetFPGA Demo ——reference_router_nf1_cml


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通,跨不同網段,體現路由器作用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM