I'm currently studying for my CCNA. I had put it on hold for some time, but recently decided that I was tired of not having it, despite my experience in the area. Having heard about the Cisco router emulator, DynaMIPS, from a couple of my coworkers, I decided it was time to give it a spin. After all, my two 2600 series routers are fine for setting up routing protocols, but if you want a real topology--specifically, a mesh--then you need a minimum of three routers, and more is better if you're practicing redistributing routes.
With DynaMIPS, you can use an actual Cisco IOS image to run as many virtual router instances as you want, without ever purchasing a single piece of equipment. What's more, with the use of GNS3, a very handy DynaMIPS front-end, building a new topology is easy as point-and-click. Anyone who ever wanted to see how many 7206VXR's they could drag-and-drop into a network will certainly enjoy the power trip. I know I do.
Now, on to the business of making this work: first, OS compatibility issues. DynaMIPS binaries are available for Linux--both 32 and 64-bit--and under Windows, using Cygwin. I have Slackware, so I just grabbed the 32-bit Linux binary.
If you're unable to use one of the binaries, then grab the source and get ready for some dependency hijinks. And where might one obtain said copy of DynaMIPS? Here, of course: http://www.ipflow.utc.fr/blog/. This is a different copy than what you would get from the official page, but--believe me--you want the release candidate.
I haven't compiled DynaMIPS from source, yet, but I may give it a shot for use on my MacBook. While I do have a native Linux install on here, I'd rather be able to run DynaMIPS from OS X. Worst comes to worse, I may bite the bullet and install Slackware on VMWare Fusion, but I hate installing VMWare Tools on a Linux guest machine; it always finds a way to piss me off when compiling all of those modules.
Alright, so the DynaMIPS executable needs to go someplace useful. I threw it in /usr/bin, but any old place is fine. I just like for it to be in my path.
Next, go download GNS3: http://www.gns3.net/download. If you have Linux, then there won't be any binary to save you, this time. Windows or OS X: take your binary and hope you have some luck with those dependencies.
For Linux, you'll need to make sure you have Qt4 with SIP installed, plus Python bindings (PyQt4). I was lucky and was able to grab a package for Qt4 here: http://www.linuxpackages.net/pkg_details.php?id=12570. For SIP and PyQt4, try this link: http://www.riverbankcomputing.co.uk/software/pyqt/download. Be sure to download and install SIP, first. The link is there, but it's in a less obvious spot than the PyQt4 links.
So, for me, here was the order of operations: install the Qt4 package; compile and install SIP; compile and install PyQt4; compile and install GNS3. Actually, I didn't have to wait to install GNS3. It just refused to run until I had the necessary prerequisites. All the same, it's never a bad idea to compile and install your dependencies, first. Hence, I've presented the order of things as such.
By the way, I assume that you have access to an actual Cisco IOS image for one of the supported routers. Also, I highly recommend you unzip said image prior to use: it makes load times a great deal faster. If you don't have an IOS image, then tough. It's actually illegal to use IOS images outside of a Cisco chassis, anyway. See the following response from Cisco: http://www.certforums.co.uk/forums/showthread.php?t=20669.
Once everything is put together, you should be able to launch GNS3, tell it where to find DynaMIPS, and set up some basic preferences. Just be sure to have GNS3 calculate an idle-pc value for you. If you don't, you'll get to watch your CPU rocket to 100%, with no legitimate hope for using the Hypervisor to run multiple router instances.
To calculate the idle-pc for your IOS image, just drag a router with a configured image into the topology area, right-click it, and find the option for calculating the idle-pc value. Once this is done, you'll never have to worry about it again for that particular image, and you'll be able to use several router instances at once. Pretty nice, huh?
That's all I've got, for the moment. I may come back to add some screenshots later, but, again, I don't have DynaMIPS on my laptop, just yet, and will need to either get it running here or grab some screenies from my desktop. Maybe I'll get started over the next forty minutes or so...