docs: init middleware docs
This commit is contained in:
parent
8a9f70825f
commit
062a480737
2 changed files with 91 additions and 0 deletions
56
docs/middleware/deniability.md
Normal file
56
docs/middleware/deniability.md
Normal file
|
@ -0,0 +1,56 @@
|
|||
# Deniability Middleware
|
||||
|
||||
This package provides the PreHook `deniability` which inserts ghost peers into announce responses and increases scrape counters to achieve plausible deniability.
|
||||
|
||||
## Functionality
|
||||
|
||||
### For Announces
|
||||
|
||||
This middleware will choose random announces and modify the list of peers returned.
|
||||
A random number of randomly generated peers will be inserted at random positions into the list of peers.
|
||||
As soon as the length of the list of peers exceeds `numWant`, peers will be replaced rather than inserted.
|
||||
|
||||
Also note that the IP address for the generated peeer consists of bytes in the range [1,254].
|
||||
Whether IPv4 or IPv6 addresses are generated depends on the announcing Peer's IP.
|
||||
|
||||
Note that if a response is picked for augmentation, at least one Peer will be inserted.
|
||||
There is one exception to this rule:
|
||||
Otherwise empty reponse will not be augmented to make it more difficult to determine the prefixes used for generated Peers.
|
||||
|
||||
### For Scrapes
|
||||
|
||||
A scrape will randomly be chosen, based on the `modify_response_probability`.
|
||||
If chosen, a number of seeders and leechers will be generated for every InfoHash of the scrape.
|
||||
|
||||
Note that there will be at least one peer added to every InfoHash, this can be either a seeder or a leecher.
|
||||
As with Announces, the only exception to this rule are otherwise empty scrapes.
|
||||
|
||||
## Configuration
|
||||
|
||||
This middleware provides the following parameters for configuration:
|
||||
|
||||
- `modify_response_probability` (float, >0, <= 1) indicates the probability by which a response will be augmented.
|
||||
- `max_random_peers` (int, >0) sets an upper boundary (inclusive) for the amount of peers added.
|
||||
- `prefix` (string, 20 characters at most) sets the prefix for generated peer IDs.
|
||||
The peer ID will be padded to 20 bytes using a random string of numeric characters.
|
||||
- `min_port` (int, >0, <=65535) sets a lower boundary for the port for generated peers.
|
||||
- `max_port` (int, >0, <=65536, > `min_port`) sets an upper boundary for the port for generated peers.
|
||||
- `parallelism` (int, >=0) determines the amount of parallelism this hook can operate with.
|
||||
The resulting theoretical upper limit of parallelism is `2^parallelism)`, assuming an even random distribution of infohashes.
|
||||
|
||||
An example config might look like this:
|
||||
|
||||
```yaml
|
||||
chihaya:
|
||||
prehooks:
|
||||
- name: deniability
|
||||
config:
|
||||
modify_response_probability: 0.2
|
||||
max_random_peers: 5
|
||||
prefix: -AZ2060-
|
||||
min_port: 40000
|
||||
max_port: 60000
|
||||
parallelism: 8
|
||||
```
|
||||
|
||||
For more information about peer IDs and their prefixes, see [this wiki entry](https://wiki.theory.org/BitTorrentSpecification#peer_id).
|
35
docs/middleware/interval_variation.md
Normal file
35
docs/middleware/interval_variation.md
Normal file
|
@ -0,0 +1,35 @@
|
|||
# Announce Interval Variation Middleware
|
||||
|
||||
This package provides the announce middleware `interval variation` which randomizes the announce interval.
|
||||
|
||||
## Functionality
|
||||
|
||||
This middleware chooses random announces and modifies the `interval` and `min_interval` fields.
|
||||
A random number of seconds are added to the `interval` field and, if desired, also to the `min_interval` field.
|
||||
|
||||
Note that if a response is picked for modification and `min_interval` should be changed as well, both `interval` and `min_interval` are modified by the same amount.
|
||||
|
||||
## Use Case
|
||||
|
||||
Use this middleware to avoid recurring load spikes on the tracker.
|
||||
By randomizing the announce interval, load spikes will flatten out after a few announce cycles.
|
||||
|
||||
## Configuration
|
||||
|
||||
This middleware provides the following parameters for configuration:
|
||||
|
||||
- `modify_response_probability` (float, >0, <= 1) indicates the probability by which a response will be chosen to have its announce intervals modified.
|
||||
- `max_increase_delta` (int, >0) sets an upper boundary (inclusive) for the amount of seconds added.
|
||||
- `modify_min_interval` (boolean) whether to modify the `min_interval` field as well.
|
||||
|
||||
An example config might look like this:
|
||||
|
||||
```yaml
|
||||
chihaya:
|
||||
prehooks:
|
||||
- name: interval variation
|
||||
config:
|
||||
modify_response_probability: 0.2
|
||||
max_increase_delta: 60
|
||||
modify_min_interval: true
|
||||
```
|
Loading…
Reference in a new issue