Por que o NetHogs reporta 0 KB / segundo enquanto faz benchmarking?

3

Eu estava curioso para saber quanto tráfego o kernel do Linux poderia suportar na rede de loopback, então decidi fazer benchmark. Em um terminal, eu corri:

% nc -l -p 5235 127.0.0.1 > /dev/null

E em outro eu corri:

% nc 127.0.0.1 5235 < /dev/zero

Então, para realmente medir o tráfego, eu corri sudo nethogs lo . Isso mostra uma entrada para o segundo nc mostrando que ele envia cerca de 570.000 KB / segundo (em média). O primeiro nc parece enviar cerca de 1.300 KB / segundo em média, o que eu suponho ser pacotes de controle TCP. No entanto, os dois processos nc mostram 0 KB / segundo recebidos. Por que é isso? Parece que cada processo deve reportar um valor recebido igual ao valor enviado do outro.

Informação da versão:

% nethogs -V
 version 0.8.1

% uname -a
Linux file-not-regular.strugee.net 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux

% nc -h |& head -1
[v1.10-41]
    
por strugee 15.02.2017 / 21:09

1 resposta

0

Isso ocorre porque o kernel não faz distinção entre tráfego de entrada e saída além dos endereços IP de origem e destino. Os pacotes não são "contados duas vezes" porque o kernel observa o IP de origem, vê que é local, classifica-o como de saída e não se incomoda em classificar o pacote ainda mais (por exemplo, como entrada).

    
por 27.01.2018 / 22:09