A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::aodv::RoutingProtocol Class Reference

AODV routing protocol. More...

#include <aodv-routing-protocol.h>

+ Inheritance diagram for ns3::aodv::RoutingProtocol:
+ Collaboration diagram for ns3::aodv::RoutingProtocol:

Public Member Functions

 RoutingProtocol ()
 c-tor
virtual ~RoutingProtocol ()
int64_t AssignStreams (int64_t stream)
virtual void DoDispose ()
From Ipv4RoutingProtocol
Ptr< Ipv4RouteRouteOutput (Ptr< Packet > p, const Ipv4Header &header, Ptr< NetDevice > oif, Socket::SocketErrno &sockerr)
 Query routing cache for an existing route, for an outbound packet.
bool RouteInput (Ptr< const Packet > p, const Ipv4Header &header, Ptr< const NetDevice > idev, UnicastForwardCallback ucb, MulticastForwardCallback mcb, LocalDeliverCallback lcb, ErrorCallback ecb)
 Route an input packet (to be forwarded or locally delivered)
virtual void NotifyInterfaceUp (uint32_t interface)
virtual void NotifyInterfaceDown (uint32_t interface)
virtual void NotifyAddAddress (uint32_t interface, Ipv4InterfaceAddress address)
virtual void NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddress address)
virtual void SetIpv4 (Ptr< Ipv4 > ipv4)
virtual void PrintRoutingTable (Ptr< OutputStreamWrapper > stream) const
 Print the Routing Table entries.
Handle protocol parameters
Time GetMaxQueueTime () const
void SetMaxQueueTime (Time t)
uint32_t GetMaxQueueLen () const
void SetMaxQueueLen (uint32_t len)
bool GetDesinationOnlyFlag () const
void SetDesinationOnlyFlag (bool f)
bool GetGratuitousReplyFlag () const
void SetGratuitousReplyFlag (bool f)
void SetHelloEnable (bool f)
bool GetHelloEnable () const
void SetBroadcastEnable (bool f)
bool GetBroadcastEnable () const

Static Public Member Functions

static TypeId GetTypeId (void)
 This method returns the TypeId associated to ns3::aodv::RoutingProtocol.

Static Public Attributes

static const uint32_t AODV_PORT = 654
 UDP Port for AODV control traffic.

Private Member Functions

void AckTimerExpire (Ipv4Address neighbor, Time blacklistTimeout)
 Mark link to neighbor node as unidirectional for blacklistTimeout.
void DeferredRouteOutput (Ptr< const Packet > p, const Ipv4Header &header, UnicastForwardCallback ucb, ErrorCallback ecb)
 Queue packet and send route request.
Ptr< SocketFindSocketWithInterfaceAddress (Ipv4InterfaceAddress iface) const
 Find socket with local interface address iface.
bool Forwarding (Ptr< const Packet > p, const Ipv4Header &header, UnicastForwardCallback ucb, ErrorCallback ecb)
 If route exists and valid, forward packet.
void HelloTimerExpire ()
 Schedule next send of hello message.
bool IsMyOwnAddress (Ipv4Address src)
 Check that packet is send from own interface.
Ptr< Ipv4RouteLoopbackRoute (const Ipv4Header &header, Ptr< NetDevice > oif) const
 Create loopback route for given header.
void ProcessHello (RrepHeader const &rrepHeader, Ipv4Address receiverIfaceAddr)
 Process hello message.
void RerrRateLimitTimerExpire ()
 Reset RERR count and schedule RERR rate limit timer with delay 1 sec.
void RouteRequestTimerExpire (Ipv4Address dst)
 Handle route discovery process.
void RreqRateLimitTimerExpire ()
 Reset RREQ count and schedule RREQ rate limit timer with delay 1 sec.
void ScheduleRreqRetry (Ipv4Address dst)
void Start ()
 Start protocol operation.
bool UpdateRouteLifeTime (Ipv4Address addr, Time lt)
void UpdateRouteToNeighbor (Ipv4Address sender, Ipv4Address receiver)
Receive control packets
void RecvAodv (Ptr< Socket > socket)
 Receive and process control packet.
void RecvRequest (Ptr< Packet > p, Ipv4Address receiver, Ipv4Address src)
 Receive RREQ.
void RecvReply (Ptr< Packet > p, Ipv4Address my, Ipv4Address src)
 Receive RREP.
void RecvReplyAck (Ipv4Address neighbor)
 Receive RREP_ACK.
void RecvError (Ptr< Packet > p, Ipv4Address src)
 Receive RERR from node with address src.
Send
void SendPacketFromQueue (Ipv4Address dst, Ptr< Ipv4Route > route)
 Forward packet from route request queue.
void SendHello ()
 Send hello.
void SendRequest (Ipv4Address dst)
 Send RREQ.
void SendReply (RreqHeader const &rreqHeader, RoutingTableEntry const &toOrigin)
 Send RREP.
void SendReplyByIntermediateNode (RoutingTableEntry &toDst, RoutingTableEntry &toOrigin, bool gratRep)
void SendReplyAck (Ipv4Address neighbor)
 Send RREP_ACK.
void SendRerrWhenBreaksLinkToNextHop (Ipv4Address nextHop)
 Initiate RERR.
void SendRerrMessage (Ptr< Packet > packet, std::vector< Ipv4Address > precursors)
 Forward RERR.
void SendRerrWhenNoRouteToForward (Ipv4Address dst, uint32_t dstSeqNo, Ipv4Address origin)

Private Attributes

std::map< Ipv4Address, Timerm_addressReqTimer
 Map IP address + RREQ timer.
DuplicatePacketDetection m_dpd
 Handle duplicated broadcast/multicast packets.
Timer m_htimer
 Hello timer.
Ptr< Ipv4m_ipv4
 IP protocol.
Ptr< NetDevicem_lo
 Loopback device used to defer RREQ until packet will be fully formed.
Neighbors m_nb
 Handle neighbors.
RequestQueue m_queue
 A "drop-front" queue used by the routing layer to buffer packets to which it does not have a route.
uint32_t m_requestId
 Broadcast ID.
uint16_t m_rerrCount
 Number of RERRs used for RERR rate control.
Timer m_rerrRateLimitTimer
 RERR rate limit timer.
RoutingTable m_routingTable
 Routing table.
uint16_t m_rreqCount
 Number of RREQs used for RREQ rate control.
IdCache m_rreqIdCache
 Handle duplicated RREQ.
Timer m_rreqRateLimitTimer
 RREQ rate limit timer.
uint32_t m_seqNo
 Request sequence number.
std::map< Ptr< Socket >
, Ipv4InterfaceAddress
m_socketAddresses
 Raw socket per each IP interface, map socket -> iface address (IP + mask)
Ptr< UniformRandomVariablem_uniformRandomVariable
 Provides uniform random variables.
Protocol parameters.
uint32_t RreqRetries
 Maximum number of retransmissions of RREQ with TTL = NetDiameter to discover a route.
uint16_t RreqRateLimit
 Maximum number of RREQ per second.
uint16_t RerrRateLimit
 Maximum number of REER per second.
Time ActiveRouteTimeout
 Period of time during which the route is considered to be valid.
uint32_t NetDiameter
 Net diameter measures the maximum possible number of hops between two nodes in the network.
Time NodeTraversalTime
Time NetTraversalTime
 Estimate of the average net traversal time.
Time PathDiscoveryTime
 Estimate of maximum time needed to find route in network.
Time MyRouteTimeout
 Value of lifetime field in RREP generating by this node.
Time HelloInterval
uint32_t AllowedHelloLoss
 Number of hello messages which may be loss for valid link.
Time DeletePeriod
Time NextHopWait
 Period of our waiting for the neighbour's RREP_ACK.
uint16_t TimeoutBuffer
Time BlackListTimeout
 Time for which the node is put into the blacklist.
uint32_t MaxQueueLen
 The maximum number of packets that we allow a routing protocol to buffer.
Time MaxQueueTime
 The maximum period of time that a routing protocol is allowed to buffer a packet for.
bool DestinationOnly
 Indicates only the destination may respond to this RREQ.
bool GratuitousReply
 Indicates whether a gratuitous RREP should be unicast to the node originated route discovery.
bool EnableHello
 Indicates whether a hello messages enable.
bool EnableBroadcast
 Indicates whether a a broadcast data packets forwarding enable.

Additional Inherited Members

- Public Types inherited from ns3::Ipv4RoutingProtocol
typedef Callback< void, Ptr
< const Packet >, const
Ipv4Header
&, Socket::SocketErrno
ErrorCallback
typedef Callback< void, Ptr
< const Packet >, const
Ipv4Header &, uint32_t > 
LocalDeliverCallback
typedef Callback< void, Ptr
< Ipv4MulticastRoute >, Ptr
< const Packet >, const
Ipv4Header & > 
MulticastForwardCallback
typedef Callback< void, Ptr
< Ipv4Route >, Ptr< const
Packet >, const Ipv4Header & > 
UnicastForwardCallback
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
virtual void DoStart (void)
virtual void NotifyNewAggregate (void)

Detailed Description

AODV routing protocol.

Definition at line 53 of file aodv-routing-protocol.h.

Constructor & Destructor Documentation

ns3::aodv::RoutingProtocol::RoutingProtocol ( )

c-tor

Definition at line 118 of file aodv-routing-protocol.cc.

References EnableHello, m_nb, ns3::MakeCallback(), SendRerrWhenBreaksLinkToNextHop(), and ns3::aodv::Neighbors::SetCallback().

+ Here is the call graph for this function:

ns3::aodv::RoutingProtocol::~RoutingProtocol ( )
virtual

Definition at line 280 of file aodv-routing-protocol.cc.

Member Function Documentation

void ns3::aodv::RoutingProtocol::AckTimerExpire ( Ipv4Address  neighbor,
Time  blacklistTimeout 
)
private

Mark link to neighbor node as unidirectional for blacklistTimeout.

Definition at line 1565 of file aodv-routing-protocol.cc.

References m_routingTable, ns3::aodv::RoutingTable::MarkLinkAsUnidirectional(), and NS_LOG_FUNCTION.

Referenced by SendReplyByIntermediateNode().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int64_t ns3::aodv::RoutingProtocol::AssignStreams ( int64_t  stream)

Assign a fixed random variable stream number to the random variables used by this model. Return the number of streams (possibly zero) that have been assigned.

Parameters
streamfirst stream index to use
Returns
the number of stream indices assigned by this model

Definition at line 305 of file aodv-routing-protocol.cc.

References m_uniformRandomVariable, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().

+ Here is the call graph for this function:

void ns3::aodv::RoutingProtocol::DeferredRouteOutput ( Ptr< const Packet p,
const Ipv4Header header,
UnicastForwardCallback  ucb,
ErrorCallback  ecb 
)
private

Queue packet and send route request.

Definition at line 379 of file aodv-routing-protocol.cc.

References ns3::aodv::RequestQueue::Enqueue(), ns3::Ipv4Header::GetDestination(), ns3::Ipv4Header::GetProtocol(), ns3::Packet::GetUid(), ns3::aodv::IN_SEARCH, ns3::aodv::RoutingTable::LookupRoute(), m_queue, m_routingTable, NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_LOGIC, and SendRequest().

Referenced by RouteInput().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::DoDispose ( void  )
virtual

This method is called by Object::Dispose or by the object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.

It is safe to call GetObject from within this method.

Reimplemented from ns3::Object.

Definition at line 285 of file aodv-routing-protocol.cc.

References m_ipv4, and m_socketAddresses.

Ptr< Socket > ns3::aodv::RoutingProtocol::FindSocketWithInterfaceAddress ( Ipv4InterfaceAddress  iface) const
private

Find socket with local interface address iface.

Definition at line 1799 of file aodv-routing-protocol.cc.

References m_socketAddresses, and NS_LOG_FUNCTION.

Referenced by NotifyAddAddress(), NotifyInterfaceDown(), NotifyRemoveAddress(), RecvReply(), SendReply(), SendReplyAck(), SendReplyByIntermediateNode(), SendRerrMessage(), and SendRerrWhenNoRouteToForward().

+ Here is the caller graph for this function:

bool ns3::aodv::RoutingProtocol::GetBroadcastEnable ( ) const
inline

Definition at line 91 of file aodv-routing-protocol.h.

References EnableBroadcast.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

bool ns3::aodv::RoutingProtocol::GetDesinationOnlyFlag ( ) const
inline

Definition at line 84 of file aodv-routing-protocol.h.

References DestinationOnly.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

bool ns3::aodv::RoutingProtocol::GetGratuitousReplyFlag ( ) const
inline

Definition at line 86 of file aodv-routing-protocol.h.

References GratuitousReply.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

bool ns3::aodv::RoutingProtocol::GetHelloEnable ( ) const
inline

Definition at line 89 of file aodv-routing-protocol.h.

References EnableHello.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

uint32_t ns3::aodv::RoutingProtocol::GetMaxQueueLen ( ) const
inline

Definition at line 82 of file aodv-routing-protocol.h.

References MaxQueueLen.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

Time ns3::aodv::RoutingProtocol::GetMaxQueueTime ( ) const
inline

Definition at line 80 of file aodv-routing-protocol.h.

References MaxQueueTime.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

TypeId ns3::aodv::RoutingProtocol::GetTypeId ( void  )
static

This method returns the TypeId associated to ns3::aodv::RoutingProtocol.

Attributes defined for this type:

  • HelloInterval: HELLO messages emission interval.
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +1000000000.0ns
    • Flags: construct write read
  • RreqRetries: Maximum number of retransmissions of RREQ to discover a route
  • RreqRateLimit: Maximum number of RREQ per second.
  • RerrRateLimit: Maximum number of RERR per second.
  • NodeTraversalTime: Conservative estimate of the average one hop traversal time for packets and should include queuing delays, interrupt processing times and transfer times.
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +40000000.0ns
    • Flags: construct write read
  • NextHopWait: Period of our waiting for the neighbour's RREP_ACK = 10 ms + NodeTraversalTime
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +50000000.0ns
    • Flags: construct write read
  • ActiveRouteTimeout: Period of time during which the route is considered to be valid
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +3000000000.0ns
    • Flags: construct write read
  • MyRouteTimeout: Value of lifetime field in RREP generating by this node = 2 * max(ActiveRouteTimeout, PathDiscoveryTime)
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +11199999999.0ns
    • Flags: construct write read
  • BlackListTimeout: Time for which the node is put into the blacklist = RreqRetries * NetTraversalTime
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +5599999999.0ns
    • Flags: construct write read
  • DeletePeriod: DeletePeriod is intended to provide an upper bound on the time for which an upstream node A can have a neighbor B as an active next hop for destination D, while B has invalidated the route to D. = 5 * max (HelloInterval, ActiveRouteTimeout)
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +15000000000.0ns
    • Flags: construct write read
  • TimeoutBuffer: Its purpose is to provide a buffer for the timeout so that if the RREP is delayed due to congestion, a timeout is less likely to occur while the RREP is still en route back to the source.
  • NetDiameter: Net diameter measures the maximum possible number of hops between two nodes in the network
  • NetTraversalTime: Estimate of the average net traversal time = 2 * NodeTraversalTime * NetDiameter
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +2799999999.0ns
    • Flags: construct write read
  • PathDiscoveryTime: Estimate of maximum time needed to find route in network = 2 * NetTraversalTime
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +5599999999.0ns
    • Flags: construct write read
  • MaxQueueLen: Maximum number of packets that we allow a routing protocol to buffer.
  • MaxQueueTime: Maximum time packets can be queued (in seconds)
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +30000000000.0ns
    • Flags: construct write read
  • AllowedHelloLoss: Number of hello messages which may be loss for valid link.
  • GratuitousReply: Indicates whether a gratuitous RREP should be unicast to the node originated route discovery.
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read
  • DestinationOnly: Indicates only the destination may respond to this RREQ.
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: false
    • Flags: construct write read
  • EnableHello: Indicates whether a hello messages enable.
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read
  • EnableBroadcast: Indicates whether a broadcast data packets forwarding enable.
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read
  • UniformRv: Access to the underlying UniformRandomVariable

No TraceSources defined for this type.

Reimplemented from ns3::Ipv4RoutingProtocol.

Definition at line 159 of file aodv-routing-protocol.cc.

References ActiveRouteTimeout, AllowedHelloLoss, BlackListTimeout, DeletePeriod, GetBroadcastEnable(), GetDesinationOnlyFlag(), GetGratuitousReplyFlag(), GetHelloEnable(), GetMaxQueueLen(), GetMaxQueueTime(), HelloInterval, m_uniformRandomVariable, ns3::MilliSeconds(), MyRouteTimeout, NetDiameter, NetTraversalTime, NextHopWait, NodeTraversalTime, PathDiscoveryTime, RerrRateLimit, RreqRateLimit, RreqRetries, ns3::Seconds(), SetBroadcastEnable(), SetDesinationOnlyFlag(), SetGratuitousReplyFlag(), SetHelloEnable(), SetMaxQueueLen(), SetMaxQueueTime(), ns3::TypeId::SetParent(), and TimeoutBuffer.

+ Here is the call graph for this function:

void ns3::aodv::RoutingProtocol::HelloTimerExpire ( )
private

Schedule next send of hello message.

Definition at line 1539 of file aodv-routing-protocol.cc.

References ns3::Timer::Cancel(), ns3::UniformRandomVariable::GetInteger(), HelloInterval, m_htimer, m_uniformRandomVariable, ns3::MilliSeconds(), NS_LOG_FUNCTION, ns3::Timer::Schedule(), and SendHello().

Referenced by SetIpv4().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::aodv::RoutingProtocol::IsMyOwnAddress ( Ipv4Address  src)
private

Check that packet is send from own interface.

Definition at line 768 of file aodv-routing-protocol.cc.

References ns3::Ipv4InterfaceAddress::GetLocal(), m_socketAddresses, and NS_LOG_FUNCTION.

Referenced by RecvReply(), RecvRequest(), and RouteInput().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ptr< Ipv4Route > ns3::aodv::RoutingProtocol::LoopbackRoute ( const Ipv4Header header,
Ptr< NetDevice oif 
) const
private

Create loopback route for given header.

Definition at line 784 of file aodv-routing-protocol.cc.

References ns3::Ipv4Header::GetDestination(), ns3::Ipv4::GetNetDevice(), ns3::Ipv4Route::GetSource(), m_ipv4, m_lo, m_socketAddresses, NS_ASSERT, NS_ASSERT_MSG, NS_LOG_FUNCTION, ns3::Ipv4Route::SetDestination(), ns3::Ipv4Route::SetGateway(), ns3::Ipv4Route::SetOutputDevice(), and ns3::Ipv4Route::SetSource().

Referenced by RouteOutput().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::NotifyAddAddress ( uint32_t  interface,
Ipv4InterfaceAddress  address 
)
virtual
void ns3::aodv::RoutingProtocol::NotifyInterfaceDown ( uint32_t  interface)
virtual
void ns3::aodv::RoutingProtocol::NotifyRemoveAddress ( uint32_t  interface,
Ipv4InterfaceAddress  address 
)
virtual
void ns3::aodv::RoutingProtocol::PrintRoutingTable ( Ptr< OutputStreamWrapper stream) const
virtual

Print the Routing Table entries.

Parameters
streamthe ostream the Routing table is printed to

Implements ns3::Ipv4RoutingProtocol.

Definition at line 298 of file aodv-routing-protocol.cc.

References ns3::Object::GetObject(), ns3::Time::GetSeconds(), ns3::OutputStreamWrapper::GetStream(), m_ipv4, m_routingTable, ns3::Now(), and ns3::aodv::RoutingTable::Print().

+ Here is the call graph for this function:

void ns3::aodv::RoutingProtocol::RecvReplyAck ( Ipv4Address  neighbor)
private

Receive RREP_ACK.

Definition at line 1398 of file aodv-routing-protocol.cc.

References ns3::Timer::Cancel(), ns3::aodv::RoutingTable::LookupRoute(), ns3::aodv::RoutingTableEntry::m_ackTimer, m_routingTable, NS_LOG_FUNCTION, ns3::aodv::RoutingTableEntry::SetFlag(), ns3::aodv::RoutingTable::Update(), and ns3::aodv::VALID.

Referenced by RecvAodv().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::RecvRequest ( Ptr< Packet p,
Ipv4Address  receiver,
Ipv4Address  src 
)
private

Receive RREQ.

Definition at line 1034 of file aodv-routing-protocol.cc.

References ns3::Packet::AddHeader(), ns3::aodv::RoutingTable::AddRoute(), AODV_PORT, ns3::aodv::AODVTYPE_RREQ, ns3::Timer::Cancel(), EnableHello, ns3::Ipv4::GetAddress(), ns3::Ipv4InterfaceAddress::GetBroadcast(), ns3::aodv::RreqHeader::GetDestinationOnly(), ns3::aodv::RreqHeader::GetDst(), ns3::aodv::RreqHeader::GetDstSeqno(), ns3::aodv::RoutingTableEntry::GetFlag(), ns3::aodv::RreqHeader::GetGratiousRrep(), ns3::aodv::RreqHeader::GetHopCount(), ns3::aodv::RreqHeader::GetId(), ns3::UniformRandomVariable::GetInteger(), ns3::Ipv4::GetInterfaceForAddress(), ns3::aodv::RoutingTableEntry::GetLifeTime(), ns3::Ipv4InterfaceAddress::GetMask(), ns3::Ipv4::GetNetDevice(), ns3::aodv::RoutingTableEntry::GetNextHop(), ns3::Ipv4Mask::GetOnes(), ns3::aodv::RreqHeader::GetOrigin(), ns3::aodv::RreqHeader::GetOriginSeqno(), ns3::aodv::RoutingTableEntry::GetSeqNo(), ns3::aodv::RreqHeader::GetUnknownSeqno(), ns3::aodv::RoutingTableEntry::GetValidSeqNo(), HelloInterval, ns3::aodv::IdCache::IsDuplicate(), IsMyOwnAddress(), ns3::Timer::IsRunning(), ns3::aodv::RoutingTableEntry::IsUnidirectional(), ns3::aodv::RoutingTable::LookupRoute(), m_htimer, m_ipv4, m_routingTable, m_rreqIdCache, m_socketAddresses, m_uniformRandomVariable, ns3::MilliSeconds(), NetTraversalTime, NodeTraversalTime, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::Packet::RemoveHeader(), ns3::Timer::Schedule(), SendReply(), SendReplyByIntermediateNode(), ns3::Socket::SendTo(), ns3::aodv::RreqHeader::SetDstSeqno(), ns3::aodv::RoutingTableEntry::SetHop(), ns3::aodv::RreqHeader::SetHopCount(), ns3::aodv::RoutingTableEntry::SetInterface(), ns3::aodv::RoutingTableEntry::SetLifeTime(), ns3::aodv::RoutingTableEntry::SetNextHop(), ns3::aodv::RoutingTableEntry::SetOutputDevice(), ns3::aodv::RoutingTableEntry::SetSeqNo(), ns3::aodv::RreqHeader::SetUnknownSeqno(), ns3::aodv::RoutingTableEntry::SetValidSeqNo(), ns3::aodv::RoutingTable::Update(), and ns3::aodv::VALID.

Referenced by RecvAodv().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::RerrRateLimitTimerExpire ( )
private

Reset RERR count and schedule RERR rate limit timer with delay 1 sec.

Definition at line 1557 of file aodv-routing-protocol.cc.

References m_rerrCount, m_rerrRateLimitTimer, NS_LOG_FUNCTION, ns3::Timer::Schedule(), and ns3::Seconds().

Referenced by Start().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::aodv::RoutingProtocol::RouteInput ( Ptr< const Packet p,
const Ipv4Header header,
Ptr< const NetDevice idev,
UnicastForwardCallback  ucb,
MulticastForwardCallback  mcb,
LocalDeliverCallback  lcb,
ErrorCallback  ecb 
)
virtual

Route an input packet (to be forwarded or locally delivered)

This lookup is used in the forwarding process. The packet is handed over to the Ipv4RoutingProtocol, and will get forwarded onward by one of the callbacks. The Linux equivalent is ip_route_input(). There are four valid outcomes, and a matching callbacks to handle each.

Parameters
preceived packet
headerinput parameter used to form a search key for a route
idevPointer to ingress network device
ucbCallback for the case in which the packet is to be forwarded as unicast
mcbCallback for the case in which the packet is to be forwarded as multicast
lcbCallback for the case in which the packet is to be locally delivered
ecbCallback to call if there is an error in forwarding
Returns
true if the Ipv4RoutingProtocol takes responsibility for forwarding or delivering the packet, false otherwise

Implements ns3::Ipv4RoutingProtocol.

Definition at line 401 of file aodv-routing-protocol.cc.

References ActiveRouteTimeout, ns3::Packet::Copy(), DeferredRouteOutput(), EnableBroadcast, ns3::Socket::ERROR_NOROUTETOHOST, Forwarding(), ns3::NetDevice::GetAddress(), ns3::Ipv4InterfaceAddress::GetBroadcast(), ns3::Ipv4Header::GetDestination(), ns3::Ipv4::GetInterfaceForAddress(), ns3::Ipv4::GetInterfaceForDevice(), ns3::Ipv4InterfaceAddress::GetLocal(), ns3::aodv::RoutingTableEntry::GetNextHop(), ns3::Ipv4Header::GetSource(), ns3::Ipv4Header::GetTtl(), ns3::Packet::GetUid(), ns3::Ipv4Address::IsBroadcast(), ns3::Ipv4::IsDestinationAddress(), ns3::aodv::DuplicatePacketDetection::IsDuplicate(), ns3::Ipv4Address::IsMulticast(), IsMyOwnAddress(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::aodv::RoutingTable::LookupRoute(), ns3::aodv::RoutingTable::LookupValidRoute(), m_dpd, m_ipv4, m_lo, m_nb, m_routingTable, m_socketAddresses, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_ERROR, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::Packet::PeekPacketTag(), ns3::aodv::Neighbors::Update(), and UpdateRouteLifeTime().

+ Here is the call graph for this function:

Ptr< Ipv4Route > ns3::aodv::RoutingProtocol::RouteOutput ( Ptr< Packet p,
const Ipv4Header header,
Ptr< NetDevice oif,
Socket::SocketErrno sockerr 
)
virtual

Query routing cache for an existing route, for an outbound packet.

This lookup is used by transport protocols. It does not cause any packet to be forwarded, and is synchronous. Can be used for multicast or unicast. The Linux equivalent is ip_route_output()

The header input parameter may have an uninitialized value for the source address, but the destination address should always be properly set by the caller.

Parameters
ppacket to be routed. Note that this method may modify the packet. Callers may also pass in a null pointer.
headerinput parameter (used to form key to search for the route)
oifOutput interface Netdevice. May be zero, or may be bound via socket options to a particular output interface.
sockerrOutput parameter; socket errno
Returns
a code that indicates what happened in the lookup

Implements ns3::Ipv4RoutingProtocol.

Definition at line 331 of file aodv-routing-protocol.cc.

References ActiveRouteTimeout, ns3::Packet::AddPacketTag(), ns3::Socket::ERROR_NOROUTETOHOST, ns3::Socket::ERROR_NOTERROR, ns3::Ipv4Route::GetDestination(), ns3::Ipv4Header::GetDestination(), ns3::Ipv4Route::GetGateway(), ns3::NetDevice::GetIfIndex(), ns3::Ipv4::GetInterfaceForDevice(), ns3::Ipv4Route::GetOutputDevice(), ns3::aodv::RoutingTableEntry::GetRoute(), ns3::Ipv4Route::GetSource(), ns3::aodv::RoutingTable::LookupValidRoute(), LoopbackRoute(), m_ipv4, m_routingTable, m_socketAddresses, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::Packet::PeekPacketTag(), and UpdateRouteLifeTime().

+ Here is the call graph for this function:

void ns3::aodv::RoutingProtocol::RreqRateLimitTimerExpire ( )
private

Reset RREQ count and schedule RREQ rate limit timer with delay 1 sec.

Definition at line 1549 of file aodv-routing-protocol.cc.

References m_rreqCount, m_rreqRateLimitTimer, NS_LOG_FUNCTION, ns3::Timer::Schedule(), and ns3::Seconds().

Referenced by Start().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::ScheduleRreqRetry ( Ipv4Address  dst)
private

To reduce congestion in a network, repeated attempts by a source node at route discovery for a single destination MUST utilize a binary exponential backoff.

Definition at line 920 of file aodv-routing-protocol.cc.

References ns3::Timer::CANCEL_ON_DESTROY, ns3::aodv::RoutingTableEntry::GetRreqCnt(), ns3::aodv::RoutingTableEntry::IncrementRreqCnt(), ns3::aodv::RoutingTable::LookupRoute(), m_addressReqTimer, m_routingTable, NetTraversalTime, NS_LOG_FUNCTION, NS_LOG_LOGIC, RouteRequestTimerExpire(), and ns3::aodv::RoutingTable::Update().

Referenced by SendRequest().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::SendHello ( )
private
void ns3::aodv::RoutingProtocol::SendReplyAck ( Ipv4Address  neighbor)
private

Send RREP_ACK.

Definition at line 1256 of file aodv-routing-protocol.cc.

References ns3::Packet::AddHeader(), AODV_PORT, ns3::aodv::AODVTYPE_RREP_ACK, FindSocketWithInterfaceAddress(), ns3::aodv::RoutingTableEntry::GetInterface(), ns3::aodv::RoutingTable::LookupRoute(), m_routingTable, NS_ASSERT, NS_LOG_FUNCTION, and ns3::Socket::SendTo().

Referenced by RecvReply().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::SendRequest ( Ipv4Address  dst)
private

Send RREQ.

Definition at line 832 of file aodv-routing-protocol.cc.

References ns3::Packet::AddHeader(), ns3::aodv::RoutingTable::AddRoute(), AODV_PORT, ns3::aodv::AODVTYPE_RREQ, ns3::Timer::Cancel(), DestinationOnly, EnableHello, ns3::Ipv4InterfaceAddress::GetBroadcast(), ns3::Timer::GetDelayLeft(), ns3::aodv::RoutingTableEntry::GetHop(), ns3::aodv::RreqHeader::GetId(), ns3::UniformRandomVariable::GetInteger(), ns3::Ipv4InterfaceAddress::GetLocal(), ns3::Ipv4InterfaceAddress::GetMask(), ns3::Ipv4Mask::GetOnes(), ns3::aodv::RoutingTableEntry::GetSeqNo(), ns3::aodv::RoutingTableEntry::GetValidSeqNo(), GratuitousReply, HelloInterval, ns3::aodv::IN_SEARCH, ns3::aodv::IdCache::IsDuplicate(), ns3::Timer::IsRunning(), ns3::aodv::RoutingTable::LookupRoute(), m_htimer, m_requestId, m_routingTable, m_rreqCount, m_rreqIdCache, m_rreqRateLimitTimer, m_seqNo, m_socketAddresses, m_uniformRandomVariable, ns3::MicroSeconds(), ns3::MilliSeconds(), NS_LOG_DEBUG, NS_LOG_FUNCTION, RreqRateLimit, ns3::Simulator::Schedule(), ns3::Timer::Schedule(), ScheduleRreqRetry(), ns3::Seconds(), ns3::Socket::SendTo(), ns3::aodv::RreqHeader::SetDestinationOnly(), ns3::aodv::RreqHeader::SetDst(), ns3::aodv::RreqHeader::SetDstSeqno(), ns3::aodv::RoutingTableEntry::SetFlag(), ns3::aodv::RreqHeader::SetGratiousRrep(), ns3::aodv::RreqHeader::SetHopCount(), ns3::aodv::RreqHeader::SetId(), ns3::aodv::RreqHeader::SetOrigin(), ns3::aodv::RreqHeader::SetOriginSeqno(), ns3::aodv::RreqHeader::SetUnknownSeqno(), and ns3::aodv::RoutingTable::Update().

Referenced by DeferredRouteOutput(), and RouteRequestTimerExpire().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::SendRerrWhenNoRouteToForward ( Ipv4Address  dst,
uint32_t  dstSeqNo,
Ipv4Address  origin 
)
private

Send RERR message when no route to forward input packet. Unicast if there is reverse route to originating node, broadcast otherwise.

Parameters
dst- destination node IP address
dstSeqNo- destination node sequence number
origin- originating node IP address

Definition at line 1677 of file aodv-routing-protocol.cc.

References ns3::Packet::AddHeader(), ns3::aodv::RerrHeader::AddUnDestination(), AODV_PORT, ns3::aodv::AODVTYPE_RERR, FindSocketWithInterfaceAddress(), ns3::Ipv4InterfaceAddress::GetBroadcast(), ns3::Timer::GetDelayLeft(), ns3::aodv::RoutingTableEntry::GetInterface(), ns3::Ipv4InterfaceAddress::GetLocal(), ns3::Ipv4InterfaceAddress::GetMask(), ns3::aodv::RoutingTableEntry::GetNextHop(), ns3::Ipv4Mask::GetOnes(), ns3::Time::GetSeconds(), ns3::Timer::IsRunning(), ns3::aodv::RoutingTable::LookupValidRoute(), m_rerrCount, m_rerrRateLimitTimer, m_routingTable, m_socketAddresses, ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_LOGIC, RerrRateLimit, and ns3::Socket::SendTo().

Referenced by Forwarding().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::SetBroadcastEnable ( bool  f)
inline

Definition at line 90 of file aodv-routing-protocol.h.

References EnableBroadcast.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::SetDesinationOnlyFlag ( bool  f)
inline

Definition at line 85 of file aodv-routing-protocol.h.

References DestinationOnly.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::SetGratuitousReplyFlag ( bool  f)
inline

Definition at line 87 of file aodv-routing-protocol.h.

References GratuitousReply.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::SetHelloEnable ( bool  f)
inline

Definition at line 88 of file aodv-routing-protocol.h.

References EnableHello.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::SetMaxQueueLen ( uint32_t  len)

Definition at line 268 of file aodv-routing-protocol.cc.

References m_queue, MaxQueueLen, and ns3::aodv::RequestQueue::SetMaxQueueLen().

Referenced by GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::SetMaxQueueTime ( Time  t)

Definition at line 274 of file aodv-routing-protocol.cc.

References m_queue, MaxQueueTime, and ns3::aodv::RequestQueue::SetQueueTimeout().

Referenced by GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::Start ( void  )
private

Start protocol operation.

Definition at line 313 of file aodv-routing-protocol.cc.

References EnableHello, m_nb, m_rerrRateLimitTimer, m_rreqRateLimitTimer, NS_LOG_FUNCTION, RerrRateLimitTimerExpire(), RreqRateLimitTimerExpire(), ns3::Timer::Schedule(), ns3::aodv::Neighbors::ScheduleTimer(), ns3::Seconds(), and ns3::Timer::SetFunction().

Referenced by SetIpv4().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::aodv::RoutingProtocol::UpdateRouteLifeTime ( Ipv4Address  addr,
Time  lt 
)
private

Set lifetime field in routing table entry to the maximum of existing lifetime and lt, if the entry exists

Parameters
addr- destination address
lt- proposed time for lifetime field in routing table entry for destination with address addr.
Returns
true if route to destination address addr exist

Definition at line 984 of file aodv-routing-protocol.cc.

References ns3::aodv::RoutingTableEntry::GetFlag(), ns3::aodv::RoutingTableEntry::GetLifeTime(), ns3::aodv::RoutingTable::LookupRoute(), m_routingTable, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::aodv::RoutingTableEntry::SetLifeTime(), ns3::aodv::RoutingTableEntry::SetRreqCnt(), ns3::aodv::RoutingTable::Update(), and ns3::aodv::VALID.

Referenced by Forwarding(), RouteInput(), and RouteOutput().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::aodv::RoutingProtocol::UpdateRouteToNeighbor ( Ipv4Address  sender,
Ipv4Address  receiver 
)
private

Member Data Documentation

Time ns3::aodv::RoutingProtocol::ActiveRouteTimeout
private

Period of time during which the route is considered to be valid.

Definition at line 110 of file aodv-routing-protocol.h.

Referenced by Forwarding(), GetTypeId(), RecvReply(), RouteInput(), RouteOutput(), and UpdateRouteToNeighbor().

uint32_t ns3::aodv::RoutingProtocol::AllowedHelloLoss
private

Number of hello messages which may be loss for valid link.

Definition at line 125 of file aodv-routing-protocol.h.

Referenced by GetTypeId(), ProcessHello(), and SendHello().

const uint32_t ns3::aodv::RoutingProtocol::AODV_PORT = 654
static
Time ns3::aodv::RoutingProtocol::BlackListTimeout
private

Time for which the node is put into the blacklist.

Definition at line 137 of file aodv-routing-protocol.h.

Referenced by GetTypeId(), and SendReplyByIntermediateNode().

Time ns3::aodv::RoutingProtocol::DeletePeriod
private

DeletePeriod is intended to provide an upper bound on the time for which an upstream node A can have a neighbor B as an active next hop for destination D, while B has invalidated the route to D.

Definition at line 130 of file aodv-routing-protocol.h.

Referenced by GetTypeId().

bool ns3::aodv::RoutingProtocol::DestinationOnly
private

Indicates only the destination may respond to this RREQ.

Definition at line 140 of file aodv-routing-protocol.h.

Referenced by GetDesinationOnlyFlag(), SendRequest(), and SetDesinationOnlyFlag().

bool ns3::aodv::RoutingProtocol::EnableBroadcast
private

Indicates whether a a broadcast data packets forwarding enable.

Definition at line 143 of file aodv-routing-protocol.h.

Referenced by GetBroadcastEnable(), RouteInput(), and SetBroadcastEnable().

bool ns3::aodv::RoutingProtocol::EnableHello
private

Indicates whether a hello messages enable.

Definition at line 142 of file aodv-routing-protocol.h.

Referenced by GetHelloEnable(), ProcessHello(), RecvRequest(), RoutingProtocol(), SendRequest(), SetHelloEnable(), SetIpv4(), and Start().

bool ns3::aodv::RoutingProtocol::GratuitousReply
private

Indicates whether a gratuitous RREP should be unicast to the node originated route discovery.

Definition at line 141 of file aodv-routing-protocol.h.

Referenced by GetGratuitousReplyFlag(), SendRequest(), and SetGratuitousReplyFlag().

Time ns3::aodv::RoutingProtocol::HelloInterval
private

Every HelloInterval the node checks whether it has sent a broadcast within the last HelloInterval. If it has not, it MAY broadcast a Hello message

Definition at line 124 of file aodv-routing-protocol.h.

Referenced by GetTypeId(), HelloTimerExpire(), ProcessHello(), RecvRequest(), SendHello(), and SendRequest().

std::map<Ipv4Address, Timer> ns3::aodv::RoutingProtocol::m_addressReqTimer
private

Map IP address + RREQ timer.

Definition at line 264 of file aodv-routing-protocol.h.

Referenced by RecvReply(), RouteRequestTimerExpire(), and ScheduleRreqRetry().

DuplicatePacketDetection ns3::aodv::RoutingProtocol::m_dpd
private

Handle duplicated broadcast/multicast packets.

Definition at line 164 of file aodv-routing-protocol.h.

Referenced by RouteInput().

Timer ns3::aodv::RoutingProtocol::m_htimer
private
Ptr<NetDevice> ns3::aodv::RoutingProtocol::m_lo
private

Loopback device used to defer RREQ until packet will be fully formed.

Definition at line 151 of file aodv-routing-protocol.h.

Referenced by LoopbackRoute(), RouteInput(), and SetIpv4().

Neighbors ns3::aodv::RoutingProtocol::m_nb
private
RequestQueue ns3::aodv::RoutingProtocol::m_queue
private

A "drop-front" queue used by the routing layer to buffer packets to which it does not have a route.

Definition at line 156 of file aodv-routing-protocol.h.

Referenced by DeferredRouteOutput(), RouteRequestTimerExpire(), SendPacketFromQueue(), SetMaxQueueLen(), and SetMaxQueueTime().

uint32_t ns3::aodv::RoutingProtocol::m_requestId
private

Broadcast ID.

Definition at line 158 of file aodv-routing-protocol.h.

Referenced by SendRequest().

uint16_t ns3::aodv::RoutingProtocol::m_rerrCount
private

Number of RERRs used for RERR rate control.

Definition at line 170 of file aodv-routing-protocol.h.

Referenced by RerrRateLimitTimerExpire(), SendRerrMessage(), and SendRerrWhenNoRouteToForward().

Timer ns3::aodv::RoutingProtocol::m_rerrRateLimitTimer
private

RERR rate limit timer.

Definition at line 260 of file aodv-routing-protocol.h.

Referenced by RerrRateLimitTimerExpire(), SendRerrMessage(), SendRerrWhenNoRouteToForward(), and Start().

uint16_t ns3::aodv::RoutingProtocol::m_rreqCount
private

Number of RREQs used for RREQ rate control.

Definition at line 168 of file aodv-routing-protocol.h.

Referenced by RreqRateLimitTimerExpire(), and SendRequest().

IdCache ns3::aodv::RoutingProtocol::m_rreqIdCache
private

Handle duplicated RREQ.

Definition at line 162 of file aodv-routing-protocol.h.

Referenced by RecvRequest(), and SendRequest().

Timer ns3::aodv::RoutingProtocol::m_rreqRateLimitTimer
private

RREQ rate limit timer.

Definition at line 256 of file aodv-routing-protocol.h.

Referenced by RreqRateLimitTimerExpire(), SendRequest(), and Start().

uint32_t ns3::aodv::RoutingProtocol::m_seqNo
private

Request sequence number.

Definition at line 160 of file aodv-routing-protocol.h.

Referenced by SendHello(), SendReply(), and SendRequest().

std::map< Ptr<Socket>, Ipv4InterfaceAddress > ns3::aodv::RoutingProtocol::m_socketAddresses
private
Ptr<UniformRandomVariable> ns3::aodv::RoutingProtocol::m_uniformRandomVariable
private

Provides uniform random variables.

Definition at line 271 of file aodv-routing-protocol.h.

Referenced by AssignStreams(), GetTypeId(), HelloTimerExpire(), RecvRequest(), SendRequest(), and SetIpv4().

uint32_t ns3::aodv::RoutingProtocol::MaxQueueLen
private

The maximum number of packets that we allow a routing protocol to buffer.

Definition at line 138 of file aodv-routing-protocol.h.

Referenced by GetMaxQueueLen(), and SetMaxQueueLen().

Time ns3::aodv::RoutingProtocol::MaxQueueTime
private

The maximum period of time that a routing protocol is allowed to buffer a packet for.

Definition at line 139 of file aodv-routing-protocol.h.

Referenced by GetMaxQueueTime(), and SetMaxQueueTime().

Time ns3::aodv::RoutingProtocol::MyRouteTimeout
private

Value of lifetime field in RREP generating by this node.

Definition at line 119 of file aodv-routing-protocol.h.

Referenced by GetTypeId(), and SendReply().

uint32_t ns3::aodv::RoutingProtocol::NetDiameter
private

Net diameter measures the maximum possible number of hops between two nodes in the network.

Definition at line 111 of file aodv-routing-protocol.h.

Referenced by GetTypeId(), and RouteRequestTimerExpire().

Time ns3::aodv::RoutingProtocol::NetTraversalTime
private

Estimate of the average net traversal time.

Definition at line 117 of file aodv-routing-protocol.h.

Referenced by GetTypeId(), RecvRequest(), and ScheduleRreqRetry().

Time ns3::aodv::RoutingProtocol::NextHopWait
private

Period of our waiting for the neighbour's RREP_ACK.

Definition at line 131 of file aodv-routing-protocol.h.

Referenced by GetTypeId(), and SendReplyByIntermediateNode().

Time ns3::aodv::RoutingProtocol::NodeTraversalTime
private

NodeTraversalTime is a conservative estimate of the average one hop traversal time for packets and should include queuing delays, interrupt processing times and transfer times.

Definition at line 116 of file aodv-routing-protocol.h.

Referenced by GetTypeId(), and RecvRequest().

Time ns3::aodv::RoutingProtocol::PathDiscoveryTime
private

Estimate of maximum time needed to find route in network.

Definition at line 118 of file aodv-routing-protocol.h.

Referenced by GetTypeId().

uint16_t ns3::aodv::RoutingProtocol::RerrRateLimit
private

Maximum number of REER per second.

Definition at line 109 of file aodv-routing-protocol.h.

Referenced by GetTypeId(), SendRerrMessage(), and SendRerrWhenNoRouteToForward().

uint16_t ns3::aodv::RoutingProtocol::RreqRateLimit
private

Maximum number of RREQ per second.

Definition at line 108 of file aodv-routing-protocol.h.

Referenced by GetTypeId(), and SendRequest().

uint32_t ns3::aodv::RoutingProtocol::RreqRetries
private

Maximum number of retransmissions of RREQ with TTL = NetDiameter to discover a route.

Definition at line 107 of file aodv-routing-protocol.h.

Referenced by GetTypeId(), and RouteRequestTimerExpire().

uint16_t ns3::aodv::RoutingProtocol::TimeoutBuffer
private

The TimeoutBuffer is configurable. Its purpose is to provide a buffer for the timeout so that if the RREP is delayed due to congestion, a timeout is less likely to occur while the RREP is still en route back to the source.

Definition at line 136 of file aodv-routing-protocol.h.

Referenced by GetTypeId().


The documentation for this class was generated from the following files: