49 votes

Pourquoi un routeur matériel est-il plus performant qu'un routeur Linux doté de meilleures spécifications (RAM et CPU) ?

J'ai un CentOS 6.3, 64 bit, qui sert de passerelle avec 4 NIC (1 Gbps), chacun relié ensemble, l'un pour le trafic public et l'autre pour le trafic privé, qui effectue du NATing. 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 pas d'expérience avec les routeurs matériels, mais j'ai entendu dire qu'ils avaient moins de RAM et de CPU et qu'ils utilisaient des disques flash. Comment une boîte avec une faible configuration matérielle peut-elle être plus performante (c'est-à-dire gérer plus de connexions simultanées) qu'une machine avec plus de RAM et de CPU ?

Quels sont les facteurs limitants, si ce n'est que l'IOS utilise différentes méthodes pour gérer cela ?

66voto

Shane Madden Points 112034

ASIC .

Au lieu d'utiliser une unité centrale polyvalente et un logiciel spécifique à une tâche, vous pouvez vous passer du logiciel et faire en sorte que le silicium s'occupe directement de la tâche.

Le matériel de réseau à haute performance utilise des ASIC au lieu de logiciels pour les tâches lourdes en termes de calcul (mais relativement simples en termes de logique), comme la comparaison d'une adresse IP à une énorme table de routage Internet, la vérification d'une table CAM pour une décision de commutation ou la vérification d'un paquet par rapport à une liste de contrôle d'accès (ACL). Cela fait une énorme différence dans la vitesse de ces opérations sensibles au temps, offrant un avantage significatif par rapport à une unité centrale polyvalente.

12voto

David Schwartz Points 31009

Un routeur dédié haut de gamme peut être plus performant qu'un PC doté d'une unité centrale plus rapide et de plus de mémoire vive, car il peut effectuer une plus grande partie du routage au niveau matériel.

C'est la même raison pour laquelle un commutateur Gigabit Ethernet de 60 dollars peut être plus performant qu'un PC de 2 000 dollars équipé de 4 cartes GigE à deux ports faisant office de commutateur Ethernet. Le commutateur est conçu dès le départ pour être un commutateur.

10voto

Ryan Ries Points 54671

"Autre qu'IOS" ?

L'IOS fait presque toute la différence. CentOS est un système d'exploitation polyvalent. Il est conçu pour fonctionner suffisamment bien dans un très large éventail de scénarios, en utilisant une vaste gamme de configurations matérielles différentes. IOS, en revanche, est extrêmement bien réglé pour gérer uniquement le type de charges de travail que l'on attend d'un équipement de réseau, en utilisant les types de matériel très spécifiques que l'on trouve dans les équipements Cisco.

Savoir exactement les éléments de matériel pour lesquels vous programmez vous mèneront très loin en termes de performances par rapport à la compatibilité.

4voto

Les logiciels et le matériel ont tous deux quelque chose à dire. J'ai comparé les cartes d'interface réseau d'Intel et de TP-Link (qui utilisent une puce Realtek en leur cœur) sur du matériel serveur générique, ainsi que des logiciels spécialisés et génériques dans le domaine du routage.

Sur le plan matériel, si l'ASIC embarqué peut gérer le trafic IP, la charge du processeur peut être plus faible et donc plus rapide. J'ai remarqué que les deux puces INtel NIC embarquées communiquent directement par DMA, contournant ainsi le processeur principal dans la gestion de la transmission des paquets ; pendant ce temps, la puce Realtek s'interrompt à chaque fois qu'un paquet arrive.

En ce qui concerne le logiciel, s'il est conçu pour être utilisé dans le cadre du routage, il peut être rendu plus efficace. J'ai utilisé à la fois pfSense+PF (un FreeBSD modifié destiné à être utilisé comme routeur) et Ubuntu 12.04+iptables comme logiciel de routage. (Ubuntu 14.04 est maintenant presque aussi rapide, grâce au nouveau nftables dans le noyau Linux 3.13).

Cependant, les routeurs dédiés présentent un inconvénient majeur : ils ne peuvent pas faire grand-chose d'autre que de commuter le trafic, et ils ne peuvent pas être virtualisés. Mon routeur de périphérie actuel est une machine virtuelle au sein de mon cluster ESXi fonctionnant sous Ubuntu 14.04, et il fait également office de système de détection d'intrusion et d'équilibreur de charge.

3voto

Waqas Points 632

AFAIK, 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 pression sur le 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 prometteuses qui gagnent en popularité et en faisabilité et qui pourraient faire des systèmes Linux des concurrents plus redoutables dans ce domaine comme dans d'autres : InfiniBand, par exemple.

Jetez un coup d'œil aux questions-réponses suivantes sur StackOverflow : Comment le contournement du noyau TCP est-il mis en œuvre ?

Pour en savoir plus :

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X