I2P 2.4.0 Release

Release Announcements
Post Reply
User avatar
eyedeekay
Posts: 70
Joined: 21 Jul 2018 06:53

I2P 2.4.0 Release

Post by eyedeekay »

See also: https://geti2p.net/en/get-involved/roadmap

This release is going to focus on identifying hardening the netDb against context confusion attacks, refining and elaborating upon the behavior of the blocklist, and mitigating some of the types of spam which have appeared on the network. We will be implementing handling of congestion capabilities, eliminating the majority of lookup spam, and implementing an i2pd-style multiple-netDb design which allows each client to use a different store of LeaseSets than a floodfill running on the same router, providing us with a clear boundary between information sent to and used by clients and information sent to and used by the router. By doing things this way, we can also make make it easier for the netDb to handle obscure cases like multihoming. Please test, test, test, and report your findings, these are big changes and they won't go in unless we are sure they're right.
  • Target Release Date: December 18, 2023.
    Major Changes Due Date: November 13 2023
    Tag Freeze Date: December 6, 2023
If you want to run the code I am running, clone the master branch from git.
Last edited by eyedeekay on 02 Dec 2023 16:09, edited 8 times in total.
User avatar
eyedeekay
Posts: 70
Joined: 21 Jul 2018 06:53

Re: I2P 2.4.0 Release

Post by eyedeekay »

Dates updated above.
User avatar
eyedeekay
Posts: 70
Joined: 21 Jul 2018 06:53

Re: I2P 2.4.0 Release

Post by eyedeekay »

Major changes will now be accepted until the 30th.
User avatar
eyedeekay
Posts: 70
Joined: 21 Jul 2018 06:53

Re: I2P 2.4.0 Release

Post by eyedeekay »

Dates updated again.
User avatar
eyedeekay
Posts: 70
Joined: 21 Jul 2018 06:53

Re: I2P 2.4.0 Release

Post by eyedeekay »

We're pushing it back one last time. Like I said in the OP, if it's not right it's not going in. New dates added above.
User avatar
eyedeekay
Posts: 70
Joined: 21 Jul 2018 06:53

Re: I2P 2.4.0 Release

Post by eyedeekay »

Most important dev build this cycle is out:

https://github.com/i2p/i2p.i2p/releases ... p-2.3.0-12

I2P is closing in on the long-delayed release of the 2.4.0 router, which
contains a major redesign of one of the oldest and most essential shared
systems in I2P, the Network Database, or NetDB. The NetDB is I2P's DHT, a
variant of Kademlia which uses a technique called "Floodfill" to elect peers
to flood out information efficiently. If the DHT doesn't work, the routers that
make up the network won't be able to find the peers that it needs to operate, so
we have to be very sure that we've done it correctly.
TL:DR This change needs widespread testing

If you want to help, you can get a dev build at our official Github:

https://github.com/i2p/i2p.i2p/releases ... p-2.3.0-12

After downloading, copy the i2pupdate.su3 file to your I2P install directory and
restart. In about a minute, your I2P router will be upgraded to the new version.
Want to learn more? Read on...

This change will allow I2P to manage multiple versions of the NetDB, which may
co-exist in different "Contexts" on the same router, allowing them to enforce
secure behavior based upon their role when used by the router. In the new
design, a NetDB can assigned either a "main" role, or a "client" role.

In this new model, every router has a single "main" NetDB, which is used for
Floodfill operations, network maintenance, and detatched LeaseSet lookups.
However, routers that have Client Tunnels also have an equal number of client
NetDBs, which hold only the information required to operate their clients. When
a client publishes it's LeaseSet out a client tunnel, it is managed from within
the client NetDB, and when a client needs a LeaseSet, it is looked up and stored
in the client NetDB. This allows 2 things to change:

when using the main NetDB, the router is able to handle every LeaseSet in
exactly the same way, including those belonging to it's own clients.
it allows us to maintain and organize multiple copies of a single LeaseSet
so that a client maintains a copy of all the LeaseSets it needs, and the client
is solely responsible for keeping them up to date.

This allows us to greatly simplify the way we handle LeaseSets by identifying
how the LeaseSet will be used with the context in which it is being stored. This
design can eliminate an entire hypothetical attack class where an attacker
attempts to confuse the DHT about the origins of a particular LeaseSet. As an
added benefit of employing this technique, the kinds of information that a NetDB
needs to use is known in advance. This is therefore a significant advance for
I2P's security and efficiency.

As I said in the pre-release forum post, this change has the potential to break
the network, and it cannot go live if we're not sure it's working correctly.
Please help us test the new NetDB, and report your issues at:

i2pgit.org
git.idk.i2p
i2pforum.net
i2pforum.i2p
github.com
User avatar
eyedeekay
Posts: 70
Joined: 21 Jul 2018 06:53

Re: I2P 2.4.0 Release

Post by eyedeekay »

# I2P 2.3.0-14-rc **Release Candidate Needs Testers**

This updated dev build features the changes which were present in
the earlier 2.3.0-12 dev build, **plus** it updates and implements
handling for "Congestion Capabilities" a new feature which helps
us respond to attackers who attempt to congest the network by consuming
excessive resources.

## Help us test this new feature for hardening the network against attack

If you want to help, you can get a dev build at our official Github:

- https://github.com/i2p/i2p.i2p/releases ... .3.0-14-rc

### What are Congestion Capabilities?

When you are using I2P to make connections, you can be one of two basic
things, a "Router" or a "Client." Routers make connections to eachother
and they form the I2P Network itself, and Clients are used to build applications
inside the I2P network like HTTP Servers, for instance by forming Tunnels
between routers. In order to build these connections, a Router broadcasts it's
"RouterInfo" to the Network Database, which is where Capabilities come in.

A RouterInfo contains a set of "Capabilities" which indicate what the Router
it represents is capable of. If it is capable of connecting directly or whether
it requires a relay/introducer, on which addresses, whether NTCP2 or SSU2, and
bandwidth tier are all expressed inside the RouterInfo. With this change, when a
router is nearing the limit of what it can handle, it will publish an additional
Capability in it's RouterInfo which will indicate the level of congestion it is
experiencing.

When other routers see that this router is in distress, they can then "back off"
and request fewer or none of their client tunnels be built through the affected
router, giving it time to recover and reducing the chances that it's resources will
be exhausted.

Please help us test the Congestion Capabilities, and report your issues at:

- [i2pgit.org](https://i2pgit.org/i2p-hackers/i2p.i2p)
- [git.idk.i2p](http://git.idk.i2p/i2p-hackers/i2p.i2p)
- [i2pforum.net](https://i2pforum.net)
- [i2pforum.i2p](http://i2pforum.i2p)
- [github.com](https://github.com/i2p/i2p.i2p)
Post Reply