Appendix A. Lite and Full Implementations (Implémentations Lite et Full)
ICE permet deux types d'implémentations. Une implémentation Full prend en charge les rôles controlling et controlled dans une session, et peut également effectuer la collecte d'adresses. En revanche, une implémentation Lite est une implémentation minimaliste qui ne fait pas grand-chose d'autre que de répondre aux vérifications STUN.
Parce que ICE exige que les deux points d'extrémité le prennent en charge afin d'apporter des avantages à l'un ou l'autre des points d'extrémité, le déploiement progressif d'ICE dans un réseau est plus compliqué. De nombreuses sessions impliquent un point d'extrémité qui n'est pas, en soi, derrière un NAT et qui ne se soucierait pas de la traversée NAT. Un cas très courant est d'avoir un point d'extrémité qui nécessite une traversée NAT (comme un téléphone matériel ou logiciel VoIP) passant un appel à l'un de ces appareils. Même si le téléphone prend en charge une implémentation Full ICE, ICE ne sera pas du tout utilisé si l'autre appareil ne le prend pas en charge. L'implémentation Lite permet un point d'entrée à faible coût pour ces appareils. Une fois qu'ils prennent en charge l'implémentation Lite, les implémentations Full peuvent se connecter à eux et bénéficier de tous les avantages d'ICE.
Par conséquent, une implémentation Lite n'est appropriée que pour les appareils qui seront toujours connectés à l'Internet public et qui ont une adresse IP publique à laquelle ils peuvent recevoir des paquets de n'importe quel correspondant. ICE ne fonctionnera pas lorsqu'une implémentation Lite est placée derrière un NAT.
ICE permet à une implémentation Lite d'avoir un seul candidat host IPv4 et plusieurs adresses IPv6. Dans ce cas, les paires de candidats sont sélectionnées par l'agent controlling à l'aide d'un algorithme statique, tel que celui de la RFC 3484, qui est recommandé par cette spécification. Cependant, les mécanismes statiques de sélection d'adresse sont toujours sujets à l'erreur, car ils ne peuvent jamais refléter la topologie réelle et ne peuvent jamais fournir de garanties réelles sur la connectivité. Ce sont toujours des heuristiques. Par conséquent, si un agent implémente ICE juste pour choisir entre ses adresses IPv4 et IPv6, et qu'aucune de ses adresses IP n'est derrière un NAT, l'utilisation de Full ICE est toujours RECOMMENDED afin de fournir la forme la plus robuste de sélection d'adresse possible.
Il est important de noter que l'implémentation Lite a été ajoutée à cette spécification pour fournir un tremplin vers l'implémentation Full. Même pour les appareils qui sont toujours connectés à l'Internet public avec une seule adresse IPv4, une implémentation Full est préférable si elle est réalisable. Une implémentation Full réduira les temps d'établissement d'appel, car le mode aggressive d'ICE peut être utilisé. Les implémentations Full obtiennent également les avantages de sécurité d'ICE non liés à la traversée NAT ; en particulier, l'attaque voice hammer décrite dans la section 18 est empêchée uniquement pour les implémentations Full, pas Lite. Enfin, il est souvent le cas qu'un appareil qui se trouve avec une adresse publique aujourd'hui sera placé demain dans un réseau où il sera derrière un NAT. Il est difficile de savoir définitivement, sur la durée de vie d'un appareil ou d'un produit, qu'il sera toujours utilisé sur l'Internet public. L'implémentation Full fournit l'assurance que les communications fonctionneront toujours.