Antonio Carzaniga

Student Projects

This page briefly describes a number of projects, or simply project topics, that Antonio Carzaniga is interested in. If you are interested in working on one of these projects, please contact Antonio Carzaniga.

Netowork Design and Engineering

The following is a series of interesting projects offered in collaboration with the research and development team of a network operator.

Content-Based Router (or Siena Next Generation)

Imagine a network where information goes to whomever is interested in it, without requiring that a sender specify any destination. This is the main idea behind content-based publish/subscribe networking, or simply content-based networking.

A bit more formally, a content-based network is one where senders can send messages and receivers can declare their interests by posting predicates. A predicate is a Boolean expression that, applied to a message, evaluates to true if the message is of interest to a receiver.

I have been working on developing the bits and pieces of this idea for a while (you can find more information and pointers on what I have done information is available here). As part of my initial effort, I have developed a distributed publish/subscribe system called Siena. Although Siena was very useful as a first prototype, I think it is now time to go back and revisit the design of the Siena system in a fundamental way.

The ultimate goal for this project is to design and develop a high-performance, robust and yet extensible content-based router. This router should be robust enough to support sizeable deployments, and at the same time it should serve as a platform to experiment with routing protocols and forwarding algorithms, etc. The following is a list of sub-projects that should contribute to this ultimate goal.

Controlling Experiments on Distributed Testbeds

Suppose you want to develop a new large-scale distributed system. For example, a file-sharing system. How would you go about testing your system? How would you fine-tune its performance? To start, you would need to have access to a testbed. In particular, if your system is intended to be deployed on many machines across the Internet, then you'll need a large-scale and possibly realistic testbed such as PlanetLab. However, having access to a testbed is only the beginning. You'll probably realize very quickly that executing large-scale experiments manually is very tedious, time-consuming, and error-prone, and you'll want to automate the deployment and execution of your experiments.
this page is maintained by Antonio Carzaniga and was updated on February 18, 2019