Merged PR 419: integrate NIC traffic into observation space

## Summary
- Integrates the NIC traffic into the observation space
- Added `monitored_traffic` property into agent config which specifies which traffic is going to be included in observation

## Test process
https://dev.azure.com/ma-dev-uk/PrimAITE/_git/PrimAITE/pullrequest/419?_a=files&path=/tests/integration_tests/game_layer/observations/test_nic_observations.py

## Checklist
- [X] PR is linked to a **work item**
- [X] **acceptance criteria** of linked ticket are met
- [X] performed **self-review** of the code
- [X] written **tests** for any new functionality added with this PR
- [ ] updated the **documentation** if this PR changes or adds functionality
- [ ] written/updated **design docs** if this PR implements new functionality
- [ ] updated the **change log**
- [X] ran **pre-commit** checks for code style
- [ ] attended to any **TO-DOs** left in the code

Related work items: #2658
This commit is contained in:
Czar Echavez
2024-06-13 17:53:43 +00:00
8 changed files with 234 additions and 11 deletions

View File

@@ -277,12 +277,12 @@ class NetworkInterface(SimComponent, ABC):
if protocol != IPProtocol.ICMP:
if port not in self.traffic[protocol]:
self.traffic[protocol][port] = {"inbound": 0, "outbound": 0}
self.traffic[protocol][port][direction] += frame.size
self.traffic[protocol][port][direction] += frame.size_Mbits
else:
# Handle ICMP protocol separately (ICMP does not use ports)
if not self.traffic[protocol]:
self.traffic[protocol] = {"inbound": 0, "outbound": 0}
self.traffic[protocol][direction] += frame.size
self.traffic[protocol][direction] += frame.size_Mbits
@abstractmethod
def send_frame(self, frame: Frame) -> bool:
@@ -325,6 +325,11 @@ class NetworkInterface(SimComponent, ABC):
"""
super().apply_timestep(timestep=timestep)
def pre_timestep(self, timestep: int) -> None:
"""Apply pre-timestep logic."""
super().pre_timestep(timestep)
self.traffic = {}
class WiredNetworkInterface(NetworkInterface, ABC):
"""