# Token ring

In telecomunicazioni e informatica un token ring, ovvero rete ad anello con passaggio del testimone, è un tipo di rete ad anello in cui la determinazione di quale calcolatore abbia diritto a trasmettere avviene tramite un particolare messaggio, detto token ('gettone'). Si appoggia ed implementa le specifiche descritte nello standard IEEE 802.5.

## Descrizione

Ogni calcolatore è collegato ad altri due formando un cerchio. Questo, ovviamente, a livello concettuale, in quanto nella realtà ciò non avviene, ma la rappresentazione grafica aiuta a capire il funzionamento. All'interno di questa rete solo un calcolatore alla volta può trasmettere, quello in possesso del token. Esso avvia la trasmissione dei dati trasferendoli al calcolatore vicino, il quale lo prende in consegna se è il destinatario, oppure ripetendo a sua volta il segnale verso l'altro calcolatore ad esso collegato, così fino a raggiungere il destinatario. Il destinatario poi setterà un bit nell'header del pacchetto confermando l'avvenuta ricezione. Il calcolatore che ha inviato il frame "lascerà" il token una volta che avrà ricevuto il suo frame trasmesso (passerà da calcolatore a calcolatore).
Quando il calcolatore che è in possesso del token ha terminato la trasmissione dei dati passa il token a quello vicino. Quest'ultimo se deve trasmettere dati inizia la comunicazione, altrimenti cede immediatamente il token senza impegnare il canale. Ogni calcolatore, ogni volta che riceve il token, può trasmettere al massimo un solo frame, quindi deve consegnare il token al terminale vicino.
Ogni terminale prima o poi riceverà il token e avrà quindi la possibilità di trasmettere. I dispositivi di rete garantiscono la presenza di un solo token sull'anello e provvedono a rigenerarne uno qualora questo venga perso a causa di guasti nella rete o al calcolatore che l'ha preso in consegna. Si tratta dunque di una modalità di accesso multiplo di tipo TDMA scandita dal token. Un'implementazione molto famosa di questo tipo di rete è stata commercializzata da IBM negli anni '70.
Sebbene da un punto di vista teorico sia più efficiente di Ethernet, è stata superata da quest'ultima per l'alta commercializzazione. Infatti l'Ethernet, grazie alle implementazioni sempre più veloci (e soprattutto dal fatto che l'ethernet permette una trasmissione di tipo Full-Duplex) e all'introduzione degli switch (che evitano i conflitti), ha surclassato le implementazioni della Token Ring.

### Trama

La trama (frame) del Token Ring è formata da 24 bit. In dettaglio è formata da:
* Uno Start Delimiter;
* Un Access Control (formato a sua volta, oltre che dall'Access Control, anche dal Frame Control, dal Destination Address, dal Source Address, Data e dal Frame Check Sequence);
* Un Ending Delimiter (formato a sua volta, oltre che dall'Ending Delimiter, anche dal Frame Status).

### Funzionamento

La trasmissione funziona così:
* Tramite meccanismo di challenge (sfida) si designa una stazione monitor, la quale ha il compito di generare un token (oltre che a rigenerarlo ed a eliminare le trame orfane, ossia prive di mittente);
* Una stazione sceglie di trasmettere, allora riempie il token con i dati e il Destination Address;
* Il token gira tra le stazioni. La stazione che riceve il token, vede se vuole trasmettere o meno e se il campo Destination Address coincide con il suo MAC. Se il MAC è il suo allora legge il messaggio e lo rimanda al mittente attraversando tutte le stazioni intermedie; se il Destination Address non è suo e non vuole trasmettere passa il token alla stazione successiva, mentre se vuole trasmettere impone una priorità riempiendo i bit di priorità;
* Una volta che tutte le stazioni hanno prenotato la richiesta diventa priorità e solo chi impone una priorità maggiore della richiesta può trasmettere, altrimenti passa il token;
* Una volta che il token è ricevuto e confermato dal mittente il token viene ripristinato a token token (non più token dati), in modo che le stazioni possano riempirlo con i propri dati.

### Start Delimiter

Formato da 8 bit e serve per separare il resto del frame.

### Access Control

L'Access Control presenta dei bit del tipo PPPTMRRR.
* Il campo P rappresenta il Priority Bit, ossia il bit di priorità usato da una stazione che vuole trasmettere ma che vede che il token è di tipo dati e non di tipo token. Si può prenotare solo se la priorità che si vuole imporre è maggiore di quella già presente;
* Il campo T è usato per dire se il token è di tipo dati o tipo token;
* Il campo M è usato dalla stazione monitor per vedere se il frame è orfano (ossia senza mittente e/o destinatario);
* Il campo R rappresenta il Reservation Bit, ossia il bit necessario per trasmettere. La priorità diventa richiesta quando tutte le stazioni hanno prenotato. Se la priorità è maggiore della richiesta allora si trasmette, altrimenti si prenota o si passa il token (si passa il token nel caso non si vuole trasmettere e poiché si vede che il campo Destination Address punta ad un'altra stazione).

### Ending Delimiter

Segue lo schema JK1JK1IE.
* J, K: Significano errori del codice, trascritti nella Codifica Manchester differenziale;
* I: Intermediate Bit. 0 (è l'ultima trama) / 1 (ci sono ancora trame da trasmettere);
* E: Error Bit: 0 (nessun errore) / 1 (se ci sono errori).