searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

pktgen内核版安装手记

2023-10-10 02:40:05
80
0

前言

pktgen是性能强大、功能丰富的测试工具。它的发包能力可达10M以上,而普通的发包工具,例如iperf、netfperf只能达到几十万的水平。原因在于,pktgen是内核模块,直接在内核中构建数据包并发送,不存在从用户空间向内核空间拷贝数据的过程。另外值得一提的是pktgen-dpdk,虽然运行在用户态,但是由于用户态直接接管网卡设备,也不存在从用户态向内核拷贝数据的过程。这两个性能测试工具性能相仿。从加速比和功能丰富角度看,pktgen-dpdk更胜一筹,从部署复杂度和兼容性看,pktgen内核版更具优势。

正是因为pktgen是一个内核模块,它的使用界面不是很友好(通过修改虚拟文件的值来进行配置)。好在Linux源码中提供了脚本协助用户完成这个操作。

本文旨在介绍一种经过验证的部署方式。读者可以根据本文介绍的步骤快速搭建一个测试环境。

拓扑

性能测试一般采用C/S模式。pktgen做为客户端(发送端),服务端部署sar来观察性能指标(接收端)。

pktgen(发送端)安装过程

你需要一台Linux主机部署pktgen。本案使用的OS为CentOS7。由于pktgen的sample文件位于源码包,加上有些linux发行版默认没有携带pktgen工具,建议采用如下步骤编译安装内核。

1、下载官方linux内核源码包

2、解压源码包: 

tar xvf 源码包.xz

3、将解压后的源码包迁移至/usr/src/目录下,重命名为linux,或者建立软链接:

ln –s <解压后源码包名> linux

4、安装必要的工具

yum install openssl openssl-devel gcc make ncurses ncurses-devel  bison flex libelf-dev libelf-devel elfutils-libelf-devel -y

5、生成内核编译配置文件,这是一个伪图形界面的工具,一路使用默认值即可

make menuconfig

6、编译内核

make -j 20

7、安装内核

make modules_install
make install

8、重启计算机,在内核选择目录下,选择新编译的内核即可

pktgen的使用

使用Pktgen的最简单办法,是直接使用位于linux内核源码包中的示例脚本。这些脚本位于/usr/src/linux-<内核版本号>/samples/pktgen/ 目录下。

单流发包测试:

./pktgen_sample02_multiqueue.sh -i <网口名称> -m <目的MAC> -d <目的IP> -n <发包数目> -s <包大小> -t <线程数目>

使用pktgen_sample02_multiqueue.sh可以进行多队列测试,使用pktgen_sample04_many_flows.sh可执行多流测试。

使用<脚本名称> -h 命令可以参看可选参数。大致如下:

Usage: ./pktgen_sample01_simple.sh [-vx] -i ethX
  -i : ($DEV)       output interface/device (required)
  -s : ($PKT_SIZE)  packet size
  -d : ($DEST_IP)   destination IP
  -m : ($DST_MAC)   destination MAC-addr
  -t : ($THREADS)   threads to start
  -f : ($F_THREAD)  index of first thread (zero indexed CPU number)
  -c : ($SKB_CLONE) SKB clones send before alloc new SKB
  -n : ($COUNT)     num messages to send per thread, 0 means indefinitely
  -b : ($BURST)     HW level bursting of SKBs
  -v : ($VERBOSE)   verbose
  -x : ($DEBUG)     debug

sar(接收端):

1、sar的安装

yum install sysstat

2、sar的配置

打开配置文件: /etc/sysconfig/sysstat    一般不需要特殊配置

3、sar的运行

一般不需要,sar进程会随机启动。手动启动的话,执行

 

systemctl start sysstat

4、查看流量信息

sar -n DEV 1 1000       // 查看网络流量信息, 1表示1秒刷新一次,1000表示执行1000次; 前面的选项是变化的,而最后这两个选项永久不变。 
DEV 关键字代表 网络设备,其他的还有:
DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, EICMP6 and UDP6

后面可以加一个grep来过滤特定的网络接口

5、其他参数

-u

CPU使用情况

-r

内存使用情况

-b

磁盘使用情况

-n

网络使用情况

0条评论
0 / 1000
李****一
10文章数
2粉丝数
李****一
10 文章 | 2 粉丝