GnucNS was built to study the performance of decentralized networks (specifically gnutella) in different configurations. The goal of the project is to answer some fundamental design questions such as the proper supernode upgrade / downgrade algorithms, the right number of connections and TTL for a target network size, and the effect of different settings on the amount of bandwidth needed and wasted. Different parts of the simulator: ultrapeers, webcache, traffic, can be turned on and off for each run, and setups can be saved to be analyzed later.
This project is under GPL for the benefit of the research community. GnucNS is written in C# to achieve a clean and to the point design underneath. It can be compiled using the packages released by Microsoft or Ximian.