Dados os pacotes transmitidos ifconfig RX/TX, como posso obter bytes transmitidos RX/TX?

Dados os pacotes transmitidos ifconfig RX/TX, como posso obter bytes transmitidos RX/TX?

Estou executando o UbuntuLinuxv18, e esta é a informação que ifconfigproduz sobre minha NIC:

$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.123  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::4a75:bbe4:742d:d77b  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:55:c7:9f  txqueuelen 1000  (Ethernet)
        RX packets 2443063  bytes 868405621 (828.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2343559  bytes 1022562153 (975.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Alguns sistemas (ou seja: Linux embarcado em roteadores)reportar apenas pacotes RX/TX, mas não mostra bytes RX/TX.

Existe alguma maneira nos sistemas operacionais Linux deobter bytes RX/TX dados pacotes RX/TX?

Acho que algumas perguntas correlacionadas seriam:

  • Essa equivalência é sempre a mesma (ou seja: fator 1024)?
  • Essa equivalência muda durante a execução (dinâmica)?
  • Esta equivalência depende do sistema operacional? Ou talvez dependente de NIC?
  • Existe alguma equivalência?

Responder1

Não há equivalência, os pacotes variam em tamanho dependendo do seu conteúdo. Você só pode obter tamanhos mínimos e máximos; por exemplo, os quadros Ethernet podem ocupar entre 72 e 1530 octetos (ignorando os quadros jumbo), portantonpacotes em uma interface Ethernet representam algo entre 72 ×ne 1530 ×nbytes transmitidos.

O ifconfigcomando no seu roteador pode não mostrar as contagens de bytes, mas se o seu roteador rodar Linux, essas contagens serão rastreadas; comoMosvycomentado, você poderá vê-los usando

ip -s link show eth0

ou

head /sys/class/net/eth0/statistics/*_bytes

informação relacionada