Clustering
Functional goals: Given a list of IP addresses, maintain communicative cluster capable of sending and receiving messages between members Maximize ability to maintain cluster with various commonplace network conditions: dynamic IP address periodic temporary connection loss long term connection loss hardware failure Ensure attack surface is minimized to third parties nodes must allow connection from the internet due to changing IP addresses randomly calculated rendezvous windows