Mesh networking

Full mesh vs partial mesh

In a full mesh, every node has a direct link to every other node. In a partial mesh, each node links to only some of the others, and traffic reaches the rest through intermediate nodes that relay it. Full meshes give the shortest paths, but the number of links grows quickly as nodes join, so large networks, and almost all wireless ones, are partial meshes.

Learning objectives

After reading this article you will be able to:

  • Distinguish a full mesh from a partial mesh by how nodes are linked
  • Explain why the link count of a full mesh stops it scaling
  • Describe how Thread, Bluetooth Mesh and OLSRv2 choose which nodes relay

What the two terms mean

Mesh topology describes a network where nodes connect to several others instead of all connecting to one hub. Within that shape there are two ends of a scale.

In a full mesh, every node has a direct link to every other node. Any message reaches its destination in one hop, and if one link fails, every other link is untouched.

In a partial mesh, each node links to only some of the others. A message for a node that is not a direct neighbour travels through one or more intermediate nodes that relay it. Most networks people call a mesh network are partial meshes.

Why a full mesh stops scaling

The cost of a full mesh is the number of links. Every new node needs a link to every node already there, so the link count grows much faster than the node count.

Internet routing has a well-known example. RFC 4456 says that BGP routers inside one autonomous system typically must be fully meshed. With n routers, that means maintaining n*(n-1)/2 sessions, and the RFC states that this full mesh requirement does not scale when there are many routers exchanging a lot of routing information. Its answer is route reflection: some routers pass routing information on for others, which removes the need for every router to hold a session with every other.

The same pressure applies anywhere links cost something to set up and keep alive, whether that is a routing session, a radio connection, or a slot in a device’s limited list of peers.

Why wireless meshes are partial

In a wireless network, links are not chosen freely. Two devices are linked only if they can hear each other. RFC 2501, the IETF’s document on mobile ad hoc networks, describes the result as a random, multihop graph that depends on the nodes’ positions, transmission power, coverage patterns and interference, and that changes as nodes move or adjust their radios.

So a radio mesh becomes partial on its own as soon as devices spread beyond each other’s range. RFC 2501 also lists network connectivity, the average number of neighbours per node, among the essential parameters to vary when evaluating a routing protocol.

Being partial is what makes a radio mesh useful. Relaying lets a message reach a device far outside the sender’s range, which a full mesh of radios could never do.

Structured partial meshes

Many standards do not leave the partial mesh to chance. They pick a subset of nodes to carry traffic for everyone else.

  • Thread. In the OpenThread primer, nodes are either Mesh Extenders, which forward packets for other devices and keep their radio on, or End Devices, which talk mainly to a single Mesh Extender and do not forward. The Mesh Extenders must form a connected dominating set: there is a path between any two of them that stays inside the set, and every End Device is directly connected to one.
  • Bluetooth Mesh. The Bluetooth SIG’s FAQ says its managed flood uses only mains-powered nodes as relays, while low-power nodes such as battery sensors do not relay.
  • OLSRv2. In RFC 7181, each router selects multipoint relays (MPRs) among its neighbours that together cover its two-hop neighbourhood. Control traffic is then forwarded only by those relays, which reduces the number of transmissions needed to spread information across the network.

Each design keeps the redundancy of a mesh while stopping every node from carrying every message. When one relay disappears, the network can choose another, which is what makes a mesh self-healing.

Full and partial side by side

Full meshPartial mesh
LinksEvery pair of nodesEach node to some neighbours
Hops between two nodesOneOne or more, through relays
Cost of adding a nodeA new link to every existing nodeA few new links
RedundancyHighestDepends on how many paths each node keeps
Where it appearsSmall groups of routers or serversRadio meshes, large networks

Choosing between them

A full mesh suits a small, fixed set of nodes where links are cheap and the shortest path matters, such as a handful of servers or routers in one site. Beyond that, the link count makes it impractical.

A partial mesh suits almost everything else, and in wireless networks it is the only option once devices spread out. The design questions then become how many neighbours each node keeps, which nodes relay, and how the network finds a new path when one disappears. Those choices decide how big a mesh can get before relaying overhead starts to dominate.

Frequently asked questions

Is a full mesh more reliable than a partial mesh?

It has the most redundancy, because every pair of nodes has its own direct link. A well-connected partial mesh can still survive failures, as long as each node keeps more than one path to the rest of the network.

Can a wireless network be a full mesh?

Only when it is small and every device is within radio range of every other. Once devices spread out, some pairs cannot hear each other, and the network becomes a partial mesh that relies on relays.

Sources

Build it with Offline Protocol

The transport and routing page explains how the Offline Protocol mesh SDK forwards messages over multiple hops between participating devices, and what a multi-hop route needs to work.

Read the transport and routing docs