Internet of Things Patterns
This is an excerpt of the pattern that was first published in [1].

Remote Bootstrap

Icon of the Remote Bootstrap pattern

The information a device requires to create the first connection to its communication partners is remotely sent to the device by a bootstrap server.

Context:

You have a new device which has to communicate with other components to fulfill its purpose. The device is either connected directly to the other components, or it goes through a network and multiple intermediaries. Either way, the new device has to know how to create these connections. The device is located in a remote location where it is hard to reach for maintenance.

Problem:

A new device needs some basic information to be able to create connections and to start communication. This information is not the same for all devices and it may change from time to time. How do you get this information onto the device while retaining flexibility and allowing for a robust construction, all while the device is hard to reach?

Forces:

  • Security: Security credentials for authentication, authorization, or encryption may be needed for communication but these credentials have to be brought onto the device and have to be secure themselves.
  • Simplicity: The device has to work without any further actions required by its owner. For example, the end-user does not have the ability to do any required setup or a company wants to install a large number of devices.
  • Size or Cost Constraints: The device’s design, i.e., its form factor and the number of components, has to be small and simple because it needs to fit into size or cost limitations. Adding components just for bootstrapping, such as a memory card slot or USB connector for Medium-Based Bootstrap may not make sense.
  • Robustness: You intend to use the device in harsh environments and you need it to be durable. For example, you want to seal it to be water tight, or you want to put into a rugged enclosure which is intentionally hard to access to prevent any adverse effects from the outside. But this limits access to the device for legitimate maintenance purposes.
  • Flexibility: The details needed for first communication change with time. You need to adapt the device to these changes.
  • Physical Access: You want to place the device in a location that is hard to reach, which makes it difficult or dangerous to do a Medium-Based Bootstrap.
  • Scalability: You have to set up communication for a large number of devices, which costs time and resources if done manually.

Solution:

Store the bootstrapping information on a bootstrap server. Provide the device with details on how to get to this server by Factory Bootstrap or Medium-Based Bootstrap or have the server informed about new devices. Download the bootstrap information from the bootstrap server onto the device. Use the bootstrap information to start communication.

Solution sketch of the Factory Bootstrap pattern

Solution Details:

This is an excerpt of a previously published pattern. The full pattern can be found in [1].


Benefits:
Drawbacks:

Variants:

Related Patterns:

Known Uses:

  1. L. Reinfurt, U. Breitenbücher, M. Falkenthal, F. Leymann, and A. Riegg, “Internet of Things Patterns for Device Bootstrapping and Registration,” in Proceedings of the 22nd European Conference on Pattern Languages of Programs (EuroPLoP), New York, NY, USA, 2017. Available at https://dl.acm.org/citation.cfm?doid=3147704.3147721