Archive for July, 2006

0.2.5 Release Candidate 2 (RC2)

Thursday, July 27th, 2006

Hello all,

The 0.2.5-RC2 is available for download. The important changes are essentially bugfixes:

  • It is now possible to compile dynamips on Mac Intel with the JIT support (many thanks to Ben Low who gave me access to his Mac) ;
  • The TCP console binding problem is solved ;
  • The hypervisor command parser has been enhanced (particularly for filenames with blanks, but I think it will require a dynagen update) ;
  • The “Hypervisor: unable to create TCP sockets” problem is fixed. Now, it should be able to re-bind immediately (I incorrectly used the setsockopt() function)
  • Two hypervisor commands have been added to manage virtual Ethernet switches: “ethsw clear_mac_addr_table ” and “ethsw show_mac_addr_table “. Their names are explicit enough I think :)
  • The non-JIT mode is a bit faster (on my system, 45 seconds to boot an image instead of 60) ;

Files:

0.2.5-RC2 binary for X86 platforms

0.2.5-RC2 binary for X86_64 platforms

0.2.5-RC2 binaries for Windows XP and 2000

0.2.5-RC2 source code

Enjoy :)

0.2.5 Release Candidate 1 (RC1) available!

Saturday, July 22nd, 2006

Hello all,

The 0.2.5-RC1 is available for download. The important changes are:

  • The clock is now accurate, and you don’t have to use the clock divisor anymore ;
  • The “vtty_thread” problem is solved.

This release should be capable of running complex configs and solves two major concerns, the CPU load (with “idle-pc”) and the clock accuracy. Besides, the rewritten JIT (since pre24) gives better performance. So, it is a good candidate for the final 0.2.5 release.

Files:

0.2.5-RC1 binary for X86 platforms

0.2.5-RC1 binary for X86_64 platforms

0.2.5-RC1 binaries for Windows XP and 2000

0.2.5-RC1 source code

“vtty_thread: select: Bad file descriptor” on Cygwin

Friday, July 21st, 2006

Hi,

I spent a lot of time on this, and I finally found the “bug”. On Cygwin, the “fd_set” arrays, used with select(), can contain file descriptors (FD) from 0 to 63 (the fd_set array is 8-byte long). On Linux, this is 0 to 1023. The people that encountered this bug are using large and complex configs with a lot of NIO, and consequently, a lot of FD were allocated, triggering the bug.

I will publish (probably in some hours) a new release with this fix. If you want to compile dynamips by yourselves, just add the following lines before any “#include” line in dev_vtty.c and net_io.c:

/* By default, Cygwin supports only 64 FDs with select()! */
#ifdef __CYGWIN__
#define FD_SETSIZE 1024
#endif

Chris.

0.2.5-pre26 - 100% CPU load should be solved!

Sunday, July 16th, 2006

Hello all,

The 0.2.5-pre26 is available for download. I think we can consider it as “Release Candidate 1″ for the 0.2.5 train. The important changes are:

  • Many bugfixes for memory leaks ;
  • The “idle pointer counter” feature, that allows to run a router instance at only some percents of the CPU load.

The “idle pc” is an empiric (and experimental!) method to make the threads responsible of the virtual CPU sleep when the CPU is considered as idle. However, the user has some work to do to guess an “idle pc” value, which is specified as argument on the command line.

The explanation from the README file:

The “idle PC” feature allows you to run a router instance without having a 100% CPU load. This implies that you can run a larger number of instances per real machine.

To determine the “idle PC”, start normally the emulator with your Cisco IOS image, and a totally IOS empty configuration (although not mandatory, this will give better results). When the image is fully booted, wait for the prompt to be ready, do a “write memory” and then press “Ctrl-] + i” sequence key after some seconds. Some statistics will be gathered during 10 seconds. At the end, the emulator will display a list of possible values to pass to the “–idle-pc” option. You may have to try some values before finding the good one. To check if the idle PC value is good, just boot the Cisco IOS image, and check your CPU load when the console prompt is available. If it is low, you have found a good value, keep it preciously.

Important remarks:

  • The clock divisor must be adjusted a lot when “–idle-pc” is used. Using a value of 40 or 50 is not abnormal! For example, on my system, I typically used “4″ as clock divisor value, with “–idle-pc” I use “40″. The method to determine the good clock divisor is to play with the “show clock” and adjust it to have something near from the real clock.
  • An “idle PC” value is *specific* to a Cisco IOS image. You cannot boot a different IOS image without proceeding as described above.
  • Do not run the process while having the “autoconfiguration” prompt.

Files:

0.2.5-pre26 binary for X86 platforms

0.2.5-pre26 binary for X86_64 platforms

0.2.5-pre26 binaries for Windows XP and 2000

0.2.5-pre26 source code

0.2.5-pre24 ready

Friday, July 7th, 2006

Hello all :)

First of all, thanks for all your messages and your encouragements.

The important changes of 0.2.5-pre24:

  • The JIT compiler has been rewritten, the performance improvement can hit from 40% to 60% on my benchmarks ;
  • The new JIT compiler now allows to run the emulator on systems with protections like ExecShield without disabling them ;
  • The instability on the Windows platform should be solved (any feedback is welcome);
  • Added a patch from Philipp Brenner to properly handle “Ctrl-C” key when running in hypervisor mode (BTS entry #21);
  • It is now possible to run in hypervisor mode on Windows 2000 ;
  • PA-4T+/PA-8T are now working correctly with IOS 12.0T (BTS entry #23, thanks to Vikas)

Files:

0.2.5-pre24 binary for X86 platforms

0.2.5-pre24 binary for X86_64 platforms

0.2.5-pre24 binaries for Windows XP and 2000

0.2.5-pre24 source code