Packet Generator User Guide
V0.1
Based on DeanSys Pktgen-0.0.4
dean@deansys.com
www.deansys.com, Oct.20,2006
Chapter 3. Command description
Chapter 4. Global Mode Commands
4.6.4
Show Packet Counter Command
Chapter 5. Build Mode Commands
Chapter 6. Configuration Mode
Commands
User Interface (UI) of this packet
generator is designed following the format of switch. User can type in commands
in the same way what they are doing on the switch. They can type ‘?’ anywhere
to get help messages about the commands, can type ‘tab’ to complete the rest
command automatically. And it offers auto-building functions that they can
build well known protocol packets with some parameters automatically. User also
can set the raw packets with different configuration file with a simple command.
It can only work under UNIX/Linux system.
Redhat Linux 9.0 is the best choice. And Redhat Linux ES/AS version is also
acceptable. Make sure that you have got one Ethernet interface card at least.
Multi users can use this packets generator
at the same time. And the multi processed function is not supported in this
version right now. More function will be available in the next version. The current version of DeanSys packet generator and analysis
is v0.0.4.
This is a temporary version of CLI Specification.
More details will be available in the next version. Please send mail to me if
you have found some bugs or have some suggestion. My mail box is dean@deansys.com .
Copyright is an old topic. Everyone is
permitted to copy and distribute verbatim copies of this document, but changing
it is not allowed.
Design different system solutions for
different usages.
Go
to our website www.deansys.com and download the tar ball from our website
and type the following command on your linux system to install it:
[root@DeanOS
main]#tar –xzvf pktgen-X.X.X.tar.gz
Then
it is available for you.
We
recommend the system as following description:
Item |
Requirement |
Best
Choice |
CPU |
1GHz |
>2.0G |
Memory |
256M |
>512M |
Disk |
20M |
>50M |
NIC |
10M/100M |
10M/100M/1000M |
|
|
|
OS |
Unix/Linux |
Linux-2.4.31 |
|
|
|
(1).
Select the packet type you want.
A.
Raw packet from configuration file.
B.
Well-known protocols with the packet building function.
(2).
Set the interface name, number of packet and pause time between packets. Or
just skip them to keep the default.
(3).
Send the packets.
(4).
Check the result.
The
first and second steps can be exchanged with each other. You decide the order.
Note: You must be able to access the interface! ‘root’ is the recommend
user group.
There are three modes in the packet
generator at now. They are
1. global mode
2. configuration mode
3. build mode.
Global mode contains the basic
commands for packet generator, such like ‘show’ to show current system status,
‘send’ to send packet out and other commands to change modes such as
‘configure’.
Configuration mode contains all
the commands to make system settings. You can set the packets number, length
and pause time between packets. You also can select which network interface
card you want to use.
Build mode contains all the
function to build a well-known protocol packet such as ‘OSPF HELLO’. Packet
also can be built up with a defined configuration file. What you need to do is
to make your choice and type the right commands into system.
All the commands can be listed by
typing ‘?’ or ‘help’. And all the commands can be completed automatically by
type ‘tab’. Short and uncompleted commands are also available.
Colors will be used to make the messages
more easy-reading.
Error and warning messages will be printed
with red color.
Status and help messages will use green or yellow.
Run the program and you will enter into the global
mode:
[root@DeanOS main]# ./pktgen
pktgen#
Global mode contains the basic commands of this packet
generator.
Type ‘?’ to get the command list
as :
pktgen#?
build Change to build
mode to build packet automatically.
clear Clear the data
value in buffer.
configure Change to configure mode to modify the
settings.
edit Edit the
data value in buffer.
end Back to
global mode automatically.
exit Exit
current mode and down to previous mode
help Print
command help messages.
list
Print command list
send Send the
packet in buffer.
show Show
information.
pktgen#
Type ‘list’ to get command list:
pktgen#list
build
clear
configure
edit [0-1517] [0-0xff]
end
exit
help
list
send
show buffer
show interface [IFNAME]
show netstat
show packet counter [IFNAME]
show router
show system
show version
pktgen#
Following is
the table of commands description.
Table 1
Command |
Description |
Build |
Change
into build mode to build the well-known type of packets with the help of this
packet generator. |
clear |
Clear
the data value in buffer. Set the buffer to zero. |
configure |
Change
into the configuration mode to configure the parameters of this packet
generator. The parameters will contains: 1.
Number of packet 2.
Length of packet 3.
Pause time between packets 4.
Interface name |
edit |
Edit
the data of the packet in buffer. |
end |
Back
to global mode. |
exit |
Logoff
from packet generator. |
help |
Get
help message about commands |
list |
Print
command list. |
send |
Send
the packet in buffer with assured interface, number, length and data. |
show |
Show
packet generator status information. |
? |
Same
with help. Get help message about commands |
‘\t’ |
Complete
the command. |
Type ‘build’ to enable build mode. Then
you will get the commands to build a well-known protocol packet.
pktgen#build
Enter to
build mode!
pktgen(build)#
This command is used to reset the
value in buffer. The default value is zero.
pktgen#clear
Clear the data
in buffer.
pktgen#
Type config to enable configuration mode.
pktgen#configure
Enter to config mode!
pktgen(config)#
Type ‘edit [0-1517] [0-0xff]’
to modify the value in buffer. You can use ‘show’ first to verify the value in
buffer. The packet units is from 0 to 1517
pktgen#edit ?
[0-1517] Position in buffer.
pktgen#edit 0 ?
[0-0xff] The value you want to set.
pktgen#edit 0 aa ?
<cr>
pktgen#edit 0 aa
pktgen#
Type ‘send’ command to send the packet in
buffer with the configuration value.
pktgen#send
Packet Number :1 Length :60 Device :eth0
Wrote 60 bytes packet; check the
wire.
‘show ’ command is used to show the packet
generator status. It contains data in buffer, configuration values and system
status.
pktgen#show ?
buffer
Show buffer information.
interface Interface
status and configuration
netstat
Network status and configuration
packet
Packet status and configuration
router
Local router status and configuration
system
Displays system status
version Displays
pktgen version
pktgen#
This command is used to
check the data in buffer. The size of content depends on the length of packet.
pktgen#show buffer
Packet Generator Status:
Device: eth0, Length: 60 byte, Number: 1, Pause: 0 s
Data from Configuration file.
aa 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00
00 00 00
pktgen#
This command is used to show network interface cards status on this system.
pktgen#show
interface ?
[IFNAME] Inteface name
pktgen#show
interface
eth0 Link
encap:Ethernet HWaddr
00:0C:29:43:5F:A0
inet addr:192.168.110.98
Bcast:192.168.110.255
Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST
MTU:1500 Metric:1
RX packets:59754 errors:0 dropped:0 overruns:0 frame:0
TX packets:5927 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:6085464 (5.8 Mb) TX
bytes:2995771 (2.8 Mb)
Interrupt:10 Base address:0x1080
eth1 Link
encap:Ethernet HWaddr
00:0C:29:43:5F:AA
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
txqueuelen:100
RX bytes:728 (728.0 b) TX
bytes:0 (0.0 b)
Interrupt:9 Base address:0x1400
lo Link
encap:Local Loopback
inet addr:127.0.0.1
Mask:255.0.0.0
UP LOOPBACK RUNNING
MTU:16436 Metric:1
RX packets:34 errors:0 dropped:0 overruns:0 frame:0
TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4196 (4.0 Kb) TX
bytes:4196 (4.0 Kb)
pktgen#
This command is used to show network status on this system.
pktgen#show
netstat
Active Internet
connections (servers and established)
Proto Recv-Q
Send-Q Local Address
Foreign Address
State
tcp
0 0
*:32768
*:*
LISTEN
tcp
0 0
DeanOS:32769
*:*
LISTEN
tcp
0 0
*:cvspserver
*:*
LISTEN
tcp
0 0
*:sunrpc
*:*
LISTEN
tcp
0 0
*:ftp
*:*
LISTEN
tcp
0 0
*:ssh
*:*
LISTEN
tcp
0 0
DeanOS:ipp
*:*
LISTEN
tcp
0 0
DeanOS:smtp
*:*
LISTEN
tcp
0 0
192.168.110.98:ssh
dean:3949
ESTABLISHED
tcp 0 0 192.168.110.98:ssh dean:3950 ESTABLISHED
udp
0 0
*:32768
*:*
udp
0 0
*:906
*:*
udp
0 0
*:sunrpc
*:*
udp
0 0
*:631
*:*
Active UNIX domain
sockets (servers and established)
Proto RefCnt
Flags
Type
State
I-Node Path
unix 10 [ ]
DGRAM
1297 /dev/log
unix 2 [ ACC ] STREAM LISTENING 1827 /dev/gpmctl
unix 2 [ ACC ] STREAM LISTENING 1957 /tmp/.font-unix/fs7100
unix 2 [ ]
DGRAM
2007
unix 2 [ ]
DGRAM
1838
unix 2 [ ]
DGRAM
1803
unix 2 [ ]
DGRAM
1789
unix 2 [ ]
DGRAM
1731
unix 2 [ ] DGRAM
1495
unix 2 [ ]
DGRAM
1347
unix 2 [ ]
DGRAM
1312
pktgen#
This command is used to check the packet counters on specified interface.
pktgen#show packet
?
counter Packet counter
pktgen#show packet
counter ?
[IFNAME] Interface name
pktgen#show packet
counter
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR
eth0 1500 0
60073
0
0
0 5962 0 0 0 BMRU
eth1 1500 0 5 0 0 0 0 0 0 0 BM
lo 16436 0 34 0 0 0 34 0 0 0 LRU
pktgen#show packet
counter
[IFNAME] Interface name
pktgen#
This command is used to show router information on system.
pktgen#show router
Kernel IP routing
table
Destination Gateway
Genmask
Flags Metric Ref
Use Iface
192.168.110.0 *
255.255.255.0 U 0 0 0
eth0
169.254.0.0 *
255.255.0.0
U 0 0 0
eth0
127.0.0.0 *
255.0.0.0
U 0 0 0 lo
default
gateway
0.0.0.0
UG 0 0 0
eth0
pktgen#
This command is used to check the
system status.
pktgen#show system
System status:
Interface: eth0
MAC address:
00:0c:29:43:5f:a0
IP address: 192.168.110.98
pktgen#
This command is used to get
version information.
pktgen#show
version
-----------------------------------------------
Packet
Generator Version Information
Name : Packet Generator 0.0.4
Author: Dean Ding
Date : July.25,2006
Note : Based on GNU Linux System
: www.DeanSys.com
-----------------------------------------------
pktgen#
Type ‘build’ to change to build mode. Then
you will get the commands to build well-known protocol packets.
pktgen#build
pktgen(build)#
Type ‘?’ to get commands help message:
pktgen(build)#
arp Build ARP packet
automatically.
bgp Build BGP4 packet
automatically.
cdp Build CDP packet
automatically.
dhcp Build DHCP packet automatically.
dns Build DNS packet
automatically.
dot1x Build Dot1x packet automatically.
end Back to global mode
automatically.
exit Exit current mode and down
to previous mode
gre Build GRE packet
automatically.
help Print command help messages.
icmp Build ICMP PING OF DEATH packet
automatically.
ieee Build IEEE802.2 packet
automatically.
igmp Build IGMP_MEMBERSHIP_QUERY packet
automatically.
isl Build ISL packet
automatically.
list Print command list
mpls Build MPLS packet automatically.
ospf Build OSPF packet
automatically.Type: IBI/MBIT/MSBIT.
pim Build PIM packet
automatically.
raw Build packet from
configuration file automatically.
rip Build RIP packet
automatically.
stp Build STP packet
automatically.
tcp Build TCP packet
automatically.
udp Build UDP packet
automatically.
pktgen(build)#
Type ‘list’ to get
command list:
pktgen(build)#list
arp
bgp hdr [A.B.C.D] [A.B.C.D] [type]
bgp notification [dest_ip] [src_ip]
[errcode] [subcode]
bgp open
bgp update [dest_ip] [src_ip]
[withdraw_rt] [update_attr] [update_info]
cdp [switchname]
dhcp
dns [dest_ip] [src_ip] [query] [type]
dot1x
end
exit
gre [dest_ip] [src_ip] [gre_dest_ip]
[gre_src_ip] [route_info]
help
icmp [dest]
ieee [dest_ip] [src_ip]
igmp [group_ip] [source_ip]
isl [dest_ip]
list
mpls [dest_ip] [dest_port] [src_ip]
[src_port]
ospf dbd [dest_ip] [src_ip] [type]
ospf hello [dest_ip] [src_ip]
[neighbor_ip]
ospf lsa [dest_ip] [src_ip]
pim hello [dest_ip] [src_ip]
raw
raw [filename]
rip [rip_add] [rip_netmask] [next_hop]
[dest_ip]
stp [dest_ip] [src_ip]
tcp [dest_ip] [dest_port] [src_ip]
[src_port]
udp [dest_ip] [dest_port] [src_ip]
[src_port]
pktgen(build)#
Table 2
Command |
Description |
arp |
Build
ARP packet. |
bgp |
Build
BGPv4 packet. (OPEN,
UPDATE, NOTIFICATION, KEEPALIVE) |
cdp |
Build
CDP packet. |
dhcp |
Build
DHCP packet. (REQUEST,
REPLY) |
dns |
Build
DNS packet. |
dot1x |
Build
802.1x EAP packet. (START,
LOGOFF, EAP PACKET) |
end |
Back
to global mode. |
exit |
Exit
to global mode. |
gre |
Build
GRE packet. |
help |
Print
command help message. |
icmp |
Build
ICMP packet. |
ieee |
Build
IEEE 802.2/802.3 packet |
isl |
Build
ISL packet. |
igmp |
Build
IGMP packet. (MEMBERSHIP_QUERY,
MEMBERSHIP_REPORT, LEAVE_GROUP) |
list |
Print
commands list. |
mpls |
Build
MPLS packet. |
ospf |
Build
OSPF packet. (HELLO,
UMD, LSA, DBD, LSR, LSU) |
pim |
Build
PIM packet |
raw |
Build
raw packets with configuration file. |
rip |
Build
RIP packet. (REQUEST,
RESPONSE, TRACEON, TRACEOFF,
POLL, POLLENTRY, MAX) |
stp |
Build
STP packet. |
tcp |
Build
TCP packet. |
udp |
Build
UDP packet. |
? |
Get
help message |
At right now
‘auto-building’ only supports few type packets comparing with all of the
Ethernet packets. More support will be available in the future. Please send
mail to dean@deansys.com when you find
any bugs and want to share your ideas with us.
Type in ‘ospf ?‘ in build mode, then you
will find the types of OSPF.
pktgen(build)#ospf ?
dbd OSPF DBD packet.
hello OSPF Hello packet.
lsa OSPF LSA packet.
pktgen(build)#
The OSPF command list is :
ospf dbd [dest_ip] [src_ip] [type]
ospf hello [dest_ip] [src_ip] [neighbor_ip]
ospf lsa [dest_ip] [src_ip]
The DBD type is :
IBI/MBIT/MSBIT
pktgen(build)#ospf
dbd ?
A.B.C.D Destination IP address.
pktgen(build)#ospf
dbd 192.168.110.1 ?
A.B.C.D Source IP address.
pktgen(build)#ospf
dbd 192.168.110.1 192.168.110.99 ?
[type] OSPF DBD type : IBI/MBIT/MSBIT.
pktgen(build)#ospf
dbd 192.168.110.1 192.168.110.99 ibi ?
<cr>
pktgen(build)#ospf
dbd 192.168.110.1 192.168.110.99 ibi
Src:192.168.110.99,
Dst:192.168.110.1,
pktgen(build)#
An expmale is:
pktgen(build)#ospf
hello 192.168.110.254 192.168.110.2 192.168.110.23
pktgen(build)#ospf
lsa ?
A.B.C.D Deastination IP address.
pktgen(build)#ospf
lsa 192.168.110.110 ?
A.B.C.D Source IP address.
pktgen(build)#ospf
lsa 192.168.110.110 192.168.110.99 ?
<cr>
pktgen(build)#ospf
lsa 192.168.110.110 192.168.110.99
pktgen(build)#
RIP command format is :
rip [rip_add] [rip_netmask] [next_hop]
[dest_ip]
pktgen(build)#rip
192.168.110.98 255.255.255.0 192.168.110.9 192.168.110.254
Type pim in build mode, then
you will be asked for source and destination IP address. It just support PIMv2
HELLO packet right now.
pktgen(build)# pim
hello 192.167.110.1 19.168.11.1
Type in raw command in build mode to select an existed
configuration file to load the packet data from. The default configuration file
is ‘packet.conf’. Default will be selected if you just type raw without any
parameter.
For example, if you want to use the default
configuration file, then just type ‘raw’:
pktgen(build)#raw
Select packet.conf as the
default config file.
If you want to use another file, just type ‘raw
filename’
pktgen(build)#raw test.conf
Select test.conf as the default config file.
Make sure the file you have selected is in the same fold and it should be filled with correct format. An example file will look like:
loada:ffffffffffff0001
02030405888e0101
loadb:0000000000000000
0000000000000000
loadc:0000000000000000
0000000000000000
loadd:0000000000000000
0000000000000000
loade:0000000000000000
0000000000000000
loadf:0000000000000000
0000000000000000
loadg:0000000000000000
0000000000000000
At present, the max length is 112 bytes. You can use
‘length’ command in configuration mode to modify the length. The default length
is 60 bytes. If you want to use lager packet, please tell me that. And I will
make it lager.
An example is:
pktgen(build)#igmp 224.0.0.1
192.168.110.1
Type in ‘config’ to change to
configuration mode to modify the configuration values. The configuration
options will be: number, length, interface and pause time. You can just skip
this step to keep the default value. The default value will be:
Interface eth0
Length 60bytes
Number 1
Pause time
0 second
Commands look like:
pktgen#config
Enter to config mode!
pktgen(config)#?
pktgen(config)#
end Back
to global mode automatically.
exit Exit
current mode and down to previous mode
help Print
command help messages.
interface Select interface to send packets.
length Set packet length.
list Print
command list
number Set packets number.
time Set pause
time between packets.
pktgen(config)#
Command list is :
pktgen(config)#list
end
exit
help
interface [eth0]
length [14-1518]
list
number [1-65535]
time [0-3600]
pktgen(config)#
Table 3
Command |
Description |
end |
Back to global
mode |
exit |
Back to global
mode |
help |
Get help message
about commands |
interface
<name> |
Select the
interface you want to use. |
number
<1-65535> |
Set the number
of packets |
length <16-1518> |
Set the length
of packet. |
list |
Get command list
message. |
Time
<0-3600> |
Value of seconds
between packets. ‘0’ means there
is no pause. |
? |
Get help
message. |
Type in interface command to
select a Network Interface Card (NIC) to send your packet. Default value is
eth0.
pktgen(config)#interface eth0
Device is eth0
pktgen(config)#
Make sure that the name of the card is correct.
Otherwise you will get error messages.
Type number command to set the number of packets you
want to build and send out. The range is 1 - 65535. Default value is 1.
pktgen(config)#number 10
Packet number is 10
pktgen(config)#
Type length command to set
the value of packet length. The range is 16-1518. Default value is 60.
pktgen(config)#length 64
Length is 64bytes
pktgen(config)#
Type time command to set the pause
seconds between every two packets. The range is 0-3600. Default value is 0 (no
pause).
pktgen(config)#time 1
Pause time is 1 second.
pktgen(config)#
This is an unfinished version. Extra details will be
added in the future. And if you have any suggestions or ideas, please share
them with me. My mail-box is dean@deansys.com
.
This version specification is based on packet
generator v0.0.4.
Thank for all the guys who
share me with their ideas and suggestions.
Design different system solutions for different
usages.