Passa al contenuto principale

8. Permessi

Per ogni allocazione, il server mantiene un elenco di zero o più permessi. Ogni permesso consiste di un indirizzo IP e un tempo alla scadenza associato. Quando un permesso esiste, il server consente a tutti i peer che utilizzano l'indirizzo IP nel permesso di inviare dati al client. Il tempo alla scadenza è il numero di secondi fino alla scadenza del permesso. Nel contesto di un'allocazione, un permesso è identificato in modo univoco dal suo indirizzo IP associato.

Inviando una richiesta CreatePermission o una richiesta ChannelBind, il client può far sì che il server installi o aggiorni un permesso per un determinato indirizzo IP. Questo causa uno dei due seguenti eventi:

  • Se non esiste alcun permesso per quell'indirizzo IP, allora viene creato un permesso con l'indirizzo IP dato e un tempo alla scadenza uguale alla durata del permesso (Permission Lifetime).

  • Se esiste già un permesso per quell'indirizzo IP, allora il tempo alla scadenza per quel permesso viene reimpostato alla durata del permesso.

La durata del permesso deve essere di 300 secondi (= 5 minuti).

Il tempo alla scadenza per ogni permesso viene decrementato di uno al secondo fino a raggiungere zero, momento in cui il permesso scade e viene eliminato.

Le richieste CreatePermission e ChannelBind possono essere liberamente mescolate su un permesso. Un dato permesso può essere inizialmente installato e/o aggiornato con una richiesta CreatePermission, e poi successivamente aggiornato con una richiesta ChannelBind, o viceversa.

Quando un datagramma UDP arriva all'indirizzo di trasporto inoltrato per l'allocazione, il server estrae l'indirizzo IP sorgente dall'header IP. Il server confronta quindi questo indirizzo con l'indirizzo IP associato a ciascun permesso nell'elenco dei permessi per l'allocazione. Se non viene trovata alcuna corrispondenza, l'inoltro non è consentito e il server scarta silenziosamente il datagramma UDP. Se viene trovata una corrispondenza esatta, allora il controllo del permesso è considerato riuscito e il server continua a elaborare il datagramma UDP come specificato altrove (sezione 10.3). Si noti che viene confrontato solo l'indirizzo e il numero di porta non viene considerato.

I permessi per un'allocazione sono totalmente indipendenti dai permessi per un'allocazione diversa. Se un'allocazione scade, tutti i suoi permessi scadono con essa.

NOTA: Sebbene i permessi TURN scadano dopo 5 minuti, molti dei NAT implementati al momento della pubblicazione di questo documento fanno scadere i loro binding UDP considerevolmente più velocemente. Pertanto, un'applicazione che utilizza TURN probabilmente vorrà inviare un qualche tipo di traffico keep-alive a una velocità molto più elevata. Le applicazioni che utilizzano ICE dovrebbero seguire le linee guida keep-alive di ICE [RFC5245], e le applicazioni che non utilizzano ICE sono raccomandate di fare qualcosa di simile.