Appendix A. Lite and Full Implementations (Implementazioni Lite e Full)
ICE consente due tipi di implementazioni. Un'implementazione Full supporta i ruoli controlling e controlled in una sessione e può anche eseguire la raccolta degli indirizzi. Al contrario, un'implementazione Lite è un'implementazione minimalista che fa poco altro che rispondere ai controlli STUN.
Poiché ICE richiede che entrambi gli endpoint lo supportino per apportare vantaggi a uno dei due endpoint, la distribuzione incrementale di ICE in una rete è più complicata. Molte sessioni coinvolgono un endpoint che, di per sé, non è dietro un NAT e non si preoccuperebbe dell'attraversamento NAT. Un caso molto comune è avere un endpoint che richiede l'attraversamento NAT (come un telefono hardware o softphone VoIP) che effettua una chiamata a uno di questi dispositivi. Anche se il telefono supporta un'implementazione Full ICE, ICE non verrà utilizzato affatto se l'altro dispositivo non lo supporta. L'implementazione Lite consente un punto di ingresso a basso costo per questi dispositivi. Una volta che supportano l'implementazione Lite, le implementazioni Full possono connettersi a loro e ottenere tutti i vantaggi di ICE.
Di conseguenza, un'implementazione Lite è appropriata solo per i dispositivi che saranno sempre connessi a Internet pubblico e hanno un indirizzo IP pubblico al quale possono ricevere pacchetti da qualsiasi corrispondente. ICE non funzionerà quando un'implementazione Lite viene posizionata dietro un NAT.
ICE consente a un'implementazione Lite di avere un singolo candidato host IPv4 e diversi indirizzi IPv6. In tal caso, le coppie di candidati vengono selezionate dall'agente controlling utilizzando un algoritmo statico, come quello nella RFC 3484, che è raccomandato da questa specifica. Tuttavia, i meccanismi statici per la selezione dell'indirizzo sono sempre soggetti a errori, poiché non possono mai riflettere la topologia effettiva e non possono mai fornire garanzie effettive sulla connettività. Sono sempre euristiche. Di conseguenza, se un agente sta implementando ICE solo per scegliere tra i suoi indirizzi IPv4 e IPv6 e nessuno dei suoi indirizzi IP è dietro NAT, l'uso di Full ICE è ancora RECOMMENDED al fine di fornire la forma più robusta di selezione dell'indirizzo possibile.
È importante notare che l'implementazione Lite è stata aggiunta a questa specifica per fornire un trampolino di lancio verso l'implementazione Full. Anche per i dispositivi che sono sempre connessi a Internet pubblico con un solo indirizzo IPv4, un'implementazione Full è preferibile se realizzabile. Un'implementazione Full ridurrà i tempi di configurazione della chiamata, poiché è possibile utilizzare la modalità aggressive di ICE. Le implementazioni Full ottengono anche i vantaggi di sicurezza di ICE non correlati all'attraversamento NAT; in particolare, l'attacco voice hammer descritto nella Sezione 18 viene impedito solo per le implementazioni Full, non Lite. Infine, capita spesso che un dispositivo che si ritrova con un indirizzo pubblico oggi venga inserito domani in una rete in cui si troverà dietro un NAT. È difficile sapere definitivamente, per tutta la durata di un dispositivo o prodotto, che verrà sempre utilizzato su Internet pubblico. L'implementazione Full fornisce la garanzia che le comunicazioni funzioneranno sempre.