linux之pktgen用法学习

    xiaoxiao2025-07-19  7

    实验需要,最近看了一点pktgen的简单用法。

    首先激活pktgen内核模块。 root@××# modprobe pktgen

    查看pktgen信息

    root@××# modinfo pktgen filename:       /lib/modules/3.13.0-32-generic/kernel/net/core/pktgen.ko version:        2.74 license:        GPL 加载成功后,我们可以看一下pktgen线程是否在运行:

    root@SDN:/proc/net/pktgen# ps aux | grep pktgen root      3399  0.0  0.0  15952   932 pts/1    S+   09:13   0:00 grep --color=auto pktgen root     21782  0.0  0.0      0     0 ?        S     8月14   0:01 [kpktgend_0] root     21783  0.0  0.0      0     0 ?        S     8月14   0:01 [kpktgend_1]

    此时我们在内核文件中查看信息

    root@XX:/proc/net/pktgen# ls kpktgend_0  kpktgend_1  pgctrl

    对于文件kpktgend_X是内核线程,我的电脑是2核,所以只有两个文件0和1,pgctrl显示的是pktgen版本。

    下面是初次使用的心得。

    (我使用两台电脑eth0连接,在另一台电脑启动wireshark抓包)

    网上给出了很多脚本文件,都很不错,但是在接收方抓包时发现发送的包seq不会递增,不知道为什么?还有待下一步研究。下面贴出一个脚本。

    # thread config # Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. PGDEV=/proc/net/pktgen/kpktgend_0 echo "Removing all devices" pgset "rem_device_all" echo "Adding eth0" pgset "add_device eth0" echo "Setting max_before_softirq 10000" pgset "max_before_softirq 10000" # device config # ipg is inter packet gap. 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 10000000" IPG="ipg 0" PGDEV=/proc/net/pktgen/eth0 echo "Configuring $PGDEV" pgset "$COUNT" pgset "$CLONE_SKB" pgset "$PKT_SIZE" pgset "$IPG" pgset "dst 127.0.0.1" pgset "dst_mac ec:a8:6b:82:4e:69" # 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/eth0虽然可以实现发包,但是seq不会递增,而实验需要seq递增发包,所以下面的脚本可以实现seq的递增。

    #! /bin/bash echo "rem_device_all" > /proc/net/pktgen/kpktgend_0 echo "add_device eth0" > /proc/net/pktgen/kpktgend_0 echo "rx eth0" > /proc/net/pktgen/pgrx echo "pkt_size 1000" > /proc/net/pktgen/eth0 echo "count 1000" > /proc/net/pktgen/eth0 echo "delay 1000000000" > /proc/net/pktgen/eth0 echo "src 10.0.0.1" > /proc/net/pktgen/eth0 echo "dst 10.0.0.2" > /proc/net/pktgen/eth0 echo "start" > /proc/net/pktgen/pgctrl

    转载请注明原文地址: https://ju.6miu.com/read-1300846.html
    最新回复(0)