When developing real-time systems, performance isn’t just about reducing average CPU usage — it’s about guaranteeing predictable behavior under the heaviest load conditions. At Simma Software, we often get asked why our real-time CAN device drivers and protocol stacks don’t use CAN ID filtering. While filtering might seem like a useful optimization, in practice it does not improve the most important metric in real-time systems: worst-case performance.
Worst-Case Performance Is What Matters
Our drivers and protocol stacks are designed with low latency and predictable execution times as top priorities. In real-time applications, it’s not enough to perform well “on average.” What truly matters is how the system behaves during the most demanding conditions.
- At 500 kbps, a CAN bus can deliver approximately 4 frames per millisecond.
- In networks such as J1939 or UDS, it is common for multiple frames to arrive within the same 1 ms task cycle (e.g., address claim traffic or transport protocol sessions).
- In hostile scenarios, attackers can easily transmit frames with global CAN IDs that bypass any filtering rules.
Because of these realities, CAN ID filtering cannot prevent multiple frames from arriving simultaneously. A robust stack must always be able to handle the worst-case load.
Filtering as a Crutch
Some competitors and developers lean heavily on CAN ID filtering as a way to reduce workload. This often results in:
- Slower interrupt handling, since their software depends on hardware to discard frames.
- Less deterministic performance, because their designs aren’t optimized for maximum throughput.
At Simma Software, we view filtering as a crutch rather than a solution. Instead, we design our drivers to handle all frames deterministically. This ensures consistent behavior even in fully saturated networks or under intentional flooding attacks.
Proven Efficiency
Efficiency is at the core of our software design. Our stacks and drivers are engineered to handle maximum traffic loads without straining system resources.
- At 500 kbps, a fully loaded CAN bus transmits about 4,000 frames per second.
- Our protocol stacks and drivers process this load using only about 2% CPU on a typical 32-bit embedded controller running at 80 MHz.
This performance proves that CAN ID filtering is unnecessary to achieve throughput or CPU utilization targets. Customers can rely on our software without worrying about hidden bottlenecks.
The Simma Software Advantage
By not relying on CAN ID filtering, Simma Software delivers:
- Deterministic, worst-case performance under any traffic condition.
- Resilience against malicious traffic, where attackers may exploit filtering rules.
- Efficient CPU utilization, even at full CAN bus saturation.
This design philosophy reflects our commitment to robustness, real-time guarantees, and efficiency — not just reliance on hardware features that don’t solve the real challenges.
Learn More
If you’d like to learn more about Simma Software’s CAN, J1939, and UDS stacks — or benchmark them against competitors — contact us today at Simma Software.
Table of Contents