SwitchBoard
SwitchBoard is used to connect peers.
Structure
SwitchBoard is a DHT. A user connects through a gateway and then synchronises themselves to the DHT. Switchboard tracks who is connect and the information needed to connect to them (IP:Port and NAT Traversal data).
Service
As a local service, it can say if we're connected to another node. Search for another node. Connect to another node.
If we request to be connected to another node, it will return a messaging saying the request was received and is being processed. Later, it will return a message saying if the connection was successful or not.
Hole-Punching
I want to avoid using Hole Punching as much as possible - it's slow and annoying. But even if it were required everywhere, a small number of "gateways" could serve a huge number of users. Once a user is connected to one other peer, that peer can act as the STUN server for yet other peers. And so, any peer that can be discovered via the DHT can be reached via hole-punching (barring sym2sym).