Eth0 é lento e gera erros

2

Em um dos meus computadores Linux, a rede está agindo de maneira estranha. É muito lento quando se conecta a qualquer computador fora da minha rede local (~ 1,5 Kb / s não importa qual servidor). Ao mesmo tempo, tem boa velocidade dentro da rede local (> 4 Mb / s).

O Dmesg não reporta nenhum erro relacionado ao módulo carregado, o dns está funcionando, o tamanho do mtu está bom. Eu estou usando uma conexão com fio, não wlan. Eu tentei com diferentes cabos e portas diferentes no roteador, o problema persiste.

Algumas estatísticas:

ip -s -s link
eth0 <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
RX: bytes  packets  errors  dropped  overrun  mcast
161453     227      49      0        0        0
RX errors: length   crc     frame    fifo     missed
           0        0       0        49       109

Tx não tem erros.

ethtool diz:

ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  10baseT/Half 10baseT/Full 
                                             100baseT/Half 100baseT/Full 
        Link partner advertised pause frame use: Symmetric
        Link partner advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 32
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbg
        Wake-on: d
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes


ethtool -S eth0
NIC statistics:
     tx_ok: 17330
     rx_ok: 24344
     tx_err: 0
     rx_err: 0
     rx_fifo: 1034
     frame_align: 0
     tx_ok_1col: 0
     tx_ok_mcol: 0
     rx_ok_phys: 24295
     rx_ok_bcast: 49
     rx_ok_mcast: 0
     tx_abort: 0
     tx_underrun: 0
     rx_frags: 0

Ok, acabei de fazer o proxy do tráfego através de outra máquina local e consegui baixar xorg, firefox etc e percebi que:

  1. Se eu carregar uma página da Web de peso-pesado, tudo se comporta como esperado, a velocidade é boa
  2. Se eu quiser apenas um único arquivo, sem nenhuma outra conexão tcp em execução, o comportamento persiste

Portanto, parece que está relacionado a ter POUCAS conexões ativas (também recebo um grau mais alto de erros do tipo fifo ao ter uma única conexão). Isso poderia ser um problema de driver?

    
por lode 05.11.2011 / 15:30

2 respostas

2

1.5Kb / s é o tamanho certo para um pacote por segundo. Eu vi casos em que o TCP Delayed Ack não estava funcionando e os pacotes estavam sendo enviados com atrasos de 200ms, mas 1000ms é algo totalmente diferente. Este é o ponto em que eu solto o sniffer de pacotes e vejo o que está acontecendo no fio.

Como você está vendo um comportamento diferente do tráfego na rede e fora da rede, aproveito as capturas em três áreas:

  1. Tráfego de local para local
  2. Tráfego de local para remoto, dentro de seu dispositivo de borda (como no próprio servidor local via TCPDump)
  3. Tráfego de local para remoto, fora do dispositivo de borda (bom: no próprio dispositivo de borda, melhor: no comutador que alimenta a conexão de internet do dispositivo de borda).

2 e 3 são muito importantes, pois podem ajudá-lo a descobrir se o seu dispositivo de borda está, de alguma forma, filtrando coisas que não deveria ser ou se o lado remoto está fazendo coisas que não deveria. Você está procurando por anomalias e, como há um grande número de maneiras pelas quais as coisas podem falhar dessa maneira, não posso dar uma orientação específica sobre como identificar as coisas que estão lá. O Wireshark tem alguns bons realces de erros, que podem dizer o que está acontecendo apenas carregando as capturas.

    
por 05.11.2011 / 15:39
2

Razões para lentidão podem ser:

  • NIC duplex e incompatibilidades de velocidade

  • Cabeamento incorreto

  • Interferência elétrica

O que ethtool eth0 (executar como root) mostra a você? Compare isso com outro PC. ethtool -S eth0 mostra um relatório de erros mais detalhado.

    
por 05.11.2011 / 19:06