There are three levels of device configuration:
- Device Descriptions: Flavor text for report generation.
- Device Groupings: Testing groups for synchronization and subnets.
- Device Topologies: Fine-grain network reachability control.
Device descriptions are simple text files indexed by MAC address included in generated reports. Located by default in directory
local/site/mac_addrs/macaddressXX/aux
,
they are copied unmodified into the report. See
resources/test_site/mac_addrs/3c5ab41e8f0a/aux/snake.txt
for an example. The base site directory (local/site
) is configurable by the site_path
config parameter.
More on site_path configurations: Site wide configurations
Devices can be grouped together for testing by using a "device specification"
file that is indexed by the device_specs
configuration parameter. See
resources/device_specs
folder for baseline examples (used for regression tests).
The basic structure is indexed by device MAC address, with a few basic fields:
group
: Networking group for the device, which is functionally equivalent to a named subnet. If no group is specified, then it defaults to an isolated group based on the device's MAC address. Devices in the same group will have network reachability (sans MUD restrictions) with a shared DHCP server (et. al.), while devices in separate groups will be completely sequestered.type
: The type of device, used for indexing into an appropriate MUD file. If no type is specified, then it defaults to default and the correspondingmud_files/default.json
MUD file. This value is used at runtime to index a device into a MUD file based on its MAC address. See the MUD ACL documentation for a more detailed description of how MUD files are applied.
All devices in the same group share a common network space, while devices in separate (or unspecified) groups are completely disjoint. On startup, the system will wait for all devices in a group to be present before starting. To limit communication between devices, rather than complete sequestering, they must be in the same group and have compatible type parameters applied.
Specific flows can be setup between devices using a specification like the example in device_specs_bacnet_star.json. Devices (specified by MAC addresses) can be linked together through their corresponding MUD files. For example, the existence of the JSON path object:
macAddrs.9a:02:57:1e:8f:01.controllers.bacnet.controlees.bacnet.mac_addrs.9a:02:57:1e:8f:02
Implies that the device :01 is linked to device :02 by the bacnet
'controllers' in their
corresponding MUD files, as specified by their type: The
MUD file for type bacnet
has multiple "controller": "bacnet"
entries that correspond to the protocol/port combinations that should be allowed.