Go to file
zzz aa4a0419ba Tunnels: Fix RED
This builds on and replaces MR !23 which fixed the bw calc used for RED by
changing from a 40 ms bucket to an exponential moving average.

Here we fix the other part of RED which is the dropping calculation.
Previously, it simply used the bw calc to start dropping if the
bw was higher than a threshold. The drop percentage rose from
0 to 100%, linearly, based on how far the bandwidth was
above the threshold. This was far, far from the RED paper.

Now, we follow the RED paper (see ref. in SyntheticREDQueue javadoc)
to calculate an average queue size, using the exact same
exponential moving average method used for bandwidth.
Similar to CoDel, it also includes a count of how long
the size is over the threshold, and increases the drop probability
with the count.
The unadjusted drop probability rises from 0 to 2% and then
everything is dropped, as in the RED paper.
The low and high thresholds are configured at 100 ms and 500 ms
of queued data, respectively.

The queue is "synthetic" in that there's not actually a queue.
It only calculates how big the queue would be if it were
a real queue and were being emptied at exactly the
target rate.
All actual queueing is done downstream in the transports
and in UDP-Sender.

The goals are, for an 80% default share, to do most of the
part. traffic dropping here in RED, not downstream in UDP-Sender,
while fully utilizing the configured share bandwidth.
If the router goes into high message delay mode, that means
we are not dropping enough in RED.
Above 80% share this probably doesn't work as well.

Tested for a few days in the live net.
There will probably be more tuning required, in particular
to achieve the goal in live net of "protecting" the UDP-Sender
queue and local client/router traffic by dropping
more aggressively in RED.

WIP, not for merging, see !23 for additional comments.
2021-03-13 07:26:04 -05:00
2021-03-11 21:18:29 -05:00
2021-03-04 07:16:03 -05:00
2021-02-18 06:32:47 -05:00
2021-02-10 08:39:24 -05:00
2021-02-17 10:11:58 -05:00
2021-03-13 07:26:04 -05:00
2021-01-23 18:19:31 +01:00
2018-12-11 11:22:43 +00:00
2020-12-11 20:21:10 +00:00
2021-01-04 09:36:34 -05:00
2019-02-17 01:16:20 +00:00
2019-02-17 01:16:20 +00:00

I2P

This is the source code for the reference Java implementation of I2P.

Latest release: https://geti2p.net/download

Installing

See INSTALL.txt or https://geti2p.net/download for installation instructions.

Documentation

https://geti2p.net/how

FAQ: https://geti2p.net/faq

API: http://docs.i2p-projekt.de/javadoc/ or run 'ant javadoc' then start at build/javadoc/index.html

How to contribute / Hack on I2P

Please check out HACKING.md and other documents in the docs directory.

Building packages from source

To get development branch from source control: https://geti2p.net/newdevelopers

Prerequisites

  • Java SDK (preferably Oracle or OpenJDK) 8 or higher
    • Non-linux operating systems and JVMs: See https://trac.i2p2.de/wiki/java
    • Certain subsystems for embedded (core, router, mstreaming, streaming, i2ptunnel) require only Java 6
  • Apache Ant 1.9.8 or higher
  • The xgettext, msgfmt, and msgmerge tools installed from the GNU gettext package http://www.gnu.org/software/gettext/
  • Build environment must use a UTF-8 locale.

Ant build process

On x86 systems do:

ant pkg

On non-x86, use one of the following instead:

ant installer-linux
ant installer-freebsd
ant installer-osx

Run 'ant' with no arguments to see other build options.

Gradle build process

Full builds of installers or updates are not yet possible, but the code can be compiled with:

./gradlew assemble

This will download dependencies over the clearnet by default, including Gradle itself. To download through a SOCKS proxy (e.g. Tor), add the following lines to your ~/.gradle/gradle.properties:

systemProp.socksProxyHost=localhost
systemProp.socksProxyPort=9150

Contact info

Need help? See the IRC channel #i2p on irc.freenode.net

Bug reports: https://trac.i2p2.de/report/1

Contact information, security issues, press inquiries: https://geti2p.net/en/contact

Twitter: @i2p, @geti2p

Licenses

See LICENSE.txt

Description
The I2P anonymous network, Java Implementation
Readme 228 MiB
Languages
Java 86.8%
CSS 4.8%
HTML 4.1%
Shell 1.1%
JavaScript 1.1%
Other 1.9%