Bonjour,
J'ai un soucis avec un serveur (centos 5.4 x64 2.6.18-128.4.1.el5).
De temps en temps (aléatoire et non reproductible) ce server ne peut plus faire de connection TCP sur une autre machine et uniquement sur celle là et uniquement sur l'IP virtuelle de celle ci. Si on essaye une connection TCP sur l'ip physique ca fonctionne.
Au niveau TCPdump ca donne:
Emetteur -> Recepteur: SYN
Recepteur -> Emetter: ACK
Emetteur -> Recepteur: RST (avec un seq num très élevé)
Pas de firewall entre les deux, pas d'iptables.
J'ai des erreurs sur la carte du server émetteur avec un max de packet drop:
rx_no_buffer_count: 95367
rx_missed_errors: 32679
tx_restart_queue: 1994492
Celà indique en général un pb de ring size. Ok. Mais ..... Tous celà semble être de niveau 3 (connection sur IP virtuelle pas possible , mais sur IP eth0 OK)
Question:Est ce que le kernel peut dropper en fonction de l'ip de destination ? Si oui dans quel cas ?
PS: ICMP passe toujours.
PPS: pas de QOS ou quoi que ce soit niveau 3 sur les switches.
PPPS: Dans une configuration antérieure, les deux machine n'étaient pas sur le même VLAN, le traffic passait par un firewall (cisco PIX) et était translaté ..Ce problème n'est jamais apparu.
Merci pour les idées.
Arnaud
# MTU ?
Posté par benoar . Évalué à 2.
# duplex et tunning....
Posté par ze_lionix (site web personnel) . Évalué à 2.
- La carte est bien en full duplex ?
$> dmesg | grep duplex
- le buffer tcp est suffisant sur l'interface ?
$>sysctl net.core.rmem_max
$>sysctl net.core.wmem_max
Vérifier aussi que les param suivant sont à 1 :
$>sysctl net.ipv4.tcp_window_scaling
$>sysctl net.ipv4.tcp_timestamps
$>sysctl net.ipv4.tcp_sack
Fuse : j'en Use et Abuse !
[^] # Re: duplex et tunning....
Posté par ze_lionix (site web personnel) . Évalué à 5.
Surtout sur les "manges descripteurs" genre "O racle, O desespoir..."
$>ulimit -a
Fuse : j'en Use et Abuse !
# port reuse
Posté par Krunch (site web personnel) . Évalué à 3.
> Recepteur -> Emetter: ACK
> Emetteur -> Recepteur: RST (avec un seq num très élevé)
Si le récepteur ne renvoit pas un SYN, c'est sans doute qu'il considère que la connexion concernant ces ports n'est pas complétement fermée. Il ACK le dernier paquet qu'il a reçu pour cette connexion. Du coup, l'émetteur comprend pas de quoi il parle et il RST la connexion.
Typiquement, le récepteur pense que la connexion est dans l'état TIME_WAIT tandis que l'émetteur pense qu'elle est fermée. Dans ce cas de figure, si les deux systèmes concernés sont sous Linux, s'assurer que les TCP timestamps sont activées aide généralement assez bien (ça l'est par défaut mais il peut y avoir un proxy TCP dont tu n'es pas au courant entre les deux qui casse tout). Après tu peux envisager de jouer avec tcp_tw_re{use,cycle} mais si tu en arrives là, il y a sans doute un autre problème quelque part.
Une capture du réseau prise des deux côtés en même temps peut aussi aider à comprendre ce qui se passe.
Je vois pas en quoi les erreurs sur la carte réseau pourraient être liées au phénomène décrit.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: port reuse
Posté par arns . Évalué à 1.
Le récepteur envoie bien SYN,ACK, puis l'émetteur retourne RST.
# solutionné
Posté par arns . Évalué à 1.
Arnaud
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.