Pourquoi un routeur matériel fonctionne-t-il mieux qu'un routeur Linux avec de meilleures spécifications (RAM et CPU)?


44

J'ai un minimum de CentOS 6.3, 64 bits, faisant office de passerelle avec 4 cartes réseau (1 Gbps), reliées entre elles une pour le trafic public et une autre pour le privé, qui effectue la conversion en réseau. Il dispose de 6 Go de RAM et de 4 cœurs logiques. Nous l'utilisons depuis deux ans sans aucun problème.

Je n'ai aucune expérience avec les routeurs matériels, mais j'ai entendu dire qu'ils ont moins de RAM et de CPU et utilisent des disques flash. Comment une boîte avec une configuration matérielle faible peut-elle fonctionner mieux (en tant que, gérer plus de connexions simultanées) qu'une machine avec plus de RAM et de CPU?

Quels sont les facteurs limitants, autres que l'IOS utilisant différentes méthodes pour gérer cela?


5
Les mises en œuvre dans le matériel sont plus rapides que le firmware est plus rapide que le logiciel pour la même solution.
Mdpc

3
Les "meilleures spécifications" mentionnées ne sont pas pertinentes pour le travail à effectuer. Il y a d'autres propriétés qui comptent réellement.
Ndim

Ok, alors ... d'après ce que vous avez écrit, devrais-je supposer que votre Centos est une machine virtuelle? Hormis les optimisations réseau spéciales pour les machines virtuelles, à la fois sur l'hyperviseur et sur le côté invité, les machines virtuelles sont généralement réputées pour ne pas jouer ce rôle ... pour une utilisation en tant que routeur / pare-feu, le métal nu est toujours recommandé!
lapidé

Acheminez-vous réellement 1 Gbps de trafic comme suggéré par votre configuration? Vous utilisez peut-être un camion à benne basculante pour déplacer une pelle pleine de sable. En gros, 6 Go de RAM et 4 cœurs ne seront jamais utilisés pour un routeur. Vous pourriez économiser de l'électricité et économiser de l'espace en utilisant un petit ordinateur Intel Atom pour effectuer ce travail.
Bert

Réponses:


64

ASIC .

Au lieu d'utiliser un processeur généraliste et un logiciel spécifique à une tâche, vous pouvez ignorer le logiciel et demander au silicium de gérer la tâche directement.

Le matériel de réseau hautes performances utilise des ASIC au lieu de logiciels pour les tâches lourdes de calculs (mais relativement simples logiquement) consistant à comparer une adresse IP à une énorme table de routage Internet, à rechercher dans une table CAM une décision de commutation ou à comparer un paquet à une liste de contrôle d'accès . Cela fait une énorme différence dans la rapidité de ces opérations urgentes, offrant un avantage significatif par rapport à un processeur polyvalent.


1
Bien que je sois d’accord avec Shane, je choisirais un ordinateur iptables fonctionnant sur un serveur générique plutôt que sur un appareil. Dans mon entreprise, iptables sous Fedora est plus rapide, plus flexible, plus simple à configurer, moins gourmand en ressources processeur et en mémoire, plus rapide à démarrer et beaucoup moins cher que notre Cisco Asa.
vendredi

@rvh: pour le pare-feu ou le routage?
mveroone

2
et dans l’ensemble, «vitesse» est un terme assez vague ici. Je suis sûr qu’il existe de nombreuses situations dans lesquelles un PC peut toujours effectuer une opération «aussi rapidement» qu’un ordinateur matériel, ou peut avoir une durée constante plus longue que celle d’un ordinateur portable. Mais cela dépend vraiment de la stabilité et de la rentabilité - vous achetez toujours moins de RAM / CPU avec une appliance, mais vous en tirez plus et vous ne faites que ce dont vous avez besoin pour obtenir la stabilité
Colin Godsey

Cette réponse est fausse par la commission. Crier «ASIC» est également un peu naïf, car la plupart des routeurs utilisant la technologie NAT utilisent des processeurs standard, à moins que nous n'allions dans des performances extrêmes. De plus, les routeurs matériels-NAT ont des limites plus strictes quant au nombre de connexions simultanées. Ce que le PO expérimente, c'est une mauvaise configuration et l'utilisation d'un système d'exploitation qui ne convient pas à la tâche.
jumelé

@dualed most routers that do NAT use general purpose CPUsOui, c'est une affirmation véridique, mais je ne connais pas le fait que beaucoup de ces périphériques délèguent des opérations spécifiques à des puces dédiées (comme le montre clairement la lecture de ma réponse complète ci-dessus). Ne pensez pas que le NAT et le suivi de connexion (ce qui, j'en conviens, ne se produisent pas dans les ASIC des périphériques modernes), pensez à la table de routage et à la commutation de déchargement.
Shane Madden

12

Un routeur dédié haut de gamme peut surpasser les performances d'un PC doté d'un processeur plus rapide et de davantage de mémoire vive, car il peut effectuer davantage de routage matériel.

C'est la même raison pour laquelle un commutateur Ethernet à 60 $ Gigabit peut surpasser un PC à 2 000 $ avec 4 cartes GigE à deux ports faisant office de commutateur Ethernet. L'interrupteur est construit à partir du sol pour être un interrupteur.


3
De plus, étant donné que le routeur dédié fonctionne sur un disque flash, il y a moins de pièces mobiles défaillantes aux moments inopportuns.
cpt_fink

3
Je ne suis pas vraiment sûr que tu aies raison. J'ai créé une protection anti-DDOS très basique pour une entreprise sur laquelle je travaillais à l'aide de netmap ( info.iet.unipi.it/~luigi/netmap ) et qui fonctionnait très bien, même sur du matériel normal (1 Go / s ou 11 Mo ). paquets / sec). Il existe également une version de openswitch for netmap sur ce site qui peut transférer des paquets de 3 M / s sur du matériel "normal". Je ne connais pas de commutateur bon marché (500 $) capable de le faire, mais je me trompe peut-être.
XzKto

2
@XzKto Un commutateur GigE 5 ports bon marché typique (60 USD) peut transférer des paquets entre toutes les combinaisons de ports à la vitesse du fil. Ils utilisent généralement une barre transversale complète, non bloquante.
David Schwartz

@XzKto Ce que David voulait dire est que, contrairement au PC qui gérera la vitesse du "débit de ses propres interfaces", le commutateur le fera si, pour chaque combinaison de port à port. Host1 peut parler à host2 et entre 3 et 4, et chaque connexion en duplex intégral et avec un débit maximal . Vous ne pouvez pas battre ça. (et pour plus d'argent, plus de ports, il est encore plus facile de voir pourquoi c'est plus rapide). Et pour le routeur, c'est un peu la même chose: le matériel pourra rediriger plus rapidement que le logiciel, car il peut rediriger dès qu'il dispose de suffisamment d'informations (votre routeur linux le fera à chaque couche, mais y arriver sera déjà plus lent).
Olivier Dulac

11

"Autre que l'IOS"?

IOS fait presque toute la différence. CentOS est un système d'exploitation polyvalent. Il est conçu pour fonctionner assez bien dans une très large gamme de scénarios, en utilisant une vaste gamme de configurations matérielles différentes. D'autre part, IOS est extrêmement bien configuré pour gérer uniquement le type de charge de travail que vous attendez d'un équipement réseau, à l'aide des types de matériel spécifiques que vous trouverez dans les équipements Cisco.

Connaître exactement le matériel pour lequel vous programmez vous mènera très loin en termes de performances par rapport à la compatibilité.


3
+1 Ajoutez à cela le fait que Cisco dispose des ressources en ingénierie et du savoir-faire pour remplacer les logiciels par du matériel en cas de besoin. Cela signifie que si une opération particulière est plus lente que celle souhaitée dans le logiciel, ils peuvent s’efforcer de concevoir un ASIC, d’ajouter des instructions à leurs unités de traitement existantes ou de créer un module matériel pour accélérer le processus. Les tables basculent énormément en faveur de la performance lorsque vous avez le luxe de contrôler à la fois le logiciel et le matériel.
Justin ᚅᚔᚈᚄᚒᚔ

Cela fonctionne aussi dans les deux sens. Le matériel informatique ne doit pas non plus traiter de cas rares et complexes. Il jette simplement ceux-ci au logiciel. Des boucles de routage? N'essayez pas de comprendre dans le matériel comment traiter ces problèmes.
MSalters

4

Les logiciels et le matériel ont quelque chose à dire. J'ai comparé les cartes réseau Intel et TP-Link (qui utilisent une puce Realtek) sur du matériel serveur générique, ainsi que des logiciels de routage conçus à cet effet et génériques.

Du côté du matériel, si le circuit ASIC intégré peut traiter un peu le trafic IP, la charge du processeur peut être plus faible et donc plus rapide. J'ai remarqué que les deux puces INtel NIC intégrées communiquaient directement par DMA, évitant ainsi le processeur principal lors du traitement du transfert de paquets; pendant ce temps, la puce Realtek s’interrompt chaque fois qu’un paquet arrive.

Du côté logiciel, si le logiciel est conçu pour être utilisé dans le routage, il peut être rendu plus efficace. J'ai utilisé pfSense + PF (un FreeBSD modifié destiné à être utilisé en tant que routeur) et Ubuntu 12.04 + iptables à usage générique en tant que logiciel de routage et le premier système de transfert de trafic est nettement plus rapide. (Ubuntu 14.04 est maintenant presque aussi rapide, grâce au nouveau noyau nftables du noyau Linux 3.13.)

Cependant, les routeurs dédiés ont un inconvénient majeur: ils ne peuvent effectuer que des transferts de trafic et ne peuvent pas être virtualisés. Mon routeur de bord actuel est une machine virtuelle à l'intérieur de mon cluster ESXi exécutant Ubuntu 14.04. Il fait également office de système de détection d'intrusion et d'équilibreur de charge.


3

Autant que je sache, il s’agit des frais généraux d’un système d’exploitation à usage général; quelle que soit la rapidité de vos connexions, les paquets sont traités paquet par paquet dans le contexte du noyau, ce qui augmente la latence et la charge du système. Je crois que cela a déjà été expliqué dans les autres réponses mieux que je ne pourrais le faire.

Cela dit, il existe de nouvelles technologies "ish" prometteuses dont la popularité et la faisabilité augmentent, ce qui pourrait créer un concurrent plus redoutable en dehors des systèmes Linux à cet égard et à d’autres égards; c'est à dire InfiniBand

Examinez les questions et réponses suivantes sur StackOverflow: Comment TCP Kernel-bypass est-il mis en œuvre?

Lectures complémentaires:


2

Cela est généralement dû au manque de configuration de pile / périphérique réseau prête à l'emploi sous Linux. Dans près de 90% des cas, votre trafic réseau est traité par CPU0, tandis que les autres sont inactifs. Si vous résolvez ce problème, la différence avec les routeurs matériels ne sera pas aussi radicale que vous pourriez le penser. Vous devez configurer au moins RSS ou RPS (distribution du traitement des paquets basée sur le pilote / la pile entre les CPU).

Si vous vous souciez vraiment des performances de votre routeur Linux et que vous avez assez de temps, je vous recommande de lire cet article sur le blog packagecloud (il existe également un article sur la transmission de paquets).

Si vous avez besoin de jeter un coup d'œil à la distribution et que vous pensez que regarder while sleep 1; do cat $some_file_in_procfs; done, l'évaluation du masque de la CPU et l' smp_affinityécriture manuelle sont ennuyeux, vous auriez probablement trouvé mon projet-animal netutils-linux extrêmement utile.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.