Tamanho do buffer para capturar pacotes no espaço do kernel?

16

Percorrendo a página man do tcpdump , parece que o kernel pode descartar os pacotes se o buffer estiver cheio. Eu queria saber se:

  1. esse tamanho é configurável e / ou
  2. onde posso ver o tamanho da minha distro?

A partir da página man (para facilitar a consulta):

packets ''dropped by kernel'' (this is the number of packets that were dropped, due to a lack of buffer space, by the packet capture mechanism in the OS on which tcpdump is running, if the OS reports that information to applications; if not, it will be reported as 0).

    
por Anon 08.08.2011 / 11:26

1 resposta

25

O tcpdump tem a opção -B para definir o tamanho do buffer de captura. O valor é então passado para a libpcap (biblioteca usada pelo tcpdump para fazer a captura real do pacote) via função pcap_set_buffer_size() . Tcpdump manpage não especifica em quais unidades o tamanho do buffer é especificado com -B, mas da fonte parece que é KiB.

página de manual de pcap_set_buffer_size() não especifica o tamanho padrão do buffer (que é usado se esta função não for chamada), mas novamente, a partir do libpcap source , isso parece ser 2 MiB, pelo menos no linux (mas provavelmente depende do sistema).

Com relação ao buffering e drop de pacotes, você também deve prestar atenção definindo o parâmetro snaplen ( -s ) de acordo. man tcpdump :

-s     Snarf  snaplen bytes of data from each packet rather than the
default of 65535 bytes.  Packets truncated because of a limited snapshot
are indicated in the output with ''[|proto]'', where proto is the name of
the protocol level at which the truncation has occurred. Note that  taking
larger  snapshots both increases the amount of time it  takes  to
process packets and, effectively, decreases the amount of packet buffering.
This may cause packets to be lost. You should limit snaplen to the
smallest number that will capture the protocol information you're
interested in. Setting snaplen to 0 sets it to the default of 65535, for
back-wards compatibility with recent older versions of tcpdump.

Isso significa que, com o tamanho do buffer fixo, você pode aumentar o número de pacotes que se encaixam no buffer (e, portanto, não serem descartados), diminuindo o tamanho do buffer. tamanho.

    
por 30.08.2011 / 13:07