Cilium, un outil eBPF

Par mboudemagh, 14 février, 2025
Logo de Cilium

Introduction

Pour ce troisième article, nous allons approfondir notre compréhension de la technologie eBPF en explorant des exemples concrets de son utilisation. C’est là que Cilium entre en jeu, un outil de surveillance et d’analyse de la connectivité entre les processus Kubernetes basé sur eBPF. Pour rappel, eBPF est une technologie qui permet d’écrire des programmes exécutés dans le noyau au sein d’environnements sandboxés. Étant donné la complexité et l’ampleur de Cilium, nous allons nous concentrer ici uniquement sur l’aspect réseau de cet outil.

Qu’est ce que Cilium?

Cilium est sans doute l’outil eBPF le plus connu, car il apparaît régulièrement en première position dans les ressources que je consulte pour mes recherches et qu’il est utilisé par plusieurs multinationales pour leurs infrastructures cloud. Alors, qu’est-ce que Cilium ? Cilium est une solution Open Source orientée vers la sécurité, qui permet de sécuriser et d’observer la connectivité entre les différents services dans un environnement, le tout basé sur la technologie eBPF. C’est un outil si performant qu’il est utilisé par de grandes entreprises comme Google, Bell, Adobe, et même AWS.

eBPF pour optimiser les performances

Étant basé sur eBPF, tous les processus sont effectués dans l’espace noyau du système. Cela donne au programme un privilège élevé et lui permet d’avoir une vue d’ensemble sur l’ensemble du système. Cela permet aussi d’éviter les copies dans l’espace utilisateur, ce qui économise des ressources et optimise les performances afin d’avoir des analyses et des retours très rapide voir instantanés.

Kubernetes, définition

Pour mieux comprendre Cilium, il est important de clarifier certains concepts de Kubernetes. Kubernetes est un outil de gestion de conteneurs, permettant de gérer des clusters, un ensemble de nœuds (machines physiques ou virtuelles). Chaque nœud héberge un ou plusieurs pods, des unités de déploiement qui contiennent elles-mêmes un ou plusieurs conteneurs. Ces conteneurs partagent plusieurs ressources communes, comme l’espace réseau et les configurations.

Intégration de Cilium

Cilium peut s'intégrer à Kubernetes grâce à des plugins CNI (Container Network Interface). Ces plugins permettent de gérer des réseaux de conteneurs au sein de Kubernetes.

Scalabilité

Le plan de contrôle de Cilium gère la prise de décision concernant les paquets réseau, tandis que le plan de données se charge de leur acheminement selon ce qui est défini par le plan de contrôle. Dans Cilium, ce plan de contrôle et de données est si poussé qu’il a été conçu pour des environnements cloud où plusieurs centaines, voire milliers de conteneurs sont créés et détruits à chaque seconde. Cela permet une scalabilité sans précédent, offrant aux entreprises la possibilité de concevoir leur architecture sans se soucier des problèmes de performance réseau.

Load Balancing

Cilium offre également d’autres services réseau, comme le load balancing (équilibrage de charge), qui permet à un serveur load balancer de rediriger les requêtes vers différents serveurs en fonction de leur charge de travail, afin de les traiter et d’envoyer les réponses adaptées.

Optimisation du réseau

Cilium est aussi utilisé pour optimiser la bande passante, ce qui permet à une infrastructure d’être encore plus rapide. Par exemple, son gestionnaire de bande passante réduit la latence du réseau par quatre. En effet, Cilium utilise BBR (Bottleneck Bandwidth and Round-trip propagation time), un algorithme de contrôle de congestion développé par Google, qui ajuste l’utilisation du réseau en fonction de la bande passante disponible et du RTT (Round Trip Time), c'est-à-dire le temps qu'un paquet met pour faire l’aller-retour entre deux points. En utilisant ces paramètres, BBR ajuste la vitesse de transmission des données et le maximum de données que le réseau peut utiliser à un moment x.

Conclusion

Voilà un aperçu des principaux avantages de Cilium du point de vue réseau. La semaine prochaine, nous explorerons en détail les aspects d’observabilité et de sécurité avancée que Cilium propose pour les environnements de cloud.


Sources

Cilium: «Cloud Native, eBPF-based Networking, Observability, and Security» - https://cilium.io/

Kubernetes: «Viewing Pods and Nodes | Kubernetes» - https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-intro/

Kubernetes: «Cluster Architecture | Kubernetes» - https://kubernetes.io/docs/concepts/architecture/

Kubernetes: «Kubernetes» - https://kubernetes.io/

Google: «TCP BBR congestion control comes to GCP – your Internet just got faster | Google Cloud Blog» - https://cloud.google.com/blog/products/networking/tcp-bbr-congestion-control-comes-to-gcp-your-internet-just-got-faster

Commentaires