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?
- Network transparency through Traffic Receipts: how can a network produce verifiable reports on its own performance?
- Verifiable Network Devices: how should we write packet-processing software, such that we can reason about its semantics?
- Network Devices with Performance Clarity: how should we write packet-processing software, such that we can reason about its performance?