GNU/Linux >> Znalost Linux >  >> Linux

Proč by jádro zahazovalo pakety?

Přerušil jsem tcpdump pomocí Ctrl +C a získal toto celkové shrnutí:

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

Co jsou to „pakety zahozené jádrem“? Proč se to děje?

Přijatá odpověď:

Z příručky tcpdump:

pakety „zahozené jádrem“ (toto je počet paketů, které byly zahozeny z důvodu nedostatku vyrovnávací paměti mechanismem zachytávání paketů v operačním systému, na kterém běží tcpdump, pokud OS tyto informace hlásí aplikacím; pokud ne , bude hlášena jako 0).

Trochu vysvětlení:

tcpdump zachycuje nezpracované pakety procházející síťovým rozhraním.
Pakety musí být analyzovány a filtrovány podle pravidel, která jste určili v příkazovém řádku, a to nějakou dobu trvá, takže příchozí pakety musí být ukládány do vyrovnávací paměti (zařazeny do fronty) pro zpracování .
Někdy je paketů příliš mnoho, ukládají se do vyrovnávací paměti, ale ukládají se rychleji, než zpracovávají, takže nakonec dojde ve vyrovnávací paměti místo, takže jádro zahodí všechny další pakety, dokud v ní není volné místo vyrovnávací paměti.

Velikost vyrovnávací paměti můžete zvětšit pomocí -B (--buffer-size ) možnost takto:

tcpdump -B 4096 ....

Všimněte si, že velikost je uvedena v kilobajtech, takže řádek výše nastavuje velikost vyrovnávací paměti na 4 MB.


Linux
  1. Linuxové jádro:5 nejlepších inovací

  2. Životní cyklus testování linuxového jádra

  3. Proč server zablokoval moji IP?

  1. Linux – Proč v systému není přítomen žádný souborový systém Rootfs?

  2. Linux – podílíte se na e-mailové konferenci jádra?

  3. Proč Apt již neaktualizuje jádro?

  1. Proč se funkce zavření nazývá release v `struct file_operations` v jádře Linuxu?

  2. Proč je jádro mapováno do stejného adresního prostoru jako procesy?

  3. Proč pr_debug linuxového jádra nedává žádný výstup?