ANC-ZKUXT2系列FPGA隔离卡网闸版DPDK虚拟kni网口

1. 环境配置及依赖工具,在DPDK使用方法一文中已经介绍,不再重复

yum groupinstall "Development Tools" -y  //For RHEL/Fedoraapt install -y build-essential  //For Ubuntu/Debian
管理 NUMA 的库:yum install -y numactl-devel  //For RHEL/Fedoraapt install -y libnuma-dev  //For Ubuntu/Debian

2. DPDK 源码编译

 2.1 解压DPDK

[root@localhost ~]# tar xvf dpdk-19.11.6.tar.xz 

2.2 打FPGA卡的补丁,让DPDK可以识别

[root@localhost dpdk-stable-19.11.6.xgap]# patch -p0< dpdk-stable-19.11.14-gap1018.diff 
patching file lib/librte_net/rte_ether.h
patching file lib/librte_mempool/rte_mempool.h
patching file drivers/net/anntec/anntec_ethdev.c
patching file drivers/net/anntec/anntec_rxtx.c
patching file drivers/net/anntec/anntec_drv.h
patching file drivers/net/anntec/anntec_eeprom.h
patching file drivers/net/anntec/anntec_ethdev.h
patching file drivers/net/anntec/anntec_hw.c
patching file drivers/net/anntec/anntec_hw.h
patching file drivers/net/anntec/anntec_igic.c
patching file drivers/net/anntec/anntec_igic.h
patching file drivers/net/anntec/anntec_rxtx.h
patching file drivers/net/anntec/Makefile
patching file drivers/net/anntec/anntec_eeprom.c
patching file drivers/net/anntec/anntec_logs.h
patching file drivers/net/anntec/meson.build
patching file drivers/net/anntec/rte_pmd_anntec_version.map
patching file drivers/net/Makefile
patching file config/common_base
patching file mk/rte.app.mk

2.3 设置RTE参数并编译DPDK

[root@localhost dpdk-stable-19.11.6.xgap]# export RTE_SDK=`pwd`
[root@localhost dpdk-stable-19.11.6.xgap]# export RTE_TARGET=x86_64-native-linuxapp-gcc 
[root@localhost dpdk-stable-19.11.6.xgap]# make -j 8 install T=$RTE_TARGET

2.4编译kni

[root@localhost dpdk-stable-19.11.6.xgap]# cd examples/kni
[root@localhost kni]# makeCC main.oLD kniINSTALL-APP kniINSTALL-MAP kni.map

3 测试

3.1  加载uio ,igb_uio,rte_kni驱动,配置大页内存

[root@localhost dpdk-stable-19.11.6.xgap]# modprobe uio
[root@localhost dpdk-stable-19.11.6.xgap]# insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko 
[root@localhost dpdk-stable-19.11.6.xgap]# insmod x86_64-native-linuxapp-gcc/kmod/rte_kni.ko 
[root@localhost dpdk-stable-19.11.6.xgap]#echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

3.2 FPGA网卡的设备名

01:00.0 Memory controller: ANNTEC Device 1e92 1022 //SAS版
01:00.1 Memory controller: ANNTEC Device 1e92 0022  //SFP版

3.3 绑定FPGA网卡的接口到igb_uio

[root@localhost dpdk-stable-19.11.6.xgap]# echo 1e92 1022 > /sys/bus/pci/drivers/igb_uio/new_id 

3.4 启动kni,启动后可以在内核下看到vEth0_0接口

[root@localhost dpdk-stable-19.11.6.xgap]# cd examples/kni/build/
[root@localhost build]# ./kni -l 0-2 -- -P -p 0x1 --config="(0,0,1,0)"
EAL: Detected 8 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:01:00.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 1e92:1022 net_anntec
EAL: Product model: ANNTEC-200-M
EAL: FM version: 129.0.1.0  20230428
EAL: mac ff:ff:ff:ff:ff:ff
EAL: Link Speed 10G
EAL: port_id 0 vendorID=0x1e92 deviceID=0x1022, name:0000:01:00.0
EAL: PCI device 0000:01:00.1 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 1e92:1022 net_anntec
EAL: Product model: ANNTEC-200-M
EAL: mac ff:ff:ff:ff:ff:ff
EAL: Link Speed 10G
EAL: port_id 1 vendorID=0x1e92 deviceID=0x1022, name:0000:01:00.1
EAL: PCI device 0000:04:00.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 8086:1533 net_e1000_igb
EAL: PCI device 0000:05:00.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 8086:1533 net_e1000_igb
EAL: PCI device 0000:06:00.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 8086:1533 net_e1000_igb
EAL: PCI device 0000:07:00.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 8086:1533 net_e1000_igb
EAL: PCI device 0000:08:00.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 8086:1533 net_e1000_igb
EAL: PCI device 0000:09:00.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 8086:1533 net_e1000_igb
APP: Initialising port 0 ...
EAL: Dev0000:01:00.0 rx queue setup: queue logic id: 0
EAL: Dev0000:01:00.0 tx queue setup: queue logic id: 0
CPU:  Intel(R) Core(TM) i7-6700 CPU @ 3.40GHzEAL: Set mac address ff:ff:ff:ff:ff:ffChecking link status
done
Port0 Link Up - speed 10000Mbps - full-duplex
APP: ========================
APP: KNI Running
APP: kill -SIGUSR1 3245
APP:     Show KNI Statistics.
APP: kill -SIGUSR2 3245
APP:     Zero KNI Statistics.
APP: ========================
APP: Lcore 1 is writing to port 0
APP: Lcore 0 is reading from port 0
APP: Lcore 2 has nothing to do
APP: Configure network interface of 0 up
EAL: Set mac address ff:ff:ff:ff:ff:ff
10: vEth0_0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1504 qdisc pfifo_fast state UP group default qlen 1000link/ether 22:46:be:23:4f:05 brd ff:ff:ff:ff:ff:ffinet 1.1.1.1/24 brd 1.1.1.255 scope global vEth0_0valid_lft forever preferred_lft foreverinet6 fe80::2046:beff:fe23:4f05/64 scope link valid_lft forever preferred_lft forever

3.5 允许内核收发数据

echo 1 > /sys/devices/virtual/net/vEth0_0/carrier

3.6 查看网卡

[root@localhost build]# ethtool vEth0_0
Settings for vEth0_0:Link detected: yes
[root@localhost build]# ethtool -i vEth0_0
driver: kni
version: 1.0
firmware-version: 
expansion-rom-version: 
bus-info: 
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

   后续就是用ifconfig, ip等命令对vEth0_0进行配置,收发包测试。

4 初步测试后的优化

4.1 用命令开启混杂模式,和关闭混杂模式

ifconfig ethx promisc 开启混杂模式
ifconfig ethx -promisc 关闭混杂模式

4.2加载rte_kni模块时,如果不指定参数,默认会启动线程,专门处理接收报文

默认是禁止回环模式,也就是dpdk通过kni写入内核,但是无法从内核中获取到结果数据

可以通过加载rte_kni模块时,带参数设置kni内核模式(内存使用(io_mode)、线程

(kthread_mode),链路设置(carrier))等

4.3 kni可以写入内核但是收不到内核回复数据,需要设置链路状态的开与关 carrier=on carrier=off

1:insmod kmod/rte_kni.ko carrier=on2:通过dpdk提供的函数接口进行设置 :rte_kni_update_link()===>需要专门启动一个线程对其进行关注写入。3:echo 1 >/sys/devices/virtual/net/vEth0/carrier 写入

4.4 可以利用tshark监听网卡进行数据监控验证

yum install wireshark
tshark -i vEth0_0 icmp ===》然后使用ping命令,观察有icmp报文请求以及回复。

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

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

相关文章

C# 遍历数组中的对象委托方法

1&#xff0c;声明一个委托&#xff0c;理解这个可以装没有返回值和参数方法。 public delegate void StackEvent(); 2&#xff0c;声明一个类 Cs2 public class Cs2{public StackEvent tes;public Cs2(StackEvent stackEvent){tes stackEvent;}public string url { get; se…

Python pypinyin module 的应用

安装pypinyin module 这个模块主要处理中文拼音可以用来做很多很有趣的事情 如何使用help 函数 将help 函数的输出保存到文件中去 一眼会 import sys import pypinyinwith open(帮助文档.txt,w) as f:sys.stdout f help(pypinyin) 如何查找模块中内置的函数 类 函数 la…

springboot+vue农产品特产商城销售平台_50kf2 多商家

随着我国经济的高速发展与人们生活水平的日益提高&#xff0c;人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下&#xff0c;人们更趋向于足不出户解决生活上的问题&#xff0c;南阳特产销售平台展现了其蓬勃生命力和广阔的前景。与此同时&#xff0c;为解决…

2023年测试岗,手动测试vs自动化测试,“我“该如何抉择...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 在软件测试行业中…

OpenCL编程指南-9.1命令、队列、事件

概述 命令队列是OpenCL的核心。平台定义了一个上下文&#xff0c;其中包含一个或多个计算设备。每个计算设备可以有一个或多个命令队列。提交到这些队列的命令将完成OpenCL程序的具体工作。 在一个简单的OpenCL程序中&#xff0c;提交到一个命令队列的命令会按顺序执行。一个…

windows下mysql的下载与安装

文章目录 1 下载2 安装目录下新建data文件夹和my.ini3 安装4设置密码与远程连接5 配置环境变量6 navicate连接成功 1 下载 官网地址 https://www.mysql.com/点击下载 社区下载 社区服务 选择版本下载 2 安装目录下新建data文件夹和my.ini my.ini 内容如下 [mysql] # 设置my…

【C#学习笔记】内存管理

文章目录 分配内存释放内存GC标记清除算法分代算法 .NET的GC机制有这样两个问题&#xff1a; 官方文档 自动内存管理 自动内存管理是CLR在托管执行过程中提供的服务之一。 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。 对开发人员而言&#xff0c;这就意味着…

java-redis

1.Jedis 1.1 依赖引用 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.3.1</version> </dependency> 1.2 测试代码 RestController public class TestController {GetM…

〖Python网络爬虫实战㉝〗- aiohttp 的基本使用

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度…

二次开发了个寂寞之HttpRunnerManager接口测试管理平台

文章目录 一、背景1、二次开发1.1、首页1.2、项目列表1.3、用例列表1.4、新增用例1.5、测试套件1.6、查看报告 二、总结 一、背景 自入职起&#xff0c;就在公司内部引入开源接口测试平台&#xff0c;选一个大家勉强看得懂源码的开源项目&#xff0c;方便后续的二次开发&#x…

数据量特别大,自己手写虚拟dom节点展示数据。

当数据量特别大时&#xff0c;一次性全部展示出所有数据&#xff0c;会造成页面渲染慢&#xff0c;白屏&#xff0c;卡顿的现象。严重影响体验。为解决这样的问题&#xff0c;可以尝试使用虚拟加载dom节点的方式。 原理&#xff1a;根据屏幕高度和一条数据展示所需要的dom节点…

【每日一题】—— C. Mocha and Hiking(Codeforces Round 738 (Div. 2))

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

Kotlin~Visitor访问者模式

概念 将数据结构和操作分离&#xff0c;使操作集合可以独立于数据结构变化。 角色介绍 Visitor&#xff1a;抽象访问者&#xff0c;为对象结构每个具体元素类声明一个访问操作。Element&#xff1a;抽象元素&#xff0c;定义一个accept方法ConcreteElement&#xff1a;具体元…

docker 资源限制

目录 1、CPU使用率 2、CPU共享比例 3、CPU周期限制 4、CPU核心限制 5、CPU 配额控制参数的混合案例 6、内存限制 7、Block IO 的限制 8、限制bps 和iops docker资源限制 Docker容器技术底层是通过Cgroup&#xff08;Control Group 控制组&#xff09;实现容器对物理资…

Android 性能调优之bitmap的优化

背景 Android开发中&#xff0c;加载图片过多、过大很容易引起OutOfMemoryError异常&#xff0c;即我们常见的内存溢出。因为Android对单个应用施加内存限制&#xff0c;默认分配的内存只有几M&#xff08;具体视不同系统而定&#xff09;。而载入的图片如果是JPG之类的压缩格…

【unity】Pico VR 开发笔记(视角移动)

【unity】Pico VR 开发笔记&#xff08;视角移动&#xff09; 视角移动是简单的基础功能&#xff0c;这里区别于头显定位获得的小范围位移&#xff0c;是长距离不影响安全边界的位移方式。的常见的位移方式有两种&#xff0c;其一是触发后瞬间传送到指定位置&#xff0c;其次是…

flutter开发实战-BackdropFilter高斯模糊子Widget控件

flutter开发实战-BackdropFilter高斯模糊子Widget。 最近开发过程中遇到需要将控件进行模糊&#xff0c;比如iOS的effect的模糊效果。那在flutter中就需要用到了BackdropFilter 一、BackdropFilter BackdropFilter属性定义 BackdropFilter({Key key, required ImageFilter …

微服务---介绍

目录 1.微服务架构5个核心问题 2.微服务架构实现方案 3.微服务架构更多的是架构思想 4.学习微服务的意义 5.微服务架构一般采用 6.服务器有三种类型 1.微服务架构5个核心问题 &#xff08;解决这些问题都是依托于中间件&#xff0c;学微服务也是学这些中间件&#xff09;…

【C++】总结10--C++11第二篇

文章目录 RAIIC11新特性 RAII RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是一种利用对象生命周期来控制程序资源&#xff08;如内存、文件句柄、网络连接、互斥量等&#xff09;的简单技术&#xff0c;在对象的构造函数中获取资源&#xff0c;在对象…

深度学习torch基础知识

torch. detach()拼接函数torch.stack()torch.nn.DataParallel()np.clip()torch.linspace()PyTorch中tensor.repeat()pytorch索引查找 index_select detach() detach是截断反向传播的梯度流 将某个node变成不需要梯度的Varibale。因此当反向传播经过这个node时&#xff0c;梯度…