A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::dot11s::HwmpProtocol Class Reference

Hybrid wireless mesh protocol – a routing protocol of IEEE 802.11s draft. More...

#include <hwmp-protocol.h>

+ Inheritance diagram for ns3::dot11s::HwmpProtocol:
+ Collaboration diagram for ns3::dot11s::HwmpProtocol:

Classes

struct  FailedDestination
 structure of unreachable destination - address and sequence number More...
struct  PathError
 Structure of path error: IePerr and list of receivers: interfaces and MAC address. More...
struct  PreqEvent
struct  QueuedPacket
 Packet waiting its routing information. More...
struct  Statistics

Public Member Functions

 HwmpProtocol ()
 ~HwmpProtocol ()
int64_t AssignStreams (int64_t stream)
void DoDispose ()
bool Install (Ptr< MeshPointDevice >)
 Install HWMP on given mesh point.
void PeerLinkStatus (Mac48Address meshPontAddress, Mac48Address peerAddress, uint32_t interface, bool status)
bool RemoveRoutingStuff (uint32_t fromIface, const Mac48Address source, const Mac48Address destination, Ptr< Packet > packet, uint16_t &protocolType)
 Cleanup packet from all tags.
void Report (std::ostream &) const
 Statistics:
bool RequestRoute (uint32_t sourceIface, const Mac48Address source, const Mac48Address destination, Ptr< const Packet > packet, uint16_t protocolType, RouteReplyCallback routeReply)
 Route request, inherited from MeshL2RoutingProtocol.
void ResetStats ()
void SetNeighboursCallback (Callback< std::vector< Mac48Address >, uint32_t > cb)
 This callback is used to obtain active neighbours on a given interface.
Proactive PREQ mechanism:
void SetRoot ()
void UnsetRoot ()
- Public Member Functions inherited from ns3::MeshL2RoutingProtocol
virtual ~MeshL2RoutingProtocol ()
 virtual D-tor for subclasses
Ptr< MeshPointDeviceGetMeshPoint () const
 Each mesh protocol must be installed on the mesh point to work.
void SetMeshPoint (Ptr< MeshPointDevice > mp)
 Set host mesh point, analog of SetNode (...) methods for upper layer protocols.
- Public Member Functions inherited from ns3::Object
 Object ()
virtual ~Object ()
void AggregateObject (Ptr< Object > other)
void Dispose (void)
AggregateIterator GetAggregateIterator (void) const
virtual TypeId GetInstanceTypeId (void) const
template<typename T >
Ptr< T > GetObject (void) const
template<typename T >
Ptr< T > GetObject (TypeId tid) const
void Start (void)
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 SimpleRefCount (const SimpleRefCount &o)
uint32_t GetReferenceCount (void) const
SimpleRefCountoperator= (const SimpleRefCount &o)
void Ref (void) const
void Unref (void) const
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
void GetAttribute (std::string name, AttributeValue &value) const
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
void SetAttribute (std::string name, const AttributeValue &value)
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)

Static Public Member Functions

static TypeId GetTypeId ()
 This method returns the TypeId associated to ns3::dot11s::HwmpProtocol.

Private Types

typedef std::map< uint32_t,
Ptr< HwmpProtocolMac > > 
HwmpProtocolMacMap

Private Member Functions

 HwmpProtocol (const HwmpProtocol &)
virtual void DoStart ()
bool ForwardUnicast (uint32_t sourceIface, const Mac48Address source, const Mac48Address destination, Ptr< Packet > packet, uint16_t protocolType, RouteReplyCallback routeReply, uint32_t ttl)
 Like RequestRoute, but for unicast packets.
Mac48Address GetAddress ()
HwmpProtocoloperator= (const HwmpProtocol &)
Interaction with HWMP MAC plugin
void ReceivePreq (IePreq preq, Mac48Address from, uint32_t interface, Mac48Address fromMp, uint32_t metric)
void ReceivePrep (IePrep prep, Mac48Address from, uint32_t interface, Mac48Address fromMp, uint32_t metric)
void ReceivePerr (std::vector< FailedDestination >, Mac48Address from, uint32_t interface, Mac48Address fromMp)
void SendPrep (Mac48Address src, Mac48Address dst, Mac48Address retransmitter, uint32_t initMetric, uint32_t originatorDsn, uint32_t destinationSN, uint32_t lifetime, uint32_t interface)
PathError MakePathError (std::vector< FailedDestination > destinations)
 forms a path error information element when list of destination fails on a given interface
void ForwardPathError (PathError perr)
 Forwards a received path error.
void InitiatePathError (PathError perr)
 Passes a self-generated PERR to interface-plugin.
std::vector< std::pair
< uint32_t, Mac48Address > > 
GetPerrReceivers (std::vector< FailedDestination > failedDest)
std::vector< Mac48AddressGetPreqReceivers (uint32_t interface)
std::vector< Mac48AddressGetBroadcastReceivers (uint32_t interface)
bool DropDataFrame (uint32_t seqno, Mac48Address source)
 MAC-plugin asks whether the frame can be dropped. Protocol automatically updates seqno.
Methods related to Queue/Dequeue procedures
bool QueuePacket (QueuedPacket packet)
QueuedPacket DequeueFirstPacketByDst (Mac48Address dst)
QueuedPacket DequeueFirstPacket ()
void ReactivePathResolved (Mac48Address dst)
void ProactivePathResolved ()
Methods responsible for path discovery retry procedure:
bool ShouldSendPreq (Mac48Address dst)
 checks when the last path discovery procedure was started for a given destination.
void RetryPathDiscovery (Mac48Address dst, uint8_t numOfRetry)
 Generates PREQ retry when retry timeout has expired and route is still unresolved.
void SendProactivePreq ()
 Proactive Preq routines:
Methods needed by HwmpMacLugin to access protocol parameters:
bool GetDoFlag ()
bool GetRfFlag ()
Time GetPreqMinInterval ()
Time GetPerrMinInterval ()
uint8_t GetMaxTtl ()
uint32_t GetNextPreqId ()
uint32_t GetNextHwmpSeqno ()
uint32_t GetActivePathLifetime ()
uint8_t GetUnicastPerrThreshold ()

Private Attributes

Mac48Address m_address
Ptr< UniformRandomVariablem_coefficient
uint32_t m_dataSeqno
uint32_t m_hwmpSeqno
HwmpProtocolMacMap m_interfaces
Callback< std::vector
< Mac48Address >, uint32_t > 
m_neighboursCallback
uint32_t m_preqId
TracedCallback< Timem_routeDiscoveryTimeCallback
 Route discovery time:
std::vector< QueuedPacketm_rqueue
Ptr< HwmpRtablem_rtable
 Routing table.
Statistics:
Statistics m_stats
Sequence number filters

Data sequence number database

std::map< Mac48Address, uint32_t > m_lastDataSeqno
std::map< Mac48Address,
std::pair< uint32_t, uint32_t > > 
m_hwmpSeqnoMetricDatabase
 keeps HWMP seqno (first in pair) and HWMP metric (second in pair) for each address
Timers:
std::map< Mac48Address, PreqEventm_preqTimeouts
EventId m_proactivePreqTimer
Time m_randomStart
 Random start in Proactive PREQ propagation.
HWMP-protocol parameters (attributes of GetTypeId)
uint16_t m_maxQueueSize
uint8_t m_dot11MeshHWMPmaxPREQretries
Time m_dot11MeshHWMPnetDiameterTraversalTime
Time m_dot11MeshHWMPpreqMinInterval
Time m_dot11MeshHWMPperrMinInterval
Time m_dot11MeshHWMPactiveRootTimeout
Time m_dot11MeshHWMPactivePathTimeout
Time m_dot11MeshHWMPpathToRootInterval
Time m_dot11MeshHWMPrannInterval
bool m_isRoot
uint8_t m_maxTtl
uint8_t m_unicastPerrThreshold
uint8_t m_unicastPreqThreshold
uint8_t m_unicastDataThreshold
bool m_doFlag
bool m_rfFlag

Friends

class HwmpProtocolMac

Additional Inherited Members

- Public Types inherited from ns3::MeshL2RoutingProtocol
typedef Callback< void, bool,
Ptr< Packet >, Mac48Address,
Mac48Address, uint16_t,
uint32_t > 
RouteReplyCallback
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
virtual void DoStart (void)
virtual void NotifyNewAggregate (void)
- Protected Attributes inherited from ns3::MeshL2RoutingProtocol
Ptr< MeshPointDevicem_mp
 Host mesh point.

Detailed Description

Hybrid wireless mesh protocol – a routing protocol of IEEE 802.11s draft.

Definition at line 47 of file hwmp-protocol.h.

Member Typedef Documentation

typedef std::map<uint32_t, Ptr<HwmpProtocolMac> > ns3::dot11s::HwmpProtocol::HwmpProtocolMacMap
private

Definition at line 128 of file hwmp-protocol.h.

Constructor & Destructor Documentation

ns3::dot11s::HwmpProtocol::HwmpProtocol ( )

Definition at line 171 of file hwmp-protocol.cc.

References m_coefficient, and NS_LOG_FUNCTION_NOARGS.

ns3::dot11s::HwmpProtocol::~HwmpProtocol ( )

Definition at line 198 of file hwmp-protocol.cc.

References NS_LOG_FUNCTION_NOARGS.

ns3::dot11s::HwmpProtocol::HwmpProtocol ( const HwmpProtocol )
private

Member Function Documentation

int64_t ns3::dot11s::HwmpProtocol::AssignStreams ( int64_t  stream)

Assign a fixed random variable stream number to the random variables used by this model. Return the number of streams (possibly zero) that have been assigned.

Parameters
streamfirst stream index to use
Returns
the number of stream indices assigned by this model

Definition at line 1173 of file hwmp-protocol.cc.

References m_coefficient, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().

Referenced by ns3::dot11s::HwmpProtocolMac::AssignStreams().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HwmpProtocol::QueuedPacket ns3::dot11s::HwmpProtocol::DequeueFirstPacket ( )
private

Definition at line 902 of file hwmp-protocol.cc.

References m_rqueue, and ns3::dot11s::HwmpProtocol::QueuedPacket::pkt.

Referenced by ProactivePathResolved().

+ Here is the caller graph for this function:

HwmpProtocol::QueuedPacket ns3::dot11s::HwmpProtocol::DequeueFirstPacketByDst ( Mac48Address  dst)
private

Definition at line 885 of file hwmp-protocol.cc.

References m_rqueue, and ns3::dot11s::HwmpProtocol::QueuedPacket::pkt.

Referenced by ReactivePathResolved(), and RetryPathDiscovery().

+ Here is the caller graph for this function:

void ns3::dot11s::HwmpProtocol::DoDispose ( void  )
virtual

This method is called by Object::Dispose or by the object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.

It is safe to call GetObject from within this method.

Reimplemented from ns3::Object.

Definition at line 214 of file hwmp-protocol.cc.

References ns3::EventId::Cancel(), m_hwmpSeqnoMetricDatabase, m_interfaces, m_lastDataSeqno, ns3::MeshL2RoutingProtocol::m_mp, m_preqTimeouts, m_proactivePreqTimer, m_rqueue, m_rtable, and NS_LOG_FUNCTION_NOARGS.

+ Here is the call graph for this function:

void ns3::dot11s::HwmpProtocol::DoStart ( void  )
privatevirtual

Definition at line 204 of file hwmp-protocol.cc.

References ns3::Time::GetSeconds(), m_coefficient, m_isRoot, m_randomStart, ns3::ObjectBase::SetAttribute(), and SetRoot().

+ Here is the call graph for this function:

bool ns3::dot11s::HwmpProtocol::DropDataFrame ( uint32_t  seqno,
Mac48Address  source 
)
private

MAC-plugin asks whether the frame can be dropped. Protocol automatically updates seqno.

Returns
true if frame can be dropped
Parameters
seqnois the sequence number of source
sourceis the source address

Definition at line 743 of file hwmp-protocol.cc.

References GetAddress(), and m_lastDataSeqno.

Referenced by ns3::dot11s::HwmpProtocolMac::ReceiveData().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::dot11s::HwmpProtocol::ForwardPathError ( PathError  perr)
private

Forwards a received path error.

Definition at line 799 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpProtocol::PathError::destinations, m_interfaces, and ns3::dot11s::HwmpProtocol::PathError::receivers.

Referenced by ReceivePerr().

+ Here is the caller graph for this function:

bool ns3::dot11s::HwmpProtocol::ForwardUnicast ( uint32_t  sourceIface,
const Mac48Address  source,
const Mac48Address  destination,
Ptr< Packet packet,
uint16_t  protocolType,
RouteReplyCallback  routeReply,
uint32_t  ttl 
)
private

Like RequestRoute, but for unicast packets.

Definition at line 324 of file hwmp-protocol.cc.

References ns3::Packet::AddPacketTag(), ns3::dot11s::HwmpProtocol::QueuedPacket::dst, GetAddress(), ns3::Mac48Address::GetBroadcast(), ns3::MeshL2RoutingProtocol::GetMeshPoint(), GetNextHwmpSeqno(), ns3::Packet::GetSize(), ns3::dot11s::HwmpRtable::GetUnreachableDestinations(), ns3::dot11s::HwmpRtable::LookupResult::ifIndex, ns3::dot11s::HwmpProtocol::QueuedPacket::inInterface, ns3::dot11s::HwmpProtocol::Statistics::initiatedPreq, InitiatePathError(), ns3::dot11s::HwmpRtable::LookupProactive(), ns3::dot11s::HwmpRtable::LookupProactiveExpired(), ns3::dot11s::HwmpRtable::LookupReactive(), ns3::dot11s::HwmpRtable::LookupReactiveExpired(), m_interfaces, m_rtable, m_stats, MakePathError(), NS_ASSERT, NS_LOG_DEBUG, ns3::dot11s::HwmpProtocol::QueuedPacket::pkt, ns3::dot11s::HwmpProtocol::QueuedPacket::protocol, QueuePacket(), ns3::dot11s::HwmpProtocol::QueuedPacket::reply, ns3::dot11s::HwmpRtable::LookupResult::retransmitter, ns3::dot11s::HwmpRtable::LookupResult::seqnum, ns3::dot11s::HwmpTag::SetAddress(), ns3::dot11s::HwmpTag::SetTtl(), ShouldSendPreq(), ns3::dot11s::HwmpProtocol::QueuedPacket::src, ns3::dot11s::HwmpProtocol::Statistics::totalDropped, ns3::dot11s::HwmpProtocol::Statistics::totalQueued, ns3::dot11s::HwmpProtocol::Statistics::txBytes, and ns3::dot11s::HwmpProtocol::Statistics::txUnicast.

Referenced by RequestRoute().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32_t ns3::dot11s::HwmpProtocol::GetActivePathLifetime ( )
private

Definition at line 1094 of file hwmp-protocol.cc.

References ns3::Time::GetMicroSeconds(), and m_dot11MeshHWMPactivePathTimeout.

Referenced by ns3::dot11s::HwmpProtocolMac::RequestDestination().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::vector< Mac48Address > ns3::dot11s::HwmpProtocol::GetBroadcastReceivers ( uint32_t  interface)
private
Returns
list of addresses where a broadcast should be

Definition at line 858 of file hwmp-protocol.cc.

References ns3::Mac48Address::GetBroadcast(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_neighboursCallback, and m_unicastDataThreshold.

Referenced by RequestRoute().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::dot11s::HwmpProtocol::GetDoFlag ( )
private

Definition at line 1057 of file hwmp-protocol.cc.

References m_doFlag.

Referenced by ns3::dot11s::HwmpProtocolMac::RequestDestination().

+ Here is the caller graph for this function:

uint8_t ns3::dot11s::HwmpProtocol::GetMaxTtl ( )
private

Definition at line 1077 of file hwmp-protocol.cc.

References m_maxTtl.

Referenced by ns3::dot11s::HwmpProtocolMac::RequestDestination().

+ Here is the caller graph for this function:

uint32_t ns3::dot11s::HwmpProtocol::GetNextHwmpSeqno ( )
private

Definition at line 1088 of file hwmp-protocol.cc.

References m_hwmpSeqno.

Referenced by ForwardUnicast(), ReceivePreq(), RetryPathDiscovery(), and SendProactivePreq().

+ Here is the caller graph for this function:

uint32_t ns3::dot11s::HwmpProtocol::GetNextPreqId ( )
private

Definition at line 1082 of file hwmp-protocol.cc.

References m_preqId.

Referenced by ns3::dot11s::HwmpProtocolMac::RequestDestination(), and SendProactivePreq().

+ Here is the caller graph for this function:

Time ns3::dot11s::HwmpProtocol::GetPerrMinInterval ( )
private

Definition at line 1072 of file hwmp-protocol.cc.

References m_dot11MeshHWMPperrMinInterval.

Referenced by ns3::dot11s::HwmpProtocolMac::SendMyPerr().

+ Here is the caller graph for this function:

std::vector< std::pair< uint32_t, Mac48Address > > ns3::dot11s::HwmpProtocol::GetPerrReceivers ( std::vector< FailedDestination failedDest)
private
Returns
list of addresses where a PERR should be sent to

Definition at line 816 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpRtable::DeleteProactivePath(), ns3::dot11s::HwmpRtable::DeleteReactivePath(), ns3::dot11s::HwmpRtable::GetPrecursors(), and m_rtable.

Referenced by MakePathError().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Time ns3::dot11s::HwmpProtocol::GetPreqMinInterval ( )
private

Definition at line 1067 of file hwmp-protocol.cc.

References m_dot11MeshHWMPpreqMinInterval.

Referenced by ns3::dot11s::HwmpProtocolMac::SendMyPreq().

+ Here is the caller graph for this function:

std::vector< Mac48Address > ns3::dot11s::HwmpProtocol::GetPreqReceivers ( uint32_t  interface)
private
Returns
list of addresses where a PERR should be sent to

Definition at line 843 of file hwmp-protocol.cc.

References ns3::Mac48Address::GetBroadcast(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_neighboursCallback, and m_unicastPreqThreshold.

Referenced by ns3::dot11s::HwmpProtocolMac::SendPreq().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::dot11s::HwmpProtocol::GetRfFlag ( )
private

Definition at line 1062 of file hwmp-protocol.cc.

References m_rfFlag.

Referenced by ns3::dot11s::HwmpProtocolMac::RequestDestination().

+ Here is the caller graph for this function:

TypeId ns3::dot11s::HwmpProtocol::GetTypeId ( void  )
static

This method returns the TypeId associated to ns3::dot11s::HwmpProtocol.

This object is accessible through the following paths with Config::Set and Config::Connect:

  • /NodeList/[i]/DeviceList/[i]/$ns3::MeshPointDevice/RoutingProtocol/$ns3::dot11s::HwmpProtocol

Attributes defined for this type:

  • RandomStart: Random delay at first proactive PREQ
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +100000000.0ns
    • Flags: construct write read
  • MaxQueueSize: Maximum number of packets we can store when resolving route
  • Dot11MeshHWMPmaxPREQretries: Maximum number of retries before we suppose the destination to be unreachable
  • Dot11MeshHWMPnetDiameterTraversalTime: Time we suppose the packet to go from one edge of the network to another
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +102400000.0ns
    • Flags: construct write read
  • Dot11MeshHWMPpreqMinInterval: Minimal interval between to successive PREQs
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +102400000.0ns
    • Flags: construct write read
  • Dot11MeshHWMPperrMinInterval: Minimal interval between to successive PREQs
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +102400000.0ns
    • Flags: construct write read
  • Dot11MeshHWMPactiveRootTimeout: Lifetime of poractive routing information
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +5120000000.0ns
    • Flags: construct write read
  • Dot11MeshHWMPactivePathTimeout: Lifetime of reactive routing information
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +5120000000.0ns
    • Flags: construct write read
  • Dot11MeshHWMPpathToRootInterval: Interval between two successive proactive PREQs
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +2048000000.0ns
    • Flags: construct write read
  • Dot11MeshHWMPrannInterval: Lifetime of poractive routing information
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +5120000000.0ns
    • Flags: construct write read
  • MaxTtl: Initial value of Time To Live field
  • UnicastPerrThreshold: Maximum number of PERR receivers, when we send a PERR as a chain of unicasts
  • UnicastPreqThreshold: Maximum number of PREQ receivers, when we send a PREQ as a chain of unicasts
  • UnicastDataThreshold: Maximum number ofbroadcast receivers, when we send a broadcast as a chain of unicasts
  • DoFlag: Destination only HWMP flag
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: false
    • Flags: construct write read
  • RfFlag: Reply and forward flag
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read

TraceSources defined for this type:

  • RouteDiscoveryTime: The time of route discovery procedure

Reimplemented from ns3::MeshL2RoutingProtocol.

Definition at line 46 of file hwmp-protocol.cc.

References m_doFlag, m_dot11MeshHWMPactivePathTimeout, m_dot11MeshHWMPactiveRootTimeout, m_dot11MeshHWMPmaxPREQretries, m_dot11MeshHWMPnetDiameterTraversalTime, m_dot11MeshHWMPpathToRootInterval, m_dot11MeshHWMPperrMinInterval, m_dot11MeshHWMPpreqMinInterval, m_dot11MeshHWMPrannInterval, m_maxQueueSize, m_maxTtl, m_randomStart, m_rfFlag, m_routeDiscoveryTimeCallback, m_unicastDataThreshold, m_unicastPerrThreshold, m_unicastPreqThreshold, ns3::MakeTraceSourceAccessor(), ns3::MicroSeconds(), ns3::Seconds(), and ns3::TypeId::SetParent().

+ Here is the call graph for this function:

uint8_t ns3::dot11s::HwmpProtocol::GetUnicastPerrThreshold ( )
private

Definition at line 1099 of file hwmp-protocol.cc.

References m_unicastPerrThreshold.

Referenced by ns3::dot11s::HwmpProtocolMac::ForwardPerr().

+ Here is the caller graph for this function:

void ns3::dot11s::HwmpProtocol::InitiatePathError ( PathError  perr)
private

Passes a self-generated PERR to interface-plugin.

Definition at line 783 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpProtocol::PathError::destinations, m_interfaces, and ns3::dot11s::HwmpProtocol::PathError::receivers.

Referenced by ForwardUnicast(), and PeerLinkStatus().

+ Here is the caller graph for this function:

bool ns3::dot11s::HwmpProtocol::Install ( Ptr< MeshPointDevice mp)

Install HWMP on given mesh point.

Installing protocol cause installing its interface MAC plugins.

Also MP aggregates all installed protocols, HWMP protocol can be accessed via MeshPointDevice::GetObject<dot11s::HwmpProtocol>();

Definition at line 696 of file hwmp-protocol.cc.

References ns3::Object::AggregateObject(), ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric(), ns3::Mac48Address::ConvertFrom(), ns3::MeshPointDevice::GetAddress(), ns3::MeshPointDevice::GetInterfaces(), ns3::MeshWifiInterfaceMac::InstallPlugin(), m_address, m_interfaces, ns3::MeshL2RoutingProtocol::m_mp, ns3::MakeCallback(), ns3::MeshWifiInterfaceMac::SetLinkMetricCallback(), and ns3::MeshPointDevice::SetRoutingProtocol().

Referenced by ns3::Dot11sStack::InstallStack().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HwmpProtocol::PathError ns3::dot11s::HwmpProtocol::MakePathError ( std::vector< FailedDestination destinations)
private

forms a path error information element when list of destination fails on a given interface

Attention
removes all entries from routing table!

Definition at line 765 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpRtable::DeleteReactivePath(), ns3::dot11s::HwmpProtocol::PathError::destinations, GetPerrReceivers(), ns3::dot11s::HwmpProtocol::Statistics::initiatedPerr, m_rtable, m_stats, and ns3::dot11s::HwmpProtocol::PathError::receivers.

Referenced by ForwardUnicast(), PeerLinkStatus(), and ReceivePerr().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HwmpProtocol& ns3::dot11s::HwmpProtocol::operator= ( const HwmpProtocol )
private
void ns3::dot11s::HwmpProtocol::PeerLinkStatus ( Mac48Address  meshPontAddress,
Mac48Address  peerAddress,
uint32_t  interface,
bool  status 
)

Definition at line 728 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpRtable::GetUnreachableDestinations(), InitiatePathError(), m_rtable, and MakePathError().

Referenced by ns3::Dot11sStack::InstallStack().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::dot11s::HwmpProtocol::QueuePacket ( QueuedPacket  packet)
private

Definition at line 874 of file hwmp-protocol.cc.

References m_maxQueueSize, and m_rqueue.

Referenced by ForwardUnicast().

+ Here is the caller graph for this function:

void ns3::dot11s::HwmpProtocol::ReceivePerr ( std::vector< FailedDestination destinations,
Mac48Address  from,
uint32_t  interface,
Mac48Address  fromMp 
)
private
bool ns3::dot11s::HwmpProtocol::RemoveRoutingStuff ( uint32_t  fromIface,
const Mac48Address  source,
const Mac48Address  destination,
Ptr< Packet packet,
uint16_t &  protocolType 
)
virtual

Cleanup packet from all tags.

Implements ns3::MeshL2RoutingProtocol.

Definition at line 313 of file hwmp-protocol.cc.

References NS_FATAL_ERROR, and ns3::Packet::RemovePacketTag().

+ Here is the call graph for this function:

void ns3::dot11s::HwmpProtocol::ResetStats ( )

Definition at line 1163 of file hwmp-protocol.cc.

References m_interfaces, and m_stats.

Referenced by ns3::Dot11sStack::ResetStats().

+ Here is the caller graph for this function:

void ns3::dot11s::HwmpProtocol::SendPrep ( Mac48Address  src,
Mac48Address  dst,
Mac48Address  retransmitter,
uint32_t  initMetric,
uint32_t  originatorDsn,
uint32_t  destinationSN,
uint32_t  lifetime,
uint32_t  interface 
)
private
void ns3::dot11s::HwmpProtocol::SetNeighboursCallback ( Callback< std::vector< Mac48Address >, uint32_t >  cb)

This callback is used to obtain active neighbours on a given interface.

Parameters
cbis a callback, which returns a list of addresses on given interface (uint32_t)

Definition at line 738 of file hwmp-protocol.cc.

References m_neighboursCallback.

Referenced by ns3::Dot11sStack::InstallStack().

+ Here is the caller graph for this function:

void ns3::dot11s::HwmpProtocol::SetRoot ( )

Definition at line 1024 of file hwmp-protocol.cc.

References ns3::UniformRandomVariable::GetValue(), m_address, m_coefficient, m_isRoot, m_proactivePreqTimer, NS_LOG_DEBUG, ns3::Simulator::Schedule(), ns3::Seconds(), and SendProactivePreq().

Referenced by DoStart(), and ns3::Dot11sStack::InstallStack().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::dot11s::HwmpProtocol::ShouldSendPreq ( Mac48Address  dst)
private

checks when the last path discovery procedure was started for a given destination.

If the retry counter has not achieved the maximum level - preq should not be sent

Definition at line 967 of file hwmp-protocol.cc.

References m_dot11MeshHWMPnetDiameterTraversalTime, m_preqTimeouts, ns3::Now(), RetryPathDiscovery(), and ns3::Simulator::Schedule().

Referenced by ForwardUnicast().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::dot11s::HwmpProtocol::UnsetRoot ( )

Definition at line 1032 of file hwmp-protocol.cc.

References ns3::EventId::Cancel(), and m_proactivePreqTimer.

+ Here is the call graph for this function:

Friends And Related Function Documentation

friend class HwmpProtocolMac
friend

Definition at line 100 of file hwmp-protocol.h.

Member Data Documentation

Mac48Address ns3::dot11s::HwmpProtocol::m_address
private

Definition at line 236 of file hwmp-protocol.h.

Referenced by GetAddress(), Install(), Report(), and SetRoot().

Ptr<UniformRandomVariable> ns3::dot11s::HwmpProtocol::m_coefficient
private

Random variable for random start time

Definition at line 284 of file hwmp-protocol.h.

Referenced by AssignStreams(), DoStart(), HwmpProtocol(), and SetRoot().

uint32_t ns3::dot11s::HwmpProtocol::m_dataSeqno
private

Definition at line 237 of file hwmp-protocol.h.

Referenced by RequestRoute().

bool ns3::dot11s::HwmpProtocol::m_doFlag
private

Definition at line 280 of file hwmp-protocol.h.

Referenced by GetDoFlag(), GetTypeId(), and Report().

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPactivePathTimeout
private

Definition at line 272 of file hwmp-protocol.h.

Referenced by GetActivePathLifetime(), GetTypeId(), and Report().

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPactiveRootTimeout
private

Definition at line 271 of file hwmp-protocol.h.

Referenced by GetTypeId(), Report(), and SendProactivePreq().

uint8_t ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPmaxPREQretries
private

Definition at line 267 of file hwmp-protocol.h.

Referenced by GetTypeId(), Report(), and RetryPathDiscovery().

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPnetDiameterTraversalTime
private

Definition at line 268 of file hwmp-protocol.h.

Referenced by GetTypeId(), Report(), RetryPathDiscovery(), and ShouldSendPreq().

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPpathToRootInterval
private

Definition at line 273 of file hwmp-protocol.h.

Referenced by GetTypeId(), Report(), and SendProactivePreq().

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPperrMinInterval
private

Definition at line 270 of file hwmp-protocol.h.

Referenced by GetPerrMinInterval(), GetTypeId(), and Report().

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPpreqMinInterval
private

Definition at line 269 of file hwmp-protocol.h.

Referenced by GetPreqMinInterval(), GetTypeId(), and Report().

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPrannInterval
private

Definition at line 274 of file hwmp-protocol.h.

Referenced by GetTypeId(), and Report().

uint32_t ns3::dot11s::HwmpProtocol::m_hwmpSeqno
private

Definition at line 238 of file hwmp-protocol.h.

Referenced by GetNextHwmpSeqno().

std::map<Mac48Address, std::pair<uint32_t, uint32_t> > ns3::dot11s::HwmpProtocol::m_hwmpSeqnoMetricDatabase
private

keeps HWMP seqno (first in pair) and HWMP metric (second in pair) for each address

Definition at line 245 of file hwmp-protocol.h.

Referenced by DoDispose(), ReceivePrep(), and ReceivePreq().

bool ns3::dot11s::HwmpProtocol::m_isRoot
private

Definition at line 275 of file hwmp-protocol.h.

Referenced by DoStart(), Report(), and SetRoot().

std::map<Mac48Address, uint32_t> ns3::dot11s::HwmpProtocol::m_lastDataSeqno
private

Definition at line 243 of file hwmp-protocol.h.

Referenced by DoDispose(), and DropDataFrame().

uint16_t ns3::dot11s::HwmpProtocol::m_maxQueueSize
private

Definition at line 266 of file hwmp-protocol.h.

Referenced by GetTypeId(), QueuePacket(), and Report().

uint8_t ns3::dot11s::HwmpProtocol::m_maxTtl
private

Definition at line 276 of file hwmp-protocol.h.

Referenced by GetMaxTtl(), GetTypeId(), Report(), RequestRoute(), SendPrep(), and SendProactivePreq().

Callback<std::vector<Mac48Address>, uint32_t> ns3::dot11s::HwmpProtocol::m_neighboursCallback
private

Definition at line 285 of file hwmp-protocol.h.

Referenced by GetBroadcastReceivers(), GetPreqReceivers(), and SetNeighboursCallback().

uint32_t ns3::dot11s::HwmpProtocol::m_preqId
private

Definition at line 239 of file hwmp-protocol.h.

Referenced by GetNextPreqId().

std::map<Mac48Address, PreqEvent> ns3::dot11s::HwmpProtocol::m_preqTimeouts
private
EventId ns3::dot11s::HwmpProtocol::m_proactivePreqTimer
private

Definition at line 258 of file hwmp-protocol.h.

Referenced by DoDispose(), SendProactivePreq(), SetRoot(), and UnsetRoot().

Time ns3::dot11s::HwmpProtocol::m_randomStart
private

Random start in Proactive PREQ propagation.

Definition at line 260 of file hwmp-protocol.h.

Referenced by DoStart(), and GetTypeId().

bool ns3::dot11s::HwmpProtocol::m_rfFlag
private

Definition at line 281 of file hwmp-protocol.h.

Referenced by GetRfFlag(), GetTypeId(), and Report().

TracedCallback<Time> ns3::dot11s::HwmpProtocol::m_routeDiscoveryTimeCallback
private

Route discovery time:

Definition at line 174 of file hwmp-protocol.h.

Referenced by GetTypeId(), ReactivePathResolved(), and RetryPathDiscovery().

std::vector<QueuedPacket> ns3::dot11s::HwmpProtocol::m_rqueue
private
uint8_t ns3::dot11s::HwmpProtocol::m_unicastDataThreshold
private

Definition at line 279 of file hwmp-protocol.h.

Referenced by GetBroadcastReceivers(), GetTypeId(), and Report().

uint8_t ns3::dot11s::HwmpProtocol::m_unicastPerrThreshold
private

Definition at line 277 of file hwmp-protocol.h.

Referenced by GetTypeId(), GetUnicastPerrThreshold(), and Report().

uint8_t ns3::dot11s::HwmpProtocol::m_unicastPreqThreshold
private

Definition at line 278 of file hwmp-protocol.h.

Referenced by GetPreqReceivers(), GetTypeId(), and Report().


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