diff -r 55de4a223d89 src/aodv/model/aodv-routing-protocol.cc --- a/src/aodv/model/aodv-routing-protocol.cc Sun Dec 18 07:10:25 2016 -0800 +++ b/src/aodv/model/aodv-routing-protocol.cc Sun Dec 18 08:44:54 2016 -0800 @@ -1045,15 +1045,19 @@ m_addressReqTimer[dst].SetArguments (dst); RoutingTableEntry rt; m_routingTable.LookupRoute (dst, rt); - Time retry; + Time retry = m_netTraversalTime; if (rt.GetHop () < m_netDiameter) { retry = 2 * m_nodeTraversalTime * (rt.GetHop () + m_timeoutBuffer); } else { - // Binary exponential backoff - retry = std::pow (2, rt.GetRreqCnt () - 1) * m_netTraversalTime; + if (rt.GetRreqCnt () > 1) + { + uint16_t backoffFactor = rt.GetRreqCnt () - 1; + NS_LOG_LOGIC ("Applying binary exponential backoff factor " << backoffFactor); + retry = m_netTraversalTime * (1 << backoffFactor); + } } m_addressReqTimer[dst].Schedule (retry); NS_LOG_LOGIC ("Scheduled RREQ retry in " << retry.GetSeconds () << " seconds");