Utilisation de ndn::AppDelayTracer::InstallAll dans ndnSIM
mamiemando Messages postés 33352 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 novembre 2024 - 1 oct. 2024 à 16:37
- Utilisation de ndn::AppDelayTracer::InstallAll dans ndnSIM
- Notice d'utilisation - Guide
- Utilisation chromecast - Guide
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
- Imprimante en cours d'utilisation - Forum Imprimante
- Dossier en cours d'utilisation - Forum Windows 8 / 8.1
4 réponses
Modifié le 30 sept. 2024 à 17:14
Bonjour,
Peux-tu partager le fichier modifié comme expliqué ici (ou du moins les passages modifiés)?
Normalement tu as dû modifier la fin de la fonction ns3::main :
// .... Simulator::Stop (Seconds (simTime)); AppDelayTracer::InstallAll("app-delays-trace.txt"); Simulator::Run (); std::cout << RED_CODE << BOLD_CODE << "Post simulation: " END_CODE << std::endl; return 0; }; } // namespace ns3
... et les traces devraient être dans générées dans le fichier app-delays-trace.txt.
Bonne chance
30 sept. 2024 à 17:14
Bonjour mamiemando ,
Oui , exactement , j'ai ajouté cette ligne . Le résultat est un fichier .txt vide.
Modifié le 30 sept. 2024 à 17:32
Bonjour,
Dans ce cas il faudrait t'assurer que l'implémentation de la classe AppDelayTracer est compatible avec la manière dont est construite ta topologie de réseau. En outre :
- Si on regarde l'implémentation de la méthode AppDelayTracer::installAll on voit qu'elle loggue des informations.
- Vois-tu quelque chose dans les logs ?
- Il est surprenant que même le header du fichier ne soit pas écrit (voir AppDelayTracer::PrintHeader).
- Si tu reproduis dans petit à petit dans ton fichier d'exemple ce qui est fait dans AppDelayTracer::installAll en affichant des informations aux bons endroits, est-ce que le comportement semble correct
Je m'explique :
- Si AppDelayTracer::PrintHeader n'est pas appelé (puisque ton fichier est vide), c'est que dans AppDelayTracer::installAll, la condition tracers.size() > 0 n'est pas vérifiée. Si on remonte un peu avant dans la fonction AppDelayTracer::installAll, cela suggère que tracers n'a pas été peuplé dans cette boucle :
74 for (NodeList::Iterator node = NodeList::Begin(); node != NodeList::End(); node++) { 75 Ptr<AppDelayTracer> trace = Install(*node, outputStream); 76 tracers.push_back(trace); 77 }
... ce qui pose deux questions :
- Parviens-tu à itérer sur les nœuds de ton réseau ?
- Est ce que trace est non NULL ?
Pour répondre à cette question, injecte dans ton fichier d'exemple, juste avant l'appel à InstallAll, une boucle du genre :
// .... Simulator::Stop (Seconds (simTime)); // <<<< DEBUG for (NodeList::Iterator node = NodeList::Begin(); node != NodeList::End(); node++) { std::cout << "node = " << node << std::endl; Ptr<AppDelayTracer> trace = Install(*node, outputStream); std::cout << "trace = " << trace << std::endl; tracers.push_back(trace); } // >>>> DEBUG AppDelayTracer::InstallAll("app-delays-trace.txt"); Simulator::Run (); std::cout << RED_CODE << BOLD_CODE << "Post simulation: " END_CODE << std::endl; return 0; }; } // namespace ns3
- Important : Vérifie aussi que tu regardes le bon fichier. Peut-être que ton fichier est généré ailleurs mais que tu regardes un ancien résidu. Pour éviter tout doute à ce sujet, supprime tes éventuelles traces précédentes avant de relancer une simulation.
Bonne chance
Bonjour mamiemando ,
Merci pour ta réponse !
Ta partie de code ne fonctionne pas et fait signaler plusieurs erreurs.
L'entête de trace.txt , est affiché comme même , mais sans valeurs insérées . c'est ca le problème . voici ma partie de code :
Simulator::Stop (Seconds (simTime)); ndn::AppDelayTracer::InstallAll("app-delays-trace.csv"); Simulator::Run (); std::cout << RED_CODE << BOLD_CODE << "Post simulation: " END_CODE << std::endl; return 0;
de même , les résultats de L3RateTracer , sont illogiques .
Simulator::Stop (Seconds (simTime)); ndn::AppDelayTracer::InstallAll("app-delays-trace.csv"); ndn::L3RateTracer::InstallAll("rate-trace.csv", Seconds(1.0)); Simulator::Run (); std::cout << RED_CODE << BOLD_CODE << "Post simulation: " END_CODE << std::endl; return 0;
1 oct. 2024 à 09:59
Ta partie de code ne fonctionne pas et fait signaler plusieurs erreurs.
- Quelle erreur ? Si c'est écrire les valeurs de l'itérateur, au pire affiche l'adresse du nœud.
// <<<< DEBUG for (NodeList::Iterator node = NodeList::Begin(); node != NodeList::End(); node++) { std::cout << "node = " << &(*node) << std::endl; Ptr<AppDelayTracer> trace = Install(*node, outputStream); std::cout << "trace = " << trace << std::endl; tracers.push_back(trace); } // >>>> DEBUG
- trace.txt ? De quoi parles-tu ? app-delays-trace.txt ?
de même , les résultats de L3RateTracer , sont illogiques .
Qu'est ce qui est logique ? Contrairement au fichier de délais, je vois des valeurs, donc il s'est passé quelque chose. Après si les nombres ne font pas ce qu'il faut, c'est peut-être que quelque chose cloche au niveau de ta simulation (mais ça, je ne peux pas y répondre).
1 oct. 2024 à 10:34
- trace.txt ? De quoi parles-tu ? app-delays-trace.txt ?
-----> rate trace , pour le mesure de rate .
Les valeurs de rate-trace.txt, sont illogiques , car ils sont toujours nulles presque.
1 oct. 2024 à 16:37
Je te propose d'oublier rate-trace dans cette discussion (dans la mesure où ça n'est pas en rapport avec le sujet initial), quitte à ouvrir un nouveau sujet (plutôt sur groupe ns3 puisque dans le problème que tu poses, il ne s'agit pas un problème de code, mais plus probablement un problème de compréhension du scénario expérimental et/ou d'interprétation des résultats). Pour le moment focalisons nous sur #6. Parviens-tu à itérer sur tes nœuds ?