Overview#
Constrained Nodes is defined in
RFC 7228 as a
node where some of the characteristics that are otherwise pretty much taken for granted for Internet
nodes at the time of writing are not attainable, often due to cost constraints and/or physical constraints on characteristics such as size, weight, and available power and energy.
The tight limits on power, memory, and Computing resources lead to hard upper bounds on state, code space, and processing cycles, making optimization of energy and network bandwidth usage a dominating consideration in all design requirements. Also, some layer-2 services such as full connectivity and broadcast/multicast may be lacking.
There are multiple facets to the constraints on nodes, often applying in combination, for example:
- constraints on the maximum code complexity (ROM/Flash),
- constraints on the size of state and buffers (RAM),
- constraints on the amount of Computing feasible in a period of time ("CPU power"),
- constraints on the available power (typically using low power wireless protocols)
- constraints on user interface and accessibility in deployment (ability to set keys, update software, etc.). (Input-constrained device)
3. Classes of Constrained Devices#
Despite the overwhelming variety of Internet-connected devices that can be envisioned, it may be worthwhile to have some succinct terminology for different classes of constrained devices. In this document, the class designations in Table 1 may be used as rough indications of device capabilities:
Name | data size (e.g., RAM) | code size (e.g., ROM) |
Class 0, C0 | << 10 KiB | << 100 KiB |
Class 1, C1 | 10 KiB | 100 KiB |
Class 2, C2 | 50 KiB | 250 KiB |
Table 1: Classes of Constrained Devices (KiB = 1024 bytes)
There might be more information for this subject on one of the following: