This post is a brain dump

How about a decentralized ping network?

It would be federated, so that you’d add an address and all other machines would fetch that address and it’s parameters from your machine. Then they’d run ping queries agains it.

The software would be a combined client-server executable.

Client

  • Fires requests agains targets
  • Throttling

Distribution

Distributed means that there are several services speaking the same language and interacting with eachother.

Keywords below are imaginary, just like the application.

Interactions

  • PUT: Add this address to your pool of addresses to ping
  • SUBSCRIBE: Please subscribe me to any downtime of this address
  • LIST: Please give me a list of your recent tries to this IP address
  • DELETE: Remove this IP address from the pool
  • IHAS: Send information to a foreign server that you have an IP address, the foreign server may choose to subscribe to a feed for that IP address.

Organization of efforts

  • DISCOVER: Ask an instance about what servers it knows, add them to your circle

  • PARTICIPATE: Ask an instance about IP addresses, server does round-robin of healthy addresses
    Arguments:

    • LIMIT: An upper limit of IP addresses returned by the instance

Maintaining a healthy network

  • IP ADDRESSES: Remove IP addresses that does not have any subscribers
  • RING MEMBERS: Remove ring members that does not participate in the efforts.

Notifications

  • Instances will have status feeds, one per IP address.
  • Instances may subscribe to other instances’ feeds by PubSubHubbub