0.2.8-RC2 release

October 14th, 2007

Hello all,

The 0.2.8-RC2 release is available. It’s mainly a bug fix release that requires no Dynagen upgrade (except for the ATM/Ethernet bridge).

New feature:

  • Ethernet/ATM bridge, conforming to the RFC1483 (bridged mode). I added this because I’ve this kind of devices on my network (xDSL modem). It will require a Dynagen upgrade to be usable.

Bug-fixes:

  • Fixed a PowerPC JIT bug that caused crashes on some 2600 images and prevented OSPF to work correctly on this platform ;
  • Fixed handling of CRC for WIC slots on 2691/3725/3745 ;
  • Fixed a bootflash malfunction occuring on 3600/7200 platforms ;
  • Added TCP keepalives for VTTY connections (ie console and aux ports) ;
  • Added ISL support for 2691/3725/3745 on-board Ethernet ports.

Files:

0.2.8-RC2 binary for Linux x86 platforms

0.2.8-RC2 binary for Linux x86_64 platforms

0.2.8-RC2 binaries for Windows XP and 2000

0.2.8-RC2 source code

Chris.

0.2.8-RC1 release - Introduction of Cisco 1700 platform and WICs

September 8th, 2007

Hello all,

The 0.2.8-RC1 release is available. It requires a Dynagen upgrade since the hypervisor control protocol has been modified. The new Dynagen release will be published by Greg soon.

New features:

  • Support of the Cisco 1700 platforms, with WIC-1T, WIC-2T and WIC-1ENET cards (as for the 2600, the images need to be uncompressed before use).
  • Support of WIC-1T and WIC-2T for the 2600 (2 WIC slots), 2691, 3725 and 3745 (3 WIC slots) platforms.
  • Support of NM-NAM and NM-CIDS interfaces BUT this not means that you can use them out of the box. It means that you can connect your virtual routers to a VMWare, QEMU, … virtual PC running the NM-CIDS/NM-NAM code. I don’t provide a method to do this, but you can take inspiration here: http://7200emu.hacki.at/viewtopic.php?t=3095. If someone wants to document how to setup this, he/she is welcome.
  • Plugin system (not documented yet) that allows to dynamically load new platforms. It is mainly for coding tests (it avoids to modify the dynamips core with temporary code).

Optimizations / Bug-fixes:

  • New generic card framework to reduce the code specific to each platform (it is transparent to users, and was required for WIC support) ;
  • Fixed JIT compiler for PowerPC and MIPS platforms on MacOS X (stack alignment) ;
  • Fixed JIT compiler for PowerPC on 64-bit Linux platform (incorrect “bctr” instruction) ;
  • Added ISL support for NM-1FE-TX card ;
  • Fixed the Serial cards (NM-4T, PA-4T, PA-8T, PA-POS-OC3, WICs) to handle correctly CRC stuff. Now, you can interconnect them to the virtual Frame-relay switches.

Important note: The use of WIC cards is a bit complicated without Dynagen, so I strongly recommend to use it to mask the gory details.

Files:

0.2.8-RC1 binary for Linux x86 platforms

0.2.8-RC1 binary for Linux x86_64 platforms

0.2.8-RC1 binaries for Windows XP and 2000

0.2.8-RC1 source code

Chris.

Access to a c6500 SUP1A/MSFC1

June 10th, 2007

Hi all,

Would someone be kind enough to provide me an access to a C6k with a Sup-1A/MSFC-1, for experimentation purposes ? (so, of course better if it’s a spare equipment).

Many thanks,

Chris.

0.2.7 final release

May 26th, 2007

Hello all,

The 0.2.7 final release is available. Compared to 0.2.7-RC3, it contains the following fix:

  • Cisco 2691/3725/3745: high packet loss on integrated FastEthernet ports when they were simultaneously enabled (incorrect interrupt clearing in TX ring handling, please see BTS entry #171 for details).

The development will continue with 0.2.8-RC1 to be published soon.

Files:

0.2.7 binary for Linux x86 platforms

0.2.7 binary for Linux x86_64 platforms

0.2.7 binaries for Windows XP and 2000

0.2.7 source code

Chris.

0.2.7-RC3 release

April 27th, 2007

Hello all,

The 0.2.7-RC3 release is available, as a bug-fix/optimization release.

Bug fixes:

  • Compressed IOS images for MIPS platforms were not working anymore. This is now fixed. You still have to uncompress images for the 2600 platform.
  • Cisco 3725 - slot 2 problem : slot 2 was not usable in RC2 leading to a lockup.

Optimizations:

  • New PowerPC JIT compiler which allows to add some optimizations for the generated code: register allocation, peephole optimizations, more efficient Condition Register (CR) handling.

Files:

0.2.7-RC3 binary for Linux x86 platforms

0.2.7-RC3 binary for Linux x86_64 platforms

0.2.7-RC3 binaries for Windows XP and 2000

0.2.7-RC3 source code

Chris.

0.2.7-RC2 release

April 15th, 2007

Hello all,

The 0.2.7-RC2 release is available. It is mainly a bug-fix/optimization release, without new features.

Bug fixes:

  • MIPS JIT: fixed a problem of jump in delay slots (occuring with a “forward” jump). This caused a malfunction for C7200-IO-2FE and C7200-IO-GE-E cards.
  • Cisco 2600: fixed a bug in DMA handling which caused incorrect writes out of DPRAM memory (and lead to image crashes).
  • Fixed JIT instruction tables, which caused a higher startup delay of the emulator on AMD64 platforms.
  • Serial interfaces (NM-4T, PA-4T, PA-8T): now allows MTU up to 18000 bytes.
  • NM-16ESW: filter CDP specifically to not propagate frames to all ports.
  • NM-4E: now works correctly on Cisco 2600 platforms.
  • Fixed source build (in NetIO filters) when PCAP is lacking.
  • Fixed source build for non-JIT platforms.

Optimizations:

  • Network interrupt handling was rewritten. Now these IRQs are managed on a per-slot/port basis, this also leads to a more accurate network device emulation.
  • PowerPC: optimizations in Condition Register (CR) handling.
  • JIT (MIPS, PowerPC): optimizations in jumps between different pages, allowing an higher performance. However, it may require to recompute idle-pc values. Greg will provide an “oldidle” compatibility option in Dynagen 0.9.1 for people who don’t want to change these values now.
  • JIT (MIPS, PowerPC): added a cache for instruction tables (as disk files), allowing a faster startup. If these files are deleted, they are rebuilt dynamically.

Files:

0.2.7-RC2 binary for Linux x86 platforms

0.2.7-RC2 binary for Linux x86_64 platforms

0.2.7-RC2 binaries for Windows XP and 2000

0.2.7-RC2 source code

Chris.

0.2.7-RC1 - PowerPC platforms

February 14th, 2007

Hello all,

The 0.2.7-RC1 release is available. It mainly introduces support for the PowerPC architecture. You will be able to mix MIPS and PowerPC platforms in the same hypervisor instance.

New platforms, port adapters and features:

  • Cisco 2600 platform. Possible Network Modules: NM-1E, NM-4E, NM-1FE-TX, NM-16ESW. NM-4T is not supported. This platform is very good for “CE” routers (less memory and less CPU power used) in your labs. Don’t forget to set the appropriate amount of RAM for recent IOS images ;
  • Cisco 7200 NPE-G2: basically working (excepted integrated GigabitEthernet ports), but not recommended for common use (a lot of bugs remain) ;
  • Cisco 7200 new Ethernet Port Adapters: PA-2FE-TX (2 FastEthernet ports), PA-GE (1 GigabitEthernet port), C7200-I/O-2FE/E, C7200-I/O-GE+E. These PA and IOcards are based on the Intel i82543 chip, which is incompletely emulated. Please let me know if you encounter strange problems with them.
  • Greg Anuzelli added support for PCAP capture on virtual interfaces. You can capture Serial (Cisco HDLC, PPP, Frame Relay) and Ethernet packets. ATM is not supported. This will require a Dynagen upgrade.
  • “Sparse memory”: this feature will allow to start more routers per hypervisor instance. The virtual memory is only allocated when required, and Ghost RAM is loaded only once (if used). This will also require a Dynagen upgrade.

Bug fixes:

About the switch platforms (3550, 3560, …), please read http://7200emu.hacki.at/viewtopic.php?t=658 , whose the conclusion is that without the help of Cisco Systems, it is probably impossible to do it (specific ASICs, POST tests at boot, etc.)

Files:

0.2.7-RC1 binary for Linux x86 platforms

0.2.7-RC1 binary for Linux x86_64 platforms

0.2.7-RC1 binaries for Windows XP and 2000

0.2.7-RC1 source code

Chris.

0.2.6-RC5 - BPDU handling fixes

December 7th, 2006

Hello all,

The 0.2.6-RC5 release is available. It mainly fixes (again!) BPDU handling on the NM-16ESW switch module.

Bugfixes / Changes:

  • Incorrect BPDU MAC address recognition: this solves the problem of IS-IS not establishing adjacencies through a NM-16ESW (reported on Hacki’s forum) ;
  • BPDU packets tagged incorrectly on non-trunk ports ;
  • Merged a patch from Thomas Pani to list VM TCP console ports (required for gDynagen).

Files:

0.2.6-RC5 binary for Linux x86 platforms

0.2.6-RC5 binary for Linux x86_64 platforms

0.2.6-RC5 binaries for Windows XP and 2000

0.2.6-RC5 source code

Chris.

Ghost RAM feature

November 17th, 2006

As promised, I’ll explain today what is the ghost RAM feature and how it can be used to decrease memory usage of the virtual router instances. First, it is important to understand how the virtual RAM (vRAM) works and how the IOS is loaded into it at startup. Depending on your dynamips/dynagen settings, the vRAM is simulated either from a memory-mapped file, either directly from host memory (with the well-known “malloc()” function). When a virtual instance is started, the Cisco IOS image is loaded into the vRAM.

The problem is that when you start many instances with the same image, the code is loaded and duplicated for each instance (since each instance has its own vRAM). The ghost RAM feature is a solution that helps to decrease memory usage by sharing the IOS image between different instances (technically, it relies on mmap() and Copy-On-Write mechanism to accomplish this). So, if you have an uncompressed IOS image of 50 Mb, and you start 5 instances, you should have a gain of 4 x 50 = 200 Mb.

Let’s take a simple example. The first step is to generate the ghost RAM file, which will contain the IOS image code shared by all instances. Use only uncompressed IOS images for that! (if you use compressed images, each instance will uncompress it for its own usage, and the result will not be shared).

chris@portchris$ ./dynamips -g ghost_ram image.bin
Cisco 7200 Simulation Platform (version 0.2.6-RC4-x86)
Copyright (c) 2005,2006 Christophe Fillot.
Build date: Nov 15 2006 23:05:16

IOS image file: image.bin

CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb.
NVRAM is empty, setting config register to 0×2142
C7200 instance ‘default’ (id 0):
VM Status  : 0
RAM size   : 256 Mb
IOMEM size : 0 Mb
NVRAM size : 128 Kb
NPE model  : npe-200
Midplane   : vxr
IOS image  : image.bin

Loading ELF file ‘image.bin’…
ELF entry point: 0×80008000

C7200 ‘default’: starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled.
Shutdown in progress…
Shutdown completed.

The instance is started with “-g” parameter to generate a file called “ghost_ram”. Once started, the instance stops, it is normal.

Now, we can start instances that will use this “ghost_ram” file, and share the IOS image loaded into it:

chris@portchris$ ./dynamips -i 0 -G ghost_ram image.bin
Cisco 7200 Simulation Platform (version 0.2.6-RC4-x86)
Copyright (c) 2005,2006 Christophe Fillot.
Build date: Nov 15 2006 23:05:16

Instance ID set to 0.
IOS image file: image.bin

CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb.
NVRAM is empty, setting config register to 0×2142
C7200 instance ‘default’ (id 0):
VM Status  : 0
RAM size   : 256 Mb
IOMEM size : 0 Mb
NVRAM size : 128 Kb
NPE model  : npe-200
Midplane   : vxr
IOS image  : image.bin

Loading ELF file ‘image.bin’…
ELF loading skipped, using a ghost RAM file.
ELF entry point: 0×80008000

C7200 ‘default’: starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled.
ROMMON emulation microcode.

Launching IOS image at 0×80008000…
[…]

Each instance will use the “ghost_ram” file as a “base”. Each time a page of this mapped file is to be modified (by a write operation of the emulated CPU), a local copy of it is automatically generated by the operating system. Since an IOS image mainly consists in code and some static data never modified, this can be shared easily.

Greg is currently adding support for this feature in Dynagen. Just one thing to remember: set the same IOS image and the RAM parameters when you start an instance using a ghost RAM file.

0.2.6-RC4 (fixes for Cisco 2691/3725)

November 15th, 2006

Hello all,

The 0.2.6-RC4 release is available. It fixes the problem found with some IOS images for Cisco 2691 and 3725 platforms (crash at end of boot).

Files:

0.2.6-RC4 binary for Linux x86 platforms

0.2.6-RC4 binary for Linux x86_64 platforms

0.2.6-RC4 binaries for Windows XP and 2000

0.2.6-RC4 source code

Chris.

UPDATE: On Linux platforms, you have to install libpcap 0.9.4 (or better) - the build process changed in RC3 and RC4 to use dynamic instead of static library and I didn’t notice that.