allows you to co-simulate a power grid as a cyber-physical system, i.e., it emulates the communication network with realistic network traffic while simulating the corresponding power grid.
Here, links both domains and models their interactions: Measurements transmitted via the communication network always correspond to the current grid state, while commands issues to IEDs or PLCs directly influence the grid's configuration and behavior.
To define the topologies, configurations and behavior of both, the communication and the power grid network, uses scenarios. A scenario consists of the power grid model, a networking graph, and communication definitions.
The power grid model includes the set of used assets, e.g., loads and generators, transformers, as well as additional assets such as lines, buses, or circuit breakers. Besides the assets as such, their properties and interactions are defined as well: How much power does a certain load consume at maximum? Where is it placed in the grid? Can it be controlled by the grid operator?
Similarly, the networking graph defines nodes, i.e., hosts, switches and routers, and links with their individual properies. For hosts, their role can also be specified. Some hosts might be RTUs linked to power grid assets. Another host might be a firewall or mail server. While their role can be given in the networking graph, their behavior further depends on the configuration as well as individual implementations.
The communication definitions link default power grid assets with communication assets. For each RTU, for instance, the communication definition state which protocol-specific data points are available for this RTU, which MTU is responsible for this RTU and to which measures of which power grid asset a data point corresponds to.
Since a manual configuration of all these aspects becomes more and more infeasible with growing grid sizes, relies on PowerOwl to derive the networking graph and communication configuration based on a given power grid model.
To further customize the behavior of the scenario, e.g., to add further nodes, customize link latencies or deploy attackers, allows you to provide extensions for a scenario or customize the running simulation on the fly, either via a Python scripting interface or via the built-in CLI.
Consider to take a closer look at the built-in scenarios.
Once you selected your desired scenario (scenarios/powerowl_example
might be a good one for your first experiences), you can start the simulation.
-
You need superuser permissions to run
uses Linux networking namespaces and has to configure interfaces. This requires root privileges. -
Use the installed
wattson
Python module.
sudo python3 -m wattson
-
Provide the relative or absolute path to the selected scenario
sudo python3 -m wattson path/to/scenario
-
[Optional] Use
-h
for help on available command line options
sudo python3 -m wattson -h
- As soon as you drop into the CLI, the simulation is ready