IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

quel est le meilleur algo pour table de routage


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut quel est le meilleur algo pour table de routage
    Bonjour,

    Ne connaissant pas trop les algo de trie, j'aurais besoin de vos lumières

    Je dois développer sur un µControlleur 32bits un système qui me permette de créer une table d'adresse MAC.

    Une entrée dans la table contient deux paramètres : "adresse MAC de 6 octets", "numéro de l'interface sur laquelle l'adresse MAC a été détectée"

    Donc lorsque je reçois un paquet Ethernet sur mon µControlleur je dois :
    1- récupérer l'adresse MAC et le numéro de l'interface (ça je sais faire)
    2- regarder si l'adresse MAC est déjà enregistrée dans la table
    3- si l'entrée existe déjà, vérifier que le numéro de l'interface est toujours le même => s'il n'est pas bon, écraser la valeur existante qui est dans la table par la nouvelle (ce cas ne devrait pas arriver souvent.. voir quasiment jamais).
    4- si l'entrée n'existe pas, l'ajouter dans la table.
    => le nombre d'entrées sera inférieur a 4000
    => le temps d'affichage de la table n'est pa

    Quel algo de trie me conseillez-vous d'utiliser pour que le remplissage se fasse le plus rapidement possible (faut-il que les entrées soient classées par ordre d'arrivée ou de valeur d'adresse MAC ou autre ?) ?

    Merci d'avance,

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Hello,

    Tu vas donc te retrouver dans une situation où l'ajout d'une nouvelle entrée sera très rare (connexion d'un nouvel équipement au réseau) mais où la consultation de cette table sera fréquente. En outre, la recherche ne se fera qu'en fonction de l'adresse MAC et ta table, sans être ridicule, contient un nombre raisonnable d'entrées.

    Moi, j'opterais pour un tri par insertion tout bête : tu conserves ta table triée et quand tu veux insérer une nouvelle entrée, tu fais une boucle qui décale d'une position la seconde moitié de la table. Sur 4000 entrées, un micro-contrôleur 32 bits ne devrait franchement pas avoir de mal. Pour le reste, c'est ce qu'il y aura de plus rapide en consultation et de plus économique en mémoire.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut
    bonjour,

    Merci pour ta réponse,

    Pour la consultation, il faut faire la recherche par dichotomie (ou il y a une meilleure méthode ?) ?


    Je voudrais aussi tester avec une méthode qui me permette d'ajouter rapidement mes éléments car au démarrage je risque d'avoir plein de nouvelles entrées (et si je mets trop de temps, je risque de perdre des paquets). Quelle méthode me conseillez-vous d'utiliser ?
    Il n'existe pas un tuto expliquant les différentes méthodes possibles pour ce genre de problème ?

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Hello,

    Oui, par dichotomie toute bête. Jusqu'à 4000 entrées, ça ne fera que douze comparaisons au maximum.

    Pour le reste, ça dépend essentiellement de la quantité de mémoire dont dispose ton équipement. Si tu n'en manques pas, tu fais un index. Mais comme de toutes façons, il faudra consommer des ressources pour le maintenir à jour, le mieux et le plus facile, je pense consiste à maintenir une table triée et à consacrer toute la mémoire inutilisée à une longue file d'attente.

    Donc, priorité aux paquets entrants, éventuellement en utilisant des interruptions, que tu stockes dans cette file et ensuite aux tâches de maintenance. Ton équipement risque d'être un peu lent au démarrage à tout digérer mais il ne devrait pas perdre d'information.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut
    ok, merci pour les informations.

    Pour information : ça fonctionne comment le principe d'index ?

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Comme ça :
    http://fr.wikipedia.org/wiki/Index_%...onn%C3%A9es%29

    L'idée est que pour chaque entrée, tu consacres un champ (dans l'entrée elle-même ou dans une structure distincte) formant une liste chaînée ou un arbre qui, lui, sera classé selon un autre critère.

    De combien de mémoire disposes-tu sur ton micro-contrôleur ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel est le meilleur SGBD pour Delphi ?
    Par Giovanny Temgoua dans le forum Bases de données
    Réponses: 58
    Dernier message: 02/04/2020, 20h21
  2. Réponses: 0
    Dernier message: 04/04/2010, 02h48
  3. Quel est le meilleur langage pour la portabilité : Windows & Linux (voire Mac) ?
    Par iubito dans le forum Débats sur le développement - Le Best Of
    Réponses: 57
    Dernier message: 26/11/2007, 23h45
  4. quel est le meilleur algo de tri de liste ?
    Par sony351 dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 24/07/2005, 02h00
  5. quel est le Meilleur language pour piloter le port serie ?
    Par flyfab dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 21/07/2003, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo