ComNetsEmu SDN/NFV emulator

A holistic testbed/emulator for the upcoming book: Computing in Communication Networks: From Theory to Practice (2020)

Description

ComNetsEmu is a tested and network emulator designed for the NFV/SDN teaching book "Computing in Communication Networks: From Theory to Practice".
The design focus on emulating all examples and applications on a single computer, e.g. on a single laptop.
ComNetsEmu extends the famous Mininet emulator to support better emulation of versatile NFV/SDN network applications.
It extends and puts forward the concepts and work in the Containernet project.
It uses a slightly different approach to extend the Mininet compared to Containernet.
It's main focus is to use "sibling containers" to emulate network systems with computing.
See the detailed comparison between upstream Mininet and Containernet here.

Common facts about ComNetsEmu:

Emulation performance is considered but not the main focus. All emulated nodes (processes) share the same underlying
compute, storage and network resources when running it on a single system. ComNetsEmu is heavier than vanilla
Mininet due to complete host isolation. Chose a reasonable performance limitation is recommended for better
emulation results. For example, use e.g. 100ms as link delay instead of 1ms for large scale topology.

ComNetsEmu is developed with Python3.6.

Examples and applications in this repository are mainly developed with high-level script language for simplicity.
These programs are not performance-oriented and optimized.
Contact us if you want highly optimized implementation of the concepts introduced in this book.
For example, we have DPDK accelerated version (implemented with C) for low latency
(sub-millisecond) Network Coding (NC) as a network function.

Main Features

Use Docker hosts in Mininet topologies.

Manage application Docker containers deployed INSIDE Docker hosts. "Docker-in-Docker"(sibling containers) is used
by ComNetsEmu as an lightweight emulation for nested-virtualization. The Docker host with internal Docker containers
deployed is used to mimic an actual physical host that runs Docker containers.

A collection of application examples for "Computing In Communication Networks" with sample codes and
detailed documentation. All examples can be easily reproduced and extended.