Archives For Open Source Networking

Descriptions of open source networking software for Linux or BSD systems: configuration, operation, maintenance

In this tutorial, we demonstrate basic software-defined networking (SDN) concepts using the POX SDN controller, POX components, and the Mininet network simulator.


We will show how to use the POX SDN controller to update flow tables on the SDN switches in a simulated network so every host on the network can forward packets to another host. We will use the Mininet network simulator to create the network of emulated SDN switches and hosts that are controlled by the POX SDN controller.

Continue Reading…

The CORE Network Emulator development team released CORE version 4.7 in August 2014. I installed this new version of CORE on a newly-installed Linux 14.04 system and tested some of the new features.


In this post, I list the new features that are most relevant to researchers who use the CORE GUI to set up and run network simulations. I also list some of the defects that I found, along with workarounds.

Continue Reading…

The Cloonix open-source network simulator uses the Spice remote desktop system to provide a virtual desktop connection to quest virtual machines that run a graphical user interface, such as Microsoft Windows or a Linux desktop environment.

To use a graphical desktop user interface on a guest VM, we access the VM using the Spice desktop console.

Continue Reading…

To run a program that uses a graphical user interface on a guest virtual machine running in the cloonix open-source network simulator, log into the guest VM from the host computer using SSH and forward the X11 display. Then, any X11 program you run on the guest VM using that SSH session, such as Wireshark, will display its X windows on the host computer.

Continue Reading…

As we work through this tutorial, we will learn how to use the cloonix graph interface to build a simulation scenario that includes two small IPv6 networks connected to each other by two routers via static routes. We will also learn how cloonix saves network topologies and guest virtual machine root filesystems.

Cloonix IPv6 linux network simulation

Linux IPv6 network simulation running on the cloonix open-source network simulator

The cloonix open-source network simulator uses KVM virtual machines in the simulated network so, in this tutorial, we will demonstrate real Linux router and host configuration procedures.

Continue Reading…

The cloonix project provides a variety of root filesystems for use in the cloonix network simulator. These root filesystem only have the most basic software packages installed and will not support advanced network configuration (with the exception of router filesystems such as openwrt).

To create a network simulation that runs real-world networking software, we need to install new software on the root filesystems we will use in cloonix. In this example, we chose to start with the Debian jessie root filesystem and we will install some networking software and a desktop environment.

We will also show how to save the upgraded root filesystem for future use as either a static or non-static root filesystem.

Continue Reading…

The cloonix development team recently updated the cloonix network simulator to version 24. This post describes the changes in cloonix v24 compared to cloonix v19, which we reviewed in a previous post.

Cloonix open-source network simulator on Linux

Version 24 simplifies the setup of guest virtual machines, improves the link performance emulation tool, and adds new interface types designed to improve packet throughput performance. Users familiar with the cloonix graph GUI will have no problems using this new version, but shell scripts with cloonix ctrl commands may need to be updated, because the ctrl CLI has changed.

Please read on to see a detailed description of the changes.

Continue Reading…

Install Cloonix v24

May 18, 2014

The Cloonix open-source network simulator was recently updated to version 24. The last time I used Cloonix, it was at version 19 (see my review of Cloonix and my using the Cloonix graph interface posts). Compared to version 19, only a few details of the installation procedure have changed — the list of package dependencies is different compared to v19.

The Cloonix v24 installation procedure is documented in the README file that comes with the source code. For my own reference, I will describe the procedure, along with some additional information, in this post.

Continue Reading…

While working through some of the previous tutorials about the CORE Network Emulator or IPv6, we noticed some strange broadcast packets in the Wireshark packet analyzer that appeared to have nothing to do with the processes running on the simulated network.

Messages generated by the host Linux system that are not associated with any nodes running in the simulated network

Messages injected into the simulated network by the host Linux system

For example, we started a simulation consisting of two nodes connected to the same switch. We started the Wireshark packet analyzer on one of the nodes. No processes are running on the nodes that would generate data traffic on the links between them so we should see no data packets in the packet capture shown above. However, we see many broadcast frames carrying mDNS, NDP, and DCHP requests.

Data passing between simulated nodes in CORE is mixed up with other data packets generated by the host Linux system. Read on to learn how we stop this distracting data.

Continue Reading…

In Part 1 of this series, we performed some practical experiments to show how interfaces in an IPv6 network configure themselves with link-local IPv6 addresses when they start up. We also showed how to manually configure IPv6 addresses on a Linux system. In this post, we will use an open-source network simulator to demonstrate another method of assigning an IPv6 address to an interface: Stateless Address Auto-configuration (SLAAC).

We will use the CORE Network Emulator to set up a simple IPv6 network and then run some practical exercises to show how to set up a open-source IPv6 router to perform auto-configuration using either radvd or quagga. We’ll use open-source routing software to demonstrate real router configuration procedures and investigate how IPv6 routers and hosts communicate to assign globally unique unicast IPv6 addresses to hosts the using Stateless Address Auto-configuration and the Neighbor Discovery Protocol (NDP).

Continue Reading…

IPv6 addressing is about more than just a longer 128-bit address length. The working groups that defined IPv6 were trying to solve some of the problems that programmers, network administrators, and network engineers were encountering with IPv4. The way that IPv6 prefixes and addresses are assigned and configured differs significantly from IPv4. IPv6 offers some improvements and some new challenges.


A good way to learn about IPv6 network addressing is to work through some practical exercises. In this post, we will use the CORE Network Simulator to simulate a simple IPv6 network and examine link-local and global IPv6 addresses. We will work through a practical tutorial that will show how to manually configure IPv6 addresses and very basic IPv6 routing.

Continue Reading…

Previously, we installed the CORE Network Emulator from source code and installed the network services used by CORE. Now, we want to run a simulated networking scenario and modify the configuration of the quagga routing daemon on one or more virtual routers.

To do this, we open a shell to the node and start the vtysh shell so we can use the quagga command-line interface. But, the quagga vtysh shell starts with a mostly blank screen displaying the text “(END)”.

vtysh shows blank screen with (END) text

vtysh shows blank screen with (END) text

We have to enter the “q” key to get back to the vtysh command prompt so we can enter the required configuration command. Every time we enter a vtysh configuration command we see the blank screen with “(END)” again.

Read on to learn how to fix this annoying problem.

Continue Reading…