Le 2 oct. 07 à 01:08, MADdanny a écrit :
Je vais peut-être (certainement) dire une connerie, mais est ce qu'il
serait possible d'utiliser un GPU de malade (au pif, une 8800 Ultra)
pour ce genre de traitement ? :) Comme ils ont déjà sorti une version
dédiée au calcul, peut être qu'en lui greffant quelque ports
gigabit (ou
plus) on pourrait en faire un firewall matériel, non ?
Même avec un GPU puissant, le circuit de gestion reste (ça n'est pas
garanti à 100%, je ne suis pas un expert en architecture matérielle) :
- transfert DMA de la carte réseau vers la RAM, sous contrôle du CPU
- transformation par le CPU des paquets réseau dans un format adapté
aux calculs via le GPU
- transfert DMA vers la VRAM de la carte graphique (similaire à un
chargement de texture)
- calcul d'une décision (de routage ou de filtrage) par le GPU
- récupération du résultat par le CPU pour réaliser l'opération
effective de filtrage, routage...
- en cas de paquet non dropé,
Le GPU n'est qu'un coprocesseur, ça ne fait pas tous : le CPU restera
très chargé, surtout s'il y a besoin de gérer des tables dynamiques
de connexions pour faire du "stateful". Pour que l'utilisation d'un
GPU soit un plus, il faut que ce soit lui qui s'occupe de la majorité
des traitements à effectuer.
Cela ne tiens pas compte :
- du fait qu'il faille trouver un moyen de dédié une partie des
calculs sur le GPU, sachant que ça n'est pas toujours possible.
- du fait que les GPU actuels font régulièrement des petites erreurs
de calcul (l'électronique des GPU est vraiment poussées dans ses
recoins). Pour du traitement d'images/vidéos temps réel, de la
simulation sur des éléments finis ou des masses de données à
analyser, cela n'a pas un grand impact, des erreurs étant tolérables.
Pour un firewall, c'est beaucoup plus gênant.
Pour faire des firewalls matériels, je pense qu'il faut plutôt voir
du côté des ASIC (puces dédiées à un traitement applicatif donné),
voir des FPGA (circuits programmables permettant de créer la puce que
l'on veut).
Les constructeurs de routeurs utilisent déjà des ASIC dédiées aux
différents traitements de paquets réseau, en particulier toutes les
décisions de routage (L2 ou L3), ou de buffering/régulation : pas de
passage par le CPU dans ces cas. Cependant dès qu'un traitement un
tant soit peu complexe est nécessaire, il est réalisé par le CPU du
routeur (ACL, NAT, réponses ICMP, routage IPv6, protocoles haut
niveau comme OSPF ou BGP...). Lorsque du filtrage est directement
effectué par l'ASIC, le nombre de règles possibles est très limité.
Les FPGA ne sont à ma connaissance pas encore utilisés (ils restent
cher). FT s'intéresse à l'analyse temps réelle de trafic via des FPGA
pour contrer les DDoS (j'ai vu une offre de stage sur ce sujet), mais
je ne sais pas trop ce que cela a donné.
--
Damien alias Schmurtz
---------------------------
Liste de diffusion du FRnOG
http://www.frnog.org/