Dynamips

Dynamips is an emulator program that was written to emulate Cisco routers. Dynamips runs on 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.

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; Dynamips is now at version 0.2.8-RC3 on Linux and OS X, and version 0.2.8-RC5 on Windows. 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. Other popular add-on is GNS3, which is graphical front end for Dynamips and Dynagen. The source code is licensed under the GNU GPL.

Dynamips is a Cisco router emulator written by Christophe Fillot. It emulates 1700, 2600, 3600, 3700, and 7200 hardware platforms, and runs standard IOS images. In Chris’ own words:

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.
  • Check quickly configurations to be deployed later on real routers.


Resource Utilization

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 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. More on this later.