Skip to content

HCF and Static traffic - #168

Open
arashr88 wants to merge 2 commits into
mainfrom
jocn-configs
Open

arashr88 wants to merge 2 commits into
mainfrom
jocn-configs

Conversation

@arashr88

Copy link
Copy Markdown
Collaborator

No description provided.

Add static and semi-static design workloads alongside legacy dynamic traffic.
Permanent demands never release; semi-static ordering preserves arrival times
and breaks ties only between simultaneous arrivals. Import demand matrices
without rounding fractional bandwidths, and load TopologyBench real networks
with their published kilometre distances and source provenance.

File-by-file changes:
- .gitignore: exclude the downloaded TopologyBench archive from version control.
- README.md: link the traffic-design and TopologyBench usage guides.
- docs/traffic-design.md: document traffic modes, ordering, matrix formats,
  TEFNET24 import, exact bandwidth requirements and experiment limitations.
- docs/topologybench.md: document dataset download, topology selection, node
  matching, provenance and validation of the 105 published real networks.
- fusion/cli/config_setup.py: load traffic/topology options, resolve input paths
  relative to the INI, apply CLI/thread overrides and reject invalid traffic settings.
- fusion/cli/parameters/network.py: expose topology file and archive member options.
- fusion/cli/parameters/traffic.py: expose traffic modes, ordering and matrix options.
- fusion/cli/tests/test_topology_config.py: test topology paths, overrides and
  rejection of a topology selector without a file.
- fusion/cli/tests/test_traffic_config.py: test traffic overrides, relative matrix
  paths and invalid configuration handling.
- fusion/configs/cli_to_config.py: map new CLI options to configuration sections.
- fusion/configs/schema.py: register optional traffic and topology setting types.
- fusion/configs/schemas/main.json: validate new settings and permit imported
  topology labels in the network field.
- fusion/configs/templates/static_design.ini: provide a complete static NSFNet example.
- fusion/configs/templates/topologybench_static.ini: provide a static ABILENE
  example using the locally downloaded TopologyBench archive.
- fusion/core/adapters/grooming_adapter.py: preserve fractional groomed capacity
  and request allocations when bridging legacy and domain representations.
- fusion/core/adapters/spectrum_adapter.py: preserve fractional achieved bandwidth
  in spectrum pipeline results.
- fusion/core/grooming.py: retain fractional demand and remaining capacity during
  grooming allocation and release.
- fusion/core/metrics.py: retain fractional bandwidth in statistics, normalize
  bandwidth keys and use actual generated request counts for design workloads.
- fusion/core/request.py: dispatch design/imported workloads to the new generator
  and reject generated traffic with fewer than two eligible nodes.
- fusion/core/sdn_controller.py: preserve fractional bandwidth through allocation,
  partial-service accounting and lightpath release handling.
- fusion/core/simulation.py: validate traffic settings, prepare imported demands,
  record final design utilization and process failure/RL arrivals chronologically.
- fusion/core/snr_measurements.py: avoid truncating requested and achieved
  bandwidth when evaluating SNR responses.
- fusion/core/spectrum_assignment.py: retain fractional bandwidth in tier selection,
  lightpath request allocations and spectrum-assignment responses.
- fusion/core/tests/test_design_traffic.py: cover permanent events, seeded demand
  generation, ordering, timing validation and design utilization.
- fusion/core/tests/test_fractional_design.py: test fractional bandwidth across
  request/lightpath conversion, allocation and design statistics.
- fusion/core/traffic.py: implement static/semi-static generation, deterministic
  bandwidth counts and metric ordering that preserves semi-static arrival times.
- fusion/domain/config.py: validate and round-trip traffic/import configuration
  through the immutable simulation configuration.
- fusion/domain/lightpath.py: support fractional capacities and request allocations
  without truncating values during legacy conversion.
- fusion/domain/request.py: support fractional request bandwidth in domain objects
  and legacy request conversion.
- fusion/io/tests/test_topologybench.py: test workbook/ZIP import, malformed graph
  rejection, checksum handling, provenance and all three traffic modes.
- fusion/io/tests/test_traffic_matrix.py: test demand files, square matrices,
  spreadsheet/XML imports and demand validation.
- fusion/io/topologybench.py: load real-network workbooks or ZIP members, preserve
  node metadata and distances, reject unsupported graph structures and provide
  checksum-verified download/list/inspect commands.
- fusion/io/traffic_matrix.py: import CSV/JSON demands, CSV/XLSX matrices and
  SNDlib XML; validate endpoints and exact modulation bandwidths; download files.
- fusion/modules/spectrum/light_path_slicing.py: preserve fractional requested,
  allocated and remaining bandwidth during slicing and rollback.
- fusion/sim/input_setup.py: connect topology and traffic imports to simulation
  setup, retain node attributes and save reproducible topology snapshots.
- fusion/utils/bandwidth.py: centralize finite bandwidth parsing and canonical
  keys while preserving fractional values.

Validation:
- Traffic regression suite: 1309 passed, 10 baseline failures, 1 skipped.
- Topology/config/input regression suite: 605 passed, 5 baseline failures.
- Final topology-specific tests: 27 passed; lint and diff checks passed.
- Reproduced reported regression failures on the unchanged branch.
- Full CLI ABILENE simulations completed in dynamic, static and semi-static modes.
- Verified pinned dataset download and checked all 105 real workbooks: 98 import
  directly; 7 reject source self-links or duplicate/conflicting edges.

Scope: synthetic TopologyBench collections remain unsupported. Fractional
demands require matching modulation definitions. Local virtual environments,
private working configs and request dumps are excluded from this commit.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant