Menu

Home

Artyom Poptsov Yury Gorbachev

ClusterGen

ClusterGen is a traffic generator which uses pktgen Linux kernel module for packet generation. To reach high intensity of traffic, ClusterGen uses set of hosts that generate traffic at the same time.

Supported traffic model and parameters are determined by pktgen kernel module capabilities. ClusterGen is only responsible for interaction with kernel module.

Project was initially written and being developed by MERA.

It is distributed under GNU General Public License version 3 or (at your option) any later version.

Project documentation is licensed under the GNU Free Documentation License, version 1.3 or later.



Overview

ClusterGen contains two parts:

  • daemon (pktd) written in C for communicating directly with kernel pktgen module on a host, and
  • graphical user interface written in Java which is used for configuring cluster, controlling traffic and collecting statistics.

Here is architecture of the ClusterGen:

ClusterGen architecture

pktd interacts with pktgen through procfs file system. It doesn't do any processing of data. Instead all work is done on the control host, where ClusterGen is running.

There are no authorization mechanisms in pktd so far - any connection is considered as valid, so you should care about security.

See the [User Manual] for information about installation and usage.

Very short description of the pktgen

pktgen is a module for the Linux kernel which allows to generate traffic with high intensity. pktgen uses UDP protocol because it has smaller overhead than TCP. If destination port isn't configured, pktgen uses port number 9 (discard port). procfs is used to control it and getting statistics.

If destination IP isn't configured, pktgen will use localhost as destination. In this case generated packets won't go out into real network.

Further reading:

Examples of usage scenarios

Scenario 1: Testing of a switch

In this scenario, SUT is placed between cluster and target, and serve incoming traffic:

Scenario 1

Obviously this scenario can be used for testing switches, but also the part of a computer network can be placed here as a SUT.

Scenario 2: Testing of a driver

In this scenario, target and SUT are the same entity:

Scenario 2

There is a switch between SUT and cluster, that does merge of several traffic flows into one, which is sent to SUT. It allows to reach significant traffic intensity (1Gbit/s or more) by using cheap Linux hosts with 100Mbit Ethernet cards.


Related

Wiki: User Manual