The Go language Overlay functions for XLattice.
An Overlay is characterized by an address space, a transport protocol, and possibly a set of rules for navigating the address space using the protocol.
An Overlay may either be system-supported, like TCP/IP will normally be, or it may explicitly depend upon an underlying Overlay, in the way that HTTP, for example, is generally implemented over TCP/IP.
If the Overlay is system-supported, traffic will be routed and neighbors will be reached by making calls to operating system primitives such as sockets.
In some Overlays there is a method which, given an EndPoint x
, returns
another EndPoint g
, a gateway, which can be used to route messages to
EndPoint x
.
- the global Internet,
0/0
- private IP address space, usually in
10/8
or/16
s in192.168
- email-mediated, where gateways convert messages into email and then use conventional email protocols (
SMTP
) to transport and store messages - data-keyed, where machines exchange traffic through a content-keyed storage system
- name-keyed, where systems exchange traffic through a distributed system storing values by name (the key)
A Gateway is an XLattice Node which can be used for routing traffic between Overlays. The Gateway can simply forward message with headers added or altered as necessary to route traffic, or the message content may be altered as necessitated for example by protocol switching or encryption.
Minimal implementation. Functions are largely stubbed.
More information on the xlOverlay_go project can be found here