Invisible Internet Project: An open-source low-latency P2P overlay network that uses onion routing to provide location anonymity.
I2P is an overlay network, exposing a simple layer that applications can use to anonymously and securely send messages to each other. I2P routes traffic through a decentralised network of peers to conceal both the sender and recipient from anyone conducting network surveillance.
The network itself is strictly message based (a la IP/UDP), but there is a library available to allow reliable streaming communication on top of it (a la TCP). All communication is end to end encrypted (in total there are four layers of encryption used when sending a message), and the end points ("destinations") are cryptographic identifiers (essentially a pair of public keys).
- Destination - an address inside I2P; roughly equivalent to an IP address.
- RouterInfo - the information required to directly connect to a particular I2P node (IP address, public keys etc.)
- LeaseSet - the information required to connect to an application or service inside I2P (Destination, public keys, tunnel gateways etc.)
- netDb - the distributed database where network routing information is stored (RouterInfos and LeaseSets).
Application development guide: https://geti2p.net/en/get-involved/develop/applications