DSR route request queue Since DSR is an on demand routing we queue requests while looking for route. More...
#include "dsr-rcache.h"
Classes | |
struct | Neighbor |
Structure to manage neighbor state. More... | |
Public Types | |
typedef std::list< DsrRouteCacheEntry::IP_VECTOR > | routeVector |
Define the vector of route entries. | |
Public Member Functions | |
DsrRouteCache () | |
~DsrRouteCache () override | |
void | AddArpCache (Ptr< ArpCache > a) |
Add ARP cache to be used to allow layer 2 notifications processing. | |
void | AddNeighbor (std::vector< Ipv4Address > nodeList, Ipv4Address ownAddress, Time expire) |
Add to the neighbor list. | |
bool | AddRoute (DsrRouteCacheEntry &rt) |
Add route cache entry if it doesn't yet exist in route cache. | |
bool | AddRoute_Link (DsrRouteCacheEntry::IP_VECTOR nodelist, Ipv4Address node) |
dd route link to cache | |
uint16_t | CheckUniqueAckId (Ipv4Address nextHop) |
Check for duplicate ids and save new entries if the id is not present in the table. | |
void | Clear () |
Delete all entries from routing table. | |
void | ClearMac () |
Remove all entries. | |
void | DelArpCache (Ptr< ArpCache >) |
Don't use the provided ARP cache any more (interface is down) | |
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 | DeleteRoute (Ipv4Address dst) |
Delete the route with certain destination address. | |
bool | FindSameRoute (DsrRouteCacheEntry &rt, std::list< DsrRouteCacheEntry > &rtVector) |
Find the same route in the route cache. | |
uint16_t | GetAckSize () |
Get the ack table size. | |
Time | GetBadLinkLifetime () const |
Get bad link lifetime function. | |
Time | GetCacheTimeout () const |
Get cache timeout value. | |
Callback< void, Ipv4Address, uint8_t > | GetCallback () const |
Handle link failure callback. | |
Time | GetExpireTime (Ipv4Address addr) |
Return expire time for neighbor node with address addr, if exists, else return 0. | |
Time | GetInitStability () const |
Get initial stability. | |
uint32_t | GetMaxCacheLen () const |
Get the max queue length. | |
uint32_t | GetMaxEntriesEachDst () const |
Get max entries for each destination. | |
Time | GetMinLifeTime () const |
Get minimum lifetime. | |
uint64_t | GetStabilityDecrFactor () const |
Get stability decrease factor. | |
uint64_t | GetStabilityIncrFactor () const |
Get stability increase factor. | |
bool | GetSubRoute () const |
Get subroute indicator. | |
Time | GetUseExtends () const |
Get use extends. | |
bool | IsLinkCache () |
is link cached | |
bool | IsNeighbor (Ipv4Address addr) |
Check that node with address addr is neighbor. | |
Mac48Address | LookupMacAddress (Ipv4Address addr) |
Find MAC address by IP using list of ARP caches. | |
bool | LookupRoute (Ipv4Address id, DsrRouteCacheEntry &rt) |
Lookup route cache entry with destination address dst. | |
DsrRouteCache & | operator= (const DsrRouteCache &)=delete |
void | Print (std::ostream &os) |
Print route cache. | |
void | PrintRouteVector (std::list< DsrRouteCacheEntry > route) |
Print all the route vector elements from the route list. | |
void | PrintVector (std::vector< Ipv4Address > &vec) |
Print the route vector elements. | |
void | ProcessTxError (const WifiMacHeader &hdr) |
Process layer 2 TX error notification. | |
void | Purge () |
Delete all outdated entries and invalidate valid entry if Lifetime is expired. | |
void | PurgeLinkNode () |
Purge from the cache if the stability time expired. | |
void | PurgeMac () |
Remove all expired mac entries. | |
void | RebuildBestRouteTable (Ipv4Address source) |
Rebuild the best route table. | |
void | RemoveLastEntry (std::list< DsrRouteCacheEntry > &rtVector) |
Remove the aged route cache entries when the route cache is full. | |
void | ScheduleTimer () |
Schedule m_ntimer. | |
void | SetBadLinkLifetime (Time t) |
Set bad link lifetime function. | |
void | SetCacheTimeout (Time t) |
Set cache timeout value. | |
void | SetCacheType (std::string type) |
Dijsktra algorithm to get the best route from m_netGraph and update the m_bestRoutesTable_link when current graph information has changed. | |
void | SetCallback (Callback< void, Ipv4Address, uint8_t > cb) |
Handle link failure callback. | |
void | SetInitStability (Time initStability) |
Set initial stability. | |
void | SetMaxCacheLen (uint32_t len) |
Set the max queue length. | |
void | SetMaxEntriesEachDst (uint32_t entries) |
Set max entries for each destination. | |
void | SetMinLifeTime (Time minLifeTime) |
Set minimum lifetime. | |
void | SetStabilityDecrFactor (uint64_t decrFactor) |
Set stability decrease factor. | |
void | SetStabilityIncrFactor (uint64_t incrFactor) |
Set stability increase factor. | |
void | SetSubRoute (bool subRoute) |
Set subroute indicator. | |
void | SetUseExtends (Time useExtends) |
Set use extends. | |
void | UpdateNeighbor (std::vector< Ipv4Address > nodeList, Time expire) |
Update expire time for entry with address addr, if it exists, else add new entry. | |
void | UpdateNetGraph () |
Update the Net Graph for the link and node cache has changed. | |
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) |
When a link from the Route Cache is used in routing a packet originated or salvaged by that node, the stability metric for each of the two endpoint nodes of that link is incremented by the amount of time since that link was last used. | |
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< Object > | GetObject () 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< Object > | GetObject (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. | |
SimpleRefCount & | operator= (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 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. | |
Public Attributes | |
std::vector< Ptr< ArpCache > > | m_arp |
list of ARP cached to be used for layer 2 notifications processing | |
Time | m_delay |
This timeout deals with the passive ack. | |
Callback< void, Ipv4Address, uint8_t > | m_handleLinkFailure |
The following code handles link-layer acks. | |
std::vector< Neighbor > | m_nb |
vector of entries | |
Timer | m_ntimer |
Timer for neighbor's list. Schedule Purge(). | |
Private Types | |
typedef std::list< DsrRouteCacheEntry > | routeEntryVector |
Define the route cache data structure. | |
Private Member Functions | |
bool | DecStability (Ipv4Address node) |
decrease the stability of the node | |
bool | IncStability (Ipv4Address node) |
increase the stability of the node | |
bool | LookupRoute_Link (Ipv4Address id, DsrRouteCacheEntry &rt) |
used by LookupRoute when LinkCache | |
Private Attributes | |
std::map< Ipv4Address, uint16_t > | m_ackIdCache |
The id cache to ensure all the ids are unique. | |
Time | m_badLinkLifetime |
The time for which the neighboring node is put into the blacklist. | |
std::map< Ipv4Address, DsrRouteCacheEntry::IP_VECTOR > | m_bestRoutesTable_link |
for link route cache | |
Time | m_initStability |
initial stability | |
bool | m_isLinkCache |
Check if the route is using path cache or link cache. | |
std::map< Link, DsrLinkStab > | m_linkCache |
The data structure to store link info. | |
uint32_t | m_maxCacheLen |
The maximum number of packets that we allow a routing protocol to buffer. | |
uint32_t | m_maxEntriesEachDst |
number of entries for each destination | |
Time | m_minLifeTime |
minimum lifetime | |
std::map< Ipv4Address, std::map< Ipv4Address, uint32_t > > | m_netGraph |
Current network graph state for this node, double is weight, which is calculated by the node information and link information, any time some changes of link cache and node cache change the weight and then recompute the best choice for each node. | |
std::map< Ipv4Address, DsrNodeStab > | m_nodeCache |
The data structure to store node info. | |
routeEntryVector | m_routeEntryVector |
Define the route vector. | |
std::map< Ipv4Address, routeEntryVector > | m_sortedRoutes |
Map the ipv4Address to route entry vector. | |
uint32_t | m_stabilityDecrFactor |
stability decrease factor | |
uint32_t | m_stabilityIncrFactor |
stability increase factor | |
bool | m_subRoute |
Check if save the sub route entries or not. | |
Time | m_useExtends |
use extend | |
DsrRouteCacheEntry::IP_VECTOR | m_vector |
The route vector to save the ip addresses for intermediate nodes. | |
Time | RouteCacheTimeout |
The maximum period of time that dsr is allowed to for an unused route. | |
Additional Inherited Members | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. | |
virtual void | DoDispose () |
Destructor implementation. | |
virtual void | DoInitialize () |
Initialize() implementation. | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. | |
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. | |
Related Symbols inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
DSR route request queue Since DSR is an on demand routing we queue requests while looking for route.
Definition at line 364 of file dsr-rcache.h.
|
private |
Define the route cache data structure.
Definition at line 769 of file dsr-rcache.h.
typedef std::list<DsrRouteCacheEntry::IP_VECTOR> ns3::dsr::DsrRouteCache::routeVector |
Define the vector of route entries.
Definition at line 387 of file dsr-rcache.h.
ns3::dsr::DsrRouteCache::DsrRouteCache | ( | ) |
Definition at line 144 of file dsr-rcache.cc.
References m_delay, m_ntimer, PurgeMac(), ns3::Timer::SetDelay(), and ns3::Timer::SetFunction().
|
override |
Definition at line 158 of file dsr-rcache.cc.
References m_sortedRoutes, and NS_LOG_FUNCTION_NOARGS.
Add ARP cache to be used to allow layer 2 notifications processing.
a | ARP cache |
Definition at line 1199 of file dsr-rcache.cc.
References m_arp.
void ns3::dsr::DsrRouteCache::AddNeighbor | ( | std::vector< Ipv4Address > | nodeList, |
Ipv4Address | ownAddress, | ||
Time | expire ) |
Add to the neighbor list.
nodeList | neighbor list |
ownAddress | local address |
expire | expiration time |
Definition at line 1129 of file dsr-rcache.cc.
References LookupMacAddress(), m_nb, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_LOGIC, and PurgeMac().
bool ns3::dsr::DsrRouteCache::AddRoute | ( | DsrRouteCacheEntry & | rt | ) |
Add route cache entry if it doesn't yet exist in route cache.
rt | route cache entry |
Save the new route cache along with the destination address in map
Drop the most aged packet when buffer reaches to max
Save the new route cache along with the destination address in map
Definition at line 646 of file dsr-rcache.cc.
References ns3::dsr::CompareRoutesExpire(), FindSameRoute(), ns3::dsr::DsrRouteCacheEntry::GetDestination(), ns3::dsr::DsrRouteCacheEntry::GetExpireTime(), ns3::dsr::DsrRouteCacheEntry::GetVector(), m_maxEntriesEachDst, m_sortedRoutes, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, Purge(), RemoveLastEntry(), and ns3::Time::S.
bool ns3::dsr::DsrRouteCache::AddRoute_Link | ( | DsrRouteCacheEntry::IP_VECTOR | nodelist, |
Ipv4Address | node ) |
dd route link to cache
nodelist | vector of nodes |
node | ip address of node to add |
Purge the link node cache first
This is the node stability
Link represent the one link for the route
Link stability
Set the link stability as the smallest node stability
Set the link stability as the m)minLifeTime, default is 1 second
Definition at line 549 of file dsr-rcache.cc.
References ns3::Time::As(), ns3::dsr::DsrLinkStab::GetLinkStability(), m_initStability, m_linkCache, m_minLifeTime, m_nodeCache, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::dsr::DsrLinkStab::Print(), PurgeLinkNode(), RebuildBestRouteTable(), ns3::Time::S, ns3::dsr::DsrLinkStab::SetLinkStability(), ns3::dsr::DsrNodeStab::SetNodeStability(), and UpdateNetGraph().
uint16_t ns3::dsr::DsrRouteCache::CheckUniqueAckId | ( | Ipv4Address | nextHop | ) |
Check for duplicate ids and save new entries if the id is not present in the table.
This part of code maintains an Acknowledgment id cache for next hop and remove duplicate ids.
nextHop | to check for in cache |
Definition at line 1042 of file dsr-rcache.cc.
References m_ackIdCache, NS_LOG_FUNCTION, and NS_LOG_LOGIC.
|
inline |
Delete all entries from routing table.
Definition at line 626 of file dsr-rcache.h.
References m_routeEntryVector.
|
inline |
|
private |
decrease the stability of the node
node | the ip address of the node we want to decrease stability |
Definition at line 525 of file dsr-rcache.cc.
References ns3::Time::As(), m_initStability, m_nodeCache, m_stabilityDecrFactor, NS_LOG_FUNCTION, NS_LOG_INFO, and ns3::Time::S.
Referenced by DeleteAllRoutesIncludeLink().
Don't use the provided ARP cache any more (interface is down)
a | ARP cache |
Definition at line 1205 of file dsr-rcache.cc.
References m_arp.
void ns3::dsr::DsrRouteCache::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.
errorSrc | The error source address |
unreachNode | The unreachable node |
node | This node's ip address |
Definition at line 765 of file dsr-rcache.cc.
References ns3::dsr::CompareRoutesExpire(), DecStability(), IsLinkCache(), m_linkCache, m_nodeCache, m_sortedRoutes, m_subRoute, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, Purge(), PurgeLinkNode(), RebuildBestRouteTable(), ns3::dsr::DsrRouteCacheEntry::SetDestination(), ns3::dsr::DsrRouteCacheEntry::SetExpireTime(), ns3::dsr::DsrRouteCacheEntry::SetVector(), and UpdateNetGraph().
bool ns3::dsr::DsrRouteCache::DeleteRoute | ( | Ipv4Address | dst | ) |
Delete the route with certain destination address.
dst | the destination address of the routes that should be deleted |
Definition at line 751 of file dsr-rcache.cc.
References m_sortedRoutes, NS_LOG_FUNCTION, NS_LOG_LOGIC, and Purge().
bool ns3::dsr::DsrRouteCache::FindSameRoute | ( | DsrRouteCacheEntry & | rt, |
std::list< DsrRouteCacheEntry > & | rtVector ) |
Find the same route in the route cache.
rt | entry with destination address dst, if exists |
rtVector | the route vector |
Definition at line 718 of file dsr-rcache.cc.
References ns3::Time::As(), ns3::dsr::CompareRoutesExpire(), ns3::dsr::DsrRouteCacheEntry::GetDestination(), ns3::dsr::DsrRouteCacheEntry::GetExpireTime(), ns3::dsr::DsrRouteCacheEntry::GetVector(), m_sortedRoutes, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::Time::S.
Referenced by AddRoute().
uint16_t ns3::dsr::DsrRouteCache::GetAckSize | ( | ) |
Get the ack table size.
Definition at line 1062 of file dsr-rcache.cc.
References m_ackIdCache.
|
inline |
Get bad link lifetime function.
Definition at line 466 of file dsr-rcache.h.
References m_badLinkLifetime.
|
inline |
Get cache timeout value.
Definition at line 430 of file dsr-rcache.h.
References RouteCacheTimeout.
|
inline |
Handle link failure callback.
Definition at line 745 of file dsr-rcache.h.
References m_handleLinkFailure.
Time ns3::dsr::DsrRouteCache::GetExpireTime | ( | Ipv4Address | addr | ) |
Return expire time for neighbor node with address addr, if exists, else return 0.
addr | IP address |
Definition at line 1087 of file dsr-rcache.cc.
References m_nb, ns3::Simulator::Now(), NS_LOG_FUNCTION, PurgeMac(), and ns3::Seconds().
|
inline |
Get initial stability.
Definition at line 520 of file dsr-rcache.h.
References m_initStability.
|
inline |
Get the max queue length.
Definition at line 412 of file dsr-rcache.h.
References m_maxCacheLen.
|
inline |
Get max entries for each destination.
Definition at line 448 of file dsr-rcache.h.
References m_maxEntriesEachDst.
|
inline |
Get minimum lifetime.
Definition at line 538 of file dsr-rcache.h.
References m_minLifeTime.
|
inline |
Get stability decrease factor.
Definition at line 484 of file dsr-rcache.h.
References m_stabilityDecrFactor.
|
inline |
Get stability increase factor.
Definition at line 502 of file dsr-rcache.h.
References m_stabilityIncrFactor.
|
inline |
Get subroute indicator.
Definition at line 394 of file dsr-rcache.h.
References m_subRoute.
|
static |
Get the type ID.
Definition at line 135 of file dsr-rcache.cc.
References ns3::TypeId::SetParent().
|
inline |
Get use extends.
Definition at line 556 of file dsr-rcache.h.
References m_useExtends.
|
private |
increase the stability of the node
node | the ip address of the node we want to increase stability |
Definition at line 500 of file dsr-rcache.cc.
References ns3::Time::As(), m_initStability, m_nodeCache, m_stabilityIncrFactor, NS_LOG_FUNCTION, NS_LOG_INFO, and ns3::Time::S.
Referenced by UseExtends().
bool ns3::dsr::DsrRouteCache::IsLinkCache | ( | ) |
is link cached
Definition at line 300 of file dsr-rcache.cc.
References m_isLinkCache, and NS_LOG_FUNCTION.
Referenced by DeleteAllRoutesIncludeLink(), and LookupRoute().
bool ns3::dsr::DsrRouteCache::IsNeighbor | ( | Ipv4Address | addr | ) |
Check that node with address addr is neighbor.
This part maintains a neighbor list to handle unidirectional links and link-layer acks.
addr | IP address |
Definition at line 1072 of file dsr-rcache.cc.
References m_nb, NS_LOG_FUNCTION, and PurgeMac().
Mac48Address ns3::dsr::DsrRouteCache::LookupMacAddress | ( | Ipv4Address | addr | ) |
Find MAC address by IP using list of ARP caches.
addr | the IPv4 address to look for |
Definition at line 1211 of file dsr-rcache.cc.
References ns3::Mac48Address::ConvertFrom(), ns3::ArpCache::Entry::GetMacAddress(), ns3::ArpCache::Entry::IsAlive(), ns3::ArpCache::Entry::IsExpired(), ns3::ArpCache::Entry::IsPermanent(), and m_arp.
Referenced by AddNeighbor(), and UpdateNeighbor().
bool ns3::dsr::DsrRouteCache::LookupRoute | ( | Ipv4Address | id, |
DsrRouteCacheEntry & | rt ) |
Lookup route cache entry with destination address dst.
id | destination address |
rt | entry with destination address id, if exists |
Definition at line 202 of file dsr-rcache.cc.
References ns3::dsr::CompareRoutesExpire(), IsLinkCache(), LookupRoute_Link(), m_sortedRoutes, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, Purge(), ns3::dsr::DsrRouteCacheEntry::SetDestination(), ns3::dsr::DsrRouteCacheEntry::SetExpireTime(), and ns3::dsr::DsrRouteCacheEntry::SetVector().
|
private |
used by LookupRoute when LinkCache
id | the ip address we are looking for |
rt | the route cache entry to store the found one |
We need to purge the link node cache
Definition at line 420 of file dsr-rcache.cc.
References ns3::dsr::DsrRouteCacheEntry::GetVector(), m_bestRoutesTable_link, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, PrintVector(), PurgeLinkNode(), RouteCacheTimeout, ns3::dsr::DsrRouteCacheEntry::SetDestination(), ns3::dsr::DsrRouteCacheEntry::SetExpireTime(), and ns3::dsr::DsrRouteCacheEntry::SetVector().
Referenced by LookupRoute().
|
delete |
void ns3::dsr::DsrRouteCache::Print | ( | std::ostream & | os | ) |
Print route cache.
os | the output stream |
Definition at line 1024 of file dsr-rcache.cc.
References m_routeEntryVector, NS_LOG_FUNCTION, and Purge().
void ns3::dsr::DsrRouteCache::PrintRouteVector | ( | std::list< DsrRouteCacheEntry > | route | ) |
Print all the route vector elements from the route list.
route | the route list |
Definition at line 945 of file dsr-rcache.cc.
References NS_LOG_FUNCTION, NS_LOG_INFO, and PrintVector().
void ns3::dsr::DsrRouteCache::PrintVector | ( | std::vector< Ipv4Address > & | vec | ) |
Print the route vector elements.
vec | the route vector |
Definition at line 924 of file dsr-rcache.cc.
References NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by LookupRoute_Link(), PrintRouteVector(), and RebuildBestRouteTable().
void ns3::dsr::DsrRouteCache::ProcessTxError | ( | const WifiMacHeader & | hdr | ) |
Process layer 2 TX error notification.
hdr | Wi-Fi Mac Header |
Definition at line 1227 of file dsr-rcache.cc.
References ns3::WifiMacHeader::GetAddr1(), m_nb, and PurgeMac().
void ns3::dsr::DsrRouteCache::Purge | ( | ) |
Delete all outdated entries and invalidate valid entry if Lifetime is expired.
Definition at line 957 of file dsr-rcache.cc.
References m_sortedRoutes, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::Seconds().
Referenced by AddRoute(), DeleteAllRoutesIncludeLink(), DeleteRoute(), LookupRoute(), and Print().
void ns3::dsr::DsrRouteCache::PurgeLinkNode | ( | ) |
Purge from the cache if the stability time expired.
may need to remove them after verify
Definition at line 450 of file dsr-rcache.cc.
References m_linkCache, m_nodeCache, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Time::S, and ns3::Seconds().
Referenced by AddRoute_Link(), DeleteAllRoutesIncludeLink(), LookupRoute_Link(), and UseExtends().
void ns3::dsr::DsrRouteCache::PurgeMac | ( | ) |
Remove all expired mac entries.
Definition at line 1166 of file dsr-rcache.cc.
References ns3::Timer::Cancel(), m_handleLinkFailure, m_nb, m_ntimer, NS_LOG_LOGIC, and ns3::Timer::Schedule().
Referenced by DsrRouteCache(), AddNeighbor(), GetExpireTime(), IsNeighbor(), ProcessTxError(), and UpdateNeighbor().
void ns3::dsr::DsrRouteCache::RebuildBestRouteTable | ( | Ipv4Address | source | ) |
Rebuild the best route table.
source | The source address used for computing the routes |
The following are initialize-single-source
The following is the core of Dijkstra algorithm
Definition at line 307 of file dsr-rcache.cc.
References ns3::Ipv4Address::IsBroadcast(), m_bestRoutesTable_link, m_linkCache, m_netGraph, MAXWEIGHT, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, and PrintVector().
Referenced by AddRoute_Link(), and DeleteAllRoutesIncludeLink().
void ns3::dsr::DsrRouteCache::RemoveLastEntry | ( | std::list< DsrRouteCacheEntry > & | rtVector | ) |
Remove the aged route cache entries when the route cache is full.
rtVector | the route cache to scan. |
Definition at line 166 of file dsr-rcache.cc.
References NS_LOG_FUNCTION.
Referenced by AddRoute().
void ns3::dsr::DsrRouteCache::ScheduleTimer | ( | ) |
Schedule m_ntimer.
Definition at line 1192 of file dsr-rcache.cc.
References ns3::Timer::Cancel(), m_ntimer, and ns3::Timer::Schedule().
|
inline |
Set bad link lifetime function.
t | the bad link lifetime |
Definition at line 475 of file dsr-rcache.h.
References m_badLinkLifetime.
|
inline |
Set cache timeout value.
t | the cache timeout time |
Definition at line 439 of file dsr-rcache.h.
References RouteCacheTimeout.
void ns3::dsr::DsrRouteCache::SetCacheType | ( | std::string | type | ) |
Dijsktra algorithm to get the best route from m_netGraph and update the m_bestRoutesTable_link when current graph information has changed.
type | The type of the cache |
Definition at line 281 of file dsr-rcache.cc.
References m_isLinkCache, NS_LOG_FUNCTION, and NS_LOG_INFO.
|
inline |
Handle link failure callback.
cb | the callback to be set |
Definition at line 736 of file dsr-rcache.h.
References m_handleLinkFailure.
|
inline |
Set initial stability.
initStability | the initial stability |
Definition at line 529 of file dsr-rcache.h.
References m_initStability.
|
inline |
Set the max queue length.
len | the maximum queue length |
Definition at line 421 of file dsr-rcache.h.
References m_maxCacheLen.
|
inline |
Set max entries for each destination.
entries | the maximum entries for each destination |
Definition at line 457 of file dsr-rcache.h.
References m_maxEntriesEachDst.
|
inline |
Set minimum lifetime.
minLifeTime | the minimum lifetime |
Definition at line 547 of file dsr-rcache.h.
References m_minLifeTime.
|
inline |
Set stability decrease factor.
decrFactor | the stability decrease factor |
Definition at line 493 of file dsr-rcache.h.
References m_stabilityDecrFactor.
|
inline |
Set stability increase factor.
incrFactor | the stability increase factor |
Definition at line 511 of file dsr-rcache.h.
References m_stabilityIncrFactor.
|
inline |
Set subroute indicator.
subRoute | the subroute indicator |
Definition at line 403 of file dsr-rcache.h.
References m_subRoute.
|
inline |
Set use extends.
useExtends | the use extends time |
Definition at line 565 of file dsr-rcache.h.
References m_useExtends.
void ns3::dsr::DsrRouteCache::UpdateNeighbor | ( | std::vector< Ipv4Address > | nodeList, |
Time | expire ) |
Update expire time for entry with address addr, if it exists, else add new entry.
nodeList | list of addresses |
expire | expiration time |
Definition at line 1102 of file dsr-rcache.cc.
References LookupMacAddress(), m_nb, ns3::Simulator::Now(), NS_LOG_FUNCTION, NS_LOG_LOGIC, and PurgeMac().
void ns3::dsr::DsrRouteCache::UpdateNetGraph | ( | ) |
Update the Net Graph for the link and node cache has changed.
Definition at line 485 of file dsr-rcache.cc.
References m_linkCache, m_netGraph, and NS_LOG_FUNCTION.
Referenced by AddRoute_Link(), and DeleteAllRoutesIncludeLink().
bool ns3::dsr::DsrRouteCache::UpdateRouteEntry | ( | Ipv4Address | dst | ) |
Update route cache entry if it has been recently used and successfully delivered the data packet.
dst | destination address of the route |
Definition at line 174 of file dsr-rcache.cc.
References ns3::dsr::CompareRoutesExpire(), m_sortedRoutes, NS_LOG_FUNCTION, NS_LOG_LOGIC, RouteCacheTimeout, and ns3::dsr::DsrRouteCacheEntry::SetExpireTime().
void ns3::dsr::DsrRouteCache::UseExtends | ( | DsrRouteCacheEntry::IP_VECTOR | rt | ) |
When a link from the Route Cache is used in routing a packet originated or salvaged by that node, the stability metric for each of the two endpoint nodes of that link is incremented by the amount of time since that link was last used.
When a link is used in a route chosen for a packet originated or salvaged by this node, the link's lifetime is set to be at least UseExtends into the future
rt | cache entry |
Purge the link node cache first
Increase the stability of the node cache
Definition at line 599 of file dsr-rcache.cc.
References IncStability(), m_initStability, m_linkCache, m_nodeCache, m_useExtends, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, PurgeLinkNode(), and ns3::Time::S.
|
private |
The id cache to ensure all the ids are unique.
Definition at line 778 of file dsr-rcache.h.
Referenced by CheckUniqueAckId(), and GetAckSize().
list of ARP cached to be used for layer 2 notifications processing
Definition at line 873 of file dsr-rcache.h.
Referenced by AddArpCache(), DelArpCache(), and LookupMacAddress().
|
private |
The time for which the neighboring node is put into the blacklist.
Definition at line 757 of file dsr-rcache.h.
Referenced by GetBadLinkLifetime(), and SetBadLinkLifetime().
|
private |
for link route cache
Definition at line 796 of file dsr-rcache.h.
Referenced by LookupRoute_Link(), and RebuildBestRouteTable().
Time ns3::dsr::DsrRouteCache::m_delay |
This timeout deals with the passive ack.
Definition at line 875 of file dsr-rcache.h.
Referenced by DsrRouteCache().
Callback<void, Ipv4Address, uint8_t> ns3::dsr::DsrRouteCache::m_handleLinkFailure |
The following code handles link-layer acks.
link failure callback
Definition at line 866 of file dsr-rcache.h.
Referenced by GetCallback(), PurgeMac(), and SetCallback().
|
private |
initial stability
Definition at line 763 of file dsr-rcache.h.
Referenced by AddRoute_Link(), DecStability(), GetInitStability(), IncStability(), SetInitStability(), and UseExtends().
|
private |
Check if the route is using path cache or link cache.
Definition at line 780 of file dsr-rcache.h.
Referenced by IsLinkCache(), and SetCacheType().
|
private |
The data structure to store link info.
Definition at line 797 of file dsr-rcache.h.
Referenced by AddRoute_Link(), DeleteAllRoutesIncludeLink(), PurgeLinkNode(), RebuildBestRouteTable(), UpdateNetGraph(), and UseExtends().
|
private |
The maximum number of packets that we allow a routing protocol to buffer.
Definition at line 753 of file dsr-rcache.h.
Referenced by GetMaxCacheLen(), and SetMaxCacheLen().
|
private |
number of entries for each destination
Definition at line 776 of file dsr-rcache.h.
Referenced by AddRoute(), GetMaxEntriesEachDst(), and SetMaxEntriesEachDst().
|
private |
minimum lifetime
Definition at line 764 of file dsr-rcache.h.
Referenced by AddRoute_Link(), GetMinLifeTime(), and SetMinLifeTime().
std::vector<Neighbor> ns3::dsr::DsrRouteCache::m_nb |
vector of entries
Definition at line 870 of file dsr-rcache.h.
Referenced by AddNeighbor(), ClearMac(), GetExpireTime(), IsNeighbor(), ProcessTxError(), PurgeMac(), and UpdateNeighbor().
|
private |
Current network graph state for this node, double is weight, which is calculated by the node information and link information, any time some changes of link cache and node cache change the weight and then recompute the best choice for each node.
Definition at line 793 of file dsr-rcache.h.
Referenced by RebuildBestRouteTable(), and UpdateNetGraph().
|
private |
The data structure to store node info.
Definition at line 798 of file dsr-rcache.h.
Referenced by AddRoute_Link(), DecStability(), DeleteAllRoutesIncludeLink(), IncStability(), PurgeLinkNode(), and UseExtends().
Timer ns3::dsr::DsrRouteCache::m_ntimer |
Timer for neighbor's list. Schedule Purge().
Definition at line 868 of file dsr-rcache.h.
Referenced by DsrRouteCache(), PurgeMac(), and ScheduleTimer().
|
private |
Define the route vector.
Definition at line 774 of file dsr-rcache.h.
|
private |
Map the ipv4Address to route entry vector.
Definition at line 772 of file dsr-rcache.h.
Referenced by ~DsrRouteCache(), AddRoute(), DeleteAllRoutesIncludeLink(), DeleteRoute(), FindSameRoute(), LookupRoute(), Purge(), and UpdateRouteEntry().
|
private |
stability decrease factor
Definition at line 761 of file dsr-rcache.h.
Referenced by DecStability(), GetStabilityDecrFactor(), and SetStabilityDecrFactor().
|
private |
stability increase factor
Definition at line 762 of file dsr-rcache.h.
Referenced by GetStabilityIncrFactor(), IncStability(), and SetStabilityIncrFactor().
|
private |
Check if save the sub route entries or not.
Definition at line 782 of file dsr-rcache.h.
Referenced by DeleteAllRoutesIncludeLink(), GetSubRoute(), and SetSubRoute().
|
private |
use extend
Definition at line 765 of file dsr-rcache.h.
Referenced by GetUseExtends(), SetUseExtends(), and UseExtends().
|
private |
The route vector to save the ip addresses for intermediate nodes.
Definition at line 752 of file dsr-rcache.h.
|
private |
The maximum period of time that dsr is allowed to for an unused route.
Definition at line 755 of file dsr-rcache.h.
Referenced by GetCacheTimeout(), LookupRoute_Link(), SetCacheTimeout(), and UpdateRouteEntry().