Network Subsystem¶
Purpose¶
The Network Subsystem is responsible for sending and receiving messages to and from remote nodes.
Overview¶
The Network Subsystem consists of the following engines.
Router¶
The Router engine is responsible for
spawning a Node Proxy instance for each remote node,
and a Pub/Sub Topic instance for each pub/sub topic.
It maintains a database of known NodeAdvert
and TopicAdvert
messages.
Node Proxy¶
A Node Proxy engine is responsible for communication with one specific remote node.
It performs transport selection, connection establishment and maintenance.
It forwards messages between local engine instances and Transport Connection engine instances.
Connections may be ephemeral or permanent. Ephemeral connections are established when the first message is sent to the node, or when the remote node initiates a connection, and not re-established automatically when the connection is lost. Permanent connections are established when the Node Proxy is started, and automatically re-established when the connection is lost.
The engine instance name corresponds to the remote NodeID
.
Transport Connection¶
A Transport Protocol engine is responsible for accepting and initiating transport connections for one specific transport protocol, such as QUIC or TLS.
Transport Protocol¶
Pub/Sub Topic¶
A Pub/Sub Topic engine is responsible for topic-based publish/subscribe (pub/sub) message dissemination for a specific pub/sub topic.
The protocol allows a set of authorized publishers to publish messages in the topic, as well as local and remote engines to subscribe to it. Published messages are disseminated to all subscribers.
The engine instance name corresponds to the TopicID
.