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的更多相关文章

  1. NetFPGA Demo ——reference_nic_nf1_cml

    NetFPGA Demo --reference_nic_nf1_cml 实验平台 OS:deepin 15.4 开发板:NetFPGA_1G_CML 实验过程 从NetFPGA-1G-CML从零开始 ...

  2. 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 ...

  3. 通过一个demo了解Redux

    TodoList小demo 效果展示 项目地址 (单向)数据流 数据流是我们的行为与响应的抽象:使用数据流能帮我们明确了行为对应的响应,这和react的状态可预测的思想是不谋而合的. 常见的数据流框架 ...

  4. 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo

    有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...

  5. 在线浏览PDF之PDF.JS (附demo)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址:http://mozilla.gith ...

  6. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  7. vue双向数据绑定原理探究(附demo)

    昨天被导师叫去研究了一下vue的双向数据绑定原理...本来以为原理的东西都非常高深,没想到vue的双向绑定真的很好理解啊...自己动手写了一个. 传送门 双向绑定的思想 双向数据绑定的思想就是数据层与 ...

  8. Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决

    前提: 1.安装Android Studio(过程略) 2.官网下载OpenCV for Android 网址:http:opencv.org/downloads.html 我下载的是下图的版本 3. ...

  9. iOS之ProtocolBuffer搭建和示例demo

    这次搭建iOS的ProtocolBuffer编译器和把*.proto源文件编译成*.pbobjc.h 和 *.pbobjc.m文件时,碰到不少问题! 搭建pb编译器到时没有什么问题,只是在把*.pro ...

随机推荐

  1. 【视频编解码·学习笔记】10. 序列参数集(SPS)介绍

    一.SPS 相关概念: SPS即 "Sequence Paramater Set",又称作序列参数集. SPS中保存了一组编码视频序列(Coded video sequence)的 ...

  2. poi导入Excel,数字科学记数法转换

    在这里分享一下使用poi 导入Excel时 把数字转换为科学记数法的解决方法: 就是使用DecimalFormat对 i 进行了格式化 结果为:

  3. PHP 反射类学习记录

    原文:http://www.upwqy.com/details/58.html 1 开发环境 windows TP5 参考文档 http://php.net/manual/zh/class.refle ...

  4. ORM Basic

    ORM即object relational mapping 对象关系映射程序,可以在操作数据库的时候使用自有的语言而不必使用数据库的语言. 在python中,最强大的ORM框架就是SQLAlchemy ...

  5. linux下线程的两种封装方式

    在网络编程的时候往往需要对Linux下原生的pthread库中的函数进行封装,使其使用起来更加方便,封装方法一般有两种:面向对象和基于对象,下面将分别介绍这两种方式,最后统一分析这两种方式的优缺点: ...

  6. Vuex 教程案例:计数器以及列表展示

    本案例github:https://github.com/axel10/Vuex_demo-Counter-and-list 本篇教程将以计数器及列表展示两个例子来讲解Vuex的简单用法. 从安装到启 ...

  7. python全栈开发-Day5 元组、字典

    python全栈开发-Day5  元组.字典 一.前言 首先,不管学习什么数据类型,我们都带着以下几个问题展开学习: #1:基本使用 1 .用途 2 .定义方式 3.常用操作+内置的方法 #2:该类型 ...

  8. 笔记:Hibernate DML

    Hibernate 提供的HQL(Hibernate Query Language)语句也支持批量 update 和 delete 语法,语法格式如下: [UPDATE | DELETE] FROM ...

  9. 什么是DOM,DOM level 1\2\3 的区别是什么

    DOM 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.Document Object Model的历史可以追溯至1990年 ...

  10. 20个JS正则表达式

    1 . 校验密码强度密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间. ^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 2. 校验中文 ...