Recently I’ve been interested in using some form of realtime IOS emulator for my networking studies.
This is primarily the result of poor coding of the native Cisco Packet Tracer – lack of functionality and countless bugs, crashes and, of course, my biggest concern, putting my trust in the hands of a program that might lack the desired functionality.
Since I’m a Windows kind of guy, I wanted something with with a GUI frontend – I find that it helps me illustrate the various setups, naturally.
I was introduced to a new platform that provides realtime IOS emulation called DynaMIPS. This piece of program was written by a bunch of students that grew tired of the expenses revolved in aquiring various Cisco certifations, such as CCIE etc. So they developed a software that minimized all the costs associated with lab excercises, which is an awesome idea, generally.
Although the program is released under the GNU/GPL, it does present you with a smaller ethical dilemma. Cisco IOS is, however, not Open Sourced, which means you need to obtain several IOS’s for your DynaMIPS, which is illegal. However, I’ve been told that Cisco’s unofficial say in this includes “looking the other way”, so to speak. They are certainly not interested in putting out official statements allowing everyone to “steal” they valueable piece of code, but on the other hand, they might lose significant income if they dont allow some sort of alternative to the expensive costs revolving around highend certifications.
Well, enough about that.
DynaMIPS is the backend emulator for this process, it presents you with an enviroment that allows you to run several IOS softwares on a single PC. however not completely architechture independantly. So far, only x86 and x64 OS’s has native source code released.
The platform independency consists, although. Releases has been made for several Linux distributions, Windows and OSX.
For those of us who enjoys a GUI to help us obtain the overview, GNS3 exists. This software provides the graphical frontend for this process – actually, the whole process gets to look alot like Packet Tracer, once everything has been setup, which suits me well. I always enjoyed working with Packet Tracer, although it’s not really sufficient enough for use at higher levels of Cisco learnings.
So, I got this fired up and running, and im throwing in a couple of c3600 routers, my idea was to emulate a general layer 3 switch to test out some spanning tree methodologies (you can do this by adding some “16PESW” modules to the device, it provides 16 ethernet ports to the IOS).
I quickly learned that this process appeared to be extremely resource consuming, with a 2,2 GHz dual core processor and 2 GB RAM, I should be able to run several IOS’s without having to bend above 50-60% CPU usage, but this process peaked my entire performance with an amazing 99% CPU usage(!!).
This is some sort of “glitch” ( I’m gonna call it a glitch cause i really don’t assume it’s intentional), because your IOS’s does’nt calculate their own resources accordingly. DynaMIPS doesnt know when your IOS’s is in idle, so it continues to allocate resources, even though your IOS might be idling. Therefor, you need to calculate an IDLE PC value to your various devices.
Before doing this, make sure you only have a single IOS active, and that its been properly initialized, interfaces up and running, and stuff like that. After this, you telnet to the device and fire up the “idlepc show ioshostname” command. This will list all the various hex values associated with Idle PC values for your IOS. Its recommended to use the ones marked with a star. So enter the number of a value with star next to it, and write “idlepc save ioshostname”.
For the GUI-junkies out there, you may just right click your IOS device and select Idle PC, and select a hex value. Works the same.
After this is done, the IOS will remember the settings and this is no longer neccesary to execute. Also, it remembers the hex value for future implementations of IOS’s in the same scenario.
For me, this resulted in a significant release in resources. Running 4 IOS’s with approximately 30-40% CPU.
You can obtain this piece of software at http://www.gns3.net/ .
Good idea to read alittle bit of documentation before firing it up.
So now I can run my emulations properly without having to worry about sudden crashes and bugs in Packet Tracer.