Source Routing - dresden-elektronik/deconz-rest-plugin GitHub Wiki

An application level Source Routing solver was added in deCONZ version v2.8.0-beta.

Status: Beta
Supported devices: Routers only

How it works

Other than device level Source Routing — which means devices figure out source routes — application level Source Routing works independently from what devices might think makes a good route.

  • deCONZ periodically queries neighbor tables from routers (that's what the green lines represent);
  • Each router has a neighbor table, and each entry in it tells how it sees other 1-hop routers with their Link Quality Indicator (LQI) value;
  • Based on that information deCONZ creates Source Routes towards each router;
  • If a route doesn't work, e.g. after ca. 5 transmit errors, it will be removed and an alternative route will be established.

What is this good for

Old school mesh-routing and device level routes can fail at various places in the network. deCONZ depends on devices doing the right thing, which isn't always the case.

With application level Source Routing we can take control of the routing and can figure out routes which actually work.

Note: Currently this only works for routers, not end-devices.

Screenshot of source routing enabled network

The screenshot shows how it looks in one of the company networks which covers an area of ca. 1500 m². Blue means the source of a Source Route and red is the destination.

Usage

To enable application level Source Routing you need a recent firmware to be installed.

  • In deCONZ GUI select Menu → Panels → Source Routing;
  • Check the "Enable Source Routing" option.

Screenshot of source souting settings

Notes

  • The solver works very slowly in the background;
  • Usual device level routing works in parallel until a Source Route is established;
  • In the process of solving Source Routes, there can be points in time where a route doesn't work until a working one is found;
  • It may take 30–60 minutes until most of the routes are discovered;
  • Depending on how strong the mesh is you may need to lower the minimum LQI value, e.g. to 90;
  • Currently restoring Source Routes after a deCONZ doesn't work always, so the solver might start again from scratch after restart.

Fixed source routes (source)

In many cases only a part of the network has routing problems, here it can be beneficial to manually specify a source route.

  • Source routes can be optionally specified on per node basis.
  • Every hop should always be powered.
  • The hop positions through the path should be reasonable. In some cases a user might have a better plan where packets should route than what the automatic algorithm is able to figure out.

To do this, the firmware protocol has been extended to optionally provide a source route per APS request. There is no limit on how many source routes can be configured as the firmware only needs to keep a few in memory for the requests and the ACK.

deCONZ automatically figures out if each hop on the route is reachable and only in that case uses the source route. Behind the scenes source routes are configured with MAC addresses of the nodes to be resistant against NWK address changes.

How to create a fixed source route

  • In the deCONZ gui select all hops while holding CTRL (multi selection) beginning from coordinator (source) up to the destination node. Important: there needs to be at least one hop between source and destination.
  • Right click on the destination node to open the context menu.
  • Select "Add source route".

This will create the new source route, visualized by the blueish line. The red end marks the destination node. Fixed source route

How to remove a fixed source route

Select "Remove source route" in the destination node context menu.