High-performance open BitTorrent tracker (UDP, HTTP, WebTorrent)
Find a file
Joakim Frostegård a3b6cab3b5 Run cargo update
Updating anyhow v1.0.75 -> v1.0.76
    Removing base64 v0.13.1
    Updating clap v4.4.8 -> v4.4.11
    Updating clap_builder v4.4.8 -> v4.4.11
    Updating colored v2.0.4 -> v2.1.0
    Updating crossbeam v0.8.2 -> v0.8.3
    Updating crossbeam-channel v0.5.8 -> v0.5.10
    Updating crossbeam-deque v0.8.3 -> v0.8.4
    Updating crossbeam-epoch v0.9.15 -> v0.9.17
    Updating crossbeam-queue v0.3.8 -> v0.3.10
    Updating crossbeam-utils v0.8.16 -> v0.8.18
    Updating data-encoding v2.4.0 -> v2.5.0
    Updating deranged v0.3.9 -> v0.3.10
    Updating errno v0.3.7 -> v0.3.8
    Updating form_urlencoded v1.2.0 -> v1.2.1
    Updating futures v0.3.29 -> v0.3.30
    Updating futures-channel v0.3.29 -> v0.3.30
    Updating futures-core v0.3.29 -> v0.3.30
    Updating futures-executor v0.3.29 -> v0.3.30
    Updating futures-io v0.3.29 -> v0.3.30
    Updating futures-macro v0.3.29 -> v0.3.30
    Updating futures-sink v0.3.29 -> v0.3.30
    Updating futures-task v0.3.29 -> v0.3.30
    Updating futures-util v0.3.29 -> v0.3.30
    Updating gimli v0.28.0 -> v0.28.1
    Updating hashbrown v0.14.2 -> v0.14.3
    Updating hdrhistogram v7.5.3 -> v7.5.4
    Updating http-body v0.4.5 -> v0.4.6
    Updating hyper v0.14.27 -> v0.14.28
    Updating idna v0.4.0 -> v0.5.0
    Updating itoa v1.0.9 -> v1.0.10
    Updating js-sys v0.3.65 -> v0.3.66
    Updating libc v0.2.150 -> v0.2.151
    Updating linux-raw-sys v0.4.11 -> v0.4.12
    Updating mach2 v0.4.1 -> v0.4.2
    Updating metrics-exporter-prometheus v0.12.1 -> v0.12.2
    Updating metrics-macros v0.7.0 -> v0.7.1
    Updating mio v0.8.9 -> v0.8.10
    Updating object v0.32.1 -> v0.32.2
    Updating once_cell v1.18.0 -> v1.19.0
    Updating percent-encoding v2.3.0 -> v2.3.1
    Updating pkg-config v0.3.27 -> v0.3.28
    Updating portable-atomic v1.5.1 -> v1.6.0
    Updating proc-macro2 v1.0.69 -> v1.0.71
    Updating ring v0.17.5 -> v0.17.7
    Updating rustix v0.38.24 -> v0.38.28
    Updating rustls v0.21.9 -> v0.21.10
    Updating ryu v1.0.15 -> v1.0.16
    Updating serde v1.0.192 -> v1.0.193
    Updating serde_derive v1.0.192 -> v1.0.193
    Updating serde_spanned v0.6.4 -> v0.6.5
    Updating simple_logger v4.2.0 -> v4.3.0
    Updating slotmap v1.0.6 -> v1.0.7
    Updating syn v2.0.39 -> v2.0.43
    Updating thiserror v1.0.50 -> v1.0.52
    Updating thiserror-impl v1.0.50 -> v1.0.52
    Updating time v0.3.30 -> v0.3.31
    Updating time-macros v0.2.15 -> v0.2.16
    Updating tokio v1.34.0 -> v1.35.1
    Updating try-lock v0.2.4 -> v0.2.5
    Updating unicode-bidi v0.3.13 -> v0.3.14
    Updating url v2.4.1 -> v2.5.0
    Updating wasm-bindgen v0.2.88 -> v0.2.89
    Updating wasm-bindgen-backend v0.2.88 -> v0.2.89
    Updating wasm-bindgen-macro v0.2.88 -> v0.2.89
    Updating wasm-bindgen-macro-support v0.2.88 -> v0.2.89
    Updating wasm-bindgen-shared v0.2.88 -> v0.2.89
    Updating web-sys v0.3.65 -> v0.3.66
    Removing windows-sys v0.42.0
    Removing windows_aarch64_gnullvm v0.42.2
    Removing windows_aarch64_msvc v0.42.2
    Removing windows_i686_gnu v0.42.2
    Removing windows_i686_msvc v0.42.2
    Removing windows_x86_64_gnu v0.42.2
    Removing windows_x86_64_gnullvm v0.42.2
    Removing windows_x86_64_msvc v0.42.2
    Updating winnow v0.5.28 -> v0.5.30
    Updating zerocopy v0.7.26 -> v0.7.32
    Updating zerocopy-derive v0.7.26 -> v0.7.32
2023-12-26 00:21:20 +01:00
.github use zerocopy in udp protocol, easy running transfer CI locally 2023-12-02 12:24:41 +01:00
crates udp: harden ConnectionValidator 2023-12-26 00:19:47 +01:00
docker use zerocopy in udp protocol, easy running transfer CI locally 2023-12-02 12:24:41 +01:00
documents Update ws load test 2023-01-26 21:12:21 +01:00
scripts Update script for running file transfer tests locally 2023-12-10 12:17:26 +01:00
.dockerignore Add "documents" to .dockerignore 2022-07-23 17:50:54 +02:00
.gitignore work on http_private, including parsing announce requests 2022-04-02 13:32:36 +02:00
Cargo.lock Run cargo update 2023-12-26 00:21:20 +01:00
Cargo.toml Add aquatic_load_tester: multi-run multi-implementation load tests 2023-12-17 21:59:18 +01:00
CHANGELOG.md udp: harden ConnectionValidator 2023-12-26 00:19:47 +01:00
deny.toml add some allowed licences to deny.toml 2020-07-21 01:53:43 +02:00
LICENSE Decide to use Apache 2.0 license, add file and update Cargo.toml's 2020-04-20 16:54:43 +02:00
README.md http: allow disabling TLS, allow reverse proxies, general fixes 2023-11-17 18:16:29 +01:00
TODO.md udp: fix io_uring soundness issues 2023-11-23 18:52:13 +01:00

aquatic: high-performance open BitTorrent tracker

CI

High-performance open BitTorrent tracker, consisting of sub-implementations for different protocols:

Name Protocol OS requirements
aquatic_udp BitTorrent over UDP Unix-like
aquatic_http BitTorrent over HTTP, optionally over TLS Linux 5.8+
aquatic_ws WebTorrent, optionally over TLS Linux 5.8+

Features at a glance:

  • Multithreaded design for handling large amounts of traffic
  • All data is stored in-memory (no database needed)
  • IPv4 and IPv6 support
  • Supports forbidding/allowing info hashes
  • Prometheus metrics
  • Automated CI testing of full file transfers

Known users:

Performance of the UDP implementation

UDP BitTorrent tracker throughput comparison

More benchmark details are available here.

Usage

Please refer to the README pages for the respective implementations listed in the table above.

Architectural overview

Architectural overview of aquatic

Copyright (c) 2020-2023 Joakim Frostegård

Distributed under the terms of the Apache 2.0 license. Please refer to the LICENSE file in the repository root directory for details.

Trivia

The tracker is called aquatic because it thrives under a torrent of bits ;-)