-
pktgen
的安装与使用
0
顶
0
踩
简单的
vim
配置
| Linux
如何在系统启动时自动加载内核
模块
2011-03-31
pktgen
的安装与使用
脚本
CC++
pktgen
的安装与使用
系统环境:
fefora core 12
< br>如果你和我
一样,
在
pktge
n
面前是个新人。
是不是也曾遇到下面的问题:
(
1
)以为
pktgen
和
tcpdu
mp
一样是
Linux
下的工具软件;
(
2
p>
)后来,明白了
pktgen
不是工具,而
是内核模块,但是
不知道如何加载;
(
3
)加载后,却不会使用,并且一度
一位
pktgen
无法与网
络接口
p>
eth0
建立映射关系;
那么,我写下的东西可能对你
学习
pktgen
有所帮助。
因为,
我也在
上搜了一同,
却
没有
很好的对于
pktgen
讲解的文档。
A
首先,
pktgen
是
Linux
下的一个内核模块,并不是工具软件。
所以,不能通
过在命令行输入
pktgen
的方式运行。
那么,我的系统
默认
pktgen
不是自动加载进内核,所以,如
果你和我有一样的情况,就需要自己手动添加
pktgen
< br>入内
核。
< br>查看
pktgen
是否在内核命令:
$$ lsmod | grep pktgen
加载<
/p>
pktgen
模块入内核的命令:
$$ modprobe pktgen
此时,就会
不禁想到,加载的模块文件到底在哪。我的系统位于
/lib/modules/
内核版本号
/kernel/
net/core/ B
加载成
功后,看看
< br>pktgen
模块的线程是不是已经运行了
(
更准确的
说,是不是处于
sleep
状态)
。
$$ ps
aux | grep pktgen
看到如
下内容,说明<
/p>
pktgen
的线程已经启动了。线程个数与
cpu
核
数相关,
本机
cpu
双核,
所以两个线程。
root
2061
0.0
0.0
0
0 ?
S<
Mar30
0:28
[kpktgend_0]
root
2062
0.0
0.0
0
0 ?
S<
Mar30
0:00 [kpktgend_1] C
然后,
上说可以检测
下面三个文件的信息来了解
pktgen /proc/net/pktgen/pgctrl
/proc/net/pktgen/kpktgend_X
/proc/net/pktgen/ethX
但是,
我发现自己主机中并没
有
< br>/proc/net/pktgen/ethX
(
X
p>
代表编号,
例如接口
eth0
或
eth1
)
。
此时,我以为是不是
pktgen
没有和网络接口
eth0
建立关系呢?难道是模块有问
题?
其
实,并不是这样,因为
pktgen
的运行需要脚本来驱
动。因为我运行了网上的实例脚本
-1-1
,
但是也
没有获得预期的结果。
p>
/proc/net/pktgen/ethX
还是不存在。一度认
为
pktgen.c
编码有
问题,
p>
因为我看到了本机中,
之有
eth0
网络接口。
命令如下:
$$ dmesg | grep pktgen
输出结果:
pktgen: no
such netdevice:
下载地址:
ftp:///pub/Linux/net-
development/pktgen-testing/exa
mples/ D
最后我终于发现,既不是源码
pktgen.c
的问题,也
不是
pktgen
模块的问题。
原因在于,
驱动脚本
-1
-1
中的网络接口配置与我的本机的不符所致。
-1-1
源码如下:
#! /bin/sh #modprobe pktgen
function pgset() {
local result
echo $$1 >
$$PGDEV
result=`cat
$$PGDEV | fgrep
if
[
cat $$PGDEV |
fgrep Result:
fi
} function pg() {
echo inject > $$PGDEV
cat $$PGDEV
} #
Config Start Here
---------------------
-------------------------------------- # thread
config
# Each CPU has own
thread. Two CPU exammple. We add eth1,
eth2 respectivly.
PGDEV=/proc/net/pktgen/kpktgend_0
echo
pgset
echo
pgset
#
就在这一句,
< br>默认的配置网络接
口为
eth1
,
但是我的本机并没有这个接口,
而是
eth0
。
所以,
应该自己手动修改。
echo
pgset
# delay 0 means maximum
speed. CLONE_SKB=
1000000
# NIC adds 4 bytes CRC
PKT_SIZE=
#COUNT=
COUNT=
DELAY=
echo
pgset
pgset
pgset
pgset
pgset
pgset
00:04:23:08:91:dc
PGDEV=/proc/net/pktgen/pgctrl echo
stop
pgset
echo
驱动脚本也有自己的一些
命令方式,或者语法。下面列出一
些规则:
同时,我自己也要进一步学习,也不是全懂。
** Pgcontrol
commands: start
stop ** Thread commands:
add_device
rem_device_all
max_before_softirq **
Device commands: count
clone_skb
debug
frags
delay src_mac_count
dst_mac_count pkt_size
min_pkt_size
max_pkt_size mpls udp_src_min
udp_src_max udp_dst_min
udp_dst_max flag
IPSRC_RND
TXSIZE_RND
-
-
-
-
-
-
-
-
-
上一篇:(完整版)三个遗传算法matlab程序实例
下一篇:matlab的常用指令及其含义