2017-09-02 5 views
-1

J'ai développé une application qui communique avec un équipement externe via UDP. Dans la plupart des cas, il semble fonctionner parfaitement, mais j'ai un client qui a subi une perte de paquets lors de l'utilisation de mon application sur un ordinateur portable particulier. Son autre ordinateur portable va bien. Il a vérifié les choses évidentes comme les tailles de mémoire tampon, mais il n'y a rien de manifestement faux. Il a ensuite installé EtherSnoop sur l'ordinateur portable pour essayer de voir ce qui se passe, et il semblerait que chaque fois que l'ordinateur portable transmet un message à l'équipement externe, il arrête d'écouter les messages entrants pendant une courte période. C'est comme si la liaison Ethernet de l'ordinateur portable ne pouvait fonctionner qu'en mode semi-duplex.Half duplex UDP?

L'ordinateur portable concerné est un HP utilisant une puce de réseau RealTek. Son bon ordinateur portable est un Lenovo utilisant une puce réseau Intel.

D'autres paramètres peuvent-ils provoquer ce problème? La perte de paquets n'est pas acceptable dans cette application, et nous devons trouver ce qui est "différent" à propos de la HP.

+0

Vous voudrez peut-être modifier une question. Cherchez-vous la vérification que le semi-duplex est une chose? Cherchez-vous des méthodes pour détecter cela et atténuer la perte de paquets? – wmorrell

+0

Remarque: même un NIC semi-duplex (en cours de fonctionnement) ne supprimera pas les paquets. Il sera mis en file d'attente jusqu'à ce que le canal soit libre. Sauf si la file d'attente est pleine, ofc. – spectras

+0

Je viens de modifier la question. –

Répondre

-1

Eh bien, si le système client exécute unreliably/expériences de perte de paquets, il y a peu, vous pouvez le faire. Le protocole UDP devrait être fourni de manière fiable (voir ci-dessous) même si un lien semi-duplex est utilisé, conformément à la norme CSMA/CD, à moins qu'il n'y ait une différence de duplex ou que le domaine de collision soit trop important.

Vous pouvez dépanner la connexion réseau, exclure/corriger un décalage en duplex, vérifier les câbles, vérifiez la carte réseau & configs commutateur, mettez à jour pilote de carte réseau, remplacer le matériel - clé USB ?, ...

Un décalage duplex peut soit provoqué par le port du commutateur ou le NIC. À moins d'être mal configuré, c'est très rare. Vous verrez des erreurs FCS sur le côté duplex intégral et des comptes de collision extrêmes sur le côté semi-duplex. Dans l'ensemble, la connexion se comporte très lentement lorsque vous essayez de l'utiliser sérieusement. Les liens Gigabit n'utilisent que le FDX, donc une différence de duplex sera extrêmement improbable. PS: comme l'a justement fait remarquer EJP, UDP ne peut pas être "fiable" comme dans l'ingénierie, 100.0% - fiable - ci-dessus, j'utilise la variété jardin de "fiable" comme dans 99% -ou-so.

+1

Il n'y a rien de fiable sur UDP. C'est un protocole fire-and-forget. – EJP

+0

UDP repose à 100% sur le protocole sous-jacent pour la livraison. Traversant un réseau Ethernet, il devrait être possible de le faire à moins que le réseau ne présente des problèmes. – Zac67

-1

Ce problème a été provoqué par un dépassement de tampon sur l'ordinateur portable concerné. Quant à savoir pourquoi ce portable particulier est différent des autres est encore un mystère. J'ai depuis modifié mon application pour tenir compte du problème de mémoire tampon sur ce portable particulier, et tout semble maintenant bien se passer.