I’ve answered some frequently asked questions in my last blog post already, but of course there are other questions that keep returning. Many of them are related to GNS3, a graphical network emulator using Cisco IOS images. I’m going to explain how to best set up GNS3 in a Windows environment, as that is what most people do. Linux should give better results, but I’m still researching that.

GNS3 does not provide IOS images. There’s also no legal way to use IOS images in GNS3, apart from perhaps making a service contract with Cisco. So you’ll have to find the best way to use them yourself. Try to get a 37xx or 36xx IOS, because these seem to be the most stable in GNS3. Most people start with 26xx IOSes because they are most familiar with these, but they’re actually the least stable ones, so try to avoid them. Of course, the more advanced the IOS the more you’ll be able to do with it. After installing GNS3, go to ‘Edit’, then ‘IOS images and hypervisors’. There you can import the IOSes you have. Also, try to give them the memory they need, but not more, it will not be used (especially not in a lab environment) and will take more resources from your host computer.

Next, go to the tap ‘External hypervisors’ in the ‘IOS images and hypervisors’ screen. Here, leave the ‘host’ field on, choose a port, UDP and console. The default settings should be okay: +5000 for port, +10000 for UDP, +2000 for console. Also, choose a working directory, which is a personal preference. Click ‘save’ just as many times as you have threads on your CPU(s): this will allow some multithreading for GNS3, which will improve performance on a multicore system. So if you have a dual core CPU with hyperthreading for a total of four threads, make sure four instances are created.

Next, in ‘Preferences’, under ‘Dynamips’, check the ‘Enable ghost IOS feature’, as this will reduce resources needed. GNS3 will now run multiple copies of the same IOS image. Note that in a rare case, in some topologies, I have noticed instabilities here, especially when using different memory on routers using the same IOS image (which is not needed anyway).
Beneath this there’s ‘Enable sparse memory feature’. Enabling it will cause GNS3 to use a paging file more aggressively, slowing down performance. If you have enough RAM, disable it.
Additionally, take your time to look through the other options as well: you can link to Wireshark, allowing you to capture on any interface, specify a capture directory, and do the same for console software.

Now one of the most important things: start up one router with an image you will be using, and after it booted, right-clock on it, and choose ‘Calculate Idle-PC’. Then choose a value from the list, preferably one with * in front of it. This will make the emulator not calculate idle cycles of the emulated image, greatly reducing CPU stress.

And finally: never start all routers at once with the big ‘Play’ button on top. Start them one by one, and open a console after starting each one and check if you can get the basic prompt, ‘R1>_’. This takes a bit longer, but you can boot significantly more routers before everything becomes unstable.

So this way, if done properly, you can get bigger topologies running. This is a basic configuration post, in the future, I hope to explain how to get more stuff running in GNS3, and how to distribute it between different computers.