Il y a 4 heures
J'ai fait remarquer plus haut que Diretta Memory Play utilise de petits paquets UDP (par exemple, 883 octets) pour l'audio en résolution standard, même lorsque le MTU du réseau est configuré pour des trames jumbo (par exemple, 9016 octets). Cependant, lors de la diffusion d'audio haute résolution (par exemple, 352,8 kHz), la taille des paquets augmente considérablement pour remplir le MTU disponible (par exemple, 8965 octets).
J'ai demandé l'aide de Gemini de Google pour comprendre ce choix.
Ce comportement n'est pas une sous-optimisation, mais un choix de conception délibéré qui privilégie la faible latence et l'intégrité du signal plutôt que la simple efficacité de la bande passante. Le principe fondamental est la gestion de la gigue.
1. L'objectif principal : minimiser la gigue
Pour un convertisseur numérique-analogique (DAC), la qualité audio dépend fortement d'un flux de données stable et prévisible. Les variations dans les temps d'arrivée des paquets, appelées gigue, peuvent forcer les circuits tampons et d'horloge du DAC à travailler plus fort, ce qui peut dégrader le signal analogique final.
L'objectif principal du protocole est d'établir une transmission de paquets semblable à celle d'un métronome, avec un intervalle constant et à faible latence (par exemple, toutes les 3 à 5 millisecondes).
2. Taille des paquets à des débits audio standard (par exemple, 44,1 kHz/16 bits)
* Débit de données : environ 176 400 octets/seconde.
* Latence de paquetisation : temps nécessaire pour accumuler suffisamment de données audio pour remplir un paquet.
* Pour remplir une grande trame jumbo de 9 016 octets : `9 016 octets / 176 400 octets/seconde ≈ 51 ms`.
- Analyse : attendre 51 ms pour envoyer un paquet crée un flux de données « saccadé » et peu fréquent, ce qui est contraire à une conception à faible gigue. Pour maintenir un calendrier de livraison rapide et cohérent (par exemple, toutes les 5 ms), l'application envoie toutes les données qu'elle a accumulées pendant ce court laps de temps. Cela se traduit naturellement par une taille de paquet plus petite (`176 400 octets/seconde * 0,005 seconde = 882 octets`), ce qui correspond à l'observation.
3. Taille des paquets à des débits audio haute résolution (par exemple, 352,8 kHz/32 bits)
* Débit de données : environ 2 822 400 octets/seconde.
* Latence de paquetisation :
* Pour remplir une grande trame jumbo de 8 965 octets : 8 965 octets / 2 822 400 octets/seconde ≈ 3,2 ms.
- Analyse : à ce débit élevé, une grande trame jumbo peut être remplie dans l'intervalle de latence faible cible. Le système peut donc maintenir son calendrier de livraison rapide et rythmé tout en tirant parti de l'efficacité du réseau offerte par les trames jumbo.
Le rôle essentiel du MTU et des trames jumbo
Ce protocole est conçu pour un réseau local (LAN) contrôlé. La prise en charge des trames jumbo de bout en bout est une condition préalable fonctionnelle stricte pour la lecture haute résolution.
* Fragmentation IP : le protocole UDP ne dispose pas d'un mécanisme natif permettant de découvrir le MTU du chemin. Si un datagramme UDP volumineux de 9 000 octets est envoyé sur un chemin réseau qui comprend un périphérique avec un MTU standard de 1 500 octets, ce périphérique fragmentera le datagramme en plusieurs paquets IP plus petits.
* Perte de données : le protocole UDP étant peu fiable, la perte d'un seul fragment IP en transit entraînera la suppression de l'intégralité du datagramme d'origine par le système d'exploitation du récepteur. Pour un paquet volumineux, cela signifie qu'une quantité importante de données audio est perdue, ce qui entraîne une perte audible.
Conclusion
La taille dynamique des paquets observée est une fonctionnalité, et non un défaut. Le système adapte intelligemment la taille de ses paquets en fonction du débit de données du flux audio afin d'atteindre deux objectifs distincts :
1. Toujours privilégier une faible gigue : il maintient un calendrier de livraison des paquets constant et rapide, quel que soit le format audio.
2. Optimiser l'efficacité lorsque cela est possible : il utilise des trames jumbo volumineuses et efficaces uniquement lorsque le débit de données est suffisamment élevé pour que cela n'introduise pas de latence et ne compromette pas l'objectif principal de faible gigue.
L'accent mis sur une configuration MTU appropriée vise à garantir l'intégrité du flux haute résolution en empêchant les effets catastrophiques de la fragmentation IP.
J'espère que ces informations nous aideront à comprendre certains des avantages que nous constatons lors de l'utilisation de Diretta.
J'ai demandé l'aide de Gemini de Google pour comprendre ce choix.
Ce comportement n'est pas une sous-optimisation, mais un choix de conception délibéré qui privilégie la faible latence et l'intégrité du signal plutôt que la simple efficacité de la bande passante. Le principe fondamental est la gestion de la gigue.
1. L'objectif principal : minimiser la gigue
Pour un convertisseur numérique-analogique (DAC), la qualité audio dépend fortement d'un flux de données stable et prévisible. Les variations dans les temps d'arrivée des paquets, appelées gigue, peuvent forcer les circuits tampons et d'horloge du DAC à travailler plus fort, ce qui peut dégrader le signal analogique final.
L'objectif principal du protocole est d'établir une transmission de paquets semblable à celle d'un métronome, avec un intervalle constant et à faible latence (par exemple, toutes les 3 à 5 millisecondes).
2. Taille des paquets à des débits audio standard (par exemple, 44,1 kHz/16 bits)
* Débit de données : environ 176 400 octets/seconde.
* Latence de paquetisation : temps nécessaire pour accumuler suffisamment de données audio pour remplir un paquet.
* Pour remplir une grande trame jumbo de 9 016 octets : `9 016 octets / 176 400 octets/seconde ≈ 51 ms`.
- Analyse : attendre 51 ms pour envoyer un paquet crée un flux de données « saccadé » et peu fréquent, ce qui est contraire à une conception à faible gigue. Pour maintenir un calendrier de livraison rapide et cohérent (par exemple, toutes les 5 ms), l'application envoie toutes les données qu'elle a accumulées pendant ce court laps de temps. Cela se traduit naturellement par une taille de paquet plus petite (`176 400 octets/seconde * 0,005 seconde = 882 octets`), ce qui correspond à l'observation.
3. Taille des paquets à des débits audio haute résolution (par exemple, 352,8 kHz/32 bits)
* Débit de données : environ 2 822 400 octets/seconde.
* Latence de paquetisation :
* Pour remplir une grande trame jumbo de 8 965 octets : 8 965 octets / 2 822 400 octets/seconde ≈ 3,2 ms.
- Analyse : à ce débit élevé, une grande trame jumbo peut être remplie dans l'intervalle de latence faible cible. Le système peut donc maintenir son calendrier de livraison rapide et rythmé tout en tirant parti de l'efficacité du réseau offerte par les trames jumbo.
Le rôle essentiel du MTU et des trames jumbo
Ce protocole est conçu pour un réseau local (LAN) contrôlé. La prise en charge des trames jumbo de bout en bout est une condition préalable fonctionnelle stricte pour la lecture haute résolution.
* Fragmentation IP : le protocole UDP ne dispose pas d'un mécanisme natif permettant de découvrir le MTU du chemin. Si un datagramme UDP volumineux de 9 000 octets est envoyé sur un chemin réseau qui comprend un périphérique avec un MTU standard de 1 500 octets, ce périphérique fragmentera le datagramme en plusieurs paquets IP plus petits.
* Perte de données : le protocole UDP étant peu fiable, la perte d'un seul fragment IP en transit entraînera la suppression de l'intégralité du datagramme d'origine par le système d'exploitation du récepteur. Pour un paquet volumineux, cela signifie qu'une quantité importante de données audio est perdue, ce qui entraîne une perte audible.
Conclusion
La taille dynamique des paquets observée est une fonctionnalité, et non un défaut. Le système adapte intelligemment la taille de ses paquets en fonction du débit de données du flux audio afin d'atteindre deux objectifs distincts :
1. Toujours privilégier une faible gigue : il maintient un calendrier de livraison des paquets constant et rapide, quel que soit le format audio.
2. Optimiser l'efficacité lorsque cela est possible : il utilise des trames jumbo volumineuses et efficaces uniquement lorsque le débit de données est suffisamment élevé pour que cela n'introduise pas de latence et ne compromette pas l'objectif principal de faible gigue.
L'accent mis sur une configuration MTU appropriée vise à garantir l'intégrité du flux haute résolution en empêchant les effets catastrophiques de la fragmentation IP.
J'espère que ces informations nous aideront à comprendre certains des avantages que nous constatons lors de l'utilisation de Diretta.