dependabot[bot] c12af852b4 build(deps): bump etherparse from 0.18.0 to 0.19.0
Bumps [etherparse](https://github.com/JulianSchmid/etherparse) from 0.18.0 to 0.19.0.
- [Release notes](https://github.com/JulianSchmid/etherparse/releases)
- [Changelog](https://github.com/JulianSchmid/etherparse/blob/master/changelog.md)
- [Commits](https://github.com/JulianSchmid/etherparse/compare/v0.18.0...v0.19.0)

---
updated-dependencies:
- dependency-name: etherparse
  dependency-version: 0.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-04 21:07:57 +00:00
2025-06-13 12:18:35 +07:00
2022-10-13 17:28:10 +02:00
2025-05-09 05:47:00 +07:00
2025-05-08 19:57:38 +07:00
2025-06-13 12:54:07 +07:00

Summary

sqm‑autorate‑rust is a Rust re‑implementation of the original sqm‑autorate tool, which dynamically adjusts CAKE SQM bandwidth settings by measuring traffic load and latency – ideal for variable DOCIS/cable or LTE/wireless links where capacity fluctuates. This port preserves the original’s adaptive control logic while leveraging Rust’s type safety, performance, and concurrency primitives to deliver a more robust, maintainable codebase.

Features

  • Adaptive rate control: continuously measures one‑way delay baselines and traffic load to tune both download and upload shaping rates in real­time .
  • Multiple measurement types: prefers ICMP timestamps by default, but also supports ICMP echo requests as a fallback for networks where timestamps are blocked
  • Concurrent architecture: separates packet sending, receiving, baselining, reflector reselection and rate‑controller loops into dedicated threads for maximum responsiveness .
  • Configurable via environment or UCI: reads settings from environment variables or OpenWRT UCI, with sensible defaults and type‑safe parsing .
  • Minimal dependencies: relies on Rust crates only (anyhow, socket2, neli, rustix), no external scripts .

Installation

You can install sqm‑autorate‑rust in two ways:

1. Native Rust build

  1. Ensure you have the Rust toolchain (1.70+), Cargo, and libnl headers installed on your Linux host.

  2. Clone and build:

    git clone https://github.com/Lochnair/sqm-autorate-rust.git
    cd sqm-autorate-rust
    cargo build --release
    
  3. The optimized binary is at target/release/sqm-autorate-rust.

2. OpenWrt SDK build

You can also build an OpenWrt package to install in your images with the SDK:

  1. Prepare the OpenWrt SDK

    # Download and extract the matching SDK for your target platform
    tar xJf openwrt-sdk-*.tar.xz
    cd openwrt-sdk-*
    
  2. Add the openwrt-feeds repository

    # Add the feed to feeds.conf.default
    echo 'src-link lochnair https://github.com/Lochnair/openwrt-feeds.git' >> feeds.conf.default
    ./scripts/feeds update lochnair
    ./scripts/feeds install sqm-autorate-rust
    
  3. Configure and build the package

    make menuconfig        # navigate to Network → sqm-autorate-rust, enable it
    make package/sqm-autorate-rust/{clean,compile} V=s
    
  4. Install on your device

    # Copy the generated .ipk from bin/packages/... to your router
    opkg install sqm-autorate-rust_*.ipk
    
Languages
Rust 99.8%
Shell 0.2%