Le problème
Le système présente une certaine dégradation des performances. La vérification avec netstat montre un nombre très important (et croissant) d'"échecs de réassemblage de paquets", semblable à :
# netstat -s | fgrep reassembles 353357449 packet reassembles failed 353359152 packet reassembles failed 353360314 packet reassembles failed 353361547 packet reassembles failed 353363020 packet reassembles failed 353364064 packet reassembles failed
La solution
En général, les réassemblages de paquets IP peuvent échouer si :
- Il n'y a pas assez de mémoire pour réassembler les fragments IP.
- Un délai d'expiration se produit lors de l'attente des fragments IP restants.
- Les fragments IP sont supprimés ou corrompus.
Cet article traite des problèmes 1 et 2.
Concernant les délais d'attente
Vérifiez le ipfrag_time actuel :
# cat /proc/sys/net/ipv4/ipfrag_time 30
Envisagez d'augmenter ce nombre à 60 :
# echo "60" > /proc/sys/net/ipv4/ipfrag_time
Si cela réussit, il peut être rendu permanent en ajoutant la commande echo ci-dessus à /etc/rc.local
Concernant la mémoire
La documentation indique :
ipfrag_high_thresh - INTEGER Maximum memory used to reassemble IP fragments. When ipfrag_high_thresh bytes of memory is allocated for this purpose, the fragment handler will toss packets until ipfrag_low_thresh is reached. ipfrag_low_thresh - INTEGER See ipfrag_high_thresh
Vérifiez les valeurs actuelles d'ipfrag_high_thresh et d'ipfrag_low_thresh :
ipfrag_high_thresh 4194304 ipfrag_low_thresh 3145728
Dans ce cas, commencez par augmenter ipfrag_high_thresh pour doubler la valeur actuelle. c'est-à-dire :
# echo "8388608" > /proc/sys/net/ipv4/ipfrag_high_thresh
Encore une fois, si le résultat est satisfaisant, ajoutez ceci à /etc/rc.local.