Ce tutoriel explique comment concevoir un load balancer ICMP (ping) en utilisant XDP (eXpress Data Path) avec le framework Rust Aya. L’objectif est de rediriger les requêtes ICMP vers différents serveurs backends en modifiant l’adresse IP de destination, illustrant ainsi les principes de base des load balancers réseau. L’auteur justifie le choix de l’ICMP par sa simplicité pédagogique, bien que moins courant que TCP/UDP, tout en soulignant que les concepts abordés s’appliquent aussi à ces protocoles.
L’article détaille la création d’un environnement de développement via des namespaces réseau, la génération d’un programme XDP minimal avec Aya, et l’intégration de dépendances comme network-types pour manipuler les en-têtes réseau. Il montre ensuite comment tester le load balancer en pingant une IP virtuelle (10.0.0.10) qui redirige le trafic vers un backend (10.0.0.2 ou 10.0.0.3), avec une approche progressive pour résoudre les problèmes de checksum et de répartition de charge.
Enfin, le billet s’inscrit dans une série dédiée à XDP, après des articles sur les firewalls et la mitigation de DDoS, et annonce une suite pour améliorer ce load balancer. L’auteur invite les lecteurs à approfondir avec des ressources externes et à explorer des cas plus complexes comme TCP/UDP.