Forum Programmation.c Socket UDP - perfs

Posté par  (site Web personnel) .
Étiquettes : aucune
0
4
juil.
2005
Salutations,

Dans le cadre d'un moteur de jeu 3D, j'utilise depuis pas mal de temps maintenant des dialogues UDP. Suite à de récents tests, j'ai l'impression que mon utilisation de ces sockets n'est pas optimale. J'ai l'impression de perdre beaucoup de datagrammes, par exemple.
Si je poste ici, c'est pour savoir si certains d'entre vous on des expériences à partager sur ce thème, et souhaitent les partager. J'ai déjà quelques idées en tête, mais je suis sûr que des gourous brabus de la socket trainent ici.

Pour info, les paquets font 512 octets, et sont envoyés à hauteur de 20 par seconde environ.
  • # Pas étonnant

    Posté par  . Évalué à -1.

    Disons que d'un point de vue réseau, l'UDP est un protocole qui n'assure aucune garantie sur l'envoi et la réception de paquets. Ce qui n'est pas la cas de TCP qui assure un mode connecté avec des échanges d'acknowledge de bout en bout.

    Donc pas étonnant a priori que t'ais des paquets perdus...

    As-tu essayé le TCP ?
    • [^] # Re: Pas étonnant

      Posté par  (site Web personnel) . Évalué à 1.

      Mon problème n'est pas le fait que je perde des paquet, j'ai bien sûr fait le choix d'UDP de manière tout à fait consciente, mais bien qu'il me semble en perdre beaucoup trop, et ce même dans des conditions idéales (réseau local 100 mbps avec des machines tout à fait correctes).
      J'ai la franche impression que ma façon de lire mes sockets UDP est en cause, et c'est plus sur cet aspect là que je demandais d'éventuels retours d'expériences.
      • [^] # Re: Pas étonnant

        Posté par  . Évalué à 2.

        Ca permet pas de corriger ton soft, mais tu pourra comparer les pertes de paquets et les performances réseau avec 'iperf' :
        http://dast.nlanr.net/Projects/Iperf/(...)
        ou apt-get install iperf
      • [^] # Re: Pas étonnant

        Posté par  . Évalué à 2.

        Tu as regardé du côté de setsockopt ?
        Je ne peux pas te dire les options exacts mais on a deja eu des pertes paquets au alentours de 3-4 Mbits/sec qu'on a resolu grace a ca... Ceci dit t'a quand meme pas un gros debit ...
  • # je crois comprendre

    Posté par  . Évalué à 2.

    alors les postes qui recoivent de l'UDP sont très sensibles au buffer de réception. S'il est trop petit (par défaut il arrive que ça soit 8192) et si tu ne lit pas assez vite et que le buffer de réception est déjà remplit, alors tes paquets seront perdus...
    La solution, augmenter le buffer de réception avec un setsockopt() et boucler sur un select() pour être tout de suite avertis quand un paquet arrive du réseau.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.