The overarching goal of my research is to make the Internet faster and more reliable. My group designs foundational Internet systems such as cloud computing infrastructures and data centers. See this for some samples of our research on building fast data centers and network verifiers.
Note: I'm visiting Meta as part of an effort to transfer our research to their datacenters and not actively hiring new students and postdocs. I do, however, always consider exceptionally strong candidates. Please feel free to reach out if you see a good fit.
Tip: We do not work on machine learning! ;)
Academic BackgroundPh.D., University of Illinois, Urbana-Champaign (CS), 2016
M.Sc., University of Toronto (CS), 2011
B.Sc., Sharif University of Technology (Computer Eng), 2009
My lab's research focuses on foundational networked systems. We design and build fast, reliable networked systems with provable guarantees, drawing techniques from formal methods, distributed systems, and control theory. See a few samples of our projects:
Fast, Burst-resilient Cloud Networks
Why is my cloud application so slow?
A grand challenge in cloud networks today is network congestion. This is particularly challenging due to the "bursty" nature of traffic in datacenters that host cloud applications. We build systems to measure and analyze the nature of traffic, and design burst countermeasuress.
Origins of Bursts
NSDI'23 | Paper | Slides
What causes datacenter bursts? What are the structural properties of bursts? Although crucial for effectively managing bursts, answering these questions is difficult given the complexity and scale of today's datacenters. Our work uncovers the key elements that form and blunt bursts. Countering conventional wisdom that burstiness is primarily a function of the application layer and preserved by protocol stacks, we show the pronounced role of lower layers in modern networks in the formation and suppressing of bursts. We demonstrate that has broad implications for optimal resource provisioning, congestion control, and buffer sizing.
Selective and Preemptive Deflection
CoNEXT'21 | Paper | Code CoNEXT'23 | Paper | Code
Given the low network utilization in datacenters, one would expect packet deflection, in-situ re-routing of packets that arrive at a full buffer to a different port, to effectively prevent packet loss. However, if deployed naively, deflection leads to excessive packet re-ordering, exacerbated congestion, and head-of-the-line blocking.
We design Vertigo to resolve these challenges by selectively deflecting the packets that cause persistent congestion. We augment the end-host network stack with a transport-independent extension that tracks and marks flows with their remaining bytes. Our in-network deflection component uses the flow size information to prioritize re-routing packets from flows with more data to send. Finally, an extension to the receive-side of end-host stacks retrieves the correct ordering of packets before passing them to transport and higher-level protocols.
Vertigo effectively manages microbursts under light and heavy loads, e.g., under 75% load, Vertigo reduces the mean incast query completion times by 57% and 76% over ECMP and DIBS.
Network Liveness Verification
Liveness Verification of Stateful Networks
NSDI'20 | Paper
Why isn't my network live?
This is a difficult question to answer because modern networks rely on a variety of complex stateful network functions to implement rich policies. The liveness of such networks hinges on correct operations of these functions. Unfortunately, despite exciting recent work on network verification, no prior approach is practical for, or applicable to, validating liveness of stateful network functions. We develop novel encodings of the behavior of network programs under dynamic events such as network state changes using Boolean formulas that can capture rich semantics such as packet counters. We prove that our encodings are equivalent to the program and show experimentally that they can express a variety of network functions and are orders of magnitude more scalable to verify than naive encodings.
Fall 2022, Spring 2021
Spring 2022, Fall 2020, Spring 2020, Spring 2019
Fall 2021, Fall 2018
Selected Topics in Cloud and Networked SystemsDepartment of Computer Science, Johns Hopkins University
Spring 2022, Spring 2021, Fall 2020
Service in CommunityCollege of Engineering, University of Illinois at Urbana-Champaign
Bio & Research Lab
I'm an assistant professor in the Department of Computer Science at Johns Hopkins since fall 2018. I received my Ph.D. at the University of Illinois at Urbana-Champaign in December 2016, my M.S.c and B.S. at the University of Toronto (2011) and Sharif University of Technology (2009), and worked/interned at Max Planck Institute (MPI), Microsoft Research (MSR), and Princeton University.
I have founded and currently serve as the director of Introduction to Computing Research (ICR), a program with the mission to introduce undergraduate students to various areas of computing research and career options in computing.
At Hopkins, I'm the director of Hopkins' Networking lab. Our research integrates networked systems and theory and has been awarded a number of grants and fellowships including an Intel Fast Forward award, Facebook Faculty Research award, a Masson graduate fellowship (to my student Katarina Mayer), a VMware fellowship (one of the three winners in 2015-16 worldwide), a Feng Chen award, and a Gottlieb fellowship. I'm fortunate to work with the great group of students listed below.
- Sepehr Abdous (PhD student since 2019)
- Sana Mahmood (PhD student since 2021, Yan Zhang Fellow)
- Senapati (Diwang) Sang Diwangkara (PhD student since 2021, co-advised with Ryan Hunag)
- Erfan Sharafzadeh (PhD student since 2019)
- Shriya Atulbhai Kaneriya (MS student, 2020-21)
- Katarina Mayer (MS student, 2020-21, Gerald M. Masson Fellow)
- Pranav Shirke (MS student, 2020-21)