👥 4 conferences
🎤 5 talks
📅 Years active: 2016 to 2019
I'm a PhD student at Technical University of Munich where I research performance of software packet processing.
4 known conferences
Drivers are usually written in C for historical reasons, this can be bad if you want your driver to be safe and secure. We show that it is possible to write low-level drivers for PCIe devices in modern high-level languages. We are working on super-fast user space network drivers for the Intel 82599ES (ixgbe) 10 Gbit/s NIC in Rust, C#, go, OCaml, Haskell, Python, Swift, and a few more languages (WIP). All of our drivers are written from scratch and require no additional kernel code.
Check out our GitHub page with links to all implementations, performance measurements, and publications for further reading.
Supposedly modern user space drivers (e.g., DPDK or SPDK) are still being written in C in 2018 :(
This comes with all the well-known drawbacks of writing things in C that might be prevented by using safer programming languages. Also, did you ever see a kernel panic because a in-kernel driver did something stupid? It doesn't have to be that way, drivers should not be able to take down the whole system.
There are three steps to building better drivers:
We are showing that it is possible to achieve all of these goals for PCIe drivers on Linux by implementing user space network drivers in all of the aforementioned programming languages. Our techniques are transferable to other drivers that would benefit from more modern implementations.
Our drivers in Rust, C#, go, OCaml, and Swift are completely finished, tuned for performance, evaluated, and benchmarked (they are about 80-90% as fast as our user space C driver which is as fast as older versions of DPDK).
The main thing to take away from this talk is: writing drivers is neither scary nor hard. You can write one in your favorite programming language, so go ahead and try that :)
MoonGen is a scriptable high-speed packet generator suitable to test network devices or NFV deployments with millions of packets per second at rates of more than 10 Gbit/s. Each packet is crafted in real time by a user-defined Lua script to ensure the maximum possible flexibility to test complex scenarios. MoonGen is available as free and open source software on GitHub, a scientific paper describing it was published at the Internet Measurement Conference in October 2015.
MoonGen is a flexible high-speed packet generator. It can saturate 10 GbE links with minimum-sized packets while using only a single CPU core by running on top of the packet processing framework DPDK. Linear multi-core scaling allows for even higher rates: We have tested MoonGen with up to 178.5 Mpps at 120 Gbit/s. Moving the whole packet generation logic into user-controlled Lua scripts allows us to achieve the highest possible flexibility. In addition, we utilize hardware features of commodity NICs that have not been used for packet generators previously. A key feature is the measurement of latency with sub-microsecond precision and accuracy by using hardware timestamping capabilities of modern commodity NICs. We address timing issues with software-based packet generators and apply methods to mitigate them with both hardware support and with a novel method to control the inter-packet gap in software. Features that were previously only possible with hardware-based solutions are now provided by MoonGen on commodity hardware. MoonGen is available as free software under the MIT license in our git repository at https://github.com/emmericp/MoonGen.
MoonGen works with a user-defined Lua script that specifies the whole test by executing script code for each packet in real time. Support for packet reception allows rich tests that distinguish the throughput and latency of multiple different flows to evaluate QoS features.
One key feature is the precise and accurate measurement of latencies. MoonGen can timestamp thousands of packets per second, providing insights into the latency behavior of a system. Latency measurents are especially important in virtualized environments that are often plagued by bad worst-case behaviors that manifest in long-tail latencies. The 99th percentile (the long tail) of the latency is an important performance characteristic of a NFV setup.
This talk shows how to use MoonGen to evaluate networking devices and NFV setups with examples from network experiments conducted by the authors of MoonGen. It also discusses how SDN switches can be used to amplify and modify traffic to benchmark devices with speeds of multiple Terabit/s.
A scientific paper describing MoonGen was published at the Internet Measurement Conference in October 2015.
MoonGen is a scriptable high-speed packet generator suitable to test network devices with millions of packets per second at rates of above 10 Gbit/s. Each packet is crafted in real time by a user-defined Lua script to ensure the maximum possible flexibility. MoonGen is available as free and open source software on GitHub, a scientific paper describing it was published at the Internet Measurement Conference in October 2015.
MoonGen is a flexible high-speed packet generator. It can saturate 10 GbE links with minimum-sized packets while using only a single CPU core by running on top of the packet processing framework DPDK. Linear multi-core scaling allows for even higher rates: We have tested MoonGen with up to 178.5 Mpps at 120 Gbit/s. Moving the whole packet generation logic into user-controlled Lua scripts allows us to achieve the highest possible flexibility. In addition, we utilize hardware features of commodity NICs that have not been used for packet generators previously. A key feature is the measurement of latency with sub-microsecond precision and accuracy by using hardware timestamping capabilities of modern commodity NICs. We address timing issues with software-based packet generators and apply methods to mitigate them with both hardware support and with a novel method to control the inter-packet gap in software. Features that were previously only possible with hardware-based solutions are now provided by MoonGen on commodity hardware. MoonGen is available as free software under the MIT license in our git repository at https://github.com/emmericp/MoonGen.
MoonGen is 90% Lua. Each single packet that is sent out is crafted in real time by a user-defined Lua script which needs to process millions of packets per second. There are several challenges that are addressed by MoonGen in order to achieve this. The most important one is multi-threading: all modern NICs are natively multi-core aware and linear multi-core scaling is a must for any modern packet processing app. This talk will address how MoonGen uses a shared-nothing architecture to implement multi-threading via multiple LuaJIT VMs, how the real-time requirements of a packet generator can be fulfilled despite interruptions from the JIT and the garbage collector.
A scientific paper describing MoonGen was published at the Internet Measurement Conference in October 2015.