Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
1. It promotes a list of known relay servers to use 2. It gives a proof of work challenge to solve The list of known relay servers allows us to not always use the same one, distributing both cost and availability. It also allows to reboot single relay servers for maintenance without bringing the whole service down. Each client should pick one or two, this will result in up to four relays being pinged during relay initialization (remember, there are two clients who both pick at random). Four connection attempts should be enough to give a sufficiently high probability of finding one that is up. The proof of work challenge is added in the attempt to protect the rendezvous server from a DOS overload. It is a single point of failure, and we want to be prepared if some dumb-ass spams it with connection attempts for some reason. The challenge is made in a way that its difficulty is configurable by the server, thus it can dynamically adapt at the load situation. It is also designed in a way to be as light on the server resource as possible (also in order to not accidentally introduce a new DOS vector): - The server can use the first 8 bytes of the challenge as running counter, only that needs to be stored. A binary heap gives - All other required information are stored and forwarded by the client, a MAC protects against clients that make up their challenges.
- Loading branch information