21 #ifndef FLOW_MONITOR_H
22 #define FLOW_MONITOR_H
28 #include "ns3/object.h"
29 #include "ns3/flow-probe.h"
30 #include "ns3/flow-classifier.h"
31 #include "ns3/histogram.h"
32 #include "ns3/nstime.h"
33 #include "ns3/event-id.h"
202 uint32_t packetSize, uint32_t reasonCode);
241 void SerializeToXmlFile (std::string fileName,
bool enableHistograms,
bool enableProbes);
uint32_t FlowPacketId
Abstract identifier of a packet within a flow.
Simulation virtual time values and global simulation resolution.
smart pointer class similar to boost::intrusive_ptr
void CheckForLostPackets()
Check right now for packets that appear to be lost.
void StartRightNow()
Begin monitoring flows right now
uint32_t lostPackets
Total number of packets that are assumed to be lost, i.e.
uint32_t rxPackets
Total number of received packets for the flow.
uint32_t txPackets
Total number of transmitted packets for the flow.
Time m_maxPerHopDelay
Minimum per-hop delay.
static TypeId GetTypeId()
Get the type ID.
void ReportDrop(Ptr< FlowProbe > probe, FlowId flowId, FlowPacketId packetId, uint32_t packetSize, uint32_t reasonCode)
FlowProbe implementations are supposed to call this method to report that a known packet is being dro...
Time delaySum
Contains the sum of all end-to-end delays for all received packets of the flow.
std::vector< uint64_t > bytesDropped
This attribute also tracks the number of lost bytes.
std::map< FlowId, FlowStats > m_flowStats
FlowId –> FlowStats.
Time m_flowInterruptionsMinTime
Flow interruptions minimum time.
void ReportFirstTx(Ptr< FlowProbe > probe, FlowId flowId, FlowPacketId packetId, uint32_t packetSize)
FlowProbe implementations are supposed to call this method to report that a new packet was transmitte...
TrackedPacketMap m_trackedPackets
Tracked packets.
Time lastDelay
Contains the last measured delay of a packet It is stored to measure the packet's Jitter...
std::map< FlowId, FlowStats > GetFlowStats() const
Retrieve all collected the flow statistics.
void SerializeToXmlStream(std::ostream &os, int indent, bool enableHistograms, bool enableProbes)
Serializes the results to an std::ostream in XML format.
Time firstSeenTime
absolute time when the packet was first seen by a probe
std::list< Ptr< FlowClassifier > > m_classifiers
the FlowClassifiers
std::map< std::pair< FlowId, FlowPacketId >, TrackedPacket > TrackedPacketMap
(FlowId,PacketId) –> TrackedPacket
Time jitterSum
Contains the sum of all end-to-end delay jitter (delay variation) values for all received packets of ...
std::string SerializeToXmlString(int indent, bool enableHistograms, bool enableProbes)
Same as SerializeToXmlStream, but returns the output as a std::string.
bool m_enabled
FlowMon is enabled.
Time timeFirstTxPacket
Contains the absolute time when the first packet in the flow was transmitted, i.e.
double m_packetSizeBinWidth
packet size bin width (for histograms)
FlowStats & GetStatsForFlow(FlowId flowId)
Get the stats for a given flow.
double m_jitterBinWidth
Jitter bin width (for histograms)
EventId m_stopEvent
Stop event.
Time lastSeenTime
absolute time when the packet was last seen by a probe
double m_delayBinWidth
Delay bin width (for histograms)
virtual void NotifyConstructionCompleted()
This method is invoked once all member attributes have been initialized.
void Stop(const Time &time)
Set the time, counting from the current time, from which to stop monitoring flows.
std::vector< Ptr< FlowProbe > > m_flowProbes
all the FlowProbes
Time timeFirstRxPacket
Contains the absolute time when the first packet in the flow was received by an end node...
uint32_t timesForwarded
Contains the number of times a packet has been reportedly forwarded, summed for all received packets ...
Time timeLastRxPacket
Contains the absolute time when the last packet in the flow was received, i.e.
void AddFlowClassifier(Ptr< FlowClassifier > classifier)
Add a FlowClassifier to be used by the flow monitor.
void StopRightNow()
End monitoring flows right now
an identifier for simulation events.
Histogram delayHistogram
Histogram of the packet delays.
void SerializeToXmlFile(std::string fileName, bool enableHistograms, bool enableProbes)
Same as SerializeToXmlStream, but writes to a file instead.
std::vector< Ptr< FlowProbe > > GetAllProbes() const
Get a list of all FlowProbe's associated with this FlowMonitor.
virtual void DoDispose(void)
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
Histogram flowInterruptionsHistogram
histogram of durations of flow interruptions
uint64_t txBytes
Total number of transmitted bytes for the flow.
Structure that represents the measured metrics of an individual packet flow.
double m_flowInterruptionsBinWidth
Flow interruptions bin width (for histograms)
Structure to represent a single tracked packet data.
Histogram jitterHistogram
Histogram of the packet jitters.
a base class which provides memory management and object aggregation
EventId m_startEvent
Start event.
void Start(const Time &time)
Set the time, counting from the current time, from which to start monitoring flows.
void ReportForwarding(Ptr< FlowProbe > probe, FlowId flowId, FlowPacketId packetId, uint32_t packetSize)
FlowProbe implementations are supposed to call this method to report that a known packet is being for...
uint64_t rxBytes
Total number of received bytes for the flow.
void PeriodicCheckForLostPackets()
Periodic function to check for lost packets and prune statistics.
uint32_t timesForwarded
number of times the packet was reportedly forwarded
An object that monitors and reports back packet flows observed during a simulation.
void AddProbe(Ptr< FlowProbe > probe)
Register a new FlowProbe that will begin monitoring and report events to this monitor.
a unique identifier for an interface.
Time timeLastTxPacket
Contains the absolute time when the last packet in the flow was transmitted, i.e. ...
void ReportLastRx(Ptr< FlowProbe > probe, FlowId flowId, FlowPacketId packetId, uint32_t packetSize)
FlowProbe implementations are supposed to call this method to report that a known packet is being rec...
Histogram packetSizeHistogram
Histogram of the packet sizes.
TypeId GetInstanceTypeId() const
Class used to store data and make an histogram of the data frequency.
uint32_t FlowId
Abstract identifier of a packet flow.
std::vector< uint32_t > packetsDropped
This attribute also tracks the number of lost packets and bytes, but discriminates the losses by a re...