OVH Cloud OVH Cloud

silly window syndrome

2 réponses
Avatar
Stan
Bonjour,

Est-ce que toutes les implémentations TCP/IP
sont immunisées face à ce problème ?

Sur un réseau local, j'ai un client Windows qui
communique avec une machine exotique;
l'application Windows étant particulièrement peu performante,
le dialogue entre les deux part en live au bout d'un moment;
l'analyse des dumps TCP montre que le client diminue sans cesse sa fenêtre
et le dialogue cesse à ce moment.

Le problème est que la partie 'exotique' ( un système embarqué ) bouffe
toutes ses ressources TCP ( mbuf ) a l'issue de cette situation.
Je me demande donc si elle gére correctement le phénomène cité en objet,
ou si ça vient d'ailleurs...

Merci pour vos reflexions ;-)
--
-Stan

2 réponses

Avatar
Herm
"Stan" a écrit dans le message de news:

Bonjour,


Bonjour,

Est-ce que toutes les implémentations TCP/IP
sont immunisées face à ce problème ?


La théorie voudrait qu'on dise oui, sauf cas critique de la liaison
totalement coupée, mais la réalité ...

Sur un réseau local, j'ai un client Windows qui
communique avec une machine exotique;
l'application Windows étant particulièrement peu performante,
le dialogue entre les deux part en live au bout d'un moment;
l'analyse des dumps TCP montre que le client diminue sans cesse sa
fenêtre
et le dialogue cesse à ce moment.


La fenêtre en question, c'est RWIN si je suis bien. Or RWIN va
bufferiser des paquets entrants qui n'arriveraient pas dans le bon
ordre. Notemment, s'il manque un paquet (perdu dans la nature, checksum
erroné...), les paquets qui suivent sont stokés en RWIN, et dans les ACK
qui partent du poste client, le RWIN sera diminué au fur et à mesure des
paquets stockés.

Plusieurs mécanismes permetteraient au poste client Windows de signaler
à son correspondant qu'un paquet manque :
- Duplicate ACK (renvoi du même ACK, le dernier correct, plusieurs fois.
En général, 3 réémission d'un ACK signale à celui qui le reçoit que le
paquet contenant les données de la séquence qui suit le n° présent dans
l'ACK est à re-émettre).
- Selective ACK (Un message optionnel est ajouté à l'ACK qui décrit
clairement le ou les paquets manquants).

Un utilitaire du type DrTCP de dslreports permet de forcer l'activation
de ces options sur un système windows, mais il me semble qu'elles sont
activées, par défaut.

Si le système embarqué ne sait interpréter aucun de ces mécanismes, il
va continuer à émettre jusqu'à épuisement du RWIN de la machine d'en
face ou de son propre tampon d'émission, et là, arrêt forcé du dialogue.

A tester aussi, mais j'ai des doutes sur le résultat, c'est d'augmenter
le RWIN du client Windows jusqu'à 65535 (la limite que toute pile IP est
sensée supporter...), cela permettrait peut-être de laisser le temps au
système embarqué de s'apperçevoir qu'une trame est à re-émettre, et de
faire cette re-émission, avant saturation totale du RWIN...

Le problème est que la partie 'exotique' ( un système embarqué )
bouffe
toutes ses ressources TCP ( mbuf ) a l'issue de cette situation.
Je me demande donc si elle gére correctement le phénomène cité en
objet,
ou si ça vient d'ailleurs...


Une hypothèse parmis d'autres : Tampon d'émission probablement plein par
cause d'abence d'ACK validant les données envoyées...

Merci pour vos reflexions ;-)
--
-Stan


--
Herm

Avatar
Stan
"Herm" a écrit dans le message de
news:45083d98$0$21151$
"Stan" a écrit dans le message de news:


Si le système embarqué ne sait interpréter aucun de ces mécanismes, il
va continuer à émettre jusqu'à épuisement du RWIN de la machine d'en
face ou de son propre tampon d'émission, et là, arrêt forcé du dialogue.



Je pense qu'on est dans ce cas de figure là ( épuisement du tempon
d'émission ).


A tester aussi, mais j'ai des doutes sur le résultat, c'est d'augmenter
le RWIN du client Windows jusqu'à 65535 (la limite que toute pile IP est
sensée supporter...), cela permettrait peut-être de laisser le temps au


D'après le trafic TCP, le client Windows démarre avec cette taille là.
Mais la taille diminue rapidement vu le peu de performance de l'application
( un truc développé en VB ;-) )


Une hypothèse parmis d'autres : Tampon d'émission probablement plein par
cause d'abence d'ACK validant les données envoyées...


Je ne met pas en cause le client Windows étant donné qu'il fonctionne
avec d'autre machine.

Merci pour ces précisions.

--
-Stan