NetKAT

A Domain-Specific Language for Network Programming with Formal Foundations

About NetKAT

NetKAT is a domain-specific language for specifying and reasoning about packet-forwarding networks. It is grounded in Kleene Algebra with Tests (KAT) and provides a sound and complete equational theory for reasoning about network behavior. NetKAT enables both high-level network programming and automated verification of network properties.

Formal Semantics

Built on Kleene Algebra with Tests, providing rigorous mathematical foundations for network programming with provable correctness guarantees.

Automated Verification

Check network properties like reachability, isolation, and program equivalence automatically using decision procedures and symbolic tools.

Algebraic Reasoning

Express complex network behaviors using algebraic operators, enabling equational reasoning about network programs.

Tools & Resources

Interactive Tutorial

Learn NetKAT concepts step-by-step with interactive examples, from basic packet tests to advanced verification techniques.

Start Tutorial

NetKAT Playground

Experiment with NetKAT expressions in an interactive environment with curated examples and exercises.

Open Playground

KATch2 Verifier

A fast symbolic verifier for NetKAT that efficiently checks program equivalence and network properties.

View on GitHub

Papers

Active Learning of Symbolic NetKAT Automata

Mark Moeller, Tiago Ferreira, Thomas Lu, Nate Foster, Alexandra Silva

PLDI 2025 • DOI

Develops algorithms for actively learning NetKAT automata models of unknown networks, facilitating automated inference of network behaviors for verification purposes.

StacKAT: Infinite State Network Verification

Jules Jacobs, Nate Foster, Tobias Kappé, Dexter Kozen, Lily Saada, Alexandra Silva, Jana Wagemaker

PLDI 2025 • DOI

Introduces StacKAT, an extension of NetKAT with a stack data structure for modeling networks that manipulate packet stacks (e.g. MPLS or tunneling protocols).

KATch: A Fast Symbolic Verifier for NetKAT

Mark Moeller, Jules Jacobs, Olivier Savary Belanger, David Darais, Cole Schlesinger, Steffen Smolka, Nate Foster, Alexandra Silva

PLDI 2024 • DOI

Introduces KATch, a tool for fast symbolic verification of NetKAT programs, enabling efficient checking of program equivalence and other properties using symbolic automata techniques.

Guarded NetKAT: Soundness, Partial-Completeness, Decidability

Jacob Wasserstein

Master's Thesis, 2023 (Cornell University) • DOI

Introduces guarded NetKAT (GNetKAT), proves soundness and partial-completeness, and introduces a (almost) linear-time coalgebraic decision procedure for GNetKAT program equivalence.

Concurrent NetKAT: Modeling and Analyzing Stateful, Concurrent Networks

Jana Wagemaker, Nate Foster, Tobias Kappé, Dexter Kozen, Jurriaan Rot, Alexandra Silva

ESOP 2022 • DOI

Extends NetKAT with constructs for concurrency and stateful interactions, introducing a model based on partially ordered multisets (pomsets) for reasoning about concurrent network behaviors.

DyNetKAT: An Algebra of Dynamic Networks

Georgiana Caltais, Hossein Hojjat, Mohammad Reza Mousavi, Hünkar Can Tunç

FoSSaCS 2022 • DOI

Proposes an extension of NetKAT to handle dynamic network updates and multi-packet interactions, adding constructs for synchronization between control-plane updates and data-plane forwarding.

Explaining Safety Failures in NetKAT

Georgiana Caltais, Hunkar Can Tunc

arXiv preprint, 2021 • arXiv

Proposes methods for explaining safety violations in NetKAT programs by identifying undesired behaviors and providing equational proofs of their occurrence.

MatchKAT: An Algebraic Foundation For Match-Action

Xiang Long

arXiv preprint, 2021 • arXiv

Proposes MatchKAT, an extension of NetKAT for modeling match-action packet processing in network switches.

PλoNK: Functional Probabilistic NetKAT

Alexander Vandenbroucke, Tom Schrijvers

POPL 2020 • DOI

Integrates Probabilistic NetKAT into a functional programming setting, treating network policies as first-class, higher-order functions and extending the language with λ-calculus features.

McNetKAT: Scalable Verification of Probabilistic Networks

Steffen Smolka, Praveen Kumar, David M. Kahn, Nate Foster, Justin Hsu, Dexter Kozen, Alexandra Silva

PLDI 2019 • DOI

Introduces McNetKAT, a model checker for probabilistic NetKAT programs that focuses on the history-free fragment and provides exact analysis using finite-state absorbing Markov chains.

Normal forms for match-action programs

Felicián Németh, Marco Chiesa, Gábor Rétvári

CoNEXT 2019 • DOI

Introduces a variant of NetKAT for specifying normal forms of match-action programs, using ideas from relational databases and formal language theory.

Towards an Analysis of Dynamic Gossip in NetKAT

Malvin Gattinger, Jana Wagemaker

RAMiCS 2018 • DOI

Uses NetKAT to model and analyze the dynamic gossip protocol, where network links appear or disappear as agents share information.

An Algebraic Approach to Automatic Reasoning for NetKAT Based on Its Operational Semantics

Yuxin Deng, Min Zhang, Guoqing Lei

ICFEM 2017 • DOI

Develops an operational semantics for NetKAT and leverages it for verification using the Maude system, enabling automatic analyses such as reachability and temporal property model checking.

Deciding Probabilistic Program Equivalence in NetKAT

Steffen Smolka, David M. Kahn, Praveen Kumar, Nate Foster, Dexter Kozen, Alexandra Silva

arXiv preprint, 2017 • arXiv

Tackles the problem of checking equivalence of Probabilistic NetKAT programs, restricting to the history-free fragment and developing a decision procedure based on constructing and comparing stochastic matrices.

WNetKAT: A Weighted SDN Programming and Verification Language

Kim G. Larsen, Stefan Schmid, Bingtian Xue

arXiv preprint, 2016 • arXiv

Extends NetKAT to WNetKAT by incorporating weights, enabling the modeling and verification of networks with quantitative attributes like bandwidth and latency.

Probabilistic NetKAT

Nate Foster, Dexter Kozen, Konstantinos Mamouras, Mark Reitblatt, Alexandra Silva

ESOP 2016 • DOI

Extends NetKAT with probabilistic choice, allowing programs to specify randomized network behaviors. Provides a denotational semantics in terms of distributions on packet histories and a sound and ground-complete equational axiomatization.

Temporal NetKAT

Ryan Beckett, Michael Greenberg, David Walker

PLDI 2016 • DOI

Extends NetKAT with syntactic constructs from past-time, finite-trace linear temporal logic to support writing queries about packet histories.

Event-Driven Network Programming

Jedidiah McClurg, Hossein Hojjat, Nate Foster, Pavol Cerny

PLDI 2016 • DOI

Introduces an extension of NetKAT with mutable state to support event-driven network updates, ensuring consistent behavior during dynamic changes.

A Fast Compiler for NetKAT

Steffen Smolka, Spiridon Eliopoulos, Nate Foster, Arjun Guha

ICFP 2015 • DOI

Presents a high-performance compiler for NetKAT that handles complex features like regular paths and virtual networks, significantly improving compilation times with optimizations like symbolic automata representations.

A Coalgebraic Decision Procedure for NetKAT

Nate Foster, Dexter Kozen, Mae Milano, Alexandra Silva, Laure Thompson

POPL 2015 • DOI

Presents a new algorithm for deciding equivalence of NetKAT programs by constructing finite automata (policy automata) for NetKAT terms. Despite NetKAT's equational theory being PSPACE-complete, shows the procedure is efficient in practice.

NetKAT: Semantic Foundations for Networks

Carolyn Jane Anderson, Nate Foster, Arjun Guha, Jean-Baptiste Jeannin, Dexter Kozen, Cole Schlesinger, David Walker

POPL 2014 • DOI

Introduces NetKAT, a network programming language grounded in Kleene Algebra with Tests (KAT), providing a sound and complete equational theory for reasoning about network behavior.

NetKAT – A Formal System for the Verification of Networks

Dexter Kozen

APLAS 2014 • DOI

An accessible survey and tutorial of NetKAT's design and theory, providing a self-contained introduction to NetKAT's syntax, semantics, and equational reasoning principles.

People

NetKAT has been developed by researchers from multiple institutions, with significant contributions from Cornell University, Princeton University, Radboud University, and other academic institutions.

Carolyn Anderson

David Walker

Lily Saada

Mark Moeller

Tiago Ferreira

Thomas Lu

Olivier Savary Belanger

David Darais

Cole Schlesinger

Hossein Hojjat

Jacob Wasserstein

Xiang Long

Michael Greenberg

Ryan Beckett

Mohammad Reza Mousavi

Felicián Németh

Marco Chiesa

Gábor Rétvári

Hünkar Can Tunç

Alexander Vandenbroucke

Tom Schrijvers

Praveen Kumar

David M. Kahn

Justin Hsu

Malvin Gattinger

Yuxin Deng

Min Zhang

Guoqing Lei

Kim G. Larsen

Stefan Schmid

Bingtian Xue

Mark Reitblatt

Jedidiah McClurg

Pavol Cerny

Spiridon Eliopoulos

Mae Milano

Laure Thompson

Jean-Baptiste Jeannin

Ernest Ng

Emmanuel Suárez Acevedo

Kevin Batz