v3.2.0
PrimAITE 3.2.0 Release Note
📰 Headlines 📰
- Link bandwidth limiting was reenabled. Links now correctly respect their bandwidth and refuse to transmit data once the limit is reached in that timestep. Frames arriving at a full link are dropped. This also applies to the airspace which has a single bandwidth shared between all devices using the airspace for each given frequency.
- Action masking was added to all environment types. PrimAITE can provide a boolean vector corresponding to RL agents' action lists to show which ones are valid at the current timestep. This can greatly increase training speed for RL algorithms that support action masks.
- Agent logging was improved. Each agent now produces a separate log file which contains information about the internal logic of the agent.
✨ What else is New ✨
- Configure actions -
DatabaseClient,RansomwareScript, andDoSBothave newCONFIGUREactions associated with them that allow setting application-specific attributes. These can be used by red agents to set the attack target after successful network discovery. - Action penalty - There is a new reward component that can be configured which applies a positive/negative reward for taking actions (other than the DONOTHING action).
🚀 Improvements 🚀
- NODE_APPLICATION_INSTALL action was improved to be more flexible. It can now be used to install any application. It no longer requires an
ip_addressparameter, ip configuration is handled by new CONFIGURE actions. - Action validation was improved in the simulation. Additional checks verify if an action is currently possible and a more helpful failure message is produced if the criteria for resolving an action were not met.
- Database fixing - The database no longer replies to queries while it is being fixed, preventing agents from spamming the repair action to maximise reward.
- Fixing duration - Fixing duration is now configurable per-service.
🐛 Bug Fixes 🐛
- Incorrect default action spaces -
NODE_APPLICATION_EXECUTEactions were removed from blue agents in the default configs.
🚦 Tests
This release has been tested against the full PrimAITE release process, including system-level testing, user testing, and design review.
⚠️ Breaking Changes ⚠️
NODE_APPLICATION_INSTALLactions no longer accept anip_addressparameter. If your custom configs use this action, you need to remove this parameter. You might need to addCONFIGUREactions to your agents that previously relied on this.
🔍 Known Issues 🔍
- Agent actions - Agents action spaces must use the
gymnasium.spaces.Discreteshape, and a list of actions must be provided using theaction_mapconfig option for each agent. Other action spaces and more flexible action space definition will be part of a future release. - Ray incompatibility with Python 3.8 - Recent versions of Ray fail to install on Python 3.8. Users who are using Python 3.8 cannot use the
[rl]optional dependency flag when installing PrimAITE; they must manually install their desired version of Ray.
i.e. Instead of runningpip install path/to/primaite/wheel.whl[rl], users should runpip install path/to/primaite/wheel.rland thenpip install ray[rllib]
This issue is not present when installing PrimAITE on Python 3.9 and later.
⬆️ Upgrade Instructions ⬆️
From wheel
pip install path/to/primaite-3.2.0-wheel.whl[rl] --upgradeAs a repo
git fetch
git checkout tags/v3.2.0
pip install -e .[rl] --upgrade