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?
linux
router
packetloss
Blue Gene
la source
la source
Réponses:
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.
la source
most routers that do NAT use general purpose CPUs
Oui, 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.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.
la source
"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é.
la source
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.
la source
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:
la source
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.la source