I'd like to start exploring QoS, and lower level optimizations for things like broadcasts/multicasts within my home lab. I've looked around for ways to generate traffic to and from a box, but haven't found anything to really max out what a given port can handle to really see the effects of QoS etc.

I'd love to be able to watch in real time via PRTG or some other monitoring tool - a maxed out line or a busy line(s) before implementing QoS and then be able to see the change in real time.

What tools are availableto assist with these tasks?

  • 3
    This isn't a great question because it is too open ended and there are far too many possibilities (you could simply FTP a very large file if you wanted). This leads to no real answers but more of a list of products that isn't what SE is looking for on their sites. The question would have to be more specific to limit the options available.
    – YLearn
    May 28, 2013 at 18:27

10 Answers 10


You can use iperf2 or iperf3 to help generate some traffic. There are quite a few options included that will allow you to accomplish some nice traffic classification.

You might also check out scapy - specifically a packet former utility. Allows you to define values on each field to get really granular with how traffic is being formed and sent.

In my lab, I have two virtual machines at opposite ends of a physical network. I use both tools I mentioned to send traffic between the virtual machines, but that traffic goes through my lab topology of Cisco routers/switches/firewalls. This way I can have a reliable flow of traffic that I define ahead of time per the lab scenario.

  • 1
    Throw WANEM into the mix to add all sorts of jitter to see how your QoS policies are holding up: wanem.sourceforge.net
    – mellowd
    May 28, 2013 at 18:41
  • 6
    FYI, scapy is great for low-throughput test scenarios... however, its packet slinging / reading code is terribly slow and AFAIK, you get no warning that packets were dropped inside scapy. iperf has decent speeds, but if you want truly high throughput (for free), you need to use a linux kernel module such as pktgen May 28, 2013 at 18:52
  • This is great information guys - thanks so much for your feedback, it will obviously take time to put all of these into practice, but I think I've got a really great list to work from!
    – A L
    May 28, 2013 at 19:02
  • with nutTCP you can alson test on QoS
    – Bulki
    May 28, 2013 at 19:52

I have also used netperf in some situations. It seems to perform better with UDP-tests.


If you are looking to max out line rate traffic such as a GigE port, look at netsniff-ng toolkit or the Linux kernel module pktgen. I personally used pktgen on a mid range commodity server and was able to push GigE speeds with ease.


Short and sweet: use tcpdump to record and make sure you have enough space to store the PCAP. Then, use tcpreplay (http://tcpreplay.synfin.net/) to play it back.

To get a PCAP with real traffic, you could ask your colleagues politely to allow you to record all of their traffic one day for just an hour (or until the pcap is X-GB in size). If you're at work, hopefully there won't be a huge objection to it since it should be work-related stuff and your company owns the network, etc. Offer to destroy all DHCP leases, spoof mac-addresses, and change hostnames if anybody is unsure about what you might see so you can't track it down later. Whatever.

If nothing else, get real traffic from your home network using tcpdump.


We use Ixia IxChariot for this use. It's a widely used commercial product and can definitely do what you're looking for.


I've used Ixia IxChariot in the past and found that the only benefits were that it ran on Windows and produced slick looking reports that were effectively meaningless, but made management types happy to see.

Personally, I'd rather conserve my budget and use iperf.


Hyenae is a highly flexible platform independent network packet generator. It allows you to reproduce several MITM, DoS and DDoS attack scenarios, comes with a clusterable remote daemon and an interactive attack assistant.

There are some options you can play with, send delay range, TCP window size etc. IPv6 supported. It can generate 100K+ pps.


Netperf and scapy are good options if you looking for a simple open-source solution. If you need more complete you would consider agilent N2x and Spirent.


an additional option is ostinato. it has many of the features of ixia/spirent and can be deployed in a manager+drone mode of operation and has a GUI and python interface. it's also capable of doing PCAP replays which is surprisingly handy.

cisco's packaged this as part of their VIRL toolkit for a while as well.


Etherate enables you to test QoS down to layer 2 directly over Ethernet.

Using it you can generate layer 2 Ethernet traffic in a controlled manner which you can measure.

You can specify traffic flow duration, frame size, bits per second / bytes per second, total bytes to transfer, ethertype, VLAN ID, and PCP value. You can also ACK the layer 2 frames if you want to test loss down at layer 2.

When the test is complete the Rx host displays a count of test frames received, non-test frames received, test frames received in order and test frames received out of order (early or late).

You should be able to get some helpful information from all of that!


Not the answer you're looking for? Browse other questions tagged or ask your own question.