Doxygen introspection did not find any typical Config paths. More...
#include <dsr-routing.h>
Public Member Functions | |
DsrRouting () | |
Constructor. More... | |
virtual | ~DsrRouting () |
Destructor. More... | |
uint16_t | AddAckReqHeader (Ptr< Packet > &packet, Ipv4Address nextHop) |
This function is called to add ack request header for network acknowledgement. More... | |
int64_t | AssignStreams (int64_t stream) |
Assign a fixed random variable stream number to the random variables used by this model. More... | |
void | CallCancelPacketTimer (uint16_t ackId, Ipv4Header const &ipv4Header, Ipv4Address realSrc, Ipv4Address realDst) |
Call the cancel packet retransmission timer function. More... | |
void | CancelLinkPacketTimer (MaintainBuffEntry &mb) |
Cancel the link packet retransmission timer for a specific maintenance entry. More... | |
void | CancelNetworkPacketTimer (MaintainBuffEntry &mb) |
Cancel the network packet retransmission timer for a specific maintenance entry. More... | |
void | CancelPacketTimerNextHop (Ipv4Address nextHop, uint8_t protocol) |
Cancel the packet retransmission timer for a all maintenance entries with nextHop address. More... | |
void | CancelPassivePacketTimer (MaintainBuffEntry &mb) |
Cancel the passive packet retransmission timer for a specific maintenance entry. More... | |
bool | CancelPassiveTimer (Ptr< Packet > packet, Ipv4Address source, Ipv4Address destination, uint8_t segsLeft) |
Cancel the passive timer. More... | |
void | CancelRreqTimer (Ipv4Address dst, bool isRemove) |
Cancel the route request timer. More... | |
void | CheckSendBuffer () |
Check the send buffer of packets with route when send buffer timer expire. More... | |
void | ConnectCallbacks () |
Connect the callback for the tracing event. More... | |
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. More... | |
void | ForwardPacket (Ptr< const Packet > packet, DsrOptionSRHeader &sourceRoute, Ipv4Header const &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. More... | |
IpL4Protocol::DownTargetCallback | GetDownTarget (void) const |
This method allows a caller to get the current down target callback set for this L4 protocol (IPv4 case) More... | |
IpL4Protocol::DownTargetCallback6 | GetDownTarget6 (void) const |
This method allows a caller to get the current down target callback set for this L4 protocol (IPv6 case) More... | |
std::vector< std::string > | GetElementsFromContext (std::string context) |
Get the elements from the tracing context. More... | |
uint16_t | GetIDfromIP (Ipv4Address address) |
Get the node id from ip address. More... | |
Ipv4Address | GetIPfromID (uint16_t id) |
Get the ip address from id. More... | |
Ipv4Address | GetIPfromMAC (Mac48Address address) |
Get the Ip address from mac address. More... | |
Ptr< NetDevice > | GetNetDeviceFromContext (std::string context) |
Get the netdevice from the context. More... | |
Ptr< Node > | GetNode () const |
Get the node. More... | |
Ptr< Node > | GetNodeWithAddress (Ipv4Address ipv4Address) |
Get the node with give ip address. More... | |
Ptr< dsr::DsrOptions > | GetOption (int optionNumber) |
Get the option corresponding to optionNumber. More... | |
Ptr< dsr::PassiveBuffer > | GetPassiveBuffer () const |
Get the passive buffer. More... | |
uint32_t | GetPriority (DsrMessageType messageType) |
Set the priority of the packet in network queue. More... | |
int | GetProtocolNumber (void) const |
Get the dsr protocol number. More... | |
Ptr< dsr::RreqTable > | GetRequestTable () const |
Get the request table. More... | |
Ptr< dsr::RouteCache > | GetRouteCache () const |
Get the route cache. More... | |
void | IncreaseRetransTimer () |
This function is called to increase the retransmission timer for data packet in the network queue. More... | |
void | Insert (Ptr< dsr::DsrOptions > option) |
Insert a new Dsr Option. More... | |
void | LinkScheduleTimerExpire (MaintainBuffEntry &mb, uint8_t protocol) |
This function deals with packet retransmission timer expire using link acknowledgment. More... | |
void | NetworkScheduleTimerExpire (MaintainBuffEntry &mb, uint8_t protocol) |
This function deals with packet retransmission timer expire using network acknowledgment. More... | |
void | PacketNewRoute (Ptr< Packet > packet, Ipv4Address source, Ipv4Address destination, uint8_t protocol) |
When route vector corrupted, originate a new packet, normally not happening. More... | |
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. More... | |
void | PassiveScheduleTimerExpire (MaintainBuffEntry &mb, uint8_t protocol) |
This function deals with packet retransmission timer expire using passive acknowledgment. More... | |
void | PrintVector (std::vector< Ipv4Address > &vec) |
Print the route vector. More... | |
void | PriorityScheduler (uint32_t priority, bool continueWithFirst) |
This function is called to schedule sending packets from the network queue by priority. More... | |
uint8_t | Process (Ptr< Packet > &packet, Ipv4Header const &ipv4Header, Ipv4Address dst, uint8_t *nextHeader, uint8_t protocol, bool &isDropped) |
Process method Called from Ipv4L3Protocol::Receive. More... | |
virtual enum IpL4Protocol::RxStatus | Receive (Ptr< Packet > p, Ipv6Header const &header, Ptr< Ipv6Interface > incomingInterface) |
virtual enum IpL4Protocol::RxStatus | Receive (Ptr< Packet > p, Ipv4Header const &header, Ptr< Ipv4Interface > incomingInterface) |
void | RouteRequestTimerExpire (Ptr< Packet > packet, std::vector< Ipv4Address > address, uint32_t requestId, uint8_t protocol) |
Handle route discovery timer. More... | |
void | SalvagePacket (Ptr< const Packet > packet, Ipv4Address source, Ipv4Address dst, uint8_t protocol) |
Salvage the packet which has been transmitted for 3 times. More... | |
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. More... | |
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 More... | |
void | ScheduleInterRequest (Ptr< Packet > packet) |
Schedule the intermediate route request. More... | |
void | ScheduleLinkPacketRetry (MaintainBuffEntry &mb, uint8_t protocol) |
Schedule the packet retransmission based on link-layer acknowledgment. More... | |
void | ScheduleNetworkPacketRetry (MaintainBuffEntry &mb, bool isFirst, uint8_t protocol) |
Schedule the packet retransmission based on network layer acknowledgment. More... | |
void | SchedulePassivePacketRetry (MaintainBuffEntry &mb, uint8_t protocol) |
Schedule the packet retransmission based on passive acknowledgment. More... | |
void | Scheduler (uint32_t priority) |
This function is called to schedule sending packets from the network queue. More... | |
void | ScheduleRreqRetry (Ptr< Packet > packet, std::vector< Ipv4Address > address, bool nonProp, uint32_t requestId, uint8_t protocol) |
Schedule the route request retry. More... | |
Ipv4Address | SearchNextHop (Ipv4Address ipv4Address, std::vector< Ipv4Address > &vec) |
Get the next hop of the route. More... | |
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. More... | |
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. More... | |
void | SendBuffTimerExpire () |
The send buffer timer expire. More... | |
void | SendErrorRequest (DsrOptionRerrUnreachHeader &rerr, uint8_t protocol) |
Send the error request packet. More... | |
void | SendGratuitousReply (Ipv4Address replyTo, Ipv4Address replyFrom, std::vector< Ipv4Address > &nodeList, uint8_t protocol) |
Send the gratuitous reply. More... | |
void | SendInitialRequest (Ipv4Address source, Ipv4Address destination, uint8_t protocol) |
Broadcast the route request packet in subnet. More... | |
void | SendPacket (Ptr< Packet > packet, Ipv4Address source, Ipv4Address nextHop, uint8_t protocol) |
This function is called by when really sending out the packet. More... | |
void | SendPacketFromBuffer (DsrOptionSRHeader const &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. More... | |
bool | SendRealDown (DsrNetworkQueueEntry &newEntry) |
This function is called to send packets down stack. More... | |
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. More... | |
void | SendRequest (Ptr< Packet > packet, Ipv4Address source) |
Forward the route request if the node is not the destination. More... | |
void | SendUnreachError (Ipv4Address errorHop, 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. More... | |
void | SetDownTarget (IpL4Protocol::DownTargetCallback callback) |
This method allows a caller to set the current down target callback set for this L4 protocol (IPv4 case) More... | |
void | SetDownTarget6 (IpL4Protocol::DownTargetCallback6 callback) |
This method allows a caller to set the current down target callback set for this L4 protocol (IPv6 case) More... | |
void | SetNode (Ptr< Node > node) |
Set the node. More... | |
void | SetPassiveBuffer (Ptr< dsr::PassiveBuffer > r) |
Set the node. More... | |
void | SetRequestTable (Ptr< dsr::RreqTable > r) |
Set the node. More... | |
Ptr< Ipv4Route > | SetRoute (Ipv4Address nextHop, Ipv4Address srcAddress) |
Set the route to use for data packets, used by the option headers when sending data/control packets. More... | |
void | SetRouteCache (Ptr< dsr::RouteCache > r) |
Set the route cache. More... | |
bool | IsLinkCache () |
functions used to direct to route cache More... | |
void | UseExtends (RouteCacheEntry::IP_VECTOR rt) |
functions used to direct to route cache More... | |
bool | LookupRoute (Ipv4Address id, RouteCacheEntry &rt) |
functions used to direct to route cache More... | |
bool | AddRoute_Link (RouteCacheEntry::IP_VECTOR nodelist, Ipv4Address source) |
functions used to direct to route cache More... | |
bool | AddRoute (RouteCacheEntry &rt) |
functions used to direct to route cache More... | |
void | DeleteAllRoutesIncludeLink (Ipv4Address errorSrc, Ipv4Address unreachNode, Ipv4Address node) |
functions used to direct to route cache More... | |
bool | UpdateRouteEntry (Ipv4Address dst) |
functions used to direct to route cache More... | |
bool | FindSourceEntry (Ipv4Address src, Ipv4Address dst, uint16_t id) |
functions used to direct to route cache More... | |
Public Member Functions inherited from ns3::IpL4Protocol | |
virtual | ~IpL4Protocol () |
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. More... | |
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. More... | |
Public Member Functions inherited from ns3::Object | |
Object () | |
virtual | ~Object () |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
Run the DoDispose methods of this object and all the objects aggregated to it. More... | |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
This method calls the virtual DoInitialize method on all the objects aggregated to this object. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Get the type identificator. More... | |
Static Public Member Functions inherited from ns3::IpL4Protocol | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
static void | Cleanup (void) |
Noop. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Static Public Attributes | |
static const uint8_t | PROT_NUMBER = 48 |
Define the dsr protocol number. More... | |
Protected Member Functions | |
virtual void | DoDispose (void) |
Drop trace callback. More... | |
virtual void | NotifyNewAggregate () |
This method is invoked whenever two sets of objects are aggregated together. More... | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
virtual void | DoInitialize (void) |
This method is called only once by Object::Initialize. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
This method is invoked once all member attributes have been initialized. More... | |
Protected Attributes | |
TracedCallback< Ptr< const Packet > > | m_dropTrace |
The trace for drop, receive and send data packets. More... | |
TracedCallback< const DsrOptionSRHeader & > | m_txPacketTrace |
Private Types | |
typedef std::list< Ptr < DsrOptions > > | DsrOptionList_t |
Define the list to hold DSR options. More... | |
Private Member Functions | |
void | NotifyDataReceipt (std::string context, Ptr< const Packet > p) |
Notify the data receipt. More... | |
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. More... | |
void | SendRerrWhenBreaksLinkToNextHop (Ipv4Address nextHop, uint8_t protocol) |
Send the route error message when the link breaks to the next hop. More... | |
void | Start () |
Private Attributes | |
uint16_t | m_ackId |
The ack id assigned to each acknowledge. More... | |
std::vector< Ipv4Address > | m_addresses |
The bind ipv4 addresses with next hop, src, destination address in sequence. More... | |
std::map< NetworkKey, uint32_t > | m_addressForwardCnt |
Map network key + forward counts. More... | |
std::map< NetworkKey, Timer > | m_addressForwardTimer |
Map network key + forward timer. More... | |
std::map< Ipv4Address, Timer > | m_addressReqTimer |
Map IP address + RREQ timer. More... | |
Time | m_blacklistTimeout |
The black list time out. More... | |
Ipv4Address | m_broadcast |
The broadcast IP address. More... | |
uint32_t | m_broadcastJitter |
The max time to delay route request broadcast. More... | |
std::string | m_cacheType |
The type of route cache. More... | |
std::vector< Ipv4Address > | m_clearList |
The node that is clear to send packet to. More... | |
uint32_t | m_discoveryHopLimit |
Maximum hops to go for route request. More... | |
IpL4Protocol::DownTargetCallback | m_downTarget |
The callback for down layer. More... | |
ErrorBuffer | m_errorBuffer |
The error buffer to save the error messages. More... | |
std::vector< Ipv4Address > | m_finalRoute |
The route cache. More... | |
GraReply | m_graReply |
The gratuitous route reply. More... | |
uint32_t | m_graReplyTableSize |
Set the gratuitous reply table size. More... | |
Time | m_gratReplyHoldoff |
The max gratuitous reply hold off time. More... | |
Time | m_initStability |
The initial stability value for link cache. More... | |
Ptr< Ipv4 > | m_ip |
The ip ptr. More... | |
Ptr< Ipv4L3Protocol > | m_ipv4 |
Ipv4l3Protocol. More... | |
Ptr< Ipv4Route > | m_ipv4Route |
Ipv4 Route. More... | |
bool | m_linkAck |
define if we use link acknowledgement or not More... | |
Time | m_linkAckTimeout |
The timeout value for link acknowledge. More... | |
std::map< LinkKey, Timer > | m_linkAckTimer |
The timer for link acknowledgment. More... | |
std::map< LinkKey, uint32_t > | m_linkCnt |
Map packet key + link forward counts. More... | |
uint32_t | m_linkRetries |
of retries have been sent for link acknowledgmentMore... | |
std::map< std::string, uint32_t > | m_macToNodeIdMap |
The map of mac address to node id. More... | |
Ipv4Address | m_mainAddress |
Our own Ip address. More... | |
MaintainBuffer | m_maintainBuffer |
The declaration of maintain buffer. More... | |
uint32_t | m_maxCacheLen |
Max # of cache entries for route cache. More... | |
Time | m_maxCacheTime |
Max time for caching the route cache entry. More... | |
uint32_t | m_maxEntriesEachDst |
Max number of route entries to save for each destination. More... | |
uint32_t | m_maxMaintainLen |
Max # of entries for maintainance buffer. More... | |
Time | m_maxMaintainTime |
Time out for maintainance buffer. More... | |
uint32_t | m_maxMaintRexmt |
Maximum number of retransmissions of data packets. More... | |
Time | m_maxNetworkDelay |
Maximum network delay. More... | |
uint32_t | m_maxNetworkSize |
Maximum network queue size. More... | |
Time | m_maxRequestPeriod |
The max request period. More... | |
uint32_t | m_maxRreqId |
The max number of request ids for a single destination. More... | |
Time | m_maxRreqTime |
Max time for caching the route request entry. More... | |
uint8_t | m_maxSalvageCount |
Maximum # times to salvage a packet. More... | |
uint32_t | m_maxSendBuffLen |
The maximum number of packets that we allow a routing protocol to buffer. More... | |
Time | m_minLifeTime |
The min life time. More... | |
Ptr< Node > | m_node |
The node ptr. More... | |
Time | m_nodeTraversalTime |
Time estimated for packet to travel between two nodes. More... | |
std::map< Ipv4Address, Timer > | m_nonPropReqTimer |
Map IP address + RREQ timer. More... | |
Time | m_nonpropRequestTimeout |
The non-propagation request timeout. More... | |
uint32_t | m_numPriorityQueues |
The number of priority queues used. More... | |
DsrOptionList_t | m_options |
List of DSR Options supported. More... | |
Time | m_passiveAckTimeout |
The timeout value for passive acknowledge. More... | |
std::map< PassiveKey, Timer > | m_passiveAckTimer |
The timer for passive acknowledgment. More... | |
Ptr< dsr::PassiveBuffer > | m_passiveBuffer |
A "drop-front" queue used by the routing layer to cache route request sent. More... | |
std::map< PassiveKey, uint32_t > | m_passiveCnt |
Map packet key + passive forward counts. More... | |
uint32_t | m_passiveRetries |
of retries have been sent for passive acknowledgmentMore... | |
std::map< uint32_t, Ptr < dsr::DsrNetworkQueue > > | m_priorityQueue |
priority queues More... | |
uint32_t | m_requestId |
The id assigned to each route request. More... | |
Time | m_requestPeriod |
The base time interval between route requests. More... | |
uint32_t | m_requestTableIds |
The request table identifiers. More... | |
uint32_t | m_requestTableSize |
The max size of the request table size. More... | |
Time | m_retransIncr |
the increase time for retransmission timer when face network congestion More... | |
Ptr< dsr::RouteCache > | m_routeCache |
A "drop-front" queue used by the routing layer to cache routes found. More... | |
std::string | m_routeSortType |
The type of route sort methods. More... | |
uint32_t | m_rreqRetries |
Maximum number of retransmissions of RREQ with TTL = NetDiameter to discover a route. More... | |
Ptr< dsr::RreqTable > | m_rreqTable |
A "drop-front" queue used by the routing layer to cache route request sent. More... | |
SendBuffer | m_sendBuffer |
The send buffer. More... | |
Time | m_sendBufferTimeout |
The maximum period of time that a routing protocol is allowed to buffer a packet for. More... | |
Time | m_sendBuffInterval |
how often to check send buffer More... | |
Timer | m_sendBuffTimer |
The send buffer timer. More... | |
uint32_t | m_sendRetries |
of retries have been sent for network acknowledgmentMore... | |
uint32_t | m_stabilityDecrFactor |
The initial decrease factor for link cache. More... | |
uint32_t | m_stabilityIncrFactor |
The initial increase factor for link cache. More... | |
bool | m_subRoute |
Whether to save sub route or not. More... | |
uint32_t | m_tryLinkAcks |
Maximum number of packet transmission using link acknowledgment. More... | |
uint32_t | m_tryPassiveAcks |
Maximum number of packet transmission using passive acknowledgment. More... | |
Ptr< UniformRandomVariable > | m_uniformRandomVariable |
Provides uniform random variables. More... | |
Time | m_useExtends |
The use extension of the life time for link cache. More... | |
uint8_t | segsLeft |
The segment left value from SR header. More... | |
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 More... | |
typedef Callback< void, Ptr < Packet >, Ipv6Address, Ipv6Address, uint8_t, Ptr < Ipv6Route > > | DownTargetCallback6 |
callback to send packets over IPv6 More... | |
enum | RxStatus { RX_OK, RX_CSUM_FAILED, RX_ENDPOINT_CLOSED, RX_ENDPOINT_UNREACH } |
Rx status codes. More... | |
Doxygen introspection did not find any typical Config paths.
Dsr Routing base.
Definition at line 95 of file dsr-routing.h.
|
private |
Define the list to hold DSR options.
Definition at line 605 of file dsr-routing.h.
ns3::dsr::DsrRouting::DsrRouting | ( | ) |
Constructor.
Definition at line 290 of file dsr-routing.cc.
References Insert(), m_sendBuffTimer, m_uniformRandomVariable, NS_LOG_FUNCTION_NOARGS, ns3::Timer::Schedule(), SendBuffTimerExpire(), and ns3::Timer::SetFunction().
|
virtual |
uint16_t ns3::dsr::DsrRouting::AddAckReqHeader | ( | Ptr< Packet > & | packet, |
Ipv4Address | nextHop | ||
) |
This function is called to add ack request header for network acknowledgement.
Definition at line 1679 of file dsr-routing.cc.
References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Packet::AddHeader(), ns3::Packet::Copy(), ns3::Packet::CopyData(), 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::Packet::RemoveAtStart(), ns3::Packet::RemoveHeader(), 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().
bool ns3::dsr::DsrRouting::AddRoute | ( | RouteCacheEntry & | rt | ) |
functions used to direct to route cache
Definition at line 688 of file dsr-routing.cc.
References ns3::dsr::ErrorBuffer::DropPacketForErrLink(), ns3::dsr::RouteCacheEntry::GetVector(), m_errorBuffer, m_mainAddress, m_routeCache, and SearchNextHop().
bool ns3::dsr::DsrRouting::AddRoute_Link | ( | RouteCacheEntry::IP_VECTOR | nodelist, |
Ipv4Address | source | ||
) |
functions used to direct to route cache
Definition at line 681 of file dsr-routing.cc.
References ns3::dsr::ErrorBuffer::DropPacketForErrLink(), m_errorBuffer, m_routeCache, and SearchNextHop().
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.
stream | first stream index to use |
Definition at line 2709 of file dsr-routing.cc.
References m_uniformRandomVariable, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().
void ns3::dsr::DsrRouting::CallCancelPacketTimer | ( | uint16_t | ackId, |
Ipv4Header const & | ipv4Header, | ||
Ipv4Address | realSrc, | ||
Ipv4Address | realDst | ||
) |
Call the cancel packet retransmission timer function.
Definition at line 2190 of file dsr-routing.cc.
References CancelNetworkPacketTimer(), ns3::Ipv4Header::GetDestination(), ns3::Ipv4Header::GetSource(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.
void ns3::dsr::DsrRouting::CancelLinkPacketTimer | ( | MaintainBuffEntry & | mb | ) |
Cancel the link packet retransmission timer for a specific maintenance entry.
Definition at line 2141 of file dsr-routing.cc.
References ns3::dsr::MaintainBuffEntry::GetDst(), ns3::dsr::MaintainBuffEntry::GetNextHop(), ns3::dsr::MaintainBuffEntry::GetOurAdd(), ns3::dsr::MaintainBuffer::GetSize(), ns3::dsr::MaintainBuffEntry::GetSrc(), ns3::dsr::MaintainBuffer::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.
void ns3::dsr::DsrRouting::CancelNetworkPacketTimer | ( | MaintainBuffEntry & | mb | ) |
Cancel the network packet retransmission timer for a specific maintenance entry.
Definition at line 2207 of file dsr-routing.cc.
References ns3::dsr::MaintainBuffEntry::GetAckId(), ns3::dsr::MaintainBuffEntry::GetDst(), ns3::dsr::MaintainBuffEntry::GetNextHop(), ns3::dsr::MaintainBuffEntry::GetOurAdd(), ns3::dsr::MaintainBuffEntry::GetSegsLeft(), ns3::dsr::MaintainBuffEntry::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::MaintainBuffer::NetworkEqual(), NS_LOG_FUNCTION, and NS_LOG_INFO.
Referenced by CallCancelPacketTimer(), and CancelPacketTimerNextHop().
void ns3::dsr::DsrRouting::CancelPacketTimerNextHop | ( | Ipv4Address | nextHop, |
uint8_t | protocol | ||
) |
Cancel the packet retransmission timer for a all maintenance entries with nextHop address.
Definition at line 2293 of file dsr-routing.cc.
References CancelNetworkPacketTimer(), ns3::Packet::Copy(), ns3::dsr::MaintainBuffer::Dequeue(), ns3::dsr::MaintainBuffer::Find(), ns3::dsr::MaintainBuffEntry::GetDst(), ns3::UniformRandomVariable::GetInteger(), ns3::dsr::MaintainBuffEntry::GetPacket(), ns3::dsr::MaintainBuffer::GetSize(), ns3::dsr::MaintainBuffEntry::GetSrc(), m_maintainBuffer, m_uniformRandomVariable, NS_LOG_FUNCTION, NS_LOG_INFO, SalvagePacket(), and ns3::Simulator::Schedule().
Referenced by LinkScheduleTimerExpire(), and NetworkScheduleTimerExpire().
void ns3::dsr::DsrRouting::CancelPassivePacketTimer | ( | MaintainBuffEntry & | mb | ) |
Cancel the passive packet retransmission timer for a specific maintenance entry.
Definition at line 2257 of file dsr-routing.cc.
References ns3::dsr::MaintainBuffEntry::GetDst(), ns3::dsr::MaintainBuffEntry::GetSegsLeft(), ns3::dsr::MaintainBuffEntry::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 CancelPassiveTimer(), PassiveEntryCheck(), and PassiveScheduleTimerExpire().
bool ns3::dsr::DsrRouting::CancelPassiveTimer | ( | Ptr< Packet > | packet, |
Ipv4Address | source, | ||
Ipv4Address | destination, | ||
uint8_t | segsLeft | ||
) |
Cancel the passive timer.
Definition at line 2114 of file dsr-routing.cc.
References CancelPassivePacketTimer(), ns3::Packet::Copy(), m_maintainBuffer, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::dsr::MaintainBuffer::PromiscEqual(), ns3::dsr::MaintainBuffEntry::SetAckId(), ns3::dsr::MaintainBuffEntry::SetDst(), ns3::dsr::MaintainBuffEntry::SetPacket(), ns3::dsr::MaintainBuffEntry::SetSegsLeft(), and ns3::dsr::MaintainBuffEntry::SetSrc().
void ns3::dsr::DsrRouting::CancelRreqTimer | ( | Ipv4Address | dst, |
bool | isRemove | ||
) |
Cancel the route request timer.
dst | The dst address of the route request timer |
isRemove | whether to remove the route request entry or not |
Definition at line 3020 of file dsr-routing.cc.
References m_addressReqTimer, m_nonPropReqTimer, m_rreqTable, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by RouteRequestTimerExpire(), and SendErrorRequest().
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
When found a route and use it, UseExtends to the link cache
Definition at line 1000 of file dsr-routing.cc.
References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Packet::AddHeader(), ns3::Packet::Copy(), ns3::Packet::CopyData(), data, ns3::dsr::DSR_CONTROL_PACKET, ns3::dsr::MaintainBuffer::Enqueue(), ns3::dsr::SendBuffer::GetBuffer(), ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorSrc(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), GetPriority(), GetProtocolNumber(), ns3::dsr::DsrOptionRerrUnreachHeader::GetSalvage(), ns3::dsr::SendBuffer::GetSize(), ns3::Packet::GetSize(), ns3::dsr::DsrOptionRerrUnreachHeader::GetUnreachNode(), ns3::dsr::RouteCacheEntry::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_downTarget, 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::Packet::RemoveAtStart(), ns3::Packet::RemoveHeader(), ns3::Timer::Resume(), ns3::Simulator::Schedule(), ScheduleLinkPacketRetry(), ScheduleNetworkPacketRetry(), SchedulePassivePacketRetry(), SearchNextHop(), SendBuffTimerExpire(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrOptionRerrHeader::SetErrorType(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), ns3::Ipv4Route::SetOutputDevice(), ns3::dsr::DsrFsHeader::SetPayloadLength(), SetRoute(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), ns3::dsr::DsrFsHeader::SetSourceId(), and ns3::Timer::Suspend().
Referenced by SendBuffTimerExpire().
void ns3::dsr::DsrRouting::ConnectCallbacks | ( | ) |
Connect the callback for the tracing event.
Definition at line 455 of file dsr-routing.cc.
References ns3::Config::Connect(), ns3::MakeCallback(), and NotifyDataReceipt().
Referenced by Start().
void ns3::dsr::DsrRouting::DeleteAllRoutesIncludeLink | ( | Ipv4Address | errorSrc, |
Ipv4Address | unreachNode, | ||
Ipv4Address | node | ||
) |
functions used to direct to route cache
Definition at line 696 of file dsr-routing.cc.
References m_routeCache.
|
protectedvirtual |
Drop trace callback.
Reimplemented from ns3::Object.
Definition at line 573 of file dsr-routing.cc.
References ns3::Object::DoDispose(), m_ipv4, m_node, m_routeCache, and NS_LOG_FUNCTION_NOARGS.
bool ns3::dsr::DsrRouting::FindSourceEntry | ( | Ipv4Address | src, |
Ipv4Address | dst, | ||
uint16_t | id | ||
) |
functions used to direct to route cache
Definition at line 706 of file dsr-routing.cc.
References m_rreqTable.
void ns3::dsr::DsrRouting::ForwardErrPacket | ( | DsrOptionRerrUnreachHeader & | rerr, |
DsrOptionSRHeader & | sourceRoute, | ||
Ipv4Address | nextHop, | ||
uint8_t | protocol, | ||
Ptr< Ipv4Route > | route | ||
) |
This function is responsible for forwarding error packets along the route.
Definition at line 1494 of file dsr-routing.cc.
References ns3::Packet::AddHeader(), ns3::dsr::DSR_CONTROL_PACKET, ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorSrc(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), GetPriority(), GetProtocolNumber(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_downTarget, m_ip, m_mainAddress, m_priorityQueue, NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::dsr::DsrFsHeader::SetNextHeader(), and ns3::Ipv4Route::SetOutputDevice().
void ns3::dsr::DsrRouting::ForwardPacket | ( | Ptr< const Packet > | packet, |
DsrOptionSRHeader & | sourceRoute, | ||
Ipv4Header const & | 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.
Definition at line 2788 of file dsr-routing.cc.
References ns3::Packet::AddHeader(), ns3::Packet::Copy(), ns3::dsr::MaintainBuffer::Enqueue(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::dsr::DsrOptionSRHeader::GetSegmentsLeft(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::dsr::NetworkKey::m_ackId, ns3::dsr::PassiveKey::m_ackId, 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(), and ns3::dsr::DsrFsHeader::SetNextHeader().
|
virtual |
This method allows a caller to get the current down target callback set for this L4 protocol (IPv4 case)
Implements ns3::IpL4Protocol.
Definition at line 3636 of file dsr-routing.cc.
References m_downTarget.
|
virtual |
This method allows a caller to get the current down target callback set for this L4 protocol (IPv6 case)
Implements ns3::IpL4Protocol.
Definition at line 3642 of file dsr-routing.cc.
References NS_FATAL_ERROR.
std::vector< std::string > ns3::dsr::DsrRouting::GetElementsFromContext | ( | std::string | context | ) |
Get the elements from the tracing context.
context | context |
Definition at line 557 of file dsr-routing.cc.
Referenced by GetNetDeviceFromContext().
uint16_t ns3::dsr::DsrRouting::GetIDfromIP | ( | Ipv4Address | address | ) |
Get the node id from ip address.
address | IPv4 address |
Definition at line 801 of file dsr-routing.cc.
References first::address, ns3::NodeList::GetNNodes(), ns3::NodeList::GetNode(), and ns3::Object::GetObject().
Referenced by CheckSendBuffer(), ForwardErrPacket(), ForwardPacket(), PacketNewRoute(), SalvagePacket(), Send(), SendAck(), SendErrorRequest(), SendGratuitousReply(), SendInitialRequest(), SendPacketFromBuffer(), and SendUnreachError().
Ipv4Address ns3::dsr::DsrRouting::GetIPfromID | ( | uint16_t | id | ) |
Get the ip address from id.
id | unique ID |
Definition at line 817 of file dsr-routing.cc.
References ns3::NodeList::GetNode(), ns3::Object::GetObject(), and NS_LOG_DEBUG.
Referenced by NotifyDataReceipt(), PromiscReceive(), and Receive().
Ipv4Address ns3::dsr::DsrRouting::GetIPfromMAC | ( | Mac48Address | address | ) |
Get the Ip address from mac address.
address | Mac48Address |
Definition at line 712 of file dsr-routing.cc.
References first::address, ns3::NodeList::GetNNodes(), ns3::NodeList::GetNode(), ns3::Object::GetObject(), and NS_LOG_FUNCTION.
Referenced by NotifyDataReceipt(), and PromiscReceive().
Get the netdevice from the context.
context | context |
Definition at line 545 of file dsr-routing.cc.
References ns3::Node::GetDevice(), GetElementsFromContext(), ns3::NodeList::GetNode(), and NS_ASSERT.
Referenced by NotifyDataReceipt().
Get the node.
Definition at line 603 of file dsr-routing.cc.
References m_node, and NS_LOG_FUNCTION_NOARGS.
Referenced by Receive().
Ptr< Node > ns3::dsr::DsrRouting::GetNodeWithAddress | ( | Ipv4Address | ipv4Address | ) |
Get the node with give ip address.
ipv4Address | IPv4 address |
Definition at line 649 of file dsr-routing.cc.
References ns3::NodeList::GetNNodes(), ns3::NodeList::GetNode(), ns3::Object::GetObject(), and NS_LOG_FUNCTION.
Referenced by NotifyDataReceipt().
Ptr< dsr::DsrOptions > ns3::dsr::DsrRouting::GetOption | ( | int | optionNumber | ) |
Get the option corresponding to optionNumber.
optionNumber | the option number of the option to retrieve |
Definition at line 3653 of file dsr-routing.cc.
References m_options.
Referenced by PromiscReceive(), and Receive().
Ptr< dsr::PassiveBuffer > ns3::dsr::DsrRouting::GetPassiveBuffer | ( | ) | const |
Get the passive buffer.
Definition at line 642 of file dsr-routing.cc.
References m_passiveBuffer.
Referenced by GetTypeId().
uint32_t ns3::dsr::DsrRouting::GetPriority | ( | DsrMessageType | messageType | ) |
Set the priority of the packet in network queue.
messageType | Message type |
Definition at line 833 of file dsr-routing.cc.
References ns3::dsr::DSR_CONTROL_PACKET.
Referenced by CheckSendBuffer(), ForwardErrPacket(), IncreaseRetransTimer(), SalvagePacket(), SendAck(), SendPacket(), SendPacketFromBuffer(), SendReply(), SendRequest(), and SendUnreachError().
|
virtual |
Get the dsr protocol number.
Implements ns3::IpL4Protocol.
Definition at line 794 of file dsr-routing.cc.
References PROT_NUMBER.
Referenced by CheckSendBuffer(), ForwardErrPacket(), SalvagePacket(), SendAck(), SendPacket(), SendPacketFromBuffer(), SendRealDown(), SendReply(), SendRequest(), and SendUnreachError().
Ptr< dsr::RreqTable > ns3::dsr::DsrRouting::GetRequestTable | ( | ) | const |
Get the request table.
Definition at line 629 of file dsr-routing.cc.
References m_rreqTable.
Referenced by GetTypeId().
Ptr< dsr::RouteCache > ns3::dsr::DsrRouting::GetRouteCache | ( | ) | const |
Get the route cache.
Definition at line 616 of file dsr-routing.cc.
References m_routeCache.
Referenced by GetTypeId().
|
static |
Get the type identificator.
Definition at line 106 of file dsr-routing.cc.
References GetPassiveBuffer(), GetRequestTable(), GetRouteCache(), m_blacklistTimeout, m_broadcastJitter, m_cacheType, m_discoveryHopLimit, m_dropTrace, m_graReplyTableSize, m_gratReplyHoldoff, m_initStability, m_linkAck, m_linkAckTimeout, m_maxCacheLen, m_maxCacheTime, m_maxEntriesEachDst, m_maxMaintainLen, m_maxMaintainTime, m_maxMaintRexmt, m_maxNetworkDelay, m_maxNetworkSize, m_maxRequestPeriod, m_maxRreqId, m_maxSalvageCount, m_maxSendBuffLen, m_minLifeTime, m_nodeTraversalTime, m_nonpropRequestTimeout, m_numPriorityQueues, m_passiveAckTimeout, m_requestPeriod, m_requestTableIds, m_requestTableSize, m_retransIncr, m_rreqRetries, m_sendBufferTimeout, m_sendBuffInterval, m_stabilityDecrFactor, m_stabilityIncrFactor, m_subRoute, m_tryLinkAcks, m_tryPassiveAcks, m_txPacketTrace, m_useExtends, ns3::MakeTimeChecker(), ns3::MakeTraceSourceAccessor(), ns3::TypeId::SetParent(), SetPassiveBuffer(), SetRequestTable(), and SetRouteCache().
void ns3::dsr::DsrRouting::IncreaseRetransTimer | ( | ) |
This function is called to increase the retransmission timer for data packet in the network queue.
Definition at line 1830 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().
void ns3::dsr::DsrRouting::Insert | ( | Ptr< dsr::DsrOptions > | option | ) |
Insert a new Dsr Option.
option | the option to insert |
Definition at line 3648 of file dsr-routing.cc.
References m_options.
Referenced by DsrRouting().
bool ns3::dsr::DsrRouting::IsLinkCache | ( | ) |
functions used to direct to route cache
Definition at line 666 of file dsr-routing.cc.
References m_routeCache.
void ns3::dsr::DsrRouting::LinkScheduleTimerExpire | ( | MaintainBuffEntry & | mb, |
uint8_t | protocol | ||
) |
This function deals with packet retransmission timer expire using link acknowledgment.
Definition at line 2588 of file dsr-routing.cc.
References CancelPacketTimerNextHop(), ns3::Packet::Copy(), ns3::Packet::CopyData(), ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), ns3::dsr::MaintainBuffEntry::GetDst(), ns3::dsr::MaintainBuffEntry::GetNextHop(), ns3::dsr::DsrOptionSRHeader::GetNodesAddress(), ns3::dsr::MaintainBuffEntry::GetOurAdd(), ns3::dsr::MaintainBuffEntry::GetPacket(), ns3::dsr::DsrOptionSRHeader::GetSalvage(), ns3::dsr::MaintainBuffEntry::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, PrintVector(), ns3::Packet::RemoveAtStart(), ns3::Packet::RemoveHeader(), ScheduleLinkPacketRetry(), SendUnreachError(), ns3::dsr::DsrOptionSRHeader::SetNumberAddress(), and SetRoute().
Referenced by ScheduleLinkPacketRetry().
bool ns3::dsr::DsrRouting::LookupRoute | ( | Ipv4Address | id, |
RouteCacheEntry & | rt | ||
) |
functions used to direct to route cache
Definition at line 676 of file dsr-routing.cc.
References m_routeCache.
void ns3::dsr::DsrRouting::NetworkScheduleTimerExpire | ( | MaintainBuffEntry & | mb, |
uint8_t | protocol | ||
) |
This function deals with packet retransmission timer expire using network acknowledgment.
Definition at line 2717 of file dsr-routing.cc.
References CancelPacketTimerNextHop(), ns3::Packet::Copy(), ns3::Packet::CopyData(), ns3::dsr::MaintainBuffEntry::GetAckId(), ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), ns3::dsr::MaintainBuffEntry::GetDst(), ns3::dsr::MaintainBuffEntry::GetNextHop(), ns3::dsr::DsrOptionSRHeader::GetNodesAddress(), ns3::dsr::MaintainBuffEntry::GetOurAdd(), ns3::dsr::MaintainBuffEntry::GetPacket(), ns3::dsr::DsrOptionSRHeader::GetSalvage(), ns3::dsr::MaintainBuffEntry::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, NS_LOG_DEBUG, NS_LOG_LOGIC, PrintVector(), ns3::Packet::RemoveAtStart(), ns3::Packet::RemoveHeader(), ScheduleNetworkPacketRetry(), SendUnreachError(), and ns3::dsr::DsrOptionSRHeader::SetNumberAddress().
Referenced by ScheduleNetworkPacketRetry().
Notify the data receipt.
Remove the ipv4 header here
Remove the dsr routing header here
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 462 of file dsr-routing.cc.
References ns3::Packet::Copy(), ns3::WifiMacHeader::GetAddr2(), ns3::dsr::DsrFsHeader::GetDestId(), GetIPfromID(), GetIPfromMAC(), ns3::dsr::DsrFsHeader::GetMessageType(), GetNetDeviceFromContext(), GetNodeWithAddress(), ns3::Object::GetObject(), ns3::Packet::GetSize(), ns3::dsr::DsrFsHeader::GetSourceId(), ns3::Packet::GetUid(), m_mainAddress, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_WARN, ns3::Packet::PeekHeader(), ns3::Packet::RemoveHeader(), and ns3::dsr::MaintainBuffEntry::SetPacket().
Referenced by ConnectCallbacks().
|
protectedvirtual |
This method is invoked whenever two sets of objects are aggregated together.
This function must be implemented in the stack that needs to notify other stacks connected to the node of their presence in the node.
It is invoked exactly once for each object in both sets. This method can be overriden 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 331 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().
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.
When found a route and use it, UseExtends to the link cache
Definition at line 1273 of file dsr-routing.cc.
References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Packet::AddHeader(), ns3::Packet::Copy(), ns3::dsr::SendBuffer::Enqueue(), ns3::dsr::MaintainBuffer::Enqueue(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::Packet::GetUid(), ns3::dsr::RouteCacheEntry::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, 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(), RouteRequestTimerExpire(), SalvagePacket(), Send(), SendErrorRequest(), SendRerrWhenBreaksLinkToNextHop(), and SendUnreachError().
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.
Save this passive buffer entry for later check
Definition at line 2071 of file dsr-routing.cc.
References CancelPassivePacketTimer(), ns3::Packet::Copy(), m_passiveBuffer, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::dsr::MaintainBuffEntry::SetAckId(), ns3::dsr::PassiveBuffEntry::SetDestination(), ns3::dsr::MaintainBuffEntry::SetDst(), ns3::dsr::PassiveBuffEntry::SetFragmentOffset(), ns3::dsr::PassiveBuffEntry::SetIdentification(), ns3::dsr::PassiveBuffEntry::SetPacket(), ns3::dsr::MaintainBuffEntry::SetPacket(), ns3::dsr::PassiveBuffEntry::SetSegsLeft(), ns3::dsr::MaintainBuffEntry::SetSegsLeft(), ns3::dsr::PassiveBuffEntry::SetSource(), and ns3::dsr::MaintainBuffEntry::SetSrc().
void ns3::dsr::DsrRouting::PassiveScheduleTimerExpire | ( | MaintainBuffEntry & | mb, |
uint8_t | protocol | ||
) |
This function deals with packet retransmission timer expire using passive acknowledgment.
Definition at line 2668 of file dsr-routing.cc.
References CancelPassivePacketTimer(), ns3::Packet::Copy(), ns3::dsr::MaintainBuffEntry::GetDst(), ns3::dsr::MaintainBuffEntry::GetNextHop(), ns3::dsr::MaintainBuffEntry::GetPacket(), ns3::dsr::MaintainBuffEntry::GetSegsLeft(), ns3::dsr::MaintainBuffEntry::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().
void ns3::dsr::DsrRouting::PrintVector | ( | std::vector< Ipv4Address > & | vec | ) |
Print the route vector.
Definition at line 730 of file dsr-routing.cc.
References NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by LinkScheduleTimerExpire(), and NetworkScheduleTimerExpire().
void ns3::dsr::DsrRouting::PriorityScheduler | ( | uint32_t | priority, |
bool | continueWithFirst | ||
) |
This function is called to schedule sending packets from the network queue by priority.
Definition at line 1757 of file dsr-routing.cc.
References ns3::UniformRandomVariable::GetInteger(), IncreaseRetransTimer(), m_numPriorityQueues, m_priorityQueue, m_uniformRandomVariable, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, ns3::Simulator::Schedule(), and SendRealDown().
Referenced by Scheduler().
uint8_t ns3::dsr::DsrRouting::Process | ( | Ptr< Packet > & | packet, |
Ipv4Header const & | ipv4Header, | ||
Ipv4Address | dst, | ||
uint8_t * | nextHeader, | ||
uint8_t | protocol, | ||
bool & | isDropped | ||
) |
Process method Called from Ipv4L3Protocol::Receive.
packet | the packet |
ipv4Header | IPv4 header of the packet |
dst | destination address of the packet received (i.e. us) |
nextHeader | the next header |
protocol | the protocol number |
isDropped | if the packet must be dropped |
|
private |
Promiscuous receive data packets destined to some other node.
device | The network device |
packet | Data packet we just received |
protocol | The protocol we receive, need to verify it is dsr protocol |
from | The from address we received the packet |
to | The address this packet is destined for |
packetType | The dsr packet type, 0 is for control packet, 1 for data packet |
Definition at line 1212 of file dsr-routing.cc.
References ns3::Mac48Address::ConvertFrom(), ns3::Packet::Copy(), ns3::Packet::CopyData(), data, ns3::Ipv4Header::GetDestination(), ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), GetIPfromID(), GetIPfromMAC(), ns3::dsr::DsrFsHeader::GetNextHeader(), GetOption(), ns3::Ipv4Header::GetProtocol(), ns3::Packet::GetSize(), ns3::Ipv4Header::GetSource(), ns3::dsr::DsrFsHeader::GetSourceId(), ns3::Packet::GetUid(), m_mainAddress, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_INFO, ns3::NetDevice::PACKET_OTHERHOST, ns3::Ipv4L3Protocol::PROT_NUMBER, PROT_NUMBER, ns3::Packet::RemoveAtStart(), and ns3::Packet::RemoveHeader().
Referenced by Start().
|
virtual |
p | packet to forward up |
header | IPv4 Header information |
incomingInterface | the Ipv4Interface on which the packet arrived |
Called from lower-level layers to send the packet up in the stack.
this is just here for the sake of passing in the promisc source
Implements ns3::IpL4Protocol.
Definition at line 3427 of file dsr-routing.cc.
References ns3::Packet::Copy(), ns3::Packet::CopyData(), data, ns3::Ipv4Header::GetDestination(), ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), GetIPfromID(), ns3::dsr::DsrFsHeader::GetNextHeader(), GetNode(), ns3::Object::GetObject(), GetOption(), ns3::Packet::GetSize(), ns3::Ipv4Header::GetSource(), ns3::dsr::DsrFsHeader::GetSourceId(), ns3::Packet::GetUid(), ns3::Ipv4Address::IsBroadcast(), ns3::Ipv4Address::IsMulticast(), m_dropTrace, m_mainAddress, m_node, m_rreqTable, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, ns3::Packet::RemoveAtStart(), ns3::Packet::RemoveHeader(), ns3::IpL4Protocol::RX_CSUM_FAILED, ns3::IpL4Protocol::RX_ENDPOINT_CLOSED, ns3::IpL4Protocol::RX_ENDPOINT_UNREACH, ns3::IpL4Protocol::RX_OK, ns3::dsr::DsrOptionRerrUnsupportHeader::SetErrorDst(), ns3::dsr::DsrOptionRerrUnsupportHeader::SetErrorSrc(), ns3::dsr::DsrOptionRerrHeader::SetErrorType(), ns3::dsr::DsrOptionRerrUnsupportHeader::SetSalvage(), and ns3::dsr::DsrOptionRerrUnsupportHeader::SetUnsupported().
|
virtual |
p | packet to forward up |
header | IPv6 Header information |
incomingInterface | the Ipv6Interface on which the packet arrived |
Called from lower-level layers to send the packet up in the stack. Not implemented (IPv6).
Implements ns3::IpL4Protocol.
Definition at line 3614 of file dsr-routing.cc.
References ns3::Ipv6Header::GetDestinationAddress(), ns3::Ipv6Header::GetSourceAddress(), NS_LOG_FUNCTION, and ns3::IpL4Protocol::RX_ENDPOINT_UNREACH.
void ns3::dsr::DsrRouting::RouteRequestTimerExpire | ( | Ptr< Packet > | packet, |
std::vector< Ipv4Address > | address, | ||
uint32_t | requestId, | ||
uint8_t | protocol | ||
) |
Handle route discovery timer.
packet | the original packet |
address | List of IPv4 addresses |
requestId | Unique request ID |
protocol | the protocol number |
Set the salvage value to 0
Try to send out data packet from the send buffer if found
Definition at line 3141 of file dsr-routing.cc.
References ns3::Packet::AddPacketTag(), CancelRreqTimer(), ns3::Packet::Copy(), ns3::dsr::SendBuffer::DropPacketWithDst(), ns3::dsr::SendBuffer::Find(), ns3::dsr::SendBuffer::GetSize(), ns3::dsr::RouteCacheEntry::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(), ns3::Packet::RemoveHeader(), ScheduleRreqRetry(), SearchNextHop(), SendPacketFromBuffer(), SendRequest(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), SetRoute(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), and ns3::SocketIpTtlTag::SetTtl().
Referenced by ScheduleRreqRetry().
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.
When found a route and use it, UseExtends to the link cache
Definition at line 2322 of file dsr-routing.cc.
References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Packet::AddHeader(), ns3::Packet::Copy(), ns3::Packet::CopyData(), ns3::dsr::DSR_DATA_PACKET, ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), GetPriority(), GetProtocolNumber(), ns3::dsr::DsrOptionSRHeader::GetSalvage(), ns3::dsr::RouteCacheEntry::GetVector(), m_downTarget, m_ip, m_ipv4Route, m_mainAddress, m_maxSalvageCount, m_priorityQueue, m_routeCache, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, PacketNewRoute(), ns3::Packet::RemoveAtStart(), ns3::Packet::RemoveHeader(), SearchNextHop(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), ns3::dsr::DsrOptionSRHeader::SetNumberAddress(), ns3::Ipv4Route::SetOutputDevice(), ns3::dsr::DsrFsHeader::SetPayloadLength(), SetRoute(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), and ns3::dsr::DsrFsHeader::SetSourceId().
Referenced by CancelPacketTimerNextHop().
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.
packet | the original packet |
source | IPv4 address of the source (i.e. request originator) |
destination | IPv4 address of the destination |
route | Route |
Definition at line 3361 of file dsr-routing.cc.
References ns3::UniformRandomVariable::GetValue(), m_nodeTraversalTime, m_uniformRandomVariable, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), and SendReply().
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
packet | the original packet |
source | IPv4 address of the source (i.e. request originator) |
nextHop | IPv4 address of the next hop |
route | Route |
Definition at line 3350 of file dsr-routing.cc.
References NS_LOG_FUNCTION, ns3::Simulator::ScheduleNow(), and SendReply().
Schedule the intermediate route request.
packet | the original packet |
Definition at line 3244 of file dsr-routing.cc.
References ns3::UniformRandomVariable::GetInteger(), m_broadcastJitter, m_mainAddress, m_uniformRandomVariable, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), and SendRequest().
void ns3::dsr::DsrRouting::ScheduleLinkPacketRetry | ( | MaintainBuffEntry & | mb, |
uint8_t | protocol | ||
) |
Schedule the packet retransmission based on link-layer acknowledgment.
mb | maintainenace buffer entry |
protocol | the protocol number |
Definition at line 2419 of file dsr-routing.cc.
References ns3::Timer::CANCEL_ON_DESTROY, ns3::Packet::Copy(), ns3::dsr::MaintainBuffEntry::GetDst(), ns3::dsr::MaintainBuffEntry::GetNextHop(), ns3::dsr::MaintainBuffEntry::GetOurAdd(), ns3::dsr::MaintainBuffEntry::GetPacket(), ns3::dsr::MaintainBuffEntry::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, and SendPacket().
Referenced by CheckSendBuffer(), ForwardPacket(), LinkScheduleTimerExpire(), PacketNewRoute(), Send(), SendPacketFromBuffer(), and SendRerrWhenBreaksLinkToNextHop().
void ns3::dsr::DsrRouting::ScheduleNetworkPacketRetry | ( | MaintainBuffEntry & | mb, |
bool | isFirst, | ||
uint8_t | protocol | ||
) |
Schedule the packet retransmission based on network layer acknowledgment.
mb | maintainenace buffer entry |
isFirst | see if this is the first packet retry or not |
protocol | the protocol number |
Definition at line 2480 of file dsr-routing.cc.
References AddAckReqHeader(), ns3::dsr::MaintainBuffer::AllEqual(), ns3::Timer::CANCEL_ON_DESTROY, ns3::Packet::Copy(), ns3::dsr::MaintainBuffer::Enqueue(), ns3::dsr::MaintainBuffEntry::GetAckId(), ns3::dsr::MaintainBuffEntry::GetDst(), ns3::dsr::MaintainBuffEntry::GetNextHop(), ns3::dsr::MaintainBuffEntry::GetOurAdd(), ns3::dsr::MaintainBuffEntry::GetPacket(), ns3::Time::GetSeconds(), ns3::dsr::MaintainBuffEntry::GetSrc(), m_addressForwardCnt, m_addressForwardTimer, m_maintainBuffer, m_maxMaintainTime, m_nodeTraversalTime, m_sendRetries, NetworkScheduleTimerExpire(), NS_LOG_DEBUG, NS_LOG_ERROR, SendPacket(), ns3::dsr::MaintainBuffEntry::SetAckId(), ns3::dsr::MaintainBuffEntry::SetExpireTime(), and ns3::dsr::MaintainBuffEntry::SetPacket().
Referenced by CheckSendBuffer(), ForwardPacket(), NetworkScheduleTimerExpire(), PacketNewRoute(), PassiveScheduleTimerExpire(), Send(), SendPacketFromBuffer(), and SendRerrWhenBreaksLinkToNextHop().
void ns3::dsr::DsrRouting::SchedulePassivePacketRetry | ( | MaintainBuffEntry & | mb, |
uint8_t | protocol | ||
) |
Schedule the packet retransmission based on passive acknowledgment.
mb | maintainenace buffer entry |
protocol | the protocol number |
Definition at line 2449 of file dsr-routing.cc.
References ns3::Timer::CANCEL_ON_DESTROY, ns3::Packet::Copy(), ns3::dsr::MaintainBuffEntry::GetDst(), ns3::dsr::MaintainBuffEntry::GetNextHop(), ns3::dsr::MaintainBuffEntry::GetPacket(), ns3::dsr::MaintainBuffEntry::GetSegsLeft(), ns3::dsr::MaintainBuffEntry::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(), SendPacketFromBuffer(), and SendRerrWhenBreaksLinkToNextHop().
void ns3::dsr::DsrRouting::Scheduler | ( | uint32_t | priority | ) |
This function is called to schedule sending packets from the network queue.
Definition at line 1750 of file dsr-routing.cc.
References NS_LOG_FUNCTION, and PriorityScheduler().
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.
packet | the original packet |
address | List of IPv4 addresses |
nonProp | flag if RREQ is non-propagating |
requestId | Unique request ID |
protocol | the protocol number |
Definition at line 3069 of file dsr-routing.cc.
References first::address, ns3::Timer::CANCEL_ON_DESTROY, ns3::Time::GetSeconds(), m_addressReqTimer, m_maxRequestPeriod, m_nonPropReqTimer, m_nonpropRequestTimeout, m_requestPeriod, m_rreqTable, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, and RouteRequestTimerExpire().
Referenced by RouteRequestTimerExpire(), SendErrorRequest(), and SendInitialRequest().
Ipv4Address ns3::dsr::DsrRouting::SearchNextHop | ( | Ipv4Address | ipv4Address, |
std::vector< Ipv4Address > & | vec | ||
) |
Get the next hop of the route.
ipv4Address | |
vec | Route |
Definition at line 750 of file dsr-routing.cc.
References NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by AddRoute(), AddRoute_Link(), CheckSendBuffer(), PacketNewRoute(), RouteRequestTimerExpire(), SalvagePacket(), Send(), SendErrorRequest(), SendRerrWhenBreaksLinkToNextHop(), and SendUnreachError().
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.
When found a route and use it, UseExtends to the link cache
Definition at line 1538 of file dsr-routing.cc.
References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Packet::AddHeader(), ns3::Packet::Copy(), ns3::dsr::SendBuffer::Enqueue(), ns3::dsr::MaintainBuffer::Enqueue(), ns3::dsr::SendBuffer::Find(), GetIDfromIP(), ns3::UniformRandomVariable::GetInteger(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::dsr::SendBuffer::GetSize(), ns3::Packet::GetSize(), ns3::Packet::GetUid(), ns3::dsr::RouteCacheEntry::GetVector(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::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::Simulator::Now(), NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, PacketNewRoute(), 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().
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.
ackId | ACK ID |
destination | IPv4 address of the immediate ACK receiver |
realSrc | IPv4 address of the real source |
realDst | IPv4 address of the real destination |
protocol | the protocol number |
route | Route |
Definition at line 3372 of file dsr-routing.cc.
References ns3::Packet::AddHeader(), ns3::dsr::DSR_CONTROL_PACKET, GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), GetPriority(), GetProtocolNumber(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_downTarget, m_ip, m_mainAddress, m_priorityQueue, NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::dsr::DsrOptionAckHeader::SetAckId(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::Ipv4Route::SetOutputDevice(), ns3::dsr::DsrOptionAckHeader::SetRealDst(), and ns3::dsr::DsrOptionAckHeader::SetRealSrc().
void ns3::dsr::DsrRouting::SendBuffTimerExpire | ( | ) |
The send buffer timer expire.
Definition at line 990 of file dsr-routing.cc.
References ns3::Timer::Cancel(), CheckSendBuffer(), ns3::Timer::IsRunning(), m_sendBuffInterval, m_sendBuffTimer, and ns3::Timer::Schedule().
Referenced by CheckSendBuffer(), and DsrRouting().
void ns3::dsr::DsrRouting::SendErrorRequest | ( | DsrOptionRerrUnreachHeader & | rerr, |
uint8_t | protocol | ||
) |
Send the error request packet.
rerr | the route error header |
protocol | the 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 2915 of file dsr-routing.cc.
References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Packet::AddHeader(), ns3::dsr::DsrOptionRreqHeader::AddNodeAddress(), ns3::Packet::AddPacketTag(), first::address, CancelRreqTimer(), ns3::Packet::Copy(), ns3::dsr::SendBuffer::Find(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorSrc(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::dsr::DsrOptionRerrUnreachHeader::GetOriginalDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetSalvage(), ns3::dsr::SendBuffer::GetSize(), ns3::dsr::DsrOptionRerrUnreachHeader::GetUnreachNode(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::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::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(), and ns3::SocketIpTtlTag::SetTtl().
void ns3::dsr::DsrRouting::SendGratuitousReply | ( | Ipv4Address | replyTo, |
Ipv4Address | replyFrom, | ||
std::vector< Ipv4Address > & | nodeList, | ||
uint8_t | protocol | ||
) |
Send the gratuitous reply.
replyTo | The destination address to send the reply to |
replyFrom | The source address sending the reply |
nodeList | Route |
protocol | the protocol number |
Push back the node addresses other than those between srcAddress and our own ip address
Definition at line 3256 of file dsr-routing.cc.
References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::dsr::GraReply::AddEntry(), ns3::Packet::AddHeader(), ns3::dsr::GraReply::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().
void ns3::dsr::DsrRouting::SendInitialRequest | ( | Ipv4Address | source, |
Ipv4Address | destination, | ||
uint8_t | protocol | ||
) |
Broadcast the route request packet in subnet.
Definition at line 2866 of file dsr-routing.cc.
References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::dsr::DsrOptionRreqHeader::AddNodeAddress(), ns3::Packet::AddPacketTag(), first::address, ns3::Packet::Copy(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::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().
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.
Definition at line 1721 of file dsr-routing.cc.
References ns3::dsr::DSR_DATA_PACKET, GetPriority(), GetProtocolNumber(), m_downTarget, m_ip, m_ipv4Route, m_mainAddress, m_priorityQueue, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::Ipv4Route::SetOutputDevice(), and SetRoute().
Referenced by ScheduleLinkPacketRetry(), ScheduleNetworkPacketRetry(), and SchedulePassivePacketRetry().
void ns3::dsr::DsrRouting::SendPacketFromBuffer | ( | DsrOptionSRHeader const & | 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.
When found a route and use it, UseExtends to the link cache
Definition at line 1866 of file dsr-routing.cc.
References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Packet::AddHeader(), ns3::Packet::Copy(), ns3::Packet::CopyData(), data, ns3::dsr::SendBuffer::Dequeue(), ns3::dsr::ErrorBuffer::Dequeue(), ns3::dsr::DSR_CONTROL_PACKET, ns3::dsr::MaintainBuffer::Enqueue(), ns3::dsr::SendBuffer::Find(), ns3::dsr::ErrorBuffer::Find(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorSrc(), GetIDfromIP(), ns3::UniformRandomVariable::GetInteger(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::dsr::DsrOptionSRHeader::GetNodesAddress(), ns3::dsr::DsrOptionRerrUnreachHeader::GetOriginalDst(), ns3::dsr::SendBuffEntry::GetPacket(), ns3::dsr::ErrorBuffEntry::GetPacket(), GetPriority(), GetProtocolNumber(), ns3::dsr::DsrOptionRerrUnreachHeader::GetSalvage(), ns3::dsr::ErrorBuffer::GetSize(), ns3::dsr::SendBuffer::GetSize(), ns3::Packet::GetSize(), ns3::dsr::DsrOptionRerrUnreachHeader::GetUnreachNode(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::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, NS_ASSERT, NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, ns3::Packet::RemoveAtStart(), ns3::Packet::RemoveHeader(), ns3::Simulator::Schedule(), ScheduleLinkPacketRetry(), ScheduleNetworkPacketRetry(), SchedulePassivePacketRetry(), 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::Ipv4Route::SetOutputDevice(), ns3::dsr::DsrFsHeader::SetPayloadLength(), SetRoute(), ns3::dsr::DsrOptionRerrUnreachHeader::SetSalvage(), ns3::dsr::DsrFsHeader::SetSourceId(), and ns3::dsr::DsrOptionRerrUnreachHeader::SetUnreachNode().
Referenced by RouteRequestTimerExpire(), Send(), and SendErrorRequest().
bool ns3::dsr::DsrRouting::SendRealDown | ( | DsrNetworkQueueEntry & | newEntry | ) |
This function is called to send packets down stack.
Definition at line 1854 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().
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.
packet | the original packet |
source | IPv4 address of the source (i.e. request originator) |
nextHop | IPv4 address of the next hop |
route | Route |
Definition at line 3318 of file dsr-routing.cc.
References ns3::dsr::DSR_CONTROL_PACKET, GetPriority(), GetProtocolNumber(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_downTarget, m_ipv4, m_mainAddress, m_priorityQueue, NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_INFO, and ns3::Ipv4Route::SetOutputDevice().
Referenced by ScheduleCachedReply(), ScheduleInitialReply(), and SendGratuitousReply().
void ns3::dsr::DsrRouting::SendRequest | ( | Ptr< Packet > | packet, |
Ipv4Address | source | ||
) |
Forward the route request if the node is not the destination.
packet | the original packet |
source | address |
Definition at line 3215 of file dsr-routing.cc.
References ns3::dsr::DSR_CONTROL_PACKET, GetPriority(), GetProtocolNumber(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_broadcast, m_downTarget, m_priorityQueue, NS_ASSERT_MSG, NS_LOG_FUNCTION, and NS_LOG_LOGIC.
Referenced by RouteRequestTimerExpire(), ScheduleInterRequest(), SendErrorRequest(), and SendInitialRequest().
|
private |
Send the route error message when the link breaks to the next hop.
When found a route and use it, UseExtends to the link cache
Definition at line 845 of file dsr-routing.cc.
References ns3::Packet::Copy(), ns3::dsr::MaintainBuffer::Dequeue(), ns3::dsr::MaintainBuffer::Find(), ns3::dsr::MaintainBuffEntry::GetAckId(), ns3::dsr::DsrOptionField::GetDsrOptionsOffset(), ns3::dsr::MaintainBuffEntry::GetDst(), ns3::UniformRandomVariable::GetInteger(), ns3::dsr::MaintainBuffEntry::GetNextHop(), ns3::dsr::DsrOptionSRHeader::GetNodesAddress(), ns3::dsr::MaintainBuffEntry::GetOurAdd(), ns3::dsr::MaintainBuffEntry::GetPacket(), ns3::dsr::DsrOptionSRHeader::GetSalvage(), ns3::dsr::MaintainBuffEntry::GetSegsLeft(), ns3::dsr::MaintainBuffer::GetSize(), ns3::dsr::MaintainBuffEntry::GetSrc(), ns3::dsr::RouteCacheEntry::GetVector(), 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_linkAck, m_linkCnt, m_mainAddress, m_maintainBuffer, m_maxSalvageCount, ns3::dsr::LinkKey::m_nextHop, ns3::dsr::NetworkKey::m_nextHop, ns3::dsr::LinkKey::m_ourAdd, ns3::dsr::NetworkKey::m_ourAdd, m_passiveCnt, m_routeCache, ns3::dsr::PassiveKey::m_segsLeft, ns3::dsr::LinkKey::m_source, ns3::dsr::NetworkKey::m_source, ns3::dsr::PassiveKey::m_source, m_uniformRandomVariable, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, PacketNewRoute(), ns3::Packet::RemoveHeader(), ns3::Simulator::Schedule(), ScheduleLinkPacketRetry(), ScheduleNetworkPacketRetry(), SchedulePassivePacketRetry(), SearchNextHop(), SendUnreachError(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), ns3::dsr::DsrOptionSRHeader::SetNumberAddress(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), and ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft().
Referenced by Start().
void ns3::dsr::DsrRouting::SendUnreachError | ( | Ipv4Address | errorHop, |
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.
When found a route and use it, UseExtends to the link cache
Definition at line 1392 of file dsr-routing.cc.
References ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Packet::AddHeader(), ns3::Packet::Copy(), ns3::dsr::DSR_CONTROL_PACKET, ns3::dsr::ErrorBuffer::Enqueue(), GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), GetPriority(), GetProtocolNumber(), ns3::Packet::GetSize(), ns3::Packet::GetUid(), ns3::dsr::RouteCacheEntry::GetVector(), m_addressReqTimer, m_downTarget, 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(), SearchNextHop(), 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::Ipv4Route::SetOutputDevice(), ns3::dsr::DsrFsHeader::SetPayloadLength(), SetRoute(), ns3::dsr::DsrOptionRerrUnreachHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), ns3::dsr::DsrFsHeader::SetSourceId(), and ns3::dsr::DsrOptionRerrUnreachHeader::SetUnreachNode().
Referenced by LinkScheduleTimerExpire(), NetworkScheduleTimerExpire(), and SendRerrWhenBreaksLinkToNextHop().
|
virtual |
This