Some bugfixes to Histogram. Jitter calculation is now included.
authorPedro Fortuna <pedro.fortuna@inescporto.pt>
Wed May 06 17:35:51 2009 +0100 (9 months ago)
changeset 396124dea674a7b7
parent 3956 070a9eec2c8a
child 3962 6bd318a9d6f6
Some bugfixes to Histogram. Jitter calculation is now included.
bindings/python/ns3_module_flow_monitor.py
examples/flowmon.py
src/contrib/flow-monitor/flow-monitor.cc
src/contrib/flow-monitor/flow-monitor.h
     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;