Passa al contenuto principale

8. Concluding ICE Processing (Conclusione dell'elaborazione ICE)

Questa sezione descrive come un agente completa ICE.

8.1. Procedures for Full Implementations (Procedure per implementazioni complete)

La conclusione di ICE comporta la nomina di coppie da parte dell'agente di controllo e l'aggiornamento della macchina a stati.

8.1.1. Nominating Pairs (Nomina delle coppie)

L'agente di controllo nomina le coppie da selezionare da ICE utilizzando una delle due tecniche: nomina regolare o nomina aggressiva. Se il suo peer ha un'implementazione lite, un agente MUST utilizzare un algoritmo di nomina regolare. Se il suo peer utilizza opzioni ICE (presenti in un attributo ice-options dal peer) che l'agente non comprende, l'agente MUST utilizzare un algoritmo di nomina regolare. Se il suo peer è un'implementazione completa e non utilizza alcuna opzione ICE o utilizza opzioni ICE comprese dall'agente, l'agente MAY utilizzare l'algoritmo di nomina aggressiva o regolare. Tuttavia, l'algoritmo regolare è RECOMMENDED poiché fornisce una maggiore stabilità.

8.1.1.1. Regular Nomination (Nomina regolare)

Con la nomina regolare, l'agente lascia che un certo numero di controlli venga completato, ognuno dei quali omette l'attributo USE-CANDIDATE. Una volta che uno o più controlli vengono completati con successo per un componente di un flusso multimediale, le coppie valide vengono generate e aggiunte all'elenco valido. L'agente lascia che i controlli continuino fino a quando non viene soddisfatto un criterio di arresto, e poi sceglie tra le coppie valide in base a un criterio di valutazione. I criteri per arrestare i controlli e per valutare le coppie valide sono interamente una questione di ottimizzazione locale.

Quando l'agente di controllo seleziona la coppia valida, ripete il controllo che ha prodotto questa coppia valida (accodando la coppia che ha generato il controllo nella coda dei controlli attivati), questa volta con l'attributo USE-CANDIDATE. Questo controllo dovrebbe avere successo (poiché il precedente lo ha avuto), facendo sì che il flag nominato di quella e solo di quella coppia venga impostato. Di conseguenza, ci sarà solo una singola coppia nominata nell'elenco valido per ciascun componente, e quando lo stato dell'elenco di controllo passa a completato, quella coppia esatta viene selezionata da ICE per l'invio e la ricezione di media per quel componente.

La nomina regolare offre la massima flessibilità, poiché l'agente ha il controllo sui criteri di arresto e selezione per i controlli. L'unico requisito è che l'agente MUST alla fine scegliere una e una sola coppia di candidati e generare un controllo per quella coppia con l'attributo USE-CANDIDATE presente. La nomina regolare migliora anche la resilienza di ICE alle variazioni nell'implementazione (vedere la Sezione 14). La nomina regolare è anche più stabile, consentendo a entrambi gli agenti di convergere su una singola coppia per i media senza selezioni transitorie, che possono verificarsi con l'algoritmo aggressivo. Lo svantaggio della nomina regolare è che è garantito che aumenti le latenze perché richiede l'esecuzione di un controllo aggiuntivo.

8.1.1.2. Aggressive Nomination (Nomina aggressiva)

Con la nomina aggressiva, l'agente di controllo include l'attributo USE-CANDIDATE in ogni controllo che invia. Una volta che il primo controllo per un componente ha successo, verrà aggiunto all'elenco valido e avrà il suo flag nominato impostato. Quando tutti i componenti hanno una coppia nominata nell'elenco valido, i media possono iniziare a fluire utilizzando la coppia nominata con la priorità più alta. Tuttavia, poiché l'agente ha incluso l'attributo USE-CANDIDATE in tutti i suoi controlli, un altro controllo potrebbe ancora essere completato, facendo sì che un'altra coppia valida abbia il suo flag nominato impostato. ICE seleziona sempre la coppia di candidati nominata con la priorità più alta dall'elenco valido come quella utilizzata per i media. Di conseguenza, la coppia selezionata potrebbe effettivamente cambiare brevemente man mano che i controlli ICE vengono completati, risultando in una serie di selezioni transitorie fino a quando non si stabilizza.

8.1.2. Updating States (Aggiornamento degli stati)

Sia per gli agenti di controllo che per quelli controllati, lo stato dell'elaborazione ICE dipende dalla presenza di coppie di candidati nominate nell'elenco valido e dallo stato dell'elenco di controllo. Si noti che, in qualsiasi momento, può essere applicato più di uno dei seguenti casi:

  • Se non ci sono coppie nominate nell'elenco valido per un flusso multimediale e lo stato dell'elenco di controllo è Running, l'elaborazione ICE continua.

  • Se c'è almeno una coppia nominata nell'elenco valido per un flusso multimediale e lo stato dell'elenco di controllo è Running:

    • L'agente MUST rimuovere tutte le coppie Waiting e Frozen nell'elenco di controllo e nella coda dei controlli attivati per lo stesso componente delle coppie nominate per quel flusso multimediale.

    • Se una coppia In-Progress nell'elenco di controllo è per lo stesso componente di una coppia nominata, l'agente SHOULD cessare le ritrasmissioni per il suo controllo se la priorità della coppia è inferiore alla coppia nominata con la priorità più bassa per quel componente.

  • Una volta che c'è almeno una coppia nominata nell'elenco valido per ogni componente di almeno un flusso multimediale e lo stato dell'elenco di controllo è Running:

    • L'agente MUST cambiare lo stato di elaborazione per il suo elenco di controllo per quel flusso multimediale in Completed.

    • L'agente MUST continuare a rispondere a qualsiasi controllo che potrebbe ancora ricevere per quel flusso multimediale, e MUST eseguire controlli attivati se richiesto dall'elaborazione della Sezione 7.2.

    • L'agente MUST continuare a ritrasmettere qualsiasi controllo In-Progress per quell'elenco di controllo.

    • L'agente MAY iniziare a trasmettere media per questo flusso multimediale come descritto nella Sezione 11.1.

  • Una volta che lo stato di ciascun elenco di controllo è Completed:

    • L'agente imposta lo stato dell'elaborazione ICE complessiva su Completed.

    • Se un agente è di controllo, esamina la coppia di candidati nominata con la priorità più alta per ciascun componente di ciascun flusso multimediale. Se una qualsiasi di quelle coppie di candidati differisce dalle coppie di candidati predefinite nello scambio di offerta/risposta più recente, l'agente di controllo MUST generare un'offerta aggiornata come descritto nella Sezione 9. Se l'agente di controllo utilizza un algoritmo di nomina aggressiva, ciò può comportare diverse offerte aggiornate man mano che le coppie selezionate per i media cambiano. Un agente MAY ritardare l'invio dell'offerta per un breve intervallo (un secondo è RECOMMENDED) al fine di consentire alle coppie selezionate di stabilizzarsi.

  • Se lo stato dell'elenco di controllo è Failed, ICE non è stato in grado di completare per questo flusso multimediale. Il comportamento corretto dipende dallo stato degli elenchi di controllo per altri flussi multimediali:

    • Se tutti gli elenchi di controllo sono Failed, l'elaborazione ICE complessiva è considerata nello stato Failed, e l'agente SHOULD considerare la sessione un fallimento, SHOULD NOT riavviare ICE, e l'agente di controllo SHOULD terminare l'intera sessione.

    • Se almeno uno degli elenchi di controllo per altri flussi multimediali è Completed, l'agente di controllo SHOULD rimuovere il flusso multimediale fallito dalla sessione nella sua offerta aggiornata.

    • Se nessuno degli elenchi di controllo per altri flussi multimediali è Completed, ma almeno uno è Running, l'agente SHOULD lasciare che ICE continui.

8.2. Procedures for Lite Implementations (Procedure per implementazioni Lite)

La conclusione di ICE per un'implementazione lite è relativamente semplice. Ci sono due casi da considerare:

L'implementazione è lite e il suo peer è full.

L'implementazione è lite e il suo peer è lite.

L'effetto della conclusione di ICE è che l'agente può liberare qualsiasi candidato host allocato che non è stato utilizzato da ICE, come descritto nella Sezione 8.3.

8.2.1. Peer Is Full (Il peer è Full)

In questo caso, l'agente riceverà controlli di connettività dal suo peer. Quando un agente ha ricevuto un controllo di connettività che include l'attributo USE-CANDIDATE per ciascun componente di un flusso multimediale, lo stato dell'elaborazione ICE per quel flusso multimediale passa da Running a Completed. Quando lo stato dell'elaborazione ICE per tutti i flussi multimediali è Completed, lo stato dell'elaborazione ICE complessiva è Completed.

L'implementazione lite non determinerà mai da sola che l'elaborazione ICE è fallita per un flusso multimediale; piuttosto, il peer full prenderà tale determinazione e quindi rimuoverà o riavvierà il flusso multimediale fallito in un'offerta successiva.

8.2.2. Peer Is Lite (Il peer è Lite)

Una volta completato lo scambio di offerta/risposta, entrambi gli agenti esaminano i loro candidati e quelli del loro peer. Per ciascun flusso multimediale, ciascun agente accoppia i propri candidati con i candidati del suo peer per quel flusso multimediale. Due candidati vengono accoppiati quando sono per lo stesso componente, utilizzano lo stesso protocollo di trasporto (UDP in questa specifica) e provengono dalla stessa famiglia di indirizzi IP (IPv4 o IPv6).

  • Se c'è una singola coppia per componente, quella coppia viene aggiunta all'elenco Valid. Se tutti i componenti per un flusso multimediale avevano una coppia, lo stato dell'elaborazione ICE per quel flusso multimediale è impostato su Completed. Se tutti i flussi multimediali sono Completed, lo stato dell'elaborazione ICE è impostato su Completed complessivamente. Questo sarà sempre il caso per le implementazioni che sono solo IPv4.

  • Se c'è più di una coppia per componente:

    • L'agente MUST selezionare una coppia in base alla politica locale. Poiché questo caso si verifica solo per IPv6, è RECOMMENDED che un agente segua le procedure di RFC 3484 [RFC3484] per selezionare una singola coppia.

    • L'agente aggiunge la coppia selezionata per ciascun componente all'elenco valido. Come descritto nella Sezione 11.1, ciò consentirà ai media di iniziare a fluire. Tuttavia, è possibile (e in effetti probabile) che entrambi gli agenti abbiano scelto coppie diverse.

    • Per riconciliare questo, l'agente di controllo MUST inviare un'offerta aggiornata come descritto nella Sezione 9.1.3, che includerà l'attributo remote-candidates.

    • L'agente MUST NOT aggiornare lo stato dell'elaborazione ICE quando viene inviata l'offerta. Se questa offerta successiva viene completata, l'agente di controllo MUST cambiare lo stato dell'elaborazione ICE in Completed per tutti i flussi multimediali e lo stato dell'elaborazione ICE complessiva in Completed. Gli stati per l'agente controllato sono impostati in base alla logica nella Sezione 9.2.3.

8.3. Freeing Candidates (Liberazione dei candidati)

8.3.1. Full Implementation Procedures (Procedure di implementazione completa)

Le procedure nella Sezione 8 richiedono che un agente continui ad ascoltare le richieste STUN e continui a generare controlli attivati per un flusso multimediale, anche una volta completata l'elaborazione per quel flusso. Le regole in questa sezione descrivono quando è sicuro per un agente cessare di inviare o ricevere controlli su un candidato che non è stato selezionato da ICE, e quindi liberare il candidato.

Quando ICE viene utilizzato con SIP e un'offerta viene biforcata a più destinatari, ICE procede in parallelo e in modo indipendente con ciascun rispondente, tutti utilizzando gli stessi candidati locali. Una volta che l'elaborazione ICE ha raggiunto lo stato Completed per tutti i peer per i flussi multimediali che utilizzano quei candidati, l'agente SHOULD attendere altri tre secondi, e poi MAY cessare di rispondere ai controlli o generare controlli attivati su quel candidato. MAY liberare il candidato in quel momento. La liberazione dei candidati server reflexive non è mai esplicita; avviene per mancanza di un keepalive. Il ritardo di tre secondi gestisce i casi in cui viene utilizzata la nomina aggressiva e le coppie selezionate possono cambiare rapidamente dopo il completamento di ICE.

8.3.2. Lite Implementation Procedures (Procedure di implementazione Lite)

Un'implementazione lite MAY liberare i candidati non selezionati da ICE non appena l'elaborazione ICE ha raggiunto lo stato Completed per tutti i peer per tutti i flussi multimediali che utilizzano quei candidati.