mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +00:00
90 lines
2.3 KiB
Markdown
90 lines
2.3 KiB
Markdown
# aquatic
|
||
|
||
Blazingly fast, multi-threaded UDP BitTorrent tracker written in Rust.
|
||
|
||
Aims to implements the [UDP BitTorrent protocol](https://libtorrent.org/udp_tracker_protocol.html), except that it:
|
||
|
||
* Doesn't care about IP addresses sent in announce requests. The packet
|
||
source IP is always used.
|
||
* Doesn't track of the number of torrent downloads (0 is always sent).
|
||
|
||
Supports IPv4 and IPv6.
|
||
|
||
## Installation and usage
|
||
|
||
Install rust (stable is fine) with rustup, as well as cmake. Then, compile and run aquatic:
|
||
|
||
```sh
|
||
./scripts/run-server.sh
|
||
```
|
||
|
||
To print default configuration as toml, pass the "-p" flag to the binary:
|
||
|
||
```sh
|
||
./scripts/run-server.sh -p
|
||
```
|
||
|
||
Example output:
|
||
|
||
```toml
|
||
socket_workers = 1
|
||
request_workers = 1
|
||
|
||
[network]
|
||
address = '127.0.0.1:3000'
|
||
max_scrape_torrents = 255
|
||
max_response_peers = 255
|
||
peer_announce_interval = 900
|
||
socket_recv_buffer_size = 524288
|
||
poll_event_capacity = 4096
|
||
|
||
[handlers]
|
||
max_requests_per_iter = 10000
|
||
channel_recv_timeout_microseconds = 200
|
||
|
||
[statistics]
|
||
interval = 5
|
||
|
||
[cleaning]
|
||
interval = 30
|
||
max_peer_age = 1200
|
||
max_connection_age = 300
|
||
```
|
||
|
||
To adjust the settings, save this text to a file and make your changes. The
|
||
values you will most likely want to adjust are `socket_workers` (number of
|
||
threads reading from and writing to sockets) and `network.address`. (Some
|
||
documentation of the various options is available in source code file
|
||
`aquatic/src/lib/config.rs`.) Then run aquatic with a "-c" argument pointing
|
||
to the file, e.g.:
|
||
|
||
```sh
|
||
./scripts/run-server.sh -c "tmp/aquatic.toml"
|
||
```
|
||
|
||
## Benchmarks
|
||
|
||
Performance was compared to [opentracker](http://erdgeist.org/arts/software/opentracker/) using `aquatic_load_test`.
|
||
|
||
Server responses per second, best result in bold:
|
||
|
||
| workers | aquatic | opentracker |
|
||
| ------- | ----------- | ----------- |
|
||
| 1 | n/a | __177k__ |
|
||
| 2 | __168k__ | 98k |
|
||
| 3 | __187k__ | 118k |
|
||
| 4 | __216k__ | 127k |
|
||
| 6 | __309k__ | 109k |
|
||
| 8 | __408k__ | 96k |
|
||
|
||
(See `documents/aquatic-load-test-2020-04-19.pdf` for details.)
|
||
|
||
## Copyright and license
|
||
|
||
Copyright (c) 2020 Joakim Frostegård
|
||
|
||
Distributed under Apache 2.0 license (details in `LICENSE` file.)
|
||
|
||
## Trivia
|
||
|
||
The tracker is called aquatic because it thrives under a torrent of bits ;-)
|