Network Verification and the Creative Habit

Network Managers today in clouds often tune their networks by configuring routers using a low level assembly-level language that often leads to errors that can bring down their networks for hours. At UCLA, we would like to help create a new field called Network Design Automation which does for networking what the Electronic Design Automation Industry did to make chip design and validation more reliable. As Berkeley did in the 1970s, we would like to invite grad students in networking and Programming Languages to join this adventure in this research topics class as seek to read the early papers in this field and add some structure, and look for new research directions. We will limit ourselves to the question: Can we use formal methods to verify that networks do the right thing statically (Network Verification) and only briefly deal with a second important question: Can we use compiler techniques to design correct by construction network configurations (Network Synthesis).

In this reading course, we will divide the world into 3 parts. Recognizing that networks have a data plane (e.g., IP forwarding) and a control plane (that builds the forwarding plane, e.g., BGP) we will study key papers in: data plane verification (Anteater, Veriflow, HSA, NetPlumber, Atomic Predicates, NoD, and the use of symmetries for scaling); control plane verification (early work by Griffin, work by Franck and Xie at CMU, Batfish, ERA from CMU) and control plane synthesis (Propane). We will impinge on languages to state intent and some semantics but our primary thrust is on tools for real networks.

To help empower students to use this class not just to read what has been done but to create new research directions in this emerging field, we will spend the first ten minutes of each class studying one paradigm (e.g., scratching, searching for a spine) for creativity taken from the book by Twyla Tharp called "The Creative Habit". The intent is that graduate students can help face the eternal question: how do I start some research of my own? We will also relate the lectures from the point of view of the graduate students who helped create each paper and their journey.


Lecture 1, Introduction to the Class, and the Syllabus

Lecture 2, Models of Networking and Formal Methods

Lecture 3, Header Space Analysis

Lecture 4, Header Space Analysis in More Detail

Lecture 5, Incremental Header Space Analysis

Lecture 6, Faster Network Verification using Atomic Predicates

Lecture 7, Scaling Network Verification using Symmetries and Surgeries

Lecture 8, Network Verification applied to Cellular Networks

Lecture 9, Network Verification aplied to testing Networks: ATPG

Lecture 10, Software Data Plane Verification of Router Software

Lecture 11, Transition to Control Plane, Static Analysis of BGP Faults, based on Feamster's rcc slides

Lecture 12, Batfish: A Datalog Simulator for Control and Data Planes, based on Ari Fogel's slides

Lecture 13, Finding Bugs in BGP Control Planes using ERA

Lecture 14, Transition to Synthesis: Ryan Beckett's slides on Propane to Synthesize BGP Configurations

Lecture 15, Summary of Class, Course Review <

Prepared by George Varghese
Last Modified June 2020 .