Use this framework to select the appropriate address space for your deployment before implementation:
| Tiny Network |
1-50 |
8-bit (256) |
Custom protocols, I²C addresses |
Acceptable |
| Small Home/Building |
50-200 |
16-bit (65K) |
Zigbee short addresses, BACnet MS/TP |
50% at 300 devices |
| Campus/District |
200-50,000 |
32-bit (4.3B) |
LoRaWAN DevAddr, IPv4 private |
50% at 77K devices |
| City/Enterprise |
50K-1M |
64-bit (1.8×10^19) |
BLE MAC, EUI-64 |
50% at 5 billion devices |
| Global IoT |
1M+ |
128-bit (3.4×10^38) |
IPv6, UUID |
Collision impossible |
Step-by-Step Selection Process:
1. Estimate Maximum Device Count (with 5-year growth)
| Current devices |
500 sensors today |
| Growth rate |
20% per year |
| 5-year projection |
Current x (1 + rate)^5 |
| Safety factor |
2x the 5-year projection |
| Maximum design count |
Use this number for address-space sizing |
2. Apply Birthday Problem Safe Count Formula
| Compute safe count |
Safe Count = sqrt(Address Space) x 0.85 |
| Compare against demand |
Maximum devices < Safe Count |
| If the check fails |
Move to a larger address space or add a collision-prevention strategy. |
3. Check Protocol Compatibility
| Zigbee |
16-bit short |
Yes (use 64-bit EUI-64) |
| LoRaWAN |
32-bit DevAddr |
Limited (regional allocation) |
| Thread |
16-bit short |
Yes (IPv6 underneath) |
| BLE |
48-bit MAC |
No (hardware-assigned) |
4. Consider Collision Mitigation Strategy
| Prevention |
Coordinator assigns addresses |
Zigbee, star topologies |
Requires central coordination; single point of failure |
| Detection |
Duplicate Address Detection (DAD) |
IPv6 SLAAC, Thread |
Adds join latency (1-2 sec); network overhead |
| Larger Space |
Use 128-bit instead of 16-bit |
Any protocol with flexibility |
Storage overhead (16 bytes vs 2 bytes) |
| Hierarchical |
Divide address space by location |
Large deployments |
Requires careful planning; hard to reorganize |
5. Calculate Storage and Transmission Overhead
Address size impacts:
- Memory:
N devices × address_bytes × 2 (storage + routing tables)
- Bandwidth:
address_bytes per packet × packets_per_day
Example with 1,000 devices:
| 16-bit addresses |
2 bytes x 1,000 = 2 KB |
200 bytes/day |
| 128-bit addresses |
16 bytes x 1,000 = 16 KB |
1,600 bytes/day |
6. Final Decision Matrix
Score each option (1-5, higher = better):
| Collision risk |
1 (high) |
3 (medium) |
5 (very low) |
5 (impossible) |
| Memory efficiency |
5 |
4 |
2 |
1 |
| Bandwidth efficiency |
5 |
4 |
2 |
1 |
| Future scalability |
1 |
3 |
5 |
5 |
| Implementation cost |
5 |
4 |
3 |
2 |
Choose the option with highest total score meeting your minimum collision risk requirement.
Real-World Example Decision:
Scenario: Smart warehouse, 500 current sensors, 20% annual growth, 5-year horizon.
Calculation:
| Growth planning |
500 x (1.2)^5 x 2 = 2,488 devices |
Design for about 2,500 devices. |
| 16-bit safe count |
sqrt(65,536) x 0.85 = 218 |
Too small. |
| 32-bit safe count |
sqrt(4.3B) x 0.85 = 55,700 |
Sufficient. |
Decision: Use 32-bit addresses (LoRaWAN DevAddr or IPv4 private range).
Validation:
- Collision probability at 2,488 devices in 32-bit space: ~0.07% (acceptable)
- Routing table overhead: 2,488 × 4 bytes = 9.7 KB (manageable)
- Protocol: LoRaWAN supports 32-bit DevAddr natively
This systematic approach prevents the “deploy and discover collision problems later” scenario that plagues many IoT projects.