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 Loading

  1. nv nv Public

    A Framework for Modeling and Analyzing Network Configurations

    OCaml 32 3

  2. angler angler Public

    An extraction tool for interacting with Batfish

    Python 5

  3. Timepiece Timepiece Public

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

    C# 2 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
  • Timepiece Public

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

    NetworkVerification/Timepiece’s past year of commit activity
    C# 2 1 0 0 Updated Feb 20, 2024
  • .github Public
    NetworkVerification/.github’s past year of commit activity
    0 0 0 0 Updated Feb 16, 2024
  • angler Public

    An extraction tool for interacting with Batfish

    NetworkVerification/angler’s past year of commit activity
    Python 5 0 0 0 Updated Feb 16, 2024
  • nv Public

    A Framework for Modeling and Analyzing Network Configurations

    NetworkVerification/nv’s past year of commit activity
    OCaml 32 MIT 3 27 (2 issues need help) 0 Updated Feb 20, 2023
  • 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 evolve their network, without fear of outages or security breaches.

    NetworkVerification/batfish’s past year of commit activity
    Java 0 Apache-2.0 236 0 0 Updated Dec 21, 2021
  • NetworkVerification/netverify.github.io’s past year of commit activity
    CSS 0 11 0 0 Updated Jun 21, 2020

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…