I am a software engineer at Intentionet, working on network verification and intent-based networking. My focus these days is primarily on contributing to Batfish and Pybatfish — open source tools for network validation and analysis.
Before joining Intentionet I obtained a Ph.D. from Department of Computer Science at University of North Carolina at Chapel Hill, where I was advised by professor Michael K. Reiter. I was also very lucky to have professor Vyas Sekar as my long-time collaborator and adviser.
My dissertation explored the intersection of Software-Defined Networking (SDN) and global network optimization. In particular, I looked at how to efficiently write and execute SDN applications that try to perform optimal resource management (e.g., traffic engineering) in the SDN world. As a result, I ended up developing a library called SOL for expression and composition SDN resource-management applications.
Among other things, I also worked with network intrusion detection systems, looked at patterns of malware infections, and tested microservice applications. See full list of publications here.
Below is a list of projects I actively contribute to, or still try to maintain from my grad school days.
Batfish is a network configuration analysis tool that can find network issues and guarantee the correctness of (planned or current) network configurations.
With Batfish, network operators can:
- ensure their configurations are provably correct
- reason about dataplane reachability and security of their network; and
- analyze proposed changes and “diff” configs
It’s a great tool for both exploring your network and as a testing part of your network automation workflow (e.g., in a CI/CD pipeline.)
SOL and Chopin — SDN and network optimization
SOL is a framework that simplifies writing new network optimization applications atop SDN controllers. It abstracts away low-level optimization details and interacts with the SDN controller on user’s behalf.
Chopin1 is an extension to the SOL framework that allows optimal composition of multiple applications.
Together, give the ability for network operators to quickly prototype and deploy optimization applications (to load-balance traffic, minimize latency, etc.) on top of an SDN controller.
TMgen — Traffic matrix generation
A Python library for traffic matrix generation. In my research I had to generate a variety of spatial and temporal traffic matrices, so I open-sourced a library for his very purpose. It supports generation of both:
- basic traffic matrices (uniform, exponential, gravity), and
- more interesting spatio-temporal traffic matrices based on recent research.
Projects I am no longer actively involved in, but the code is still available (or someone else is working on it.)
Gremlin — microservice resilience testing
On an internship at IBM Research, I helped start a project for resiliency testing of microservice applications at the network level. Using SDN ideas (e.g., split of control and data plane), we had built an automated testing framework for ensuring that microservice applications are resistent to failures. Some ideas from our project have been incorporated into the IBM Service Proxy. The research prototypes are available on our GitHub project page.