In a Thread network, nodes are split into two forwarding roles:
Router
A Router is a node that:
forwards packets for network devices
provides secure commissioning services for devices trying to join the network
keeps its transceiver enabled at all times
End Device
An End Device (ED) is a node that:
communicates primarily with a single Router
does not forward packets for other network devices
can disable its transceiver to reduce power
Device types
Furthermore, nodes comprise a number of types.
Full Thread Device
A Full Thread Device (FTD) always has its radio on, subscribes to the
all-routers multicast address, and maintains IPv6 address mappings. There are
three types of FTDs:
Router
Router Eligible End Device (REED) — can be promoted to a Router
Full End Device (FED) — cannot be promoted to a Router
An FTD can operate as a Router (Parent) or an End Device (Child).
Minimal Thread Device
A Minimal Thread Device does not subscribe to the all-routers
multicast address and forwards all messages to its Parent. There are
two types of MTDs:
Minimal End Device (MED) — transceiver always on, does not need to poll for
messages from its parent
Sleepy End Device (SED) — normally disabled, wakes on occasion to poll for
messages from its parent
An MTD can only operate as an End Device (Child).
Upgrading and downgrading
When a REED is the only node in reach of a new End Device wishing to join the
Thread network, it can upgrade itself and operate as a Router:
Conversely, when a Router has no children, it can downgrade itself and operate
as an End Device:
Other roles and types
Thread Leader
The Thread Leader is a Router that is responsible for managing the set of
Routers in a Thread network. It is dynamically self-elected for fault tolerance,
and aggregates and distributes network-wide configuration information.
Border Router
A Border Router is a device that can forward information between a Thread
network and a non-Thread network (for example, Wi-Fi). It also configures a
Thread network for external connectivity.
Any device may serve as a Border Router.
Partitions
A Thread network might be composed of partitions. This occurs when a group of
Thread devices can no longer communicate with another group of Thread devices.
Each partition logically operates as a distinct Thread network with its own
Leader, Router ID assignments, and network data, while retaining the same
security credentials for all devices across all partitions.
Partitions in a Thread network do not have wireless connectivity between each
other, and if partitions regain connectivity, they automatically merge into a
single partition.
Note that the use of "Thread network" in this primer assumes a single partition.
Where necessary, key concepts and examples are clarified with the term "partition."
Partitions are covered in-depth later in this primer.
Device limits
There are limits to the number of device types a single Thread network supports.
Role
Limit
Leader
1
Router
32
End Device
511 per Router
Thread tries to keep the number of Routers between 16 and 23. If a REED attaches
as an End Device and the number of Routers in the network is below 16, it
automatically promotes itself to a Router.
Recap
What you learned:
A Thread device is either a Router (Parent) or an End Device (Child)
A Thread device is either a Full Thread Device (maintains IPv6 address
mappings) or a Minimal Thread Device (forwards all messages to its Parent)
A Router Eligible End Device can promote itself to a Router, and vice versa
Every Thread network partition has a Leader to manage Routers
A Border Router is used to connect Thread and non-Thread networks
A Thread network might be composed of multiple partitions
Check your understanding
A Thread network device can fulfill one of two forwarding roles.
What are they?
Child Node.
Incorrect.
Router.
Correct.
End Device.
Correct.
Gateway.
Incorrect.
What are the two primary types of Thread device?
Minimal Thread Device (MTD).
Correct.
Full Thread Device (FTD).
Correct.
Miniscule Thread Device (MTD).
Incorrect.
Sleepy End Device (SED).
Incorrect.
Which of the following statements about Routers is not true?
A Router can disable its transceiver to reduce power.
Devices that are functioning as Routers do not disable their
transceiver. (If they did, they'd be unable to function properly as a
Router.)
A Router forwards packets for network devices.
This statement is true.
A Router keeps its transceiver enabled at all times.
This statement is true. In order to function properly as a Router,
a device must keep its transceiver online at all times.
A Router provides secure commissioning services for devices trying
to join the network.
This statement is true. Commissioning is an important function of a
Thread Router.
When can a device upgrade itself to a Router?
When it is a REED and it is the only node in reach of a new End
Device seeking to join the Thread network.
That's right. Under these circumstances, a REED can promote itself
to a Router.
When it is an End Device seeking to join the Thread network.
Incorrect.
When it is a REED and the Thread network has merged with a larger
network.
Incorrect.
When can a Router cause itself to stop acting as a Router?
When it has no children.
That's correct. A Router with no children may revert to
an End Device on its own.
When a new End Device is seeking to join the
Thread network.
Wrong. A Router cannot revert to an End Device in this scenario.
When another device on the network elects to become a Router.
This could be true. If the number of Thread routers increases to 24
or more, existing Thread routers can start evaluating whether to become an
end device.
Consider a scenario where a Thread network contains two
groups of nodes that have radio connectivity within the group, but not
with members of the other group.
What conclusion can one draw from this?
There is more than one partition in that network.
Correct. A partition is formed around each group
of nodes that is able to communicate with one another. When there are
multiple groups of nodes that can communicate amongst themselves, but
not with members of other groups, one can infer that these groups
each constitute a distinct partition.
The network lost its Leader.
Incorrect.
All the Routers in the network have gone offline.
Incorrect. In that case, none of the nodes would be able to
communicate with one another.
What device is used to connect Thread and non-Thread networks?
A Gateway.
While in traditional networking, the term 'Gateway' does refer
to a device that connects two networks, there is a more specific term in
the context of a Thread network.
A Border Router.
Correct. A Border Router is used to connect Thread and non-Thread
networks.
A Firewall.
That is not right.
A Bridge.
Incorrect. This term refers to a similar concept in traditional
networking, namely, a device that connects two LANs that use the
*same* network protocol.
How many Leaders may a Thread network partition have?
Either none or exactly one.
This is wrong. A Thread network partition cannot have fewer than one Leader.
One and only one.
Correct. A Thread network partition may have one and only one Leader.
More than one.
Wrong. A Thread network partition cannot have multiple Leaders.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. The OPENTHREAD and related marks are trademarks of the Thread Group and are used under license.
Last updated 2023-09-07 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Missing the information I need"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Too complicated / too many steps"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Out of date"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Samples / code issue"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Other"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Easy to understand"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Solved my problem"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Other"
}]
{"lastModified": "Last updated 2023-09-07 UTC."}
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-09-07 UTC."],[],[]]