OpenPCD console

8619867_origThe OpenPCD console is a quick-and-dirty VC++ project for the OpenPCD reader, allowing me to send individual commands (hex code) to an ISO 14443 (RFID) card – in my case a DESFire EV1 from NXP.

Using the MinGW (GCC) Compiler Suite the librfid-tool library (part of librfid) was modified so the console was able to initialize the OpenPCD reader and activate the card (anticollision). I also introduce a new function that serves as communication interface between the PCD and PICC:

extern int exchange_block(char *cmd, unsigned int clen, char *ret, unsigned int *rlen, unsigned int timeout, unsigned int flags);

The function simply forwards the parameters to the internal routines of the librfid library.

Unfortunately I have to confirm the issues with the OpenPCD reader as often discussed (but never solved) on their mailing list. The USB reader needs to be re-plugged (or reset using the debug cable) in order to get a defined state again (even with the unmodified code). The device also seems to suffer from a timing issue, so that the return code (of a valid command) does not always match the actual state. This behavior is very annoying if you depend on a previously received message – i.e. authenticate using a challenge response protocol.

Load Balancing of Virtual Machines

3513707_orig6749582_origA framework based on the Red Hat Cluster Suite that enables virtualization technologies to load balance virtual machines with zero-downtime (live migration) among physical servers.

The LBVM consists of several scripts that allow to load balance virtual machines (currently preconfigured: Xen and OpenVZ) among physical servers – the algorithm is fully configurable. LBVM uses the Red Hat Cluster Suite to provide high availability and rgmanager (part of the Red Hat Cluster Suite) to perform the actual migration. Developed cluster scripts for Xen and OpenVZ allow the rgmanager to perform live migrations with zero-downtime to provide maximum reliability and uptime. The load balancing algorithm uses preconfigured resources (cpu, mem, load; fully configurable) to decide when and where to move a virtual machine. Reports and migrations are logged and also available in human-readable format.

The project was developed during my time at the University and was honored with the “Best Project Award”. For more information check out the official page (link).

DRBDv8 Regression TestSuite

The “DRBDv8 Regression Testsuite” was designed to enforce rare, but fatal situations in the DRBDv8 pre-release. The testsuite executes and verifies predefined (but fully configurable) testcases by issueing the given commands on two or more nodes of a DRBD cluster. Before each testcase the so-called agents, who process the commands on local nodes, synchronize themselves so that resources can be accessed at the very same time.

The testsuite was developed in Perl in cooperation with Linbit. Two of our first three testcases were able to trigger an unhandled excecption in the DRBDv8 pre-release; and were fixed in the final release, of course.