Archive

Category Archives for "Brian Linkletter"

Psimulator2 forked, updated

Roland Kuebert forked the psimulator2 network simulator project from the original, seemingly discontinued source and made the new version available at https://github.com/rkuebert/psimulator.

Roland posted this announcement in the comments under my psimulator2 blog post. So that his announcement receives a bit more visibility, I am re-posting his comment verbatim below:

Hi all,

Just a heads up, I forked the project from the original, seemingly discontinued source and it is available at https://github.com/rkuebert/psimulator .

I have fixed the issue preventing the use of Java 8, but I have yet to look into making a release on GitHub. You can, however, clone the repository and use gradle to build jar files – I recommend using gradle shadowJar to create jar files which can be run without specifying any further dependencies.

For the frontend, use java -jar java -jar frontend/build/libs/psimulator-frontend-master-*.jar (replace the asterisk with the exact name, the star represents the git commit you used to checkout).

For the backend, use java -jar backend/build/libs/psimulator-backend-master-*-all.jar (replace the asterisk with the exact name, the star represents the git commit you used to checkout).

Cheers
Roland

How to use VirtualBox to emulate a network

VirtualBox is an open-source virtual machine manager and hypervisor that may also be used as a network emulator. In addition to creating and managing individual virtual machines, VirtualBox can connect virtual machines together to emulate a network of computers and network appliances such as routers or servers. VirtualBox works on the major computing platforms: Windows, MacOS, and Linux.

VirtualBox network with internal networks and a NAT management network

In this post, I offer a step-by-step tutorial showing how to use the VirtualBox graphical user interface to set up a network of six devices — three routers and three PCs. This tutorial will utilize some of the advanced functions supported by VirtualBox and provide you with the skills to set up a network of virtual machines on your own personal computer.

Required knowledge

I assume you, the reader, are already familiar with the VirtualBox GUI and have used it to create and run virtual machines on your personal computer, using default settings. I also assume you have a basic understanding of Linux shell commands, which will be needed to configure the Linux operating system running on the virtual routers and PCs.

If you need to refresh your knowledge about VirtualBox, the VirtualBox website provides a detailed user manual, and Continue reading

How to build a network of Linux routers using quagga

This post lists the commands required on each node to build a network of three Ubuntu Linux routers. Each router is connected to the other two routers and is running quagga. Each router is also connected to a PC running Ubuntu Linux.

three-nodes-kr

I use this network configuration to evaluate network emulators and open-source networking software in a simple scenario. Readers may find these commands useful in building their own configuration scripts.

I provide “copy and paste” commands so the network can be configured quickly.

Creating a basic topology

The physical — or virtual — network installation and the management network setup is outside the scope of this post. The method used to build the lab topology depends on the equipment, and/or the network emulator and hypervisor technology you are using.

I assume you already have six machines running and connected in a network as shown above, and I assume you have a management network set up so that each machine can communicate with the host computer and with the Internet.

Router configuration

Each router needs to install the quagga router package, configure quagga, and then configure the network using the quagga VTY shell. Optionally, quagga daemon configuration files may be Continue reading

How To Install dCore Linux in a virtual machine

dCore Linux is a minimal Linux system based on the Tiny Core Linux system. Like Tiny Core Linux, dCore loads its file system entirely into RAM, which should provide good performance in large network emulation scenarios running on a single host computer.

tiny-core-linux_kraked

dCore Linux allows users to install additional software from the Debian or Ubuntu repositories, instead of using the pre-built (and often out-of-date) TCE extensions provided for Tiny Core Linux. This should simplify the process of building network appliances for use in a network emulator, as you will not need to compile and build your own extensions, or use out-of-date pre-built extensions.

dCore Linux is designed to run as a “live” Linux system from removable media such as a CD or a USB drive but, for my use, I need to install it on a hard drive. Currently available instructions for installing dCore Linux onto a hard drive are incomplete and hard to follow. This post lists a detailed procedure to install dCore Linux on a virtual disk image connected to a virtual machine. I use VirtualBox in this example, but any other virtual machine manager would also be suitable.

Notes about dCore

Because dCore Linux is a Continue reading

Mininet-WiFi: Software defined network emulator supports WiFi networks

Mininet-WiFi is a fork of the Mininet SDN network emulator. The Mininet-WiFi developers extended the functionality of Mininet by adding virtualized WiFi stations and access points based on the standard Linux wireless drivers and the 80211_hwsim wireless simulation driver. They also added classes to support the addition of these wireless devices in a Mininet network scenario and to emulate the attributes of a mobile station such as position and movement relative to the access points.

mn-wifi-graph-200

The Mininet-WiFi extended the base Mininet code by adding or modifying classes and scripts. So, Mininet-WiFi adds new functionality and still supports all the normal SDN emulation capabilities of the standard Mininet network emulator.

In this post, I describe the unique functions available in the Mininet-WiFi network emulator and work through a few tutorials exploring its features.

How to read this post

In this post, I present the basic functionality of Mininet-WiFi by working through a series of tutorials, each of which works through Mininet-WiFi features, while building on the knowledge presented in the previous tutorial. I suggest new users work through each tutorial in order.

I do not attempt to cover every feature in Mininet-WiFi. Once you work through the tutorials in this post, Continue reading

OpenStack on one machine

To learn more about OpenStack cloud management software, a student or research may install OpenStack on a single machine, such as a laptop computer or a virtual machine, and emulate a small datacenter using virtual machines or containers.

Researchers and students may choose from multiple projects that will set up OpenStack on a single machine. Some projects are community-based open-source projects and others are vendor supported projects (while still nominally open-source).

This post is an overview of links and resources to installing OpenStack on one machine.

DevStack

DevStack is a community-driven open-source project that provides scripts and drivers to install OpenStack on a single machine. It includes direction to install on a laptop computer and to install on a single virtual machine. Devstack may also be configured to use LXC containers as compute nodes, or to use nested KVM virtualization for compute nodes.

OpenStack AutoPilot

Openstack Autopilot is the Ubuntu OpenStack installer. It is free as long as you use less than ten machines in your cloud infrastructure. So, most students and researchers will be able to play around with Autopilot for free.

Autopilot will set up an OpenStack cloud using LXD containers. This means that the system can Continue reading

Using the OpenDaylight SDN Controller with the Mininet Network Emulator

OpenDaylight (ODL) is a popular open-source SDN controller framework. To learn more about OpenDaylight, it is helpful to use it to manage an emulated network of virtual switches and virtual hosts. Most people use the Mininet network emulator to create a virtual SDN network for OpenDaylight to control.

odl-0100-b

In this post, I will show how to set up OpenDaylight to control an emulated Mininet network using OpenFlow 1.3. Because I am using virtual machines, the procedure I use will work the same in all commonly used host systems: Linux, Windows, and Mac OS X.

Using Virtual Machines

In this lab example, I will use two virtual machines. One will run the Mininet emulated network and the other will run the OpenDaylight controller. I will connect both VMs to a host-only network so they can communicate with each other and with programs running on the host computer, such as ssh and the X11 client.

I will use VirtualBox to run the Mininet VM that I downloaded from the mininet project web site, which is the easiest way to experiment with Mininet. The Mininet project team provides an Ubuntu 14.04 LTS VM image with Mininet 2.2.1, Wireshark Continue reading

Saving a Cloonix network topology

The Cloonix network simulator has been updated to version 29, which adds the ability to save network simulation topologies and node configurations to a directory.

Users may save a network topology and all node configurations to a directory of their choice. They may also load saved topologies into Cloonix so they can restore a network scenario they previously created. The save function of Cloonix v29 supports copy-on-write filesystems and also allows users to save the full filesystems of nodes, if they wish.

This post will work through a detailed tutorial showing how to save, load, and re-save topologies and node configurations using the Cloonix GUI or command-line interface.

Different methods to save a Cloonix project

In this tutorial we will show three ways Cloonix may be used to save filesystems and network topologies:

  1. Create a new base filesystem by starting a VM in Cloonix, loading software and configurations, then saving either a full VM disk image or a derived VM disk image.
    • This simple case is useful when upgrading or modifying disk images that will be used in simulation scenarios.
       
  2. Start the Cloonix graph, set up the VMs, load software, and configure them. Then save the topology and filesystems.

Lenovo Thinkpad T420: Another excellent, inexpensive Linux laptop

For the past three years, I have been using a Lenovo Thinkpad T400 as my main platform for researching open-source network simulators and emulators. The T400 is an excellent, inexpensive computer that, even today, offers excellent value.

lenovo-thinkpad-t420-1

But, I need a computer that supports high-resolution external monitors so it must have a DisplayPort output. I also want to expand the number of VMs I can run concurrently with adequate performance so I need a processor that supports HyperThreading. I want to switch to the Ubuntu Linux distribution and the Ubuntu Unity desktop environment needs just a bit more processing power to run smoothly.

I recently purchased a used Lenovo Thinkpad T420 laptop, which offers everything I want and more. It is a five-year old product but it offers all the ports and performance I need. Because it is well past its depreciation curve, anyone can purchase a used T420 for a very low price. Read on to learn more about the Lenovo Thinkpad T420, another excellent and inexpensive Linux platform.

The Lenovo Thinkpad T420

The Lenovo Thinkpad T420 is a business-class notebook produced in 2011 that was leased in large volumes by companies for use by their employees. Now, Continue reading

Process images for your blog with ImageMagick

When writing a blog post about a technical topic, I often capture a lot of screen shots that I need to edit before adding them to my blog article. Usually I want to add a border around each image and I sometimes want to reduce the size of images that are too large. I want to do this quickly and easily so I use ImageMagick, an open-source command line image editor.

It takes too long to edit a large number of images one by one in an image editor like Photoshop or Gimp. Using ImageMagick makes it easy to batch process all images in a folder by entering a simple command. You may also incorporate ImageMagick into shell scripts, batch files, or other programs to automate the preparation of images for your blog.

ImageMagick is a powerful image manipulation tool with an intimidating set of options and subcommands. However, most bloggers will use only a few simple options. In this post, I will show how to install and use ImageMagick to perform the simple image conversions bloggers typically need. I will show how this can be done on each of the major operating systems: Linux, Windows, and Mac OS X.

Continue reading

Cloonix Network Simulator updated to v28

The Cloonix development team recently released a major update to the Cloonix network simulator.

Cloonix version 28 makes major changes to the infrastructure of Cloonix. It changes the installation procedure, the location of Cloonix files on your computer, and the names of the commands used to start and administer Cloonix.

cloonix28-110

Cloonix version 28 also makes changes to the features available to users. It adds support for multiple Cloonix servers running on the same machine, and standardizes and documents the new interface types used to connect virtual machines to each other.

Read the rest of this post for more details about what’s new in Cloonix v28.

Using Cloonix

In this post, I wrote some examples to show how to use the changed features in Cloonix v28 but I will not discuss the basics of using Cloonix because I assume the reader is already familiar with Cloonix.

If you are not already familiar with Cloonix, you should read the Cloonix documentation. Also, I have written many posts about using the Cloonix network simulator. Please check these posts if you need more information about using Cloonix.

Install Cloonix

The procedure to install Cloonix v28 has changes slightly — one new software dependency has Continue reading

KVM Performance Limits for virtual CPU cores

When using open-source network simulators that use KVM as a virtualization tool, each node in the network simulation is actually a KVM virtual machine so the maximum supported number of nodes in a network simulation is the same as the maximum number of KVM virtual machines that can run on the host computer.

Unfortunately, there seems to be no single authoritative statement about the maximum number of KVM virtual machines that can run on a host computer. Most information I could find about KVM limits does not publish absolute limits but, instead, recommends best practices.

In this post, I will synthesize the information available from many different sources into a single recommendation for the maximum number of KVM-based nodes that can run in an open-source network simulator running on a single host computer.

Continue reading

Capture data on open-source router interfaces in GNS3

In this post, I will show how to set up data capture in the GNS3 network simulator when using network devices that are emulated by VirtualBox or QEMU virtual machines.

The GNS3 network simulator makes it easy for users to capture and view data passing across the interfaces of devices running in a GNS3 network simulation. The GNS3 documentation covers how to capture data from devices running on Dynamips in GNS3 but the procedures for capturing data from devices running in other hypervisors, such as VirtualBox or QEMU/KVM, are not well documented.

cap-cover-shot-2b2

While GNS3 users may start and stop data capture on Dynamips VM interfaces any time they wish, they must plan ahead when they intend to capture data on open-source routers and hosts running on VirtualBox or QEMU virtual machines.

Continue reading

Using VirtualBox linked clones in the GNS3 network simulator

GNS3 1.3 will create and manage VirtualBox virtual machine linked clones from within the GNS3 user interface. This simplifies the process of setting up VirtualBox virtual machines in GNS3 makes GNS3 easier to use for studying the operation of open-source routers, switches, and hosts in network simulation scenarios.

LC-090

In this post, I will show how to set up and use VirtualBox linked clones in your GNS3 simulation scenarios and work through a detailed tutorial.

Continue reading

Using POX components to create a software defined networking application

When network engineers are learning the concepts of software defined networking and SDN controllers, they may want to experiment with SDN network scenarios before learning to write programs to be used by the SDN controllers.

POX is a simple-to-use SDN controller that is bundled with the Mininet SDN network emulator and is used in education and research as a learning and prototyping tool. POX components are Python programs that implement networking functions and can be invoked when POX is started. POX comes with a few stock components ready to use.

POX-comp-204b

In this tutorial, we will use stock POX components to implement basic switching functionality with loop prevention in a software defined network, without writing any code. Then, we will explore how the SDN controller programs the OpenFlow-enabled switched in a network created using the Mininet network emulator.

Prerequisite knowledge required

This tutorial assumes you already have the the prerequisite knowledge defined in the list below. If you need to understand more about any of the topics listed below, the list provides links to resources that offer enough information to prepare you to work through this tutorial.

How to map OpenFlow switch TCP ports in Mininet SDN simulations

When testing SDN functions in the Mininet network emulator and viewing captured OpenFlow messages in a packet analyzer such as Wireshark, it is difficult to identify which SDN switch is the source or destination of each captured message.

The only reliable way to identify which SDN switch sent or received an OpenFlow message is to look at the source or destination TCP port of the OpenFlow packets. This is because most OpenFlow messages exchanged between switches and the controller do not contain any other information that helps identify the sending or receiving switch. Neither Mininet nor the Open vSwitch database provides information that might be used to identify the TCP ports used by each switches to communicate with the OpenFlow controller in the network.

This post describes a procedure to map which TCP ports are used on each switch to communicate with the SDN controller in the Mininet network simulation. This procedure will enable researchers or students to study the interactions between SDN controller and switches in a more detailed and accurate way.

Summary of procedure

To map which TCP ports are used on each switch to communicate with the SDN controller in the Mininet network simulation, execute the steps Continue reading

IMUNES on Linux

The IMUNES open-source network simulator can now be installed on and run on Linux. Previously, IMUNES was available only for the FreeBSD operating system.

IMUNES-linux

The Linux version of IMUNES is ready to be used and can set up and run network emulation scenarios. It does not yet have all the features offered in the FreeBSD version of IMUNES but the development team intends make add in more features until both versions support similar capabilities.

In this post, we will show how to install the Linux version of IMUNES on Ubuntu 14.04, look at the tool set used by IMUNES on Linux, and experiment with a simple network simulation scenario.

Compatibility with Linux versions

IMUNES is compatible with all popular Linux distributions.

The IMUNES development team seems to be testing IMUNEs on the latest available Linux distributions. If you are using Linux distributions like Ubuntu 15.04, you can follow the standard IMUNES install directions. However, if you are using a long-term-supported distribution like Ubuntu 14.04, there are some extra software dependencies that you must install.

Install IMUNES in Ubuntu 14.04

I am using Ubuntu 14.04 LTS as my host operating system. When installing IMUNES on Ubuntu Continue reading

GNS3 Version 1.3: What’s new for Open-Source Routers

In 2014, the GNS3 development team launched a successful Kickstarter crowdfunding campaign to support development of a major new release, version 1.0, which was released in October that same year. I was happy to support the Kickstarter campaign and now I am finally getting around to taking a look at the new version of GNS3.

GNS3-v1x-064

The last time I used the GNS3 network simulator, it was at version 0.8.7. After producing version GNS3 1.0, the GNS3 development team has been updating it frequently. GNS3 is now at version 1.3.7.

In this post, I will look at the new version 1.3.7 of GNS3 and evaluate how it works with emulated routers and hosts running open-source software.

What’s new in GNS3 1.x

Below, I describe the new GNS3 1.x features in two sections. The first section summarizes new GNS3 features that are relevant to all users of GNS3, including those who will use GNS3 to emulate networks consisting of routers and hosts running open-source software. The second section summarizes new features relevant only those who are running commercial router images in GNS3.

New features relevant to open-source routers

The following list Continue reading

Book review: The Book of GNS3

GNS3coverNo Starch Press recently offered me a preview copy of a new book about the GNS3 network simulator, titled The Book of GNS3 written by Jason Neumann. This book covers the new version of GNS3, GNS3 1.x. Here is my review of The Book of GNS3.

The Book of GNS3 effectively serves as a user manual for GNS3. It offers detailed installation and configuration information for GNS3 1.x in one easy-to-access volume. Experienced users will find some new information in this book, especially about the new features available in GNS3 1.x. However, I think the main beneficiaries will be new or inexperienced users of GNS3.

GNS3 is usually used by people who wish to emulate networks of commercial routers from vendors such as Cisco and Juniper. Understandably, Mr. Neumann spends most of the book discussing how to set up GNS3 to run commercial routers and, as much as is possible, switches.

How does this book help those who want to use open-source routers in GNS3? Read the rest of my review to find out.

Coverage of Open-Source Routing topics

While I read through this book, I looked for the parts that are relevant to my interests in Continue reading

Install the GNS3 network simulator version 1.x

The GNS3 development team produced a major new release, version 1.0, in October 2014. Since then, they have been regularly updating GNS3 and, at the time I write this, the latest version of GNS3 is version 1.3.7.

The latest version of GNS3 cannot be installed using a package manager like Ubuntu Software Center or Synaptic because no packages have been created yet for GNS3 1.x. The Ubuntu repository and the GNS3 PPA only provide packages for old versions of GNS3. The latest version of the GNS3 package for Debian/Ubuntu is GNS3 0.8.7.

The GNS3 development team is working on packages for GNS3 1.x but, as of the time I post this, it is not clear when they will be available.

To install the latest version of GNS3 on an Ubuntu Linux system, install the dependencies, download the GNS3 source files, and compile the software. I provide the list of commands in this post.

Install GNS3 on Ubuntu Linux

We will use GNS3 to build a simulated network consisting of open-source routers, switches, and hosts so we only need to install the GNS3 GUI, the GNS3 Server, and VPCS. However, in the sections below, Continue reading