Partage
  • Partager sur Facebook
  • Partager sur Twitter

Projet L2

Lancer une simulation de système de réseaux avec buffer et paquets

    26 avril 2024 à 17:22:34

    Bonjour j'ai un projet a faire qui consiste a simuler des envoi des données ( de paquets ici). J'ai une classe source qui génère les paquets, une classe paquet qui représente les paquets et une classe buffer qui est un buffer, les paquets passent dedans et ressortent ensuite.

    Je suis sensé avoir pour chaque source un buffer ( la classe source hérite de la classe buffer) et ensuite je dois avoir un buffer principal. Ensuite le but est d'implémenter une stratégie qui permet au buffer principal de choisir a partir des buffers secondaires le buffer qui a le plus de paquets pour insérer les paquets dedans mais je ne sais pas du tout comment m'y prendre. J'ai essayé avec les threads pour avoir une simulation ou tout s'éxécute mais je n'ai pas réussi. 

    import time
    import random
    
    class Paquet():
        id_paquet = 0
    
        def __init__(self, taille):
            self.id = Paquet.id_paquet
            self.taille = taille
            self.horodatage = time.time()
            Paquet.id_paquet += 1
    
    class Buffer():
        def __init__(self, capacite, id_buffer):
            self.id_buffer = id_buffer
            self.FIFO = []
            self.capacite = capacite
    
        def inserer(self, paquet):
                if len(self.FIFO) < self.capacite:
                    self.FIFO.append(paquet)
                    print(f"Le paquet {paquet.id} inserérer dans le buffer {self.id_buffer}")
                    return True
                else:
                    print(f"Buffer {self.id_buffer} is full, packet {paquet.id} was lost")
                    return False
    
        def retirer(self):
                return self.FIFO.pop(0) if self.FIFO else None
    
        def est_plein(self):
                return len(self.FIFO) == self.capacite
    
    
    class Source(Buffer):
        id_source = 0
        def __init__(self, taux_lambda, capacite_buffer):
            super().__init__(capacite_buffer, Source.id_source)
            self.taux_lambda = taux_lambda
            Source.id_source+=1
    
        def generer(self):
            nb_paquets = np.random.poisson(self.taux_lambda)
            for _ in range(nb_paquets):
                taille_paquet = np.random.randint(50, 1500)
                paquet = Paquet(taille_paquet)
                self.inserer(paquet)

    -
    Edité par SantiagoVargas 26 avril 2024 à 18:50:20

    • Partager sur Facebook
    • Partager sur Twitter
      26 avril 2024 à 17:49:18

      Bonjour, Merci d'indiquer un titre de sujet en rapport avec votre problématique.

      Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Déplacement vers un forum plus approprié

      Le sujet est déplacé de la section Discussions générales vers la section Langage Python

      Mauvais titre

      Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

      Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

      De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

      Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

      Merci de modifier votre titre. Pour cela, éditez le premier message de votre sujet.

      (titre originel : Projet L2)

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        26 avril 2024 à 19:11:53

        qu'est-ce que tu as essayé? pourquoi dis-tu que ça n'a pas réussi?

        Le buffer principall peut connaitre quoi des buffers secondaires ? la capacité restante ? le nombre de paquets des buffers secondaires et la taille de chacun de ces paquets?

        • Partager sur Facebook
        • Partager sur Twitter
          26 avril 2024 à 19:36:11

          umfred a écrit:

          qu'est-ce que tu as essayé? pourquoi dis-tu que ça n'a pas réussi?

          Le buffer principall peut connaitre quoi des buffers secondaires ? la capacité restante ? le nombre de paquets des buffers secondaires et la taille de chacun de ces paquets?

          En gros j'ai réussi en soit a lancer le réseau mais j'ai obtenu un réseau ou chaque source s'exécute une par une, et ensuite un buffer un par un etc mais  ce n'était pas vraiment ce que je voulais faire. Je cherchais plutôt a créer un réseau qui s'éxecutait simultanément. Ensuite eh bien le buffer principal est en soit un buffer commes les autres, la seule différence est qu'on peut choisir d'ou vont venir les paquets( plus précisément de quel buffer d'ou la stratégie énoncé avant) et bien sûr on peut accéder a toutes les informations sur les autres buffers. La taille des paquets ici en soit n'est pas très importante, c'est plus le taux de paquets par seconde qui importe ici, les taux de transmissions entre les buffers et les taux de générations des paquets par les sources.
          • Partager sur Facebook
          • Partager sur Twitter
            26 avril 2024 à 19:44:26

            la taille des paquets importe un peu vu qu'il faut pouvoir les passer à un buffer ayant encore assez de place pour l'accueillir et le remplir au max (si j'ai bien compris)
            • Partager sur Facebook
            • Partager sur Twitter
              26 avril 2024 à 21:50:10

              umfred a écrit:

              la taille des paquets importe un peu vu qu'il faut pouvoir les passer à un buffer ayant encore assez de place pour l'accueillir et le remplir au max (si j'ai bien compris)

              Exactement c'est ça. Mais du coup je n'arrive pas a créer une simulation adéquate a ce qu'on me demande. 

              • Partager sur Facebook
              • Partager sur Twitter

              Projet L2

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown