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. 试着讲清楚:js代码运行机制

    一. js运行机制 js执行引擎 经常看文章的说到js是带线程的,其实这个说法非常的模糊,准确的是js执行引擎是单线程的,js执行引擎就是js代码的执行器,有了这个概念就可以下来说说js是如何运行的了 ...

  2. Keras官方中文文档:Keras安装和配置指南(Windows)

    这里需要说明一下,笔者不建议在Windows环境下进行深度学习的研究,一方面是因为Windows所对应的框架搭建的依赖过多,社区设定不完全:另一方面,Linux系统下对显卡支持.内存释放以及存储空间调 ...

  3. Link带参数的Verilog模块(Design Compiler)

    在Design Compiler中,Verilog文件可以用read_verilog命令读入,用link命令连接.以下是连接两个文件RegisterFile.v和Test.v的脚本: # Read d ...

  4. 【BZOJ1212】L语言(AC自动机)

    [BZOJ1212]L语言(AC自动机) 题面 BZOJ 题解 很自然的,既然要匹配单词,那就全部都丢到\(AC\)自动机里面去 现在想想怎么匹配 先是\(AC\)自动机正常的匹配 如果此时这个位置能 ...

  5. UNDO及MVCC、崩溃恢复

    UNDO特性:避免脏读.事务回滚.非阻塞读.MVCC.崩溃恢复 事务工作流程(图2) MVCC原理机制 崩溃恢复:redo前滚.undo回滚 长事务.大事务:危害.判断.处理 UNDO优化:实现und ...

  6. djang-tastypie学习整理

    quick start: 配置环境(pip install: Python 2.7+ or Python 3.4+ Django 1.8+ python-mimeparse 0.1.4+ (http: ...

  7. devstack部署openstack环境

    背景:公司需要搭建openstack私有云.配置两台物理服务器. 各大搜索引擎了解了下OpenStack.决定先在虚拟机上部署实现openstack. 前提准备 设备:一台宿主机Windows10 1 ...

  8. Ceph常见问题百科全书

    Ceph是目前炙手可热的一个统一分布式存储系统,具有优异的性能.可靠性.可扩展性.其可轻松扩展到数 PB 容量, 支持多种工作负载的高性能(每秒输入/输出操作[IOPS]和带宽),具有极其高的可靠性. ...

  9. Lintcode223 Palindrome Linked List solution 题解

    [题目描述] Implement a function to check if a linked list is a palindrome. 设计一种方式检查一个链表是否为回文链表. [题目链接] w ...

  10. Linq to sharepoint

    一.Linq to SharePoint 首先Linq to SharePoint编程语言 C# 和 Microsoft Visual Basic .NET 的一个功能,编译器是 Visual Stu ...