QoS levels (0, 1, 2) in IOT Protocols - Time & Space Complexity
We want to understand how the work done by different QoS levels changes as the number of messages grows.
How does the effort to deliver messages grow when more messages are sent?
Analyze the time complexity of the following QoS message delivery logic.
// Pseudocode for QoS message delivery
function deliverMessages(messages, qos) {
for (let msg of messages) {
if (qos === 0) {
sendOnce(msg);
} else if (qos === 1) {
sendAndWaitAck(msg);
} else if (qos === 2) {
sendWithTwoStepHandshake(msg);
}
}
}
This code sends each message differently based on QoS level: once, with one acknowledgment, or with a two-step handshake.
Look at what repeats as messages increase.
- Primary operation: Loop over all messages to send them.
- How many times: Once per message, so number of messages times.
As the number of messages grows, the sending steps grow too.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 sends (each with steps depending on QoS) |
| 100 | 100 sends (each with steps depending on QoS) |
| 1000 | 1000 sends (each with steps depending on QoS) |
Pattern observation: The total work grows directly with the number of messages.
Time Complexity: O(n)
This means the work to deliver messages grows in a straight line as you add more messages.
[X] Wrong: "QoS 2 takes much longer time because of the handshake, so its time complexity is higher than QoS 0 or 1."
[OK] Correct: While QoS 2 has more steps per message, the number of messages still controls the total work linearly. The extra steps are a constant factor, not a change in growth rate.
Understanding how message delivery scales helps you explain system behavior clearly and shows you can think about efficiency in real-world IoT systems.
"What if we added retries for failed messages in QoS 1 and 2? How would the time complexity change?"
Practice
Solution
Step 1: Understand QoS 0 delivery
QoS 0 means the message is sent once without waiting for any acknowledgment.Step 2: Compare with other QoS levels
QoS 1 and 2 involve confirmations; QoS 0 does not guarantee delivery.Final Answer:
The message is delivered at most once, with no confirmation. -> Option DQuick Check:
QoS 0 = no confirmation, at most once delivery [OK]
- Confusing QoS 0 with guaranteed delivery
- Thinking QoS 0 waits for acknowledgment
- Mixing QoS 0 with QoS 1 or 2 features
Solution
Step 1: Recall handshake details for QoS levels
QoS 2 uses a four-step handshake to guarantee exactly once delivery.Step 2: Differentiate from other QoS levels
QoS 0 has no handshake; QoS 1 uses a simpler acknowledgment.Final Answer:
QoS 2 -> Option BQuick Check:
Four-step handshake = QoS 2 [OK]
- Confusing QoS 1's single acknowledgment with four-step handshake
- Assuming QoS 0 has any handshake
- Choosing 'none of the above' incorrectly
Solution
Step 1: Understand QoS 1 delivery
QoS 1 ensures the message is delivered at least once by requiring acknowledgment.Step 2: Compare with QoS 0 and 2
QoS 0 sends once without acknowledgment; QoS 2 ensures exactly once with handshake.Final Answer:
The message is sent at least once, with acknowledgment. -> Option AQuick Check:
QoS 1 = at least once with ack [OK]
- Mixing QoS 1 with QoS 0's no acknowledgment
- Confusing QoS 1 with QoS 2's exactly once guarantee
- Assuming indefinite queuing for QoS 1
Solution
Step 1: Understand QoS 2 guarantees
QoS 2 guarantees exactly once delivery only if handshake completes successfully.Step 2: Analyze duplicate message cause
If handshake is interrupted, duplicates can occur due to retries.Final Answer:
The handshake process was interrupted or not completed. -> Option AQuick Check:
Incomplete handshake causes duplicates in QoS 2 [OK]
- Believing QoS 2 never allows duplicates
- Assuming wrong QoS level was set without checking
- Ignoring broker capabilities
Solution
Step 1: Identify critical data requirements
Critical data needs no loss and no duplication, so exactly once delivery is required.Step 2: Match QoS level to requirement
QoS 2 provides exactly once delivery using a four-step handshake, ensuring no duplicates or loss.Final Answer:
QoS 2, because it guarantees exactly once delivery with handshake. -> Option CQuick Check:
Critical data needs QoS 2 for exactly once delivery [OK]
- Choosing QoS 0 for critical data due to speed
- Confusing QoS 1's at least once with exactly once
- Ignoring handshake importance
Ready to prove it?
Pass the test and this pattern moves unknown
