## 3 CENTERA: Our Centralized Trust-Based Efficient Routing Protocol with Authentication
### Report Accumulation Block  
The Report Accumulation block is initiated periodically so that every node informs the BS about its neighbors and the packet communication with them, if any. In this block, two types of reports sent by a node to the BS are differentiated; the neighbor report and the activity report.  
The neighbor report has a message type of 11 and it is sent by a node every time it has no DL neighbor to send its packets through. This case occurs when the node is first deployed or whenever it is isolated from the network and has no DL in a given period. In the neighbor report, the node sends a list of its neighbors to the BS.  
As for the activity report, it has a message type of 12 and is sent periodically by an active node to inform the BS about its neighbor nodes and their corresponding p_counter values, which shows the number of packets sent through or forwarded from this neighbor towards the BS.  
Note that the time period of sending a report, the activity period, is a network parameter chosen in the Initialization Block to be of the order of several magnitudes of the period of sending a normal packet containing readings to the BS.  
To ensure proper receipt at the BS, each node sending a report in this block, through its next hop neighbor must listen to that next hop for a time t_timeout (a time chosen higher but comparable to the node's time to process and transmit a packet) in order to make sure that the latter has in fact forwarded its packet. If the next hop fails to forward the report during the timeout interval, the node broadcasts its report through all of its neighbors. Every receiving node will send the packet normally through its next hop and performs a similar action.  
Note that the overhead incurred is justified in two folds. The first is to assure that such functionally essential reports reach the BS. The second is to help the BS locate and punish the uncooperative nodes. Also note that the broadcasting will not occur frequently in all the nodes, since bad nodes not correctly performing their jobs in sending/forwarding reports will be isolated.  
The nodes' neighbor report, shown in Figure 1, has the following format--{Message Type = 11 [one byte], Sender ID [one byte], Message Number [one byte], Total Neighbors [one byte], MESSAGE [(number of neighbors) bytes], MAC [x bytes]}. The message number is needed for nodes to drop multiple copies of the same packet (in case of broadcasting).  
As for the nodes' activity report, also shown in Figure 1, has the following format--{Message Type = 12 [one byte], Sender ID [one byte], Message Number [one byte], UL Neighbors [half a byte], Normal Neighbors [half a byte], MESSAGE [(2 + (2 * number of UL neighbors) + (number of normal  
\begin{table}
\begin{tabular}{c c c c} \hline
**Node** & **P\_Counter** & **UL** & **DL** \\ \hline Node Y & 15 & No & Yes \\ Node Z & 4 & Yes & No \\ Node U & 6 & Yes & No \\ Node V & 0 & No & No \\ \hline \end{tabular}
\end{table}
Table 2: Node Neighbor Activity Table at Node X.  
neighbors)) bytes], MAC [x bytes]]. The message number is needed for nodes to drop multiple copies of the same packet (in case of broadcasting). The message starts with the DL neighbor ID followed by its corresponding p_counter; then each UL neighbor ID is followed by its corresponding p_counter; then a list of the normal [neither UL nor DL] neighbors.  
Note that x is chosen in the Initialization Block by the administrator based on the network security requirements. Also note that a node does not send normal reading packets until it receives its UL nodes and its next hop DL from the BS.  
In case of an authentication scheme set, similar to the normal messages, the neighbor/activity report communicated in this block must be signed by its initiator to be verified in every hop until it reaches the BS. Also, every node forwarding this report encrypts the signature by its own key for its neighbor to verify that it is receiving a packet from an UL neighbor. Any wrong signature causes the packet to be dropped.