Background: ========== The company I work for develop Carrier Ethernet Switch (both HW and SW). I am facing a major decision I have to take about using RMS (or anothe in house scheduler algorithm) or using the OS scheduling.
Requirements (the most relevant functional and non-functional requirements): =========================================================
- Support various networking protocols (IGMP, STP, PBB-TE, ....)
- High availability - achieved also by redundant HW.
- Predictability - I would like to have performance predictability prior to actual development.
- Performance - achieving high performance and low system resources usage.
- Usability - allowing distributed development around the world.
- Integration with 3rd party - allowing "buy" and easy integration with them.
- Portability - loose coupling with OS/HW.
Solution Alternatives: ================ The layered based with asynchronous messages between them. The "dynamic control" layer is responsible for handling protocols' control packets.
Alternative 1 - Rate Monotonic Scheduler (or other in-house scheduler): In the RMS concept there is a single task that schedules all protocols. Each protocol must not exceed limited time quota and must not perform any CPU blocking operation. Blocking operations should be performed by services tasks that serve all protocols.
Alternative 2 - OS Scheduling In this approach every protocol has task (or more than one - for example to support Pipes & Filtering). The scheduling between the protocols is done by the OS (with or without time slicing).
I would be happy to have comments/observations or some other alternatives.
Thanks, Ran