Nils Andreas Svee
480976b666
fix(metrics): move ping metrics sending to baseliner
2026-10-08 14:15:14 +07:00
Nils Andreas Svee
ac349a1897
refactor(measurement): remove legacy pinger and migrate production to
2026-10-08 14:15:14 +07:00
Nils Andreas Svee
a925e60f36
refactor(measurement): introduce Controller for dynamic ICMP probe configuration
2026-10-08 14:15:14 +07:00
Nils Andreas Svee
c7b283d761
refactor(measurement): enhance ICMP engine's async integration and robustness
...
Ensure IcmpEngine initializes within a Tokio runtime, improve timestamp validation, and refine probe management.
2026-10-08 14:15:14 +07:00
Nils Andreas Svee
89c7d75947
refactor(measurement): migrate ICMP engine to Tokio async runtime
2026-10-08 14:15:14 +07:00
Nils Andreas Svee
afedfbeb65
feat(measurement): implement ICMP measurement engine
2026-10-08 14:15:13 +07:00
Nils Andreas Svee
f51ff19f04
feat(measurement): add core data models
2026-10-08 10:48:14 +07:00
Lochnair
ffd7b0beb7
fix: remove unused import
DevSkim / DevSkim (push) Failing after 4s
Build / build (push) Successful in 57s
rust-clippy analyze / Run rust-clippy analyzing (push) Failing after 2m10s
2026-08-23 17:23:10 +00:00
Nils Andreas Svee
6a90446b56
fix(ratecontroller): use egress interface for traffic stats
...
Read both RX and TX byte counters from the configured upload/egress
interface. Remove the obsolete per-direction stats selection and related
plumbing now that download load uses RX and upload load uses TX from the
same interface.
2026-08-13 14:19:53 +07:00
Nils Andreas Svee
605ec6ef81
refactor(main): simplify interface stats direction logic
...
Remove the ifb/veth interface prefix detection from
interface_stats_directions. The function now unconditionally returns
RX for download and TX for upload, as the previous heuristic was
unreliable and the simplified behavior matches actual usage.
2026-08-07 16:05:00 +07:00
Nils Andreas Svee
7e0f434251
refactor: replace legacy Config with Settings
...
Remove legacy src/config.rs and migrate all application consumers to
the nested Settings model. Baseliner, metrics, pingers, ratecontroller,
reflector selector, and main now use Settings. Derived min rates become
methods on NetworkSettings rather than stored legacy fields.
MeasurementType and ObservabilityProtocol move into the settings module.
2026-08-07 16:04:59 +07:00
Nils Andreas Svee
c0a50c68f9
feat(config): add config-rs settings support
...
Introduce config-rs and Serde support with a nested Settings model.
Add config and serde dependencies with toml feature for file-based
configuration loading. The Settings struct provides typed configuration
with sensible defaults for network, output, observability, and advanced
settings sections. Environment variable override via SQMA__ prefix is
supported. The legacy Config remains in use; migration follows later.
2026-08-07 16:04:58 +07:00
Nils Andreas Svee
c1bcb22b23
refactor(baseliner): Replace shared Mutex state with thread-safe control snapshots
...
Eliminate lock contention between the baseliner, ratecontroller, and selector by moving to a message-passing architecture using immutable snapshots of reflector state. This improves data consistency and simplifies cross-thread communication.
2026-07-24 00:05:41 +07:00
Nils Andreas Svee
cd6d631afa
refactor(config): remove unimplemented measurement types
...
Remove NTP and TCP timestamp variants from the measurement type configuration since they are currently unimplemented and lead to runtime panics.
2026-07-20 23:06:23 +07:00
Nils Andreas Svee
ae9193580c
refactor(platform): restructure platform-specific abstractions and add synthetic backends
2026-07-17 13:02:17 +07:00
Nils Andreas Svee
50f0dcb4dd
perf(baseliner): bound the reselection channel to prevent memory buildup
...
Change the reselection channel from unbounded to a size of 1 and use non-blocking sends to avoid unnecessary queuing of reselection triggers.
2026-07-17 11:39:07 +07:00
Nils Andreas Svee
9811592f13
feat(platform): introduce abstractions for cross-platform interface statistics and traffic control
...
Decouple the rate controller from Linux-specific Netlink calls to support other operating systems. This adds a macOS backend for interface statistics and an "observe-only" mode for platforms where traffic shaping is not yet implemented.
2026-07-17 11:35:43 +07:00
Nils Andreas Svee
b56c8b72cc
refactor(main): modularize main loop and improve resource cleanup logic
2026-07-14 22:53:01 +07:00
Nils Andreas Svee
4aaf8fa100
chore: add SPDX license identifiers and copyright headers to source files
...
Apply the MPL-2.0 license to all source files and include the full license text to ensure legal compliance and proper attribution.
2026-04-23 12:39:52 +07:00
Nils Andreas Svee
58d536bb22
refactor(pinger): replace hashlru with standard HashMap and manual TTL cleanup
...
Remove the hashlru dependency to reduce bloat, replacing it with a Mutex-wrapped HashMap and manual entry expiration logic.
2026-04-23 00:33:07 +07:00
Nils Andreas Svee
1b959d52ed
feat(main): Initialize and pass InFlightProbeCache to pinger threads
2026-04-23 00:16:19 +07:00
Nils Andreas Svee
6ae19b619a
feat(pinger): Introduce InFlightProbeCache and update Ping traits
2026-04-23 00:16:19 +07:00
Nils Andreas Svee
3322e82b6c
refactor: replace std::sync::mpsc with flume for improved channel performance
...
Migrate internal message passing to flume to leverage better performance and additional features like eventual fairness and selection.
2026-04-22 22:39:06 +07:00
Nils Andreas Svee
e22c100e57
refactor(main): Relocate and enhance signal handler with improved logging
2026-04-22 21:45:27 +07:00
Nils Andreas Svee
72fe0230ee
style: Apply general code formatting and import reordering
2026-04-22 21:45:25 +07:00
Nils Andreas Svee
8739ed4419
fix(metrics): use AtomicU32 for drop counter to support MIPS targets
...
Also bumps version to 0.4.1.
2026-04-14 02:14:55 +07:00
Nils Andreas Svee
3c689b1d1e
feat(main): Orchestrate application shutdown and cleanup
2026-04-14 02:03:53 +07:00
Nils Andreas Svee
6e4e6b85e9
feat(shutdown): Implement global shutdown signal handling
2026-04-14 02:03:53 +07:00
Nils Andreas Svee
f8976a78a2
feat(metrics): support arbitrary event tags and enhance monitoring coverage
...
Enable key-value metadata for events to track dry-run status and introduce new monitoring events for rate controller failure states.
2026-04-14 01:45:07 +07:00
Nils Andreas Svee
60e7ffc9e7
refactor(main): integrate MetricsSender across application entry point
2026-04-13 18:57:51 +07:00
Nils Andreas Svee
451d42640b
refactor(metrics): encapsulate metric dispatch with MetricsSender
2026-04-13 18:57:50 +07:00
Nils Andreas Svee
b930a01fd6
feat(observability): emit a startup event metric to signal application initialization
...
Send a telemetry event when the process starts to provide better visibility into application lifecycle transitions.
2026-04-13 17:49:19 +07:00
Nils Andreas Svee
1d7fd5800b
refactor(observability): initialize metrics collection earlier in the startup sequence
...
Move the metrics thread and error channel initialization before the settling period and peer setup to ensure early telemetry is captured.
2026-04-13 17:34:17 +07:00
Nils Andreas Svee
da3487e506
feat(observability): make metrics collection optional and granular
...
Wrap metrics senders in Option and conditionally initialize the monitoring thread to support granular configuration and reduced overhead.
2026-04-13 15:22:15 +07:00
Nils Andreas Svee
671e3f2671
refactor: standardize channel naming with tx and rx suffixes
...
Rename internal channel senders and receivers to follow standard Rust conventions for improved code consistency and readability.
2026-04-13 15:07:00 +07:00
Nils Andreas Svee
1452409fe8
feat(observability): Integrate metrics exporter into main application flow
2026-04-13 15:01:46 +07:00
Nils Andreas Svee
853f807e2c
feat: add metrics module for monitoring
...
Initialize the Metrics structure to receive and process ping statistics as part of the monitoring subsystem.
2026-04-13 12:11:05 +07:00
Nils Andreas Svee
f0fb3c9640
feat(monitoring): add dry-run mode to simulate qdisc rate changes
...
Enable a monitoring-only mode that logs intended bandwidth adjustments without applying them to the system via netlink.
2026-04-13 12:11:05 +07:00
Nils Andreas Svee
6d44556d63
style: reformat thread builder calls in main.rs
...
Standardize the formatting of thread spawning for the receiver and sender to improve code consistency and readability.
2026-04-13 12:06:50 +07:00
Nils Andreas Svee
c2a7c5dfdb
refactor(main): Optimize reflector list assignment
2026-02-22 17:05:06 +07:00
Nils Andreas Svee
1a87372ffb
refactor(main): Centralize thread error handling
2026-02-22 16:58:01 +07:00
Nils Andreas Svee
d4ad24ce4a
feat(util): Introduce Mutex/RwLock error handling traits
2026-02-22 16:57:02 +07:00
Nils Andreas Svee
fa370b323b
feat(pinger): Configurable tick interval
2026-02-22 12:13:14 +07:00
Nils Andreas Svee
67bb185e28
refactor(main): Make reflector pool configurable
2026-02-21 22:42:20 +07:00
Nils Andreas Svee
90d7e75096
refactor: remove custom endian traits in favor of standard library
2026-02-20 22:40:37 +07:00
Nils Andreas Svee
7d11f2a273
no need to have the cake definition in it's own file
...
also remove everything we don't use
2022-11-25 20:21:54 +01:00
Nils Andreas Svee
5c0a6c304f
ratecontroller: use durations instead of manually handling time
2022-11-10 13:54:26 +01:00
Nils Andreas Svee
d5823634ca
Handle initialization for first ratecontroller run better
2022-10-29 22:34:52 +02:00
Nils Andreas Svee
13ba3eaffe
Rename 'clock' to 'time'
2022-10-29 22:30:19 +02:00
Nils Andreas Svee
befccc0d6f
move util functions into respective modules
2022-10-19 21:23:52 +02:00