Vue d’ensemble

Architecture

Les daemons, le plan de données, et comment une configuration déclarative devient des paquets acheminés.

Un nœud SiHA est une image immuable unique qui exécute une poignée de processus coopérants : un plan de données (VPP) qui achemine les paquets, et un plan de contrôle qui décide comment.

Les processus

Un superviseur minimaliste est PID 1. Il réalise l’initialisation de la plateforme (montages, gestion des signaux, récupération des processus zombies), lit la seed de plateforme, amorce la PKI du nœud, puis lance et supervise tout le reste — chaque enfant disposant de son propre anneau de logs en mémoire.

ProcessusRôle
superviseur (PID 1)Initialisation de la plateforme, supervision des processus, le health-gate A/B + rollback, et un RPC RestartVPP utilisé par l’application en deux phases du plan de données.
pilotdLe cerveau. Réconcilie les ressources COSI (interfaces, ACL, NAT, routes, VIP…) vers VPP via son API binaire.
apidLa porte d’entrée gRPC sur :6443. Authentifie les clients en mTLS et relaie vers les sockets de pilotd / du superviseur.
probedEffectue les contrôles de santé des backends de l’équilibreur de charge et publie un statut que la pile LB lit pour ne conserver que les backends vivants.
metricsdAttache le segment de mémoire partagée de statistiques de VPP et sert des métriques en temps réel, à l’écart du chemin critique du plan de contrôle.
VPPLe processus du plan de données lui-même — DPDK en mode poll par défaut.

Il n’y a ni SSH, ni systemd, ni cloud-init sur l’appliance. Vous n’atteignez un nœud qu’au travers de sihactl en mTLS.

De la ressource au paquet

Tout est déclaratif. Vous appliquez une ressource ; le plan de contrôle fait converger le plan de données pour qu’il corresponde :

  1. sihactl envoie votre ressource à apid en mTLS.
  2. apid la relaie à pilotd, qui la stocke et réveille le contrôleur concerné.
  3. Le contrôleur réconcilie : il calcule le delta et programme VPP via l’API binaire (création d’une interface, installation d’une ACL, ajout d’un mapping NAT, d’une route, d’une VIP…).
  4. VPP achemine le trafic en conséquence. Le statut remonte pour que sihactl get affiche l’état observé.
SiHAVPP DATAPLANE · packet pathNICDPDKingress ›NICDPDK› egress01parsel2 / l3 / l402aclpermit / deny03nat44translate04routefib lookup05balancepick backend

Réconciliation, et non « appliquer-et-oublier »

Chaque contrôleur exécute une boucle de réconciliation : il re-dérive l’état désiré du plan de données à partir des ressources et corrige toute dérive. Point crucial, les contrôleurs souscrivent aux reconnexions de VPP — si VPP redémarre, les caches qui référencent des index périmés sont effacés et l’état est reconstruit, de sorte que le plan de contrôle ne ment jamais sur ce que le plan de données fait réellement.

La configuration propre du plan de données (startup.conf) est elle-même détenue par un contrôleur et appliquée via un redémarrage en deux phases avec dernier état correct connu et contrôle de santé : capturer la configuration actuelle, écrire la nouvelle, redémarrer VPP, la sonder deux fois — et en cas d’échec, restaurer la configuration précédente et marquer le nœud comme dégradé.

À suivre : le modèle de ressources que vous appliquez, et les commandes sihactl qui l’appliquent.