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

AODV routing protocol. More...

#include <aodv-routing-protocol.h>

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

Public Member Functions

 RoutingProtocol ()
 c-tor
 
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. 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...
 
void SetRepository (Ptr< Repository > repo)
 Set cognitive radio repository. More...
 
void SendHello ()
 Send hello.
 
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
void AggregateObject (Ptr< Object > other)
 
void Dispose (void)
 
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)
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount (const SimpleRefCount &o)
 
uint32_t GetReferenceCount (void) const
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 
void Ref (void) const
 
void Unref (void) const
 
- Public Member Functions inherited from ns3::ObjectBase
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)
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
static void Cleanup (void)
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 

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, uint16_t channel)
 Forward packet from route request queue.
 
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.
 
Ptr< Repositorym_crRepository
 Pointer to cognitive radio repository.
 
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 DoInitialize (void)
 
virtual void NotifyNewAggregate (void)
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 
virtual void NotifyConstructionCompleted (void)
 

Detailed Description

AODV routing protocol.

Doxygen introspection did not find any typical Config paths.

Attributes

  • 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 are defined for this type.

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

Member Function Documentation

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().

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 ns3::Object::DoDispose(), m_ipv4, and m_socketAddresses.

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 700 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::Simulator::GetMaximumSimulationTime(), m_ipv4, m_routingTable, m_socketAddresses, ns3::MakeCallback(), NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_LOGIC, RecvAodv(), ns3::Socket::SetAllowBroadcast(), and ns3::Socket::SetRecvCallback().

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 664 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.

void ns3::aodv::RoutingProtocol::NotifyInterfaceUp ( uint32_t  interface)
virtual
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 742 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::Simulator::GetMaximumSimulationTime(), 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().

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::Time::GetSeconds(), ns3::OutputStreamWrapper::GetStream(), m_ipv4, m_routingTable, ns3::Simulator::Now(), and ns3::aodv::RoutingTable::Print().

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

References ActiveRouteTimeout, ns3::Packet::Copy(), DeferredRouteOutput(), EnableBroadcast, Forwarding(), ns3::Ipv4Header::GetDestination(), ns3::Ipv4Header::GetSource(), ns3::Ipv4Header::GetTtl(), ns3::Packet::GetUid(), ns3::Ipv4Address::IsBroadcast(), ns3::aodv::DuplicatePacketDetection::IsDuplicate(), ns3::Ipv4Address::IsMulticast(), IsMyOwnAddress(), 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().

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::Ipv4Route::GetDestination(), ns3::Ipv4Header::GetDestination(), ns3::Ipv4Route::GetGateway(), ns3::Ipv4Route::GetOutputDevice(), 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().

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

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

Referenced by SendRequest().

void ns3::aodv::RoutingProtocol::SendReplyByIntermediateNode ( RoutingTableEntry toDst,
RoutingTableEntry toOrigin,
bool  gratRep 
)
private
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 1739 of file aodv-routing-protocol.cc.

References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::aodv::RerrHeader::AddUnDestination(), AODV_PORT, FindSocketWithInterfaceAddress(), ns3::Timer::GetDelayLeft(), 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().

void ns3::aodv::RoutingProtocol::SetRepository ( Ptr< Repository repo)
virtual

Set cognitive radio repository.

Parameters
repoThe cognitive radio repository

Reimplemented from ns3::Ipv4RoutingProtocol.

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

References m_crRepository.

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

References ns3::aodv::RoutingTable::LookupRoute(), m_routingTable, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::aodv::RoutingTable::Update(), and ns3::aodv::VALID.

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

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

References ActiveRouteTimeout, ns3::aodv::RoutingTable::AddRoute(), ns3::aodv::RoutingTable::LookupRoute(), m_ipv4, m_routingTable, NS_LOG_FUNCTION, and ns3::aodv::RoutingTable::Update().

Referenced by RecvAodv().

Member Data Documentation

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 134 of file aodv-routing-protocol.h.

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 128 of file aodv-routing-protocol.h.

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

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 120 of file aodv-routing-protocol.h.

Referenced by RecvRequest().

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 140 of file aodv-routing-protocol.h.


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