Top
cor - connection oriented routing
Cor is a layer 3 protocol for zero administration (community/mesh) networks. It is implemented as a linux kernel patch. A few things running, but it is still in an early phase.
Cor is build to take care of these things:
- Automatic address assignment
- Fair bandwidth distribution
- Security; This means protection against many "Man in the middle" and DoS attacks.
- Privacy protection; Users enter the network without identifying themself. Every router only see the neighbor routers as the source and destination, but not the real sender and recipient (requires encryption). If you are wondering how secure this is, please read this warning.
It does this by doing:
- Source routing: The Client host decides the route; This is in contrast to "every router decides the next hop", which is done in IP networks. IP can also do source routing, but it is rarely used. In contrast to IP, cor does neighbor discovery in the kernel and provides a uniform way for routing daemons to discover the network.
- Address space: flat (no network/host distinction); Addresses can be either random numbers of variable length or public RSA keys. The latter is required for many security and privacy features. A router which has a rsa key as an address can receive all subsequent addresses and data encrypted. This makes the path a packet goes harder to track. Moreover the addresses are pretty unspoofable and unique, unless something is broken in a bad way.
Doing this in a network where routers are not aware of connections will mean that every packet has to carry very big headers. To avoid this, cor routers have to be made aware of connections. This way, the headers have to be transmited only once. It also opens the way to do congestion handling in a good way. IP handles congestion by dropping packets and sometimes hoping wrongly that the sender slows down. Cor routers can decide a rate for every stream and send messages to the previous router when a stream needs to go slower or faster. Combined with a credit system no user should be able to slow down others beyond their "fair share".
Current state of development:
The basic features are implemented, but still unstable and buggy. The credit system and encryption layer are completely unimplemented at the moment. Encryption can be implemented later in a backward compatible way. Currently there is no rsa library in kernel, which will be needed for the encryption part. Maybe somebody else ports on in the meantime... A user space routing daemon does not exist yet.
More info:
If you want to help, send me an email (see page Top for the address). There is also a linux.com group.
Downloads:
There is a git repository here (enter the net/cor/ directory). If you want to run it, look here for hints on how to build a test environment and here for some goodies. Older versions are available via the downloads page.