Ptr<FlowMonitor> monitor;FlowMonitorHelper flowmon;monitor = flowmon.InstallAll();
Simulator::ScheduleWithContext (source1->GetNode ()->GetId (), Seconds (1.0), &GenerateTraffic, source1, packetSize, numPackets, interPacketInterval);
// Print per flow statistics//FlowMonitorHelper flowmon;//Ptr<FlowMonitor> monitor = flowmon.InstallAll();monitor->CheckForLostPackets ();Ptr<Ipv4FlowClassifier> classifier = DynamicCast<Ipv4FlowClassifier> (flowmon.GetClassifier ());std::map<FlowId, FlowMonitor::FlowStats> stats = monitor->GetFlowStats ();
for (std::map<FlowId, FlowMonitor::FlowStats>::const_iterator iter = stats.begin (); iter != stats.end (); ++iter){ Ipv4FlowClassifier::FiveTuple t = classifier->FindFlow (iter->first);
NS_LOG_UNCOND("Flow ID: " << iter->first << " Src Addr " << t.sourceAddress << " Dst Addr " << t.destinationAddress); NS_LOG_UNCOND("Tx Packets = " << iter->second.txPackets); NS_LOG_UNCOND("Rx Packets = " << iter->second.rxPackets); NS_LOG_UNCOND("Throughput: " << iter->second.rxBytes * 8.0 / (iter->second.timeLastRxPacket.GetSeconds()-iter->second.timeFirstTxPacket.GetSeconds()) / 1024 << " Kbps");}
monitor->SerializeToXmlFile ("results.xml" , true, true ); Simulator::Stop (Seconds (30.0));Simulator::Run ();
Simulator::Destroy ();
Thanks,
M