Por que um roteador de hardware funciona melhor que um roteador Linux com melhores especificações (RAM e CPU)?

43

Eu tenho um mínimo de CentOS 6.3, 64 bits atuando como gateway com 4 NIC (1 Gbps), cada um unido para o tráfego público e outro para o privado, que realiza o NAT. Tem 6 GB de RAM e 4 núcleos lógicos. Estamos usando isso há dois anos sem problemas.

Eu não tenho nenhuma experiência com roteadores de hardware, mas ouvi dizer que eles têm menos memória RAM e CPU e usam discos flash. Como uma caixa com baixa configuração de hardware pode ter melhor desempenho (como em outras conexões simultâneas) do que uma máquina com mais RAM e CPU?

Quais são os fatores limitantes, além do IOS, usando métodos diferentes para lidar com isso?

    
por Blue Gene 28.03.2013 / 04:51

6 respostas

64

ASICs .

Em vez de usar uma CPU de propósito geral e um software específico para tarefas, você pode pular o software e apenas fazer o silício lidar com a tarefa diretamente.

Hardware de rede de alto desempenho usa ASICs em vez de software para tarefas computacionalmente pesadas (mas relativamente logicamente simples) de algo como comparar um endereço IP a uma enorme tabela de roteamento da Internet, verificar uma tabela CAM para uma decisão de comutação ou verificar um pacote contra um ACL. Isso faz uma enorme diferença na velocidade dessas operações sensíveis ao tempo, fornecendo uma vantagem significativa sobre uma CPU de uso geral.

    
por 28.03.2013 / 05:06
12

Um roteador dedicado e de alto desempenho pode superar um PC com uma CPU mais rápida e mais RAM porque pode fazer mais do roteamento em hardware.

É a mesma razão pela qual um switch Gigabit Ethernet de US $ 60 pode superar um PC de US $ 2.000 com 4 placas GigE de duas portas atuando como um switch Ethernet. O switch é construído do zero para ser um switch.

    
por 28.03.2013 / 05:06
11

"Diferente de IOS"?

O IOS faz quase toda a diferença. O CentOS é um sistema operacional de uso geral. Ele foi projetado para ter um bom desempenho sob uma grande variedade de cenários, usando uma vasta gama de configurações de hardware diferentes. O IOS, por outro lado, é extremamente bem ajustado para lidar apenas com o tipo de carga de trabalho que você esperaria de um equipamento de rede, usando os tipos muito específicos de hardware que você encontraria no equipamento da Cisco.

Conhecendo exatamente quais componentes do hardware que você está programando levarão você a um longo caminho em termos de desempenho x compatibilidade.

    
por 28.03.2013 / 04:55
4

Tanto o software quanto o hardware têm algo a dizer. Eu tenho a comparação entre Intel e TP-Link NIC (que usa um chip Realtek em seu coração) em hardware de servidor genérico, bem como software de finalidade genérica e propósito específico em roteamento.

No lado do hardware, se o ASIC integrado puder fazer alguma manipulação do tráfego IP, a carga do processador poderá ser menor e, portanto, mais rápida. Eu notei os dois chips INTEL NIC a bordo comunicando-se diretamente pelo DMA, ignorando a CPU principal no tratamento do encaminhamento de pacotes; Enquanto isso, o chip Realtek interrompe sempre que um pacote chega.

No lado do software, se o software for projetado para ser usado no roteamento, ele pode se tornar mais eficiente. Eu usei tanto o pfSense + PF (um FreeBSD modificado destinado a ser usado como roteador) quanto o Ubuntu 12.04 + iptables de propósito genérico como software de roteamento e o primeiro claramente muda o tráfego muito mais rápido. (O Ubuntu 14.04 é agora quase tão rápido, graças aos novos nftables no kernel do Linux 3.13.)

No entanto, o roteador dedicado tem uma grande desvantagem: ele não pode executar muito além de alternar tráfego e não pode ser virtualizado. Meu roteador de borda atual é uma máquina virtual dentro do meu cluster ESXi que executa o Ubuntu 14.04 e também atua como um sistema de detecção de intrusão e balanceador de carga.

    
por 23.04.2014 / 13:41
3

AFAIK, é a sobrecarga de um sistema operacional de propósito geral; Independentemente de quão rápido as suas conexões, os pacotes são tratados pacote por pacote no contexto do kernel, aumentando a latência e sobrecarregando o sistema. Eu acredito que já foi explicado nas outras respostas melhor do que eu poderia fazer.

Dito isto, existem novas tecnologias "ish" promissoras, aumentando sua popularidade e viabilidade, o que pode criar um concorrente mais formidável a partir dos sistemas Linux, assim como em outros aspectos; ou seja, InfiniBand

Veja o seguinte Q & A no StackOverflow: Como o TCP Kernel-bypass é implementado

Leitura adicional:

por 17.10.2015 / 23:40
2

Geralmente é por causa da falta de configuração de pilha / dispositivos de rede prontos para uso no linux. Em quase 90% dos casos, o tráfego da rede é processado pela CPU0, enquanto outros estão inativos. Se você resolver esse problema, os roteadores de hardware não serão tão drásticos quanto você possa imaginar. Você deve configurar pelo menos RSS ou RPS (distribuição de processamento de pacote baseado em driver / pilha entre as CPUs).

Se você realmente se importa com o desempenho do seu roteador linux e tem tempo suficiente, eu recomendo que você leia isto artigo no blogue packagecloud (há também artigo sobre transmissão de pacotes).

Se você precisar dar uma olhada na distribuição e achar que assistir a while sleep 1; do cat $some_file_in_procfs; done , avaliação de máscara de CPU e manual smp_affinity escrita é entediante, provavelmente você encontrou meu projeto de estimação netutils-linux extremamente útil.

    
por 16.07.2017 / 05:56