[Box-Package.png][François Taïani] Software

Here are some programs I have developped or contributed to during the course of my research or that of my students.


Decentralized topology construction protocols organize nodes along a predefined topology (e.g. torus, ring, hypercube). Such topologies have been used in many contexts ranging from routing to storage systems, publish-subscribe to event dissemination. Since most topologies assume no correlation between nodes locations and their position in the topology, they do not handle well catastrophic failures in which a whole region of the topology disappears. When this occurs typically, the overall shape gets lost. Polystyrene (developped with Simon Bouget, Hoel Kervadec, and Anne-Marie Kermarrec) is a novel decentralized epidemic protocol that maintains the initial shape of a decentralized overlay topology even if a large (consecutive) portion of the topology fails. The code proposed here contains a Scala implementation of Polystyrene on top of the PeerSim P2P simulator.

Download: peersim-polystyrene-4-Dec-2013.tgz (updated 4/12/2013)

PAMPA Variants

The archive below contains a modified version of the original PAMPA ns2 implementation that provides different variants of the algorithm. The archive also contains a ruby script to easily run a large number of simulations, while keeping track of the results and of the parameter sets you have used. (The scripts are rather primitive, but hopefully useful.) You will need ns2 and NOAH to compile the modified PAMPA files. Detailed instructions on how to do this are available on Hugo Miranda's PAMPA page.

Download: PAMPA-MMPAC-Code.zip (updated 18/09/2009)
Related Publications:


CosmOpen is a suite of reverse-engineering tools that helps developpers understand the complex behavioural relationships found in large software. CosmOpen allows users to navigate and mine otherwise intractable call graphes, and rapidly construct behavioural views of a complex system from a huge amount of dynamic data.

I have used CosmOpen to partially reverse-engineer an industry-grade CORBA implementation, Orbacus (Figure 1), and identify the key elements of a request lifecycle inside the ORB (Figure 2).

Figure 1 shows the interaction diagram that is obtained when directly observing Orbacus. This diagram is pretty much incomprehensible, whereas the filtered-out version of Figure 2, which was obtained with CosmOpen, clearly shows the different stages of a request's processing, from the socket connection ('accept'), up to the execution of the remote server method ('Hello_impl'), and through to the reply being sent ('send'). This second diagram also highlights the various threads involved and their relationships, something that is completely hidden by the original diagram's complexity.

Fig. 1: Orbacus's 4.1.2 request processing, obtained by CosmOpen's observation tool, dyngdb. This graph was constructed from 658 stack traces, totalling 9178 stack frames. It contains 2065 individual invocations, over 50 C-functions and 140 C++ classes.
Fig. 2: An abstract representation of the above graph, obtained with CosmOpen's Graph Manipulation tool, OPSBrowser. You can easily see the low level socket operations used by orbacus (accept, send, recv), as well as the multiple threads spawned to process the request (t3, the accepting thread, t8, the receiver thread, t4, the worker thread).

The CosmOpen suite is made of three components: dyngdb, hydrogen, and OPSBrowser:

Right now, only OPSBrowser and dyngdb are available under the GNU General Public License.

Download: cosmopen_1_2beta1.tar.gz (updated 03/04/2009)
Related Publications:

Note Right now, the software has only be tested under Linux and Mac OS X. It should be fairly portable to other platforms, but this requires a little tuning. This is beta software, and there's certainly plenty of improvement room. If you need help or have suggestion, please contact me at f.taiani@lancaster.ac.uk.

[Maison.png]Back to Home

Last generated on 5 Feb 2020       francois.taiani@irisa.fr     Valid HTML 4.0!