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通,跨不同网段,体现路由器作用。
NetFPGA Demo ——reference_router_nf1_cml的更多相关文章
- NetFPGA Demo ——reference_nic_nf1_cml
NetFPGA Demo --reference_nic_nf1_cml 实验平台 OS:deepin 15.4 开发板:NetFPGA_1G_CML 实验过程 从NetFPGA-1G-CML从零开始 ...
- NetFPGA-1G-CML Demo --- reference_router_nf1_cml
环境 deepin 15.4 vivado 15.2 ise 14.6 前期准备 Github Wiki链接:https://github.com/NetFPGA/NetFPGA-public/wik ...
- 通过一个demo了解Redux
TodoList小demo 效果展示 项目地址 (单向)数据流 数据流是我们的行为与响应的抽象:使用数据流能帮我们明确了行为对应的响应,这和react的状态可预测的思想是不谋而合的. 常见的数据流框架 ...
- 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo
有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...
- 在线浏览PDF之PDF.JS (附demo)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址:http://mozilla.gith ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
- vue双向数据绑定原理探究(附demo)
昨天被导师叫去研究了一下vue的双向数据绑定原理...本来以为原理的东西都非常高深,没想到vue的双向绑定真的很好理解啊...自己动手写了一个. 传送门 双向绑定的思想 双向数据绑定的思想就是数据层与 ...
- Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决
前提: 1.安装Android Studio(过程略) 2.官网下载OpenCV for Android 网址:http:opencv.org/downloads.html 我下载的是下图的版本 3. ...
- iOS之ProtocolBuffer搭建和示例demo
这次搭建iOS的ProtocolBuffer编译器和把*.proto源文件编译成*.pbobjc.h 和 *.pbobjc.m文件时,碰到不少问题! 搭建pb编译器到时没有什么问题,只是在把*.pro ...
随机推荐
- SpringMVC 框架系列之组件概述与配置详解
在上一篇文章 SpringMVC 框架系列之初识与入门实例 的实例中,我们已经知道,SpringMVC 框架是一个 web 层的框架,本篇文章就详细解释一下 SpringMVC 框架具体文件的配置以及 ...
- 【BZOJ1500】【NOI2005】维修数列(Splay)
[BZOJ1500][NOI2005]维修数列(Splay) 题面 不想再看见这种毒瘤题,自己去BZOJ看 题解 Splay良心模板题 真的很简单 我一言不发 #include<iostream ...
- [BZOJ4542] [Hnoi2016] 大数 (莫队)
Description 小 B 有一个很大的数 S,长度达到了 N 位:这个数可以看成是一个串,它可能有前导 0,例如00009312345.小B还有一个素数P.现在,小 B 提出了 M 个询问,每个 ...
- 重磅消息-Service Fabric 正式开源
微软的Azure Service Fabric的官方博客在2017.3.24日发布了一篇博客 Service Fabric .NET SDK goes open source ,介绍了社区呼声最高的S ...
- java微信公众号开发token验证失败的问题及解决办法
本文引自http://m.blog.csdn.net/qq_32331997/article/details/72885424 微信公众平台服务器配置时,需要引入token,但是提交的时候总是提示to ...
- Spring(十二)Spring之事务
java中事务是什么? 事务是访问数据库的一个操作序列,DB应用系统通过事务集来完成对数据的存取. 事务必须遵循4个原则,即常说的 ACID A,Automicity,原子性,即事务要么被全部执行,要 ...
- SpringMVC中的适配器(适配者模式)
此处采用了适配器模式, 由于Controller的类型不同,有多重实现方式,那么调用方式就不是确定的,如果需要直接调用Controller方法,需要在代码中写成如下形式: if(mappedHandl ...
- Linq to sharepoint
一.Linq to SharePoint 首先Linq to SharePoint编程语言 C# 和 Microsoft Visual Basic .NET 的一个功能,编译器是 Visual Stu ...
- Hybrid App混合模式开发的了解
Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具"Native App良好用户交互体验的优势"和"Web Ap ...
- Unity的常用API
1.Event Function:事件函数 Reset() :被附加脚本时.在游戏物体的组件上按Reset时会触发该事件函数 Start() :在游戏初始化时会执行一次 Update() :每一帧 ...