ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pktgen 使用小记

2021-07-22 17:02:29  阅读:192  来源: 互联网

标签:src pgset max dst mac 使用 pktgen 小记


pktgen 是 Linux 内核自带的一个发包工具。下面知识简单的通过一个例子介绍一下。

安装

要使用 pktgen,首先必须加载 pktgen 的内核模块。

modprobe pktgen

当然,要卸载也是同样。rmmod pktgen

在安装完模块之后,会自动产生 /proc/net/pktgen 这样一个目录。其中会存在类似 kpktgend_0 这样的文件,这些文件对应了所在机器的逻辑核。而 pgctrl 则是控制程序。

简单样例

下面通过这个简单的脚本说明一下使用。

#!/bin/sh

# 函数用于设置参数
function pgset() {
	local result
	echo $1 > $PGDEV
	result=`cat $PGDEV | fgrep "Result: OK:"`
	if [ "$result" = "" ]; then
		cat $PGDEV | fgrep Result:
	fi
}

# 在 CPU 0 上绑定网卡 enp0s8
PGDEV=/proc/net/pktgen/kpktgend_0
echo "Removing all devices"
pgset "rem_device_all"
echo "Adding enp0s8"
pgset "add_device enp0s8"
echo "Setting max_before_softirq 10000"
pgset "max_before_softirq 10000"

# 为网卡 enp0s8 设置各种参数。包括发包数量,包大小,延迟,目标 IP,目标 mac 地址等。
# COUNT 0 means forever
COUNT="count 100000"
CLONE_SKB="clone_skb 000000"
# NIC adds 4 bytes CRC
PKT_SIZE="pkt_size 64"
# delay is inter packet gap. 0 means maximum speed.
delay="delay 0"

PGDEV=/proc/net/pktgen/enp0s8
echo "Configuring $PGDEV"
pgset "$COUNT"
pgset "$CLONE_SKB"
pgset "$PKT_SIZE"
pgset "$delay"
pgset "dst 10.10.11.2"
pgset "dst_mac 08:00:27:f7:55:35"

# 运行程序
PGDEV=/proc/net/pktgen/pgctrl
echo "Running... ctrl^C to stop"
pgset "start"
echo "Done"

运行结果会在 /proc/net/pktgen/enp0s8 中:

Params: count 100000  min_pkt_size: 64  max_pkt_size: 64
     frags: 0  delay: 0  clone_skb: 0  ifname: enp0s8
     flows: 0 flowlen: 0
     queue_map_min: 0  queue_map_max: 0
     dst_min: 10.10.11.2  dst_max:
     src_min:   src_max:
     src_mac: 08:00:27:8c:20:01 dst_mac: 08:00:27:f7:55:35
     udp_src_min: 9  udp_src_max: 9  udp_dst_min: 9  udp_dst_max: 9
     src_mac_count: 0  dst_mac_count: 0
     Flags:
Current:
     pkts-sofar: 100000  errors: 0
     started: 1725189480us  stopped: 1738624191us idle: 275397us
     seq_num: 100001  cur_dst_mac_offset: 0  cur_src_mac_offset: 0
     cur_saddr: 0.0.0.0  cur_daddr: 10.10.11.2
     cur_udp_dst: 9  cur_udp_src: 9
     cur_queue_map: 0
     flows: 0
Result: OK: 13434711(c13159314+d275397) usec, 100000 (64byte,0frags)
  7443pps 3Mb/sec (3810816bps) errors:

标签:src,pgset,max,dst,mac,使用,pktgen,小记
来源: https://www.cnblogs.com/snowInPluto/p/15044995.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有