Dynamips

Dynamips is an emulator computer program that was written to emulate Cisco routers. It was developed by Christophe Fillot, who began working on it in August 2005. Dynamips runs on FreeBSD, Linux, Mac OS X and Windows. It emulates the hardware of the Cisco series routing platforms by directly booting an actual Cisco IOS software image into the emulator. Dynamips emulates Cisco platforms 1700, 2600, 2691, 3600, 3725, 3745, and 7200.

Although Dynamip's original development has been stalled since version 0.2.8-RC2, released in October 2007, development continues through the efforts of the GNS3 project and its volunteers; Dynamips is now up to version 0.2.14-dev on Windows, Linux, and OS X, and version 0.2.8-RC2 on Solaris. There are a few add-ons written for it, the most popular of which is Dynagen; a front-end add-on that allows the use of an INI configuration file to provision Dynamips emulator networks. Another popular add-on is GNS3, a graphical front end for Dynamips and Dynagen. The source code is licensed under the GNU GPL.

Purpose
According to the creator, this kind of emulator is useful:
 * As a training platform with software used in the real world. It would allow people to become more familiar with Cisco devices.
 * For testing and experimenting with features of Cisco IOS.
 * To quickly check configurations that are to be deployed later on physical routers.

Resource utilization
Dynamips uses a fair amount of RAM and CPU to accomplish its emulation of the MIPS processor. If one intends to run an IOS image that requires 256 MB of RAM on a real 7200 router, and devotes 256 MB of RAM to your virtual router instance, it will allocate 256 MB of working set memory. Dynamips also allocates (by default) 64 MB of RAM/instance on Unix systems (16 MB on Windows systems) to cache JIT translations. That amount is the total working set size; by default, the amount of your system’s actual RAM used will typically be significantly less. This is because by default Dynamips uses memory-mapped files for the router's virtual memory. In the working directory, you can see temporary “RAM” files equal to the size of the virtual routers’ RAM size. The OS will naturally cache in RAM the sections of the map files that are being used. If a computer has plenty of RAM, set “mmap = false” in the device default or router sections of your labs to disable mmap for those instances. Dynamips also uses a big portion of CPU capacity, because it emulates a router’s CPU instruction-by-instruction. It initially has no way of knowing when the virtual router’s CPU is idle, thus executing all the instructions that make up IOS’s idle routines just as it would execute the instructions that perform “real” work. However, once you have run through the “Idle-PC” process for a given IOS image, CPU utilization decreases drastically.