基于ZU19EG的100G-UDP解决方案

  1. 概述

本文档介绍ZU19EG与Mellanox CX6 100G网卡通信解决方案。

  1. 环境配置

FPGA硬件:519-ZU19EG的4路100G光纤PCIe加上计算卡

电脑:国产国鑫主板(双PCU):Gooxi G2DA-B  CPU:Intel Xeon Silver @2.2GHz 内存:64GB 操作系统:ubuntu20.04

网卡:ConnectX6 MCX653106A-ECA_Ax

  1. FPGA解决方案

板卡fpga型号:XCZU19EG-FFVC1760-2E

开发环境:Vivado2021.2

输出:QSFP28光口输出

工程代码架构如下:

UltraScale+ 100G Ethernet Subsystem配置如下:

工程代码各模块功能:

FPGA端VIO配置:

Start:控制开始发送,结束发送。

packet_length_sel:可以选择UDP包长:0是1024字节,1是2048字节,2是4096字节,3是8192字节。

time_1us:可以配置发送间隔,以1US为单位作为间隔,默认值为1000_000,即为1s钟间隔。

FPGA端发送接收速率显示是speed信号,ila在线观测,在代码中位置:

100G UDP产生模块:

  1. UDP格式说明如下图:

下面分析一帧基于UDP的TFTP协议帧。

以太网首部

0000: 00 05 5d 67 d0 b1 00 05 5d 61 58 a8 08 00

IP首部

0000:                                           45 00

0010: 00 53 93 25 00 00 80 11 25 ec c0 a8 00 37 c0 a8

0020: 00 01

UDP首部

0020:      05 d4 00 45 00 3f ac 40

TFTP协议

0020:                               00 01 'c'':''\''q'

0030: 'w''e''r''q''.''q''w''e'00 'n''e''t''a''s''c''i'

0040: 'i'00 'b''l''k''s''i''z''e'00 '5''1''2'00 't''i'

0050: 'm''e''o''u''t'00 '1''0'00 't''s''i''z''e'00 '0'

0060: 00

以太网首部:源MAC地址是00:05:5d:61:58:a8,目的MAC地址是00:05:5d:67:d0:b1,上层协议类型0x0800表示IP。

IP首部:每一个字节0x45包含4位版本号和4位首部长度,版本号为4,即IPv4,首部长度为5,说明IP首部不带有选项字段。服务类型为0,没有使用服务。16位总长度字段(包括IP首部和IP层payload的长度)为0x0053,即83字节,加上以太网首部14字节可知整个帧长度是97字节。IP报标识是0x9325,标志字段和片偏移字段设置为0x0000,就是DF=0允许分片,MF=0此数据报没有更多分片,没有分片偏移。TTL是0x80,也就是128。上层协议0x11表示UDP协议。IP首部校验和为0x25ec,源主机IP是c0 a8 00 37(192.168.0.55),目的主机IP是c0 a8 00 01(192.168.0.1)。

UDP首部:源端口号0x05d4(1492)是客户端的端口号,目的端口号0x0045(69)是TFTP服务的well-known端口号。UDP报长度为0x003f,即63字节,包括UDP首部和UDP层payload的长度。UDP首部和UDP层payload的校验和为0xac40。

cmac 配置按照example中的配置进行配置。

  1. ConnectX6 100G网卡DPDK方案

dpdk 全称data plane development kit(数据平面转发工具),为 Intel 处理器架构下用户空间高效的数据包处理提供了库函数和驱动的支持,数据包的控制层和数据层分开,dpdk绕过linux内核协议栈将数据包的接受处理放到应用层。

DPDK拦截中断,不触发后续中断流程,并绕过协议栈,通过UIO技术将网卡收到的报文拷贝到应用层处理,报文不再经过内核协议栈。减少了中断,DPDK的包全部在用户控件使用内存池管理,内核控件与用户空间的内存交互不用进行拷贝,只做控制权转移,减少报文拷贝过程,提高报文的转发效率。

操作系统 :ubuntu20.04

网卡: Mellanox CX6 100G

DPDK:20.11

  1. 测试

Vivado VIO设置:包间隔设置30us、UDP包大小设置1024字节

当前FPGA统计发送速度:0xc77617400  十进制 53 542 482 944

PC接收数据:无丢包

提升速度测试:

速率统计:0x16B4DF3AAA  十进制:97 523 808 938

总效率为总带宽90%以上。只开启当前接收软件情况下,总体算稳定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/336247.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

旋变检测AD2s1205手册学习笔记

旋变故障检测故障表 信号丢失检测 检测原理:任一旋变输入(正弦或余弦)降至指定的LOS正弦/余弦阈值 以下时,器件会检测到信号丢失(LOS)。AD2S1205通过将 监视信号与固定最小值进行比较检测此点 丢失的效果表现:LOS由DOS和LOT引脚均闩锁为逻辑…

MySQL之导入、导出远程备份

一、Navicat工具导入、导出 1.1 导入 第一步: 右键,点击运行SQL文件 第二步: 选择要运行的SQL,点击开始 第三步: 关闭即可 1.2 导出 第一步: 右键选择,导出向导 第二步: 选择SQL脚…

windows下全免费手动搭建php8+mysql8开发环境及可视化工具安装

最近PHP项目少了,一直在研究UE5和Golang,但是考虑到政府、国企未来几年国产化的要求,可能又要重拾PHP。于是近日把用了N年的框架重新更新至适合PHP8.2以上的版本,同时也乘着新装机,再次搭建php和mysql开发环境。本文留…

数据结构:二叉树

目录 1.树的定义 2.二叉树 2.1 满二叉树 2.2 完全二叉树 2.3 二叉搜索树 2.4 平衡二叉搜索树 3.二叉树的存储 3.1 数组存储 3.2 链表存储 代码: 4.二叉树的遍历 4.1 深度优先遍历 4.1.1 递归 4.1.2 迭代 4.2 广度优先遍历(层序遍历) 1.树的定义 树是计…

Flashduty 案例分享 - 途游游戏

Flashduty 作为功能完备的事件OnCall中心,可以接入云上、云下不同监控系统,统一做告警降噪分派、认领升级、排班协同,已经得到众多先进企业的认可。我们采访了一些典型客户代表,了解他们的痛点、选型考虑和未来展望,集…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第八天-Linux sqlite3数据库(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…

【刷题日记】青少年CTF-A2 Crypto(全)

Caesar 题目难度:★ 题目描述:凯撒大帝在很早的时候发明了这个,你能解密出来吗?flag格式为:qsnctf{xxx}。 下载附件,题目提示告诉我们是凯撒了,一个简单的移位操作。 使用在线解码网站&#…

生物信息学中的可重复性研究

科学就其本质而言,是累积渐进的。无论你是使用基于网络的还是基于命令行的工具,在进行研究时都应保证该研究可被其他研究人员重复。这有利于你的工作的累积与进展。在生物信息学领域,这意味着如下内容。 工作流应该有据可查。这可能包括在电脑…

Opencv实验合集——实验九:姿势估计

在上一章节(相机校准),你已经找到了相机矩阵,畸变系数等等参数。给出一个图案图像,我们便可以利用上面的信息用于计算其姿势,或者物体在空间中位于何处,比如如何旋转,如何移动等等问题。对于一个平面物体&a…

Android BUG 之 Error: Activity class {} does not exist

项目场景: 更换包名,运行报错 问题描述 原因分析: 在替换包名的时候要确认,配置文件跟build中的保持一致,在更换后还要将旧包的缓存数据清理掉 解决方案: 1 替换后删除 app 下的build 文件夹 2 Rebuild Pr…

k8s的node亲和性和pod亲和性和反亲和性 污点 cordon drain

node亲和性和pod亲和性和反亲和性 污点 cordon drain 集群调度: schedule的调度算法 预算策略 过滤出合适的节点 优先策略 选择部署的节点 nodeName:硬匹配,不走调度策略,node01 nodeSelector:根据节点的标签选择,会走调度的算法 只…

20、Kubernetes核心技术 - 基于Prometheus和Grafana搭建集群监控平台

目录 一、概述 二、监控平台架构图​编辑 三、部署 Prometheus 3.1、Prometheus简介 3.2、部署守护进程node-exporter 3.3、部署rbac 3.4、ConfigMap 3.5、Deployment 3.6、Service 3.7、验证Prometheus 四、部署Grafana 4.1、Deployment 4.2、Service 4.3、Ing…