## 3 State-of-the-Art for WirelessHART Routing Schemes
### The Han Routing Algorithm  
In [52], a complete solution for wireless mesh networks in terms of routing and scheduling is presented, and in [55], the algorithms were implemented for WirelessHART. In this section, we will only treat the routing aspects. The scheduling aspects will be treated in later sections. The authors in [52] state that most of the algorithms presented in [56, 57, 58, 59, 60, 61] focus on identifying multiple node or edge-disjoint paths to improve routing reliability. However, WirelessHART imposes more stringent requirements on routing reliability in order to deal with the harsher and noisier industrial environment. For this reason, the existing literature cannot be directly applied to WirelessHART networks, and new routing algorithms have to be designed.  
As a validation method, in [52], a complete WirelessHART communication system was implemented, and the presented solutions were built in the network manager, but the authors abstract the routing requirements presented in the WirelessHART specification. This abstraction is made so that the authors can use their definition of \((k,m)\)-reliability, which basically defines the number of entering/leaving edges of the network nodes. Furthermore, the authors assume that the gateway and access point connections are all connected through wires and are reliable, so that the reliability requirements apply only to the wireless devices.  
The chosen metric for the greedy algorithms was the average number of hops (\(h\)), which is calculated over the average of the two best (lower \(h\)) parents plus one. First, the algorithm builds a broadcast graph by adding one unvisited node per iteration to the \"reliable nodes group\" (\(V_{B}\)) based on the number of edges from the candidate nodes to \(V_{B}\). The preference is for nodes with at least two edges to \(V_{B}\), thus adding the node and the two edges that come from parents with the lowest \(h\) to the broadcast graph (\(G_{B}\)). Then, those with only one edge to \(V_{B}\) are added.  
After building \(G_{B}\), the algorithm builds the uplink graph (\(G_{U}\)) by inverting the direction of all edges in \(G_{B}\). Thus, a tree that connects all of the nodes to the gateway is made.  
For the downlink case, the paper begins by defining an algorithm that creates a downlink graph for each device in the network, as in the WirelessHART specification. This approach is more complicated (due to the presence of cycles) and is not scalable, since the graph includes multiple intermediate nodes (generating overhead), but cannot reuse the downlink graph information. Then, the paper proposes sequential reliable downlink routing (SRDR), which extends the current downlink route to a sequence of local routes. Then, the local graphs of the intermediate nodes serve as building blocks for longer routes. To support these algorithms, two extensions to the WirelessHART protocol are necessary. First, the algorithm must use the reserved bits (Bits 4-3) of the control byte from the network layer header to indicate the presence of sequence downlink routing fields, storing the ordered graph list in the source routing option field. Second, one must specify how the routing module deals with SRDR, checking, for example, whether the current node is part of one of the intermediate graphs to the packet destination and sending adequate reports to the network manager.