Skip to content
bharnden edited this page Apr 1, 2018 · 15 revisions

CORE (Common Open Research Emulator) is a tool for emulating networks using a GUI or Python scripts.

The Python backend (core-daemon) uses Linux containers for running lightweight virtual nodes. Unlike LXC or Docker, CORE nodes share the same host root filesystem, and bind mount parts of the filesystem (e.g. /var/run/) for unique per-node directories. (This allows you to test your protocol code, for example, by typing 'make install' and having your new binary available to all nodes.) Docker instances may also be started as CORE nodes. CORE networks together nodes with bridging and netem, or optionally integrates with EMANE, ns-3, or Open vSwitch.

A Tcl/Tk frontend (core-gui) lets you easily draw and configure networks. Services and node types organize what runs on each node. For example, a router node runs Quagga OSPFv2 and OSPFv3 by default, and works out of the box without any special configuration. Widgets let you quickly interact with your virtual networks.

A RJ45 tool lets you "tap" into real networks. It works by bridging the emulated node or network with a physical interface on the host.

Getting Started

Here are some quick-start instructions for Ubuntu 16.04.

Install dependency packages using apt-get

sudo apt-get install bash bridge-utils ebtables iproute libtk-img python tcl8.5 tk8.5 autoconf automake gcc libev-dev make pkg-config python-dev python-setuptools libreadline-dev imagemagick help2man

Install Quagga with MDR (for MANET routing):

wget http://downloads.pf.itd.nrl.navy.mil/ospf-manet/quagga-0.99.21mr2.2/quagga-mr_0.99.21mr2.2_amd64.deb
sudo dpkg -i  quagga-mr_0.99.21mr2.2_amd64.deb

Or just use Ubuntu's version of Quagga (don't try both):

sudo apt-get install quagga

Build and install

git clone https://github.com/coreemu/core.git
cd core
./bootstrap.sh
./configure
make

# this puts the GUI under /usr/local/lib/core
# Python module under /usr/local/lib/python2.7/dist-packages/
# binaries under /usr/local/sbin/core-daemon,vnoded,vcmd and /usr/local/bin/core-gui
sudo make install

Test Your CORE Install

In one terminal, start the backend using:

sudo core-daemon

In another terminal, launch the GUI:

core-gui

Open and run the sample scenario:

  • Choose File > Open > sample1.imn
  • Press the start button (green arrow)
  • Choose Widgets > Adjacency > OSPFv2 > and wait for blue lines (OSPF routing convergence)
  • double-click n11 (laptop in upper-left)
  • Type in terminal: ping 10.0.0.7
  • Drag e.g. n7 in and out of range to start/stop pings.

If the above ping succeeds, your CORE install is good to go. (Note that the Quagga MDR version is required for the MANET routing. If you installed Ubuntu's version of Quagga, try ping 10.0.6.2 instead.

More information

We're working on migrating to this wiki from an old Google Code site. Here are some other places to look:

  1. NRL CORE project page with intro demos, screenshots, and a manual.
  2. Online Manual for the latest released version.
  3. core-users mailing list for comments and questions, and core-dev mailing list for bugs, compile errors, and other development issues.
  4. CORE Blog for some guides and announcements.
Clone this wiki locally