Sunday, December 30, 2018

CORE Network Emulator

Apologies if this is very common knowledge, but I just discovered CORE Network Emulator and I wanted to let you guys know that this exists.

Some background:

I don't have a huge complex network. It's pretty small with just a few sites, 6 or so WAN/BGP routers, and a bunch of ospf routers inside the data centers (we're doing a purely routed underlay with "routing on the host"). As we move away from bridged network designs and to all routed, I wanted a way to document everything well for the rest of the team, as well as a way to emulate the routing processes and test routing changes, review propagation/etc in the test environment before applying to production.

I was annoyed with GNS3 because it's pretty heavy for what I wanted to do. I really have no need to run full router OSes to test these things. I only needed to emulate the routing processes and configuration. I also didn't really want a bunch of VMs running on my laptop or to have to setup a dedicated server for this.

On the diagram note, I was using draw.io and gliffy and hated my life. So with the expectation that I'd have to compromise on some things, I began searching for solutions to these two problems, with the following (collective) requirements:

  • A network diagramming tool, but one where each device and link is an object to which I can add attributes and configuration details which are normally out of view, but available by clicking on an object.

  • Something free to use for personal or otherwise. Bonus for open source as well.

  • A routing protocol emulator or simulator of some sort, allowing me to create a configuration replica of our networks (don't really care the OS or syntax, just want to be able to functionally mock the protocol configurations) and test routing changes.

  • Preferably self contained, or at least not a bunch of VMs for which I need licenses and have to configure an entire OS for each device.

  • The diagrams or test configurations can be created and modified via both a GUI and text files, so I can version control them and make quick/scripted bulk edits.

  • Runs on Linux at least, bonus points if Mac as well.

So I came across CORE. I wasn't at all expecting to find something that met all these requirements in a single tool. But it does.

It runs on Linux, and spawns quagga inside LXC containers for the routers, and uses Linux bridges for switches. I believe the GUI can be run on Mac and talk to the daemon running on a remote Linux machine or in a headless VM. Since it's using containers, starting and stopping the emulation is extremely fast. Once it's running, you can get a shell inside the containers to observe or test live changes, and you can collect data about the whole setup with the built in tools. It's also scriptable in Python, so the whole [setup, generate fake traffic, monitor, teardown] process can be automated.

I don't think it's really intended to be a diagramming/documentation tool, but as far as I can tell so far, there's no reason it doesn't fit that purpose as well.

I'm thoroughly impressed so far. I'm curious to hear about anyone else's experience with using it.



No comments:

Post a Comment