Aller au contenu principal

10. Keepalives (Keepalives)

Tous les points de terminaison MUST envoyer des keepalives pour chaque session média. Ces keepalives servent à maintenir les liaisons NAT en vie pour la session média. Ces keepalives MUST être envoyés, que le flux média soit actuellement inactive, sendonly, recvonly ou sendrecv, et indépendamment de la présence ou de la valeur de l'attribut de bande passante. Ces keepalives MUST être envoyés même si ICE n'est pas du tout utilisé pour la session. Le keepalive SHOULD être envoyé en utilisant un format pris en charge par son pair. Les points de terminaison ICE autorisent les keepalives basés sur STUN pour les flux UDP, et à ce titre, les keepalives STUN MUST être utilisés lorsqu'un agent est une implémentation ICE complète et communique avec un pair qui prend en charge ICE (Lite ou complet). Un agent peut déterminer que son pair prend en charge ICE par la présence d'attributs a=candidate pour chaque session média. Si le pair ne prend pas en charge ICE, le choix d'un format de paquet pour les keepalives est une question d'implémentation locale. Un format qui permet d'envoyer facilement des paquets en l'absence de contenu média réel est RECOMMENDED. Des exemples de formats qui atteignent facilement cet objectif sont RTP No-Op [NO-OP-RTP], et dans les cas où les deux côtés le prennent en charge, le bruit de confort RTP [RFC3389]. Si le pair ne prend en charge aucun format particulièrement bien adapté aux keepalives, un agent SHOULD envoyer des paquets RTP avec un numéro de version incorrect, ou une autre forme d'erreur qui entraînerait leur rejet par le pair.

S'il n'y a eu aucun paquet envoyé sur la paire de candidats qu'ICE utilise pour un composant média pendant Tr secondes (où les paquets incluent ceux définis pour le composant (RTP ou RTCP) et les keepalives précédents), un agent MUST générer un keepalive sur cette paire. Tr SHOULD être configurable et SHOULD avoir une valeur par défaut de 15 secondes. Tr MUST NOT être configuré à moins de 15 secondes. Alternativement, si un agent a un moyen dynamique de découvrir les durées de vie de liaison des NAT intermédiaires, il peut utiliser cette valeur pour déterminer Tr. Les administrateurs déployant ICE dans des environnements réseau plus contrôlés SHOULD régler Tr sur la durée la plus longue possible dans leur environnement.

Si STUN est utilisé pour les keepalives, une STUN Binding Indication est utilisée [RFC5389]. L'Indication MUST NOT utiliser de mécanisme d'authentification. Elle SHOULD contenir l'attribut FINGERPRINT pour aider au démultiplexage, mais SHOULD NOT contenir d'autres attributs. Elle est utilisée uniquement pour maintenir les liaisons NAT en vie. La Binding Indication est envoyée en utilisant les mêmes candidats locaux et distants que ceux utilisés pour le média. Bien que les Binding Indications soient utilisées pour les keepalives, un agent MUST être prêt à recevoir une vérification de connectivité également. Si une vérification de connectivité est reçue, une réponse est générée comme indiqué dans [RFC5389], mais il n'y a aucun impact sur le traitement ICE par ailleurs.

Un agent MUST commencer le traitement des keepalives une fois qu'ICE a sélectionné des candidats à utiliser avec le média, ou que le média commence à circuler, selon la première éventualité. Les keepalives se terminent une fois que la session se termine ou que le flux média est supprimé.