一 安装
1.1 安装依赖
rpm -qa | grep numa
numactl-2.0.12-11.el8.x86_64
numactl-devel-2.0.12-11.el8.x86_64
numactl-libs-2.0.12-11.el8.x86_64
1.2 安装dpdk
1.3 报错处理
sed -i 's/PG_ETHER_TYPE_IPv4/RTE_ETHER_TYPE_IPV4/g' /root/pktgen-dpdk/app/pktgen-stats.c
sed -i 's/PG_ETHER_TYPE_IPv6/RTE_ETHER_TYPE_IPV6/g' /root/pktgen-dpdk/app/pktgen-stats.c
二 make
make && make install
三 运行帮助
命令行方式执行
-P 和 -m 这两个参数是必要的!
./app/build/pktgen [EAL options] -- [-h] [-P] [-G] [-T] [-f cmd_file] [-l log_file] [-s P:PCAP_file] [-m ]
-s P: file PCAP packet stream file, 'P' is the port number
-f filename Command file (.pkt) to execute or a Lua script (.lua) file
-l filename Write log to filename
-P Enable PROMISCUOUS mode on all ports
-g address Optional IP address and port number default is (localhost:0x5606)If -g is used that enable socket support as a server application
-G Enable socket support using default server values localhost:0x5606
-N Enable NUMA support
-T Enable the color output
--crc-strip Strip CRC on all ports
-h Display the help information
-c 用于指定运行程序的CPU内核掩码。研究了一下大概是这样的,假如我的虚拟机CPU有5个核,那么就按照 5 4 3 2 1来进行排位,然后从右自左,每4位组成一个16进制数值(二进制1111-> 0xf),不够的补0,算出分配给pktgen使用5个核的掩码就是0x1f,假设我们有10个核,想分配给pktgen使用8个,那么掩码就是0xff。
-n 用来指定内存通道。
-s : 如果你想用pktgen发送pcap文件 例如 [-s P:PCAP_file] -s 0 : 1.pcap 0表示在第0个网卡,1.pcap及文件名
-f : 在运行pktgen时可以运行指定的脚步文件,进行初始化配置
-P : 启动所有网卡,并进入混杂模式,想指定特定网卡 用 -p mask
-G : 让pktgen成为服务器,之后后可以进行远程控制 默认是 localhost:0x5606
-g : 让pktgen成为服务器,之后后可以进行远程控制 可以进行IP和端口的设置
-m : 指定lcore和port的映射关系
四 运行
运行转发
./dpdk-l2fwd -l 2 -m 128 --proc-type auto --file-prefix pg1 -- -p 02
运行生成
./pktgen -l 0-2 -n 4 -b 02:06.0 -- -P -m "1.0"
set 0 dst mac 00:0c:29:cc:ff:ad
start 0
[https://blog.csdn.net/qq_41854763/article/details/88426972](https://blog.csdn.net/qq_41854763/article/details/88426972)
查看mac地址:
[root@localhost usertools]# ./dpdk-devbind.py --bind=e1000 02:05.0
[root@localhost usertools]# ./dpdk-devbind.py --bind=e1000 02:06.0
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:cc:ff:a3 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:cc:ff:ad txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
网友评论