四行代码定乾坤:硬件二层交换机设计与实现

article/2025/9/28 18:31:16

一、概述

“我OpenBox又回来了!”

沉寂了16个月,终于又提笔开始写《硬件二层交换设计与实现》。从软件设计到硬件设计需要这么长时间吗?答案是肯定的,不仅需要,而且这点时间还只能初入Verilog代码编程之门。

但从网络实验教学的角度来看,这是不可接受的。故我们想换个思路,走走捷径。然而这一走,便走了整整16月有余。

所幸略有小成,与君分享,共勉自学、自研、自证之艰辛与快乐。

二、支持P4的FAST架构软硬件全可编程平台

A)P4与Tofino

书上或网上能找到的内容请大家自行查找了解。

B)FAST全软件可编程平台

FAST架构在我们之前的文章中有介绍,该平台也是一种典型的SDN架构设计,硬件数据平面主要包括FPGA OS和UM两部分,核心逻辑处理在UM模块中。UM又分成了5个不同逻辑功能流水线,用户可以针对此流水线进行改造升级或扩展新的流水级功能。然而,使用Verilog语言来开发FPGA芯片功能着实是一件比较有难度的事情,至少在成为一个合格的Verilog代码工程师之前来说,确实有比较漫长和艰辛的路程要走。

受P4编程思想的启发,我们决定将FAST架构中的UM部分更换成具备P4开发能力的硬件逻辑部件。故该平台依然采用多核CPU加FPGA架构,P4逻辑全采用FPGA编写,所有功能和指令逻辑全在硬件实现。

C)基本功能

1.分组前96字节内,小于128的任意bit位,任意多个PHV对象定义;

2.支持32字节Metadata对象编程,含16字节用户自定义Metadata内容;

3.分组前60字节内,任意bit位对象查表匹配,精确匹配与带掩码匹配,匹配字段支持输入端口等Metadata字段;

4.每动作支持14条指令,支持加、减、与、或、异或、取反等操作;

5.每个指令执行器中含16个临时寄存器,支持临时变量暂存与读取,位宽支持1到64位;

6.支持有状态的存储寄存器对象定义与操作,存储寄存器位宽支持1到64位,最大个数支持128个。支持多个寄存器对象编程;

7.支持对分组进行协议插入与删除,长度支持1到16字节;

8.动作与指令均支持参数化配置,即可运行前实例化,也可运行时调整;

9.支持32种不同逻辑业务处理功能在线编译、在线加载、在线配置、在线卸载,不影响其他业务逻辑;

10.提供P4后端编译器,支持用户P4代码编译;

11.提供P4运行时配置管理工具,支持用户流表配置、动作配置和寄存器初始配置。

三、硬件设计

拥有上述平台编程功能后,对硬件的设计要求便会变得较为简单。原来要花较长时间,写较多代码的功能,现在可以简单、快速的实现。

A)设计原理

从交换机的几个功能步骤开始,先实现源MAC地址的学习。从平台功能分析,使用寄存器部件比较合适。拟定义一个端口与MAC地址的映射表,存储在寄存器对象中,使用源MAC地址作为寄存器对象的索引,分组输入端口号作为该索引位置的值。在使用目的MAC查表时,亦使用MAC地址作为索引进行查找,即可获取该地址学习存储的端口号。

由于MAC地址为48位,本平台支持寄存器的深度有限,故本案例中仅取MAC地址的后4位作为索引。故实验演示时,要求测试主机的MAC地址尾数不同。

单播地址可以采用上述思路进行设备,那组播与广播地址呢,我们本案例拟采用全泛洪的方式先来实现一个基础版本。想要做组播功能可以将组播协议配置规则送CPU处理,CPU学习到入组和退组信息后,通过P4的运行时工具进行组播MAC与相应端口号的规则配置即可。

B)代码实现

action learn_forward()

{

  MAC_PORT.regwrite((u8)hdr.eth.smac&0xF,std_meta.ioport);

  std_meta.ioport = MAC_PORT.regread((u8)hdr.eth.dmac&0xF);

}

单播自学习与转发

action mb_cast()

{

  MAC_PORT.regwrite((u8)hdr.eth.smac&0xF,std_meta.ioport);

  std_meta.ioport = ~std_meta.ioport;

}

多播泛洪

以上为硬件二层交换机(原型系统)全部业务逻辑功能代码。

是的,就是这四行代码!!!!

四、演示验证

A)软件核心代码

B)编译器结果

C)硬件配置

D)Ping通测试

C:\Users\Administrator>ping  192.168.1.198

正在 Ping 192.168.1.198 具有 32 字节的数据:

来自 192.168.1.198 的回复: 字节=32 时间<1ms  TTL=127

来自 192.168.1.198 的回复: 字节=32 时间<1ms  TTL=127

来自 192.168.1.198 的回复: 字节=32 时间<1ms  TTL=127

来自 192.168.1.198 的回复: 字节=32 时间<1ms  TTL=127

五、总结与下一步

物质守恒、能力守恒,苦难亦然守恒。

为了让学生们在我们平台编写硬件逻辑少些痛苦,我们艰苦奋斗了16个月,对P4的原理、代码和编译器进行了仔细琢磨、分析和领悟。我们认为P4是一门较为优秀的编程语言,更是一种硬件编程的创新思路和具体表达形式。我们无法去破解P4的硬件实现,固然也无从参考,而是领悟P4编程方式的精髓理念后,采用了原有FAST架构和部分逻辑调整,并配置P4后端编译适配,打造了现如今的支持P4的FAST架构可编程平台。

本平台结合了FAST架构与P4可编程的双重优势。支持用户在最底层硬件到最高层软件全方便的编程与验证,而且编程语言均使用C语言和类似C的P4语言,进一步降低了学习与使用难度。

下一步,做个硬件路由器?或者您有更美好的想法,我们可以试一试!

有需要开发可编程硬件(FPGA、ASIC等)的P4后端编译器,或获得本平台介绍相关源码的客户,请与我们联系。


http://chatgpt.dhexx.cn/article/wbqqQYEx.shtml

相关文章

【交换机在江湖】第十五章 VLAN隔离篇

小编在上期为大家介绍了多种VLAN互通场景和方式&#xff0c;之后读者又有了新的问题&#xff1a;如何对同一VLAN下用户进行隔离呢&#xff0c;如果实现部分VLAN互通、部分VLAN隔离呢&#xff0c;如何针对某个用户、或某个网段用户进行隔离呢&#xff0c;下面就听小编一一道来 。…

【交换机在江湖】第十四章 VLAN通信篇

前两期小编介绍了VLAN的基础知识以及如何划分VLAN&#xff0c;之后不断有读者询问&#xff1a; VLAN划分后&#xff0c;同一VLAN用户可以二层互通&#xff0c;不同VLAN用户则二层隔离&#xff0c;可有些场合不同VLAN用户又想互通&#xff0c;肿么办呢&#xff1f; 请大家先回忆…

【交换机在江湖】第十二章 VLAN基础篇

相信各位大侠对于VLAN技术的掌握可能已经炉火纯青&#xff0c;但是小编还是要友情提醒下&#xff0c;不管技术如何高超&#xff0c;时不时的还需要补充下基本功滴&#xff08;知其然知其所以然&#xff09;&#xff01;当然对于初入江湖的小伙伴们来说&#xff0c;这是必修课喔…

DVWA 安装配置

1. 下载并安装phpStudy&#xff0c;官网地址&#xff1a;http://www.phpstudy.net 该程序包集成了Apache、php、MySQL等&#xff0c;安装之后无需配置即可使用&#xff0c;非常方便。单击图中切换版本处&#xff0c;就可以选择自己需要的版本了。 2. 下载并解压缩DVWA安装包&am…

DVWA下载安装教程步骤

1.下载DVWA 并将文件解压到phpstudy安装目录里面的www目录下 2.打开下载完成的DVWA文件并更改文件中的config.inc.php &#xff08;将dist删掉&#xff09;里的代码 3.浏览器只需要直接打开“http://127.0.0.1/dvwa/setup.php”即可&#xff01; 4. 如果有”标红“提示&#x…

DVWA简介和安装过程

DVWA简介&#xff1a; 1.概念&#xff1a;DVWA&#xff08;Damn Vulnerable Web App&#xff09;是一个易受攻击的基于PHP/MySql的Web应用程序&#xff0c;是为安全专业人员测试自己的专业技能和工具提供合法的环境&#xff0c;帮助Web开发者更好的理解Web应用安全防范的过程。…

DVWA的安装与配置教程

关于DVWA的安装 配置过程 dvwa的安装配置过程 完成安装需要准备以下&#xff1a; php study软件 下载链接 64位&#xff1a;http://public.xp.cn/upgrades/phpStudy_64.7z ~ 32位http://public.xp.cn/upgrades/phpStudy_32.7z DVWA压缩包 下载链接&#xff1a; https://githu…

DVWA安装部署

DVWA安装部署 前言一、DVWA是什么&#xff1f;二、phpstudy安装部署三、DVWA安装部署 前言 为了更好、更具体的学习了解网络安全相关的知识&#xff0c;笔者开始着手学习渗透测试相关内容。相关系列文章意在记录个人学习、笔记、总结。 其中使用到的相关靶场、工具均仅提供学习…

DVWA完整搭建教程

一. 简介 DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是一个很容易受到攻击的PHP / MySQL Web应用程序&#xff0c;其主要目标是帮助安全专业人员在法律环境中测试他们的技能和工具&#xff0c;帮助Web开发人员更好地了解保护Web应用程序的过程。 二. 搭建前…

DVWA下载、安装及使用教程,网络安全小白必看!

DVWA是一款基于PHP和mysql开发的web靶场练习平台&#xff0c;集成了常见的Web漏洞。旨在为安全人员测试自己的专业技能和工具提供合法的环境&#xff0c;帮助web开发者更好的理解web应用安全防范的过程&#xff1b; 一、DVMA介绍 DVWA官网 (opens new window)DVWA Github (ope…

DVWA详细安装教程

1、下载和安装phpstudy 小皮面板(phpstudy) - 让天下没有难配的服务器环境&#xff01; (xp.cn) 下载和安装很简单的&#xff0c;但是要注意安装的文件夹不得有中文否则要报错。 安装后开启Apache和MySQL两个服务&#xff0c; 2、DVWA下载和安装 在官网下载&#xff1a;http:…

DVWA通关教程(上)

简介&#xff1a; DVWA是一款基于PHP和mysql开发的web靶场练习平台&#xff0c;集成了常见的web漏洞如sql注入,xss&#xff0c;密码破解等常见漏洞。本教程将以DVWA为例&#xff0c;演示常见的web漏洞的利用和攻击。 登录创建数据库&#xff08;账号为admin&#xff0c;密码为…

DVWA的部署和教程

DVWA的部署和教程 概述本地部署DVWA部署DVWA的基本环境下载DVWA配置MySql数据库配置DVWA DVWA教程总结 概述 DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用&#xff0c;旨在为安全专业人员测试自己的专业技能和…

Windows安装DVWA(全过程)

安装DVWA环境目的是搭建漏洞靶场环境&#xff0c;安全进行攻防演示 1、PHPStudy软件安装 2、DVWA下载与安装 1、PHPStudy软件安装 【1】访问此网站PHPStudy下载软件&#xff08;下载最新版的就可以&#xff09; 【2】在下载好的压缩包中运行.exe文件 【3】设定安装路径&#x…

dvwa最新安装教程

DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用&#xff0c;旨在为安全专业人员测试自己的专业技能和工具提供合法的环境&#xff0c;帮助web开发者更好的理解web应用安全防范的过程。 一共有十个模块&#xf…

kali安装DVWA详细教程

kali安装DVWA详细教程 1、下载DVWA &#xff08; kali不用安装给git,一般自带&#xff09; 2、把下载完成后的文件移到/var/www/html/目录下&#xff0c;并进入到目录下&#xff0c;看看有什么 &#xff08;移到该目录下的原因是要在本机搭建apachemysqlphp服务器&#xff0…

dvwa使用教程

2.3 启用功能 dvwa上的漏洞&#xff0c;需要些刻意的配置才能被利用。访问&#xff1a;http://172.0.0.1/dvwa如下&#xff0c;红色表示不能正常使用&#xff1a; 问题&#xff1a;PHP function allow_url_include: Disabled 处理&#xff1a;编缉/etc/php.ini将allow_url_in…

DVWA安装配置

工具&#xff1a;phpstudy&#xff0c;dvwa 1.安装phpstudy https://www.xp.cn/ 2.安装DVWA http://www.dvwa.co.uk/ 3.打开phpstudy&#xff0c;启动Apache和MySQL&#xff0c;然后修改数据库名称 4.打开目录&#xff08;根据你安装PHPstudy的目录&#xff09; 把压缩包解压…

DVWA安装配置教程

原文传送门&#xff1a;http://www.cnblogs.com/yaochc/p/5049832.html DVWA 安装教程&#xff1a; 1 直接下载WampServer&#xff0c;免去了需要安装apache/php/mysql的服务器软件的痛苦&#xff0c;一体集成&#xff0c;相当于安装了httpd、PHP、MySQL、php-mysql等应用或…

DVWA简介及安装

DVWA简介&#xff1a; DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是一个用来进行安全脆弱性鉴定的PHP/MySQL Web 应用&#xff0c;旨在为安全专业人员测试自己的专业技能和工具提供合法的环境&#xff0c;帮助web开发者更好的理解web应用安全防范的过程。 …