Some bugfixes to Histogram. Jitter calculation is now included.
1.1 --- a/bindings/python/ns3_module_flow_monitor.py Tue May 05 18:52:59 2009 +0100
1.2 +++ b/bindings/python/ns3_module_flow_monitor.py Wed May 06 17:35:51 2009 +0100
1.3 @@ -289,6 +289,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 Tue May 05 18:52:59 2009 +0100
2.2 +++ b/examples/flowmon.py Wed May 06 17:35:51 2009 +0100
2.3 @@ -118,10 +118,14 @@
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 print >> os, "Delay Histogram"
2.10 for i in range(st.delayHistogram.GetSize () ):
2.11 print >> os, " ",i,"(", st.delayHistogram.GetBinStart (i), "-", st.delayHistogram.GetBinEnd (i), "): ", st.delayHistogram.GetBinCount (i)
2.12 + print >> os, "Jitter Histogram"
2.13 + for i in range(st.jitterHistogram.GetSize () ):
2.14 + print >> os, " ",i,"(", st.jitterHistogram.GetBinStart (i), "-", st.jitterHistogram.GetBinEnd (i), "): ", st.jitterHistogram.GetBinCount (i)
2.15 print >> os, "PacketSize Histogram"
2.16 for i in range(st.packetSizeHistogram.GetSize () ):
2.17 print >> os, " ",i,"(", st.packetSizeHistogram.GetBinStart (i), "-", st.packetSizeHistogram.GetBinEnd (i), "): ", st.packetSizeHistogram.GetBinCount (i)
3.1 --- a/src/contrib/flow-monitor/flow-monitor.cc Tue May 05 18:52:59 2009 +0100
3.2 +++ b/src/contrib/flow-monitor/flow-monitor.cc Wed May 06 17:35:51 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 @@ -175,6 +177,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 Tue May 05 18:52:59 2009 +0100
4.2 +++ b/src/contrib/flow-monitor/flow-monitor.h Wed May 06 17:35:51 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;