P4->NetFPGA 实战——自写P4程序并加载至NetFPGA-SUME

作者简介:汪培侨,福州大学数计学院2014级计算机科学与技术(实验班)本科生,目前针对软件定义网络SDN的P4语言进行研究。

0.前言

自翻译了github上的内容:

关于自己编写的P4程序如何加载运行至sume呢?此文章主要介绍如何将符合规范的自定义P4程序加载至NetFPGA-SUME上,由于知识水平有限,文章内部暂时缺少了关于测试测序的编写。

1.P4-NetFPGA-live 项目结构目录

以下图片摘自P4-NetFPGA_camp_2017_v1.pptx

P4-NetFPGA-live根目录结构

sume-sdnet-switch目录结构

P4_PROJECT_DIR目录结构


以上即为P4->NetFPGA的几个重要的文件夹,其中sume-sdnet-switch目录下templates文件夹为我们提供了丰富的模板文件,其中就有最重要的P4项目模板,所以可以利用该文件夹创建我们的P4项目,我们只需更改内部的P4程序,以及gen_testdata.py 即可开始验证我们的实验,为我们节省了不少时间,点赞!

2. P4->NetFPGA Workflow

上图为 P4-NetFPGA_camp_2017_v1.pptx 给出的简易版workflow图,详细的可围观 github给出的workflow详细版 。由于笔者并没有完成上述第二步描述中的gen_testdata.py文件,所以在实验过程中通过复制其他参考项目中gen_testdata.py文件“欺骗” makefile 文件,从而过掉此步。

3.实验步骤

1)将templates内的p4项目模板复制到projects下,并将新文件夹取名为p4_test

2)修改settings.sh文件,将 P4_PROJECT_NAME=switch_calc 修改为 P4_PROJECT_NAME=p4_test

3)编写P4代码;

以下代码为简单的端口转发应用的P4代码(即匹配报文的入端口,然后再选择其他某个端口转发出去)

4)将其他参考项目的gen_testdata.py 复制至新建的p4_test项目下;

大事告成,接下来利用 P4-NetFPGA-livemakefile 文件 开启傻瓜式操作


5)运行P4-SDNet编译器生成最终的HDL和初始仿真框架;

6)运行SDNet模拟;

7)生成可在NetFPGA SUME模拟中使用的脚本来配置表条目;

8)在包装模块中包装SDNet输出并作为SUME库核心进行安装;

PS:因没有写gen_testdata.py,所以以上略去 github给出的workflow详细版 中 Workflow Steps 的 第8步(Set up the SUME simulation)及第9步(Run the SUME simulation)

9)编译比特流;

10)编程FPGA, 将比特流文件config_writes.sh脚本复制到$ NF_DESIGN_DIR / bitfiles目录中;

注意:确保配置写入全部成功。 如果这是自上次断电以来首次对FPGA进行编程,则可能需要重新启动。

11)真实硬件测试

见下章节

4.真实硬件测试

1)测试环境简介

实验测试环境如下图所示:

将PC1接入到SUME的1口(NF0),将PC2接入到SUME的2口(NF1),SUME的10G光口需接电口进行光电转换才能够接入网线。

2)测试环境构建

SUME:

  • 即实验步骤的配置,含有端口转发应用的交换机。
  • 下发转发规则

步骤如下:

i:进入CLI文件夹,并开启CLI下发规则

ii:下发规则,在调出的CLI界面输入以下规则(可通过help查看CLI的更多命令)

PC1:

设置静态IP为:192.168.1.11/24

PC2:

设置静态IP为:192.168.1.22/24

3)实验测试

PC1测试:

>在PC1(IP:192.168.1.11/24)主机中执行

可成功ping通。

PC2测试:

在PC2(IP:192.168.1.22/24)主机中执行

可成功ping通,至此,实验验证结束!

参考链接

[1] https://github.com/NetFPGA/P4-NetFPGA-public/wiki

[2] https://github.com/NetFPGA/P4-NetFPGA-public/wiki/Workflow-Overview

[3] https://github.com/NetFPGA/P4-NetFPGA-public/wiki/Getting-Started

[4] https://github.com/NetFPGA/P4-NetFPGA-live

[5] https://github.com/NetFPGA/P4-NetFPGA-public

[6] http://www.cnblogs.com/wpqwpq/p/7886596.html

[7] http://www.cnblogs.com/wpqwpq/p/7886940.html

[8] http://www.cnblogs.com/wpqwpq/p/7891259.html


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/20327.html
分享到:
相关文章
条评论

登录后才可以评论

考拉小无 发表于17-12-13
5