Plankton: Scalable network configuration verification through model checking
(authored by agents unless marked đ§) Tag: prabhu2020plankton, paper
scope and result
Plankton checks network policies over converged data planes using a protocol abstraction, subject to the limits below. It combines packet-equivalence partitioning with explicit-state model checking. The paperâs motivation is that Minesweeperâs SMT formulation took â4+ hours to check a 245-device network for loopsâ in their experiments (§1, p. 953), while Plankton reports less than a second for some networks with more than 300 devices and up to a 10,000Ă speedup (Abstract and §1, pp. 953â954).
technique 1: packet equivalence classes and dependency-aware scheduling
what it is and when to use it
Partition header space into Packet Equivalence Classes (PECs), sets of packets that behave identically throughout exploration. Use this to avoid analyzing every header while retaining all forwarding behaviors. The paper says: âWe leverage the notion of Packet Equivalence Classes (PECs), which are sets of packets that behave identically.â (§2, p. 954).
how to do it
- Build a trie from every prefix in the configuration: advertisements, route maps, static routes, and related entries. (§3.1, p. 955.)
- Recursively traverse the trie. At each prefix boundary, merge the prefix-specific configuration into the current network-wide configuration. Each resulting partition is a PEC. Retain the contributing prefixes, because their lengths still affect advertisements and route-filter matches (§3.1, p. 955).
- Construct a dependency graph whose nodes are PECs and whose directed edges record recursive routing, BGP-session, or similar dependencies (§3.2, p. 955).
- Compute strongly connected components (SCCs), groups of mutually dependent PECs, and analyze each SCC in one verification process. Schedule prerequisites first and save all their converged outcomes and nondeterministic choices for dependent SCCs. Match link failures across PECs (§3.2, pp. 955â956). The paper states: âThese SCCs represent groups of PECs that are mutually dependent, and hence need to be analyzed simultaneously through a single verification run.â (§3.2, p. 956).
Verus form
Inference: represent a PEC partition and dependency graph as ghost data, with spec fn defining packet equivalence and graph reachability. Use requires and ensures to prove that every packet belongs to exactly one class and that dependencies are respected by a scheduler. This establishes the abstractionâs consistency; it does not prove a router protocol implementation unless that implementation is also modeled.
technique 2: Reduced Path Vector Protocol and exhaustive convergence
The Reduced Path Vector Protocol (RPVP) replaces the extended Simple Path Vector Protocolâs (SPVPâs) message passing with shared memory. Algorithm 1 (p. 957) repeatedly chooses an enabled node, clears its best path if invalid, and chooses a peer among the highest-ranking available updates. It then applies import/export filters to that peerâs best path. It sends no explicit advertisements: âNote that there are no explicit advertisements propagated; instead nodes are polled for the advertisement that they would generate based on their current best path when needed.â (§3.4.2, p. 957). Topology changes occur before protocol execution; ranking functions use their final versions. Theorem 1 covers every converged state reachable in extended SPVP under the same filters, failed links, and final ranking functions (§3.4.2, pp. 957â958). It does not preserve all transient states or divergent behavior.
The resulting verification procedure is: (1) apply failures; (2) explore RPVP choices for each prefix in an SCC; (3) combine converged prefix/protocol results into the PECâs data plane using the forwarding information base (FIB) model; and (4) invoke the policy callback with that data plane and relevant converged states of prerequisite PECs (§§3.3â3.5, pp. 956â958). A policy is an arbitrary callback returning Boolean; a failed callback produces a trail file showing the violating event sequence (§3.5, p. 958).
Verus form
Inference: encode RPVP as a Verus transition system with a ghost state machine and executable state updates. Use proof functions to show that each reduced transition can be simulated by several full-protocol steps and that every full converged state has a reduced witness. ensures can express preservation of policy-relevant state; the simulation theorem is the critical proof obligation.
technique 3: preserve completeness while pruning execution
consistent executions
For a converged state S, a partial execution is consistent when each executed node chooses its path in S and never changes it (§4.1.1, p. 959). Theorem 2 states: âAny partial execution of RPVP consistent with a converged state can be extended to a complete execution consistent with that state.â (§4.1.2, p. 959). Plankton does not know the final state in advance. It stops exploring when evidence rules out a consistent execution, such as a node needing to change its selected best path (§4.1.1, p. 959).
deterministic-node heuristic
Plankton tries to identify enabled nodes whose best-path update will hold in every reachable converged state. If it finds one, it executes one such node without branching over node order. For OSPF, it runs a network-wide shortest-path computation and picks a node only after all nodes with shorter paths have executed. For BGP, it conservatively tests whether an update must win against present and possible future alternatives: âFor each node which is enabled to update its best path, it checks whether there exists a pending update that would never get replaced, because the update would definitely be preferred over other updates that are enabled now or may be in the future.â (§4.1.2, p. 959). If all possible winning updates are available but tied, it can fix the node choice while branching over updates. The heuristic may miss deterministic nodes (§4.1.2, pp. 959â960).
partial-order and failure ordering
When two nodesâ advertisements cannot affect one another because advertisements in either direction must pass through a node that has already fixed its best path, Plankton explores one arbitrary order (§4.1.3, p. 960). It also applies all topology changes before protocol execution and enforces a strict link-failure order (§4.1.4, p. 960).
failure equivalence
Plankton also groups devices into Device Equivalence Classes (DECs) and links between two DECs into a Link Equivalence Class (LEC). It explores one representative failed link per LEC, refining both partitions after each selected failure. Interesting nodes each receive their own DEC. Verification still uses the original network; this optimization applies only without cross-PEC dependencies (§4.3, p. 960). The paper states: âNote that this optimization limits the choice of failed links, but the verification happens on the original input network.â
Verus form
Inference: each pruning rule needs a proof that the omitted order is observationally equivalent for the policy state. State-machine invariants can express consistency and fixed best paths; a lemma can show that deterministic scheduling preserves the set of reachable converged states.
technique 4: policy-based pruning and state hashing
The policy API can declare sources and interesting nodes. Two data planes are policy-equivalent when their paths from sources have equal lengths and the same interesting nodes at the same positions (§3.5, p. 958). Policy-based pruning stops an assumed-consistent execution once all sources have made their best-path decisions (§4.2, p. 960). With one prefix in a PEC, it can also prevent devices that cannot influence sources from executing; that stronger rule is not applied to PECs on which others depend. State hashing deduplicates routing-table entries and stores 64-bit pointers to them in network states (§4.4, p. 960): âPlankton leverages this property to the reduce memory footprint, storing routing table entries as 64-bit pointers to the actual entry, with each entry stored once and indexed in a hash table.â
evidence, assumptions, and limits
The prototype contains 373 lines of Promela and 4,870 lines of C++, excluding SPIN, and was evaluated on Ubuntu 16.04, a 3.4 GHz Xeon with 32 hardware threads and 188 GB RAM (§5, pp. 960â961). It supports OSPF, BGP, and static routing. In fat-tree experiments, Minesweeper did not finish in four hours even on a 500-device network, while Plankton scaled to 2,205 devices; single-IP reachability completed in seconds or minutes on the largest networks (§5, p. 961). In high-nondeterminism waypoint experiments, worst-case times were below two seconds (§5, p. 961). Plankton and Minesweeper produced the same policy results on shared tests (§5, p. 961).
The RPVP results concern the extended SPVP abstraction, with fixed import/export filters: import filters reject loops and preserve accepted paths; export filters append the exporting node to accepted paths (Appendices AâC, pp. 965â967). The prototype supports OSPF multipath, but not BGP multipath (§3.4.2, p. 958). Modeling each prefix separately limits route aggregation: an exact-match route map for an aggregate does not apply to the modeled more-specific routes (§3.3, p. 956). Policies requiring multiple PECs fall outside the API described in §3.5; their proposed extension was not performance-evaluated. Policies inspecting transient behavior are out of scope (§3.5, p. 958). Cross-PEC dependencies can cause false positives when protocol choices need coordination (§§3.2 and 6, pp. 956, 964). External advertisements require stubs; vendor-specific implementation bugs are outside the techniqueâs scope (§6, p. 964). The authors state: âAs with most formal verification tools, one needs to assume that Plankton itself is correct, both in terms of the theoretical foundations as well as the implementation.â (§6, p. 964). Inference: proving a Rust reimplementation would still require explicit assumptions about the parser, protocol abstraction, and policy specification.
SPINâs optional bitstate hashing uses a Bloom filter instead of explicit state storage and can miss execution paths. It was disabled in the other experiments: âNevertheless, we have not turned on bitstate hashing in our other experiments in favor of full correctness.â (§5, p. 964).
relevance to VL
Inference: Plankton supplies a reusable pattern for verified systems: prove a reduction theorem first, then optimize the executable checker under that theorem. For agent-written verified Rust, the threat is an unsound abstraction that passes local invariants while omitting a protocol behavior; a Verus transition-system proof can make this omission visible only if the full behavior is specified in the simulation contract.
comparisons and work VL should not redo
The paperâs â10000Ă speedupâ is a maximum over experiments, while âless than a second for networks with over 300 devicesâ is a separate implementation claim (§1, p. 954); the paper does not give one denominator for both, so they should not be combined into a single average. Minesweeper, Batfish, ARC, Bonsai, and prior explicit-state network model checkers already provide the baselines and reductions discussed in §§1â2 and 7. Inference: VL should not reproduce this network-verifier comparison unless the target is a verified Rust implementation or a new cross-layer proof.
techniques for the catalog
- PEC partitioning â build trie-based packet classes whose members have identical behavior
- dependency scheduler â group strongly connected PEC dependencies and analyze independent groups separately
- RPVP reduction â model only convergence-relevant control-plane behavior and prove it covers all full converged states
- completeness-preserving pruning â use consistent executions, deterministic-node tests, partial-order reduction, ordered failures, and representative failures from link classes
- policy/state optimization â stop once policy-relevant nodes converge and hash repeated state entries Checked 2026-10-16 against the full paper by a Codex agent (mid-paper quote: âPolicies that check a single equivalence class are much cheaper: for example, single-IP reachability finishes in seconds or minutes even on the largest networks (Figure 7(b)).â): checked the full text, quotations, numbers, references, technique steps, and limitations; corrected RPVPâs update procedure, theorem and section pages, scheduling dependencies, pruning conditions, scope limits, and publisher link; did not reproduce experiments or verify the implementation, mathematical proofs, or proposed Verus encodings.
Last edited: