Archives For CORE

To install the CORE network emulator in recently released Linux distributions, including Ubuntu 16.04 and later, I recommend that you install it from the CORE Github source code repository.

The Debian and Ubuntu maintainers will remove CORE packages from their repositories in the near future so we cannot install CORE using a package manager, anymore. We also cannot use the packages available on the CORE web site until a new version of CORE is released, because newer Linux distributions may break some of the functionality in the version of CORE packages available there. For example, CORE fails to start Quagga routing daemons in newer Linux distributions. The issue is fixed in the latest version of the CORE source code available on Github.

The CORE source code is in two places: on the CORE web site, and on Github. It’s not completely clear which source code repository we should use to build CORE from. I asked the CORE team about this and it seems that both are valid, but are not kept 100% in sync with each other. Since a recent fix I needed was on the CORE Github repository, but not in the CORE web site nightly snapshots source code folder, I will use the CORE GitHub repository.

In this post, I provide a detailed procedure to install CORE from the source code on Github, and to set up your system to run network experiments using the CORE network emulator.

Continue Reading…

The CORE Network Emulator has been updated to version 4.8. This new version fixes the issues I noted in my previous review of CORE release 4.7. It also implements some new features. See the CORE 4.8 release notes for all the details.

The most visible change is the addition of some new services — most notably a new Docker service that will allow Docker containers to be used as nodes in the simulation scenario.

Continue Reading…

Having set up an Ubuntu Linux server running on a free micro-instance in Amazon’s Web Services EC2 service, I’d like to see how some of the open-source network simulation tools I’ve been using work in the cloud.

First, I will install the CORE Network Emulator on my Amazon AWS EC2 virtual private server. Please read the rest of this post to see how it works.

Continue Reading…

When setting up a complex network scenario in the CORE Network Emulator, we may want to change the default configurations provided by CORE services. Fortunately, the CORE Network Emulator allows the user to customize services.

A user may want to customize CORE services in order to:

  • set up complex network emulation scenarios by adding more configuration information to required CORE services
  • simplify network emulation scenarios by removing default configurations from CORE Services
  • enable the CORE GUI to execute user-generated scripts or commands on network nodes while running a simulation
  • save customized configurations on each node in the CORE Network Emulator configuration file.

In this post, we will work through a detailed tutorial that shows how to customize the IPForward service. The steps we follow in this tutorial can be applied, generally, to customize any other CORE service.

Continue Reading…

CORE Services is a feature of the CORE Network Emulator — an open-source network simulator — that configures and starts processes on each node running in a network simulation. Examples of processes supported by CORE Services are: quagga, dhcpd, or radvd.

Because the CORE Network Emulator implements its virtual nodes using a lightweight virtualization technology called Linux namespaces, we cannot use the normal init or upstart scripts to start networking daemons on these nodes. We must use CORE Services.


A benefit of using CORE Services is that they allow us to set up and manage processes running on each node by using the CORE GUI. This may reduce the time required to configure nodes used in a simulation scenario, especially if a large number of nodes require similar configuration procedures. Also, network scenarios that require customized configurations can be saved and used again if those configurations are implemented by customizing CORE Services.

To run complex network simulation scenarios, we must understand how to use CORE Services. In this post we will provide an overview of CORE Services.

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…

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…

To emulate the operation of IP networks, the CORE Network Emulator requires that routing and networking software be installed on the host Linux system. CORE creates virtual nodes using the Linux Containers (LXC) network namespaces feature so all services installed in the host computer will be available to run on the virtual nodes created by CORE.


The CORE Network Emulator documentation does not provide information about these services and does not show how to install them. This post describes the open-source networking software and utilities and how to install each one in a Linux system.

Continue Reading…

When I started a CORE Network Emulator simulation scenario on my computer running the Xubuntu Linux 13.10 operating system, I encountered a few issues that I needed to correct.

The Ubuntu Network Manager drops my WiFi connection after I start the CORE simulation scenario and the Terminal does not start when I double-click on a node in the CORE canvas.

This post describes how I worked around the WiFi connection problem and resolved the Terminal problem.

Continue Reading…