Skip to content
@NetworkVerification

NetworkVerification

Princeton Network Verification

This organization maintains and organizes the Princeton Programming Languages group's network verification tools and systems.

These tools and systems include:

  • nv, a network control plane intermediate representation language and analysis tool
  • angler, a tool for exporting Batfish representations of network configuration files, for use by other systems
  • Timepiece, a modular network control plane verification tool

End-to-End Verification Workflow for Timepiece

Install prerequisites: Docker, python and python-poetry, and dotnet.

  1. Acquire your network's configuration files. The angler repository contains some examples. We'll imagine we have a directory "EXAMPLE" containing a subdirectory "configs" with these files.
ls EXAMPLE/configs
# should output something like:
# file1.cfg file2.cfg file3.cfg ...
  1. Start the batfish Docker service.
docker run --name batfish -v batfish-data:/data -p 8888:8888 -p 9997:9997 -p 9996:9996 batfish/allinone
# after the first run, you can start it again using "docker start batfish" or "docker restart batfish"
  1. Extract the JSON representation of the Batfish AST using angler.
cd angler
poetry install
poetry run python -m angler --full-run --simplify-bools EXAMPLE
# you should obtain an [EXAMPLE.json] Batfish JSON file 
# and an [EXAMPLE.angler.json] Angler JSON file as output
# you can also perform these two steps separately by running
# poetry run python -m angler EXAMPLE
# followed by
# poetry run python -m angler --simplify-bools EXAMPLE.json
  1. Verify your desired property of the network using Timepiece.
cd Timepiece
dotnet build Timepiece.Angler
dotnet run --project Timepiece.Angler -- run EXAMPLE.angler.json [query]

Contributing FAQ/Roadmap

Popular repositories

  1. nv nv Public

    A Framework for Modeling and Analyzing Network Configurations

    OCaml 31 2

  2. angler angler Public

    An extraction tool for interacting with Batfish

    Python 4

  3. Timepiece Timepiece Public

    Modular network control plane verification tool, using temporal invariants to define modular interfaces

    C# 1 1

  4. batfish batfish Public

    Forked from batfish/batfish

    Batfish is a network configuration analysis tool that can find bugs and guarantee the correctness of (planned or current) network configurations. It enables network engineers to rapidly and safely …

    Java

  5. netverify.github.io netverify.github.io Public

    Forked from netverify/netverify.github.io

    CSS

  6. .github .github Public

Repositories

Showing 6 of 6 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…