xref: /aosp_15_r20/external/iputils/doc/pg3.sgml (revision bd1f8aeb6080fa6544ec30aeca3eb4da100f359f)
1*bd1f8aebSAndroid Build Coastguard Worker<refentry id="pg3">
2*bd1f8aebSAndroid Build Coastguard Worker
3*bd1f8aebSAndroid Build Coastguard Worker<refmeta>
4*bd1f8aebSAndroid Build Coastguard Worker<refentrytitle>pg3</refentrytitle>
5*bd1f8aebSAndroid Build Coastguard Worker<manvolnum>8</manvolnum>
6*bd1f8aebSAndroid Build Coastguard Worker<refmiscinfo>iputils-&snapshot;</refmiscinfo>
7*bd1f8aebSAndroid Build Coastguard Worker</refmeta>
8*bd1f8aebSAndroid Build Coastguard Worker
9*bd1f8aebSAndroid Build Coastguard Worker
10*bd1f8aebSAndroid Build Coastguard Worker<refnamediv>
11*bd1f8aebSAndroid Build Coastguard Worker<refname>pg3, ipg, pgset</refname>
12*bd1f8aebSAndroid Build Coastguard Worker<refpurpose>send stream of UDP packets</refpurpose>
13*bd1f8aebSAndroid Build Coastguard Worker</refnamediv>
14*bd1f8aebSAndroid Build Coastguard Worker
15*bd1f8aebSAndroid Build Coastguard Worker<refsynopsisdiv>
16*bd1f8aebSAndroid Build Coastguard Worker<cmdsynopsis>
17*bd1f8aebSAndroid Build Coastguard Worker<command>source ipg</command>
18*bd1f8aebSAndroid Build Coastguard Worker</cmdsynopsis>
19*bd1f8aebSAndroid Build Coastguard Worker<cmdsynopsis>
20*bd1f8aebSAndroid Build Coastguard Worker<command>pg</command>
21*bd1f8aebSAndroid Build Coastguard Worker</cmdsynopsis>
22*bd1f8aebSAndroid Build Coastguard Worker<cmdsynopsis>
23*bd1f8aebSAndroid Build Coastguard Worker<command>pgset</command>
24*bd1f8aebSAndroid Build Coastguard Worker<arg choice="req"><replaceable/COMMAND/</arg>
25*bd1f8aebSAndroid Build Coastguard Worker</cmdsynopsis>
26*bd1f8aebSAndroid Build Coastguard Worker</refsynopsisdiv>
27*bd1f8aebSAndroid Build Coastguard Worker
28*bd1f8aebSAndroid Build Coastguard Worker<refsect1><title>DESCRIPTION</title>
29*bd1f8aebSAndroid Build Coastguard Worker<para>
30*bd1f8aebSAndroid Build Coastguard Worker<command/ipg/ is not a program, it is script which should be sourced
31*bd1f8aebSAndroid Build Coastguard Workerto <command/bash/. When sourced it loads module <filename/pg3/ and
32*bd1f8aebSAndroid Build Coastguard Workerexports a few of functions accessible from parent shell. These macros
33*bd1f8aebSAndroid Build Coastguard Workerare <command/pg/ to start packet injection and to get the results of run;
34*bd1f8aebSAndroid Build Coastguard Workerand <command/pgset/ to setup packet generator.
35*bd1f8aebSAndroid Build Coastguard Worker</para>
36*bd1f8aebSAndroid Build Coastguard Worker
37*bd1f8aebSAndroid Build Coastguard Worker<para>
38*bd1f8aebSAndroid Build Coastguard Worker<command/pgset/ can send the following commands to module <filename/pg3/:
39*bd1f8aebSAndroid Build Coastguard Worker</para>
40*bd1f8aebSAndroid Build Coastguard Worker</refsect1>
41*bd1f8aebSAndroid Build Coastguard Worker
42*bd1f8aebSAndroid Build Coastguard Worker<refsect1><title>COMMAND</title>
43*bd1f8aebSAndroid Build Coastguard Worker
44*bd1f8aebSAndroid Build Coastguard Worker<variablelist>
45*bd1f8aebSAndroid Build Coastguard Worker
46*bd1f8aebSAndroid Build Coastguard Worker <varlistentry>
47*bd1f8aebSAndroid Build Coastguard Worker  <term><option>odev <replaceable/DEVICE/</option></term>
48*bd1f8aebSAndroid Build Coastguard Worker  <listitem><para>
49*bd1f8aebSAndroid Build Coastguard WorkerName of Ethernet device to test. See
50*bd1f8aebSAndroid Build Coastguard Worker<link linkend="pg3.warning">warning</link> below.
51*bd1f8aebSAndroid Build Coastguard Worker  </para></listitem>
52*bd1f8aebSAndroid Build Coastguard Worker </varlistentry>
53*bd1f8aebSAndroid Build Coastguard Worker
54*bd1f8aebSAndroid Build Coastguard Worker <varlistentry>
55*bd1f8aebSAndroid Build Coastguard Worker  <term><option>pkt_size <replaceable/BYTES/</option></term>
56*bd1f8aebSAndroid Build Coastguard Worker  <listitem><para>
57*bd1f8aebSAndroid Build Coastguard WorkerSize of packet to generate. The size includes all the headers: UDP, IP,
58*bd1f8aebSAndroid Build Coastguard WorkerMAC, but does not account for overhead internal to medium, i.e. FCS
59*bd1f8aebSAndroid Build Coastguard Workerand various paddings.
60*bd1f8aebSAndroid Build Coastguard Worker  </para></listitem>
61*bd1f8aebSAndroid Build Coastguard Worker </varlistentry>
62*bd1f8aebSAndroid Build Coastguard Worker
63*bd1f8aebSAndroid Build Coastguard Worker <varlistentry>
64*bd1f8aebSAndroid Build Coastguard Worker  <term><option>frags <replaceable/NUMBER/</option></term>
65*bd1f8aebSAndroid Build Coastguard Worker  <listitem><para>
66*bd1f8aebSAndroid Build Coastguard WorkerEach packet will contain <replaceable/NUMBER/ of fragments.
67*bd1f8aebSAndroid Build Coastguard WorkerMaximal amount for linux-2.4 is 6. Far not all the devices support
68*bd1f8aebSAndroid Build Coastguard Workerfragmented buffers.
69*bd1f8aebSAndroid Build Coastguard Worker  </para></listitem>
70*bd1f8aebSAndroid Build Coastguard Worker </varlistentry>
71*bd1f8aebSAndroid Build Coastguard Worker
72*bd1f8aebSAndroid Build Coastguard Worker <varlistentry>
73*bd1f8aebSAndroid Build Coastguard Worker  <term><option>count <replaceable/NUMBER/</option></term>
74*bd1f8aebSAndroid Build Coastguard Worker  <listitem><para>
75*bd1f8aebSAndroid Build Coastguard WorkerSend stream of <replaceable/NUMBER/ of packets and stop after this.
76*bd1f8aebSAndroid Build Coastguard Worker  </para></listitem>
77*bd1f8aebSAndroid Build Coastguard Worker </varlistentry>
78*bd1f8aebSAndroid Build Coastguard Worker
79*bd1f8aebSAndroid Build Coastguard Worker <varlistentry>
80*bd1f8aebSAndroid Build Coastguard Worker  <term><option>ipg <replaceable/TIME/</option></term>
81*bd1f8aebSAndroid Build Coastguard Worker  <listitem><para>
82*bd1f8aebSAndroid Build Coastguard WorkerIntroduce artificial delay between packets of <replaceable/TIME/
83*bd1f8aebSAndroid Build Coastguard Workermicroseconds.
84*bd1f8aebSAndroid Build Coastguard Worker  </para></listitem>
85*bd1f8aebSAndroid Build Coastguard Worker </varlistentry>
86*bd1f8aebSAndroid Build Coastguard Worker
87*bd1f8aebSAndroid Build Coastguard Worker <varlistentry>
88*bd1f8aebSAndroid Build Coastguard Worker  <term><option>dst <replaceable/IP_ADDRESS/</option></term>
89*bd1f8aebSAndroid Build Coastguard Worker  <listitem><para>
90*bd1f8aebSAndroid Build Coastguard WorkerSelect IP destination where the stream is sent to.
91*bd1f8aebSAndroid Build Coastguard WorkerBeware, never set this address at random. <command/pg3/ is not a toy,
92*bd1f8aebSAndroid Build Coastguard Workerit creates really tough stream. Default value is 0.0.0.0.
93*bd1f8aebSAndroid Build Coastguard Worker  </para></listitem>
94*bd1f8aebSAndroid Build Coastguard Worker </varlistentry>
95*bd1f8aebSAndroid Build Coastguard Worker
96*bd1f8aebSAndroid Build Coastguard Worker <varlistentry>
97*bd1f8aebSAndroid Build Coastguard Worker  <term><option>dst <replaceable/MAC_ADDRESS/</option></term>
98*bd1f8aebSAndroid Build Coastguard Worker  <listitem><para>
99*bd1f8aebSAndroid Build Coastguard WorkerSelect MAC destination where the stream is sent to.
100*bd1f8aebSAndroid Build Coastguard WorkerDefault value is 00:00:00:00:00:00 in hope that this will not be received
101*bd1f8aebSAndroid Build Coastguard Workerby any node on LAN.
102*bd1f8aebSAndroid Build Coastguard Worker  </para></listitem>
103*bd1f8aebSAndroid Build Coastguard Worker </varlistentry>
104*bd1f8aebSAndroid Build Coastguard Worker
105*bd1f8aebSAndroid Build Coastguard Worker <varlistentry>
106*bd1f8aebSAndroid Build Coastguard Worker  <term><option>stop</option></term>
107*bd1f8aebSAndroid Build Coastguard Worker  <listitem><para>
108*bd1f8aebSAndroid Build Coastguard WorkerAbort packet injection.
109*bd1f8aebSAndroid Build Coastguard Worker  </para></listitem>
110*bd1f8aebSAndroid Build Coastguard Worker </varlistentry>
111*bd1f8aebSAndroid Build Coastguard Worker
112*bd1f8aebSAndroid Build Coastguard Worker</variablelist>
113*bd1f8aebSAndroid Build Coastguard Worker</refsect1>
114*bd1f8aebSAndroid Build Coastguard Worker
115*bd1f8aebSAndroid Build Coastguard Worker<refsect1 id="pg3.warning"><title>WARNING</title>
116*bd1f8aebSAndroid Build Coastguard Worker<para>
117*bd1f8aebSAndroid Build Coastguard WorkerWhen output device is set to some random device different
118*bd1f8aebSAndroid Build Coastguard Workerof hardware Ethernet device, <command/pg3/ will crash kernel.
119*bd1f8aebSAndroid Build Coastguard Worker</para>
120*bd1f8aebSAndroid Build Coastguard Worker<para>
121*bd1f8aebSAndroid Build Coastguard WorkerDo not use it on VLAN, ethertap, VTUN and other devices,
122*bd1f8aebSAndroid Build Coastguard Workerwhich emulate Ethernet not being real Ethernet in fact.
123*bd1f8aebSAndroid Build Coastguard Worker</para>
124*bd1f8aebSAndroid Build Coastguard Worker</refsect1>
125*bd1f8aebSAndroid Build Coastguard Worker
126*bd1f8aebSAndroid Build Coastguard Worker<refsect1><title>AUTHOR</title>
127*bd1f8aebSAndroid Build Coastguard Worker<para>
128*bd1f8aebSAndroid Build Coastguard Worker<command/pg3/ was written by <ulink url="mailto:[email protected]">
129*bd1f8aebSAndroid Build Coastguard WorkerRobert Olsson &lt;[email protected]&gt;</ulink>.
130*bd1f8aebSAndroid Build Coastguard Worker</para>
131*bd1f8aebSAndroid Build Coastguard Worker</refsect1>
132*bd1f8aebSAndroid Build Coastguard Worker
133*bd1f8aebSAndroid Build Coastguard Worker<refsect1><title>SECURITY</title>
134*bd1f8aebSAndroid Build Coastguard Worker<para>
135*bd1f8aebSAndroid Build Coastguard WorkerThis can be used only by superuser.
136*bd1f8aebSAndroid Build Coastguard Worker</para>
137*bd1f8aebSAndroid Build Coastguard Worker<para>
138*bd1f8aebSAndroid Build Coastguard WorkerThis tool creates floods of packets which is unlikely to be handled
139*bd1f8aebSAndroid Build Coastguard Workereven by high-end machines. For example, it saturates gigabit link with
140*bd1f8aebSAndroid Build Coastguard Worker60 byte packets when used with Intel's e1000. In face of such stream
141*bd1f8aebSAndroid Build Coastguard Workerswitches, routers and end hosts may deadlock, crash, explode.
142*bd1f8aebSAndroid Build Coastguard WorkerUse only in test lab environment.
143*bd1f8aebSAndroid Build Coastguard Worker</para>
144*bd1f8aebSAndroid Build Coastguard Worker</refsect1>
145*bd1f8aebSAndroid Build Coastguard Worker
146*bd1f8aebSAndroid Build Coastguard Worker<refsect1><title>AVAILABILITY</title>
147*bd1f8aebSAndroid Build Coastguard Worker<para>
148*bd1f8aebSAndroid Build Coastguard Worker<command/pg3/ is part of <filename/iputils/ package
149*bd1f8aebSAndroid Build Coastguard Workerand the latest versions are  available in source form at
150*bd1f8aebSAndroid Build Coastguard Worker<ulink url="http://www.skbuff.net/iputils/iputils-current.tar.bz2">
151*bd1f8aebSAndroid Build Coastguard Workerhttp://www.skbuff.net/iputils/iputils-current.tar.bz2</ulink>.
152*bd1f8aebSAndroid Build Coastguard Worker</para>
153*bd1f8aebSAndroid Build Coastguard Worker</refsect1>
154*bd1f8aebSAndroid Build Coastguard Worker
155*bd1f8aebSAndroid Build Coastguard Worker<![IGNORE[
156*bd1f8aebSAndroid Build Coastguard Worker<refsect1><title>COPYING</title>
157*bd1f8aebSAndroid Build Coastguard Worker<para>
158*bd1f8aebSAndroid Build Coastguard Worker<literallayout>
159*bd1f8aebSAndroid Build Coastguard WorkerThis documentation is free software; you can redistribute
160*bd1f8aebSAndroid Build Coastguard Workerit and/or modify it under the terms of the GNU General Public
161*bd1f8aebSAndroid Build Coastguard WorkerLicense Version 2.
162*bd1f8aebSAndroid Build Coastguard Worker
163*bd1f8aebSAndroid Build Coastguard WorkerThis program is distributed in the hope that it will be
164*bd1f8aebSAndroid Build Coastguard Workeruseful, but WITHOUT ANY WARRANTY; without even the implied
165*bd1f8aebSAndroid Build Coastguard Workerwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
166*bd1f8aebSAndroid Build Coastguard WorkerSee the GNU General Public License for more details.
167*bd1f8aebSAndroid Build Coastguard Worker
168*bd1f8aebSAndroid Build Coastguard WorkerFor more details see the file COPYING in the source
169*bd1f8aebSAndroid Build Coastguard Workerdistribution of Linux kernel of version 2.4.
170*bd1f8aebSAndroid Build Coastguard Worker</literallayout>
171*bd1f8aebSAndroid Build Coastguard Worker</para>
172*bd1f8aebSAndroid Build Coastguard Worker</refsect1>
173*bd1f8aebSAndroid Build Coastguard Worker]]>
174*bd1f8aebSAndroid Build Coastguard Worker
175*bd1f8aebSAndroid Build Coastguard Worker</refentry>
176