network: Node-local skewing clocks (Unbounded Random Skew)
This is a model for node-local skewing clocks from the paper "Clock Skew Models for ns-3", published at ICNS3 2025 (https://dl.acm.org/doi/full/10.1145/3747204.3747208).
This is the unbounded skew clock model with some enhancements following feedback from the conference. The initial work on this project is found here: https://gitlab.com/shaanzie/ns-3-dev/-/tree/unbounded-clock-skew (This branch had a lot of conflicts so I decided to work on a fresh build with the suggested enhancements).
This model intends to provide node-local clocks that skew with respect to each other at different rates, which can be configured by the user. I have written a base example in the examples/ folder and an initial test suite. I'm looking to add more regression tests to this as I work on it.
Some enhancements that were suggested to this model at the conference (which are incorporated):
- The overhead of calling GetLocalTime() is too high. For this, on recommendation from the maintainers, we call the random function to the change the drift more sporadically, keeping the drift constant for longer periods of time.
- Added a testing suite that checks whether the local clocks advance correctly within a tolerance limit to account for clock skew.
- Added an example suite to show how to use these clocks.
TO-DO items:
- Add a helper function if the model is too complicated to use.
- Add more tests for a more thorough regression analysis.