We work on fundamental questions regarding the design and construction of practical and dependable network systems. Our core interest is the functionality deployed inside the network infrastructure, e.g., inside Internet routers, data-center switches, or intermediate nodes in a sensor network. We aim to determine what functionality should be deployed inside vs. on top of these network elements—when should the network support sophisticated packet processing vs. being merely a pipe for packets? We also work on how this functionality should be implemented, e.g., should the network process packets on customized hardware or on general-purpose processors? In short, our research goal is to identify and build the right network layer for different communication architectures.
- Network Neutrality Inference: when and how can we reason about the neutrality of a network based on external observations?
- Verifiable Dataplanes: how should we write packet-processing software, such that we can prove useful properties about it?
- RouteBricks: how can a software router achieve multi-Gbps line rates?
- Traffic Receipts: how can a network produce verifiable reports on its own performance?
- Practical network tomography: what is the most we can infer about a real network based on external observations?