GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi le noyau lâcherait-il des paquets ?

J'ai interrompu tcpdump avec Ctrl +C et j'ai obtenu ce résumé total :

579204 packets captured
579346 packets received by filter
142 packets dropped by kernel

Que sont les "paquets abandonnés par le noyau" ? Pourquoi cela arrive-t-il ?

Réponse acceptée :

Dans le manuel de tcpdump :

paquets "abandonnés par le noyau" (il s'agit du nombre de paquets qui ont été abandonnés, en raison d'un manque d'espace tampon, par le mécanisme de capture de paquets du système d'exploitation sur lequel tcpdump est exécuté, si le système d'exploitation signale cette information aux applications ; sinon , il sera signalé comme 0).

Un peu d'explication :

Le tcpdump capture les paquets bruts passant par une interface réseau.
Les paquets doivent être analysés et filtrés selon les règles que vous avez spécifiées dans la ligne de commande, et cela prend un certain temps, donc les paquets entrants doivent être mis en mémoire tampon (mis en file d'attente) pour le traitement .
Parfois, il y a trop de paquets, ils sont enregistrés dans un tampon, mais ils sont enregistrés plus rapidement que traités, donc finalement le tampon manque d'espace, donc le noyau abandonne tous les autres paquets jusqu'à ce qu'il y ait de l'espace libre dans le tampon.

Vous pouvez augmenter la taille du buffer avec le -B (--buffer-size ) comme ceci :

tcpdump -B 4096 ....

Notez que la taille est spécifiée en kilo-octets, donc la ligne ci-dessus définit la taille de la mémoire tampon à 4 Mo.


Linux
  1. Pourquoi le serveur a-t-il bloqué mon IP ?

  2. Linux - Pourquoi le noyau ne peut-il pas exécuter Init ?

  3. Pourquoi le segment .bss est-il requis ?

  4. Comment vérifier HZ dans le terminal?

  5. Pourquoi protéger le noyau Linux de l'utilisateur root ?

Analyser le noyau Linux avec ftrace

Pourquoi vous devez supprimer ifconfig pour ip

Comment vérifier la version du noyau sous Linux

Pourquoi le noyau est-il mappé sur le même espace d'adressage que les processus ?

Pourquoi pr_debug du noyau Linux ne donne-t-il aucune sortie ?

Pourquoi quelqu'un voudrait-il exécuter UserMode Linux (UML)