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

这篇具有很好参考价值的文章主要介绍了ANC-ZKUXT2系列FPGA隔离卡网闸版DPDK虚拟kni网口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

yum groupinstall "Development Tools" -y  //For RHEL/Fedora

apt install -y build-essential  //For Ubuntu/Debian
管理 NUMA 的库:

yum install -y numactl-devel  //For RHEL/Fedora

apt 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]# make
  CC main.o
  LD kni
  INSTALL-APP kni
  INSTALL-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.40GHz
 EAL: Set mac address ff:ff:ff:ff:ff:ff

Checking 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 1000
    link/ether 22:46:be:23:4f:05 brd ff:ff:ff:ff:ff:ff
    inet 1.1.1.1/24 brd 1.1.1.255 scope global vEth0_0
       valid_lft forever preferred_lft forever
    inet6 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=on

2:通过dpdk提供的函数接口进行设置 :rte_kni_update_link()

===>需要专门启动一个线程对其进行关注写入。

3:echo 1 >/sys/devices/virtual/net/vEth0/carrier 写入

4.4 可以利用tshark监听网卡进行数据监控验证文章来源地址https://www.toymoban.com/news/detail-631686.html

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

到了这里,关于ANC-ZKUXT2系列FPGA隔离卡网闸版DPDK虚拟kni网口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 压力应变桥信号处理系列隔离放大器 差分输入转换直流变送模块

    DIN11 IPO 压力应变桥信号处理系列隔离放大器是一种将差分输入信号隔离放大、转换成按比例输出的直流信号导轨安装变送模块。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等行业。此系列模块内部嵌入了一个高效微功率的电源,向输入端和输出端提供隔

    2023年04月26日
    浏览(50)
  • 【Spring/MySQL数据库系列】数据库事务的特点与隔离级别

    ⭐️ 前面的话 ⭐️ 本文已经收录到《Spring框架全家桶系列》专栏,本文将介绍有关数据库事务的特点以及隔离级别。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由 未见花闻 原创, CSDN 首发! 📆首发时间:🌴2023年5月20日🌴 ✉️坚

    2024年02月05日
    浏览(53)
  • 网闸的工作原理

    网闸GAP由固态读写开关和存储人质系统组成,其中固态开关的转换效率达到了纳秒级,存储介质通常采用scsi硬盘,因此GAP的性能得到了保证。 GAP连接在两个独立的网络系统中间,内网与外网永远不同时连接,在同一时刻只有一个网络与安全隔离网闸建立无协议数据连接,由

    2024年02月04日
    浏览(34)
  • 【MySQL系列】MySQL的事务管理的学习(一)_ 事务概念 | 事务操作方式 | 事务隔离级别

    「前言」文章内容大致是MySQL事务管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 事务的概念 MySQL事务是指一系列的数据库操作(一组 DML 语句),这些操作要么全部成功执行,要么全部失败回滚。事务的目的是确保数据库的一致性和完整性 事务就是要

    2024年02月09日
    浏览(35)
  • 不用网闸、FTP的话 如何实现内外网数据交换?

    网络隔离已然成为很多企业首选的数据保护方式,即使是内部人员之间,也是不能随意的发送敏感文件的。但是,文件的流转交互,又是不可避免的,网络隔离保障了企业网络安全,但在具体实践中仍需解决各隔离网间的数据传输问题,不仅仅是内部人员之间,和外部伙伴之

    2024年02月04日
    浏览(28)
  • Xilinx 7系列 FPGA硬件知识系列(九)——FPGA的配置

    目录 1 .1配置模式 1.1.1  主模式 1.1.2  从模式 1.2  7种配置模式 1.2.1  主串配置模式 1.2.2  从串配置模式 ​编辑1.2.3  主并配置模式 1.2.4  从并配置模式 1.2.5  JTAG配置模式 ​编辑1.2.6  主SPI配置模式 ​编辑1.2.7  主BPI配置模式 1.2.8  FPGA BPI加载时间(参考xapp587) 2、BPI

    2024年03月13日
    浏览(68)
  • FPGA入门系列(1)产品选型(一篇文章弄懂FPGA不同系列)

    Xilin的FPGA芯片可以分为多个系列,我们常见的7系列、UltraScale、UltraScale+。 根据不同的工艺可以划分为45nm、28nm、20nm、16nm,可以划分为: 特别的在这些系列之外,还有ZYQN。这个系列主要的特点是在具备FPGA功能外,还额外封装了一个处理器,比较的常见的是ZYNQ-7000系列,便宜

    2024年04月14日
    浏览(58)
  • Xilinx 7系列 FPGA硬件知识系列(八)——Xilinx FPGA的复位

    目录  概要  Xilinx复位准则 全局复位主要由以下三种方式实现 高时钟频率下的复位时序全局复位对时序的要求真的很关键吗? 独热码状态机的复位        FPGA配置 Xilinx白皮书WP272《Get Smart About Reset: Think Local, Not Global》详细讲述了FPGA的全局复位。在数字系统设计中,我们

    2024年03月11日
    浏览(72)
  • [FPGA] 7系列FPGA的基础知识

    Virtex-7 Family是Xilinx公司推出的一系列FPGA器件,采用了28纳米工艺制造。它是Xilinx公司的第一个采用28纳米工艺的FPGA系列,提供了高性能、低功耗和灵活性的特点。 Virtex-7 Family提供了不同规模的器件,包括Virtex-7 XT、Virtex-7 HT、Virtex-7 H580T、Virtex-7 VXT和Virtex-7 VX系列,每个系列都

    2024年02月09日
    浏览(43)
  • [FPGA IP系列] 2分钟了解FPGA中的BRAM

    FPGA设计中,BRAM是一项非常关键的内置存储资源,FPGA开发需要熟练使用BRAM,今天再复习一下BRAM的知识,包括BRAM的定义、组成、应用等等。 RAM是Random Access Memory,也就是随机访问数据存储器,RAM的内部是一个一个小内存单元(可以看成是一个小格子)组成。 每个内存单元都对应

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包