I'm going to implement a BFD module (for MPLS LSPs) in VxWorks and was wondering the following:

Is it better to create and use a separate timer instance (<2048) per BFD session at the specified Tx interval


is it better to use a global timer that runs at 100us and checks each session's the time that has expired since the last BFD was sent which will result in higher (potentially unnecessary) CPU usage but will in turn allow for usage of different Tx & Rx intervals (which is a requirement as per RFC5884).

Any alternative ideas on how to best solve this real-time problem?


I wanted to comment but am new to the site. It appears your question is whether to set up an individual watchdog timer per BFD session vs. a single global timer.

The single global timer is just automatic polling, the CPU load would be the execution time of the task divided by the period of execution.

A timer per BFD would depend upon how many BFD sessions are allowed to run simultaneously. The greater the number of timers hence the greater the CPU load.

The key here is to estimate a periodicity of the task execution even if it is aperiodic. The next step would be to do a quick Rate Monotonic Analysis for all the tasks running on the CPU without the timers. This technique will give you an idea of how much relative spare capacity you have in the system depending on the priority of the task kicked off by the timer.

Remember that depending on the overall tasking model of the system phasing of task execution is important. The faster higher priority tasks run the more those tasks consume the relative spare capacity of the lower priority tasks.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.