The Routing Layer of PSYC is syntactically almost the same as PSYC itself, but to keep things orderly we call it the
Modular Message Protocol
It has a fundamental builtin notion of context and multicasting. The actual implementation of multicasting albeit is flexible and free for any brilliant mind to improve.
Have a look at the specification at http://www.psyc.eu/mmp.html
The purpose of separating routing from end-to-end content is to be able to produce rapid router technology (in hardware if necessary) which only parses the routing layer, then operates accordingly, without having to look at anything below.
Modules of MMP
- _compact style (know all standard methods and variables in advance, allow 'psyc:' to be left out on uniforms)
- _binary: allow binary body by specifying its length in MMP
- _length: encoding for escaping-free transparent binary variables.
- _multicast: support _context distribution with all its implications
- _state: use modifiers instead of defining everything every time
- _signature: leave out variable names, types (know signatures in advance or negotiate them)
- leaving out _templates (know all in advance, or negotiate them)
The point in all the modules is: a simple protocol implementation just doesn't support many or any of these modules and is still capable of communicating with the rest of PSYCspace, in fact a few vars in a UDP packet can be sufficient to do a job.
See also the Category:Module page.