Skip to content

Networking

Mikayla edited this page May 4, 2024 · 9 revisions
image

Network Architecture

Version 2 of the network architecture identifies devices using their unique computer ID's rather than the channel they are configured to use. This allows using only 5 channels for the whole system, which are common across all the configured devices. The default channels are shown in the diagram above and the table below. On multiplayer servers, it is highly encouraged (and necessary if there is more than one system) to not use the default channels, as having two systems on the same network will cause undesirable behavior, such as devices linking to the wrong system.

Name Default Channel Purpose
SVR_CHANNEL 16240 Channel for all devices to send messages to the supervisor
PLC_CHANNEL 16241 Channel for messages from the supervisor to the reactor PLCs
RTU_CHANNEL 16242 Channel for messages from the supervisor to the RTU gateways
CRD_CHANNEL 16243 Channel for messages from the supervisor to the coordinator
PKT_CHANNEL 16244 Channel for messages from the supervisor/coordinator to pocket computers

HMAC Message Authentication

Caution

Please DO NOT USE A PASSWORD THAT YOU ACTUALLY USE FOR ANYTHING ELSE! Facility authentication keys are not securely stored, so anyone with access to the server's file system or the computer can view them.

Message authentication is a user-configurable feature that's enabled if an authentication key is provided. Note, computing hashes and serializing the messages takes some additional processing time, though it appears to be worst case in the 10s of milliseconds. Coordinator status packets are the largest, so those take the longest, giving those 10-20ms hash/verify times.

This is authentication, not encryption. Data is still sent in plain text, but it has a message authentication key sent with it that is used to verify that the message contents were not modified and packets are from a trusted device part of the same system.

From Wikipedia: https://en.wikipedia.org/wiki/HMAC

In cryptography, an HMAC (sometimes expanded as either keyed-hash message authentication code or hash-based message authentication code) is a specific type of message authentication code (MAC) involving a cryptographic hash function and a secret cryptographic key. As with any MAC, it may be used to simultaneously verify both the data integrity and authenticity of a message.
HMAC can provide authentication using a shared secret instead of using digital signatures with asymmetric cryptography. It trades off the need for a complex public key infrastructure by delegating the key exchange to the communicating parties, who are responsible for establishing and using a trusted channel to agree on the key prior to communication.

In this case, this prevents message forgery, which then prevents false status information, unauthorized commands, etc.

Clone this wiki locally