Aller au contenu principal

10. Exemples d'implémentation

Le présent document n'impose que les comportements d'émetteur et de récepteur nécessaires à l'interopérabilité. En outre, certains algorithmes, tels que le contrôle de débit ou la gestion de mémoire tampon ciblant des environnements spécifiques, peuvent améliorer l'efficacité de la retransmission.

La présente section donne un aperçu des différentes options d'implémentation autorisées dans cette spécification.

Le premier exemple décrit une implémentation récepteur minimale. Avec cette implémentation, il est possible de retransmettre les paquets RTP perdus, de détecter efficacement la perte des retransmissions et d'effectuer des retransmissions multiples si nécessaire. La majeure partie du traitement nécessaire est effectuée au serveur.

Le second exemple montre comment les retransmissions peuvent être utilisées dans des groupes multicast (de petite taille) conjointement avec l'encodage en couches. Il illustre que les retransmissions et l'encodage en couches peuvent être des techniques complémentaires.

10.1. Exemple d'implémentation récepteur minimale

La présente section donne un exemple d'implémentation prenant en charge les retransmissions multiples. L'émetteur transmet les données d'origine dans des paquets RTP en utilisant le format de charge utile RTP vidéo MPEG-4. On suppose que les messages de retour NACK sont utilisés, conformément à [1]. Un exemple de description SDP avec multiplexage par SSRC est donné ci-dessous :

v=0
o=mascha 2980675221 2980675778 IN IP4 host.example.net
c=IN IP4 192.0.2.0
m=video 49170 RTP/AVPF 96 97
a=rtpmap:96 MP4V-ES/90000
a=rtcp-fb:96 nack
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96;rtx-time=3000

Le paramètre spécifique au format « rtx-time » indique que le serveur mettra les paquets envoyés en mémoire tampon de retransmission pendant 3,0 secondes, après quoi les paquets sont retirés de la mémoire tampon de retransmission et ne seront plus jamais envoyés.

Dans cet exemple d'implémentation, le traitement RTP requis côté récepteur pour gérer la retransmission est réduit au minimum. Le récepteur détecte la perte de paquets à partir des discontinuités observées dans les numéros de séquence reçus. Il signale les paquets perdus à l'émetteur via des NACK tels que définis dans le profil AVPF [1]. Le récepteur devrait tenir compte de la longueur de mémoire tampon de retransmission signalée par l'émetteur pour dimensionner sa propre mémoire tampon de réception. Il devrait aussi déduire de la longueur de mémoire tampon le nombre maximal de fois où la retransmission d'un paquet peut être demandée.

L'émetteur devrait retransmettre les paquets de façon sélective ; c'est-à-dire qu'il devrait choisir de retransmettre ou non un paquet demandé selon l'importance du paquet, la qualité de service (QoS) observée et l'état de congestion de la connexion réseau vers le récepteur. De toute évidence, le traitement côté émetteur augmente avec le nombre de récepteurs car des informations d'état et une charge de traitement doivent être allouées à chaque récepteur.

10.2. Retransmission de média encodé en couches en multicast

La présente section montre comment combiner retransmissions et encodage en couches dans des sessions multicast. Noter que le cadre de retransmission n'est proposé que pour les petites applications multicast. Se reporter à la RFC 2887 [10] pour une discussion des problèmes d'implosion de NACK, de congestion grave causée par le trafic de retour, dans les applications multicast fiables à grand groupe.

Les paquets d'importance différente sont envoyés dans des sessions RTP différentes. Les flux de retransmission correspondant aux différentes couches peuvent eux-mêmes être vus comme différentes couches de retransmission. L'importance relative des différents flux de retransmission devrait refléter l'importance relative des différents flux d'origine.

En multicast, le multiplexage par SSRC des flux d'origine et de retransmission n'est pas autorisé conformément à la section 5.3 du présent document. Pour cette raison, le ou les flux de retransmission MUST être envoyés dans une ou des sessions RTP distinctes en utilisant le multiplexage par session.

Un exemple de description SDP de retransmissions multicast pour un média encodé en couches est donné ci-dessous :

m=video 8000 RTP/AVPF 98
c=IN IP4 224.2.1.0/127/3
a=rtpmap:98 MP4V-ES/90000
a=rtcp-fb:98 nack
m=video 8000 RTP/AVPF 99
c=IN IP4 224.2.1.3/127/3
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98;rtx-time=3000

Le serveur et le récepteur peuvent implémenter les méthodes de retransmission illustrées dans les exemples précédents. En outre, ils peuvent choisir de demander et de retransmettre un paquet perdu selon la couche à laquelle il appartient.