The Myth: โTo save bandwidth, I should make my packets as small as possible by minimizing headers and sending frequent tiny updates.โ
Why This Is Wrong:
While minimizing packet size seems logical, header overhead doesnโt scale linearly. Consider this example:
Scenario 1: Many Small Packets - Send 100 temperature readings (2 bytes each) as 100 separate packets - Each packet needs 13-byte LoRaWAN header + 4-byte MIC = 17 bytes overhead - Total: (2 + 17) x 100 = 1,900 bytes - Overhead: 1,700 bytes (89.5%)
Scenario 2: One Batched Packet - Send all 100 readings in one packet - Packet: 13-byte header + 200-byte payload + 4-byte MIC = 217 bytes - Overhead: 17 bytes (7.8%) - Savings: 88% less bandwidth!
Additional Hidden Costs of Small Packets: 1. Radio wake-up energy: Each transmission requires powering up the radio (10-100 mW for 1-5 seconds) 2. Protocol overhead: Channel access, preamble, and synchronization for each packet 3. Gateway load: More packets = more processing and database writes 4. Collision risk: More transmissions = higher chance of interfering with other devices
The Right Approach: - Batch data when real-time updates arenโt critical - Balance packet size with latency requirements - Consider MTU limits: Donโt exceed Maximum Transmission Unit (LoRaWAN DR0 = 51 bytes) - Use compression: CBOR or Protocol Buffers can reduce payload size while batching multiple readings
Real-World Impact: A smart building with 500 temperature sensors sending every 10 minutes: - Small packets (2 bytes each): 1.9 GB/year, battery life 1 year - Batched packets (20 readings): 0.23 GB/year, battery life 5+ years - Bandwidth savings: 88%, Cost savings: $167/year at $0.10/MB
The Takeaway: Headers are overhead you pay per packet, not per byte. Batch your data intelligently to minimize both bandwidth costs and energy consumption.