Skip to content

AssimilationProtocol

borgified edited this page Nov 27, 2023 · 37 revisions

The Assimilation Communications Protocol

This protocol was outlined in the Assimilation Systems blog several years ago, where it was described as a reliable no news is good news (RNNIGN) protocol. An even earlier article provides details on Assimilation message formats.

General Protocol Characteristics

This protocol is designed to support an essentially unlimited number of nanoprobes (hundreds of thousands or more) connected to a central system - the CMA. This communication must have the following characteristics:

  • Reliable: Requests sent to a nanoprobe must be received unless the nanoprobe restarts. Reports from nanoprobes to the CMA must be received unless the nanoprobe restarts.
  • Scalable: the CMA must allow simultaneous communication with all its essentially unlimited number of clients.
  • Secure: Communication must be Confidential, Authenticated, and Authorized. The commands given to nanoprobes are run under very high levels of privilege, and the results are security-sensitive in many cases.
  • Infrequent: After initial startup, nanoprobes only need to report changes in status, which are designed to be infrequent, commonly not changing for days or months.
  • Quiet on the network: because of the scalability goals, excess verbosity on the network cannot be tolerated.

The infrequent, quiet, and scalable criteria work together to eliminate TCP as the bottom level transport mechanism. The reliable and secure criteria implies that raw UDP cannot be used by itself. As a result, we built a custom protocol on top of UDP, incorporating these criteria.

The protocol that supports these criteria is detailed in the subsequent section and associated articles.

Protocol Details

The following sections (wiki pages) describe various aspects of this protocol.


Left Over Stuff

(Make sure this is all eventually incorporated into the various sections) Some of the most important properties of this protocol are listed below:

  • Nanoprobe death is detected by a unique O(1) heartbeat system.
  • Agent death detection has no single point of failure
  • Packet compression is provided by zlib