linux内核pktgen用法

 

pktgen是内核的一个模块,用来发送大量的报文,由于pktgen工作在内核状态下,因此,pktgen可以具有很高的发报效率。

在开发测试底层网卡性能时,通常需要使用smartbits等专业测试工具来测试,但smartbits通常都非常昂贵,不是一般小公司或个人可以负担,这时,你可以使用pktgen来做近似的测试。

 

使用pktgen,首先需要加载pktgen模块,如果你的内核没有把pktgen编译进内核,或编译成模块,你需要重新编译内核。pktgen在内核的network下。

modprobe pktgen

pktgen使用脚本来控制发报的行为和方式,主要的控制项有以下一些参数:

cpu,用于发送报文的cpu与发送网卡之间的关系

网卡,用于发送报文的网卡,可以有多个

发送报文数

发送延迟

报文大小

通常,我们使用64byte的报文进行测试,这样,现在一般的xeon四核 2.33G服务器可发送到120万左右的速度,接近于线速148万pps(packets per second)

 

下面是我使用的pktgen脚本:

[shell]
#! /bin/sh

#modprobe pktgen

pgset() {
local result

echo $1 > $PGDEV

result=`cat $PGDEV | fgrep "Result: OK:"`
if [ "$result" = "" ]; then
cat $PGDEV | fgrep Result:
fi
}

pg() {
echo inject > $PGDEV
cat $PGDEV
}

# Config Start Here ————————————————

# thread config
# Each CPU has own thread. Two CPU exammple. We add eth3, eth2 respectivly.

PGDEV=/proc/net/pktgen/kpktgend_0
echo "Removing all devices"
pgset "rem_device_all"
echo "Adding eth3"
pgset "add_device eth3"
echo "Setting max_before_softirq 10000"
pgset "max_before_softirq 10000"

PGDEV=/proc/net/pktgen/kpktgend_1
echo "Removing all devices"
pgset "rem_device_all"
echo "Adding eth2"
pgset "add_device eth2"
echo "Setting max_before_softirq 10000"
pgset "max_before_softirq 10000"

# device config
# delay 0 means maximum speed.

CLONE_SKB="clone_skb 1000000"
# NIC adds 4 bytes CRC
PKT_SIZE="pkt_size 60"

# COUNT 0 means forever
#COUNT="count 0"
COUNT="count 0"
DELAY="delay 0"

PGDEV=/proc/net/pktgen/eth3
echo "Configuring $PGDEV"
pgset "$COUNT"
pgset "$CLONE_SKB"
pgset "$PKT_SIZE"
pgset "$DELAY"
pgset "dst 10.10.11.2"
pgset "dst_mac 00:04:23:08:91:dc"

PGDEV=/proc/net/pktgen/eth2
echo "Configuring $PGDEV"
pgset "$COUNT"
pgset "$CLONE_SKB"
pgset "$PKT_SIZE"
pgset "$DELAY"
pgset "dst 192.168.2.2"
pgset "dst_mac 00:04:23:08:91:de"

# Time to run
PGDEV=/proc/net/pktgen/pgctrl

echo "Running… ctrl^C to stop"
pgset "start"
echo "Done"

# Result can be vieved in /proc/net/pktgen/eth[3,2]

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值