Commit Graph
259 Commits
Author SHA1 Message Date
Nils Andreas Svee 699c8782d9 fix(observability): send individual metrics over UDP to avoid packet size limits
Differentiate flushing logic between transport types to prevent UDP payload truncation while maintaining batched delivery for TCP.
2026-04-13 17:21:14 +07:00
Nils Andreas Svee 0f902e27a3 perf(observability): optimize metric flushing to reduce memory allocations
Use a pre-allocated buffer for metric serialization to improve efficiency when processing large batches.
2026-04-13 16:54:33 +07:00
Nils Andreas Svee 530a715bdf fix(observability): refresh metric timestamps on each loop iteration
Move clock initialization inside processing loops to ensure exported metrics reflect the current time rather than a stale timestamp.
2026-04-13 16:32:30 +07:00
Nils Andreas Svee dd8735f46e chore(deps): update icmp-socket2 to 0.4.2
Update the icmp-socket2 dependency version in Cargo.toml and Cargo.lock to incorporate the latest upstream changes.
2026-04-13 16:23:20 +07:00
Nils Andreas Svee 72b4bc8dab fix(observability): ensure all metric outputs are newline-terminated
Append trailing newlines to metric string formats to ensure consistent parsing and record separation by monitoring backends.
2026-04-13 15:43:09 +07:00
Nils Andreas Svee 757a715a54 chore: cleanup unused imports 2026-04-13 15:29:04 +07:00
Nils Andreas Svee 5af5b6597b feat(observability): report reflector selection events and outcomes
Emit metrics detailing why a reflector reselection was triggered and which peers were selected to improve selection process visibility.
2026-04-13 15:28:56 +07:00
Nils Andreas Svee d1ea0d0238 feat(observability): export rate and load metrics from rate controller
Send rates, load statistics, and delay deltas via the metrics channel to enable real-time monitoring of network performance.
2026-04-13 15:22:24 +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 e5ba021a96 feat(observability): Pass metrics sender to rate controller and reflector selector 2026-04-13 15:01:46 +07:00
Nils Andreas Svee 2c1e7c0483 feat(observability): Export baseline statistics and events 2026-04-13 15:01:46 +07:00
Nils Andreas Svee 645ac08daa feat(observability): Export ping related metrics 2026-04-13 15:01:46 +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 44f551d38c feat(observability): Add InfluxDB Line Protocol metrics module and config 2026-04-13 15:01:45 +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 8461d29788 build: bump version to 0.3.0
Update package version in Cargo.toml and Cargo.lock to reflect a new release.
v0.3.0
2026-04-01 12:55:52 +07:00
Nils Andreas Svee 9c51853147 refactor: update imports to use icmp-socket2 2026-04-01 12:52:19 +07:00
Nils Andreas Svee 050291990a build: migrate from icmp-socket to icmp-socket2 2026-04-01 12:52:19 +07:00
Nils Andreas Svee cac3d75ccb build: update dependencies and remove redundant windows targets 2026-04-01 12:52:18 +07:00
renovate[bot] 7d833ecff8 chore(deps): update rust crate rustix to v1.1.4 2026-02-22 17:37:16 +00:00
Nils Andreas Svee c2a7c5dfdb refactor(main): Optimize reflector list assignment 2026-02-22 17:05:06 +07:00
Nils Andreas Svee a4a83222fe refactor(ratectrl): Enhance stability and file handling 2026-02-22 17:05:01 +07:00
Nils Andreas Svee c45351042e fix(pinger): Improve robustness of pinger operations 2026-02-22 17:04:56 +07:00
Nils Andreas Svee 1a87372ffb refactor(main): Centralize thread error handling 2026-02-22 16:58:01 +07:00
Nils Andreas Svee c116dd3e74 refactor(sync): Replace unwrap with anyhow-based locking 2026-02-22 16:57:11 +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 8589a1c7dc feat(ratecontrol): Fallback to min rates 2026-02-22 12:13:14 +07:00
Nils Andreas Svee fa370b323b feat(pinger): Configurable tick interval 2026-02-22 12:13:14 +07:00
Nils Andreas Svee 489e3f45f7 feat(config): Dynamic min rate calculation 2026-02-22 12:13:14 +07:00
Nils Andreas Svee 1357a23578 fix(reflector): Remove no-op 'len()' call 2026-02-22 12:13:14 +07:00
Nils Andreas Svee 5af42c4a22 refactor(ratecontrol): Rate calculation uses floor 2026-02-22 12:13:14 +07:00
Nils Andreas Svee f2113fa11c refactor(ratecontrol): Use custom Time for logging 2026-02-22 12:13:13 +07:00
Nils Andreas Svee 0990332f18 refactor(log): Use custom Time for timestamps 2026-02-22 12:13:13 +07:00
Nils Andreas Svee eb88107bd0 chore(deps): Remove 'time' crate 2026-02-22 12:13:13 +07:00
Nils Andreas Svee 714a121113 feat(time): Add granular time getters 2026-02-22 12:13:01 +07:00
Nils Andreas Svee 830e21363a refactor: replace rand crate with fastrand
Replaces the `rand` crate with `fastrand` for improved performance in rate control and reflector selection.
2026-02-22 00:33:57 +07:00
Nils Andreas Svee 616a3b1c70 fix(netlink): Improves error handling
Refactors error handling for interface and queue discipline operations to provide more informative error messages. This aids in debugging and user experience.
2026-02-21 23:21:32 +07:00
Nils Andreas Svee 986b649a37 feat(netlink): Refactors to use netlink-socket2
Migrates netlink implementation to use netlink-socket2 and netlink-bindings crates, replacing neli crate for improved socket handling. Removes unused dependencies.
2026-02-21 23:10:48 +07:00
Nils Andreas Svee e2962222b7 fix: Improve error handling for reflector list loading
Improves error handling when the reflector list file is not found, providing more context about the failure.
2026-02-21 23:06:32 +07:00
Nils Andreas Svee 99a7928a66 style(reflector): Reorder imports and truncate vector 2026-02-21 22:42:20 +07:00
Nils Andreas Svee 127ed692c3 refactor(reflector): Improve candidate selection loop 2026-02-21 22:42:20 +07:00
Nils Andreas Svee 2aec477b89 refactor(ratecontroller): Simplify delta_stat logic 2026-02-21 22:42:20 +07:00
Nils Andreas Svee 67bb185e28 refactor(main): Make reflector pool configurable 2026-02-21 22:42:20 +07:00
Nils Andreas Svee 66a2834192 feat(reflector): Use configurable reselection time 2026-02-21 22:42:20 +07:00
Nils Andreas Svee a4b3e7406e feat(config): Add peer reselection time 2026-02-21 22:42:20 +07:00
Nils Andreas Svee 2d21680f82 refactor(pinger): Simplifies imports
Simplifies imports by removing unused `IcmpPacketBuildError`.
2026-02-21 22:20:53 +07:00
Nils Andreas Svee 056288b0e8 fix(ratecontroller): correct generation of initial speeds 2026-02-21 22:20:30 +07:00