## 3 Multimetric Map-Aware Routing Protocol (MMMR)
### Signaling  
MMMR, as most geographic routing protocols, requires nodes to periodically send signaling messages announcing their presence to the neighbors in transmission range. To obtain precise location information about each node without introducing new signaling messages, we use a new format of the existing hello messages (HM) to exchange information between neighbors. The format of hello messages used by MMMR is presented in Table 1, and they include the following fields:* **ID**: A four-byte field with the identifier of each node. * **Position**: This field is divided into 32 bits for latitude (\(l_{x}\)) and 32 bits for longitude (\(l_{y}\)), which represent the geographic position of each node. Each set of 32 bits is also divided into one bit for the direction (north or south for longitude; east or west for latitude), eight bits for the grades, six bits for the minutes and 17 bits for the seconds. * **Velocity**: A two-byte field that uses one byte for speed (m/s) in the \(x\)-axis (\(v_{x}\)) and one byte for speed in the \(y\)-axis (\(v_{y}\)). Each node calculates its own speed from two consecutive position points, (\(x_{1},y_{1}\)) and (\(x_{2},y_{2}\)), taken at times \(t_{1}\) and \(t_{2}\): \[v_{x}=\frac{x_{2}-x_{1}}{t_{2}-t_{1}},\qquad v_{y}=\frac{y_{2}-y_{1}}{t_{2}-t_ {1}}\] (1)
* **Antenna sensing** (\(S\)): One byte to express the antenna sensing in the power ratio in decibels (dBm) used by the node. A signal power below the antenna sensing is not detectable. * **Idle time** (\(t_{idle}\)): Each node calculates the units of time that it spends without sending nor receiving data since the last HM sent. This value is represented in one byte. That is, \(t_{idle}\) measures the amount of time the node is idle between two consecutive hello messages. * **Density** (\(\rho\)): One byte to represent the number of neighbors within the transmission range at the moment of sending the current hello message. When a node receives a hello message from a neighbor in transmission range, the node stores the reception time and updates its neighbor list with all the values shown in Table 1. This is done following the conditions shown in Algorithm 1. If a hello message is received from a neighbor already registered in the neighbor list, the information of this neighbor is just updated (Lines 1, 2 from Algorithm 1). To keep the list of neighbors updated and to use only nodes that actually are in transmission range, nodes remain in a neighbors list for twice the interval between consecutive hello messages. In addition, we were careful to check whether a node was located too close to the transmission range before considering it as a neighbor. When a node receives a hello message from a new neighbor (a neighbor not yet registered in the list), it has first to check if this is a stable node before adding it in the neighbor list. This means that hello messages have to be received with a power higher than the antenna sensing plus a security margin (Lines 4 to 8). We set this security margin to 1 dB, since we observed from simulation results that this was a proper value. If this condition is not fulfilled, that neighbor will not be included in the neighbor list (Line 7), since this node probably is around the border line of the transmission range. \begin{table}
\begin{tabular}{l c c c c c c c} \hline \hline
**ID** & \(l_{x}\) & \(l_{y}\) & \(v_{x}\) & \(v_{y}\) & \(S\) & \(t_{idle}\) & \(\rho\) \\ \hline
32 bits & 32 bits & 32 bits & 8 bits & 8 bits & 16 bits & 8 bits & 8 bits \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Hello messages (HMs) format in the multimetric map-aware routing protocol. The sending period of hello messages could be higher to obtain more accuracy in the composition of the list of neighbors, although a higher signaling traffic could produce an increase in packet collisions.