A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::dsr::DsrRouting Class Reference

Dsr Routing base. More...

#include "dsr-routing.h"

+ Inheritance diagram for ns3::dsr::DsrRouting:
+ Collaboration diagram for ns3::dsr::DsrRouting:

Public Member Functions

 DsrRouting ()
 Constructor.
 
 ~DsrRouting () override
 Destructor.
 
uint16_t AddAckReqHeader (Ptr< Packet > &packet, Ipv4Address nextHop)
 This function is called to add ack request header for network acknowledgement.
 
bool AddRoute (DsrRouteCacheEntry &rt)
 Add route cache entry if it doesn't yet exist in route cache See also DsrRouteCache::AddRoute.
 
bool AddRoute_Link (DsrRouteCacheEntry::IP_VECTOR nodelist, Ipv4Address source)
 dd route link to cache See also DsrRouteCache::AddRoute_Link
 
int64_t AssignStreams (int64_t stream)
 Assign a fixed random variable stream number to the random variables used by this model.
 
void CallCancelPacketTimer (uint16_t ackId, const Ipv4Header &ipv4Header, Ipv4Address realSrc, Ipv4Address realDst)
 Call the cancel packet retransmission timer function.
 
void CancelLinkPacketTimer (DsrMaintainBuffEntry &mb)
 Cancel the link packet retransmission timer for a specific maintenance entry.
 
void CancelNetworkPacketTimer (DsrMaintainBuffEntry &mb)
 Cancel the network packet retransmission timer for a specific maintenance entry.
 
void CancelPacketAllTimer (DsrMaintainBuffEntry &mb)
 Cancel all the packet timers.
 
void CancelPacketTimerNextHop (Ipv4Address nextHop, uint8_t protocol)
 Cancel the packet retransmission timer for a all maintenance entries with nextHop address.
 
void CancelPassivePacketTimer (DsrMaintainBuffEntry &mb)
 Cancel the passive packet retransmission timer for a specific maintenance entry.
 
bool CancelPassiveTimer (Ptr< Packet > packet, Ipv4Address source, Ipv4Address destination, uint8_t segsLeft)
 Cancel the passive timer.
 
void CancelRreqTimer (Ipv4Address dst, bool isRemove)
 Cancel the route request timer.
 
void CheckSendBuffer ()
 Check the send buffer of packets with route when send buffer timer expire.
 
void DeleteAllRoutesIncludeLink (Ipv4Address errorSrc, Ipv4Address unreachNode, Ipv4Address node)
 Delete all the routes which includes the link from next hop address that has just been notified as unreachable.
 
bool FindSourceEntry (Ipv4Address src, Ipv4Address dst, uint16_t id)
 Find the source request entry in the route request queue, return false if not found.
 
void ForwardErrPacket (DsrOptionRerrUnreachHeader &rerr, DsrOptionSRHeader &sourceRoute, Ipv4Address nextHop, uint8_t protocol, Ptr< Ipv4Route > route)
 This function is responsible for forwarding error packets along the route.
 
void ForwardPacket (Ptr< const Packet > packet, DsrOptionSRHeader &sourceRoute, const Ipv4Header &ipv4Header, Ipv4Address source, Ipv4Address destination, Ipv4Address targetAddress, uint8_t protocol, Ptr< Ipv4Route > route)
 Forward the packet using the route saved in the source route option header.
 
IpL4Protocol::DownTargetCallback GetDownTarget () const override
 This method allows a caller to get the current down target callback set for this L4 protocol (IPv4 case)
 
IpL4Protocol::DownTargetCallback6 GetDownTarget6 () const override
 This method allows a caller to get the current down target callback set for this L4 protocol (IPv6 case)
 
std::vector< std::string > GetElementsFromContext (std::string context)
 Get the elements from the tracing context.
 
uint16_t GetIDfromIP (Ipv4Address address)
 Get the node id from ip address.
 
Ipv4Address GetIPfromID (uint16_t id)
 Get the ip address from id.
 
Ipv4Address GetIPfromMAC (Mac48Address address)
 Get the Ip address from mac address.
 
Ptr< NetDeviceGetNetDeviceFromContext (std::string context)
 Get the netdevice from the context.
 
Ptr< NodeGetNode () const
 Get the node.
 
Ptr< NodeGetNodeWithAddress (Ipv4Address ipv4Address)
 Get the node with give ip address.
 
Ptr< dsr::DsrOptionsGetOption (int optionNumber)
 Get the option corresponding to optionNumber.
 
Ptr< dsr::DsrPassiveBufferGetPassiveBuffer () const
 Get the passive buffer.
 
uint32_t GetPriority (DsrMessageType messageType)
 Set the priority of the packet in network queue.
 
int GetProtocolNumber () const override
 Get the dsr protocol number.
 
Ptr< dsr::DsrRreqTableGetRequestTable () const
 Get the request table.
 
Ptr< dsr::DsrRouteCacheGetRouteCache () const
 Get the route cache.
 
void IncreaseRetransTimer ()
 This function is called to increase the retransmission timer for data packet in the network queue.
 
void Insert (Ptr< dsr::DsrOptions > option)
 Insert a new Dsr Option.
 
bool IsLinkCache ()
 Checks if the link is cached in the route cache See also DsrRouteCache::IsLinkCache.
 
void LinkScheduleTimerExpire (DsrMaintainBuffEntry &mb, uint8_t protocol)
 This function deals with packet retransmission timer expire using link acknowledgment.
 
bool LookupRoute (Ipv4Address id, DsrRouteCacheEntry &rt)
 Lookup route cache entry with destination address dst See also DsrRouteCache::LookupRoute.
 
void NetworkScheduleTimerExpire (DsrMaintainBuffEntry &mb, uint8_t protocol)
 This function deals with packet retransmission timer expire using network acknowledgment.
 
void PacketNewRoute (Ptr< Packet > packet, Ipv4Address source, Ipv4Address destination, uint8_t protocol)
 When route vector corrupted, originate a new packet, normally not happening.
 
bool PassiveEntryCheck (Ptr< Packet > packet, Ipv4Address source, Ipv4Address destination, uint8_t segsLeft, uint16_t fragmentOffset, uint16_t identification, bool saveEntry)
 Find the same passive entry.
 
void PassiveScheduleTimerExpire (DsrMaintainBuffEntry &mb, uint8_t protocol)
 This function deals with packet retransmission timer expire using passive acknowledgment.
 
void PrintVector (std::vector< Ipv4Address > &vec)
 Print the route vector.
 
void PriorityScheduler (uint32_t priority, bool continueWithFirst)
 This function is called to schedule sending packets from the network queue by priority.
 
uint8_t Process (Ptr< Packet > &packet, const Ipv4Header &ipv4Header, Ipv4Address dst, uint8_t *nextHeader, uint8_t protocol, bool &isDropped)
 Process method Called from Ipv4L3Protocol::Receive.
 
IpL4Protocol::RxStatus Receive (Ptr< Packet > p, const Ipv4Header &header, Ptr< Ipv4Interface > incomingInterface) override
 
IpL4Protocol::RxStatus Receive (Ptr< Packet > p, const Ipv6Header &header, Ptr< Ipv6Interface > incomingInterface) override
 
void RouteRequestTimerExpire (Ptr< Packet > packet, std::vector< Ipv4Address > address, uint32_t requestId, uint8_t protocol)
 Handle route discovery timer.
 
void SalvagePacket (Ptr< const Packet > packet, Ipv4Address source, Ipv4Address dst, uint8_t protocol)
 Salvage the packet which has been transmitted for 3 times.
 
void ScheduleCachedReply (Ptr< Packet > packet, Ipv4Address source, Ipv4Address destination, Ptr< Ipv4Route > route, double hops)
 Schedule the cached reply to a random start time to avoid possible route reply storm.
 
void ScheduleInitialReply (Ptr< Packet > packet, Ipv4Address source, Ipv4Address nextHop, Ptr< Ipv4Route > route)
 this is a generating the initial route reply from the destination address, a random delay time [0, m_broadcastJitter] is used before unicasting back the route reply packet
 
void ScheduleInterRequest (Ptr< Packet > packet)
 Schedule the intermediate route request.
 
void ScheduleLinkPacketRetry (DsrMaintainBuffEntry &mb, uint8_t protocol)
 Schedule the packet retransmission based on link-layer acknowledgment.
 
void ScheduleNetworkPacketRetry (DsrMaintainBuffEntry &mb, bool isFirst, uint8_t protocol)
 Schedule the packet retransmission based on network layer acknowledgment.
 
void SchedulePassivePacketRetry (DsrMaintainBuffEntry &mb, uint8_t protocol)
 Schedule the packet retransmission based on passive acknowledgment.
 
void Scheduler (uint32_t priority)
 This function is called to schedule sending packets from the network queue.
 
void ScheduleRreqRetry (Ptr< Packet > packet, std::vector< Ipv4Address > address, bool nonProp, uint32_t requestId, uint8_t protocol)
 Schedule the route request retry.
 
Ipv4Address SearchNextHop (Ipv4Address ipv4Address, std::vector< Ipv4Address > &vec)
 Get the next hop of the route.
 
void Send (Ptr< Packet > packet, Ipv4Address source, Ipv4Address destination, uint8_t protocol, Ptr< Ipv4Route > route)
 This function is called by higher layer protocol when sending packets.
 
void SendAck (uint16_t ackId, Ipv4Address destination, Ipv4Address realSrc, Ipv4Address realDst, uint8_t protocol, Ptr< Ipv4Route > route)
 Send network layer acknowledgment back to the earlier hop to notify the receipt of data packet.
 
void SendBuffTimerExpire ()
 The send buffer timer expire.
 
void SendErrorRequest (DsrOptionRerrUnreachHeader &rerr, uint8_t protocol)
 Send the error request packet.
 
void SendGratuitousReply (Ipv4Address replyTo, Ipv4Address replyFrom, std::vector< Ipv4Address > &nodeList, uint8_t protocol)
 Send the gratuitous reply.
 
void SendInitialRequest (Ipv4Address source, Ipv4Address destination, uint8_t protocol)
 Broadcast the route request packet in subnet.
 
void SendPacket (Ptr< Packet > packet, Ipv4Address source, Ipv4Address nextHop, uint8_t protocol)
 This function is called by when really sending out the packet.
 
void SendPacketFromBuffer (const DsrOptionSRHeader &sourceRoute, Ipv4Address nextHop, uint8_t protocol)
 This function is responsible for sending out data packets when have route, if no route found, it will cache the packet and send out route requests.
 
bool SendRealDown (DsrNetworkQueueEntry &newEntry)
 This function is called to send packets down stack.
 
void SendReply (Ptr< Packet > packet, Ipv4Address source, Ipv4Address nextHop, Ptr< Ipv4Route > route)
 Send the route reply back to the request originator with the cumulated route.
 
void SendRequest (Ptr< Packet > packet, Ipv4Address source)
 Forward the route request if the node is not the destination.
 
void SendUnreachError (Ipv4Address unreachNode, Ipv4Address destination, Ipv4Address originalDst, uint8_t salvage, uint8_t protocol)
 This function is responsible for sending error packets in case of break link to next hop.
 
void SetDownTarget (IpL4Protocol::DownTargetCallback callback) override
 This method allows a caller to set the current down target callback set for this L4 protocol (IPv4 case)
 
void SetDownTarget6 (IpL4Protocol::DownTargetCallback6 callback) override
 This method allows a caller to set the current down target callback set for this L4 protocol (IPv6 case)
 
void SetNode (Ptr< Node > node)
 Set the node.
 
void SetPassiveBuffer (Ptr< dsr::DsrPassiveBuffer > r)
 Set the node.
 
void SetRequestTable (Ptr< dsr::DsrRreqTable > r)
 Set the node.
 
Ptr< Ipv4RouteSetRoute (Ipv4Address nextHop, Ipv4Address srcAddress)
 Set the route to use for data packets, used by the option headers when sending data/control packets.
 
void SetRouteCache (Ptr< dsr::DsrRouteCache > r)
 Set the route cache.
 
bool UpdateRouteEntry (Ipv4Address dst)
 Update route cache entry if it has been recently used and successfully delivered the data packet.
 
void UseExtends (DsrRouteCacheEntry::IP_VECTOR rt)
 Extends the lifetime of a route cache entry.
 
- Public Member Functions inherited from ns3::IpL4Protocol
 ~IpL4Protocol () override
 
virtual void ReceiveIcmp (Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, Ipv4Address payloadSource, Ipv4Address payloadDestination, const uint8_t payload[8])
 Called from lower-level layers to send the ICMP packet up in the stack.
 
virtual void ReceiveIcmp (Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, Ipv6Address payloadSource, Ipv6Address payloadDestination, const uint8_t payload[8])
 Called from lower-level layers to send the ICMPv6 packet up in the stack.
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor.
 
 ~Object () override
 Destructor.
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together.
 
void Dispose ()
 Dispose of this Object.
 
AggregateIterator GetAggregateIterator () const
 Get an iterator to the Objects aggregated to this one.
 
TypeId GetInstanceTypeId () const override
 Get the most derived TypeId for this Object.
 
template<typename T >
Ptr< T > GetObject () const
 Get a pointer to the requested aggregated Object.
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::Object.
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId.
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object.
 
void Initialize ()
 Invoke DoInitialize on all Objects aggregated to this one.
 
bool IsInitialized () const
 Check if the object has been initialized.
 
void UnidirectionalAggregateObject (Ptr< Object > other)
 Aggregate an Object to another Object.
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Default constructor.
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor.
 
uint32_t GetReferenceCount () const
 Get the reference count of the object.
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator.
 
void Ref () const
 Increment the reference count.
 
void Unref () const
 Decrement the reference count.
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor.
 
void GetAttribute (std::string name, AttributeValue &value, bool permissive=false) const
 Get the value of an attribute, raising fatal errors if unsuccessful.
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising errors.
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful.
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors.
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context.
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context.
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context.
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context.
 

Static Public Member Functions

static TypeId GetTypeId ()
 Get the type identificator.
 
- Static Public Member Functions inherited from ns3::IpL4Protocol
static TypeId GetTypeId ()
 Get the type ID.
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId ()
 Register this type.
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId ()
 Get the type ID.
 

Static Public Attributes

static const uint8_t PROT_NUMBER = 48
 Define the dsr protocol number.
 

Protected Member Functions

void DoDispose () override
 Drop trace callback.
 
void NotifyNewAggregate () override
 Notify all Objects aggregated to this one of a new Object being aggregated.
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object.
 
virtual void DoInitialize ()
 Initialize() implementation.
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes.
 
virtual void NotifyConstructionCompleted ()
 Notifier called once the ObjectBase is fully constructed.
 

Protected Attributes

TracedCallback< Ptr< const Packet > > m_dropTrace
 The trace for drop, receive and send data packets.
 
TracedCallback< const DsrOptionSRHeader & > m_txPacketTrace
 packet trace callback
 

Private Types

typedef std::list< Ptr< DsrOptions > > DsrOptionList_t
 Define the list to hold DSR options.
 

Private Member Functions

bool PromiscReceive (Ptr< NetDevice > device, Ptr< const Packet > packet, uint16_t protocol, const Address &from, const Address &to, NetDevice::PacketType packetType)
 Promiscuous receive data packets destined to some other node.
 
void SendRerrWhenBreaksLinkToNextHop (Ipv4Address nextHop, uint8_t protocol)
 Send the route error message when the link breaks to the next hop.
 
void Start ()
 

Private Attributes

uint16_t m_ackId
 The ack id assigned to each acknowledge.
 
std::vector< Ipv4Addressm_addresses
 The bind ipv4 addresses with next hop, src, destination address in sequence.
 
std::map< NetworkKey, uint32_tm_addressForwardCnt
 Map network key + forward counts.
 
std::map< NetworkKey, Timerm_addressForwardTimer
 Map network key + forward timer.
 
std::map< Ipv4Address, Timerm_addressReqTimer
 Map IP address + RREQ timer.
 
Time m_blacklistTimeout
 The black list time out.
 
Ipv4Address m_broadcast
 The broadcast IP address.
 
uint32_t m_broadcastJitter
 The max time to delay route request broadcast.
 
std::string m_cacheType
 The type of route cache.
 
std::vector< Ipv4Addressm_clearList
 The node that is clear to send packet to.
 
uint32_t m_discoveryHopLimit
 Maximum hops to go for route request.
 
IpL4Protocol::DownTargetCallback m_downTarget
 The callback for down layer.
 
DsrErrorBuffer m_errorBuffer
 The error buffer to save the error messages.
 
std::vector< Ipv4Addressm_finalRoute
 The route cache.
 
DsrGraReply m_graReply
 The gratuitous route reply.
 
uint32_t m_graReplyTableSize
 Set the gratuitous reply table size.
 
Time m_gratReplyHoldoff
 The max gratuitous reply hold off time.
 
Time m_initStability
 The initial stability value for link cache.
 
Ptr< Ipv4m_ip
 The ip ptr.
 
Ptr< Ipv4L3Protocolm_ipv4
 Ipv4l3Protocol.
 
Ptr< Ipv4Routem_ipv4Route
 Ipv4 Route.
 
bool m_linkAck
 define if we use link acknowledgement or not
 
Time m_linkAckTimeout
 The timeout value for link acknowledge.
 
std::map< LinkKey, Timerm_linkAckTimer
 The timer for link acknowledgment.
 
std::map< LinkKey, uint32_tm_linkCnt
 Map packet key + link forward counts.
 
uint32_t m_linkRetries
 
std::map< std::string, uint32_tm_macToNodeIdMap
 The map of mac address to node id.
 
Ipv4Address m_mainAddress
 Our own Ip address.
 
DsrMaintainBuffer m_maintainBuffer
 The declaration of maintain buffer.
 
uint32_t m_maxCacheLen
 Max # of cache entries for route cache.
 
Time m_maxCacheTime
 Max time for caching the route cache entry.
 
uint32_t m_maxEntriesEachDst
 Max number of route entries to save for each destination.
 
uint32_t m_maxMaintainLen
 Max # of entries for maintenance buffer.
 
Time m_maxMaintainTime
 Time out for maintenance buffer.
 
uint32_t m_maxMaintRexmt
 Maximum number of retransmissions of data packets.
 
Time m_maxNetworkDelay
 Maximum network delay.
 
uint32_t m_maxNetworkSize
 Maximum network queue size.
 
Time m_maxRequestPeriod
 The max request period.
 
uint32_t m_maxRreqId
 The max number of request ids for a single destination.
 
Time m_maxRreqTime
 Max time for caching the route request entry.
 
uint8_t m_maxSalvageCount
 Maximum # times to salvage a packet.
 
uint32_t m_maxSendBuffLen
 The maximum number of packets that we allow a routing protocol to buffer.
 
Time m_minLifeTime
 The min life time.
 
DsrNetworkQueue m_networkQueue
 The network queue.
 
Ptr< Nodem_node
 The node ptr.
 
Time m_nodeTraversalTime
 Time estimated for packet to travel between two nodes.
 
std::map< Ipv4Address, Timerm_nonPropReqTimer
 Map IP address + RREQ timer.
 
Time m_nonpropRequestTimeout
 The non-propagation request timeout.
 
uint32_t m_numPriorityQueues
 The number of priority queues used.
 
DsrOptionList_t m_options
 List of DSR Options supported.
 
Time m_passiveAckTimeout
 The timeout value for passive acknowledge.
 
std::map< PassiveKey, Timerm_passiveAckTimer
 The timer for passive acknowledgment.
 
Ptr< dsr::DsrPassiveBufferm_passiveBuffer
 A "drop-front" queue used by the routing layer to cache route request sent.
 
std::map< PassiveKey, uint32_tm_passiveCnt
 Map packet key + passive forward counts.
 
uint32_t m_passiveRetries
 
std::map< uint32_t, Ptr< dsr::DsrNetworkQueue > > m_priorityQueue
 priority queues
 
uint32_t m_requestId
 The id assigned to each route request.
 
Time m_requestPeriod
 The base time interval between route requests.
 
uint32_t m_requestTableIds
 The request table identifiers.
 
uint32_t m_requestTableSize
 The max size of the request table size.
 
Time m_retransIncr
 the increase time for retransmission timer when face network congestion
 
Ptr< dsr::DsrRouteCachem_routeCache
 A "drop-front" queue used by the routing layer to cache routes found.
 
std::string m_routeSortType
 The type of route sort methods.
 
uint32_t m_rreqRetries
 Maximum number of retransmissions of RREQ with TTL = NetDiameter to discover a route.
 
Ptr< dsr::DsrRreqTablem_rreqTable
 A "drop-front" queue used by the routing layer to cache route request sent.
 
DsrSendBuffer m_sendBuffer
 The send buffer.
 
Time m_sendBufferTimeout
 The maximum period of time that a routing protocol is allowed to buffer a packet for.
 
Time m_sendBuffInterval
 how often to check send buffer
 
Timer m_sendBuffTimer
 The send buffer timer.
 
uint32_t m_sendRetries
 
uint32_t m_stabilityDecrFactor
 The initial decrease factor for link cache.
 
uint32_t m_stabilityIncrFactor
 The initial increase factor for link cache.
 
bool m_subRoute
 Whether to save sub route or not.
 
uint32_t m_tryLinkAcks
 Maximum number of packet transmission using link acknowledgment.
 
uint32_t m_tryPassiveAcks
 Maximum number of packet transmission using passive acknowledgment.
 
Ptr< UniformRandomVariablem_uniformRandomVariable
 Provides uniform random variables.
 
Time m_useExtends
 The use extension of the life time for link cache.
 
uint8_t segsLeft
 The segment left value from SR header.
 

Additional Inherited Members

- Public Types inherited from ns3::IpL4Protocol
typedef Callback< void, Ptr< Packet >, Ipv4Address, Ipv4Address, uint8_t, Ptr< Ipv4Route > > DownTargetCallback
 callback to send packets over IPv4
 
typedef Callback< void, Ptr< Packet >, Ipv6Address, Ipv6Address, uint8_t, Ptr< Ipv6Route > > DownTargetCallback6
 callback to send packets over IPv6
 
enum  RxStatus { RX_OK , RX_CSUM_FAILED , RX_ENDPOINT_CLOSED , RX_ENDPOINT_UNREACH }
 Rx status codes. More...
 

Detailed Description

Dsr Routing base.

Config Paths

ns3::dsr::DsrRouting is accessible through the following paths with Config::Set and Config::Connect:

  • "/NodeList/[i]/$ns3::dsr::DsrRouting"

Attributes

  • BlacklistTimeout: The time for a neighbor to stay in blacklist.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +3e+09ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • BroadcastJitter: The jitter time to avoid collision for broadcast packets.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 10
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • CacheType: Use Link Cache or use Path Cache
    • Set with class: ns3::StringValue
    • Underlying type: std::string
    • Initial value: LinkCache
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • DiscoveryHopLimit: The max discovery hop limit for route requests.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 255
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • EnableSubRoute: Enables saving of sub route when receiving route error messages, only available when using path route cache
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • GraReplyTableSize: The gratuitous reply table size.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 64
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • GratReplyHoldoff: The time for gratuitous reply entry to expire.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1e+09ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • InitStability: The initial stability factor for link cache
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +2.5e+10ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • LinkAckTimeout: The time a packet in maintenance buffer wait for link acknowledgment.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1e+08ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • LinkAcknowledgment: Enable Link layer acknowledgment mechanism
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MaintenanceRetries: Maximum number of retransmissions for data packets from maintenance buffer.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 2
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MaxCacheLen: Maximum number of route entries that can be stored in route cache.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 64
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MaxEntriesEachDst: Maximum number of route entries for a single destination to respond.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 20
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MaxMaintLen: Maximum number of packets that can be stored in maintenance buffer.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 50
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MaxMaintTime: Maximum time packets can be queued in maintenance buffer.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +3e+10ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MaxNetworkQueueDelay: The max time for a packet to stay in the network queue.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +3e+10ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MaxNetworkQueueSize: The max number of packet to save in the network queue.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 400
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MaxRequestPeriod: The max time interval between route requests.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1e+10ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MaxSalvageCount: The max salvage count for a single data packet.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:255
    • Initial value: 15
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MaxSendBuffLen: Maximum number of packets that can be stored in send buffer.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 64
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MaxSendBuffTime: Maximum time packets can be queued in the send buffer .
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +3e+10ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • MinLifeTime: The minimal life time for link cache
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1e+09ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • NodeTraversalTime: The time it takes to traverse two neighboring nodes.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +4e+07ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • NonPropRequestTimeout: The timeout value for non-propagation request.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +3e+07ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • NumPriorityQueues: The max number of packet to save in the network queue.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 2
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • PassiveAckTimeout: The time a packet in maintenance buffer wait for passive acknowledgment.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1e+08ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • PassiveBuffer: The passive buffer to manage promiscuously received passive ack.
  • RequestIdSize: Maximum number of request source Ids in the request table.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 16
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • RequestPeriod: The base time interval between route requests.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +5e+08ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • RequestTableSize: Maximum number of request entries in the request table, set this as the number of nodes in the simulation.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 64
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • RetransIncr: The increase time for retransmission timer when facing network congestion
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +2e+07ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • RouteCache: The route cache for saving routes from route discovery process.
  • RouteCacheTimeout: Maximum time the route cache can be queued in route cache.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +3e+11ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • RreqRetries: Maximum number of retransmissions for request discovery of a route.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 16
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • RreqTable: The request table to manage route requests.
  • SendBuffInterval: How often to check send buffer for packet with route.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +5e+11ns
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • StabilityDecrFactor: The stability decrease factor for link cache
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 2
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • StabilityIncrFactor: The stability increase factor for link cache
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 4
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • TryLinkAcks: The number of link acknowledgment to use.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 1
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • TryPassiveAcks: The number of passive acknowledgment to use.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 1
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • UniqueRequestIdSize: Maximum number of request Ids in the request table for a single destination.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 256
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • UseExtends: The extension time for link cache
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1.2e+11ns
    • Flags: constructwriteread
    • Support level: SUPPORTED

Attributes defined in parent class ns3::IpL4Protocol

  • ProtocolNumber: The IP protocol number.
    • Set with class: ns3::IntegerValue
    • Underlying type: int32_t 0:255
    • Flags: read
    • Support level: SUPPORTED

TraceSources

Group: Dsr

Size of this type is 1520 bytes (on a 64-bit architecture).

Definition at line 86 of file dsr-routing.h.

Member Typedef Documentation

◆ DsrOptionList_t

Define the list to hold DSR options.

Definition at line 773 of file dsr-routing.h.

Constructor & Destructor Documentation

◆ DsrRouting()

ns3::dsr::DsrRouting::DsrRouting ( )

Constructor.

Definition at line 353 of file dsr-routing.cc.

References ns3::CreateObject(), Insert(), m_sendBuffTimer, m_uniformRandomVariable, NS_LOG_FUNCTION_NOARGS, ns3::Timer::Schedule(), ns3::Seconds(), SendBuffTimerExpire(), and ns3::Timer::SetFunction().

+ Here is the call graph for this function:

◆ ~DsrRouting()

ns3::dsr::DsrRouting::~DsrRouting ( )
override

Destructor.

Definition at line 389 of file dsr-routing.cc.

References NS_LOG_FUNCTION_NOARGS.

Member Function Documentation

◆ AddAckReqHeader()

uint16_t ns3::dsr::DsrRouting::AddAckReqHeader ( Ptr< Packet > & packet,
Ipv4Address nextHop )

This function is called to add ack request header for network acknowledgement.

Parameters
packetfor ack req
nextHopIP address of the next hop
Returns
ack ID

Definition at line 1674 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::dsr::DsrFsHeader::GetDestId(), ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::dsr::DsrFsHeader::GetNextHeader(), ns3::dsr::DsrFsHeader::GetSourceId(), m_ackId, m_routeCache, NS_LOG_FUNCTION, ns3::dsr::DsrOptionAckReqHeader::SetAckId(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionSRHeader::SetNumberAddress(), ns3::dsr::DsrFsHeader::SetPayloadLength(), and ns3::dsr::DsrFsHeader::SetSourceId().

Referenced by ScheduleNetworkPacketRetry().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AddRoute()

bool ns3::dsr::DsrRouting::AddRoute ( DsrRouteCacheEntry & rt)

Add route cache entry if it doesn't yet exist in route cache See also DsrRouteCache::AddRoute.

Parameters
rtroute cache entry
Returns
true on success

Definition at line 678 of file dsr-routing.cc.

References ns3::dsr::DsrErrorBuffer::DropPacketForErrLink(), ns3::dsr::DsrRouteCacheEntry::GetVector(), m_errorBuffer, m_mainAddress, m_routeCache, and SearchNextHop().

+ Here is the call graph for this function:

◆ AddRoute_Link()

bool ns3::dsr::DsrRouting::AddRoute_Link ( DsrRouteCacheEntry::IP_VECTOR nodelist,
Ipv4Address source )

dd route link to cache See also DsrRouteCache::AddRoute_Link

Parameters
nodelistvector of nodes
sourceip address of node to add
Returns
true if the link is cached

Definition at line 670 of file dsr-routing.cc.

References ns3::dsr::DsrErrorBuffer::DropPacketForErrLink(), m_errorBuffer, m_routeCache, and SearchNextHop().

+ Here is the call graph for this function:

◆ AssignStreams()

int64_t ns3::dsr::DsrRouting::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 2791 of file dsr-routing.cc.

References m_uniformRandomVariable, and NS_LOG_FUNCTION.

◆ CallCancelPacketTimer()

void ns3::dsr::DsrRouting::CallCancelPacketTimer ( uint16_t ackId,
const Ipv4Header & ipv4Header,
Ipv4Address realSrc,
Ipv4Address realDst )

Call the cancel packet retransmission timer function.

Parameters
ackIdacknowledge ID
ipv4Headerheader
realSrcsource IP address
realDstdestination IP address

Definition at line 2188 of file dsr-routing.cc.

References CancelNetworkPacketTimer(), ns3::Create(), ns3::Ipv4Header::GetDestination(), ns3::Ipv4Header::GetSource(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ CancelLinkPacketTimer()

void ns3::dsr::DsrRouting::CancelLinkPacketTimer ( DsrMaintainBuffEntry & mb)

Cancel the link packet retransmission timer for a specific maintenance entry.

Parameters
mbmaintain buffer entry

TODO need to think about this part

Definition at line 2222 of file dsr-routing.cc.

References ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetOurAdd(), ns3::dsr::DsrMaintainBuffer::GetSize(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::DsrMaintainBuffer::LinkEqual(), ns3::dsr::LinkKey::m_destination, m_linkAckTimer, m_linkCnt, m_maintainBuffer, ns3::dsr::LinkKey::m_nextHop, ns3::dsr::LinkKey::m_ourAdd, ns3::dsr::LinkKey::m_source, NS_LOG_DEBUG, NS_LOG_FUNCTION, and NS_LOG_INFO.

Referenced by CancelPacketAllTimer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CancelNetworkPacketTimer()

void ns3::dsr::DsrRouting::CancelNetworkPacketTimer ( DsrMaintainBuffEntry & mb)

Cancel the network packet retransmission timer for a specific maintenance entry.

Parameters
mbmaintain buffer entry

Definition at line 2270 of file dsr-routing.cc.

References ns3::dsr::DsrMaintainBuffEntry::GetAckId(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetOurAdd(), ns3::dsr::DsrMaintainBuffEntry::GetSegsLeft(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::NetworkKey::m_ackId, m_addressForwardCnt, m_addressForwardTimer, ns3::dsr::NetworkKey::m_destination, m_maintainBuffer, ns3::dsr::NetworkKey::m_nextHop, ns3::dsr::NetworkKey::m_ourAdd, ns3::dsr::NetworkKey::m_source, ns3::dsr::DsrMaintainBuffer::NetworkEqual(), NS_LOG_FUNCTION, and NS_LOG_INFO.

Referenced by CallCancelPacketTimer(), and CancelPacketAllTimer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CancelPacketAllTimer()

void ns3::dsr::DsrRouting::CancelPacketAllTimer ( DsrMaintainBuffEntry & mb)

Cancel all the packet timers.

Parameters
mbmaintain buffer entry

Definition at line 2213 of file dsr-routing.cc.

References CancelLinkPacketTimer(), CancelNetworkPacketTimer(), CancelPassivePacketTimer(), and NS_LOG_FUNCTION.

Referenced by CancelPacketTimerNextHop().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CancelPacketTimerNextHop()

void ns3::dsr::DsrRouting::CancelPacketTimerNextHop ( Ipv4Address nextHop,
uint8_t protocol )

Cancel the packet retransmission timer for a all maintenance entries with nextHop address.

Parameters
nextHopnext hop IP address
protocolnumber

TODO if the errorDst is not seen before

TODO need to think about whether we need the network queue entry or not

Definition at line 2351 of file dsr-routing.cc.

References CancelPacketAllTimer(), CancelPacketTimerNextHop(), ns3::Packet::Copy(), ns3::dsr::DsrMaintainBuffer::Dequeue(), ns3::dsr::DsrMaintainBuffer::Find(), ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrOptionSRHeader::GetNodesAddress(), ns3::dsr::DsrMaintainBuffEntry::GetPacket(), ns3::dsr::DsrOptionSRHeader::GetSalvage(), ns3::dsr::DsrMaintainBuffer::GetSize(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), m_maintainBuffer, m_uniformRandomVariable, ns3::MilliSeconds(), NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, PrintVector(), SalvagePacket(), ns3::Simulator::Schedule(), SendUnreachError(), and ns3::dsr::DsrOptionSRHeader::SetNumberAddress().

Referenced by CancelPacketTimerNextHop(), LinkScheduleTimerExpire(), and NetworkScheduleTimerExpire().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CancelPassivePacketTimer()

void ns3::dsr::DsrRouting::CancelPassivePacketTimer ( DsrMaintainBuffEntry & mb)

Cancel the passive packet retransmission timer for a specific maintenance entry.

Parameters
mbmaintain buffer entry

Definition at line 2317 of file dsr-routing.cc.

References ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrMaintainBuffEntry::GetSegsLeft(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::PassiveKey::m_ackId, ns3::dsr::PassiveKey::m_destination, m_passiveAckTimer, m_passiveCnt, ns3::dsr::PassiveKey::m_segsLeft, ns3::dsr::PassiveKey::m_source, NS_LOG_FUNCTION, and NS_LOG_INFO.

Referenced by CancelPacketAllTimer(), CancelPassiveTimer(), PassiveEntryCheck(), and PassiveScheduleTimerExpire().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CancelPassiveTimer()

bool ns3::dsr::DsrRouting::CancelPassiveTimer ( Ptr< Packet > packet,
Ipv4Address source,
Ipv4Address destination,
uint8_t segsLeft )

Cancel the passive timer.

Parameters
packetto process
sourceIP address
destinationIP address
segsLeftsegments left
Returns

Definition at line 2159 of file dsr-routing.cc.

References CancelPassivePacketTimer(), m_maintainBuffer, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::dsr::DsrMaintainBuffer::PromiscEqual(), segsLeft, ns3::dsr::DsrMaintainBuffEntry::SetAckId(), ns3::dsr::DsrMaintainBuffEntry::SetDst(), ns3::dsr::DsrMaintainBuffEntry::SetPacket(), ns3::dsr::DsrMaintainBuffEntry::SetSegsLeft(), and ns3::dsr::DsrMaintainBuffEntry::SetSrc().

+ Here is the call graph for this function:

◆ CancelRreqTimer()

void ns3::dsr::DsrRouting::CancelRreqTimer ( Ipv4Address dst,
bool isRemove )

Cancel the route request timer.

Parameters
dstThe dst address of the route request timer
isRemovewhether to remove the route request entry or not

Definition at line 3078 of file dsr-routing.cc.

References m_addressReqTimer, m_nonPropReqTimer, m_rreqTable, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by RouteRequestTimerExpire(), and SendErrorRequest().

+ Here is the caller graph for this function:

◆ CheckSendBuffer()

void ns3::dsr::DsrRouting::CheckSendBuffer ( )

Check the send buffer of packets with route when send buffer timer expire.

When found a route and use it, UseExtends to the link cache

This will be priority 0

Todo
New DsrNetworkQueueEntry

Definition at line 852 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Create(), data, ns3::dsr::DSR_CONTROL_PACKET, ns3::dsr::DsrMaintainBuffer::Enqueue(), ns3::dsr::DsrMaintainBuffEntry::GetAckId(), ns3::dsr::DsrSendBuffer::GetBuffer(), ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorSrc(), GetIDfromIP(), ns3::Ipv4::GetInterfaceForAddress(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::Ipv4::GetNetDevice(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetOurAdd(), GetPriority(), ns3::dsr::DsrOptionRerrUnreachHeader::GetSalvage(), ns3::dsr::DsrMaintainBuffEntry::GetSegsLeft(), ns3::dsr::DsrSendBuffer::GetSize(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::DsrOptionRerrUnreachHeader::GetUnreachNode(), ns3::dsr::DsrRouteCacheEntry::GetVector(), ns3::Timer::IsSuspended(), ns3::dsr::NetworkKey::m_ackId, ns3::dsr::PassiveKey::m_ackId, m_addressForwardCnt, ns3::dsr::LinkKey::m_destination, ns3::dsr::NetworkKey::m_destination, ns3::dsr::PassiveKey::m_destination, m_ip, m_ipv4Route, m_linkAck, m_linkCnt, m_mainAddress, m_maintainBuffer, m_maxMaintainTime, ns3::dsr::LinkKey::m_nextHop, ns3::dsr::NetworkKey::m_nextHop, ns3::dsr::LinkKey::m_ourAdd, ns3::dsr::NetworkKey::m_ourAdd, m_passiveCnt, m_priorityQueue, m_routeCache, ns3::dsr::PassiveKey::m_segsLeft, m_sendBuffer, m_sendBuffInterval, m_sendBuffTimer, ns3::dsr::LinkKey::m_source, ns3::dsr::NetworkKey::m_source, ns3::dsr::PassiveKey::m_source, ns3::Simulator::Now(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_INFO, NS_LOG_LOGIC, PacketNewRoute(), ns3::Timer::Resume(), ns3::Time::S, ns3::Simulator::Schedule(), ScheduleLinkPacketRetry(), ScheduleNetworkPacketRetry(), SchedulePassivePacketRetry(), Scheduler(), SearchNextHop(), SendBuffTimerExpire(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrOptionRerrUnreachHeader::SetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::SetErrorSrc(), ns3::dsr::DsrOptionRerrHeader::SetErrorType(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), ns3::dsr::DsrFsHeader::SetPayloadLength(), SetRoute(), ns3::dsr::DsrOptionRerrUnreachHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), ns3::dsr::DsrFsHeader::SetSourceId(), ns3::dsr::DsrOptionRerrUnreachHeader::SetUnreachNode(), and ns3::Timer::Suspend().

Referenced by SendBuffTimerExpire().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DeleteAllRoutesIncludeLink()

void ns3::dsr::DsrRouting::DeleteAllRoutesIncludeLink ( Ipv4Address errorSrc,
Ipv4Address unreachNode,
Ipv4Address node )

Delete all the routes which includes the link from next hop address that has just been notified as unreachable.

See also DsrRouteCache::DeleteAllRoutesIncludeLink

Parameters
errorSrcThe error source address
unreachNodeThe unreachable node
nodeThis node's ip address

Definition at line 687 of file dsr-routing.cc.

References m_routeCache.

◆ DoDispose()

void ns3::dsr::DsrRouting::DoDispose ( )
overrideprotectedvirtual

Drop trace callback.

Reimplemented from ns3::Object.

Definition at line 553 of file dsr-routing.cc.

References ns3::Object::DoDispose(), m_ipv4, m_node, m_routeCache, and NS_LOG_FUNCTION_NOARGS.

+ Here is the call graph for this function:

◆ FindSourceEntry()

bool ns3::dsr::DsrRouting::FindSourceEntry ( Ipv4Address src,
Ipv4Address dst,
uint16_t id )

Find the source request entry in the route request queue, return false if not found.

See also DsrRreqTable::FindSourceEntry

Parameters
srcthe source address we just received the source request
dstthe destination address the request is targeted at
idthe identification number for this request
Returns
true if found, false otherwise

Definition at line 701 of file dsr-routing.cc.

References m_rreqTable.

◆ ForwardErrPacket()

void ns3::dsr::DsrRouting::ForwardErrPacket ( DsrOptionRerrUnreachHeader & rerr,
DsrOptionSRHeader & sourceRoute,
Ipv4Address nextHop,
uint8_t protocol,
Ptr< Ipv4Route > route )

◆ ForwardPacket()

void ns3::dsr::DsrRouting::ForwardPacket ( Ptr< const Packet > packet,
DsrOptionSRHeader & sourceRoute,
const Ipv4Header & ipv4Header,
Ipv4Address source,
Ipv4Address destination,
Ipv4Address targetAddress,
uint8_t protocol,
Ptr< Ipv4Route > route )

Forward the packet using the route saved in the source route option header.

Parameters
packetThe packet
sourceRouteSource route saved in option header
ipv4HeaderIPv4 Header
sourcesource address
destinationdestination address
targetAddresstarget address
protocolprotocol number
routeroute

Definition at line 2835 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::dsr::DsrMaintainBuffer::Enqueue(), ns3::dsr::DsrMaintainBuffEntry::GetAckId(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetOurAdd(), ns3::dsr::DsrOptionSRHeader::GetSegmentsLeft(), ns3::dsr::DsrMaintainBuffEntry::GetSegsLeft(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::Callback< R, UArgs >::IsNull(), m_ackId, ns3::dsr::NetworkKey::m_ackId, ns3::dsr::PassiveKey::m_ackId, m_addressForwardCnt, ns3::dsr::LinkKey::m_destination, ns3::dsr::NetworkKey::m_destination, ns3::dsr::PassiveKey::m_destination, m_downTarget, m_linkAck, m_linkCnt, m_mainAddress, m_maintainBuffer, m_maxMaintainTime, ns3::dsr::LinkKey::m_nextHop, ns3::dsr::NetworkKey::m_nextHop, ns3::dsr::LinkKey::m_ourAdd, ns3::dsr::NetworkKey::m_ourAdd, m_passiveCnt, ns3::dsr::PassiveKey::m_segsLeft, ns3::dsr::LinkKey::m_source, ns3::dsr::NetworkKey::m_source, ns3::dsr::PassiveKey::m_source, NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ScheduleLinkPacketRetry(), ScheduleNetworkPacketRetry(), SchedulePassivePacketRetry(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrFsHeader::SetPayloadLength(), and ns3::dsr::DsrFsHeader::SetSourceId().

+ Here is the call graph for this function:

◆ GetDownTarget()

IpL4Protocol::DownTargetCallback ns3::dsr::DsrRouting::GetDownTarget ( ) const
overridevirtual

This method allows a caller to get the current down target callback set for this L4 protocol (IPv4 case)

Returns
current Callback for the L4 protocol

Implements ns3::IpL4Protocol.

Definition at line 3728 of file dsr-routing.cc.

References m_downTarget.

◆ GetDownTarget6()

IpL4Protocol::DownTargetCallback6 ns3::dsr::DsrRouting::GetDownTarget6 ( ) const
overridevirtual

This method allows a caller to get the current down target callback set for this L4 protocol (IPv6 case)

Returns
current Callback for the L4 protocol

Implements ns3::IpL4Protocol.

Definition at line 3734 of file dsr-routing.cc.

References ns3::MakeNullCallback(), and NS_FATAL_ERROR.

+ Here is the call graph for this function:

◆ GetElementsFromContext()

std::vector< std::string > ns3::dsr::DsrRouting::GetElementsFromContext ( std::string context)

Get the elements from the tracing context.

Parameters
contextcontext
Returns
the elements we are looking for

Definition at line 537 of file dsr-routing.cc.

Referenced by GetNetDeviceFromContext().

+ Here is the caller graph for this function:

◆ GetIDfromIP()

uint16_t ns3::dsr::DsrRouting::GetIDfromIP ( Ipv4Address address)

Get the node id from ip address.

Parameters
addressIPv4 address
Returns
the node id

Definition at line 798 of file dsr-routing.cc.

References ns3::NodeList::GetNNodes(), and ns3::NodeList::GetNode().

Referenced by CheckSendBuffer(), ForwardErrPacket(), ForwardPacket(), PacketNewRoute(), SalvagePacket(), Send(), SendAck(), SendErrorRequest(), SendGratuitousReply(), SendInitialRequest(), SendPacketFromBuffer(), and SendUnreachError().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetIPfromID()

Ipv4Address ns3::dsr::DsrRouting::GetIPfromID ( uint16_t id)

Get the ip address from id.

Parameters
idunique ID
Returns
the ip address for the id

Definition at line 814 of file dsr-routing.cc.

References ns3::NodeList::GetNode(), and NS_LOG_DEBUG.

Referenced by PromiscReceive(), and Receive().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetIPfromMAC()

Ipv4Address ns3::dsr::DsrRouting::GetIPfromMAC ( Mac48Address address)

Get the Ip address from mac address.

Parameters
addressMac48Address
Returns
the ip address

Definition at line 707 of file dsr-routing.cc.

References ns3::NodeList::GetNNodes(), ns3::NodeList::GetNode(), and NS_LOG_FUNCTION.

Referenced by PromiscReceive().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetNetDeviceFromContext()

Ptr< NetDevice > ns3::dsr::DsrRouting::GetNetDeviceFromContext ( std::string context)

Get the netdevice from the context.

Parameters
contextcontext
Returns
the netdevice we are looking for

Definition at line 525 of file dsr-routing.cc.

References GetElementsFromContext(), ns3::NodeList::GetNode(), and NS_ASSERT.

+ Here is the call graph for this function:

◆ GetNode()

Ptr< Node > ns3::dsr::DsrRouting::GetNode ( ) const

Get the node.

Returns
the node

Definition at line 585 of file dsr-routing.cc.

References m_node, and NS_LOG_FUNCTION_NOARGS.

Referenced by Receive().

+ Here is the caller graph for this function:

◆ GetNodeWithAddress()

Ptr< Node > ns3::dsr::DsrRouting::GetNodeWithAddress ( Ipv4Address ipv4Address)

Get the node with give ip address.

Parameters
ipv4AddressIPv4 address
Returns
the node associated with the ip address

Definition at line 634 of file dsr-routing.cc.

References ns3::NodeList::GetNNodes(), ns3::NodeList::GetNode(), and NS_LOG_FUNCTION.

Referenced by PromiscReceive().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetOption()

Ptr< dsr::DsrOptions > ns3::dsr::DsrRouting::GetOption ( int optionNumber)

Get the option corresponding to optionNumber.

Parameters
optionNumberthe option number of the option to retrieve
Returns
a matching Dsr option

Definition at line 3747 of file dsr-routing.cc.

References m_options.

Referenced by PromiscReceive(), and Receive().

+ Here is the caller graph for this function:

◆ GetPassiveBuffer()

Ptr< dsr::DsrPassiveBuffer > ns3::dsr::DsrRouting::GetPassiveBuffer ( ) const

Get the passive buffer.

Returns
the passive buffer

Definition at line 627 of file dsr-routing.cc.

References m_passiveBuffer.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetPriority()

uint32_t ns3::dsr::DsrRouting::GetPriority ( DsrMessageType messageType)

Set the priority of the packet in network queue.

Parameters
messageTypeMessage type
Returns
the priority value

Definition at line 828 of file dsr-routing.cc.

References ns3::dsr::DSR_CONTROL_PACKET.

Referenced by CheckSendBuffer(), ForwardErrPacket(), IncreaseRetransTimer(), SalvagePacket(), SendAck(), SendPacket(), SendPacketFromBuffer(), SendReply(), SendRequest(), and SendUnreachError().

+ Here is the caller graph for this function:

◆ GetProtocolNumber()

int ns3::dsr::DsrRouting::GetProtocolNumber ( ) const
overridevirtual

Get the dsr protocol number.

Returns
protocol number

Implements ns3::IpL4Protocol.

Definition at line 791 of file dsr-routing.cc.

References PROT_NUMBER.

Referenced by SendRealDown().

+ Here is the caller graph for this function:

◆ GetRequestTable()

Ptr< dsr::DsrRreqTable > ns3::dsr::DsrRouting::GetRequestTable ( ) const

Get the request table.

Returns
the request table

Definition at line 613 of file dsr-routing.cc.

References m_rreqTable.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetRouteCache()

Ptr< dsr::DsrRouteCache > ns3::dsr::DsrRouting::GetRouteCache ( ) const

Get the route cache.

Returns
the route cache

Definition at line 599 of file dsr-routing.cc.

References m_routeCache.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetTypeId()

TypeId ns3::dsr::DsrRouting::GetTypeId ( )
static

◆ IncreaseRetransTimer()

void ns3::dsr::DsrRouting::IncreaseRetransTimer ( )

This function is called to increase the retransmission timer for data packet in the network queue.

Definition at line 1834 of file dsr-routing.cc.

References ns3::dsr::DSR_DATA_PACKET, GetPriority(), m_addressForwardTimer, m_priorityQueue, m_retransIncr, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by PriorityScheduler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Insert()

void ns3::dsr::DsrRouting::Insert ( Ptr< dsr::DsrOptions > option)

Insert a new Dsr Option.

Parameters
optionthe option to insert

Definition at line 3741 of file dsr-routing.cc.

References m_options.

Referenced by DsrRouting().

+ Here is the caller graph for this function:

◆ IsLinkCache()

bool ns3::dsr::DsrRouting::IsLinkCache ( )

Checks if the link is cached in the route cache See also DsrRouteCache::IsLinkCache.

Returns
true if the link is cached

Definition at line 652 of file dsr-routing.cc.

References m_routeCache.

◆ LinkScheduleTimerExpire()

void ns3::dsr::DsrRouting::LinkScheduleTimerExpire ( DsrMaintainBuffEntry & mb,
uint8_t protocol )

This function deals with packet retransmission timer expire using link acknowledgment.

Parameters
mbmaintenance buffer entry
protocolthe protocol number

Definition at line 2707 of file dsr-routing.cc.

References CancelPacketTimerNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetOurAdd(), ns3::dsr::DsrMaintainBuffEntry::GetPacket(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::LinkKey::m_destination, m_linkAckTimer, m_linkCnt, m_linkRetries, m_mainAddress, ns3::dsr::LinkKey::m_nextHop, ns3::dsr::LinkKey::m_ourAdd, m_routeCache, ns3::dsr::LinkKey::m_source, m_tryLinkAcks, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, ScheduleLinkPacketRetry(), and SetRoute().

Referenced by ScheduleLinkPacketRetry().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LookupRoute()

bool ns3::dsr::DsrRouting::LookupRoute ( Ipv4Address id,
DsrRouteCacheEntry & rt )

Lookup route cache entry with destination address dst See also DsrRouteCache::LookupRoute.

Parameters
iddestination address
rtentry with destination address id, if exists
Returns
true on success

Definition at line 664 of file dsr-routing.cc.

References m_routeCache.

◆ NetworkScheduleTimerExpire()

void ns3::dsr::DsrRouting::NetworkScheduleTimerExpire ( DsrMaintainBuffEntry & mb,
uint8_t protocol )

This function deals with packet retransmission timer expire using network acknowledgment.

Parameters
mbmaintenance buffer entry
protocolthe protocol number

Definition at line 2799 of file dsr-routing.cc.

References CancelPacketTimerNextHop(), ns3::Packet::Copy(), ns3::dsr::DsrMaintainBuffEntry::GetAckId(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetOurAdd(), ns3::dsr::DsrMaintainBuffEntry::GetPacket(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::NetworkKey::m_ackId, m_addressForwardCnt, ns3::dsr::NetworkKey::m_destination, m_mainAddress, m_maxMaintRexmt, ns3::dsr::NetworkKey::m_nextHop, ns3::dsr::NetworkKey::m_ourAdd, m_routeCache, m_sendRetries, ns3::dsr::NetworkKey::m_source, and ScheduleNetworkPacketRetry().

Referenced by ScheduleNetworkPacketRetry().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ NotifyNewAggregate()

void ns3::dsr::DsrRouting::NotifyNewAggregate ( )
overrideprotectedvirtual

Notify all Objects aggregated to this one of a new Object being aggregated.

This method is invoked whenever two sets of Objects are aggregated together. It is invoked exactly once for each Object in both sets. This method can be overridden by subclasses who wish to be notified of aggregation events. These subclasses must chain up to their base class NotifyNewAggregate() method.

It is safe to call GetObject() and AggregateObject() from within this method.

Reimplemented from ns3::Object.

Definition at line 395 of file dsr-routing.cc.

References ns3::Object::GetObject(), m_ip, m_ipv4, m_node, ns3::MakeCallback(), ns3::Object::NotifyNewAggregate(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Simulator::ScheduleNow(), ns3::Ipv4L3Protocol::Send(), SetDownTarget(), SetNode(), and Start().

+ Here is the call graph for this function:

◆ PacketNewRoute()

void ns3::dsr::DsrRouting::PacketNewRoute ( Ptr< Packet > packet,
Ipv4Address source,
Ipv4Address destination,
uint8_t protocol )

When route vector corrupted, originate a new packet, normally not happening.

Parameters
packetto route
sourceaddress
destinationaddress
protocolnumber

When found a route and use it, UseExtends to the link cache

Definition at line 1199 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::dsr::DsrMaintainBuffer::Enqueue(), ns3::dsr::DsrSendBuffer::Enqueue(), ns3::dsr::DsrMaintainBuffEntry::GetAckId(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetOurAdd(), ns3::dsr::DsrMaintainBuffEntry::GetSegsLeft(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::DsrRouteCacheEntry::GetVector(), ns3::dsr::NetworkKey::m_ackId, ns3::dsr::PassiveKey::m_ackId, m_addressForwardCnt, m_addressReqTimer, ns3::dsr::LinkKey::m_destination, ns3::dsr::NetworkKey::m_destination, ns3::dsr::PassiveKey::m_destination, m_linkAck, m_linkCnt, m_mainAddress, m_maintainBuffer, m_maxMaintainTime, ns3::dsr::LinkKey::m_nextHop, ns3::dsr::NetworkKey::m_nextHop, m_nonPropReqTimer, ns3::dsr::LinkKey::m_ourAdd, ns3::dsr::NetworkKey::m_ourAdd, m_passiveCnt, m_routeCache, ns3::dsr::PassiveKey::m_segsLeft, m_sendBuffer, m_sendBufferTimeout, ns3::dsr::LinkKey::m_source, ns3::dsr::NetworkKey::m_source, ns3::dsr::PassiveKey::m_source, ns3::Simulator::Now(), NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, PacketNewRoute(), ns3::Time::S, ScheduleLinkPacketRetry(), ScheduleNetworkPacketRetry(), SchedulePassivePacketRetry(), SearchNextHop(), SendInitialRequest(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), ns3::dsr::DsrFsHeader::SetPayloadLength(), SetRoute(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), and ns3::dsr::DsrFsHeader::SetSourceId().

Referenced by CheckSendBuffer(), PacketNewRoute(), RouteRequestTimerExpire(), SalvagePacket(), Send(), SendErrorRequest(), and SendUnreachError().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PassiveEntryCheck()

bool ns3::dsr::DsrRouting::PassiveEntryCheck ( Ptr< Packet > packet,
Ipv4Address source,
Ipv4Address destination,
uint8_t segsLeft,
uint16_t fragmentOffset,
uint16_t identification,
bool saveEntry )

Find the same passive entry.

Parameters
packetto process
sourceIP address
destinationIP address
segsLeftsegments left
fragmentOffset
identification
saveEntry
Returns
true if passive buffer entry

Save this passive buffer entry for later check

Definition at line 2112 of file dsr-routing.cc.

References CancelPassivePacketTimer(), m_passiveBuffer, NS_LOG_DEBUG, NS_LOG_FUNCTION, segsLeft, ns3::dsr::DsrMaintainBuffEntry::SetAckId(), ns3::dsr::DsrPassiveBuffEntry::SetDestination(), ns3::dsr::DsrMaintainBuffEntry::SetDst(), ns3::dsr::DsrPassiveBuffEntry::SetFragmentOffset(), ns3::dsr::DsrPassiveBuffEntry::SetIdentification(), ns3::dsr::DsrMaintainBuffEntry::SetPacket(), ns3::dsr::DsrPassiveBuffEntry::SetPacket(), ns3::dsr::DsrMaintainBuffEntry::SetSegsLeft(), ns3::dsr::DsrPassiveBuffEntry::SetSegsLeft(), ns3::dsr::DsrPassiveBuffEntry::SetSource(), and ns3::dsr::DsrMaintainBuffEntry::SetSrc().

+ Here is the call graph for this function:

◆ PassiveScheduleTimerExpire()

void ns3::dsr::DsrRouting::PassiveScheduleTimerExpire ( DsrMaintainBuffEntry & mb,
uint8_t protocol )

This function deals with packet retransmission timer expire using passive acknowledgment.

Parameters
mbmaintenance buffer entry
protocolthe protocol number

Definition at line 2752 of file dsr-routing.cc.

References CancelPassivePacketTimer(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetPacket(), ns3::dsr::DsrMaintainBuffEntry::GetSegsLeft(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::PassiveKey::m_ackId, ns3::dsr::PassiveKey::m_destination, m_mainAddress, m_passiveAckTimer, m_passiveCnt, m_passiveRetries, ns3::dsr::PassiveKey::m_segsLeft, ns3::dsr::PassiveKey::m_source, m_tryPassiveAcks, NS_LOG_DEBUG, NS_LOG_FUNCTION, ScheduleNetworkPacketRetry(), SchedulePassivePacketRetry(), and SetRoute().

Referenced by SchedulePassivePacketRetry().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PrintVector()

void ns3::dsr::DsrRouting::PrintVector ( std::vector< Ipv4Address > & vec)

Print the route vector.

Parameters
vecthe vector to print.

Definition at line 726 of file dsr-routing.cc.

References NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by CancelPacketTimerNextHop().

+ Here is the caller graph for this function:

◆ PriorityScheduler()

void ns3::dsr::DsrRouting::PriorityScheduler ( uint32_t priority,
bool continueWithFirst )

This function is called to schedule sending packets from the network queue by priority.

Parameters
priorityschedule
continueWithFirstuse all priorities

Definition at line 1756 of file dsr-routing.cc.

References IncreaseRetransTimer(), m_numPriorityQueues, m_priorityQueue, m_uniformRandomVariable, ns3::MicroSeconds(), NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, PriorityScheduler(), queueSize, ns3::Simulator::Schedule(), ns3::Seconds(), and SendRealDown().

Referenced by PriorityScheduler(), and Scheduler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Process()

uint8_t ns3::dsr::DsrRouting::Process ( Ptr< Packet > & packet,
const Ipv4Header & ipv4Header,
Ipv4Address dst,
uint8_t * nextHeader,
uint8_t protocol,
bool & isDropped )

Process method Called from Ipv4L3Protocol::Receive.

Parameters
packetthe packet
ipv4HeaderIPv4 header of the packet
dstdestination address of the packet received (i.e. us)
nextHeaderthe next header
protocolthe protocol number
isDroppedif the packet must be dropped
Returns
the size processed

◆ PromiscReceive()

bool ns3::dsr::DsrRouting::PromiscReceive ( Ptr< NetDevice > device,
Ptr< const Packet > packet,
uint16_t protocol,
const Address & from,
const Address & to,
NetDevice::PacketType packetType )
private

Promiscuous receive data packets destined to some other node.

Parameters
deviceThe network device
packetData packet we just received
protocolThe protocol we receive, need to verify it is dsr protocol
fromThe from address we received the packet
toThe address this packet is destined for
packetTypeThe dsr packet type, 0 is for control packet, 1 for data packet
Returns
true if the packet was processed, false otherwise

This is the ip address we just received data packet from

Remember this is the entry for previous node

Get the previous node's maintenance buffer and passive ack

Definition at line 1086 of file dsr-routing.cc.

References ns3::Mac48Address::ConvertFrom(), ns3::Create(), data, ns3::dsr::DsrFsHeader::GetDestId(), ns3::Ipv4Header::GetDestination(), ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), GetIPfromID(), GetIPfromMAC(), ns3::dsr::DsrFsHeader::GetMessageType(), ns3::dsr::DsrFsHeader::GetNextHeader(), GetNodeWithAddress(), GetOption(), ns3::Ipv4Header::GetProtocol(), ns3::Ipv4Header::GetSource(), ns3::dsr::DsrFsHeader::GetSourceId(), m_ipv4, m_mainAddress, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_INFO, ns3::NetDevice::PACKET_OTHERHOST, PROT_NUMBER, ns3::Ipv4L3Protocol::PROT_NUMBER, ns3::Time::S, ns3::dsr::DsrMaintainBuffEntry::SetDst(), ns3::dsr::DsrMaintainBuffEntry::SetNextHop(), ns3::dsr::DsrMaintainBuffEntry::SetOurAdd(), ns3::dsr::DsrMaintainBuffEntry::SetPacket(), and ns3::dsr::DsrMaintainBuffEntry::SetSrc().

Referenced by Start().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Receive() [1/2]

IpL4Protocol::RxStatus ns3::dsr::DsrRouting::Receive ( Ptr< Packet > p,
const Ipv4Header & header,
Ptr< Ipv4Interface > incomingInterface )
overridevirtual

◆ Receive() [2/2]

IpL4Protocol::RxStatus ns3::dsr::DsrRouting::Receive ( Ptr< Packet > p,
const Ipv6Header & header,
Ptr< Ipv6Interface > incomingInterface )
overridevirtual
Parameters
ppacket to forward up
headerIPv6 Header information
incomingInterfacethe Ipv6Interface on which the packet arrived
Returns
receive status

Called from lower-level layers to send the packet up in the stack. Not implemented (IPv6).

Implements ns3::IpL4Protocol.

Definition at line 3709 of file dsr-routing.cc.

References ns3::Ipv6Header::GetDestination(), ns3::Ipv6Header::GetSource(), NS_LOG_FUNCTION, and ns3::IpL4Protocol::RX_ENDPOINT_UNREACH.

+ Here is the call graph for this function:

◆ RouteRequestTimerExpire()

void ns3::dsr::DsrRouting::RouteRequestTimerExpire ( Ptr< Packet > packet,
std::vector< Ipv4Address > address,
uint32_t requestId,
uint8_t protocol )

Handle route discovery timer.

Parameters
packetthe original packet
addressList of IPv4 addresses
requestIdUnique request ID
protocolthe protocol number

Set the salvage value to 0

Try to send out data packet from the send buffer if found

Definition at line 3202 of file dsr-routing.cc.

References CancelRreqTimer(), ns3::dsr::DsrSendBuffer::DropPacketWithDst(), ns3::dsr::DsrSendBuffer::Find(), ns3::dsr::DsrSendBuffer::GetSize(), ns3::dsr::DsrRouteCacheEntry::GetVector(), m_discoveryHopLimit, m_mainAddress, m_routeCache, m_rreqRetries, m_rreqTable, m_sendBuffer, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, PacketNewRoute(), ScheduleRreqRetry(), SearchNextHop(), SendPacketFromBuffer(), SendRequest(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), SetRoute(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), and ns3::SocketIpTtlTag::SetTtl().

Referenced by ScheduleRreqRetry().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SalvagePacket()

void ns3::dsr::DsrRouting::SalvagePacket ( Ptr< const Packet > packet,
Ipv4Address source,
Ipv4Address dst,
uint8_t protocol )

Salvage the packet which has been transmitted for 3 times.

Parameters
packetto process
sourceIP address
dstdestination IP address
protocolnumber

When found a route and use it, UseExtends to the link cache

Todo
New DsrNetworkQueueEntry

Definition at line 2431 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::dsr::DSR_DATA_PACKET, ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), GetIDfromIP(), ns3::Ipv4::GetInterfaceForAddress(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::Ipv4::GetNetDevice(), GetPriority(), ns3::dsr::DsrOptionSRHeader::GetSalvage(), ns3::dsr::DsrRouteCacheEntry::GetVector(), m_ip, m_ipv4Route, m_mainAddress, m_maxSalvageCount, m_priorityQueue, m_routeCache, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, PacketNewRoute(), Scheduler(), SearchNextHop(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), ns3::dsr::DsrOptionSRHeader::SetNumberAddress(), ns3::dsr::DsrFsHeader::SetPayloadLength(), SetRoute(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), and ns3::dsr::DsrFsHeader::SetSourceId().

Referenced by CancelPacketTimerNextHop().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ScheduleCachedReply()

void ns3::dsr::DsrRouting::ScheduleCachedReply ( Ptr< Packet > packet,
Ipv4Address source,
Ipv4Address destination,
Ptr< Ipv4Route > route,
double hops )

Schedule the cached reply to a random start time to avoid possible route reply storm.

Parameters
packetthe original packet
sourceIPv4 address of the source (i.e. request originator)
destinationIPv4 address of the destination
routeRoute
hopsnumber of hops

Definition at line 3434 of file dsr-routing.cc.

References m_nodeTraversalTime, m_uniformRandomVariable, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), and SendReply().

+ Here is the call graph for this function:

◆ ScheduleInitialReply()

void ns3::dsr::DsrRouting::ScheduleInitialReply ( Ptr< Packet > packet,
Ipv4Address source,
Ipv4Address nextHop,
Ptr< Ipv4Route > route )

this is a generating the initial route reply from the destination address, a random delay time [0, m_broadcastJitter] is used before unicasting back the route reply packet

Parameters
packetthe original packet
sourceIPv4 address of the source (i.e. request originator)
nextHopIPv4 address of the next hop
routeRoute

Definition at line 3424 of file dsr-routing.cc.

References NS_LOG_FUNCTION, ns3::Simulator::ScheduleNow(), and SendReply().

+ Here is the call graph for this function:

◆ ScheduleInterRequest()

void ns3::dsr::DsrRouting::ScheduleInterRequest ( Ptr< Packet > packet)

Schedule the intermediate route request.

Parameters
packetthe original packet

Definition at line 3309 of file dsr-routing.cc.

References m_broadcastJitter, m_mainAddress, m_uniformRandomVariable, ns3::MilliSeconds(), NS_LOG_FUNCTION, ns3::Simulator::Schedule(), and SendRequest().

+ Here is the call graph for this function:

◆ ScheduleLinkPacketRetry()

void ns3::dsr::DsrRouting::ScheduleLinkPacketRetry ( DsrMaintainBuffEntry & mb,
uint8_t protocol )

Schedule the packet retransmission based on link-layer acknowledgment.

Parameters
mbmaintenance buffer entry
protocolthe protocol number

Definition at line 2536 of file dsr-routing.cc.

References ns3::Timer::CANCEL_ON_DESTROY, ns3::Packet::Copy(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetOurAdd(), ns3::dsr::DsrMaintainBuffEntry::GetPacket(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), LinkScheduleTimerExpire(), ns3::dsr::LinkKey::m_destination, m_linkAckTimeout, m_linkAckTimer, ns3::dsr::LinkKey::m_nextHop, ns3::dsr::LinkKey::m_ourAdd, ns3::dsr::LinkKey::m_source, NS_LOG_FUNCTION, SendPacket(), and ns3::Timer::SetFunction().

Referenced by CheckSendBuffer(), ForwardPacket(), LinkScheduleTimerExpire(), PacketNewRoute(), Send(), and SendPacketFromBuffer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ScheduleNetworkPacketRetry()

void ns3::dsr::DsrRouting::ScheduleNetworkPacketRetry ( DsrMaintainBuffEntry & mb,
bool isFirst,
uint8_t protocol )

Schedule the packet retransmission based on network layer acknowledgment.

Parameters
mbmaintenance buffer entry
isFirstsee if this is the first packet retry or not
protocolthe protocol number

Definition at line 2595 of file dsr-routing.cc.

References AddAckReqHeader(), ns3::dsr::DsrMaintainBuffer::AllEqual(), ns3::Timer::CANCEL_ON_DESTROY, ns3::Packet::Copy(), ns3::Create(), ns3::dsr::DsrMaintainBuffer::Enqueue(), ns3::dsr::DsrMaintainBuffEntry::GetAckId(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetOurAdd(), ns3::dsr::DsrMaintainBuffEntry::GetPacket(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::NetworkKey::m_ackId, m_addressForwardCnt, m_addressForwardTimer, ns3::dsr::NetworkKey::m_destination, m_maintainBuffer, m_maxMaintainTime, ns3::dsr::NetworkKey::m_nextHop, m_nodeTraversalTime, ns3::dsr::NetworkKey::m_ourAdd, m_sendRetries, ns3::dsr::NetworkKey::m_source, NetworkScheduleTimerExpire(), NS_LOG_DEBUG, NS_LOG_ERROR, ns3::Time::S, SendPacket(), ns3::dsr::DsrMaintainBuffEntry::SetAckId(), ns3::dsr::DsrMaintainBuffEntry::SetExpireTime(), ns3::Timer::SetFunction(), and ns3::dsr::DsrMaintainBuffEntry::SetPacket().

Referenced by CheckSendBuffer(), ForwardPacket(), NetworkScheduleTimerExpire(), PacketNewRoute(), PassiveScheduleTimerExpire(), Send(), and SendPacketFromBuffer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SchedulePassivePacketRetry()

void ns3::dsr::DsrRouting::SchedulePassivePacketRetry ( DsrMaintainBuffEntry & mb,
uint8_t protocol )

Schedule the packet retransmission based on passive acknowledgment.

Parameters
mbmaintenance buffer entry
protocolthe protocol number

Definition at line 2565 of file dsr-routing.cc.

References ns3::Timer::CANCEL_ON_DESTROY, ns3::Packet::Copy(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetPacket(), ns3::dsr::DsrMaintainBuffEntry::GetSegsLeft(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::PassiveKey::m_ackId, ns3::dsr::PassiveKey::m_destination, m_passiveAckTimeout, m_passiveAckTimer, ns3::dsr::PassiveKey::m_segsLeft, ns3::dsr::PassiveKey::m_source, NS_LOG_DEBUG, NS_LOG_FUNCTION, PassiveScheduleTimerExpire(), and SendPacket().

Referenced by CheckSendBuffer(), ForwardPacket(), PacketNewRoute(), PassiveScheduleTimerExpire(), Send(), and SendPacketFromBuffer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Scheduler()

void ns3::dsr::DsrRouting::Scheduler ( uint32_t priority)

This function is called to schedule sending packets from the network queue.

Parameters
priorityfor sending

Definition at line 1749 of file dsr-routing.cc.

References NS_LOG_FUNCTION, and PriorityScheduler().

Referenced by CheckSendBuffer(), ForwardErrPacket(), SalvagePacket(), SendAck(), SendPacket(), SendPacketFromBuffer(), SendReply(), SendRequest(), and SendUnreachError().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ScheduleRreqRetry()

void ns3::dsr::DsrRouting::ScheduleRreqRetry ( Ptr< Packet > packet,
std::vector< Ipv4Address > address,
bool nonProp,
uint32_t requestId,
uint8_t protocol )

Schedule the route request retry.

Parameters
packetthe original packet
addressList of IPv4 addresses
nonPropflag if RREQ is non-propagating
requestIdUnique request ID
protocolthe protocol number

Definition at line 3125 of file dsr-routing.cc.

References ns3::Time::As(), ns3::Timer::CANCEL_ON_DESTROY, m_addressReqTimer, m_maxRequestPeriod, m_nonPropReqTimer, m_nonpropRequestTimeout, m_requestPeriod, m_rreqTable, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, RouteRequestTimerExpire(), and ns3::Time::S.

Referenced by RouteRequestTimerExpire(), SendErrorRequest(), and SendInitialRequest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SearchNextHop()

Ipv4Address ns3::dsr::DsrRouting::SearchNextHop ( Ipv4Address ipv4Address,
std::vector< Ipv4Address > & vec )

Get the next hop of the route.

Parameters
ipv4Address
vecRoute
Returns
the next hop address of the route

Definition at line 747 of file dsr-routing.cc.

References NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by AddRoute(), AddRoute_Link(), CheckSendBuffer(), PacketNewRoute(), RouteRequestTimerExpire(), SalvagePacket(), Send(), SendErrorRequest(), and SendUnreachError().

+ Here is the caller graph for this function:

◆ Send()

void ns3::dsr::DsrRouting::Send ( Ptr< Packet > packet,
Ipv4Address source,
Ipv4Address destination,
uint8_t protocol,
Ptr< Ipv4Route > route )

This function is called by higher layer protocol when sending packets.

Parameters
packetto send
sourceIP address
destinationIP address
protocolnumber
routeIP route

When found a route and use it, UseExtends to the link cache

Definition at line 1511 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::dsr::DsrMaintainBuffer::Enqueue(), ns3::dsr::DsrSendBuffer::Enqueue(), ns3::dsr::DsrSendBuffer::Find(), ns3::dsr::DsrMaintainBuffEntry::GetAckId(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrMaintainBuffEntry::GetOurAdd(), ns3::dsr::DsrMaintainBuffEntry::GetSegsLeft(), ns3::dsr::DsrSendBuffer::GetSize(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::DsrRouteCacheEntry::GetVector(), ns3::Callback< R, UArgs >::IsNull(), ns3::dsr::NetworkKey::m_ackId, ns3::dsr::PassiveKey::m_ackId, m_addressForwardCnt, m_addressReqTimer, ns3::dsr::LinkKey::m_destination, ns3::dsr::NetworkKey::m_destination, ns3::dsr::PassiveKey::m_destination, m_downTarget, m_linkAck, m_linkCnt, m_mainAddress, m_maintainBuffer, m_maxMaintainTime, ns3::dsr::LinkKey::m_nextHop, ns3::dsr::NetworkKey::m_nextHop, m_nonPropReqTimer, ns3::dsr::LinkKey::m_ourAdd, ns3::dsr::NetworkKey::m_ourAdd, m_passiveCnt, m_routeCache, m_rreqTable, ns3::dsr::PassiveKey::m_segsLeft, m_sendBuffer, m_sendBufferTimeout, ns3::dsr::LinkKey::m_source, ns3::dsr::NetworkKey::m_source, ns3::dsr::PassiveKey::m_source, m_uniformRandomVariable, ns3::MilliSeconds(), ns3::Simulator::Now(), NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, PacketNewRoute(), ns3::Time::S, ns3::Simulator::Schedule(), ScheduleLinkPacketRetry(), ScheduleNetworkPacketRetry(), SchedulePassivePacketRetry(), SearchNextHop(), SendInitialRequest(), SendPacketFromBuffer(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), ns3::dsr::DsrFsHeader::SetPayloadLength(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), and ns3::dsr::DsrFsHeader::SetSourceId().

Referenced by ns3::DsrHelper::Create().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendAck()

void ns3::dsr::DsrRouting::SendAck ( uint16_t ackId,
Ipv4Address destination,
Ipv4Address realSrc,
Ipv4Address realDst,
uint8_t protocol,
Ptr< Ipv4Route > route )

Send network layer acknowledgment back to the earlier hop to notify the receipt of data packet.

Parameters
ackIdACK ID
destinationIPv4 address of the immediate ACK receiver
realSrcIPv4 address of the real source
realDstIPv4 address of the real destination
protocolthe protocol number
routeRoute
Todo
New DsrNetworkQueueEntry

Definition at line 3452 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Create(), ns3::dsr::DSR_CONTROL_PACKET, GetIDfromIP(), ns3::Ipv4::GetInterfaceForAddress(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::Ipv4::GetNetDevice(), GetPriority(), ns3::Callback< R, UArgs >::IsNull(), m_downTarget, m_ip, m_mainAddress, m_priorityQueue, ns3::Simulator::Now(), NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, Scheduler(), ns3::dsr::DsrOptionAckHeader::SetAckId(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrFsHeader::SetPayloadLength(), ns3::dsr::DsrOptionAckHeader::SetRealDst(), ns3::dsr::DsrOptionAckHeader::SetRealSrc(), and ns3::dsr::DsrFsHeader::SetSourceId().

+ Here is the call graph for this function:

◆ SendBuffTimerExpire()

void ns3::dsr::DsrRouting::SendBuffTimerExpire ( )

The send buffer timer expire.

Definition at line 841 of file dsr-routing.cc.

References ns3::Timer::Cancel(), CheckSendBuffer(), ns3::Timer::IsRunning(), m_sendBuffInterval, m_sendBuffTimer, and ns3::Timer::Schedule().

Referenced by DsrRouting(), and CheckSendBuffer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendErrorRequest()

void ns3::dsr::DsrRouting::SendErrorRequest ( DsrOptionRerrUnreachHeader & rerr,
uint8_t protocol )

Send the error request packet.

Parameters
rerrthe route error header
protocolthe protocol number

When found a route and use it, UseExtends to the link cache

Try to send out the packet from the buffer once we found one route

Definition at line 2968 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::dsr::DsrOptionRreqHeader::AddNodeAddress(), CancelRreqTimer(), ns3::Create(), ns3::dsr::DsrSendBuffer::Find(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorSrc(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::dsr::DsrOptionRerrUnreachHeader::GetOriginalDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetSalvage(), ns3::dsr::DsrSendBuffer::GetSize(), ns3::dsr::DsrOptionRerrUnreachHeader::GetUnreachNode(), ns3::dsr::DsrRouteCacheEntry::GetVector(), ns3::Callback< R, UArgs >::IsNull(), m_addressReqTimer, m_discoveryHopLimit, m_downTarget, m_mainAddress, m_nonPropReqTimer, m_requestId, m_routeCache, m_rreqTable, m_sendBuffer, NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, PacketNewRoute(), ScheduleRreqRetry(), SearchNextHop(), SendPacketFromBuffer(), SendRequest(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrOptionRreqHeader::SetId(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), ns3::dsr::DsrFsHeader::SetPayloadLength(), SetRoute(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), ns3::dsr::DsrFsHeader::SetSourceId(), ns3::dsr::DsrOptionRreqHeader::SetTarget(), and ns3::SocketIpTtlTag::SetTtl().

Referenced by SendUnreachError().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendGratuitousReply()

void ns3::dsr::DsrRouting::SendGratuitousReply ( Ipv4Address replyTo,
Ipv4Address replyFrom,
std::vector< Ipv4Address > & nodeList,
uint8_t protocol )

Send the gratuitous reply.

Parameters
replyToThe destination address to send the reply to
replyFromThe source address sending the reply
nodeListRoute
protocolthe protocol number

Push back the node addresses other than those between srcAddress and our own ip address

Definition at line 3324 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::dsr::DsrGraReply::AddEntry(), ns3::Create(), ns3::dsr::DsrGraReply::FindAndUpdate(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), m_finalRoute, m_graReply, m_gratReplyHoldoff, m_ipv4Route, m_mainAddress, ns3::Simulator::Now(), NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, SendReply(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionRrepHeader::SetNodesAddress(), ns3::dsr::DsrFsHeader::SetPayloadLength(), SetRoute(), and ns3::dsr::DsrFsHeader::SetSourceId().

+ Here is the call graph for this function:

◆ SendInitialRequest()

void ns3::dsr::DsrRouting::SendInitialRequest ( Ipv4Address source,
Ipv4Address destination,
uint8_t protocol )

Broadcast the route request packet in subnet.

Parameters
sourcesource address
destinationdestination address
protocolprotocol number

Definition at line 2920 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::dsr::DsrOptionRreqHeader::AddNodeAddress(), ns3::Create(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::Callback< R, UArgs >::IsNull(), m_downTarget, m_mainAddress, m_requestId, m_rreqTable, NS_ASSERT_MSG, NS_LOG_FUNCTION, ScheduleRreqRetry(), SendRequest(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrOptionRreqHeader::SetId(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrFsHeader::SetPayloadLength(), ns3::dsr::DsrFsHeader::SetSourceId(), ns3::dsr::DsrOptionRreqHeader::SetTarget(), and ns3::SocketIpTtlTag::SetTtl().

Referenced by PacketNewRoute(), Send(), and SendUnreachError().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendPacket()

void ns3::dsr::DsrRouting::SendPacket ( Ptr< Packet > packet,
Ipv4Address source,
Ipv4Address nextHop,
uint8_t protocol )

This function is called by when really sending out the packet.

Parameters
packetto send
sourceIP address
nextHopIP address
protocolnumber
Todo
New DsrNetworkQueueEntry

Definition at line 1717 of file dsr-routing.cc.

References ns3::dsr::DSR_DATA_PACKET, ns3::Ipv4::GetInterfaceForAddress(), ns3::Ipv4::GetNetDevice(), GetPriority(), m_ip, m_ipv4Route, m_mainAddress, m_priorityQueue, ns3::Simulator::Now(), NS_LOG_FUNCTION, NS_LOG_INFO, Scheduler(), and SetRoute().

Referenced by ScheduleLinkPacketRetry(), ScheduleNetworkPacketRetry(), and SchedulePassivePacketRetry().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendPacketFromBuffer()

void ns3::dsr::DsrRouting::SendPacketFromBuffer ( const DsrOptionSRHeader & sourceRoute,
Ipv4Address nextHop,
uint8_t protocol )

This function is responsible for sending out data packets when have route, if no route found, it will cache the packet and send out route requests.

Parameters
sourceRoutesource route
nextHopnext hop IP address
protocolnumber

When found a route and use it, UseExtends to the link cache

When found a route and use it, UseExtends to the link cache

Todo
New DsrNetworkQueueEntry

Definition at line 1871 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Packet::Copy(), ns3::Create(), data, ns3::dsr::DsrErrorBuffer::Dequeue(), ns3::dsr::DsrSendBuffer::Dequeue(), ns3::dsr::DSR_CONTROL_PACKET, ns3::dsr::DsrMaintainBuffer::Enqueue(), ns3::dsr::DsrErrorBuffer::Find(), ns3::dsr::DsrSendBuffer::Find(), ns3::dsr::DsrMaintainBuffEntry::GetAckId(), ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), ns3::dsr::DsrMaintainBuffEntry::GetDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorSrc(), GetIDfromIP(), ns3::Ipv4::GetInterfaceForAddress(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::Ipv4::GetNetDevice(), ns3::dsr::DsrMaintainBuffEntry::GetNextHop(), ns3::dsr::DsrOptionSRHeader::GetNodesAddress(), ns3::dsr::DsrOptionRerrUnreachHeader::GetOriginalDst(), ns3::dsr::DsrMaintainBuffEntry::GetOurAdd(), ns3::dsr::DsrErrorBuffEntry::GetPacket(), ns3::dsr::DsrSendBuffEntry::GetPacket(), GetPriority(), ns3::dsr::DsrOptionRerrUnreachHeader::GetSalvage(), ns3::dsr::DsrMaintainBuffEntry::GetSegsLeft(), ns3::dsr::DsrErrorBuffer::GetSize(), ns3::dsr::DsrSendBuffer::GetSize(), ns3::dsr::DsrMaintainBuffEntry::GetSrc(), ns3::dsr::DsrOptionRerrUnreachHeader::GetUnreachNode(), ns3::Callback< R, UArgs >::IsNull(), ns3::dsr::NetworkKey::m_ackId, ns3::dsr::PassiveKey::m_ackId, m_addressForwardCnt, ns3::dsr::LinkKey::m_destination, ns3::dsr::NetworkKey::m_destination, ns3::dsr::PassiveKey::m_destination, m_downTarget, m_errorBuffer, m_ip, m_ipv4Route, m_linkAck, m_linkCnt, m_mainAddress, m_maintainBuffer, m_maxMaintainTime, ns3::dsr::LinkKey::m_nextHop, ns3::dsr::NetworkKey::m_nextHop, ns3::dsr::LinkKey::m_ourAdd, ns3::dsr::NetworkKey::m_ourAdd, m_passiveCnt, m_priorityQueue, m_routeCache, ns3::dsr::PassiveKey::m_segsLeft, m_sendBuffer, ns3::dsr::LinkKey::m_source, ns3::dsr::NetworkKey::m_source, ns3::dsr::PassiveKey::m_source, m_uniformRandomVariable, ns3::MilliSeconds(), ns3::Simulator::Now(), NS_ASSERT, NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, ns3::Simulator::Schedule(), ScheduleLinkPacketRetry(), ScheduleNetworkPacketRetry(), SchedulePassivePacketRetry(), Scheduler(), SendPacketFromBuffer(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrOptionRerrUnreachHeader::SetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::SetErrorSrc(), ns3::dsr::DsrOptionRerrHeader::SetErrorType(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionRerrUnreachHeader::SetOriginalDst(), ns3::dsr::DsrFsHeader::SetPayloadLength(), SetRoute(), ns3::dsr::DsrOptionRerrUnreachHeader::SetSalvage(), ns3::dsr::DsrFsHeader::SetSourceId(), and ns3::dsr::DsrOptionRerrUnreachHeader::SetUnreachNode().

Referenced by RouteRequestTimerExpire(), Send(), SendErrorRequest(), and SendPacketFromBuffer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendRealDown()

bool ns3::dsr::DsrRouting::SendRealDown ( DsrNetworkQueueEntry & newEntry)

This function is called to send packets down stack.

Parameters
newEntryqueue entry
Returns
true if success

Definition at line 1859 of file dsr-routing.cc.

References ns3::Packet::Copy(), ns3::dsr::DsrNetworkQueueEntry::GetIpv4Route(), ns3::dsr::DsrNetworkQueueEntry::GetNextHopAddress(), ns3::dsr::DsrNetworkQueueEntry::GetPacket(), GetProtocolNumber(), ns3::dsr::DsrNetworkQueueEntry::GetSourceAddress(), m_downTarget, and NS_LOG_FUNCTION.

Referenced by PriorityScheduler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendReply()

void ns3::dsr::DsrRouting::SendReply ( Ptr< Packet > packet,
Ipv4Address source,
Ipv4Address nextHop,
Ptr< Ipv4Route > route )

Send the route reply back to the request originator with the cumulated route.

Parameters
packetthe original packet
sourceIPv4 address of the source (i.e. request originator)
nextHopIPv4 address of the next hop
routeRoute
Todo
New DsrNetworkQueueEntry

Definition at line 3392 of file dsr-routing.cc.

References ns3::dsr::DSR_CONTROL_PACKET, GetPriority(), ns3::Callback< R, UArgs >::IsNull(), m_downTarget, m_ipv4, m_mainAddress, m_priorityQueue, ns3::Simulator::Now(), NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_INFO, and Scheduler().

Referenced by ScheduleCachedReply(), ScheduleInitialReply(), and SendGratuitousReply().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendRequest()

void ns3::dsr::DsrRouting::SendRequest ( Ptr< Packet > packet,
Ipv4Address source )

Forward the route request if the node is not the destination.

Parameters
packetthe original packet
sourceaddress
Todo
New DsrNetworkQueueEntry

Definition at line 3281 of file dsr-routing.cc.

References ns3::dsr::DSR_CONTROL_PACKET, GetPriority(), ns3::Callback< R, UArgs >::IsNull(), m_broadcast, m_downTarget, m_priorityQueue, ns3::Simulator::Now(), NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, and Scheduler().

Referenced by RouteRequestTimerExpire(), ScheduleInterRequest(), SendErrorRequest(), and SendInitialRequest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendRerrWhenBreaksLinkToNextHop()

void ns3::dsr::DsrRouting::SendRerrWhenBreaksLinkToNextHop ( Ipv4Address nextHop,
uint8_t protocol )
private

Send the route error message when the link breaks to the next hop.

Parameters
nextHopnext hop address
protocolprotocol number

◆ SendUnreachError()

void ns3::dsr::DsrRouting::SendUnreachError ( Ipv4Address unreachNode,
Ipv4Address destination,
Ipv4Address originalDst,
uint8_t salvage,
uint8_t protocol )

This function is responsible for sending error packets in case of break link to next hop.

Parameters
unreachNodeunreachable node
destinationaddress
originalDstaddress
salvagepacket flag
protocolnumber

When found a route and use it, UseExtends to the link cache

Todo
New DsrNetworkQueueEntry

Definition at line 1334 of file dsr-routing.cc.

References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Create(), ns3::dsr::DSR_CONTROL_PACKET, ns3::dsr::DsrErrorBuffer::Enqueue(), GetIDfromIP(), ns3::Ipv4::GetInterfaceForAddress(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::Ipv4::GetNetDevice(), GetPriority(), ns3::dsr::DsrRouteCacheEntry::GetVector(), m_addressReqTimer, m_errorBuffer, m_ip, m_ipv4Route, m_mainAddress, m_nonPropReqTimer, m_priorityQueue, m_routeCache, m_sendBufferTimeout, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, PacketNewRoute(), ns3::Time::S, Scheduler(), SearchNextHop(), SendErrorRequest(), SendInitialRequest(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrOptionRerrUnreachHeader::SetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::SetErrorSrc(), ns3::dsr::DsrOptionRerrHeader::SetErrorType(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), ns3::dsr::DsrOptionRerrUnreachHeader::SetOriginalDst(), ns3::dsr::DsrFsHeader::SetPayloadLength(), SetRoute(), ns3::dsr::DsrOptionRerrUnreachHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), ns3::dsr::DsrFsHeader::SetSourceId(), and ns3::dsr::DsrOptionRerrUnreachHeader::SetUnreachNode().

Referenced by CancelPacketTimerNextHop().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetDownTarget()

void ns3::dsr::DsrRouting::SetDownTarget ( IpL4Protocol::DownTargetCallback cb)
overridevirtual

This method allows a caller to set the current down target callback set for this L4 protocol (IPv4 case)

Parameters
cbcurrent Callback for the L4 protocol

Implements ns3::IpL4Protocol.

Definition at line 3716 of file dsr-routing.cc.

References m_downTarget.

Referenced by NotifyNewAggregate().

+ Here is the caller graph for this function:

◆ SetDownTarget6()

void ns3::dsr::DsrRouting::SetDownTarget6 ( IpL4Protocol::DownTargetCallback6 cb)
overridevirtual

This method allows a caller to set the current down target callback set for this L4 protocol (IPv6 case)

Parameters
cbcurrent Callback for the L4 protocol

Implements ns3::IpL4Protocol.

Definition at line 3722 of file dsr-routing.cc.

References NS_FATAL_ERROR.

◆ SetNode()

void ns3::dsr::DsrRouting::SetNode ( Ptr< Node > node)

Set the node.

Parameters
nodethe node to set

Definition at line 579 of file dsr-routing.cc.

References m_node.

Referenced by NotifyNewAggregate().

+ Here is the caller graph for this function:

◆ SetPassiveBuffer()

void ns3::dsr::DsrRouting::SetPassiveBuffer ( Ptr< dsr::DsrPassiveBuffer > r)

Set the node.

Parameters
rthe passive buffer to set

Definition at line 620 of file dsr-routing.cc.

References m_passiveBuffer.

Referenced by GetTypeId(), and Start().

+ Here is the caller graph for this function:

◆ SetRequestTable()

void ns3::dsr::DsrRouting::SetRequestTable ( Ptr< dsr::DsrRreqTable > r)

Set the node.

Parameters
rthe request table to set

Definition at line 606 of file dsr-routing.cc.

References m_rreqTable.

Referenced by GetTypeId(), and Start().

+ Here is the caller graph for this function:

◆ SetRoute()

Ptr< Ipv4Route > ns3::dsr::DsrRouting::SetRoute ( Ipv4Address nextHop,
Ipv4Address srcAddress )

Set the route to use for data packets, used by the option headers when sending data/control packets.

Parameters
nextHopnext hop IPv4 address
srcAddressIPv4 address of the source
Returns
the route

Definition at line 780 of file dsr-routing.cc.

References ns3::Create(), m_ipv4Route, and NS_LOG_FUNCTION.

Referenced by CheckSendBuffer(), LinkScheduleTimerExpire(), PacketNewRoute(), PassiveScheduleTimerExpire(), RouteRequestTimerExpire(), SalvagePacket(), SendErrorRequest(), SendGratuitousReply(), SendPacket(), SendPacketFromBuffer(), and SendUnreachError().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetRouteCache()

void ns3::dsr::DsrRouting::SetRouteCache ( Ptr< dsr::DsrRouteCache > r)

Set the route cache.

Parameters
rthe route cache to set

Definition at line 592 of file dsr-routing.cc.

References m_routeCache.

Referenced by GetTypeId(), and Start().

+ Here is the caller graph for this function:

◆ Start()

void ns3::dsr::DsrRouting::Start ( )
private

TODO whether this SendRerrWhenBreaksLinkToNextHop is used or not

Definition at line 423 of file dsr-routing.cc.

References ns3::Time::As(), ns3::CreateObject(), ns3::Ipv4Address::GetBroadcast(), m_broadcast, m_cacheType, m_discoveryHopLimit, m_errorBuffer, m_graReply, m_graReplyTableSize, m_initStability, m_ipv4, m_mainAddress, m_maintainBuffer, m_maxCacheLen, m_maxCacheTime, m_maxEntriesEachDst, m_maxMaintainLen, m_maxMaintainTime, m_maxNetworkDelay, m_maxNetworkSize, m_maxRreqId, m_maxSendBuffLen, m_minLifeTime, m_numPriorityQueues, m_priorityQueue, m_requestTableIds, m_requestTableSize, m_sendBuffer, m_sendBufferTimeout, m_stabilityDecrFactor, m_stabilityIncrFactor, m_subRoute, m_useExtends, ns3::MakeCallback(), NS_ASSERT, NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, PromiscReceive(), ns3::Time::S, ns3::dsr::DsrErrorBuffer::SetErrorBufferTimeout(), ns3::dsr::DsrGraReply::SetGraTableSize(), ns3::dsr::DsrMaintainBuffer::SetMaintainBufferTimeout(), ns3::dsr::DsrErrorBuffer::SetMaxQueueLen(), ns3::dsr::DsrMaintainBuffer::SetMaxQueueLen(), ns3::dsr::DsrSendBuffer::SetMaxQueueLen(), SetPassiveBuffer(), SetRequestTable(), SetRouteCache(), and ns3::dsr::DsrSendBuffer::SetSendBufferTimeout().

Referenced by NotifyNewAggregate().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ UpdateRouteEntry()

bool ns3::dsr::DsrRouting::UpdateRouteEntry ( Ipv4Address dst)

Update route cache entry if it has been recently used and successfully delivered the data packet.

See also DsrRouteCache::UpdateRouteEntry

Parameters
dstdestination address of the route
Returns
true in success

Definition at line 695 of file dsr-routing.cc.

References m_routeCache.

◆ UseExtends()

void ns3::dsr::DsrRouting::UseExtends ( DsrRouteCacheEntry::IP_VECTOR rt)

Extends the lifetime of a route cache entry.

See also DsrRouteCache::UseExtends

Parameters
rtthe route to extend

Definition at line 658 of file dsr-routing.cc.

References m_routeCache.

Member Data Documentation

◆ m_ackId

uint16_t ns3::dsr::DsrRouting::m_ackId
private

The ack id assigned to each acknowledge.

Definition at line 844 of file dsr-routing.h.

Referenced by AddAckReqHeader(), and ForwardPacket().

◆ m_addresses

std::vector<Ipv4Address> ns3::dsr::DsrRouting::m_addresses
private

The bind ipv4 addresses with next hop, src, destination address in sequence.

Definition at line 934 of file dsr-routing.h.

◆ m_addressForwardCnt

std::map<NetworkKey, uint32_t> ns3::dsr::DsrRouting::m_addressForwardCnt
private

◆ m_addressForwardTimer

std::map<NetworkKey, Timer> ns3::dsr::DsrRouting::m_addressForwardTimer
private

Map network key + forward timer.

Definition at line 901 of file dsr-routing.h.

Referenced by CancelNetworkPacketTimer(), IncreaseRetransTimer(), and ScheduleNetworkPacketRetry().

◆ m_addressReqTimer

std::map<Ipv4Address, Timer> ns3::dsr::DsrRouting::m_addressReqTimer
private

Map IP address + RREQ timer.

Definition at line 897 of file dsr-routing.h.

Referenced by CancelRreqTimer(), PacketNewRoute(), ScheduleRreqRetry(), Send(), SendErrorRequest(), and SendUnreachError().

◆ m_blacklistTimeout

Time ns3::dsr::DsrRouting::m_blacklistTimeout
private

The black list time out.

Definition at line 852 of file dsr-routing.h.

Referenced by GetTypeId().

◆ m_broadcast

Ipv4Address ns3::dsr::DsrRouting::m_broadcast
private

The broadcast IP address.

Definition at line 854 of file dsr-routing.h.

Referenced by SendRequest(), and Start().

◆ m_broadcastJitter

uint32_t ns3::dsr::DsrRouting::m_broadcastJitter
private

The max time to delay route request broadcast.

Definition at line 856 of file dsr-routing.h.

Referenced by GetTypeId(), and ScheduleInterRequest().

◆ m_cacheType

std::string ns3::dsr::DsrRouting::m_cacheType
private

The type of route cache.

Definition at line 877 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_clearList

std::vector<Ipv4Address> ns3::dsr::DsrRouting::m_clearList
private

The node that is clear to send packet to.

Definition at line 932 of file dsr-routing.h.

◆ m_discoveryHopLimit

uint32_t ns3::dsr::DsrRouting::m_discoveryHopLimit
private

Maximum hops to go for route request.

Definition at line 797 of file dsr-routing.h.

Referenced by GetTypeId(), RouteRequestTimerExpire(), SendErrorRequest(), and Start().

◆ m_downTarget

◆ m_dropTrace

TracedCallback<Ptr<const Packet> > ns3::dsr::DsrRouting::m_dropTrace
protected

The trace for drop, receive and send data packets.

packet drop trace callback

Definition at line 743 of file dsr-routing.h.

Referenced by GetTypeId(), and Receive().

◆ m_errorBuffer

DsrErrorBuffer ns3::dsr::DsrRouting::m_errorBuffer
private

The error buffer to save the error messages.

Definition at line 826 of file dsr-routing.h.

Referenced by AddRoute(), AddRoute_Link(), SendPacketFromBuffer(), SendUnreachError(), and Start().

◆ m_finalRoute

std::vector<Ipv4Address> ns3::dsr::DsrRouting::m_finalRoute
private

The route cache.

Definition at line 895 of file dsr-routing.h.

Referenced by SendGratuitousReply().

◆ m_graReply

DsrGraReply ns3::dsr::DsrRouting::m_graReply
private

The gratuitous route reply.

Definition at line 928 of file dsr-routing.h.

Referenced by SendGratuitousReply(), and Start().

◆ m_graReplyTableSize

uint32_t ns3::dsr::DsrRouting::m_graReplyTableSize
private

Set the gratuitous reply table size.

Definition at line 875 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_gratReplyHoldoff

Time ns3::dsr::DsrRouting::m_gratReplyHoldoff
private

The max gratuitous reply hold off time.

Definition at line 871 of file dsr-routing.h.

Referenced by GetTypeId(), and SendGratuitousReply().

◆ m_initStability

Time ns3::dsr::DsrRouting::m_initStability
private

The initial stability value for link cache.

Definition at line 885 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_ip

Ptr<Ipv4> ns3::dsr::DsrRouting::m_ip
private

◆ m_ipv4

Ptr<Ipv4L3Protocol> ns3::dsr::DsrRouting::m_ipv4
private

Ipv4l3Protocol.

Definition at line 779 of file dsr-routing.h.

Referenced by DoDispose(), NotifyNewAggregate(), PromiscReceive(), SendReply(), and Start().

◆ m_ipv4Route

Ptr<Ipv4Route> ns3::dsr::DsrRouting::m_ipv4Route
private

◆ m_linkAck

bool ns3::dsr::DsrRouting::m_linkAck
private

define if we use link acknowledgement or not

Definition at line 924 of file dsr-routing.h.

Referenced by CheckSendBuffer(), ForwardPacket(), GetTypeId(), PacketNewRoute(), Send(), and SendPacketFromBuffer().

◆ m_linkAckTimeout

Time ns3::dsr::DsrRouting::m_linkAckTimeout
private

The timeout value for link acknowledge.

Definition at line 863 of file dsr-routing.h.

Referenced by GetTypeId(), and ScheduleLinkPacketRetry().

◆ m_linkAckTimer

std::map<LinkKey, Timer> ns3::dsr::DsrRouting::m_linkAckTimer
private

The timer for link acknowledgment.

Definition at line 911 of file dsr-routing.h.

Referenced by CancelLinkPacketTimer(), LinkScheduleTimerExpire(), and ScheduleLinkPacketRetry().

◆ m_linkCnt

std::map<LinkKey, uint32_t> ns3::dsr::DsrRouting::m_linkCnt
private

Map packet key + link forward counts.

Definition at line 909 of file dsr-routing.h.

Referenced by CancelLinkPacketTimer(), CheckSendBuffer(), ForwardPacket(), LinkScheduleTimerExpire(), PacketNewRoute(), Send(), and SendPacketFromBuffer().

◆ m_linkRetries

uint32_t ns3::dsr::DsrRouting::m_linkRetries
private

of retries have been sent for link acknowledgment

Definition at line 809 of file dsr-routing.h.

Referenced by LinkScheduleTimerExpire().

◆ m_macToNodeIdMap

std::map<std::string, uint32_t> ns3::dsr::DsrRouting::m_macToNodeIdMap
private

The map of mac address to node id.

Definition at line 937 of file dsr-routing.h.

◆ m_mainAddress

◆ m_maintainBuffer

◆ m_maxCacheLen

uint32_t ns3::dsr::DsrRouting::m_maxCacheLen
private

Max # of cache entries for route cache.

Definition at line 832 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_maxCacheTime

Time ns3::dsr::DsrRouting::m_maxCacheTime
private

Max time for caching the route cache entry.

Definition at line 834 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_maxEntriesEachDst

uint32_t ns3::dsr::DsrRouting::m_maxEntriesEachDst
private

Max number of route entries to save for each destination.

Definition at line 838 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_maxMaintainLen

uint32_t ns3::dsr::DsrRouting::m_maxMaintainLen
private

Max # of entries for maintenance buffer.

Definition at line 828 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_maxMaintainTime

Time ns3::dsr::DsrRouting::m_maxMaintainTime
private

◆ m_maxMaintRexmt

uint32_t ns3::dsr::DsrRouting::m_maxMaintRexmt
private

Maximum number of retransmissions of data packets.

Definition at line 814 of file dsr-routing.h.

Referenced by GetTypeId(), and NetworkScheduleTimerExpire().

◆ m_maxNetworkDelay

Time ns3::dsr::DsrRouting::m_maxNetworkDelay
private

Maximum network delay.

Definition at line 795 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_maxNetworkSize

uint32_t ns3::dsr::DsrRouting::m_maxNetworkSize
private

Maximum network queue size.

Definition at line 793 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_maxRequestPeriod

Time ns3::dsr::DsrRouting::m_maxRequestPeriod
private

The max request period.

Definition at line 873 of file dsr-routing.h.

Referenced by GetTypeId(), and ScheduleRreqRetry().

◆ m_maxRreqId

uint32_t ns3::dsr::DsrRouting::m_maxRreqId
private

The max number of request ids for a single destination.

Definition at line 850 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_maxRreqTime

Time ns3::dsr::DsrRouting::m_maxRreqTime
private

Max time for caching the route request entry.

Definition at line 836 of file dsr-routing.h.

◆ m_maxSalvageCount

uint8_t ns3::dsr::DsrRouting::m_maxSalvageCount
private

Maximum # times to salvage a packet.

Definition at line 799 of file dsr-routing.h.

Referenced by GetTypeId(), and SalvagePacket().

◆ m_maxSendBuffLen

uint32_t ns3::dsr::DsrRouting::m_maxSendBuffLen
private

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

Definition at line 818 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_minLifeTime

Time ns3::dsr::DsrRouting::m_minLifeTime
private

The min life time.

Definition at line 887 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_networkQueue

DsrNetworkQueue ns3::dsr::DsrRouting::m_networkQueue
private

The network queue.

Definition at line 930 of file dsr-routing.h.

◆ m_node

Ptr<Node> ns3::dsr::DsrRouting::m_node
private

The node ptr.

Definition at line 785 of file dsr-routing.h.

Referenced by DoDispose(), GetNode(), NotifyNewAggregate(), Receive(), and SetNode().

◆ m_nodeTraversalTime

Time ns3::dsr::DsrRouting::m_nodeTraversalTime
private

Time estimated for packet to travel between two nodes.

Definition at line 816 of file dsr-routing.h.

Referenced by GetTypeId(), ScheduleCachedReply(), and ScheduleNetworkPacketRetry().

◆ m_nonPropReqTimer

std::map<Ipv4Address, Timer> ns3::dsr::DsrRouting::m_nonPropReqTimer
private

Map IP address + RREQ timer.

Definition at line 899 of file dsr-routing.h.

Referenced by CancelRreqTimer(), PacketNewRoute(), ScheduleRreqRetry(), Send(), SendErrorRequest(), and SendUnreachError().

◆ m_nonpropRequestTimeout

Time ns3::dsr::DsrRouting::m_nonpropRequestTimeout
private

The non-propagation request timeout.

Definition at line 803 of file dsr-routing.h.

Referenced by GetTypeId(), and ScheduleRreqRetry().

◆ m_numPriorityQueues

uint32_t ns3::dsr::DsrRouting::m_numPriorityQueues
private

The number of priority queues used.

Definition at line 922 of file dsr-routing.h.

Referenced by GetTypeId(), PriorityScheduler(), and Start().

◆ m_options

DsrOptionList_t ns3::dsr::DsrRouting::m_options
private

List of DSR Options supported.

Definition at line 777 of file dsr-routing.h.

Referenced by GetOption(), and Insert().

◆ m_passiveAckTimeout

Time ns3::dsr::DsrRouting::m_passiveAckTimeout
private

The timeout value for passive acknowledge.

Definition at line 858 of file dsr-routing.h.

Referenced by GetTypeId(), and SchedulePassivePacketRetry().

◆ m_passiveAckTimer

std::map<PassiveKey, Timer> ns3::dsr::DsrRouting::m_passiveAckTimer
private

The timer for passive acknowledgment.

Definition at line 907 of file dsr-routing.h.

Referenced by CancelPassivePacketTimer(), PassiveScheduleTimerExpire(), and SchedulePassivePacketRetry().

◆ m_passiveBuffer

Ptr<dsr::DsrPassiveBuffer> ns3::dsr::DsrRouting::m_passiveBuffer
private

A "drop-front" queue used by the routing layer to cache route request sent.

Definition at line 919 of file dsr-routing.h.

Referenced by GetPassiveBuffer(), PassiveEntryCheck(), and SetPassiveBuffer().

◆ m_passiveCnt

std::map<PassiveKey, uint32_t> ns3::dsr::DsrRouting::m_passiveCnt
private

Map packet key + passive forward counts.

Definition at line 905 of file dsr-routing.h.

Referenced by CancelPassivePacketTimer(), CheckSendBuffer(), ForwardPacket(), PacketNewRoute(), PassiveScheduleTimerExpire(), Send(), and SendPacketFromBuffer().

◆ m_passiveRetries

uint32_t ns3::dsr::DsrRouting::m_passiveRetries
private

of retries have been sent for passive acknowledgment

Definition at line 807 of file dsr-routing.h.

Referenced by PassiveScheduleTimerExpire().

◆ m_priorityQueue

◆ m_requestId

uint32_t ns3::dsr::DsrRouting::m_requestId
private

The id assigned to each route request.

Definition at line 842 of file dsr-routing.h.

Referenced by SendErrorRequest(), and SendInitialRequest().

◆ m_requestPeriod

Time ns3::dsr::DsrRouting::m_requestPeriod
private

The base time interval between route requests.

Definition at line 801 of file dsr-routing.h.

Referenced by GetTypeId(), and ScheduleRreqRetry().

◆ m_requestTableIds

uint32_t ns3::dsr::DsrRouting::m_requestTableIds
private

The request table identifiers.

Definition at line 848 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_requestTableSize

uint32_t ns3::dsr::DsrRouting::m_requestTableSize
private

The max size of the request table size.

Definition at line 846 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_retransIncr

Time ns3::dsr::DsrRouting::m_retransIncr
private

the increase time for retransmission timer when face network congestion

Definition at line 893 of file dsr-routing.h.

Referenced by GetTypeId(), and IncreaseRetransTimer().

◆ m_routeCache

◆ m_routeSortType

std::string ns3::dsr::DsrRouting::m_routeSortType
private

The type of route sort methods.

Definition at line 879 of file dsr-routing.h.

◆ m_rreqRetries

uint32_t ns3::dsr::DsrRouting::m_rreqRetries
private

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

Definition at line 811 of file dsr-routing.h.

Referenced by GetTypeId(), and RouteRequestTimerExpire().

◆ m_rreqTable

Ptr<dsr::DsrRreqTable> ns3::dsr::DsrRouting::m_rreqTable
private

A "drop-front" queue used by the routing layer to cache route request sent.

Definition at line 916 of file dsr-routing.h.

Referenced by CancelRreqTimer(), FindSourceEntry(), GetRequestTable(), Receive(), RouteRequestTimerExpire(), ScheduleRreqRetry(), Send(), SendErrorRequest(), SendInitialRequest(), and SetRequestTable().

◆ m_sendBuffer

DsrSendBuffer ns3::dsr::DsrRouting::m_sendBuffer
private

◆ m_sendBufferTimeout

Time ns3::dsr::DsrRouting::m_sendBufferTimeout
private

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

Definition at line 821 of file dsr-routing.h.

Referenced by GetTypeId(), PacketNewRoute(), Send(), SendUnreachError(), and Start().

◆ m_sendBuffInterval

Time ns3::dsr::DsrRouting::m_sendBuffInterval
private

how often to check send buffer

Definition at line 869 of file dsr-routing.h.

Referenced by CheckSendBuffer(), GetTypeId(), and SendBuffTimerExpire().

◆ m_sendBuffTimer

Timer ns3::dsr::DsrRouting::m_sendBuffTimer
private

The send buffer timer.

Definition at line 867 of file dsr-routing.h.

Referenced by DsrRouting(), CheckSendBuffer(), and SendBuffTimerExpire().

◆ m_sendRetries

uint32_t ns3::dsr::DsrRouting::m_sendRetries
private

of retries have been sent for network acknowledgment

Definition at line 805 of file dsr-routing.h.

Referenced by NetworkScheduleTimerExpire(), and ScheduleNetworkPacketRetry().

◆ m_stabilityDecrFactor

uint32_t ns3::dsr::DsrRouting::m_stabilityDecrFactor
private

The initial decrease factor for link cache.

Definition at line 881 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_stabilityIncrFactor

uint32_t ns3::dsr::DsrRouting::m_stabilityIncrFactor
private

The initial increase factor for link cache.

Definition at line 883 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_subRoute

bool ns3::dsr::DsrRouting::m_subRoute
private

Whether to save sub route or not.

Definition at line 891 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ m_tryLinkAcks

uint32_t ns3::dsr::DsrRouting::m_tryLinkAcks
private

Maximum number of packet transmission using link acknowledgment.

Definition at line 865 of file dsr-routing.h.

Referenced by GetTypeId(), and LinkScheduleTimerExpire().

◆ m_tryPassiveAcks

uint32_t ns3::dsr::DsrRouting::m_tryPassiveAcks
private

Maximum number of packet transmission using passive acknowledgment.

Definition at line 861 of file dsr-routing.h.

Referenced by GetTypeId(), and PassiveScheduleTimerExpire().

◆ m_txPacketTrace

TracedCallback<const DsrOptionSRHeader&> ns3::dsr::DsrRouting::m_txPacketTrace
protected

packet trace callback

Definition at line 744 of file dsr-routing.h.

Referenced by GetTypeId().

◆ m_uniformRandomVariable

Ptr<UniformRandomVariable> ns3::dsr::DsrRouting::m_uniformRandomVariable
private

◆ m_useExtends

Time ns3::dsr::DsrRouting::m_useExtends
private

The use extension of the life time for link cache.

Definition at line 889 of file dsr-routing.h.

Referenced by GetTypeId(), and Start().

◆ PROT_NUMBER

const uint8_t ns3::dsr::DsrRouting::PROT_NUMBER = 48
static

Define the dsr protocol number.

Definition at line 97 of file dsr-routing.h.

Referenced by GetProtocolNumber(), and PromiscReceive().

◆ segsLeft

uint8_t ns3::dsr::DsrRouting::segsLeft
private

The segment left value from SR header.

Definition at line 789 of file dsr-routing.h.

Referenced by CancelPassiveTimer(), and PassiveEntryCheck().


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