#bittorrent #http #p2p #http-server #torrent #server

bin+lib aquatic_http

高性能开放HTTP BitTorrent跟踪器(可选TLS)

4个版本 (破坏性更新)

0.9.0 2024年5月3日
0.8.0 2023年3月18日
0.2.0 2022年3月26日
0.1.0 2020年9月13日

#1590 in 网络编程

Download history 10/week @ 2024-04-13 17/week @ 2024-04-20 79/week @ 2024-04-27 127/week @ 2024-05-04 27/week @ 2024-05-11 25/week @ 2024-05-18 29/week @ 2024-05-25 5/week @ 2024-06-01 14/week @ 2024-06-08 40/week @ 2024-06-15 36/week @ 2024-06-22 37/week @ 2024-06-29 17/week @ 2024-07-06 9/week @ 2024-07-13 40/week @ 2024-07-27

每月91次 下载
aquatic 中使用

Apache-2.0

180KB
3.5K SLoC

aquatic_http: 高性能开放HTTP BitTorrent跟踪器

CI

适用于Linux 5.8或更高版本的开放HTTP BitTorrent跟踪器。

快速查看特性

  • 多线程设计,用于处理大量流量
  • 所有数据存储在内存中(无需数据库)
  • 支持IPv4和IPv6
  • 支持禁止/允许info散列
  • Prometheus度量
  • 自动CI测试完整文件传输

性能

HTTP BitTorrent tracker throughput comparison

更多基准详情请参阅 此处

用法

编译

  • 使用 rustup 安装Rust(推荐使用最新稳定版本)
  • 使用包管理器安装构建依赖项(例如,apt-get install cmake build-essential
  • 克隆此git仓库并构建应用程序
git clone https://github.com/greatest-ape/aquatic.git && cd aquatic

# Recommended: tell Rust to enable support for all SIMD extensions present on
# current CPU except for those relating to AVX-512. (If you run a processor
# that doesn't clock down when using AVX-512, you can enable those instructions
# too.)
. ./scripts/env-native-cpu-without-avx-512

cargo build --release -p aquatic_http

配置

生成配置文件

./target/release/aquatic_http -p > "aquatic-http-config.toml"

对文件进行必要的调整。你可能会想要调整 address (监听地址)在 network 部分下。

要使用TLS运行,请配置证书和私钥文件。

支持在反向代理后面运行。请参阅配置文件以获取详细信息。

运行

确保锁定内存限制足够

  • 如果你使用的是systemd服务文件,请向其中添加 LimitMEMLOCK=65536000
  • 否则,请将以下行添加到 /etc/security/limits.conf,然后注销并重新登录
*    hard    memlock    65536
*    soft    memlock    65536

完成后,启动应用程序

./target/release/aquatic_http -c "aquatic-http-config.toml"

如果你的服务器指向域名 example.com 并且你已将跟踪器配置为在端口3000上运行,现在人们可以通过将URL https://example.com:3000/announce 添加到他们的种子文件或磁力链接来使用它。

负载测试

提供了一种负载测试应用程序。它支持以与跟踪应用程序类似的方式生成和加载配置文件。

启动跟踪器后,运行负载测试器

. ./scripts/env-native-cpu-without-avx-512 # Optional

cargo run --release -p aquatic_http_load_test -- --help

详细信息

实现

  • BEP 003:HTTP BitTorrent协议(更多详情)。异常
    • 不跟踪种子下载次数(始终发送0)
    • 只支持紧凑响应
  • BEP 023:紧凑HTTP响应
  • BEP 007:IPv6支持
  • BEP 048:HTTP刮擦支持。注意
    • 不允许完整的刮擦,即所有注册的info散列

aquatic_http 的测试没有 aquatic_udp 那么多,但在生产中可能运行良好。

架构概述

Architectural overview of aquatic

版权(c)Joakim Frostegård

根据Apache许可证第2.0版分发。有关详细信息,请参阅存储库根目录中的 LICENSE 文件。

依赖项

~21–33MB
~633K SLoC