前言
DPDK-网络数据开发中文网开发中文网致力于整理收录dpdk,spdk,ovs,vpp,dpvs,virtiohost,sdn/ovn,qemu等方向 的github开源项目,资料文档,书籍,讲解视频,各大企业招聘信息。
23.1.12补充更新了安装部分的内容(基于ESXi+trex v2.87)
既然你已经知道TRex并尝试搜索它的安装教程,这意味着你有一定的基础知识(至少知道自己需要什么)。因此本文对于TRex的介绍部分会偏少
本次主要为TRex安装过程的一次记录(版本为v3.0.0),我会整理一些遇到的问题与解决思路,希望对各位有所帮助。
简介
Cisco开源的一个使用DPDK发包的高性能测试仪。
主要的工作原理概括如下:
- 使用scapy来构建数据包模板;或者从pcap文件中读取数据包模板;
- 利用dpdk发送数据包;(重写指定变化的部分)
其兼具了python构建流的效率和dpdk发包的高性能。
TRex安装
TRex是一个Linux环境下的软件,安装环境无非两种:物理机和虚拟机
本文主要基于虚拟机介绍TRex的安装
而使用虚拟机又可以分为两种安装环境:
- 本地虚拟机
基于本地VMware构建的虚拟机环境 - 远程服务器虚拟机
基于VMware EXCI构建的远程虚拟机环境
两种方式最大的不同在网卡添加时,VMware EXCI需要使用ifcofig让系统识别出网卡,详见[7]
其余的流程差不多,本文着重介绍本地VMware基于ubantu18.04安装TRex的流程
如果你在VMware EXCI安装遇到了问题,也欢迎留言讨论
基于本地虚拟机的安装过程
如何获得一个本地VMware虚拟机(包括换源等操作)请自行Google或参考[1]
我使用的VMware版本是VMwareWorkStation PRO16,虚拟机镜像为Ubantu18.04桌面版
虚拟机配置
先列一下我使用的虚拟机配置(图挂了看表)
设备 摘要
内存 8 GB
处理器 4
硬盘(SCSI) 35 GB
CD/DVD 2 (SATA) 自动检测
CD/DVD (SATA) 自动检测
软盘 自动检测
网络适配器 NAT
网络适配器2 NAT
网络适配器3 NAT
USB控制器 存在
声卡 自动检测
打印机 存在
显示器 自动检测
注:因为安装之后的测试需要用到多块网卡,故此处添加了3块网卡,一块作为Linux内核的主网卡,其余两块用于绑定uio驱动进行测试。
虚拟机的网卡可以随时添加或删除,只要保证其模式始终为NAT即可
虚拟机配置完成后,推荐使用VScode连接并操作,因为之后涉及对配置文件的修改,会比较方便。具体请看:https://www.cnblogs.com/DAYceng/p/16867325.html
当然也可以直接在VMware提供的界面中操作
安装gcc环境
安装gcc环境
root@ubuntu:#
sudo apt install build-essential
sudo apt install make
sudo apt-get install libnuma-dev
ps:这步报错的请先换源
获取TRex
在你喜欢的目录下创建一个文件夹存放安装文件
mkdir trex
cd trex
下载TRex最新分支并解压
root@ubuntu:/root/trex# wget --no-check-certificate https://trex-tgn.cisco.com/trex/release/latest
root@ubuntu:/root/trex# tar -zxvf latest
注:
- latest文件下载过程很慢,挂梯子也很慢,可以先在本地访问https://trex-tgn.cisco.com/trex/release/latest把文件下载下来再传到虚拟机上
- 如果不想下最新版,可以去https://trex-tgn.cisco.com/trex/release自行选择下载版本
得到以下目录
root@ubuntu:/root/trex# ls
latest v3.00
进入解压后的文件夹,使用脚本查看当前可用的网卡
root@ubuntu:/root/trex# cd v3.00
root@ubuntu:/root/trex/v3.00#
root@ubuntu:/root/trex/v3.00#sudo ./dpdk_setup_ports.py -s
Network devices using DPDK-compatible driver
============================================
<none>
Network devices using kernel driver
===================================
0000:02:01.0 '82545EM Gigabit Ethernet Controller (Copper)' if=ens33 drv=e1000 unused=igb_uio,vfio-pci,uio_pci_generic *Active*
0000:02:06.0 '82545EM Gigabit Ethernet Controller (Copper)' drv=e1000 unused=igb_uio,vfio-pci,uio_pci_generic
0000:02:07.0 '82545EM Gigabit Ethernet Controller (Copper)' drv=e1000 unused=igb_uio,vfio-pci,uio_pci_generic
Other network devices
=====================
<none>
root@ubuntu:/root/trex/v3.00#
如果之前添加了网卡,这里就可以看见有3个网卡(没添加的现在再加也行),* Active *为Linux内核正在使用的网卡,另外两张是未启用的网卡(先不要启用),如果有需要请查看[7]
TRex自带脚本自动安装
解压TRex发行版压缩包之后得到的文件夹中包含有以下部分:
- TRex自身运行所需文件(包括支持库、测试脚本等)
- 与当前TRex版本匹配的完整DPDK
- TRex PythonApi
因此,如果没有特殊需求,只需运行TRex提供的自动化脚本就可以方便的绑定已有的端口
查看当前NIC端口
需要先明确当前网卡有哪些端口可用(这里trex版本是v2.87,没有影响不用在意)
root@xxx:~/trex/v2.87# ./dpdk_setup_ports.py -s
Network devices using DPDK-compatible driver
============================================
<none>
Network devices using kernel driver
===================================
0000:03:00.0 'VMXNET3 Ethernet Controller' if=ens160 drv=vmxnet3 unused=igb_uio,vfio-pci,uio_pci_generic *Active*
0000:0b:00.0 'VMXNET3 Ethernet Controller' if=ens192 drv=vmxnet3 unused=igb_uio,vfio-pci,uio_pci_generic
0000:13:00.0 'VMXNET3 Ethernet Controller' if=ens224 drv=vmxnet3 unused=igb_uio,vfio-pci,uio_pci_generic
Other network devices
===============&#