Skip to content

Repository files navigation

WaveOps

WaveOps architecture

A DWDM optical network planning, monitoring, and automation toolkit — built to demonstrate the software/automation side of optical network engineering (link budgeting, fiber acceptance testing, wavelength planning, remote monitoring, config generation) using the same first-order engineering models a DWDM planning tool encodes.

Why this project exists

This was built while targeting AWS Infrastructure Services Optical Network Development Engineer roles (DWDM long-haul/metro deployment, Core Networking, DCNE, DRES). Those JDs consistently call out five things: optical planning/modeling tools, fiber quality reviews and cutsheets, DWDM network rollout/scaling, remote monitoring and device visibility, and automation scripting (Python/Bash/Shell/Perl). Each module below targets one of those directly.

What this is: working Python implementations of the standard first-pass engineering math and workflow logic an optical planning engineer uses (span-loss budgets, OSNR estimation per the textbook EDFA cascade model, ITU-T G.694.1 channel grids, greedy RWA wavelength assignment, fiber acceptance pass/fail logic) plus the automation and monitoring tooling layered on top.

What this is not: a substitute for hands-on experience operating real DWDM hardware, vendor-certified planning software (Ciena/Infinera/Nokia planning suites), or live optical telemetry. The monitoring module runs on synthetic data (see monitoring/telemetry.py for exactly what's simulated and why). Anywhere this line matters, the code comments say so explicitly rather than pretending otherwise.

Modules

Module What it does Maps to
optical/channel_grid.py Generates the ITU-T G.694.1 DWDM frequency grid (50/100 GHz spacing, C-band) "optical planning and modelling tools"
optical/link_budget.py Span-loss and OSNR budget calculator for a cascaded amplified DWDM link "optical planning, modelling tools and hands-on implementation"
optical/cutsheet.py Validates fiber acceptance test data against an engineering loss budget and generates a pass/fail cutsheet "fiber quality reviews and generate cutsheets" (verbatim, AWS Optical NDE II)
optical/topology.py Models a ROADM topology and does greedy RWA wavelength assignment under wavelength-continuity "drive scaling current DWDM designs to meet demand", "design of optical solutions"
monitoring/ FastAPI service exposing simulated per-channel optical telemetry with threshold alerting "remote monitoring and device visibility" (verbatim, AWS Optical NDE II)
automation/config_generator.py Jinja2-templated config generation for optical network elements from a topology + demand set "implement changes on optical systems using... automated process via script"

Quickstart

pip install -e ".[dev]"

# Link budget for a 3-span long-haul path
python -m waveops.optical.link_budget --spans-json examples/spans.json

# Fiber acceptance cutsheet from raw test data
python -m waveops.optical.cutsheet --input-csv examples/fiber_test.csv --output-csv out_cutsheet.csv

# Wavelength assignment + config generation over a 4-node topology
python -m waveops.automation.config_generator --topology-json examples/topology.json --output-dir out_configs/

# Monitoring API
uvicorn waveops.monitoring.api:app --reload

# Run the test suite
python -m pytest tests/ -v

Engineering references

  • ITU-T G.694.1 (02/2020) — DWDM frequency grid
  • Standard EDFA-cascade OSNR approximation (58 dBm reference constant at 0.1nm reference bandwidth, 1550nm window) used for first-pass link engineering
  • G.652/G.652.D/G.655/G.657 typical attenuation specs used as cutsheet acceptance thresholds
  • OpenROADM — open-source YANG data models for ROADM/optical network elements; noted in automation/config_generator.py as the natural next step over the generic CLI-style templates currently used

Roadmap / honest next steps

  • Swap monitoring/telemetry.py's synthetic generator for a real SNMP/gNMI collector against lab or simulated equipment
  • Target NETCONF/YANG (OpenROADM) instead of generic CLI templates in automation/config_generator.py
  • Add a k-shortest-paths RWA fallback instead of first-fit-only wavelength assignment
  • Persist monitoring readings to a time-series store (Prometheus) instead of in-memory generation per request

License

MIT

About

"DWDM optical network planning, monitoring, and automation toolkit"

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages