怎么弄自己的网站卖东西,万户网络做网站怎么样,企业网站建设原则是,彩票网站定制文章目录 2.DPDK 测试说明2.1硬件pci加密设备绑定到igb_uio驱动IGB_UIO 主要负责什么内容 #xff1f; 2.2 test命令使用说明2.3 dpdk-test-crypto-perf命令使用说明2.4 使用testpmd测试网卡性能 2.DPDK 测试说明 
2.1硬件pci加密设备绑定到igb_uio驱动 
dpdk-stable/usertool… 文章目录 2.DPDK 测试说明2.1硬件pci加密设备绑定到igb_uio驱动IGB_UIO 主要负责什么内容  2.2 test命令使用说明2.3 dpdk-test-crypto-perf命令使用说明2.4 使用testpmd测试网卡性能  2.DPDK 测试说明 
2.1硬件pci加密设备绑定到igb_uio驱动 
dpdk-stable/usertools/dpdk-setup.sh 分析 如何绑定pci设备到igb_uio驱动Option:54 
IGB_UIO 主要负责什么内容  
(1.1) igb_uio 内核模块功能之一、注册一个 PCI 设备。通过 DPDK 提供的 Python 脚本 dpdk-devbind 来完成 当执行 dpdk-devbind 来 bind 网卡时会通过 sysfs 与内核交互、让内核使用指定的驱动程序(e.g. igb_uio) 来绑定网卡。 在 linux 中设备与驱动绑定方法有两种: a、 配置设备 让设备选择驱动向 /sys/bus/pci/devices/{pci id}/driver_override 写入驱动的名称。 b、 配置驱动让其支持新的 PCI 设备向 /sys/bus/pci/drivers/igb_uio/new_id 写入要bind的网卡设备的 PCI ID (e.g. 8086 10f5, 格式设备厂商号 设备号)。 这两种方式都会促使驱动程序 bind 新的网卡设备而 DPDK 使用的 第二种 方式。 (1.2) igb_uio 内核模块另一个主要功能是、让用户态的 PMD 网卡驱动程序与 UIO 及格线交互 a、 调用 igbuio_setup_bars,设置 uio_info的 uio_mem 、 uio_port 和其他成员; b、 调用 uio_register_device, 注册 UIO 设备 c、打开 UIO 设备并注册中断 d、调用 uio_event_notify, 将注册的 UIO 设备的 “内存空间” 映射到用户态的应用空间其 mmap 函数为uio_mmap 至此、UIO 就可以让 PMD 驱动程序在用户态应用程序访问设备的大部分资源。 e、应用层 UIO 初始化同时DPDK 还需要把 PCI 设备的 BAR 以上到应用层 在 pci_uio_map_resource 函数中、会调用pci_uio_map_resource_by_index 做资源映射。 f、在 PMD 驱动程序中 DPDK 应用程序会调用 rte_eth_rx_burst 读取数据报文 如果网卡接收 Buffer 的描述符表示已经完成一个报文的接收(如有 E1000_RXD_STAT_DD标志)则 rte_mbuf_raw_alloc 一个 mbuf 进行处理。 以上通过脚本输入PCI设备bus:slot.func number本质应该就是一条写命令 查看usertools/dpdk-devbind.py脚本内容确实如此  DPDK中我们基于脚本输入”bus:slot.func” number绑定设备即可。 实际上绑定设备通过”Vendor DeviceID” number但是取消绑定设备通过”bus:slot.func” number 
补充思考通过脚本基于pci 总线绑定我们的半高卡到igb_uio驱动中脚本它凭什么认为这个pci设备就是”加密设备”而不是”网络设备”、不是”压缩设备”  答 ①通过dpdk-devbind.py --status查看当前有哪些加密设备  ②dpdk-devbind.py脚本中内容如下根据Class number决定这是一个什么设备  ③为什么是0x10代表加密设备因为这是PCIe规范定义的 https://blog.ladsai.com/pci-configuration-space-class-code.html ④查看我们的PCIe配置空间class code配置设置成了0x10,所以被DPDK视为这是一个加密设备。  
2.2 test命令使用说明 
est是用于测试dpdk rte相关的基础功能例如mempool_perf_autotest 指定测试要用到的logic core:0-7 
$ ./test -l 0-7进入RTE命令行后输入’Shift  ?’ 可以查看当前支持哪些测试 2.3 dpdk-test-crypto-perf命令使用说明 
dpdk-test-crypto-perf是专门用来测试硬件加密设备功能和性能的。 命令用法说明dpdk-test-crypto-perf [EAL Options] -- [Application Options] 注EAL选项跟App选项通过–隔开 1EAL选项 ①指定要运行DPDK的CPU(可以通过两个选项: -l / -c): -c  -l  COREMASK的格式是要运行的十六进制内核位掩码例如 -c 0x101就是指定CPU0跟CPU8运行DPDK CORELIST的格式是要运行的核心列表例如-l 0-4 就是指定CPU0到CPU4运行DPDK 
②指定虚拟设备例如–vdev crypto_ccp907t_sec –vdev  
③添加一个PCI设备到白名单中 例如-w 0000:01:00.0这是非必须选项 -w  
2App选项: ①指定测试类型type有三种可选类型: throughput / latency / verify –ptest type ②设置操作的总次数 –total-ops  ③设置单个(明文或密文)报文的大小 –buffer-sz  ④设置每个报文的报文段数用于测试scatter/gather –segments-nb  ⑤设置设备类型 例如 --devtype crypto_ccp907t_sec –devtype  ⑥设置操作类型name有这几种可选类型: cipher-only / auth-only / cipher-then-auth / auth-then-cipher / aead –optype  ⑦配置密码算法 a).设置密码算法名称例如 --cipher-algo sm4-cbc –cipher-algo  b).设置密码操作模式mode有两种可选类型: encrypt / decrypt: –cipher-op  c).设置密码 key的大小 –cipher-key-sz  d).设置密码 iv的大小 –cipher-iv-sz  ⑧配置认证算法 a).设置认证算法名称例如 --auth-algo sm3-hmac –auth-algo  b).设置认证操作模式mode有两种可选类型: verify / generate: –auth-op  c).设置认证key的大小 –auth-digest-sz  d).配置认证aad的大小(暂时不清楚干啥用的) –auth-aad-sz  ⑨设置测试标志值向量文件路径用于验证算法的正确性。参见测试向量文件一章该参数需要与 --ptest verify 一起使用: –test-file  例如: --test-file /home/ccore/dpdk-stable/sm4_cbc_sm3.data 
a).在测试向量文件中设置特定的测试名称部分(用于hash认证结果比对测试) –test-name  例如–test-name sm3_hmac_buff_32 
2.4 使用testpmd测试网卡性能 
参考链接: https://www.jianshu.com/p/a7c7d5e80a14 下面testpmd测试时关于更多参数含义就不一一说明了请自行查看 https://dpdk.readthedocs.io/en/stable/testpmd_app_ug/index.html 
由于网卡是由DPDK接管的是没有IP地址的所以是以MAC地址通信。确定好各自的源MAC和目的MAC类似于二层交换机的功能 
1物理连接方式 这里测试用的是enp3s0和p2p1两个网口网卡芯片都是I210这两个网口都通过PCIe接口插在Intel 5218R塔式工作站上然后这两个网口外部通过网线直接连接 enp3s0 ----------- 网线 ----------- p2p1 
2网卡取消绑定内核驱动要先down掉之后才能绑定到DPDK中注意: 使用的物理网卡要能够支持igb驱动否则在DPDK中通过igb_uio绑定无效 补充查看当前DPDK版本支持哪些网卡 http://doc.dpdk.org/guides/rel_notes/release_18_11.html $ sudo ifconfig enp3s0 down $ sudo ifconfig p2p1 down  3导出环境: 编译dpdk-stable代码以及dpdk-stable/examples下面的测试例程都要先导出下面两个环境变量(可以放在~/.bashrc下使其自动导出): $ export RTE_SDK #DPDKInstallDir  /home/zf/git/dpdk-stable $ export RTE_TARGETx86_64-native-linuxapp-gcc 
4编译DPDK与加载uio驱动大页内存默认上电已经配置好通过bootargs传参预配置了 先进入dpdk_stable顶层目录然后依次执行以下指令 $ sudo make install Tx86_64-native-linuxapp-gcc $ sudo modprobe uio $ sudo insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko 
5网卡绑定到DPDK(基于PCIe BDF num绑定): $ sudo ./usertools/dpdk-devbind.py -b igb_uio 03:00.0 b3:00.0  6通过dpdk-stable/examples/ethtool检测有多少个网口绑定到了DPDK这一步实际上可以跳过目的是为了通过不同的工具查询DPDK绑定网卡数量