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 More...
 
virtual ~RoutingProtocol ()
 
int64_t AssignStreams (int64_t stream)
 Assign a fixed random variable stream number to the random variables used by this model. More...
 
virtual void DoDispose ()
 This method is called by Object::Dispose or by the object's destructor, whichever comes first. More...
 
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. More...
 
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) More...
 
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. More...
 
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
 
- Public Member Functions inherited from ns3::Object
 Object ()
 
virtual ~Object ()
 
void AggregateObject (Ptr< Object > other)
 
void Dispose (void)
 Run the DoDispose methods of this object and all the objects aggregated to it. More...
 
AggregateIterator GetAggregateIterator (void) const
 
virtual TypeId GetInstanceTypeId (void) const
 
template<typename T >
Ptr< T > GetObject (void) const
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 
void Initialize (void)
 This method calls the virtual DoInitialize method on all the objects aggregated to this object. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
 
void SetAttribute (std::string name, const AttributeValue &value)
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 

Static Public Member Functions

static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::Ipv4RoutingProtocol
static TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
static void Cleanup (void)
 Noop. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Static Public Attributes

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

Private Member Functions

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

Private Attributes

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

Additional Inherited Members

- Public Types inherited from ns3::Ipv4RoutingProtocol
typedef Callback< void, Ptr
< const Packet >, const
Ipv4Header
&, Socket::SocketErrno
ErrorCallback
 Callback for routing errors (e.g., no route found) More...
 
typedef Callback< void, Ptr
< const Packet >, const
Ipv4Header &, uint32_t > 
LocalDeliverCallback
 Callback for packets to be locally delivered. More...
 
typedef Callback< void, Ptr
< Ipv4MulticastRoute >, Ptr
< const Packet >, const
Ipv4Header & > 
MulticastForwardCallback
 Callback for multicast packets to be forwarded. More...
 
typedef Callback< void, Ptr
< Ipv4Route >, Ptr< const
Packet >, const Ipv4Header & > 
UnicastForwardCallback
 Callback for unicast packets to be forwarded. More...
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 
virtual void DoInitialize (void)
 This method is called only once by Object::Initialize. More...
 
virtual void NotifyNewAggregate (void)
 This method is invoked whenever two sets of objects are aggregated together. More...
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 
virtual void NotifyConstructionCompleted (void)
 This method is invoked once all member attributes have been initialized. More...
 

Detailed Description

AODV routing protocol.

Doxygen introspection did not find any typical Config paths.


Attributes

  • HelloInterval: HELLO messages emission interval.
    • Set with class: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • 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: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • 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: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • Initial value: +50000000.0ns
    • Flags: construct write read
  • ActiveRouteTimeout: Period of time during which the route is considered to be valid
    • Set with class: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • 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: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • Initial value: +11199999999.0ns
    • Flags: construct write read
  • BlackListTimeout: Time for which the node is put into the blacklist = RreqRetries * NetTraversalTime
    • Set with class: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • 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: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • Initial value: +15000000000.0ns
    • Flags: construct write read
  • 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: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • Initial value: +2799999999.0ns
    • Flags: construct write read
  • PathDiscoveryTime: Estimate of maximum time needed to find route in network = 2 * NetTraversalTime
    • Set with class: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • 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: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • 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 are defined for this type.

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 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 272 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 1586 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 297 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 373 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 277 of file aodv-routing-protocol.cc.

References ns3::Object::DoDispose(), m_ipv4, and m_socketAddresses.

+ Here is the call graph for this function:

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

Find socket with local interface address iface.

Definition at line 1820 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:

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

Schedule next send of hello message.

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

References ns3::Timer::Cancel(), HelloInterval, m_htimer, m_lastBcastTime, ns3::Simulator::Now(), NS_LOG_DEBUG, 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 762 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 778 of file aodv-routing-protocol.cc.

References ns3::Ipv4Header::GetDestination(), 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
Parameters
interfacethe index of the interface we are being notified about
addressa new address being added to an interface

Protocols are expected to implement this method to be notified whenever a new address is added to an interface. Typically used to add a 'network route' on an interface. Can be invoked on an up or down interface.

Implements ns3::Ipv4RoutingProtocol.

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

References ns3::aodv::RoutingTable::AddRoute(), AODV_PORT, ns3::Socket::Bind(), ns3::Socket::BindToNetDevice(), ns3::Socket::CreateSocket(), FindSocketWithInterfaceAddress(), ns3::Ipv4Address::GetAny(), ns3::Ipv4InterfaceAddress::GetBroadcast(), ns3::Ipv4InterfaceAddress::GetLocal(), ns3::Simulator::GetMaximumSimulationTime(), ns3::UdpSocketFactory::GetTypeId(), m_ipv4, m_routingTable, m_socketAddresses, ns3::MakeCallback(), NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_LOGIC, RecvAodv(), ns3::Socket::SetAllowBroadcast(), and ns3::Socket::SetRecvCallback().

+ Here is the call graph for this function:

void ns3::aodv::RoutingProtocol::NotifyInterfaceDown ( uint32_t  interface)
virtual
Parameters
interfacethe index of the interface we are being notified about

Protocols are expected to implement this method to be notified of the state change of an interface in a node.

Implements ns3::Ipv4RoutingProtocol.

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

References ns3::Timer::Cancel(), ns3::aodv::Neighbors::Clear(), ns3::aodv::RoutingTable::Clear(), ns3::Socket::Close(), ns3::aodv::Neighbors::DelArpCache(), ns3::aodv::RoutingTable::DeleteAllRoutesFromInterface(), FindSocketWithInterfaceAddress(), ns3::aodv::Neighbors::GetTxErrorCallback(), m_htimer, m_ipv4, m_nb, m_routingTable, m_socketAddresses, NS_ASSERT, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

+ Here is the call graph for this function:

void ns3::aodv::RoutingProtocol::NotifyRemoveAddress ( uint32_t  interface,
Ipv4InterfaceAddress  address 
)
virtual
Parameters
interfacethe index of the interface we are being notified about
addressa new address being added to an interface

Protocols are expected to implement this method to be notified whenever a new address is removed from an interface. Typically used to remove the 'network route' of an interface. Can be invoked on an up or down interface.

Implements ns3::Ipv4RoutingProtocol.

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

References ns3::aodv::RoutingTable::AddRoute(), AODV_PORT, ns3::Socket::Bind(), ns3::Timer::Cancel(), ns3::aodv::Neighbors::Clear(), ns3::aodv::RoutingTable::Clear(), ns3::Socket::CreateSocket(), ns3::aodv::RoutingTable::DeleteAllRoutesFromInterface(), FindSocketWithInterfaceAddress(), ns3::Ipv4Address::GetAny(), ns3::Ipv4InterfaceAddress::GetBroadcast(), ns3::Ipv4InterfaceAddress::GetLocal(), ns3::Simulator::GetMaximumSimulationTime(), ns3::UdpSocketFactory::GetTypeId(), m_htimer, m_ipv4, m_nb, m_routingTable, m_socketAddresses, ns3::MakeCallback(), NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_LOGIC, RecvAodv(), ns3::Socket::SetAllowBroadcast(), and ns3::Socket::SetRecvCallback().

+ Here is the call graph for this function:

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 290 of file aodv-routing-protocol.cc.

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

+ Here is the call graph for this function:

void ns3::aodv::RoutingProtocol::ProcessHello ( RrepHeader const &  rrepHeader,
Ipv4Address  receiverIfaceAddr 
)
private
void ns3::aodv::RoutingProtocol::RecvReplyAck ( Ipv4Address  neighbor)
private

Receive RREP_ACK.

Definition at line 1409 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 1027 of file aodv-routing-protocol.cc.

References ActiveRouteTimeout, ns3::Packet::AddHeader(), ns3::aodv::RoutingTable::AddRoute(), AllowedHelloLoss, ns3::aodv::AODVTYPE_RREQ, 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::aodv::RoutingTableEntry::GetLifeTime(), ns3::Ipv4InterfaceAddress::GetMask(), 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::aodv::RoutingTableEntry::IsUnidirectional(), ns3::aodv::RoutingTable::LookupRoute(), m_ipv4, m_lastBcastTime, m_nb, m_routingTable, m_rreqIdCache, m_socketAddresses, m_uniformRandomVariable, NetTraversalTime, NodeTraversalTime, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::Packet::RemoveHeader(), ns3::Simulator::Schedule(), SendReply(), SendReplyByIntermediateNode(), SendTo(), ns3::aodv::RreqHeader::SetDstSeqno(), ns3::aodv::RoutingTableEntry::SetFlag(), 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::Neighbors::Update(), 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 1578 of file aodv-routing-protocol.cc.

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

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 395 of file aodv-routing-protocol.cc.

References ActiveRouteTimeout, ns3::Packet::Copy(), DeferredRouteOutput(), EnableBroadcast, ns3::Socket::ERROR_NOROUTETOHOST, Forwarding(), ns3::Ipv4InterfaceAddress::GetBroadcast(), ns3::Ipv4Header::GetDestination(), ns3::Ipv4InterfaceAddress::GetLocal(), ns3::aodv::RoutingTableEntry::GetNextHop(), ns3::Ipv4Header::GetSource(), ns3::Ipv4Header::GetTtl(), ns3::Packet::GetUid(), ns3::Ipv4Address::IsBroadcast(), 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 323 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::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 1570 of file aodv-routing-protocol.cc.

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

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 913 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::SendReplyAck ( Ipv4Address  neighbor)
private

Send RREP_ACK.

Definition at line 1267 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 826 of file aodv-routing-protocol.cc.

References ns3::Packet::AddHeader(), ns3::aodv::RoutingTable::AddRoute(), ns3::aodv::AODVTYPE_RREQ, DestinationOnly, 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, ns3::aodv::IN_SEARCH, ns3::aodv::IdCache::IsDuplicate(), ns3::aodv::RoutingTable::LookupRoute(), m_lastBcastTime, m_requestId, m_routingTable, m_rreqCount, m_rreqIdCache, m_rreqRateLimitTimer, m_seqNo, m_socketAddresses, m_uniformRandomVariable, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, RreqRateLimit, ns3::Simulator::Schedule(), ScheduleRreqRetry(), 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 1699 of file aodv-routing-protocol.cc.

References ns3::Packet::AddHeader(), ns3::aodv::RerrHeader::AddUnDestination(), AODV_PORT, ns3::aodv::AODVTYPE_RERR, ns3::Packet::Copy(), 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::SendTo ( Ptr< Socket socket,
Ptr< Packet packet,
Ipv4Address  destination 
)
private

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

References AODV_PORT, and ns3::Socket::SendTo().

Referenced by RecvRequest(), SendHello(), SendRequest(), and SendRerrMessage().

+ 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::SetIpv4 ( Ptr< Ipv4 ipv4)
virtual
void ns3::aodv::RoutingProtocol::SetMaxQueueLen ( uint32_t  len)

Definition at line 260 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 266 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 ( )
private

Start protocol operation.

Definition at line 305 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(), 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 977 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

Update neighbor record.

Parameters
receiveris supposed to be my interface
senderis supposed to be IP address of my neighbor.

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

References ActiveRouteTimeout, ns3::aodv::RoutingTable::AddRoute(), ns3::aodv::RoutingTableEntry::GetHop(), ns3::aodv::RoutingTableEntry::GetLifeTime(), ns3::aodv::RoutingTableEntry::GetOutputDevice(), ns3::aodv::RoutingTableEntry::GetValidSeqNo(), ns3::aodv::RoutingTable::LookupRoute(), m_ipv4, m_routingTable, NS_LOG_FUNCTION, ns3::aodv::RoutingTableEntry::SetLifeTime(), and ns3::aodv::RoutingTable::Update().

Referenced by RecvAodv().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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(), RecvRequest(), 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(), RecvRequest(), 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 132 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 135 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 138 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 137 of file aodv-routing-protocol.h.

Referenced by GetHelloEnable(), ProcessHello(), 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 136 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(), and SendHello().

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

Map IP address + RREQ timer.

Definition at line 261 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 159 of file aodv-routing-protocol.h.

Referenced by RouteInput().

Timer ns3::aodv::RoutingProtocol::m_htimer
private

Hello timer.

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

Referenced by HelloTimerExpire(), NotifyInterfaceDown(), NotifyRemoveAddress(), and SetIpv4().

Time ns3::aodv::RoutingProtocol::m_lastBcastTime
private

Keep track of the last bcast time.

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

Referenced by HelloTimerExpire(), RecvRequest(), and SendRequest().

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

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

Definition at line 146 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 151 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 153 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 165 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 257 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 163 of file aodv-routing-protocol.h.

Referenced by RreqRateLimitTimerExpire(), and SendRequest().

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

Handle duplicated RREQ.

Definition at line 157 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 253 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 155 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 268 of file aodv-routing-protocol.h.

Referenced by AssignStreams(), GetTypeId(), RecvRequest(), SendHello(), SendRequest(), SendRerrMessage(), 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 133 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 134 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().


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