Skywire Glossary - SkycoinProject/skywire GitHub Wiki
Glossary
Skywire Transport:
Identified via a Transport ID, a Skywire Transport is represented as an interface and can be implemented as different transport types. It is a bi-directional line of communication between two Skywire nodes (transport edges) and constructs a single hop of a route.
It is the responsibility of a Skywire Factory to generate Skywire Transports.
Skywire transports are similar to pluggable transports in that they are represented by an interface and can therefore be implemented in different ways.
Skywire Transport ID:
A Skywire Transport is an uint16 integer that refers to a Skywire Transport and identifies it in the transport discovery.
Transport Edge:
A transport edge is one of the two Skywire nodes that make up a transport. It is represented by a unique public key that identifies the Skywire node.
Transport Type:
A Transport Type (represented by a string) refers to the underlying implementation of a Transport Factory or a Transport. A Transport Factory of a certain type can only construct Transports of that type.
Initially, we will have two transport types; dmsg (distributed messaging) and TCP. The TCP transport can be setup between two nodes with a public IP.
Transport Factory:
A transport factory is used by a Skywire node which constructs transports of a certain transport type. It is an interface that can either dial or listen for remotely initiated transports.
Transport Perspective:
A transport perspective is the assumed state of a transport (number of packets and bandwidth sent and received over that transport; whether transport is up or down). It only represents the perspective (on a transport) from a single transport edge and therefore the perspectives of two edges on the same transport might conflict.
Transport Discovery:
The transport discovery is a service that registers transports and the associated transport perspectives. It thereby provides the basis for the route finding service because it contains the information of the public network topology. It is queried by the route finding service to discover routes.
Hop:
A hop is equivalent to a transport and is a single unit of a route.
Skywire Route:
A Skywire Route is a unidirectional network path that allows apps and services to communicate. It can be made up of one or more hops between Skywire Nodes. It is identified by route IDs, interpreted by individual Skywire Nodes via the routing table.
Skywire Route ID:
A route ID is represented by 32 bits and is the basis for a Skywire Node’s routing rules. Route IDs are changed along every hop of a route and there is a unique set of route IDs for every node.
Route Finder:
The route finder is a service that evaluates the network topology via the information of the transport discovery to provide possible routes to inquiring Skywire nodes. Currently it evaluates possible routes only on the basis of the hop metric.
Routing Table:
The Routing Table is a key-value store that determines the action to be performed on an incoming Packet.
Using the Routing ID (from the Packet) as the key, a Skywire Node can obtain either the next transport that the packet is to be sent over (and the new Routing ID) or whether the packet is to be consumed by the node itself.
Loop:
A loop is a set of two routes that connect two applications running on different Skywire nodes. It comprises a forward (A-B) and a return (B-A) route.
Skywire App:
A Skywire App is an executable that interacts with the Skywire Visor via Unix pipes. Skywire apps provide services for the end user such as a proxy, ssh, chat. They use the API exposed by the visor.
dmsg:
dmsg is an implementation of Transport and Transport Factory over the Internet. It consists of a dmsg discovery, client and server instances, where the server instance relays messages between clients. It is the primary way of managing the network, while it is not meant to be the primary way of forwarding traffic in an established network.
dmsg Instance:
dmsg instances (alongside the dmsg discovery) are the main components of the dmsg system. A dmsg instance can be either a dmsg server or dmsg client.
dmsg Discovery:
The dmsg discovery is a key value store that registers the dmsg servers that a given dmsg client is connected to. It allows clients to get the information necessary to establish a dmsg transport with another node by querying the public keys associated dmsg servers.
Skywire Node:
A Skywire Node is the general term for nodes that make up the Skywire Network. There are two types of nodes currently: The visor and the setup node. Both belong to different planes of the network. (Visors make up the data plane, while the setup node is a part of the control plane.)
Skywire Visor:
A Skywire visor starts, stops, monitors and sets permissions for Skywire Apps on a Skywire node. It also forwards packets according to routing rules and can request routes and route setup. It can either forward packets to other nodes or consume packets locally.
Skywire Hypervisor:
A Skywire Hypervisor aggregates and polls information from the individual visors and exposes them to the Skywire manager UI. It authenticates with its keypair and allows the UI to call the API of the individual nodes.
Skywire Setup Node:
The Setup Node is a Skywire Node which runs a service that allows it to set up routes for other Skywire nodes. It does this by relaying the routing rules to individual Skywire visors along a route.