Batfish is a network configuration analysis tool developed jointly by researchers at Intentionet, Inc.; University of California, Los Angeles; University of Southern California; and Microsoft Research. Though its individual modules have various applications, its primary purpose is to detect bugs in network configurations.
The Batfish pipeline consists of 4 stages:
1. Control plane generator: parses vendor configuration files into a unified format
2. Data plane generator: computes the data plane corresponding to the input configurations
3. Safety Analyzer: checks specified safety properties and returns counterexamples if they exist
4. Provenance Tracker: provides helpful information about the nature and source of discovered counterexamples
Batfish can be expensive in terms of computation and memory usage.
Development of batfish benefits from the use of the Java profiler 'JProfiler'.