A rather long period is over: the developing of GNS3 reached the state of the public release of version 1.0, and very soon came 1.1 (which contains bug fixes). I think that I don’t need to introduce this software, but this time (as the title implies) I will share my first experiences with it. Just a few words about the background: Almost a year ago the developers of the software made a foundation to help the project to grow quicker: They wanted GNS3 to be the best bet if someone wants to simulate a network and doesn’t want to (or can) buy expensive hardware. The crowdfunding project they started was a big success, and its outcome is the long-awaited 1.0 version, which wants to be THE network modeling and simulation software on the market. To be honest, it’s very close to this.

CCNA Training – Resources (Intense)

The software is available for all the popular PC operating systems: Windows, Linux and, MacOS. Let’s look at the Windows version first! The first thing is that we need to sign in to the GNS3 site in order to download the software, but right away we’ll be members of the user community also. We’ll get an installation guide, but I hope that this article will even more helpful J The installation package is the well-known all-in-one format, which contains the familiar pieces of software (Dynamips, QEMU, Wireshark, etc.) plus a new member: SolarWinds Response Time Viewer. It’s a free utility for Wireshark that “analyzes common packet capture files and identifies over 1200 applications, calculates application and network response time, data volume, and traffic count” (see the link at the end of the article).

The setup itself is the usual. But this time that one package is not enough to download if we want full productivity of the new version. The most important thing is the ability of using IOU (or more precisely, IOL). What is this? IOU stands for IOS On Unix (and IOL is IOS On Linux). It’s special software that runs on these operating systems and provides almost full functionality of a Cisco router or a switch. There exist multiple Layer2 and Layer3 images from multiple IOS versions. Cisco has been using this software even for the CCIE exams internally, but for a long time the public doesn’t know about it. But in recent years it has been leaked to the Internet and more and more people starts to use it. One can say: there’s Dynamips, with which we can emulate full functionality of a router, why do we need another simulator? The answer is that IOU Layer2 images have much, much more functionality than a router in GNS3 with switch modules. So, if we can match these two technologies (the ease of use of GNS3 and the robust switching functionality of IOU), then we’ll have a very good environment to experiment with almost everything in the field of routing and switching. Well, this is why 1.0 was long awaited!

Back to the installation: We have to download a virtual machine in which we can run IOU images. The virtual machine in OVA format can be downloaded here: http://sourceforge.net/projects/gns-3/files/IOU%20VMs/. One important thing: the VM version must match the GNS3 version. I personally tried to run the VM for beta3 with GNS3 1.1 and it didn’t succeed. After downloading the OVA, import it into VirtualBox (File / Import appliance…) Pay attention to two things:

  1. The RAM size of the VM is 2048 MB by default. If we don’t have plenty of physical RAM or don’t want to run myriads of IOU instances, we can lower this value
  2. The network connection of the VM is host-only networking, which needs to be adjusted for Windows (“Host-only Adapter” instead of vboxnet0 interface).

Before we start the VM instance, which is a Debian Linux under the hood, check the DHCP service in VirtualBox on the host-only adapter: It should be on (go to File / Preferences… / Network / Host-only networks, and check if Enable Server is checked under the DHCP Server tab under the preferences of the host-only adapter). After starting the VM, soon we should get some information message about the image uploading possibilities: we have to upload IOU images to the VM as these are not part of the GNS3 package because of licensing issues. We can use (or similar) for this purpose. After this message we’ll get the login prompt, we can use the username root along with the password of cisco to get access to Linux CLI. If all goes well, we don’t need this.

Now we can start GNS3 itself and can see that the wizard for the first start has vanished, but we can use projects as before. In the background, the GNS3 server application wants to start: it’s a new component and on one of my PCs caused a little trouble; namely, the whole application crashed because my Windows firewall blocked the server application. The solution was that I started gns3server.exe alone (it’s in the program folder); when the firewall asked about it, I allowed and then everything was OK.

When GNS3 starts, the well-known parts can be seen plus a little window with the title “GNS3 Jungle.” This is a link to the GNS3 Assist website – it is worthwhile to go there and look around. But this time we’ll concentrate on the “offline part” of the software. The first place to visit is Edit / Preferences, which is a bit different from before:

Some thought about this: the foregoing GNS3 server has a separate entry, as well as VPCS (Virtual PCs was in the Tools menu before) and IOS on Unix (which is completely new).

Let’s go through the steps to create a usual IOS device and at least one IOU device as well. The simpler task is the creating of IOS routers: Click on New in the IOS routers preferences window, then follow the steps of the wizard. First browse and select an IOS image (which can be decompressed immediately to speed up the loading), choose a name, platform and chassis, specify the amount of allocated RAM, populate the slots with adapter cards, and finally find an idle-PC value—nothing new. The Idle-PC finder doesn’t work for me, but never mind, when we put in the topology, the program can find this value for the router. After clicking Finish, we’ll get an overview of the settings and of course we can Edit them later.

Now go on to IOU devices, but before this we need some other settings. First, go to the GNS3 server settings and, under the Local server tab, set the Host binding to the IP address of the VirtualBox host-only adapter. It is for the communication between a Dynamips and an IOU appliance. On the Remote servers tab, check that the IP address of the host matches the IP address of the virtual machine (as we can see in the message after the boot or by the ifconfig command on the Linux CLI), then click Add. This is needed for GNS3 to know how to reach the VM. Click on Apply.

Now select the IOS on UNIX entry. Under General settings we have to specify the path for a special file called IOURC. This file holds the license code for IOU in the following format:


gns3-iouvm = 123456789abcdef;

gns3-iouvm is the hostname of the virtual machine, and a 16-character value is bound to this. If you search for “iourc” on Google, you can find more information about the exact value to enter—the above is just an example. When the file is ready and saved, upload it to the VM. Navigate to the upload page on the VM (the link is above) then browse and upload under the name of iourc (the .txt extension is unnecessary and confuses IOU). While still in this page, you can upload the IOU images also: I personally uploaded one Layer2 and one Layer3 image, but you can experiment with more images. Some functions doesn’t work (or work abnormally) on some images, but work perfectly on others. This is the beauty of IOU.

Back to GNS3 preferences, we have to specify the path for IOURC (anyway, RC means Run Control, and many Unix configuration file have this two letters in its name). I set the path on my local machine:

On the Server settings tab you should see the IP address of the VM under the Host column, and 8000 as the port. This setting comes from the GNS3 server settings we did before. The Advanced settings tab can be untouched.

Now we can add IOU devices: click on New, and in the first step select remote server type. This remote server will be the Linux VM. After clicking Next, a message appears that tells us that in the next step we have to specify the path on the VM for the IOU image. This information can be copied from the browser as the upload page reflects the uploaded files. The whole page should look like this:

Our first IOIU device has been set, but we can adjust some parameters. For example, a switch usually needs less RAM than a router, so we can experiment with lower RAM settings. Another thing that’s related to IOU is the specification of adapter cards. Interestingly enough, a Layer2 image can also have serial adapters, but I always set them to zero. On the other hand, the default number of Ethernet adapters is 2, but that doesn’t mean that we have just 2 ports on the switch. IOU handles the ports in special way: only 10 MB/s Ethernet ports supported (the interfaces don’t even accept the speed command), so we cannot use the familiar Fa0/x abbreviation, just E0/x, for example. Another thing is that one adapter for the IOU image holds 4 ports, so if we set the number of adapters to 4, the switch will have 16 ports, but their names reflect that they’re on different modules: we have E0/0 – E0/4, then E1/0 – E1/4 and so on. Finally the ports may be in administratively down state by default. One last thing: IOU supports the Layer1 keepalive messages which make the things more realistic, but this feature may interrupt the connection to another device which doesn’t support it or has been turned off on it, so use with caution!

After all these setup we can try the interconnection between a Dynamips-emulated IOS router and an IOU switch. It should work, so we can start to scale our network by inserting another switches and routers, and of course, other devices like PCs. If we need some PC for just basic testing purposes (to ping or traceroute, for example), then the simplest way is the use of the built-in VPCS. The integration of VirtualBox or QEMU virtual machines is easier than before: The New VirtualBox VM wizard automatically enumerates the preconfigured VMs in VirtualBox, so we just need to pick one and we’re ready to go. Of course, we can adjust some settings (for example, the number of adapters) later.

The configuration of an ASA became simple also. We have to go to QEMU VMs under the main preferences menu and click on New. Give a name and select the Type of ASA 8.4(2). Next, specify the amount of RAM allocated to the device (the path to QEMU binary is probably good). Finally, browse the initial RAM disk (initrd) file, and the kernel image of the ASA – and it’s done. The rather difficult command line for the kernel and the options for QEMU is not a pain anymore.

As the title of this article says, these are just the first impressions, but they are very promising. The staff behind the software did very good work and the project won’t stop, so we can expect more features and other bells-and-whistles which make GNS3 a must have software for many network students and specialists.

Useful Links

Introduction to Response Time Viewer: http://www.solarwinds.com/resources/videos/intro-to-response-time-viewer-for-wireshark.html

Cisco IOU FAQ: http://evilrouters.net/2011/01/18/cisco-iou-faq/