Il problema
Il sistema mostra un degrado delle prestazioni. Il controllo con netstat mostra un numero molto elevato (e in aumento) di "riassemblaggi di pacchetti non riusciti" simili a:
# 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 soluzione
In generale, il riassemblaggio dei pacchetti IP potrebbe non riuscire se:
- Non c'è abbastanza memoria per riassemblare i frammenti IP.
- Si verifica un timeout durante l'attesa dei frammenti IP rimanenti.
- I frammenti IP vengono eliminati o danneggiati.
Questo post affronta i problemi n. 1 e n. 2.
Riguardo ai timeout
Controlla l'attuale ipfrag_time :
# cat /proc/sys/net/ipv4/ipfrag_time 30
Considera l'idea di aumentarlo a 60:
# echo "60" > /proc/sys/net/ipv4/ipfrag_time
Se ha successo, può essere reso permanente aggiungendo il comando echo sopra a /etc/rc.local
Riguardo alla memoria
La documentazione dice:
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
Controlla gli attuali valori ipfrag_high_thresh e ipfrag_low_thresh:
ipfrag_high_thresh 4194304 ipfrag_low_thresh 3145728
In questo caso inizia aumentando ipfrag_high_thresh per raddoppiare il valore corrente. cioè:
# echo "8388608" > /proc/sys/net/ipv4/ipfrag_high_thresh
Di nuovo, se il risultato è soddisfacente, aggiungilo a /etc/rc.local.