Contact
Distributed systems, networks, systems for machine learning
High-Performance Transactional Storage
Co-Designing Data Center Networks and Distributed Systems
Sapphire: Designing new operating system abstractions for mobile/cloud applications
Arrakis: The Operating System is the Control Plane
Distributed storage systems
uProxy
BotLab: a Real-Time Botnet Monitoring Platform
BotLab is a platform that continually monitors and analyzes the behavior of spam-oriented botnets. BoLab gathers multiple real-time streams of information about botnets taken from distinct perspectives. By combining and analyzing these streams, BoLab can produce accurate, timely, and comprehensive data about spam botnet behavior.
Privacy-preserving data sharing
Reverse Traceroute
Traceroute has long had a fundamental limitation that affects all these applications: it does not provide reverse path information. In this project, we address this longstanding limitation by building a reverse traceroute tool. Our tool provides the same information as traceroute, but for the reverse path, and it works in the same case as traceroute, when the user may lack control of the destination.
Seattle: the Internet as a Testbed
Seattle is a platform for networking and distributed systems research. It's free, community-driven, and offers a large deployment of computers spread across the world. Seattle works by operating on resources donated by users and institutions. The global distribution of the Seattle network provides the ability to use it in application contexts that include cloud computing, p2p, ubiquitous/mobile computing, distributed systems.
Synoptic: Studying Logged Behavior with Inferred Models
Computer systems are often difficult to understand and debug. A common way of gaining insight into a system's behavior is to inspect execution logs. Unfortunately, manual inspection of logs is an arduous process. We have developed a tool called Synoptic that helps developers by inferring a concise and accurate system model, in the form of a finite state machine, from execution logs. Synoptic processes the logs that most systems already produce, and it requires developers only to specify a set of regular expressions for parsing the logs. Synoptic models have been used to find new bugs, increase developer confidence in the correctness of their code, and help developers better understand their programs.