November 14th, 2006
The 0.2.6-RC3 release is available.
The main change is the support of the Cisco 2691, 3725 and 3745 routers, with the following remarks:
- PCMCIA disks are correctly handled ;
- Integrated FastEthernet ports (of the GT96100 system controller) can be used ;
- The possible Network Modules are: NM-1FE-TX, NM-4T and NM-16ESW.
- Dynagen doesn’t support yet these 3 models, Greg will work on it. At the moment, you can use them with command line or directly with hypervisor commands.
Other changes and Bugfixes:
- Added a “ghost” RAM feature that will allow to share multiple copies of the same IOS image through different instances to economize RAM, I’ll explain this in details in another post ;
- NVRAM config import/export should work for all platforms now ;
- DEC21140 (PA-FE-TX): fixed incorrect handling of CSR8 register leading to a cosmetic bug: the missing frame counter was giving incorrect values ;
- DEC21140 (PA-FE-TX), AM79C97x (NM-1E,4E,1FE-TX): fixed incorrect handling of source MAC addresses, which was causing drops of HSRP/VRRP packets (BTS entry #75) ;
- NM-16ESW: fixed a possible crash due to incomplete device removal;
- NM-16ESW: fixed incorrect BPDU handling, causing spanning-tree problems;
- C7200: fixed a problem with ATA disk emulation appearing on some IOS releases (bad size) ;
- The config-register value is now properly displayed with “show version” ;
- Merged a patch from Rostislav Opocensky who added support for c3600 in “nvram_export” utility ;
- Merged a patch from Akim Dreyer / Erik Wenzel for Debian packaging - many thanks to them for this nice work ;
As usual, the project files:
0.2.6-RC3 binary for Linux x86 platforms
0.2.6-RC3 binary for Linux x86_64 platforms
0.2.6-RC3 binaries for Windows XP and 2000
0.2.6-RC3 source code
About a paypal (or whatever) donation system, in brief: why not Depending on how people would give, I could buy dedicated Cisco hardware to do some tests (like specific NM, PA or why not, an NPE-G2 that I would really like to have). I will ask to my boss if this can be done and if it doesn’t cause any problem for a university.
PS: Beer is great but I prefer Cisco hardware
October 18th, 2006
The 0.2.6-RC2 release is available.
Changes for the NM-16ESW:
- Base MAC address is now properly generated ;
- An ager has been added to delete inactive dynamic MAC addresses. Please note that this ager runs every 15 seconds, whereas the interval should be modified dynamically ;
- Displaying MAC address-table should now work correctly ;
- Better handling of BPDU packets (spanning-tree should work fine now) ;
- Merged a patch from Damjan Marion who added support for Solaris (x86) build. Many thanks to him!
0.2.6-RC2 binary for Linux x86 platforms
0.2.6-RC2 binary for Linux x86_64 platforms
0.2.6-RC2 binaries for Windows XP and 2000
0.2.6-RC2 source code
October 10th, 2006
The 0.2.6-RC1 release is available.
The main change is that switching features are now available through the NM-16ESW card for Cisco 36xx models. I didn’t test extensively Spanning-Tree, SPAN, … so I’m interested in any feedback about complex configurations. The QoS features (CoS/DSCP treatment) are not yet handled.
- Cisco 7200 configuration import into NVRAM was broken ;
- Cisco 3620/3640 with Ethernet NM could loose packets due to incorrect network interrupt handling (7200 and 3660 were not affected);
- The JIT had an incorrect behavior in some cases that I won’t describe here (see BTS entry #65 for details), it was a “silent” bug ;
0.2.6-RC1 binary for X86 platforms
0.2.6-RC1 binary for X86_64 platforms
0.2.6-RC1 binaries for Windows XP and 2000
0.2.6-RC1 source code
September 14th, 2006
The final 0.2.5 is available (files are downloadable at the project homepage).
The important changes are:
- Removed buggy special handling of intra-page jumps in delay slots (causing boot failures of some c3600 images) ;
- Added support for c3600 IO memory size, which prevents Smart Init from running during boot ;
- Fixed c3600 serial driver: port 0 was disabled erroneously when manipulating other ports ;
- C3600 NVRAM configuration import/export is now working ;
- Fixed a loop overflow in idle pc computation ;
- Following a suggestion of Yannick Le Teigner, applied the optimization principle to PA-A1 card already used in dec21140, … Latency is clearly better (on my system, this dropped from about 150ms to 50 ms).
September 4th, 2006
The 0.2.5-RC5 is available for download. It mainly consists in the introduction of a new emulated platform, the Cisco 3600 series (3620, 3640 and 3660 are supported). Please note that this new release requires the use of Dynagen 0.5.0 which has been be published by Greg. Some changes were required to handle the new C3600 platform.
It is currenly possible to use the following Network Modules (NM):
- NM-1FE-TX (one FastEthernet port) ;
- NM-1E (one Ethernet port) ;
- NM-4E (four Ethernet ports) ;
- NM-4T (four Serial ports) ;
An ATM network module (like the NM-1A-OC3MM) will be available in the future. WIC and AIM modules are not supported.
To run a Cisco 3600 image on the command line, you will have to use the “-P 3600″ parameter (by default, a Cisco 7200 is emulated). The “-t” specifies the model (3620, 3640, or 3660). Choose the model corresponding to your Cisco IOS image (trying to run an incorrect image will lead to a crash).
The other important points:
- The “ethernet switch problem” on Windows has been fixed. It requires that you use the latest beta of WinPCAP, currently 0.4beta1. The previous release (0.3) doesn’t have the fix and will not work ;
- Huge improvement in performance of network device emulation (Ethernet and Serial). Now, the virtual devices can transmit up to 16 packets at each “TX ring scan pass” ;
- Improvement of “idle-pc” handling: now, interrupts triggered by emulated hardware (especially network devices) can break the idle loop. The visible effect is a better packet latency.
- Enhancements to the console by Peter Ross. Many thanks to him!
- The PCI bus emulation has been rewritten to be completely dynamic (this was required for Cisco 3660) - no visible effect ;
- The PA-POS-OC3 emulation has been rewritten - no visible effect ;
- The PA-4B (ISDN) emulation is in progress, but not finished (the ISDN switch emulation, with Q.921 support, will be required soon). Many thanks to Vernon Missouri for offering this card.
0.2.5-RC5 binary for X86 platforms
0.2.5-RC5 binary for X86_64 platforms
0.2.5-RC5 binaries for Windows XP and 2000
0.2.5-RC5 source code
July 27th, 2006
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) ;
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
July 22nd, 2006
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.
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
July 21st, 2006
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()! */
#define FD_SETSIZE 1024
July 16th, 2006
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.
- 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.
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
July 7th, 2006
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)
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