Yu de Diretta ne fait pas mystère de sa passion pour l'optimisation des réseaux informatiques en vue de l'amélioration du rendu sonore. Son protocole de communication, et la dernière version DDS, en sont des témoins.
Il a effectué voici une année environ un autre développement qui s'appuie sur une technologie du monde libre, DPDK. Cette techno permet de se passer des couches réseau de l'OS ce qui présente certains avantages.
Voici une description faite par Claude:
DPDK (Data Plane Development Kit) est un ensemble open source de bibliothèques et de pilotes, créé à l'origine par Intel et aujourd'hui projet de la Linux Foundation. Il permet aux applications de traiter les paquets réseau en espace utilisateur, sans passer par la pile réseau du noyau. Au lieu du chemin habituel (la carte réseau déclenche une interruption, le noyau copie le paquet, puis le socket le transmet à l'application), le DPDK donne à l'application un contrôle direct sur la carte réseau.
Sa rapidité repose sur quelques techniques :
- Pilotes en mode polling (poll-mode drivers) : des cœurs CPU dédiés interrogent la carte réseau en continu au lieu d'attendre des interruptions, ce qui supprime les délais liés aux interruptions et aux changements de contexte.
- Zéro copie et hugepages : les paquets arrivent dans une mémoire pré-allouée et verrouillée que l'application lit directement. On évite ainsi les copies par le noyau et on réduit les défauts de TLB.
- Affectation des cœurs et files circulaires sans verrou : les traitements sont attachés à des cœurs isolés et les données circulent entre eux sans verrous, ce qui garde un timing prévisible.
- Traitement par lots : les paquets sont traités en rafales, ce qui réduit fortement le coût par paquet.
Pourquoi c'est important pour l'audio sur IP haut de gamme
Les réseaux audio professionnels (AES67, SMPTE ST 2110-30/31, RAVENNA, et dans une certaine mesure Dante et les systèmes de type AVB/TSN) sont exigeants d'une façon particulière. La bande passante reste modeste comparée à la vidéo, mais le trafic se compose d'un très grand nombre de petits paquets soumis à des contraintes temporelles strictes. Par exemple, un flux avec un temps de paquet de 125 µs envoie 8 000 paquets par seconde. Une console, un routeur ou un serveur de diffusion qui gère des centaines de flux peut donc atteindre plusieurs millions de paquets par seconde, une charge que la pile du noyau gère mal. Le DPDK convient bien à ce type de trafic pour plusieurs raisons :
- Latence faible et déterministe. Sans interruptions ni intervention de l'ordonnanceur, la latence descend à quelques microsecondes et, surtout, reste constante. On peut alors utiliser des tampons de réception plus petits et des temps de paquet plus courts, ce qui réduit la latence de bout en bout pour le retour de scène et le live.
- Moins de gigue. L'audio a besoin de paquets arrivant à un rythme régulier. Le polling sur des cœurs isolés évite les pics de délai causés par les tâches de fond du système, et la lecture reste précise à l'échantillon près.
- Forte densité de canaux. Un seul serveur standard peut émettre ou recevoir des milliers de canaux. Cela rend possibles des moteurs de mixage logiciels, des routeurs matriciels et la diffusion sur du matériel x86 courant, au lieu d'équipements dédiés à base de FPGA ou de DSP.
- Synchronisation précise. Le DPDK peut exploiter l'horodatage matériel des cartes réseau, ce qui facilite la synchronisation PTP (IEEE 1588 / SMPTE 2059). Tous ces protocoles dépendent de PTP pour aligner les horloges média entre les équipements.
- Cadencement précis des paquets. Les émetteurs peuvent envoyer leurs paquets à intervalles exacts. C'est nécessaire pour respecter les règles de mise en forme du trafic de ST 2110 et pour éviter de saturer les tampons des commutateurs.
- Passage du matériel au logiciel. L'ensemble de ces avantages permet aux diffuseurs et aux salles de faire tourner leur infrastructure audio en logiciel, sur des serveurs standard ou dans le cloud, avec plus de souplesse et une montée en charge plus simple. La Media Transport Library d'Intel, une pile ST 2110 open source, en est un bon exemple : elle repose sur le DPDK et prend en charge l'audio ST 2110-30.
Les contreparties
- Les cœurs en polling tournent à 100 % même au repos, ce qui consomme du CPU et de l'énergie.
- L'application doit implémenter elle-même ses fonctions réseau (ARP, abonnements multicast IGMP, etc.) ou s'appuyer sur une bibliothèque qui le fait.
- Il faut des cartes réseau compatibles et un réglage fin du système (hugepages, isolation des cœurs, prise en compte de NUMA), ce qui ajoute de la complexité.
C'est disproportionné pour les petits systèmes, comme un boîtier de scène de quelques dizaines de canaux, où la pile du noyau ou une puce audio dédiée suffit.
Des alternatives plus légères comme AF_XDP offrent aujourd'hui une partie de ces avantages en perturbant moins le fonctionnement normal du système.
En résumé : le DPDK transforme des serveurs généralistes en moteurs de traitement de paquets rapides et déterministes. Pour l'audio sur IP professionnel, cela se traduit par une latence plus faible, un timing plus précis et un nombre de canaux bien plus élevé sur du matériel standard. En échange, il faut dédier des ressources CPU et accepter une complexité d'ingénierie supplémentaire.
J'ai deux serveurs équipés et qui fonctionnent parfaitement. Le seul problème pour moi relève de ma préférence pour l'upsampling off-line avec PGGB, ce qui rend l'utilisation de Memory Play comme de Roon difficile.
Par ailleurs, comme l'indique l'IA, les coeurs en polling tournent à 100%, ce qui rend la machine très très chaude...