1.1 --- a/bindings/python/ns3_module_flow_monitor.py Wed May 06 18:25:50 2009 +0100
1.2 +++ b/bindings/python/ns3_module_flow_monitor.py Wed May 06 18:37:14 2009 +0100
1.3 @@ -303,6 +303,10 @@
1.4 cls.add_instance_attribute('timeLastRxPacket', 'ns3::Time', is_const=False)
1.5 ## flow-monitor.h: ns3::FlowMonitor::FlowStats::delaySum [variable]
1.6 cls.add_instance_attribute('delaySum', 'ns3::Time', is_const=False)
1.7 + ## flow-monitor.h: ns3::FlowMonitor::FlowStats::jitterSum [variable]
1.8 + cls.add_instance_attribute('jitterSum', 'ns3::Time', is_const=False)
1.9 + ## flow-monitor.h: ns3::FlowMonitor::FlowStats::lastDelay [variable]
1.10 + cls.add_instance_attribute('lastDelay', 'ns3::Time', is_const=False)
1.11 ## flow-monitor.h: ns3::FlowMonitor::FlowStats::txBytes [variable]
1.12 cls.add_instance_attribute('txBytes', 'uint64_t', is_const=False)
1.13 ## flow-monitor.h: ns3::FlowMonitor::FlowStats::rxBytes [variable]
2.1 --- a/examples/flowmon.py Wed May 06 18:25:50 2009 +0100
2.2 +++ b/examples/flowmon.py Wed May 06 18:37:14 2009 +0100
2.3 @@ -118,15 +118,21 @@
2.4 print >> os, " Lost Packets: ", st.lostPackets
2.5 if st.rxPackets > 0:
2.6 print >> os, " Mean{Delay}: ", (st.delaySum.GetSeconds() / st.rxPackets)
2.7 + print >> os, " Mean{Jitter}: ", (st.jitterSum.GetSeconds() / (st.rxPackets-1))
2.8 print >> os, " Mean{Hop Count}: ", float(st.timesForwarded) / st.rxPackets + 1
2.9 +
2.10 if 0:
2.11 print >> os, "Delay Histogram"
2.12 for i in range(st.delayHistogram.GetSize () ):
2.13 - print >> os, " ",i,"(", st.delayHistogram.GetBinStart (i), "-",\
2.14 + print >> os, " ",i,"(", st.delayHistogram.GetBinStart (i), "-", \
2.15 st.delayHistogram.GetBinEnd (i), "): ", st.delayHistogram.GetBinCount (i)
2.16 + print >> os, "Jitter Histogram"
2.17 + for i in range(st.jitterHistogram.GetSize () ):
2.18 + print >> os, " ",i,"(", st.jitterHistogram.GetBinStart (i), "-", \
2.19 + st.jitterHistogram.GetBinEnd (i), "): ", st.jitterHistogram.GetBinCount (i)
2.20 print >> os, "PacketSize Histogram"
2.21 for i in range(st.packetSizeHistogram.GetSize () ):
2.22 - print >> os, " ",i,"(", st.packetSizeHistogram.GetBinStart (i), "-",\
2.23 + print >> os, " ",i,"(", st.packetSizeHistogram.GetBinStart (i), "-", \
2.24 st.packetSizeHistogram.GetBinEnd (i), "): ", st.packetSizeHistogram.GetBinCount (i)
2.25
2.26 for reason, drops in enumerate(st.packetsDropped):
3.1 --- a/src/contrib/flow-monitor/flow-monitor.cc Wed May 06 18:25:50 2009 +0100
3.2 +++ b/src/contrib/flow-monitor/flow-monitor.cc Wed May 06 18:37:14 2009 +0100
3.3 @@ -85,6 +85,8 @@
3.4 {
3.5 FlowMonitor::FlowStats &ref = m_flowStats[flowId];
3.6 ref.delaySum = Seconds (0);
3.7 + ref.jitterSum = Seconds (0);
3.8 + ref.lastDelay = Seconds (0);
3.9 ref.txBytes = 0;
3.10 ref.rxBytes = 0;
3.11 ref.txPackets = 0;
3.12 @@ -177,6 +179,22 @@
3.13 FlowStats &stats = GetStatsForFlow (flowId);
3.14 stats.delaySum += delay;
3.15 stats.delayHistogram.AddHistogramValue ((double)delay.GetSeconds());
3.16 + if (stats.rxPackets > 0 )
3.17 + {
3.18 + Time jitter = stats.lastDelay - delay;
3.19 + if (jitter > Seconds (0))
3.20 + {
3.21 + stats.jitterSum += jitter;
3.22 + stats.jitterHistogram.AddHistogramValue ((double)jitter.GetSeconds());
3.23 + }
3.24 + else
3.25 + {
3.26 + stats.jitterSum -= jitter;
3.27 + stats.jitterHistogram.AddHistogramValue (-(double)jitter.GetSeconds());
3.28 + }
3.29 + }
3.30 + stats.lastDelay = delay;
3.31 +
3.32 stats.rxBytes += packetSize;
3.33 stats.packetSizeHistogram.AddHistogramValue ((double)packetSize);
3.34 stats.rxPackets++;
4.1 --- a/src/contrib/flow-monitor/flow-monitor.h Wed May 06 18:25:50 2009 +0100
4.2 +++ b/src/contrib/flow-monitor/flow-monitor.h Wed May 06 18:37:14 2009 +0100
4.3 @@ -46,6 +46,8 @@
4.4 Time timeLastTxPacket;
4.5 Time timeLastRxPacket;
4.6 Time delaySum; // delayCount == rxPackets
4.7 + Time jitterSum; // jitterCount == rxPackets - 1
4.8 + Time lastDelay;
4.9 uint64_t txBytes;
4.10 uint64_t rxBytes;
4.11 uint32_t txPackets;