---
title: Meshwork
url: https://doc2.pstreamer.tv/en/manual/webui/meshwork.html
lang: en
product: Perfect Streamer
version: 2.0.2.362
---

# Meshwork

The **Meshwork** area (the area switch in the top bar) collects the consolidated screens of the domain node network: the domain overview, the node membership, the link graphs, the individual transport links and the shared catalogue of network resources. This is a top-down view of the whole network, as opposed to the screens of the “Node” area, which show a single node.

The network concepts, the domains, peer autodiscovery, operation behind NAT and the alerts are described in the [Meshwork](../meshwork/index.md#meshwork) section.

## Meshwork Overview

![Meshwork Overview.](../../_images/webui_meshwork_overview.en.png)

The domain summary panel: all network nodes and the key domain metrics in a single screen. The header shows the number of nodes; below it are the metric row and the lists.

The metric row combines the “Streamers” (number of nodes), “On-air streams”, “Egress” (total outbound bandwidth, Gbps), “Links healthy” (healthy transport links against their total number) and “Alarms” tiles. The “Alarms” tile counts the faulty nodes and the faulty active links and is highlighted when the value is non-zero.

The “Streamers” panel holds one row per node: the state indicator, and for a faulty node a text label next to it as well (“Degraded” or “Offline”); the node name, the region and the role, the number of on-air streams, the CPU load and the traffic (in/out). On an unreachable node these three figures are printed as a dash: the node no longer reports them, and passing off the last known values as current ones would be deceptive. The row of a node whose admin UI is reachable leads to its screens in the “Node” area. For the administrator role, a counter of the active alerts of the node is shown next to the state.

The “Fleet events” panel is visible to the administrator and aggregates the active alerts of all nodes: the time, the node the event belongs to (a link to its admin UI) and the text. The network model is described in [Meshwork](../meshwork/index.md#meshwork), the alerts in [Alerts (alerter)](../meshwork/alerts.md#meshwork-alerts).

## Nodes

![The “Nodes” screen: the domain membership as a table.](../../_images/webui_meshwork_nodes.en.png)

The domain membership as the current node sees it: the members of the network, their addresses and the state of the link with them. The screen is a table; the same network as a graph is shown by Topology.

The header shows the number of members (counting the current node), the externally observed address of the node itself (“seen as …”) and the “← Streams” link. Below is the “Domains” row with the list of the linked domains, in which the domain of the current node is highlighted; when there are no domains, “No linked domains” is displayed. If Meshwork is not configured, “Meshwork is not configured.” is shown instead of the table.

The columns are “Node”, “Address”, “Domain”, “Type”, “Version”, “Status”, “NAT”, “Uptime” and “Last contact”; the row is closed by a column with no heading that holds the “Forget node” action. The row order is fixed — the permanent neighbours first, then the automatically discovered ones, and within each group by node name; there is no sorting, filter or search on the screen.

“Type” takes two values: “Permanent” — the node is taken from the neighbour list ([Peers and secrets](../meshwork/setup.md#meshwork-peers)), “Auto” — it was found automatically through the shared domain. The value refers to the point of observation, so on the screen of an adjacent node the same member may be listed differently. “Version” is the version of the node’s build; the nodes report it across the domain, so it is known even for an auto-discovered member behind NAT whose data arrives through a neighbour. A dash means that the version has not reached here: either the build does not report it, or no data about the member has arrived at all — as with a permanent neighbour with which there has never been a link (“Last contact” is “never”). “Status” is “Alive” or “Dead”; after three failed link checks in a row the “Degraded” label appears next to it, and its tooltip holds the number of failures and the last error. “NAT” is marked only on a node behind address translation, and its “Address” is printed as “Internal network”: a private address is unreachable from here.

“Uptime” is the time since the node was started. The node reports not a counter but the moment of the start itself, so the value grows in the intervals between link checks as well, and on an unreachable node it keeps growing: the column answers the question of when the node was started, not of how long it has been in contact. Only a restart resets “Uptime”, and along with it the “Instance nonce” in the row’s details changes. A dash means that the node does not report the moment of the start: an old build, or a member with which there has not yet been a direct link. A dash with a clock icon is something else: the moment of the start has been received, but by the clock of the workstation an impossible value comes out of it — a time in the future or a period longer than ten years. The icon’s tooltip says the same: “This node’s clock differs from ours — the uptime cannot be computed”. A smaller divergence the icon does not catch: the uptime will be shown with the same error as the node’s clock has. Availability is the business of “Last contact”: the age of the last successful check, “never” on a node with which there has been no link, and a dash on the current node itself — it does not poll itself.

The node name is a link to its admin UI; an unreachable node is rendered as plain text with the “Node unavailable” tooltip. The row of the current node is marked “this node”, and a node of several domains carries the super-node icon.

The arrow at the start of the row expands the details of the node; when the next row is expanded, the previous one closes. The details hold the public entry points (HTTP and HTTPS), the exact time of the last contact, the node’s note, the telemetry of the checks (latency, the number of consecutive and total failures, the last error), the declared and the observed addresses and the instance nonce. A divergence between the declared and the observed addresses is exactly what means address translation. Only what the node has reported is shown; when there is nothing to report, “No additional details.” is displayed. From here, too, the “Open admin UI” button leads to the adjacent node: the row of the current node does not have it, and on an unreachable one it is disabled with the “Node unavailable” tooltip. The public entry points also determine where the transition leads: without them it goes by the node’s network address, and the completed sign-in is not carried there ([Web server & accounts](administration.md#webui-web-server)).

![An expanded row of an adjacent node with its details.](../../_images/webui_meshwork_nodes_detail.en.png)

On the current node the details begin with the “Meshwork traffic” panel: a bar of the shares of the outbound service exchange — “Base”, “Authentication”, “Peers”, “Library” and “Alerts” — the TX/RX rates and the exchange counters. The shares take apart the whole volume sent: “Base” absorbs the service scaffolding and everything not attributed to the other shares. Only the node itself keeps such counters about itself, so the rows of the neighbours have no panel.

![An expanded row of the current node with the “Meshwork traffic” panel.](../../_images/webui_meshwork_nodes_gossip.en.png)

An unreachable node does not disappear from the table: the row holds for a week from the last contact, and for all that time it is visible that the node existed and has gone silent — with the “Dead” status and a growing value in “Last contact”. The alert about its silence holds for just as long ([Alerts (alerter)](../meshwork/alerts.md#meshwork-alerts)): a node that has fallen over must be distinguishable from a node that never existed. A permanent neighbour is always visible — it is taken from the settings, not from observations.

A node that has been taken out of service and is not supposed to come back is removed with the “Forget node” action at the end of its row (on a narrow screen — in the node card). The action is available to the administrator on builds from 2.0.1.258 and takes the node away immediately, without waiting for the week to run out. The button is enabled only on a row with the “Dead” status; on a reachable node it is disabled with the “Only an offline node can be forgotten” tooltip, and on the row of the current node it is not there at all. What happens then depends on the kind of entry, and the “Forget this node?” confirmation window names the case outright: an automatically discovered node is dropped from this node’s view of the network and comes back on its own as soon as it starts answering again; a permanent neighbour is removed from the configured peer list ([Peers and secrets](../meshwork/setup.md#meshwork-peers)) — this edits the configuration and cannot be undone. The second case has a side effect: rewriting the peer list also clears the auto-discovered rows from the view, and they come back with the following exchanges.

A refusal is explained by the node itself, and its reply is shown right in the confirmation window, which stays open. The reply “Not available.” means not a refusal but the absence of the action as such: the node’s build does not know it, or the node is already shutting down. After a success the row goes away with the next refresh of the table, while the alert about the silence is cleared within one link-check cycle — that is, slightly later than the row disappears.

The row fields are described in [Network map](../meshwork/map.md#meshwork-map-nodes), peer configuration — in [Peers and secrets](../meshwork/setup.md#meshwork-peers), operation behind NAT — in [Nodes behind NAT](../meshwork/setup.md#meshwork-nat).

## Topology

![Topology, the “Transport” mode.](../../_images/webui_meshwork_topology.en.png)

A graph view of the domain network. The screen builds three different graphs; the mode is picked with the switch in the header — “Transport” (the default), “Mesh” and “Permanent”. The picked mode goes into the page address, so a link to the required graph is reproducible. The “Home node” button returns the centre of the graph to the current node and is unavailable when the graph is already centred on it. Changing the mode resets the picked centre: each mode has its own. Next to it is the same “Forget node” action as in the node table (Nodes), but it applies to the node selected on the graph. While none is selected the button is disabled, and the reason is printed next to it — “Select a node on the graph first”; for a reachable node the reason is different: “Only an offline node can be forgotten”. After the removal the selection is dropped, so that it does not point at a node that is no longer there.

“Transport” is the transport graph of the domain: the network nodes and the transport links between them, aggregated into bundles. A bundle is the links of one direction and one protocol; the header shows the number of nodes, bundles and links, while on the graph all the bundles of one direction are drawn as a single edge, so there are fewer lines in the picture than bundles in the header. The header also holds the domain of the connected node and the link marks. The marks distinguish a verified link, a broken one (the peer is offline), an external link, a link between Meshwork peers and the direction (one-way or two-way). A node may carry a counter of active alerts. A click on a link opens Transport Links filtered by the chosen direction — all the protocols between this pair of nodes at once.

“Mesh” is the domain membership centred on the connected node: the trustworthy star of the links it takes part in itself, and the inferred links between the remaining pairs. The same boundary is drawn by the note in the header: “The links between the other peers are inferred, not verified by this node”.

![Topology, the “Mesh” mode.](../../_images/webui_meshwork_topology_mesh.en.png)

“Permanent” is the graph of the configured peering of the whole domain: the nodes and the links from every node’s neighbour lists. The arrow shows the direction of the configuration, a two-way one shows a mutual configuration; the note in the header reads “The links reflect the configured peers of every node; the arrows show a one-way or a mutual configuration”. The node with the largest number of configured links is taken as the centre. A member that nobody has configured and that has configured nobody is not shown in this mode — except the current node itself: it is always on the graph.

![Topology, the “Permanent” mode.](../../_images/webui_meshwork_topology_permanent.en.png)

In the last two modes, instead of the number of bundles and links only the number of nodes remains in the header, and the link marks are replaced by the note about the mode: there is no verified or external link on such a graph, while a broken link and the direction are visible from the drawing itself. The links in these modes are not clickable.

A click on a node moves the centre of the graph to it, and a click on a node that already stands at the centre opens its admin UI. The centre is set from the very beginning — in “Transport” and “Mesh” it is the current node, in “Permanent” the centre node — so the very first click on it opens the admin UI without moving the graph. If a node’s admin UI is unreachable, the click does nothing. The network map and its marks are described in [Network map and resource catalog](../meshwork/map.md#meshwork-map), the node fields — in [Network map](../meshwork/map.md#meshwork-map-nodes), operation behind NAT — in [Nodes behind NAT](../meshwork/setup.md#meshwork-nat).

## Transport Links

The individual transport links between the domain nodes — the very links that “Topology” aggregates into bundles. The header shows the “Links” (total), “Healthy” (against the total number) and “Verified” metrics. When arriving from the “Topology” graph, the table opens filtered by the selected bundle; the filter is cleared with the “← all links” link.

Each row describes one link: the state indicator, the direction (the “Link” column, node → node), the “Proto” (PS1, SRT and other transport channels), the “Stream”, the “Identity” (“verified” or “inferred”, with the “reserve” mark for a backup link), the “Scope” (“internal”, “external”, “local” or “unknown”) and the telemetry — “TX→RX Mb/s”, “RTT” and “Loss”. The scope is taken from the side that connects by itself, so for the UDP, RTP, Pro-MPEG and RIST links it is “unknown”. The telemetry values appear when the corresponding data is available, otherwise “—” is shown; long lists are split into pages. The PS1 / SRT link type is described in [Shared resource catalog](../meshwork/map.md#meshwork-catalog), the protocols themselves in [Peer protocols for reliable transmission](../planning/index.md#planning-peer-protocols).

## Library

![Domain resource library.](../../_images/webui_meshwork_library.en.png)

The shared catalogue of the network resources occupied in the domain: the inputs and outputs of the nodes over the UDP, RTP, Pro-MPEG and RIST protocols, as well as PS1 and SRT. The catalogue is built automatically from the node announcements and is read-only. It is used to pick free addresses and ports and to locate the required streams in the network. The header shows the total number of entries and the “← Streams” link.

Above the list there is the “Source node” filter: “All nodes” by default, with the value list holding the nodes that are announcing something right now. The filter selects the entries of a single announcing node and does not change the number of entries in the header. The rows are ordered by node, domain and address.

The columns: “Node” — the announcing node, “Domain”, “Kind” (the direction and the connection mode of the endpoint: `output-multicast`, `input-caller`, `output-listen` and the like), “Proto”, “Destination” (the address and the port), “Stream” (the name or the number) and “Note”. The address carries the link scope (“local”, “internal” or “external”; the same attribute exists for the transport links — Transport Links), the SSM source (`SSM <address>`) and the VLAN number (`VLAN <n>`). The link scope is shown only for the PS1 and SRT endpoints that connect to the specified address themselves (`*-caller`): “local” — an address of the same node, “internal” — a peer confirmed by the domain authorization, “external” — all the rest. For RIST the link weight (`weight <n>`) is shown next to the protocol.

A click on a row opens the admin UI of its node at the statistics of its stream: a row of the own node opens in place, a row of a neighbour according to the “Open nodes in” setting of the top bar ([Common bar](index.md#webui-chrome)); Ctrl or ⌘ forces a new tab. The row of a node that is unavailable or unknown to the network has no action and carries the “Node unavailable” tooltip. The row tooltip shows the time the entry was announced.

The catalogue and the address selection rules are described in [Shared resource catalog](../meshwork/map.md#meshwork-catalog); the view from the standpoint of a single input or output is [Library — this feed](streams.md#webui-stream-library-feed).
