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

使用pktgen进行性能测试的步骤方法

2023-10-09 06:52:00
344
0

1、pktgen工具简介

      pktgen是一个位于linux内核层的高性能网络测试工具,主要用来测试网络驱动与网卡设备,支持多线程,能够产生随机mac地址、IP地址、UDP端口号的数据包。

  pktgen的配置与统计信息查看都使用/proc文件系统完成,/proc文件系统是一种特殊的,有软件创建的文件系统,内核使用/proc文件系统向外界导出信息,外界也可以通过它配置内核态的一些进程的参数,如ps top uptime等linux发行版中的很多工具就是通过/proc实现的。在大多情况下,我们只用/proc读出数据(用于调试内核驱动等),而在pktgen中配置命令就用到了/proc的写入数据功能。

2、安装pktgen工具

现在版本的linux发行版大多加入了pktgen,使用以下命令加载pktgen模块:

modprobe pktgen

然后你将在/proc/net/pktgen目录下看到以下文件:

kpktgend_0  kpktgend_1  kpktgend_2  kpktgend_3  pgctrl

其中kpktgen_*的多少是根据你的CPU的个数决定的,如我的虚拟机的CPU数目为4,则有四个此文件。

通过命令cat /proc/net/pktgen/pgctrl可以查看pktgen的版本等信息:

#cat /proc/net/pktgen/pgctrl
Packet Generator for packet performance testing. Version: 2.74
 

3、测试虚机配置

使用pktgen打流可以达到10G的流量,所以虚机的配置要尽可能的高,如果可以使用裸机测试,也是可以的。

在正式测试之前,要对收发包虚机进行以下配置:

3.1 udp buffer

将所有设备加大udp buffer的配置

sysctl -w net.core.rmem_default=212992000

sysctl -w net.core.rmem_max=212992000

3.2 发包虚机 pktgen配置

添加设备

modprobe pktgen

echo "rem_device_all" > /proc/net/pktgen/kpktgend_0

echo "add_device bond0" > /proc/net/pktgen/kpktgend_0       #指定发包的网卡

配置报文eip

配置方法,样例仅给出部分配置

echo "pkt_size 256" > /proc/net/pktgen/ bond0

echo "count 0" > /proc/net/pktgen/ bond0

echo  "dst 172.168.1.248" > /proc/net/pktgen/ bond0

echo "dst_mac fa:16:3e:2e:25:92" > /proc/net/pktgen/ bond0      

端口范围:10(一个端口就是一条流)

echo "udp_src_min 400" > /proc/net/pktgen/ bond0

echo "udp_src_max 444" > /proc/net/pktgen/ bond0

echo "udp_dst_max 544" > /proc/net/pktgen/ bond0

echo "udp_dst_min 400" > /proc/net/pktgen/ bond0

3.3 查看配置结果:

cat /proc/net/pktgen/ bond0

3.4 发送报文

echo "start" > /proc/net/pktgen/pgctrl

3.5 查看发送结果:

cat /proc/net/pktgen/bond0

4、监控结果

4.1 在收包的虚机上查看pps

sar -n DEV 1 10000

4.2 在vpcgw查看收发报文计数

0条评论
0 / 1000
葛****迪
5文章数
1粉丝数
葛****迪
5 文章 | 1 粉丝
原创

使用pktgen进行性能测试的步骤方法

2023-10-09 06:52:00
344
0

1、pktgen工具简介

      pktgen是一个位于linux内核层的高性能网络测试工具,主要用来测试网络驱动与网卡设备,支持多线程,能够产生随机mac地址、IP地址、UDP端口号的数据包。

  pktgen的配置与统计信息查看都使用/proc文件系统完成,/proc文件系统是一种特殊的,有软件创建的文件系统,内核使用/proc文件系统向外界导出信息,外界也可以通过它配置内核态的一些进程的参数,如ps top uptime等linux发行版中的很多工具就是通过/proc实现的。在大多情况下,我们只用/proc读出数据(用于调试内核驱动等),而在pktgen中配置命令就用到了/proc的写入数据功能。

2、安装pktgen工具

现在版本的linux发行版大多加入了pktgen,使用以下命令加载pktgen模块:

modprobe pktgen

然后你将在/proc/net/pktgen目录下看到以下文件:

kpktgend_0  kpktgend_1  kpktgend_2  kpktgend_3  pgctrl

其中kpktgen_*的多少是根据你的CPU的个数决定的,如我的虚拟机的CPU数目为4,则有四个此文件。

通过命令cat /proc/net/pktgen/pgctrl可以查看pktgen的版本等信息:

#cat /proc/net/pktgen/pgctrl
Packet Generator for packet performance testing. Version: 2.74
 

3、测试虚机配置

使用pktgen打流可以达到10G的流量,所以虚机的配置要尽可能的高,如果可以使用裸机测试,也是可以的。

在正式测试之前,要对收发包虚机进行以下配置:

3.1 udp buffer

将所有设备加大udp buffer的配置

sysctl -w net.core.rmem_default=212992000

sysctl -w net.core.rmem_max=212992000

3.2 发包虚机 pktgen配置

添加设备

modprobe pktgen

echo "rem_device_all" > /proc/net/pktgen/kpktgend_0

echo "add_device bond0" > /proc/net/pktgen/kpktgend_0       #指定发包的网卡

配置报文eip

配置方法,样例仅给出部分配置

echo "pkt_size 256" > /proc/net/pktgen/ bond0

echo "count 0" > /proc/net/pktgen/ bond0

echo  "dst 172.168.1.248" > /proc/net/pktgen/ bond0

echo "dst_mac fa:16:3e:2e:25:92" > /proc/net/pktgen/ bond0      

端口范围:10(一个端口就是一条流)

echo "udp_src_min 400" > /proc/net/pktgen/ bond0

echo "udp_src_max 444" > /proc/net/pktgen/ bond0

echo "udp_dst_max 544" > /proc/net/pktgen/ bond0

echo "udp_dst_min 400" > /proc/net/pktgen/ bond0

3.3 查看配置结果:

cat /proc/net/pktgen/ bond0

3.4 发送报文

echo "start" > /proc/net/pktgen/pgctrl

3.5 查看发送结果:

cat /proc/net/pktgen/bond0

4、监控结果

4.1 在收包的虚机上查看pps

sar -n DEV 1 10000

4.2 在vpcgw查看收发报文计数

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0