FreeBSD: Netflix diffuse des flux à près de 400 Go/s par serveur
septembre 20, 2021Pour son service de streaming, Netflix a extrêmement optimisé le matériel AMD et le système FreeBSD qu’il utilise au fil des ans. D’autres projets sont déjà en cours.
Pour le fournisseur de streaming vidéo Netflix, il est techniquement avantageux de fournir le plus de données vidéo aussi rapidement que possible sans avoir à investir trop dans le matériel. Le développeur Drew Gallatin optimise donc, entre autres, le système FreeBSD utilisé de manière à ce que la distribution des données vidéo soit aussi proche que possible de la limite technique du matériel réseau, comme il le décrit dans une présentation à la conférence EuroBSD (PDF). Un seul serveur atteint désormais des débits de données de près de 400 GBit/s.
Le problème technique de base est qu’en raison des caractéristiques du matériel et de certains processus logiciels, la limite techniquement possible du matériel du réseau ne peut souvent pas être atteinte. Grâce à diverses optimisations, Netflix a néanmoins pu faire passer les débits de données d’environ 200 GBit/s l’année dernière à 400 GBit/s par serveur entre-temps.
Problèmes de matériel et optimisations pour y remédier
Les serveurs sont basés sur des processeurs AMD Epyc-7502P (32 cœurs), qui sont soutenus par une mémoire vive DDR4-3200 de 256 Go. Deux Mellanox ConnectX-6 Dx, qui offrent quatre connexions 100GbE, sont utilisés pour la connexion réseau. La bande passante de la mémoire d’environ 240 GBit/s empêche d’obtenir des résultats optimaux. L’architecture NUMA limite également la bande passante de la mémoire.
L’architecture NUMA des processeurs Epyc limite également le flux de données. La grande quantité de données entraîne simplement un retard dans le traitement par le CPU, car les accès à la mémoire sont en concurrence les uns avec les autres. Dans le meilleur des cas, les données ne passaient pas du tout par les CPU NUMA, selon M. Gallatin.
Netflix a donc testé l’utilisation d’une seule adresse IP par hôte et s’appuie sur l’agrégation de liens. L’idée derrière cela était de toujours effectuer les calculs avec certaines données sur l’un des nœuds NUMA afin d’éviter les transferts. Toutefois, le passage de un à quatre nœuds n’a probablement apporté que des améliorations minimes.
Le noyau TLS comme solution
Afin d’atteindre des vitesses encore plus élevées, l’équipe a eu l’idée de retirer autant que possible l’unité centrale du transport des données. Ceci est rendu possible par le matériel réseau utilisé actuellement et l’utilisation d’un déchargement TLS à l’aide de l’implémentation TLS dans le noyau FreeBSD (kTLS).
Gallatin en avait déjà décrit les détails dans une conférence il y a deux ans (PDF). La session TLS proprement dite est toujours établie dans l’espace utilisateur, mais les clés utilisées migrent ensuite, avec l’aide du noyau, vers le matériel du réseau, où le cryptage a lieu. Une déviation via le CPU n’est plus nécessaire.
En utilisant le dernier firmware des cartes réseau et les optimisations TLS, Netflix atteint environ 380 GBit/s de transmission de données avec environ 400 000 sessions actives par serveur. Avec les processeurs de serveur ARM d’Ampere, qui ont également été testés, l’équipe obtient encore environ 320 GBit/s, mais cela est probablement dû à la connexion PCIe. L’équipe n’a pas encore été en mesure de tester le déchargement TLS avec le matériel Intel. En outre, l’équipe dispose déjà de prototypes matériels avec lesquels des connexions réseau allant jusqu’à 800 GBit/s pourraient être possibles, mais l’équipe ne l’a pas encore testé.