# Hazy Sighted Link State Routing Protocol

The Hazy-Sighted Link State Routing Protocol (HSLS) is a wireless mesh network routing protocol being developed by the CUWiN Foundation. This is an algorithm allowing computers communicating via digital radio in a mesh network to forward messages to computers that are out of reach of direct radio contact. Its network overhead is theoretically optimal, utilizing both proactive and reactive link-state routing to limit network updates in space and time. Its inventors believe it is a more efficient protocol to route wired networks as well. HSLS was invented by researchers at BBN Technologies.

## Efficiency

HSLS was made to scale well to networks of over a thousand nodes, and on larger networks begins to exceed the efficiencies of the other routing algorithms. This is accomplished by using a carefully designed balance of update frequency, and update extent in order to propagate link state information optimally. Unlike traditional methods, HSLS does not flood the network with link-state information to attempt to cope with moving nodes that change connections with the rest of the network. Further, HSLS does not require each node to have the same view of the network.

## Why a link-state protocol?

Link-state algorithms are theoretically attractive because they find optimal routes, reducing waste of transmission capacity. The inventors of HSLS claim that routing protocols fall into three basically different schemes: proactive (such as OLSR), reactive (such as AODV), and algorithms that accept sub-optimal routings. If one graphs them, they become less efficient as they are more purely any single strategy, and the network grows larger. The best algorithms seem to be in a sweet spot in the middle.
The routing information is called a "link state update." The distance that a link-state is copied is the "time to live" and is a count of the number of times it may be copied from one node to the next.
HSLS is said to optimally balance the features of proactive, reactive, and suboptimal routing approaches. These strategies are blended by limiting link state updates in time and space. By limiting the time to live the amount of transmission capacity is reduced. By limiting the times when a proactive routing update is transmitted, several updates can be collected and transmitted at once, also saving transmission capacity.
* By definition, a link-state algorithm uses the available information to produce the best route, so routing is as optimal as possible, given the available information.
* The suboptimal routing happens naturally because distant nodes get information less frequently.
* Minimizing proactive updates is the tricky part. The scheme is adapted from two limited link-state routing algorithms. One, "Near-Sighted Link-State Routing" is limited in space, in the number of node-hops that routing information may be transmitted. The other routing algorithm, "Discretized Link-State Routing" limits the times that the routing information may be transmitted. Since the optimal update attenuation in both space and time is about two, the result is a periodic proactive update, with fractal power-of-two node hop distances for the data (e.g. hop distances of 1, 2, 1, 4, 1, 2, 1, 8...).
* The reactive routing occurs because a failed attempt to use an adjacent link causes the next timer to expire, probably drawing in the information to find an alternate route. On each successive failure, a retry escalates the reaction to wider audiences of meshed nodes.

## How it works

The designers started the tuning of these items by defining a measure of global network waste. This includes waste from transmitting route updates, and also waste from inefficient transmission paths. Their exact definition is "The total overhead is defined as the amount of bandwidth used in excess of the minimum amount of bandwidth required to forward packets over the shortest distance (in number of hops) by assuming that the nodes had instantaneous full-topology information."
They then made some reasonable assumptions and used a mathematical optimization to find the times to transmit link state updates, and also the breadth of nodes that the link state updates should cover.
Basically, both should grow to the power of two as time increases. The theoretical optimal number is very near to two, with an error of only 0.7%. This is substantially smaller than the likely errors from the assumptions, so two is a perfectly reasonable number.
A local routing update is forced whenever a connection is lost. This is the reactive part of the algorithm. A local routing update behaves just the same as the expiration of a timer.
Otherwise, each time that the delay since the last update doubles, the node transmits routing information that doubles in the number of network-hops it considers. This continues up to some upper limit. An upper limit gives the network a global size and assures a fixed maximum response time for a network without any moving nodes.
The algorithm has a few special features to cope with cases that are common in radio networks, such as unidirectional links, and looped-transmission caused by out-of-date routing tables. In particular, it reroutes all transmissions to nearby nodes whenever it loses a link to an adjacent node. It also retransmits its adjacency when this occurs. This is useful precisely because the most valuable, long-distance links are also the least reliable in a radio network.

## Advantages

The network establishes pretty good routes in real time, and substantially reduces the number and size of messages sent to keep the network connected, compared to many other protocols. Many of the simpler mesh routing protocols just flood the whole network with routing information whenever a link changes.
The actual algorithm is quite simple.
The routing information and the data transfer are decentralized, and should therefore have good reliability and performance with no local hot spots.
The system requires capable nodes with large amounts of memory to maintain routing tables. Fortunately, these are becoming less expensive all the time.
The system gives a very quick, relatively accurate guess about whether a node is in the network, because complete, though out-of-date routing information is present in every node. However, this is not the same as knowing whether a node is in the network. This guess may be adequate for most tariff network use, like telephony, but it may not be adequate for safety-related military or avionics.
HSLS has good scalability properties. The asymptotic scalability of its total overhead is $O(N^{1.5})$ compared to standard link state which scales as $O(N^{2})$, where N is the number of nodes in the network.

## Critiques

Because HSLS sends distant updates infrequently, nodes do not have recent information about whether a distant node is still present. This issue is present to some extent in all link state protocols, because the link state database may still contain an announcement from a failed node. However, protocols like OSPF will propagate a link state update from the failed nodes neighbors, and thus all nodes will learn quickly of the failed node's demise (or disconnection). With HSLS, one can't disambiguate between a node that is still present 10 hops away and a failed node until former neighbors send long-distance announcements. Thus, HSLS may fail in some circumstances requiring high assurance.
While the papers describing HSLS do not focus on security, techniques such as digital signatures on routing updates can be used with HSLS (similar to OSPF with Digital Signatures), and BBN has implemented HSLS with digital signatures on neighbor discovery messages and link state updates. Such schemes are challenging in practice because in the ad hoc environment reachability of public key infrastructure servers cannot be assured. Like almost all routing protocols, HSLS does not include mechanisms to protect data traffic. (See IPsec and TLS.)