Slink NetStatus Aggregator

Description

BNCS has FABIAN for linking over WAN BNCS devices. This uses a single client application to connect to multiple external servers.

Slink, a similar engine deliberately runs the client a single connection. This is to simplify maintenance where you don't have to take down every external link to a system to change just one thing.

Both FABIAN and Slink can use a BNCS infodriver device to present link-status to the network. On a system with many links you have many slinkClients and so many status infodrivers - one for each slinkClient instance (since they call can't share). For a system with 50 links you may need 100 status infodrivers (one for main, one for reserve) which is impractical.

slinkClient extends an old mechanism for device messaging: NS or NetStatus (or ES as ApplCore users might know it). This allows all the status information to be sent irrespective of TxRx state. NS messages are generated from the first BNCS device on a slinkClient link. This only makes slink-connected devices like any other normal device driver (having a connection status related to the device number)

slinkNetStatusAggregator is an infodriver external application, and takes the device number of the infodriver to use as a command line parameter.

slinkNetStatusAggregator fills a specific need to re-present the NS messages as a single BNCS device as if that device were a FabianLink status infodriver. It listens across the network for NS messages, and maintains "fabian state" in infodriver slots.

slinkNetStatusAggregator runs only on the workstation on which one or more slinkClient applications run. This isn't a technical limitation, merely one of keeping the configuration simple, and logical and which matches entirely the way a FabianLink status infodriver would work.

Configuration

Configuration is then taken from the DEV_nnn.INI file corresponding to the device number supplied on the command line.

The following section is used to configure this application.

[slinkNetStatusAggregator]
;Index_<slot>=<device>,<optionalName>
Index_001=101
RepollTimeout(ms)=0

This example will map the connection state of device 101 to slot 1 on the infodriver. The "slot" number doesn't have to be zero-padded, or in order in the file, but does need to be a unique integer in the normal infodriver slot-range and a unique value. Invalid (usually duplicate) numbers are rejected with a debug message.

The device number is the first device number that the slinkClient registers and is the "redundancy master" for that link.

You can add an optional name which is then used to label this row in the UI. If this parameter is not present then an attempt is made to find the name in the DEV_nnn.INI file in "the usual places".

[Device]
Name=here

or

[GRD]
Name=here

RepollTimeout specifies in ms how often to re-poll the status values. If a reply isn't received within 2 times the timeout value then status is reset to 0 (not connected).

slinkClient configuration

This mechanism only works if slinkClient is generating the NS messages this application needs to operate. The following slinkClient configuration is required:

[slink]
SendSpontaneousNS=1

Status slots

The mapped status slots can contain whatever the slinkClient sends. Currently this is the following values:

Value | Notes
0 | Not connected
3 | Connected / RxOnly
4 | Connected / TxRx

"FABIAN" states 1 and 2 are not currently implemented in slinkClient and will show as "not connected".

Version History

Version | Date | Notes
1.0.0.1 | 11/12/2018 | development version
1.0.1.0 | 12/12/2018 | development version
1.0.2.0 | 13/12/2018 | Check of device number when loading config. Looks for platform in the usual locations
1.0.3.0 | 13/12/2018 | Using a more likely workstation range check
1.0.4.0 | 03/01/2019 | Adds edit config menu option to open the config file directly from the UI (rather than scrabbling about in the file system)
1.0.5.0 | 27/08/2019 | Clears status slots on closedown, reasserts status slots on redundancy change. Closes with infodriver (or client) shutdown
1.0.6.0 | 12/03/2020 | BST-705 Allows sorting of UI columns
1.0.7.0 | 08/06/2020 | BST-817 Tidies docs to indicate required use of SendSpontaneousNS with slinkClient. Also adds regular poll of configured links in case they crash/disappear
1.0.8.0 | 10/06/2020 | BST-826 Adds device name to the device number (much the same as slinkClient)
1.0.9.0 | 26/06/2020 | BST-826 Adds name from slinkNetStatusAggregator config with priority over name from DEV_xxx.ini file
1.0.10.0 | 03/07/2020 | BST-826 - just splits name from device number into its own column
Build: bncs_4.7.5 5800 a1b48197a Atos|Syntel © 2021