I see several questions asking about details of an IoT network, including this one about port forwarding for example. I think it would be useful to ask about what might be considered the typical baseline architecture for a general-purpose IoT system.

We have several questions talking about networking at the sensor side, if are suitable, etc. For this question, I'm less interested in these - they can be generalised as short-range wireless connections. I'm also not particularly interested in the detail of the local network between nodes, except where the details directly influence the overall network topology.

I'm not looking for an exhaustive description, just capturing of the current norm. What general network topology is in typical use today, and provides a good scalable model covering at least these features:

  • local, networked control
  • remote access
  • sensor nodes in multiple locations
  • data aggregation (for machine learning, etc.)
  • sharing of data (trusted neighbours, etc)
  • resilience to outages (thinking WAN typically)

I'm not looking for inventions here, or answers that go deep into the specific corner cases. I also want to exclude security, except if any aspect of the topology is essential for good security (which I'm assuming is so obvious it doesn't belong on the feature list above)

  • Any tangential issues might make good 'reference' questions in their own right... – Sean Houlihane Feb 24 '17 at 15:28

For simplicity, I'll describe this using a typical smart-home setup as a reference, but nothing here is really fixed by the application. The high level topology is equally suitable for a farm monitoring application covering several kilometres with thousands or sensors, tracking parking spaces in a city, or lighting management in an office building.

I'll treat the problem approximately in layers of device hierarchy, which might correspond to increasing complexity of an installation, or pulling in specific use case scenarios. Here is my generalised diagram covering the whole network.

enter image description here

Node level The individual node in my diagram is a WiFi connected lamp with a local physical override switch. The node often has both sensor and control functions, and a small amount of local compute/storage. Ideally, the node can act autonomously. The node can take control from local switches, directly over the LAN (if it has WiFi/Bluetooth), or from either the local hub or the cloud. A node will frequently maintain a persistent TCP connection with the hub or cloud.

One location typically contains several nodes, with different functions, using various connectivity options. A smart-home might collect indoor/outdoor temperature, activity and video data. Remote sensors may use disparate connections to the internet. Nodes typically use , often at low clock frequencies.

Hub Level In a smart home, there might be several hubs (one for each device vendor), aggregation or hierarchy. The hub can be combined in the router, or stand-alone. The hub doesn't even need to be active in the network (other than to forward packets). However, the hub might be responsible for relaying commands to a node - commands originating from either other locally connected nodes or from a remote server. The hub might implement store-forward of data, compression or filtering of data. Really, the hub is just a facilitator. Today, the hub is the first part of the network that has the ability to provide public DNS, which makes it able to publish network structure information to the full system. As described in this question a hub is often necessary to bridge between Wired/WiFi TCP-IP to a low-power radio protocol, such as or . Hubs are usually built around , and are less power-constrained than nodes.

Roaming Terminals Otherwise known as your smartphone. These are often the primary point of user interaction. A simple node can present it's entire user-interface through a smartphone, once the node can establish either a direct or a mediated link with a specific device. Achieving this fundamentally requires a mechanism for establishing trust/ownership/pairing. A terminal can establish if it's own hub is on the local network, if it needs to perform all communication via an external server, or if it is able to lookup the IP address which allows direct routing to it's 'home' hub. The latter scenario usually requires that the router is configured for port forwarding.

Cloud service It is common for the cloud service to perform the majority of the work in the stack, although this is not always necessary (and not all implementations will require any cloud function). The most useful feature that an external (publicly addressed) server can provide is orchestration. Every node and intermediate element of the network is usually able to communicate over a direct channel to this server, and the server can easily pass messages from one device to the others. The server can aggregate data and present visualisations to the user. Based on the user's configuration, it can also forward information to other users (access and heating control can be granted to guests for example, flood/fire/intrusion warnings could use other network options to generate alerts). The cloud is also well placed to take in other data sources, so modifying heating profiles based on forecast and calendar information, or feeding local sensor information into local forecasting models, generating alerts for utility providers and so on.

Your Answer

