A tool and a library for network modeling and analysis.
Project description
NetGraph
Network modeling and analysis framework combining Python with high-performance C++ graph algorithms.
What It Does
NetGraph lets you model network topologies, traffic demands, and failure scenarios - then analyze capacity and resilience. Define networks in Python or declarative YAML, run max-flow and failure simulations, and export reproducible JSON results. Compute-intensive algorithms run in C++ with the GIL released.
Install
pip install ngraph
Python API
from ngraph import Network, Node, Link, analyze, Mode
# Build a simple network
network = Network()
network.add_node(Node("A"))
network.add_node(Node("B"))
network.add_node(Node("C"))
network.add_link(Link("A", "B", capacity=10.0, cost=1.0))
network.add_link(Link("B", "C", capacity=10.0, cost=1.0))
# Compute max flow
result = analyze(network).max_flow("^A$", "^C$", mode=Mode.COMBINE)
print(result) # {('^A$', '^C$'): 10.0}
Scenario DSL
For reproducible analysis workflows, define topology, traffic, demands, and failure policies in YAML:
seed: 42
# Define reusable topology templates
blueprints:
Clos_Fabric:
nodes:
spine: { count: 2, template: "spine{n}" }
leaf: { count: 4, template: "leaf{n}" }
links:
- source: /leaf
target: /spine
pattern: mesh
capacity: 100
cost: 1
# Instantiate network from templates
network:
nodes:
site1: { blueprint: Clos_Fabric }
site2: { blueprint: Clos_Fabric }
links:
- source: { path: site1/spine }
target: { path: site2/spine }
pattern: one_to_one
capacity: 50
cost: 10
# Define failure policy for Monte Carlo analysis
failures:
random_link:
modes:
- weight: 1.0
rules:
- scope: link
mode: choice
count: 1
# Define traffic demands
demands:
global_traffic:
- source: ^site1/leaf/
target: ^site2/leaf/
volume: 100.0
mode: combine
flow_policy: SHORTEST_PATHS_ECMP
# Analysis workflow: find max capacity, then test under failures
workflow:
- type: NetworkStats
name: stats
- type: MaxFlow
name: site_capacity
source: ^site1/leaf/
target: ^site2/leaf/
mode: combine
- type: MaximumSupportedDemand
name: max_demand
demand_set: global_traffic
- type: TrafficMatrixPlacement
name: placement_at_max
demand_set: global_traffic
alpha_from_step: max_demand # Use alpha_star from MSD step
failure_policy: random_link
iterations: 100
ngraph run scenario.yml --output results/
This scenario builds a dual-site Clos fabric from blueprints, finds the maximum supportable demand, then runs 100 Monte Carlo iterations with random link failures - exporting results to JSON.
See DSL Reference and Examples for more.
Capabilities
- Declarative scenarios with schema validation, reusable blueprints, and strict multigraph representation
- Failure analysis via policy engine with weighted modes, risk groups, and non-destructive runtime exclusions
- Routing modes for IP routing (cost-based) and traffic engineering (capacity-aware)
- Flow placement strategies for ECMP and WCMP with max-flow and capacity envelopes
- Reproducible results via seeded randomness and stable edge IDs
- C++ performance with GIL released via NetGraph-Core
Documentation
- Tutorial - Getting started guide
- Examples - Clos fabric, failure analysis, and more
- DSL Reference - YAML scenario syntax
- API Reference - Python API docs
License
Requirements
- Python 3.11+
- NetGraph-Core (installed automatically)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ngraph-0.20.0.tar.gz.
File metadata
- Download URL: ngraph-0.20.0.tar.gz
- Upload date:
- Size: 149.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
587de14431c73cb024880ca5cac25ebbd14790b0d131e56c10a78a19de681566
|
|
| MD5 |
2808c4efd8c7d08b76c6b6998cabbbf6
|
|
| BLAKE2b-256 |
791072c08418bc7b4f6c405b804ac9218b73447e9a57fea61aed9789107894ee
|
Provenance
The following attestation bundles were made for ngraph-0.20.0.tar.gz:
Publisher:
publish.yml on networmix/NetGraph
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ngraph-0.20.0.tar.gz -
Subject digest:
587de14431c73cb024880ca5cac25ebbd14790b0d131e56c10a78a19de681566 - Sigstore transparency entry: 993330806
- Sigstore integration time:
-
Permalink:
networmix/NetGraph@73c9400bd852271903aaf591a0538451d2f552d3 -
Branch / Tag:
refs/tags/v0.20.0 - Owner: https://github.com/networmix
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@73c9400bd852271903aaf591a0538451d2f552d3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file ngraph-0.20.0-py3-none-any.whl.
File metadata
- Download URL: ngraph-0.20.0-py3-none-any.whl
- Upload date:
- Size: 176.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffeecc7e6fdac51c37a0b5af6ee7483835ad42432ad2bf02fcc47640ac0aa911
|
|
| MD5 |
d3f26c918c69b00fdffc59ca9ec3b3a6
|
|
| BLAKE2b-256 |
8d11ddb5a2ab3a6fd3fbc0e1fb20b2181482997701c64181b782c591e78822a2
|
Provenance
The following attestation bundles were made for ngraph-0.20.0-py3-none-any.whl:
Publisher:
publish.yml on networmix/NetGraph
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ngraph-0.20.0-py3-none-any.whl -
Subject digest:
ffeecc7e6fdac51c37a0b5af6ee7483835ad42432ad2bf02fcc47640ac0aa911 - Sigstore transparency entry: 993330864
- Sigstore integration time:
-
Permalink:
networmix/NetGraph@73c9400bd852271903aaf591a0538451d2f552d3 -
Branch / Tag:
refs/tags/v0.20.0 - Owner: https://github.com/networmix
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@73c9400bd852271903aaf591a0538451d2f552d3 -
Trigger Event:
release
-
Statement type: