Aggligator Link Aggregation Library

repository·master·Indexed 42 days ago

https://github.com/surban/aggligator

A user-space link aggregation library written in Rust that combines multiple network paths (TCP, WebSocket, USB, Bluetooth, SOCKS5) into a single logical connection. It provides channel bonding to maximize bandwidth, failover for resiliency, and seamless roaming between networks. The ecosystem includes a modular transport system, TLS encryption wrappers, and command-line utilities like agg-speed and agg-tunnel for monitoring and TCP tunneling.

Tokens
31.1K
Snippets
108
Records
157
Agent score
50%

What's inside Aggligator

  1. Overview of Aggligator command line tools

    master

    The aggligator-util crate provides two primary command line tools for interacting with the Aggligator link aggregator:

    • agg-speed: Performs a speed test over a connection of aggregated TCP links.
    • agg-tunnel: Forwards arbitrary TCP ports over a connection of aggregated TCP links.

    Both tools feature a text-based, interactive connection and link monitor for real-time observation.

  2. What is Aggligator and how does it work?

    master

    Aggligator is a link aggregation library that combines multiple network links (such as TCP connections) into a single logical connection. It provides:

    • Link Aggregation (Channel Bonding): Distributes data across all available links to maximize combined capacity.
    • Failover: If a link fails, traffic is redistributed across remaining links.
    • Roaming: Supports switching between networks (e.g., Wi-Fi to Mobile Data) without dropping the application connection, even if IP addresses change.
    • User-space Implementation: Works over standard protocols like TCP, HTTPS, TLS, USB, and WebSockets without requiring operating system support.

    It is built on the Tokio asynchronous runtime and is written in safe Rust.

  3. Use SOCKS5 as an Aggligator transport

    master

    The aggligator-transport-socks crate provides an unauthenticated SOCKS5 proxy transport for the aggligator link aggregator.

    Configuration Details

    • Proxy Address: Each proxy is configured using an IP address or hostname, with an optional port number.
    • Link Establishment: The transport provides one link to the target per resolved IP address. Proxy hostnames are resolved locally and re-resolved periodically.
    • Target Resolution: Unlike the proxy address, target domain names are resolved by the SOCKS5 proxy itself, not locally.
  4. Run speed tests with `agg-speed`

    master

    The agg-speed command-line tool allows you to run speed tests using connections composed of aggregated TCP links. It uses Aggligator to combine multiple TCP links into a single connection, providing combined throughput and resilience against individual link failures.

    Usage: agg-speed [OPTIONS] <COMMAND>

    Subcommands:

    • client: Runs a raw speed test client.
    • server: Runs a raw speed test server.
    • show-cfg: Displays the default configuration.

    Global Options:

    • --cfg <CFG>: Specify a custom configuration file.
    • -d, --dump <DUMP>: Dump analysis data to a specified file.
    agg-speed [OPTIONS] <COMMAND>