1#!/bin/bash 2 3#modprobe pktgen 4 5 6function pgset() { 7 local result 8 9 echo $1 > $PGDEV 10 11 result=`cat $PGDEV | fgrep "Result: OK:"` 12 if [ "$result" = "" ]; then 13 cat $PGDEV | fgrep Result: 14 fi 15} 16 17# Config Start Here ----------------------------------------------------------- 18 19 20# thread config 21# Each CPU has its own thread. One CPU example. We add eth1. 22 23PGDEV=/proc/net/pktgen/kpktgend_0 24 echo "Removing all devices" 25 pgset "rem_device_all" 26 echo "Adding eth1" 27 pgset "add_device eth1" 28 29 30# device config 31# delay 0 32# We need to do alloc for every skb since we cannot clone here. 33 34CLONE_SKB="clone_skb 0" 35# NIC adds 4 bytes CRC 36PKT_SIZE="pkt_size 60" 37 38# COUNT 0 means forever 39#COUNT="count 0" 40COUNT="count 10000000" 41DELAY="delay 0" 42 43PGDEV=/proc/net/pktgen/eth1 44 echo "Configuring $PGDEV" 45 pgset "$COUNT" 46 pgset "$CLONE_SKB" 47 pgset "$PKT_SIZE" 48 pgset "$DELAY" 49 # Random address with in the min-max range 50 pgset "flag IPDST_RND" 51 pgset "dst_min 10.0.0.0" 52 pgset "dst_max 10.255.255.255" 53 54 # 8k Concurrent flows at 4 pkts 55 pgset "flows 8192" 56 pgset "flowlen 4" 57 58 pgset "dst_mac 00:04:23:08:91:dc" 59 60# Time to run 61PGDEV=/proc/net/pktgen/pgctrl 62 63 echo "Running... ctrl^C to stop" 64 trap true INT 65 pgset "start" 66 echo "Done" 67 cat /proc/net/pktgen/eth1 68