O roteador / firewall do CentOS 6 parece estar limitando a taxa de transferência

12

TL; DR

Roteador / firewall NAT do CentOS6 por trás de uma conexão de modem a cabo de 120 Mbps parece limitar a taxa de transferência a 30Mbps após atualizações recentes e segurança "endurecimento".

Antes das atualizações e do endurecimento, eu estava conseguindo 90Mbps.

Eu verifiquei o uso da CPU e da rede e nenhum deles parece ser um fator limitante. tc não mostra nenhuma formatação de tráfego acontecendo e Eu não sei como resolver isso ainda mais.

Detalhes

Eu tenho um sistema CentOS 6 rodando como um roteador NAT / firewall atrás de um Comcast cable modem, que também está sendo executado como um roteador NAT

                              1000     100
                              eth1     eth0
Internet-------Modem-------------CentOS6-----------------LAN
                     10.0.0.0/24         192.168.10.0/24

O NAT duplo é um legado do sistema CentOS tendo anteriormente serviu como um roteador / firewall por trás de um modem a cabo da Time-Warner no modo de ponte. Quando me mudei para o território da Comcast, pretendia mudar o modem para o modo de ponte, mas nunca chegou a ele, eo O NAT duplo nunca causou nenhum problema. Eu estava recebendo uma taxa de transferência de 90 Mbps sem problemas.

Na preparação para converter em modo de ponte no modem Comcast, decidi para "endurecer" o sistema CentOS, desabilitando alguns serviços desnecessários e fazendo "yum update", que eu não tinha feito há algum tempo. Depois de endurecer eu fez um teste de velocidade e ficou surpreso ao descobrir uma taxa de transferência de 30Mbps.

Eu tentei conectar meu sistema de desktop primário diretamente ao modem assim

                          eth1     eth0
Internet---Modem-------------CentOS6-----------------LAN
              |  10.0.0.0/24         192.168.10.0/24
              |
              +--------------Desktop(Win7)

Running speedtest.net verificou que minha conexão Comcast é capaz de 120Mbps, então algo que eu mudei no sistema CentOS resultou na taxa de transferência de 30Mbps. Toda vez que faço um teste de velocidade a LAN (atrás do sistema CentOS) eu recebo um valor dentro de 1-2% do 30Mbps, então quase parece que algo está artificialmente taxa de transferência.

Eu pensei que talvez a modelagem de tráfego tenha sido ativada de alguma forma, mas tc parece indique que não está ativo

[jhg@perseus ~]$ sudo tc -s qdisc
qdisc pfifo_fast 0: dev eth0 root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 64159459406 bytes 44745482 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo_fast 0: dev eth1 root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 2871293442 bytes 26151570 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0

O "endurecimento" consistiu em

  1. removendo alguns pacotes desnecessários
  2. desligando serviços desnecessários
  3. configurando o iptables para filtrar todo o tráfego de entrada, exceto por uma porta não padrão para ssh
  4. instalando e configurando o tripwire

Pacotes removidos:

redis                    dovecot
redhat-lsb-compat        ipa-client
redhat-lsb               nfs-utils-lib
redhat-lsb-printing      nfs-utils
foomatic                 subversion
foomatic-db              spamassassin
foomatic-db-ppds         certmonger
cups                     yp-tools
mysql-server             ypbind
mysql                    rpcbind

Serviços atualmente ativados:

abrt-ccpp            cpuspeed               kdump            nmb       
abrt-oops            crond                  lvm2-monitor     ntpd      
abrtd                dhcpd                  mcelogd          postfix   
acpid                dkms_autoinstaller     mdmonitor        rsyslog   
atd                  haldaemon              messagebus       smb       
auditd               ip6tables              named            sshd      
autofs               iptables               netfs            sysstat   
blk-availability     irqbalance             network          udev-post 

Minha pergunta é: O que devo fazer para descobrir por que meu CentOS 6 roteador parece estar limitando artificialmente o throughput a 30Mbps?

    
por Ex Umbris 03.01.2017 / 07:04

2 respostas

16

Então, o problema aqui acabou sendo um problema de hardware. As coisas estavam funcionando bem há um mês, e não se espera que o hardware com falha ainda "funcione" em um modo degradado, mas foi o que estava acontecendo.

A etapa de solução de problemas que revelou o problema foi ver as luzes da porta ethernet na parte de trás do modem a cabo. Em vez da luz verde "1Gbps", era laranja, significando "100Mbps". Nesse modo, parece que o modem suporta taxa de transferência de até 30 Mbps.

Eu sei que o modem (Arris TG-852G) tem portas GBEthernet, então algo estava impedindo o Centos de falar com o modem a 1Gbps. Usando ethtool , vi isto:

Settings for eth1:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000033 (51)
                               drv probe ifdown ifup
        Link detected: yes

que essencialmente dizia (do ponto de vista do adaptador Centos) "Eu posso suportar GBEthernet e estou anunciando GBEthernet, mas o par não suporta GBEthernet - então eu estou conectado a 100Mbps" .

Tentei várias correções sugeridas em vários fóruns on-line (incluindo aqui), como usar um cabo diferente, desativar a negociação automática, anunciar apenas a velocidade de 1 GB ou definir a velocidade como 1 GB manualmente. Desligar o auto-neg e tentar vários cabos Cat6 diferentes não teve efeito, e os outros dois impediram que uma conexão fosse estabelecida.

Eu concluí que tinha que ser o próprio adaptador e pedi um novo adaptador. Quando foi instalado, conectou imediatamente a 1Gbps. Problema resolvido.

A moral da história é, obviamente, que, embora falhas de hardware em dispositivos sem partes móveis sejam raras atualmente, elas ainda são possíveis e devem ser eliminadas antes de culpar o software.

    
por 07.01.2017 / 22:36
7

O que eu faria aqui é reverter as alterações individualmente e executar um teste de velocidade após cada uma ou reverter todas as alterações. Avalie uma versão não modificada do CentOS (linha de base) e, em seguida, aplique cada alteração individualmente e execute o teste de velocidade após cada alteração.

    
por 03.01.2017 / 07:24