Dynamips is an emulator computer program that was written to emulate Cisco routers. It has been created by Christophe Fillot who started his work in August 2005. Dynamips runs on FreeBSD, Linux, Mac OS X or Windows and can emulate 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 Dynamips 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. One of the most popular is Dynagen, which is 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.
According to Fillot, this kind of emulator would be useful to:
- Be used as a training platform, with software used in real world. It would allow people to become more familiar with Cisco devices, Cisco being the world leader in networking technologies.
- Test and experiment features of Cisco IOS.
- Quickly check configurations to be deployed later on real routers.
Dynamips uses a fair amount of RAM and CPU in order to accomplish its emulation magic. If you intend to run an IOS image that requires 256 MB of RAM on a real 7200 router, and you devote 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. This will be 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 routers’ virtual memory. In the working directory you will see temporary “ram” files equal to the size of the virtual routers’ RAM size. Your OS will naturally cache in RAM the sections of the mmap files that are being used. (See the Memory Usage Optimizations section for configuration options that can signficanly reduce memory utilization).
If you have plenty of RAM, and you know what you are doing, set “mmap = false” in the device default or router sections of your labs to disable mmap for those instances.
Dynamips also uses a lot of CPU, because it is emulating a router’s CPU instruction-by-instruction. it initially has no way of knowing when the virtual router’s CPU is idle so it dutifully executes all the instructions that make up IOS’s idle routines just as it would execute the instructions that perform “real” work. But once you have run through the “Idle-PC” process for a given IOS image, CPU utilization decreases drastically.