Talk: "Deterministic network emulation using KauNetEm" (Per Hurtig & Johan Garcia)


The netem qdisc has, for a long time, been the basic building block for network emulation in Linux. While netem supports many emulation effects, there is still room for improvements. KauNetEm is an extension to netem that provides per-packet, or per-millisecond, control over emulation effects. This results in a high level of control and repeatability which can be useful in a variety of performance evaluation, and protocol implementation verification, scenarios. To control what effects, and when to apply them, KauNetEm makes use of emulation patterns.

These patterns are created ahead of time using a helper program that supports both the creation of random but repeatable patterns, and the input of lists of effects and the packets to apply them to. These lists may for example be hand-crafted to examine a particular protocol aspect, or come from various other sources. The current KauNetEm Linux implementation provides deterministic control of loss, delay, rate, bit-error, duplication and reordering emulation effects. This talk outlines and demonstrates KauNetEm's features, why they are important, and the plans going forward.