12.07.2015 Views

Acceleration materielle pour le traitement de trafic sur FPGA

Acceleration materielle pour le traitement de trafic sur FPGA

Acceleration materielle pour le traitement de trafic sur FPGA

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Manuscrit auteur, publié dans "15èmes Rencontres Francophones <strong>sur</strong> <strong>le</strong>s Aspects Algorithmiques <strong>de</strong>s Télécommunications (AlgoTel),Pornic : France (2013)"Accélération matériel<strong>le</strong> <strong>pour</strong> <strong>le</strong> <strong>traitement</strong> <strong>de</strong><strong>trafic</strong> <strong>sur</strong> <strong>FPGA</strong>Tristan Groléat 1 and Sandrine Vaton 1 and Matthieu Arzel 11 Télécom Bretagne - Technopô<strong>le</strong> Brest-Iroise - CS 83818 - 29238 Brest Ce<strong>de</strong>x 3 - Francehal-00817038, version 1 - 23 Apr 2013Les débits augmentant en cœur <strong>de</strong> réseau comme dans l’accès, <strong>le</strong>s algorithmes <strong>de</strong> <strong>traitement</strong> <strong>de</strong> <strong>trafic</strong> doivent fonctionnerà <strong>de</strong>s vitesses toujours plus é<strong>le</strong>vées. Or il est souvent impossib<strong>le</strong> <strong>de</strong> traiter <strong>de</strong>s débits <strong>de</strong> l’ordre <strong>de</strong> 10 à 100 Gb/s <strong>sur</strong><strong>de</strong>s ordinateurs conventionnels. Les <strong>FPGA</strong>s sont <strong>de</strong>s puces programmab<strong>le</strong>s à très bas niveau, particulièrement adaptées<strong>pour</strong> atteindre ce genre <strong>de</strong> vitesses. Au travers <strong>de</strong> <strong>de</strong>ux applications courantes dans <strong>le</strong>s réseaux : la classification etla génération <strong>de</strong> <strong>trafic</strong>, cet artic<strong>le</strong> montre la métho<strong>de</strong> <strong>de</strong> mise en place et l’intérêt <strong>de</strong> l’accélération matériel<strong>le</strong> <strong>pour</strong> <strong>le</strong><strong>traitement</strong> <strong>de</strong> <strong>trafic</strong>.Keywords: Traitement <strong>de</strong> <strong>trafic</strong>, <strong>FPGA</strong>, accélération matériel<strong>le</strong>, classification, génération <strong>de</strong> <strong>trafic</strong>1 IntroductionLe <strong>traitement</strong> <strong>de</strong> <strong>trafic</strong> est une tâche <strong>de</strong> base dans <strong>le</strong>s réseaux. Lors du développement <strong>de</strong> nouveauxalgorithmes dans ce domaine, il faut s’as<strong>sur</strong>er qu’ils <strong>pour</strong>ront fonctionner à <strong>de</strong>s débits adaptés au type<strong>de</strong> <strong>trafic</strong> qu’ils ont à traiter. Actuel<strong>le</strong>ment, <strong>de</strong>s débits <strong>de</strong> l’ordre <strong>de</strong> 10 à 100 Gb/s sont fréquents. Or lasection 2 va montrer qu’une implémentation logiciel<strong>le</strong> est très limitée en termes <strong>de</strong> débit et <strong>de</strong> fiabilité.C’est <strong>pour</strong>quoi cet artic<strong>le</strong> s’intéresse aux <strong>FPGA</strong>s, <strong>de</strong>s puces programmab<strong>le</strong>s à très bas niveau, qui permettentd’apporter une accélération matériel<strong>le</strong> aux algorithmes <strong>de</strong> <strong>traitement</strong> <strong>de</strong> <strong>trafic</strong>. C’est une solution efficace etraisonnab<strong>le</strong>ment peu coûteuse <strong>pour</strong> prouver <strong>le</strong> passage à l’échel<strong>le</strong> <strong>de</strong> nouveaux algorithmes proposés.L’utilité <strong>de</strong>s <strong>FPGA</strong>s sera expliquée à travers <strong>de</strong>ux exemp<strong>le</strong>s. Le premier (section 3) sera la classification<strong>de</strong> <strong>trafic</strong> basée <strong>sur</strong> un algorithme d’apprentissage supervisé : <strong>le</strong>s Support Vector Machines (SVM) [CV95].L’objectif est d’attribuer aux paquets reçus une classe (pair à pair, navigation web, streaming vidéo. . .) à10 Gb/s. Comme la classification nécessite <strong>de</strong> nombreux calculs, l’architecture massivement parallè<strong>le</strong> <strong>de</strong>s<strong>FPGA</strong>s sera mise en avant.Le second exemp<strong>le</strong> est la génération <strong>de</strong> <strong>trafic</strong> (section 4). Un générateur a été développé capab<strong>le</strong> d’envoyer<strong>de</strong>s paquets avec <strong>de</strong>s propriétés spécifiées à 10 Gb/s. Son co<strong>de</strong> est ouvert et disponib<strong>le</strong> en ligne [tel13].Ce générateur est très f<strong>le</strong>xib<strong>le</strong> et précis. La f<strong>le</strong>xibilité est en partie permise par la possibilité <strong>de</strong> reconfigurer<strong>le</strong>s <strong>FPGA</strong>s, et la précision par cel<strong>le</strong> <strong>de</strong> contrô<strong>le</strong>r <strong>le</strong>ur fonctionnement au cyc<strong>le</strong> d’horloge (5,3 ns) près.2 L’accélération matériel<strong>le</strong>La gran<strong>de</strong> f<strong>le</strong>xibilité du développement logiciel et la disponibilité d’ordinateurs puissants font penserque tout peut être fait en logiciel. Cependant l’architecture <strong>de</strong>s ordinateurs, avec <strong>de</strong> nombreuses coucheslogiciel<strong>le</strong>s, ne permet pas un contrô<strong>le</strong> comp<strong>le</strong>t du <strong>trafic</strong>, en particulier <strong>de</strong>s débits et délais inter-paquets.Pour remédier à ce problème, N. Bonelli et al. [BDPGP12] ont modifié <strong>le</strong> fonctionnement du noyau <strong>de</strong> <strong>le</strong>ursystème et développé une nouvel<strong>le</strong> socket qui permet un meil<strong>le</strong>ur contrô<strong>le</strong> du <strong>trafic</strong>. Leur générateur <strong>de</strong><strong>trafic</strong> atteint ainsi <strong>le</strong>s 10 Gb/s <strong>sur</strong> un ordinateur puissant, mais pas s’il génère <strong>de</strong>s petits paquets (64 octets :la tail<strong>le</strong> minimum <strong>pour</strong> Ethernet).Ces limites montrent l’intérêt <strong>de</strong> l’accélération matériel<strong>le</strong> dés que l’on cherche à al<strong>le</strong>r à plus <strong>de</strong> 10 Gb/sou à faire <strong>de</strong>s <strong>traitement</strong> comp<strong>le</strong>xes. Les <strong>FPGA</strong>s sont une solution possib<strong>le</strong>. Il existe principa<strong>le</strong>ment 2cartes spécialisées dans <strong>le</strong> <strong>traitement</strong> <strong>de</strong> <strong>trafic</strong> : la Net<strong>FPGA</strong> 10G [net12], avec 4 interfaces à 10 Gb/s et la


Tristan Groléat and Sandrine Vaton and Matthieu ArzelCombov2 d’INVEA TECH [IT12], avec 2 à 4 interfaces à 10 Gb/s. La programmation d’un <strong>FPGA</strong> se faitau niveau <strong>de</strong>s portes logiques, au cyc<strong>le</strong> d’horloge près. Ceci permet <strong>de</strong>s <strong>traitement</strong>s massivement parallè<strong>le</strong>set un contrô<strong>le</strong> très précis <strong>de</strong>s délais.hal-00817038, version 1 - 23 Apr 20133 La classification <strong>de</strong> <strong>trafic</strong>3.1 AlgorithmeL’algorithme <strong>de</strong> classification implémenté est léger en comparaison <strong>de</strong> la Deep Packet Inspection, maisnécessite quand même <strong>de</strong> faire <strong>de</strong>s calculs à haut débit <strong>pour</strong> traiter 10 Gb/s. Il a été montré que l’utilisation<strong>de</strong>s SVMs est efficace [WZA06]. La classification se fait par flot TCP ou UDP, <strong>le</strong>s 3 propriétés utiliséesétant <strong>le</strong>s tail<strong>le</strong>s <strong>de</strong>s 3 premiers paquets non vi<strong>de</strong>s <strong>de</strong>s flots [EGS09].L’algorithme SVM fonctionne en <strong>de</strong>ux phases : l’apprentissage puis la classification. Lors <strong>de</strong> l’apprentissage,une trace étiquetée est utilisée <strong>pour</strong> calcu<strong>le</strong>r un modè<strong>le</strong> SVM. Ce modè<strong>le</strong> contient en particulier<strong>de</strong>s vecteurs support, utilisés ensuite <strong>pour</strong> classifier <strong>le</strong>s vecteurs inconnus. Dans cet artic<strong>le</strong>, seu<strong>le</strong>l’implémentation <strong>de</strong> la phase <strong>de</strong> classification est étudiée. L’apprentissage est fait au préalab<strong>le</strong>.Nous avons développé un prototype logiciel grâce à la librairie ouverte LibSVM. L’objectif était <strong>de</strong>vérifier la précision <strong>de</strong> la classification et la vitesse <strong>de</strong> l’algorithme. La trace étiquetée utilisée <strong>pour</strong> <strong>le</strong>s testsa été fournie par un laboratoire d’Ericsson. El<strong>le</strong> contient 39056 flots dans 8 classes différentes, et il faudraittraiter 27805 flots par secon<strong>de</strong> <strong>pour</strong> pouvoir la classifier à 10 Gb/s.Le prototype donne environ 98 % <strong>de</strong> flots placés dans la bonne classe, quand l’apprentissage est fait<strong>sur</strong> 1/5 <strong>de</strong> la trace et la classification <strong>sur</strong> <strong>le</strong>s 4/5 restants. Au niveau <strong>de</strong> la vitesse, <strong>sur</strong> un processeur 2.66GHz 6-core Xeon X5650 et 12 Go <strong>de</strong> RAM DDR3, en utilisant LibSVM avec OpenMP <strong>pour</strong> <strong>le</strong> support dumulti-processus, on obtient un <strong>traitement</strong> <strong>de</strong> 4655 flots par secon<strong>de</strong>, soit 17 % <strong>de</strong>s pré-requis. Ceci ne prendmême pas en compte la nécessaire étape <strong>de</strong> <strong>traitement</strong> <strong>de</strong>s paquets avant la classification.3.2 Implémentation matériel<strong>le</strong>Pour classifier un flot, l’algorithme SVM consiste à calcu<strong>le</strong>r une fonction ”noyau” entre <strong>le</strong> vecteur àclassifier x et chaque vecteur support x i . La fonction ”noyau” la plus utilisée est appelée RBF (Radial BasisFunction) : K(x i ,x) = exp ( −γ ‖ x i − x ‖ 2) .Une fois cette fonction calculée <strong>pour</strong> chaque vecteur support, un mécanisme <strong>de</strong> sommes puis <strong>de</strong> votepermet <strong>de</strong> choisir la classe du flot.L’intérêt <strong>de</strong> l’implémentation matériel<strong>le</strong> est <strong>de</strong> permettre une parallélisation massive <strong>de</strong>s calculs. Ici :– <strong>le</strong> calcul <strong>de</strong> ‖ x i − x ‖ 2 nécessite 3 soustractions (<strong>le</strong>s vecteurs ont 3 dimensions), 3 calculs <strong>de</strong> carréspuis une somme. Ceci peut se faire en parallè<strong>le</strong> : <strong>le</strong>s 3 soustractions suivies <strong>de</strong>s carrés en même temps,et enfin la somme.– Le calcul <strong>de</strong> l’exponentiel<strong>le</strong> doit se faire autant <strong>de</strong> fois qu’il y a <strong>de</strong> vecteurs support, soit 3160 fois ici.La <strong>sur</strong>face du <strong>FPGA</strong> ne permet pas <strong>de</strong> faire <strong>le</strong>s 3160 calculs en même temps. On mettra cependant <strong>le</strong>maximum d’unités <strong>de</strong> calcul en parallè<strong>le</strong>, divisant d’autant <strong>le</strong> temps mis <strong>pour</strong> chaque classification.– Les autres calculs (sommes, mécanisme <strong>de</strong> vote. . .) dépen<strong>de</strong>nt <strong>le</strong>s uns <strong>de</strong>s autres et ne peuvent pasêtre faits en parallè<strong>le</strong>. Un pipeline sera cependant créé : chaque unité <strong>de</strong> calcul travail<strong>le</strong> en mêmetemps, mais <strong>sur</strong> <strong>de</strong>s données différentes. Par exemp<strong>le</strong> dans <strong>le</strong> calcul <strong>de</strong> la norme : il faut calcu<strong>le</strong>r unesoustraction, puis un carré, et enfin une somme. En même temps que la somme est effectuée <strong>sur</strong> <strong>le</strong>vecteur <strong>de</strong> support 1, <strong>le</strong> carré est effectué <strong>sur</strong> <strong>le</strong> 2 et la soustraction <strong>sur</strong> <strong>le</strong> 3. Ainsi un nouveau calculpeut être commencé à chaque coup d’horloge.De cette manière, <strong>de</strong>s centaines d’opérations sont exécutées à chaque coup d’horloge. Cependant <strong>le</strong>sopérations mathématiques gérées par <strong>le</strong> <strong>FPGA</strong> sont plus basiques que <strong>sur</strong> <strong>le</strong>s processeurs actuels. En particulier<strong>le</strong>s calculs <strong>sur</strong> <strong>de</strong>s flottants sont très coûteux. C’est <strong>pour</strong>quoi toutes <strong>le</strong>s va<strong>le</strong>urs sont passées en virgu<strong>le</strong>fixe. La dynamique <strong>de</strong> chaque va<strong>le</strong>ur est donc très limitée, et il faut choisir <strong>sur</strong> combien <strong>de</strong> bits chaque paramètreest codé <strong>pour</strong> ne pas trop diminuer la précision <strong>de</strong>s résultats. Une simulation développée en logicielpermet <strong>de</strong> vérifier ici qu’après optimisation, la précision se maintient à environ 97 %.Les multiplications sont aussi très coûteuses en matériel. C’est <strong>pour</strong>quoi <strong>le</strong>s calculs <strong>de</strong> carrés et d’exponentiel<strong>le</strong>ssont effectués grâce à <strong>de</strong>s mémoires en <strong>le</strong>cture seu<strong>le</strong> (ROMs) : l’adresse <strong>de</strong> <strong>le</strong>cture est l’argument


Traitement <strong>de</strong> <strong>trafic</strong> <strong>sur</strong> <strong>FPGA</strong><strong>de</strong> la fonction et la va<strong>le</strong>ur lue est son résultat. Par exemp<strong>le</strong>, <strong>pour</strong> <strong>le</strong> carré, on stocke à l’adresse 3 la va<strong>le</strong>ur9. Pour que ces mémoires soient <strong>le</strong>s plus petites possib<strong>le</strong>s, <strong>le</strong>s propriétés mathématiques <strong>de</strong>s fonctions(symétrie du carré et e a+b = e a × e b ) sont mises à profit.Des alternatives aux ROMs existent <strong>pour</strong> calcu<strong>le</strong>r <strong>de</strong>s fonctions particulières. Par exemp<strong>le</strong> <strong>pour</strong> l’exponentiel<strong>le</strong>,nous <strong>pour</strong>rions utiliser l’algorithme CORDIC qui calcu<strong>le</strong> une approximation du résultat par <strong>de</strong>sadditions et <strong>de</strong>s décalages <strong>de</strong> bits.hal-00817038, version 1 - 23 Apr 20133.3 RésultatsGrâce à la parallélisation, si n est <strong>le</strong> nombre <strong>de</strong> vecteurs support et p <strong>le</strong> nombre d’unités <strong>de</strong> calcul que l’onarrive à placer <strong>sur</strong> <strong>le</strong> <strong>FPGA</strong>, la classification d’un flot nécessite 23 + 5 + n/p + 2log 2 (p) cyc<strong>le</strong>s d’horloge.23 est la longueur du pipeline et 5 <strong>le</strong> nombre d’opérations fixes dues au vote final. 2log 2 (p) opérationsservent à réunir <strong>le</strong>s résultats <strong>de</strong>s différentes unités <strong>de</strong> calcul.Les synthèses (opération permettant <strong>de</strong> traduire <strong>le</strong> co<strong>de</strong> en circuit à programmer <strong>sur</strong> <strong>le</strong> <strong>FPGA</strong>) faites <strong>pour</strong>la carte Net<strong>FPGA</strong> 10G indiquent <strong>pour</strong> 8 unités <strong>de</strong> calcul une occupation <strong>de</strong> la <strong>sur</strong>face du <strong>FPGA</strong> <strong>de</strong> 70 % etune fréquence maxima<strong>le</strong> <strong>de</strong> fonctionnement <strong>de</strong> 165 MHz, ce qui donne plus <strong>de</strong> 290000 flots par secon<strong>de</strong>.C’est plus <strong>de</strong> 60 fois plus qu’en logiciel.Des résultats détaillés ont été publiés [GAV12]. Ces résultats ne sont que <strong>pour</strong> l’unité <strong>de</strong> classification.Le modu<strong>le</strong> <strong>de</strong> <strong>traitement</strong> <strong>de</strong>s paquets prend <strong>de</strong> la place aussi, mais ce n’est pas <strong>le</strong> sujet <strong>de</strong> cet artic<strong>le</strong>. Leclassificateur comp<strong>le</strong>t gère quand même <strong>de</strong>s débits bien supérieurs aux 10 Gb/s requis.4 La génération <strong>de</strong> <strong>trafic</strong>La section précé<strong>de</strong>nte montre l’intérêt du <strong>FPGA</strong> <strong>pour</strong> faire <strong>de</strong>s calculs massivement parallè<strong>le</strong>s et traiterdu <strong>trafic</strong> en temps réel. Cette section s’intéresse à la gestion <strong>de</strong>s paquets eux-même.4.1 FonctionnementL’objectif ici est <strong>de</strong> développer un générateur <strong>de</strong> <strong>trafic</strong> au co<strong>de</strong> source ouvert avec plusieurs caractéristiques :fonctionnement à au moins 10 Gb/s, caractéristiques <strong>de</strong> <strong>trafic</strong> (débit, en-têtes, type <strong>de</strong> paquet. . .) paramétrab<strong>le</strong>s,extensib<strong>le</strong> à tous types <strong>de</strong> <strong>trafic</strong>, et avec un coût abordab<strong>le</strong>.Des générateurs <strong>de</strong> <strong>trafic</strong> <strong>sur</strong> <strong>FPGA</strong> existent déjà [SSG11], mais à plus bas débit et moins configurab<strong>le</strong>s.Le coût abordab<strong>le</strong> est permis par la carte Net<strong>FPGA</strong> 10G, dont <strong>le</strong> prix est réduit <strong>pour</strong> <strong>le</strong>s académiques.Pour pouvoir atteindre <strong>de</strong>s débits é<strong>le</strong>vés, il faut limiter au maximum la communication avec l’ordinateur,trop <strong>le</strong>nt. C’est <strong>pour</strong>tant lui qui peut apporter la f<strong>le</strong>xibilité <strong>de</strong>mandée. Le générateur ne communiquera doncavec l’ordinateur qu’au début, lors d’une phase <strong>de</strong> configuration.La configuration se fera par <strong>le</strong> concept <strong>de</strong> flux. Un flux est un ensemb<strong>le</strong> <strong>de</strong> paquets qui partagent <strong>le</strong>même sque<strong>le</strong>tte, et <strong>de</strong>s modificateurs qui permettent <strong>de</strong> changer certaines choses dans ce sque<strong>le</strong>tte : champsaléatoires, champs qui s’incrémentent, générateurs <strong>de</strong> données <strong>de</strong> longueur variab<strong>le</strong>. . .Un flux <strong>de</strong>vra pouvoiratteindre 10 Gb/s, même en générant <strong>de</strong>s petits paquets.4.2 Implémentation matériel<strong>le</strong>L’implémentation matériel<strong>le</strong> du générateur se fait autour d’un bus <strong>de</strong> données <strong>de</strong> 64 bits <strong>de</strong> large, ce quidonne un débit <strong>de</strong> 12 Gb/s <strong>pour</strong> la carte Combo. Ce bus intègre un mécanisme permettant à chaque modu<strong>le</strong>d’arrêter <strong>le</strong>s données si nécessaire.Chaque flux configuré est généré par un bloc appelé générateur <strong>de</strong> flux, présent <strong>sur</strong> <strong>le</strong> <strong>FPGA</strong>. Lesgénérateurs <strong>de</strong> flux fonctionnent en parallè<strong>le</strong> et <strong>le</strong>s paquets générés sont mélangés dans <strong>le</strong> <strong>trafic</strong> final. I<strong>le</strong>st impossib<strong>le</strong> <strong>de</strong> configurer plus <strong>de</strong> flux qu’il n’y a <strong>de</strong> générateurs.Chaque flux est composé d’une série <strong>de</strong> modificateurs <strong>le</strong>s uns <strong>de</strong>rrière <strong>le</strong>s autres. Pour supporter <strong>le</strong>s10 Gb/s, <strong>le</strong>s modificateurs forment un pipeline : ils fonctionnent tous en même temps, mais <strong>sur</strong> <strong>de</strong>s donnéesdifférentes. Chaque modificateur a un rô<strong>le</strong> précis : l’un génère du <strong>trafic</strong> aléatoire dans certains champs,l’autre modu<strong>le</strong> <strong>le</strong> débit en arrêtant <strong>le</strong> <strong>trafic</strong> pendant un délai donné, <strong>le</strong> suivant recalcu<strong>le</strong> <strong>le</strong> champ FCSEthernet qui vali<strong>de</strong> la validité <strong>de</strong>s données. . .

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!