# A Survey on Parameters Affecting MANET Performance
## 2 Routing in MANETs
### AODV Routing Protocol  
AODV is a reactive routing protocol used for MANETs where mobile hosts provide a packet forwarding service acting as an intermediate node between source and destination. In AODV, each node acts as a router and their local routing tables are updated on demand when a request to forward a packet is received or the node is the packet originator [9]. To maintain connectivity between a node and its neighbors, a discovery mechanism is used. AODV discovery mechanism is used to increase the response time for new requests. The route discovery mechanism is initiated by transmitting a RREQ packet to neighbors, asking them to search for the shortest path to the destination. This mechanism increases node awareness with the smallest number of hops needed to reach the destination node. When an intermediate node receives a RREQ, it rebroadcasts the RREQ to all neighbor nodes only in case it does not have a direct connectivity link with the destination node [10]. When an intermediate node has a fresh route to the destination node and the RREQ conditions are fulfilled, the intermediate node sends a RREP in the backward direction to the source. During the forward and reverse path of RREQ and RREP packet forwarding, all intermediate nodes update their local routing table with the latest information contained in the forwarded packet [11]. Each routing table entry contains the following information fields [12]:  
1. Destination node address;
2. Number of hop counts to reach the destination;
3. Intermediate nodes address;
4. Route entry expiry time;
5. Destination node sequence number. When the source node receives the RREP packet, it can begin sending the data needed. If the source node is out of a MANET's range during the active route request, it can initiate another route discovery request with a different request identification. To ensure that connectivity is present between neighbors, each node periodically sends a hello message. A hello message is a type of RREP packet that is used to announce the node's existence inside the network. If a node has not participated in any packet forwarding or has not sent a hello message for a specific period, the link toward this node will be considered broken. The broken node neighbors send RERR packets to their active neighbors in the network to invalidate any existing route that uses this broken node 'as an intermediate node' in data forwarding [13]. The AODV routing protocol flow chart is illustrated in Figure 3.  
Figure 2: MANETs’ routing protocols classification. A mobile node holds AODV configuration parameters with default values to control routing protocol operations. The main configuration parameters that affect the AODV protocol are as follows [14]:  
* Network diameter: The network diameter value sets the maximum number of hop counts between two nodes in MANETs. The network diameter default value is up to thirty-five hops at most as per RFC 3561 standard. * Node transversal time: The node transversal time is the estimation of packet transversal time between two neighbor nodes; this estimation should consider the network, processing, and transfer delay time. The default configuration time is 40 ms.
* Network transversal time: The network transversal time is the expected time between sending the RREQ packet and the reception of the RREP packet as per the equation [14]:  
\[\text{NetworkTransversalTime}=2\times\text{NetworkDiameter}\times\text{NodeTransversalTime} \tag{1}\]
* Route request retry: If a route reply is not received by the source node within the maximum network transversal time, the source node can retry to request the route discovery again for a maximum route request retry times. If the route discovery exceeds the route request retry times, the destination node should be considered unreachable. The default value for the route request retry parameter is equal to 2 retries. * Blacklist timeout: When the RREP transmission from node A to node B fails, node A records node B in its blacklist buffer.