O roteador / firewall do CentOS 6 parece estar limitando o rendimento

12

TL; DR

O roteador / firewall NAT CentOS6 atrás de uma conexão de modem a cabo de 120 Mbps parece estar limitando a taxa de transferência a 30 Mbps após atualizações recentes e "fortalecimento" da segurança.

Antes das atualizações e do reforço, eu estava recebendo 90 Mbps.

Eu verifiquei o uso da CPU e da rede e nenhum deles parece ser um fator limitante. tcnão mostra nenhuma forma de tráfego acontecendo e não sei mais como solucionar isso.

Detalhes

Eu tenho um sistema CentOS 6 executando como roteador / firewall NAT atrás de um modem a cabo Comcast, que também está sendo executado como 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, que anteriormente servia como roteador / firewall atrás de um modem a cabo Time-Warner que era executado no modo bridge. Quando mudei para o território da Comcast, pretendia mudar o modem para o modo bridge, mas nunca cheguei a ele, e o NAT duplo nunca causou um problema. Eu estava obtendo uma taxa de transferência de 90 Mbps sem problemas.

Ao preparar a conversão para o modo de ponte no modem Comcast, decidi "proteger" o sistema CentOS desativando alguns serviços desnecessários e fazendo a "atualização yum", o que não fazia há algum tempo. Após o endurecimento, fiz um teste de velocidade e fiquei surpreso ao encontrar uma taxa de transferência de até 30 Mbps.

Tentei conectar meu sistema de desktop principal diretamente ao modem como este

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

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

Eu pensei que talvez a modelagem de tráfego tenha sido ativada de alguma forma, mas tcparece indicar que não está ativa

[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 recebido, exceto uma porta não padrão para ssh
  4. instalando e configurando 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 a seguir para descobrir por que meu roteador CentOS 6 parece limitar artificialmente a taxa de transferência a 30 Mbps?

Ex Umbris
fonte
Método científico ... O que você fez para "fortalecer" o sistema? Qual hardware está em uso? É saudável?
ewwhite
@ewwhite veja as atualizações da publicação.
Ex Umbris
O que acontece se você desativar a inspeção do iptables?
precisa saber é
I definir as políticas padrão para ACCEPT em todas as três cadeias (de entrada, para a frente, de saída) e corou todas as regras ... nenhuma mudança, ainda 30Mbps
Ex Umbris
Downvoter gostaria de comentar?
precisa saber é o seguinte

Respostas:

17

Portanto, 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 é isso que estava acontecendo.

A etapa de solução de problemas que revelou o problema foi observar as luzes da porta Ethernet na parte traseira do modem a cabo. Em vez da luz verde de "1 Gbps", era laranja, significando "100 Mbps". Nesse modo, parece que o modem suporta taxa de transferência apenas 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 ethtoolvi isso:

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 basicamente dizia (do ponto de vista do adaptador Centos) "Eu posso suportar o GBEthernet e estou anunciando o GBEthernet, mas o ponto não suporta o GBEthernet - por isso, estou conectado a 100 Mbps" .

Tentei várias correções sugeridas em vários fóruns on-line (inclusive aqui), como usar um cabo diferente, desativar a negociação automática, anunciar apenas 1 GB de velocidade ou definir a velocidade para 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.

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

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

Ex Umbris
fonte
1
De acordo com essa saída, o par literalmente nem oferece GBE, portanto, nenhuma quantidade da sua configuração substituirá isso. Se fosse, por exemplo, um cabo defeituoso, você veria uma velocidade de link negociada mais baixa, mas ainda veria GBE nas velocidades anunciadas pelo seu par. Dado que foi resolvido alterando sua placa de rede, isso significa que algo em um nível muito baixo dentro ou perto do [G] MII estava se comportando mal. Isso é profundo o suficiente no território "estranho" que farei como milhares de net.engs fizeram antes de mim e disse: "Eu culpo o firmware".
precisa saber é o seguinte
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. Faça o benchmark de uma versão não modificada do CentOS (linha de base) e aplique cada alteração individualmente e execute o teste de velocidade após cada alteração.

user9517
fonte