About

My work revolves around distributed systems, networking, and operating systems.
Broadly, I am interested in understanding the behavior of systems with many components
for enabling new functionality, and making sure they work as they should.
In particular,
I'm interested in how to build, operate, and diagnose large scale Internet systems; and in
networking and power management in embedded distributed systems such as sensor networks.

Highly successful internship season for students! Andrew is going to the SDN group at Google (with Amin Vahdat), Jeff is going to IBM Research in Austin (with Collin Dixon), Jonathan is going to MSR Redmond (with Peter Bodik)!

Research Projects

Participatory Networking

The PANE project aims to allow end-user applications to help in the configuration of a network. PANE is both a paradigm and a prototype SDN controller that solves the problem of privilege delegation and conflict resolution when unprivileged users are given read and write access to network services, configuration, and state. Read more...

Mobile Device Energy

We are interested in improving the battery life of mobile devices. Today's mobile devices' need for energy far surpasses their battery capacity to allow for unrestricted use and long battery life. Users must prioritize their usage to avoid running out of battery. However, for a user to do this efficiently is almost impossible: it requires knowledge of the energy and power characteristics of the applications and of the hardware components of the particular phone. This leads to a poor experience and to frustration. We propose an OS abstraction, Application Modes, that allow applications and the OS to collaborate in exposing to the user only what she cares about and understands: the tradeoff between battery lifetime and functionality. Read our HotMobile paper for an introduction to our approach.

Tracing Distributed Systems

Distributed systems are growing ever more complex, spanning many layers of abstraction, machines, and administrative domains, and integrating code written, deployed, and operated by different people. In these
scenarios it becomes increasingly difficult to understand how a system behaves, and, especially, how and why it
fails. Causal tracing is a technique that captures the causality of events across all of these components,
layers, and machines, and eases the task of understanding complex distributed systems. There are a multitude
of causal tracing systems and frameworks, including many research and industry projects. Examples include our own
X-Trace project [GitHub], as well as systems such as Google's Dapper, Twitter's Zipkin, and Cloudera's HTrace.

We are interested in how to extract information from both complex individual traces and across traces, to identify root causes of problems, detect unexpected anomalies, and make tracing more efficient, by biasing trace sampling and detail capture to maximize trace information on a fixed performance budget.

Older Projects

Fine-grained tracking of energy usage in wireless sensor networks, Quanto determines which applications used how much energy on each hardware component, even for applications that span multiple network nodes.