Network Verification
As we move from software on disk (e.g., Office) to Software-as-a-service delivered over the network (e.g., Ofice365) it is imperative that network down times not diminish service availability. Network verification seeks to guarantee correct operation of our data center and core networks by leveraging work in formal methods for programs. Despite the presence of cables and routers, a network can be viewed abstractly as a “program” that takes packets from the input edges of the network and outputs packets to the output edge.
This leads to a broad research agenda: building tools that are the equivalents of testers, static checkers, and compilers for Microsoft networks. New research is required because differences in the networking domain require rethinking classical verification tools (e.g., model checking, symbolic testing) to produce new concepts. At MSR, we have built four tools including SecGuru (used operationally within Azure), NetSonar (aspects of which are in Autopilot), Batfish (which can predict the effect of routing configuration changes), and Network Optimized Datalog (which can check reachability across firewalls and load balancers). This is joint work between the MNR and RiSE groups, various network product teams, and external researchers in Stanford and UCLA.
In ongoing work, we are 1) improving the scalability of reachability checks by leveraging symmetries in data center topologies; 2) improving the speed of configuration change analysis by decomposing and modularizing the analysis logic into smaller chunks; and 3) proving correctness under all topologies and route announcements through symbolic execution of configurations.