This document is a proposal for the protocol stack in Sirikata. Note that this is a protocol stack, not a single protocol.
At a high level this document addresses a number of problems:
- What is the lowest level communication abstraction we provide? What are its precise semantics?
- What protocols do we build on this base? What components can be provided for reuse?
- What are the system level protocols? E.g., what is the protocol for communicating with space services such as the proximity query processor and the location service?
- How do applications (objects) build on what we provide to add functionality to the system? What subset of our stack is exposed to objects?
In order to understand the terminology and reasoning in this document you should already be familiar with Sirikata's System Architecture.
There are a lot of parallels with traditional networking stacks. Much of the needed functionality is similar, where endpoints are objects instead of hosts. We must be careful in this discussion not to conflate the two. In particular, we keep in mind the following scenarios:
- Space has fault or is overloaded and loses/drops object messages permanently.
- Load balanced object host migrates an object to a different physical server. Object and other objects it is communicating with should not notice an interruption.
- Space splits a server or merges 2 server, or a server crashes and a new one replaces it. Both objects and space must be able to recover.