Eu finalmente achei que a interface estava perdendo pacotes porque o driver estava configurado com um tamanho de descritor de Rx muito pequeno, que, enquanto trabalhava com coalescência de interrupção, decide quantos pacotes o driver pode armazenar antes de enviar uma interrupção ao kernel. Se esse valor (mostrado com ethtool -g <interface>
) for muito pequeno, os pacotes serão descartados antes que uma interrupção possa ser aumentada. Depois que eu a ampliei com ethtool -G <interface> Rx <a some big value>
, nenhum excremento surgiu desde então.
Obrigado a todos.