|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
21 #ifndef HWMP_PROTOCOL_H
22 #define HWMP_PROTOCOL_H
24 #include "ns3/mesh-l2-routing-protocol.h"
25 #include "ns3/nstime.h"
26 #include "ns3/event-id.h"
27 #include "ns3/traced-value.h"
32 class MeshPointDevice;
35 class UniformRandomVariable;
37 class HwmpProtocolMac;
146 void Report (std::ostream & os)
const;
192 std::vector<std::pair<uint32_t, Mac48Address> >
receivers;
269 uint32_t originatorDsn,
270 uint32_t destinationSN,
297 std::vector<std::pair<uint32_t, Mac48Address> >
GetPerrReceivers (std::vector<FailedDestination> failedDest);
452 void Print (std::ostream & os)
const;
a unique identifier for an interface.
Mac48Address m_address
address
bool m_rfFlag
Reply and forward flag.
Mac48Address dst
dst address
HwmpProtocol & operator=(const HwmpProtocol &hwmp)
assignment operator
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.
QueuedPacket DequeueFirstPacket()
Dequeue the first packet in the queue.
bool GetRfFlag()
Get rf flag function.
Time m_dot11MeshHWMPnetDiameterTraversalTime
Time we suppose the packet to go from one edge of the network to another.
std::string type
type of change
Structure to encapsulate route change information.
An identifier for simulation events.
TracedCallback< struct RouteChange > RouteChangeTracedCallback
RouteChangeTracedCallback typedef.
bool m_doFlag
Destination only HWMP flag.
void UnsetRoot()
Unset the current node as root.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Mac48Address destination
route destination
Ptr< Packet > pkt
the packet
void ProactivePathResolved()
Signal the protocol that the proactive path is now available.
static TypeId GetTypeId()
Get the type ID.
std::map< uint32_t, Ptr< HwmpProtocolMac > > HwmpProtocolMacMap
HwmpProtocolMacMap typedef.
bool GetDoFlag()
Get do flag function.
EventId m_proactivePreqTimer
proactive PREQ timer
uint32_t m_preqId
PREQ ID.
uint8_t m_unicastDataThreshold
Maximum number of broadcast receivers, when we send a broadcast as a chain of unicasts.
bool RemoveRoutingStuff(uint32_t fromIface, const Mac48Address source, const Mac48Address destination, Ptr< Packet > packet, uint16_t &protocolType)
Clean HWMP packet tag from packet; only the packet parameter is used.
Time m_randomStart
Random start in Proactive PREQ propagation.
Interface for L2 mesh routing protocol and mesh point communication.
void ReceivePerr(std::vector< FailedDestination > destinations, Mac48Address from, uint32_t interface, Mac48Address fromMp)
Handler for receiving Path Error.
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
uint32_t m_dataSeqno
data sequence no
HwmpProtocolMacMap m_interfaces
interfaces
PathError MakePathError(std::vector< FailedDestination > destinations)
forms a path error information element when list of destination fails on a given interface
std::vector< std::pair< uint32_t, Mac48Address > > GetPerrReceivers(std::vector< FailedDestination > failedDest)
Get PERR receivers.
std::map< Mac48Address, uint32_t > m_lastDataSeqno
keeps HWMP seqno (first in pair) and HWMP metric (second in pair) for each address
uint32_t metric
metric of route
Packet waiting its routing information.
Time GetPreqMinInterval()
Get PREQ minimum interval function.
Mac48Address retransmitter
route source
uint8_t GetMaxTtl()
Get maximum TTL function.
void PeerLinkStatus(Mac48Address meshPontAddress, Mac48Address peerAddress, uint32_t interface, bool status)
Peer link status function.
void DoDispose()
Destructor implementation.
Mac48Address GetAddress()
uint16_t protocol
protocol number
bool DropDataFrame(uint32_t seqno, Mac48Address source)
MAC-plugin asks whether the frame can be dropped.
bool Install(Ptr< MeshPointDevice > mp)
Install HWMP on given mesh point.
Time whenScheduled
scheduled time
uint16_t txUnicast
transmit unicast
See 7.3.2.96 of 802.11s draft 2.07.
Time m_dot11MeshHWMPactiveRootTimeout
Lifetime of proactive routing information.
uint8_t m_unicastPerrThreshold
Maximum number of PERR receivers, when we send a PERR as a chain of unicasts.
std::vector< QueuedPacket > m_rqueue
Packet Queue.
virtual void DoInitialize()
Initialize() implementation.
Ptr< UniformRandomVariable > m_coefficient
Random variable for random start time.
uint16_t initiatedPrep
initiated PREP
RouteReplyCallback reply
how to reply
uint16_t droppedTtl
dropped TTL
uint32_t GetActivePathLifetime()
Get active path lifetime function.
QueuedPacket DequeueFirstPacketByDst(Mac48Address dst)
Dequeue the first packet for a given destination.
Simulation virtual time values and global simulation resolution.
bool m_isRoot
True if the node is a root.
uint16_t totalQueued
total queued
uint16_t initiatedPerr
initiated PERR
Ptr< HwmpRtable > GetRoutingTable(void) const
Get pointer to HWMP routing table.
HwmpProtocol(const HwmpProtocol &hwmp)
Copy constructor - defined but not implemented (on purpose)
void RetryPathDiscovery(Mac48Address dst, uint8_t numOfRetry)
Generates PREQ retry when retry timeout has expired and route is still unresolved.
std::vector< Mac48Address > GetPreqReceivers(uint32_t interface)
Get PREQ receivers.
void ResetStats()
Reset Statistics:
void SetRoot()
Unset the current node as root.
Time m_dot11MeshHWMPpreqMinInterval
Minimal interval between to successive PREQs.
uint16_t totalDropped
total dropped
Hybrid wireless mesh protocol – a mesh routing protocol defined in IEEE 802.11-2012 standard.
EventId preqTimeout
PREQ timeout.
uint32_t txBytes
transmit bytes
uint32_t seqnum
sequence number
std::vector< FailedDestination > destinations
destination list: Mac48Address and sequence number
uint8_t GetUnicastPerrThreshold()
Get unicast PERR threshold function.
void SendPrep(Mac48Address src, Mac48Address dst, Mac48Address retransmitter, uint32_t initMetric, uint32_t originatorDsn, uint32_t destinationSN, uint32_t lifetime, uint32_t interface)
Send Path Reply.
Mac48Address destination
destination address
Interface MAC plugin for HWMP – 802.11s routing protocol.
void ForwardPathError(PathError perr)
Forwards a received path error.
Callback< std::vector< Mac48Address >, uint32_t > m_neighboursCallback
neighbors callback
std::vector< Mac48Address > GetBroadcastReceivers(uint32_t interface)
Get broadcast receivers.
Time m_dot11MeshHWMPperrMinInterval
Minimal interval between to successive PREQs.
void Report(std::ostream &os) const
Statistics:
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model.
Ptr< HwmpRtable > m_rtable
Routing table.
void SendProactivePreq()
Proactive Preq routines:
uint32_t interface
interface index
Time GetPerrMinInterval()
Get PERR minimum interval function.
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.
TracedCallback< Time > m_routeDiscoveryTimeCallback
Route discovery time:
uint32_t GetNextHwmpSeqno()
Get next HWMP sequence no function.
uint32_t GetNextPreqId()
Get next period function.
See 7.3.2.97 of 802.11s draft 2.07.
Time lifetime
lifetime of route
void ReactivePathResolved(Mac48Address dst)
Signal the protocol that the reactive path toward a destination is now available.
uint8_t m_dot11MeshHWMPmaxPREQretries
Maximum number of retries before we suppose the destination to be unreachable.
void ReceivePreq(IePreq preq, Mac48Address from, uint32_t interface, Mac48Address fromMp, uint32_t metric)
Handler for receiving Path Request.
void Print(std::ostream &os) const
Print function.
Forward calls to a chain of Callback.
Time m_dot11MeshHWMPrannInterval
Lifetime of proactive routing information.
std::map< Mac48Address, PreqEvent > m_preqTimeouts
PREQ timeouts.
structure of unreachable destination - address and sequence number
uint32_t m_hwmpSeqno
HWMP sequence no.
void SetNeighboursCallback(Callback< std::vector< Mac48Address >, uint32_t > cb)
This callback is used to obtain active neighbours on a given interface.
Statistics m_stats
statistics
void ReceivePrep(IePrep prep, Mac48Address from, uint32_t interface, Mac48Address fromMp, uint32_t metric)
Handler for receiving Path Reply.
uint16_t initiatedPreq
initiated PREQ
Time m_dot11MeshHWMPactivePathTimeout
Lifetime of reactive routing information.
TracedCallback< struct RouteChange > m_routeChangeTraceSource
Route change trace source.
uint32_t inInterface
incoming device interface ID. (if packet has come from upper layers, this is Mesh point ID)
bool QueuePacket(QueuedPacket packet)
Queue a packet.
uint32_t seqnum
sequence number of route
Time m_dot11MeshHWMPpathToRootInterval
Interval between two successive proactive PREQs.
Mac48Address src
src address
std::vector< std::pair< uint32_t, Mac48Address > > receivers
list of PathError receivers (in case of unicast PERR)
void InitiatePathError(PathError perr)
Passes a self-generated PERR to interface-plugin.
uint16_t m_maxQueueSize
Maximum number of packets we can store when resolving route.
Structure of path error: IePerr and list of receivers: interfaces and MAC address.
bool ShouldSendPreq(Mac48Address dst)
checks when the last path discovery procedure was started for a given destination.
uint8_t m_unicastPreqThreshold
Maximum number of PREQ receivers, when we send a PREQ as a chain of unicasts.
uint8_t m_maxTtl
Initial value of Time To Live field.
uint16_t txBroadcast
transmit broadcast