ServidoresLinux

ServidoresLinux.com
Linux服务器网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

gnu开源软件开发指导 他山之石:NetFPGA的启示(1)_社会万象_光明网

2023年1月20日 759点热度

自1983年自由软件运动领袖Richard Stallman提出了GNU计划以来,开源为软件开发带来了创造性的革命和商业成功。SDN如今的快速发展也离不开开源社区的力量,比如NOX、Floodlight、OpenContrail、ONOS等开源项目极大的推动了SDN产业链的发展。但SDN的开源大多都局限在控制器或软件交换机的领域,数据平面的硬件开源项目始终没有迎来一个百花齐放的春天,同时在网络教学研究领域,也没有形成一个有序、规范、有创造力的生态圈,FAST的诞生或许可以提供一个崭新的思路。

他山之石:NetFPGA的启示

NetFPGA是斯坦福大学基于Linux开发的开放性试验平台,能够支持模块化设计,可以使研究人员方便的在其上搭建Gb级的高性能网络系统模型。斯坦福大学刚开始研究OpenFlow项目的时候,就是基于NetFPGA实现了硬件加速的线速OpenFlow交换机。

自2009年开始,NetFPGA团队陆续将代码和设计文档在GitHub上公开,为四种规格的NetFPGA平台分别建立wiki页面和软硬件开发指南linux运维最佳实践,我们注意到开源给NetFPGA带来了不少“红利”:

gnu开源的源代码在哪_gnu开源软件开发指导_开源无人机开发套件

(1)加速项目的版本迭代。由于开源能有效的共享资源,所以可以避免不必要的重复劳动,以NetFPGA 1G为例,18个月间就更新了8个版本linux命令详解词典,大幅度节约了成本和时间。

(2)使项目设计和开发变得更加规范可靠。NetFPGA的设计文档在开放平等的基础上供公众审查,200多份的设计文档就有90余人的贡献,足以说明在相互借鉴和比较的基础上,能使硬件单元的设计能够变得有序和规范。

(3)鼓励创新项目的研究。由于源码的开放,越来越多的研究人员开始关注到NetFPGA,并参与建立了许多基于NetFPGA的项目,比如开源网络测试仪(OSNT),OpenFlow交换机等,可以研究下一代网络提供有益的尝试。

但是由于NetFPGA硬件平台自身的局限性和对SDN交换机的关注度还不够,所以,我们决定在GitHub上建立FAST开源项目,专注于SDN硬件交换机的设计和重构,为SDN数据平面的研究提供真实实验环境和案例,为高校网络研究教学的发展添砖加瓦。

FAST的前世今生

FAST的基础硬件应用平台是国内自主研发的NetMagic[1],与NetFPGA中板卡与主机紧耦合的方式不同,NetMagic采用控制平面与转发平面分离的方式,用户使用自己的电脑,通过网络远程管理配置NetMagic硬件,更具便携性和可扩展性。

FAST:基于FPGA的SDN交换机开源项目_java_02

FAST(FPGA bAsed SDN swiThing)是国防科技大学师生提出的一种基于FPGA的可重构交换架构——将报文处理流程拆解成多个独立报文处理阶段,并为每个阶段建立其相应的模块库,开发者根据需要自由地选择功能模块来快速重构报文处理流水线。这种“离线重构”的方式能够满足多样化的网络需求,大幅度降低网络应用服务开发的难度和网络设备的开发周期。

如何增强转发平面的灵活性和可扩展性,关键在于对功能库中模块的自由选择,而按照标准扩建模块库,正是建立开源社区的意义所在。在FAST的开源过程中,不仅仅是公开代码和设计文档,而是既能将现有工作进行整合复用,也能给开源数据平面设计提供技术支持,推而广之,FAST实际代表了一种规范化的FPGA交换机的开发模式。

硬件:将可重构进行到底

gnu开源软件开发指导_gnu开源的源代码在哪_开源无人机开发套件

硬件部分的源代码需要烧写至FPGA上实现报文转发的功能,主要由以下三部分组成:

第一部分是FAST流水线模块库的代码,这是实现不同报文处理逻辑的关键,不涉及用什么具体电路元件来实现,是通用且可编程的功能模块,模块使用FAST推荐的标准接口与其他模块相连。用户可根据应用环境的改变而重新选择或改良流水线模块的内容,编译出不同的案例,达到可编程网络的需求。

第二部分是与开发平台相关的逻辑代码,比如在对数据通路和控制信息的处理上,NetMagic08采用以太网口通过NMAC协议来传递控制命令,而NetMagicPro和NetFPGA是通过PCIE读写寄存器来获取控制信息。我们希望能广泛支持各类FPGA硬件平台。

第三部分是工程配置文件,用于指定所用硬件平台和流水线模块,便于不熟悉硬件开发的研究人员快速编译运行,可以根据实际需求来自行编写配置文件。

软件:转发平面的智囊团

该软件代码实际上是交换机的管理软件,与硬件代码一起作为SDN的转发平面,向上通过南向接口与控制器交互,实现在实验网络状态下的手动、自动配置以及管理维护。分为以下四个部分:

第一部分是与平台相关的适配通信库,用户态代码实现可以用PC通过NMAC协议与NetMagic08通信,也可以将软件部分放在带有CPU的NetMagicPro平台上通过DMA方式配置硬件流表,实现快速转发,具有高度的灵活性和适配性。

第二部分是核心管理软件,表管理软件用于TTP定义的流表管理维护,配置信息等,与硬件中的信息保持同步;算法相关软件用于实现硬件查表,验证算法的性能和正确性;统计管理软件主要对硬件转发行为进行统计汇总,可在本地管理界面显示,也可以通过南向接口协议传输到控制器报告实时状态。

第三部分是配置管理软件,直接与SDN控制器交互,传输和展示本地配置流表信息,支持OpenFlow协议,未来也可以扩展其他南向接口协议的开发与验证。

第四部分属于转发平面功能的延伸,是为了解决很多课题实验项目中需要借鉴SDN思想,但缺乏可定制化扩展功能的问题。用户只需要在扩展模块中添加适应于自己的转发表项,而无需关心南向接口与平台适配的问题。

FAST的征途:SDN科研创新与高校网络教学

目前,我们在NetMagic08上实现了一个SDN交换机SDTS(Software-Defined Tunnel Switch),以LISP隧道封装和基于端口转发的模式,验证了BV算法对硬件匹配性能效果的提升,配合开源控制器Floodlight搭建了一个低成本、可重构、易部署的SDN实验环境gnu开源软件开发指导,后续能够让研究人员进行SDN相关技术的实践和验证。

FAST具有良好的可重构特性,虽然目前采用的开发模式是从功能模块库中筛选与重组的方式gnu开源软件开发指导,但在下一步的工作中,实现硬件资源的形式化,同时实现软件代码重编译为硬件代码(例如Altera Open CL,Xilinx Vivado HLS),软件开发者就可以单独完成其底层功能模的设计与更新,能够完美的支持P4的设计与实现。

SDTS演示现场

高校网络教学科研的需求是长期存在的,学生们在进行课程实验使需要对网络设备的转发行为、协议的运行原理进行剖析,老师们也要需要进行更精确的数据建模和算法验证。我们基于NetMagic08开发了一套教学案例NetlabSwitch,能够支持协议观测分析、令牌桶和输出调度原理、SDN交换实现的原理等技术的研究,为网络教学实验提供了一个颇具代表性的示范。

FAST的目标是为基于FPGA实现SDN交换机研究提供一个开源生态圈,在这个软硬件皆可编程的开放架构下,进一步推动 SDN 交换技术的发展,营造和提升中国高校的开源文化氛围。下一步国防科技大学、北京邮电大学、东南大学和湖南新实网络的相关研究人员将共同组织规范的制定和编写,制作典型案例demo,运作开源社区。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: gnu sdn 开源中国 软件 软件开发流程
最后更新:2023年1月20日

Linux服务器网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux服务器网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
程序代码概述:C语言(-) Windows平台专属的压缩算法,你get到了吗? 安装Tomcat服务器的一些常见问题及解决办法 Linux网络压缩和解压文件的知识点及解决办法 选择Mac系统的电脑还是Windows系统电脑?优缺点分析 linux内核源码的跟踪经验分享-内核 管风琴的声音也还挺动听的完美钢琴模拟器 Linux系统下跨语言调用技术调用C++组件的实践总结 Linux系统下无线网卡驱动安装的具体操作方法介绍! 操作系统真象还原:汇编语言和c语言混合编程 硬盘空间不足的报警短信怎么办?如何处理? (Linux基础知识)Linux系统的关机命令是什么? Unix操作系统的三级架构都是精心编写的,你知道吗? (Linux基础知识)Linux系统的关机命令是什么? 570个Linux命令和shell脚本教程,不备注不发放 自己折腾ubuntu安装包来着,发现一篇文章非常实用 (知识点)Linux系统的关机命令是"shutdown" Linuxshell对json格式的处理**功能的核心是什么? linux下常用的关机命令之间的区别和各自的用法 8.1Linux、Unix系统安全Linux/Unix操作系统的概述
Linuxshell对json格式的处理**功能的核心是什么?(知识点)Linux系统的关机命令是"shutdown"自己折腾ubuntu安装包来着,发现一篇文章非常实用570个Linux命令和shell脚本教程,不备注不发放(Linux基础知识)Linux系统的关机命令是什么?Unix操作系统的三级架构都是精心编写的,你知道吗?(Linux基础知识)Linux系统的关机命令是什么?硬盘空间不足的报警短信怎么办?如何处理?操作系统真象还原:汇编语言和c语言混合编程Linux系统下无线网卡驱动安装的具体操作方法介绍!Linux系统下跨语言调用技术调用C++组件的实践总结管风琴的声音也还挺动听的完美钢琴模拟器linux内核源码的跟踪经验分享-内核选择Mac系统的电脑还是Windows系统电脑?优缺点分析Linux网络压缩和解压文件的知识点及解决办法安装Tomcat服务器的一些常见问题及解决办法Windows平台专属的压缩算法,你get到了吗?程序代码概述:C语言(-)Mediawiki安装、配置和使用的入门教程,以及管理员需要用到的一些功能教育部-华为“智能基座”精品慕课之一:课程融入的鲲鹏处理器ARM64架构
(每日一题)Linux内核和发行版本号的命名 关于Linux内存管理的一些事儿,你了解多少? Oracle数据库系统设置环境变量的命令及解决办法汇总!! Intel(R)CPUE5410@8个逻辑CPU型号测试 如何使用傲梅轻松备份将数据从硬盘复制到另一个硬盘 2016年06月13日C语言实现字符转unix时间戳 我是用kde版的manjaro安装deepin桌面的,安装的时候要切换到中国源 Android系统源代码和实现原理的全面分析-乐题库 Windows和Linux的启动过程中都用到了哪些重要的系统文件? 基于ARM架构CortexM系列CPU进行驱动程序开发工程师 常用命令整理:显示全部信息这样将输出所有的信息 Linux安装过程中的一些常见问题,你知道吗? Linux启动流程详解内核文件 (通讯技术)linux命令的搜索命令 《UNIX环境高级编程(第3版)》 3.深入PHP:面向对象、模式与实践(组图) 云服务器安装系统镜像所需的是什么? 群晖安装Gitlab服务器并配置邮件使用邮件使用 Redhat/CentOS6.6.x系统安装步骤及注意事项! 可重入函数的原因及解决办法(下文)
标签聚合
命令 应用 软件 文件 文件目录 linux服务器 linux系统 操作 虚拟机 内核
书籍
课程
技术群
技术干货大合集↓
  • 2023年12月 / 26篇
  • 2023年11月 / 88篇
  • 2023年10月 / 93篇
  • 2023年9月 / 90篇
  • 2023年8月 / 93篇
  • 2023年7月 / 93篇
  • 2023年6月 / 90篇
  • 2023年5月 / 92篇
  • 2023年4月 / 90篇
  • 2023年3月 / 126篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 186篇
  • 2022年11月 / 77篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2024 ServidoresLinux.Com ALL RIGHTS RESERVED.