---
name: "tgn"
section: "1"
platform: "linux"
package: "tgn"
version: "0.22-2"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/tgn"
---

# tgn(1)

a network traffic generator

## NAME

tgn - a network traffic generator

## SYNOPSIS

**tgn** \[**-V**\] \[**-v**\] \[**-l**\] \[**-s** *random seed*\] \[**-w** *PCAP filename*\] \[**-o** *output speaker*\] \[**-c** *packet count*\] \[**-h**\] \[*PDU definition*\]

## DESCRIPTION

**tgn** is a network traffic generator. It is command-line interface (CLI) program that does the same thing as the **send\_network** command of the **Network Expect** framework. Refer to [nexp(1)](/nexp/1.md) for additional details regarding the **send\_network** command.

The only mandatory option is a PDU definition.

The **-c** switch allows to specify the number of packets to send. If **-c** is not provided then the number of packets to send is calculated automatically based on the PDU definition.

**-V** causes **tgn** to print its version number and exit.

The **-s** flag allows to specify a random seed that will cause predicatibility of pseudo-random numbers generated by **tgn** during execution of a script. In cases where **tgn** is used as a protocol fuzzer, this option is useful to be able to re-generate a specific test case.

**-v** increases the verbosity level. Additional information may be displayed when the verbosity level is higher.

The **-l** flag causes **tgn** to display all available network speakers and exit. See [nexp(1)](/nexp/1.md) for a discussion of network speakers.

The **-o** flag allows to select a specific network speaker for output. Use the **-l** option to list available speakers. By default, the "ip" speaker (kernel-routed IP packet delivery) is tried first and if it is not available, which can happen if **tgn** is not run with root privileges, the "hex" speaker is used.

The PDU definition is a string that defines a PDU. It uses libpbuild PDU syntax.

## EXAMPLES

```
shell# tgn -o eth0 "ip(dst = 192.168.1.1)/icmp-echo(id = ´random´)"
```

```
shell# tgn "ip(src = 192.168.0.1, dst = <192.168.0.10, 192.168.0.11>,ttl = <1, 2>)/" \
"tcp(src = ´random´, dst = 22..25, window = 16384,syn, seq = ´random´, ack-seq = 0)"
```

```
shell# tgn -w /tmp/cap -c 5 "ether()/ip(dst = 1.2.3.4++)/icmp-echo(seq = 0++)" \
&& wireshark /tmp/cap
```

## BUGS

**tgn** has not been ported to Microsoft Windows.

## VERSION

This man page is correct for version 1.0 of **tgn**.

## SEE ALSO

nexp-numspec(1), nexp-payload(1), nexp-ether(5), nexp-gre(5), nexp-ip(5), nexp-mpls(5), [nexp(1)](/nexp/1.md)

## AUTHOR

**Network Expect** was written by Eloy Paris \<peloy@netexpect.org\>. However, **Network Expect** borrows ideas from lots of Open Source tools like Nemesis, Packit, hping, Expect, and Scapy. The **Network Expect** author is indebted to the authors of these tools for their contribution.

This man page was written by Eloy Paris.
