Utilisation de ndn::AppDelayTracer::InstallAll dans ndnSIM

wella_salwa Messages postés 32 Date d'inscription lundi 31 octobre 2022 Statut Membre Dernière intervention 14 novembre 2024 - Modifié le 30 sept. 2024 à 17:33
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 - 1 oct. 2024 à 16:37

Bonjour ,

Je suis en train de travailler le fichier d'exmple vndn-example-its.cc. Je veux mesurer le " Delay " , utilisant ndn::AppDelayTracer::InstallAll.

Je l'ai inséré dans l'exemple vndn-example-its.cc, mais sans résultat. 

Je vous serais reconnaissante pour votre aide.

4 réponses

mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 7 801
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

0
wella_salwa Messages postés 32 Date d'inscription lundi 31 octobre 2022 Statut Membre Dernière intervention 14 novembre 2024
30 sept. 2024 à 17:14

Bonjour mamiemando , 

Oui , exactement , j'ai ajouté cette ligne . Le résultat est un fichier .txt vide.

0
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 7 801
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::installAllcela 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

0

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;
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;
0
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 7 801
1 oct. 2024 à 09:59

#4

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 ?

#5

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).

0
wella_salwa Messages postés 32 Date d'inscription lundi 31 octobre 2022 Statut Membre Dernière intervention 14 novembre 2024
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.

0
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 7 801 > wella_salwa Messages postés 32 Date d'inscription lundi 31 octobre 2022 Statut Membre Dernière intervention 14 novembre 2024
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 ?

0