Schedule Randomization Repo
Authors
The owner (and main contributor) of this repo: Nils Vreman.
Collaborators: Richard Pates, Kristin Krüger, Gerhard Fohler, Martina Maggio.
Running tests
Packages
To be able to run this benchmark test, aside from python3.6, two packages are needed:
- numpy
- ortools
These packages can easily be installed with the commands:
pip3 install numpy
pip3 install ortools
Execution
After installing necessary packages, the benchmark test could be executed using the Makefile placed in the Code directory. It will create a directory called "data" containing all the results and corresponding tasksets. The class FileSystemManager is then used to access the results.
Navigation
Code
In the Code directory you will find the code used to implement the algorithm explained in the paper: Minimizing Side-Channel Attack Vulnerability via Schedule Randomization
The code is implemented in Python 3.6 using Google OR-tools toolbox for constraint optimization. Down below, some of the most important classes are summarized in a table.
Class name | File name | Responsibility |
---|---|---|
ConstraintBuilder | constraintBuilder.py | The optimizer class. Generates a set of schedules based on the parameters of the taskset passed to the class. |
Taskset | taskset.py | Code representation of a taskset. Includes functions to compute utilization, optimal number of schedules, and hyperperiod. |
Schedule | schedule.py | Code representation of a schedule. Includes function to check for validity. |
- The Benchmark tests used to produce the results in the paper can be run using the Makefile presented in the Code directory. It generates tasksets, stores them as well as their solution in a separate directory (named "data"). The class FileSystemManager can then be used to access the solution.
- The format of which the result pdf (see Results) needs the data is generated through the generate_result_file.py script.
Results
In the Results directory, the results generated by our benchmark can be found. Each page in the pdf-file contains the results from the experiments performed on a certain maximum hyperperiod (written as a title in the top left corner of each side). Each figure then represents a specific number of tasks in each taskset of that experiment. The results written in red boxes is the accuracy of the algorithm, i.e., for how large fraction of the tasksets our algorithm found an optimal schedule set within 60 minutes. This is also summarized in the table below.
n\l | 100 | 200 | 300 | 400 | 500 |
---|---|---|---|---|---|
2 | 100.0 | 99.9 | 100.0 | 100.0 | 100.0 |
3 | 100.0 | 96.9 | 92.1 | 85.9 | 82.4 |
4 | 99.7 | 90.5 | 80.3 | 70.8 | 66.7 |
5 | 97.4 | 81.0 | 69.7 | 61.7 | 52.5 |
6 | 95.2 | 76.6 | 58.4 | 52.6 | 44.6 |
7 | 92.8 | 70.9 | 56.9 | 45.2 | 38.4 |
8 | 89.5 | 67.3 | 47.2 | 39.3 | 31.8 |
9 | 89.0 | 62.5 | 45.5 | 37.1 | 28.7 |
10 | 88.0 | 59.4 | 38.7 | 32.4 | 24.7 |
Comments
For comments or questions, please send an e-mail to x.x@control.lth.se.