## 3 Proposed Approach
### Routing Protocol Description
The final step is to call the HDA_Routing procedure (Algorithm 4) to re-compute routes that were affected by the received _record_SA_view_ message or changes in the node's local SA data. The aim of the HDARP routing protocol described in Algorithm 4 is to exploit the information from the node's SA view to determine the shortest paths from the node to all other friendly nodes, while avoiding forbidden sectors. The actual shortest-path computation is performed using an adaptation of [PERSON]'s shortest-path algorithm [PERSON] (1996) that produces a shortest-path tree. This approach is well known in computer networking, and therefore, rather than explaining it here, we point the interested reader to [PERSON] (1996); [PERSON] (1996). [PERSON]'s algorithm requires as input the source node for all the paths to be produced (denoted by \(n\) in the algorithm) and a weighted graph \(\mathcal{G}\) consisting of all vertices and directed edges in the graph, which in our case correspond to nodes and links. When directed edges are used in a graph, the edge \((u,v)\) is distinct from \((v,u)\). The first step in Algorithm 4 is to collect all friendly nodes from the SA view into the set \(\mathcal{F}\). Secondly, we create an empty set \(\mathcal{L}\) that will eventually be populated with links connecting a pair of nodes. We cannot add the links yet because we need to determine _a_) which pairs of nodes are connected by a link and _b_) the weight (cost) assigned to that link. Two nodes, \(u\) and \(v\), will be connected by a link \((u,v)\) if node \(v\) is in Tx range from \(u\). In addition, if node \(u\) is in Tx range from \(v\), there will be an additional link \((v,u)\). The weight of a link is determined by whether or not the link connecting the two nodes overlaps with a forbidden sector. To enable this determination, we collect all adversary nodes from the SA view into the set \(\mathcal{A}\). The algorithm iterates through each node _src_ in \(\mathcal{F}\) and creates an outgoing link to each of the remaining \(dst\) nodes that can be be connected to it according to (_a_) and (_b_). If a link was created, the algorithm will iterate through each adversary node \(a\) in \(\mathcal{A}\) to test if it causes a forbidden sector for the new link. The forbidden sector detection is performed as described in Section 3.4. Links outside a forbidden sector are assigned unit cost, whereas links inside a forbidden sector are penalized with a high cost. The link can be excluded from the topology instead of increasing its cost if the mission requires radio silence. The costs along a path are additive. [PERSON]'s algorithm will attempt to minimize the total cost of a path towards a specific destination. In a network with \(n\) nodes, the longest possible acyclic path consists of \(n-1\) links. If all links are outside forbidden sectors, the cost for such a path is \(n-1\) considering the unit link cost as mentioned above. Thus, the lowest penalty cost that can be chosen for links inside forbidden sectors is \(n\), the number of nodes in the network. A path consisting of one or more such links will have a cost that exceeds the cost of any acyclic path where all links are outside forbidden sectors. In our simulations, the nodes forward IPv4 packets. The time-to-live (TTL) field in the IPv4 header is 8-bit wide, limiting the longest path to 255 links. Therefore, the lowest penalty cost for IPv4 links is 256. In our case, we have set the cost of links located in forbidden sectors to 5000. This value does not confer any advantage or disadvantage compared with 256, but is rarely occurring in the simulations and is thus easy to find in the log files. In the final part of Algorithm 4, the shortest-path tree produced by [PERSON]'s algorithm will be used to update the IPv4 routing tables of node \(n\).