# Hardware-In-the-Loop (HIL) network simulation for supporting electrical power grid sub-stations
# Hardware-In-the-Loop (HIL) network simulation for supporting electrical power grid sub-stations
This is the NS3 applications from my master thesis that were made in the spring of 2021. The master thesis developed a working verison of DPDK enhanced ns-3, capable of supporting multiple NIC.
This is the ns-3 applications from my master thesis that were made in the spring of 2021. The master thesis developed a working verison of DPDK enhanced ns-3, capable of supporting multiple NIC.
____
____
Alterations to the source code are made in the folder “/ns-3.33/src/fd-net-device/” to:
Alterations to the ns-3 source code are made in the folder “/ns-3.33/src/fd-net-device/” to:
dpdk-net-device.cc/.h
dpdk-net-device.cc/.h
...
@@ -15,61 +14,69 @@ fd-net-device.cc/.h
...
@@ -15,61 +14,69 @@ fd-net-device.cc/.h
fd-net-device-helper.cc/.h
fd-net-device-helper.cc/.h
____
____
## HowTo guide for running the thesis simulations
## Setting the Ubuntu Environment
### Setting the Ubuntu Environment
The OS used in the thesis was Ubuntu 20.04.
The OS used in the thesis was Ubuntu 20.04.
1. First download this repository to your Ubuntu computer. It contain altered ns-3.33.
1. First download this repository to your Ubuntu computer. It contain altered ns-3.33.
2. Install DPDK by using the apt-get command below.
2. Install DPDK by using the apt-get command below.
* DPDK version used in the thesis was 20.11, so to prevent any compatibility issue, I recomend using that version.
* DPDK version used in the thesis was 20.11, so to prevent any compatibility issue, I recomend using this version.
* DPDK can manually be downloaded from [Downloads](https://core.dpdk.org/download/)
* DPDK can manually be downloaded from [Downloads](https://core.dpdk.org/download/)
* Check that your NIC is supported by DPDK [Supported HW](https://core.dpdk.org/supported/)
* Check that your NIC is supported by DPDK [Supported HW](https://core.dpdk.org/supported/)
```js
```sh
sudo apt-get install dpdk
sudo apt-get install dpdk
```
```
* Make sure you can run the following from the commandline terminal:
* Make sure you can run the following from the commandline terminal:
```js
```sh
sudo dpdk-devbind
sudo dpdk-devbind
```
```
* If not, add the dpdk commands to path.
* If not, add the dpdk commands to path.
3. Alter the GRUB bootloader configuration file to enable hugepages and set driver parameters. The alteration is made by changing the GRUB_CMDLINE_LINUX_DEFAULT parameter in the file “/etc/default/grub”. The provided parameter is my entire parameter setting.
3. Alter the GRUB bootloader configuration file to enable hugepages and set driver parameters. This is done by changing the GRUB_CMDLINE_LINUX_DEFAULT parameter in the file “/etc/default/grub”. The provided parameter was my entire parameter setting.
* "maybe-ubiquity" was present by default.
* "maybe-ubiquity" was present by default.
* The hugepages set 1GB hugepage by default and enables 1 hugepage. Tests showed that the application only used 1 hugepage. Set more if needed, but the more you set the more memory will be unavailable by your OS.
* The hugepage parameters set 1GB hugepage by default and enables 1 hugepage. Tests showed that the application only used 1 hugepage. Set more if needed, but the more you set the more memory will be unavailable by your OS when mounting (see step 5).
**iommu* parameters are for enabling the vfio-pci (and uio_igb if wanted) driver that was used by DPDK in the thesis.
**iommu* parameters are for enabling the vfio-pci (and uio_igb) driver that was used by DPDK in the thesis.
**isolcpus* isolate logical cpu cores and prevents the OS from using the logical cores. Add the cores you would like to use in your application here. The thesis used logical cores 4, 5, 10 and 11 that was used to run the DPDK application on.
**isolcpus* isolate logical cpu cores and prevents the OS from using the logical cores. Add the cores you would like to use in your application here. The thesis used logical cores 4, 5, 10 and 11 that was used to run the DPDK application on.
* Use ```lscpu``` to see how many logical cpu cores your computer have.