Architecture

Un contrôleur qui décide, des nœuds qui exécutent.

Le contrôleur ne fait passer aucune image. Il tient l’inventaire, prépare les hôtes, place les conteneurs et surveille. Le travail temps réel vit sur les nœuds, au plus près de la carte réseau.

01

Vue d’ensemble

Trois plans réseau, une synchronisation commune, un bus par nœud.

ContrôleurPilotage, base de données, surveillanceFlask · SQLite · :5000Contrôleur de secoursRéplication warm-standby, promotion manuellePLAN DE CONTRÔLENœud AAgent-nœud :9100 · Docker2110_iomultiviewCœurs isolés · hugepages · PTPNœud BAgent-nœud :9100 · DockermultiviewstreamerGPU NVIDIA · macvlanNœud CAgent-nœud :9100 · DockerpyramidedelayStockage · médiasRDMARDMAPLAN MÉDIA ST 2110Référence PTPIEEE 1588 · SMPTE ST 2059Commutateur médiaMulticast IGMP · une adresse par fluxÉquipements tiersCaméras, mélangeurs, convertisseurs 2110
Le plan de contrôle porte le pilotage. Le plan média porte le ST 2110. Entre les nœuds, le bus mémoire se réplique par RDMA.
02

Contrôleur

Application web centrale, sans conteneur de production à bord.

Contrôleur
RôlePlan de contrôle uniquement : inventaire, déploiement, câblage, supervision, protocoles broadcast.
PilePython 3.13, Flask, base SQLite, thread de surveillance à période fixe.
InterfaceUne seule application web, traduite en français et en anglais et ouverte à d’autres langues, trois thèmes, permissions par utilisateur.
ExtensionLes types de conteneurs et les intégrations sont des modules séparés, versionnés indépendamment.
SécuritéAucune valeur de site dans le code versionné, jeton par nœud, jeton par conteneur injecté au démarrage, piste d’audit des actions.
03

Nœuds

Des serveurs Debian enrôlés, pilotés par leur agent.

Nœud
AgentService HTTP local, jeton propre au nœud, responsable du cycle de vie Docker et des opérations sur l’hôte.
PréparationHugepages, profil de carte réseau, files d’attente, liaison des ports au pilote DPDK, isolation de cœurs, tout est posé par le contrôleur.
CapacitésUn nœud déclare ce qu’il sait faire : moteur 2110, calcul, médias, GPU. Le placement en tient compte.
AutonomieSi le contrôleur disparaît, l’agent veille sur les scripts déployés et les relance.
InstallationInstalleur dédié, démarrage réseau UEFI HTTP ou média USB, prise en main à distance par contrôleur d’administration.
Réseau conteneursSegment macvlan, une adresse par conteneur, passerelle déduite de la route par défaut du nœud.
04

Bus mémoire et réplication

Les essences ne repassent pas par le réseau à l’intérieur d’un nœud.

Les flux vidéo, audio et données vivent en mémoire partagée, dans un domaine commun à tous les conteneurs du nœud. Un producteur écrit ses grains, les consommateurs les lisent sans copie réseau et sans encodage intermédiaire. Un consommateur qui perd son producteur se rattache seul quand celui-ci revient.

Page RDMA : lien de réplication actif entre deux nœuds et état des cartes
Entre nœuds, la réplication passe par RDMA. Chaque lien porte son flux, son chemin physique, son format, son débit mesuré et sa cadence attendue.
Bus MXL
OrigineLe bus est la Media eXchange Layer, la couche d’échange qu’appelle l’EBU Dynamic Media Facility Reference Architecture. Bobi.Studio s’appuie sur son SDK, publié sous Apache 2.0, plutôt que d’inventer un transport propriétaire.
DomaineMémoire partagée locale au nœud, indexation des grains dérivée du temps.
EssencesVidéo planar, audio multicanal, données auxiliaires.
InteropérabilitéLe bus est un format ouvert : d’autres implémentations lisent et écrivent les mêmes flux.
Inter-nœudsRéplication RDMA, répartition sur plusieurs ports, réconciliation des liens.
05

Les trois plans réseau

Séparés parce qu’ils n’ont ni les mêmes contraintes ni les mêmes pannes.

Plans
Média ST 2110Carte dédiée, pilote en kernel-bypass, multicast, PTP. Aucun trafic de gestion ne le traverse.
ConteneursSegment macvlan, une adresse par conteneur, joignable directement par le contrôleur.
ContrôleAdresse fixe du nœud, posée à l’installation, porte l’agent et l’administration.

Le multicast est alloué de façon centralisée, une adresse par flux, avec réservation atomique : un groupe appartient à un seul flux, et l’affiliation IGMP est posée sur l’interface qui le porte.

Seul le plan média est propre au ST 2110. Une installation qui entre et sort en SRT ou en RTMP n’utilise que le segment des conteneurs et le plan de contrôle : ni carte dédiée, ni PTP, ni multicast.

06

Synchronisation

Sans synchronisation commune, il n’y a pas de chaîne, seulement des flux.

Chaque nœud se cale sur la référence PTP du site. Le contrôleur échantillonne l’écart, garde l’historique et alerte sur un décrochage. Les descriptions de session émises portent la référence de synchronisation de la chaîne.

PTP
ProtocoleIEEE 1588 avec profil broadcast SMPTE ST 2059.
Par nœudDémons de synchronisation pilotés par le contrôleur, avec état et écart remontés en continu.
Moteur 2110Sur les nœuds en kernel-bypass, la synchronisation de la carte est tenue par le moteur lui-même.
SuiviHistorique des écarts, épisodes de décrochage, alerte contextualisée.
07

Ressources

On mesure, on ne devine pas.

Santé d’un nœud : occupation par cœur, consommation par conteneur, mémoire, RDMA, disques, températures
Le graphe par cœur distingue les lcores du moteur 2110, les conteneurs épinglés, le pool libre et ce qui reste au système. Le tableau dit qui consomme quoi, avec la famine et l’épinglage obtenus par conteneur.

Chaque type de conteneur porte un profil de consommation, établi en charge de production. L’allocateur réserve des cœurs dans la bande isolée du nœud en tenant compte de la topologie mémoire, puis un second mécanisme vérifie le placement réellement obtenu : bande respectée, affectation posée, répartition des fils d’exécution. Ce que le calcul prévoit et ce que la machine fait sont deux choses distinctes, et les deux sont affichées.

La bande passante mémoire du nœud est mesurée séparément. Sur les serveurs où elle est le facteur limitant, elle explique des plafonds que le nombre de cœurs disponibles ne suffit pas à expliquer.

08

Haute disponibilité

Le secours dit qu’il est seul. Il ne se promeut pas tout seul.

Deux contrôleurs peuvent fonctionner en paire, l’actif répliquant son état vers le secours. Le secours sonde l’actif en permanence ; passé un délai sans réponse, un témoin visible sur toutes les pages mène directement à la promotion.

La bascule du pilotage reste un geste humain, et c’est délibéré : sans témoin tiers, un contrôleur coupé du réseau ne peut pas distinguer « l’autre est mort » de « je suis isolé », et se promouvoir dans le doute donnerait deux pilotes pour une même production. L’adresse de management, elle, bascule automatiquement.

09

Prérequis matériel

Ce qu’il faut prévoir avant d’acheter.

Prérequis
ContrôleurMachine Debian 13 avec Python 3.13, physique ou virtuelle. Pas de contrainte temps réel.
Nœud de calculDebian 13 avec Docker. Les cœurs isolés et la bande passante mémoire comptent plus que la fréquence brute.
Nœud 2110Carte réseau Intel E810 pour le plan média, hugepages, cœurs isolés, accès PTP. Requis seulement pour les nœuds qui portent des ports 2110.
GPUCarte NVIDIA en option. Elle décharge le processeur : encodage matériel NVENC pour les sorties et le monitoring, accélération de la composition. Un même nœud tient donc davantage de conteneurs.
RDMACartes compatibles RoCE pour la réplication du bus entre nœuds.
RéseauUn plan média capable de multicast et de PTP, un segment pour les conteneurs, un plan de contrôle.

Le guide d’infrastructure du dépôt détaille les choix de processeur, de mémoire, de carte réseau et de redondance, avec les points qui font échouer une installation.

Lisez le détail à la source.

Guide d’infrastructure, guide d’installation, contrat de l’agent-nœud et documentation de la haute disponibilité sont versionnés avec le code.