High-performance open BitTorrent tracker (UDP, HTTP, WebTorrent)
Find a file
Joakim Frostegård f061c47ef8 Run cargo update
Updating allocator-api2 v0.2.16 -> v0.2.18
    Updating anstream v0.6.13 -> v0.6.14
    Updating anstyle v1.0.6 -> v1.0.7
    Updating anstyle-parse v0.2.3 -> v0.2.4
    Updating anstyle-query v1.0.2 -> v1.0.3
    Updating anstyle-wincon v3.0.2 -> v3.0.3
    Updating anyhow v1.0.81 -> v1.0.82
    Updating autocfg v1.2.0 -> v1.3.0
    Updating aws-lc-rs v1.7.0 -> v1.7.1
    Updating aws-lc-sys v0.15.0 -> v0.16.0
    Updating base64 v0.22.0 -> v0.22.1
    Updating cc v1.0.92 -> v1.0.96
    Updating colorchoice v1.0.0 -> v1.0.1
    Updating data-encoding v2.5.0 -> v2.6.0
    Updating either v1.10.0 -> v1.11.0
    Updating fastrand v2.0.2 -> v2.1.0
    Updating flate2 v1.0.28 -> v1.0.30
    Updating hashbrown v0.14.3 -> v0.14.5
    Updating humanize-bytes v1.0.5 -> v1.0.6
    Updating io-uring v0.6.3 -> v0.6.4
      Adding is_terminal_polyfill v1.70.0
    Updating libc v0.2.153 -> v0.2.154
    Updating libmimalloc-sys v0.1.35 -> v0.1.37
    Updating lock_api v0.4.11 -> v0.4.12
    Updating mimalloc v0.1.39 -> v0.1.41
    Updating parking_lot v0.12.1 -> v0.12.2
    Updating parking_lot_core v0.9.9 -> v0.9.10
    Updating quote v1.0.35 -> v1.0.36
    Updating raw-cpuid v11.0.1 -> v11.0.2
    Updating redox_syscall v0.4.1 -> v0.5.1
    Updating rustix v0.38.32 -> v0.38.34
    Updating rustls-pki-types v1.4.1 -> v1.5.0
    Updating rustls-webpki v0.102.2 -> v0.102.3
    Updating serde v1.0.197 -> v1.0.200
    Updating serde_derive v1.0.197 -> v1.0.200
    Updating serde_json v1.0.115 -> v1.0.116
    Updating signal-hook-registry v1.4.1 -> v1.4.2
    Updating simd-json v0.13.9 -> v0.13.10
    Updating socket2 v0.5.6 -> v0.5.7
    Updating thiserror v1.0.58 -> v1.0.59
    Updating thiserror-impl v1.0.58 -> v1.0.59
    Updating time v0.3.34 -> v0.3.36
    Updating time-macros v0.2.17 -> v0.2.18
    Updating toml_edit v0.22.9 -> v0.22.12
    Updating winapi-util v0.1.6 -> v0.1.8
    Updating windows-targets v0.52.4 -> v0.52.5
    Updating windows_aarch64_gnullvm v0.52.4 -> v0.52.5
    Updating windows_aarch64_msvc v0.52.4 -> v0.52.5
    Updating windows_i686_gnu v0.52.4 -> v0.52.5
      Adding windows_i686_gnullvm v0.52.5
    Updating windows_i686_msvc v0.52.4 -> v0.52.5
    Updating windows_x86_64_gnu v0.52.4 -> v0.52.5
    Updating windows_x86_64_gnullvm v0.52.4 -> v0.52.5
    Updating windows_x86_64_msvc v0.52.4 -> v0.52.5
    Updating winnow v0.6.5 -> v0.6.7
2024-05-03 22:30:23 +02:00
.github ci: use dtolnay/rust-toolchain 2024-05-03 00:17:27 +02:00
crates udp protocol: test that parsing slices of various lengths doesn't panic 2024-05-03 22:29:15 +02:00
docker Add warning to aquatic_udp.Dockerfile 2024-01-27 18:09:38 +01:00
documents Improve udp README and latest load test md 2024-02-10 21:29:12 +01:00
scripts bencher: also bench aquatic_udp with io_uring 2024-02-09 01:21:24 +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 2024-05-03 22:30:23 +02:00
Cargo.toml Rename aquatic_load_tester to aquatic_bencher 2023-12-28 17:42:25 +01:00
CHANGELOG.md Update CHANGELOG 2024-04-25 22:36:41 +02: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 README: update support/auxiliary software section 2024-04-08 18:32:08 +02:00
TODO.md Update TODO 2024-05-03 00:18:59 +02: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 or later
aquatic_ws WebTorrent, optionally over TLS Linux 5.8 or later

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

More benchmark details are available here.

Usage

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

Auxiliary software

There are also some auxiliary applications and libraries.

Tracker load testing

Load test applications for aquatic and other trackers, useful for profiling:

Automated benchmarking of aquatic and other trackers: aquatic_bencher

Client ⇄ tracker communication

Libraries for communication between clients and trackers:

Other

  • aquatic_peer_id - extract BitTorrent client information from peer identifiers

Copyright (c) Joakim Frostegård

Distributed under the terms of the Apache License, Version 2.0. 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 ;-)