# Type of Service

Il campo type of service (TOS) nell'header dell'IPv4 ha assunto finalità diverse nel corso degli anni, ed è stato definito in modi diversi da cinque RFC. La moderna definizione del campo TOS è di una parte di 6 bit Differentiated Services Field (DS field) ed una di 2 bit Explicit Congestion Notification (ECN). Differentiated Services è in qualche modo compatibile con le precedenti definizioni di TOS mentre ECN non lo è.

## Type of service

Il campo TOS può specificare la priorità di un datagramma e la richiesta per un indirizzamento con basso ritardo, con un elevato throughput o con un servizio di alta affidabilità. A seconda dei valori di TOS un pacchetto potrebbe essere posto in una coda d'uscita con alta priorità, o seguire un instradamento con la latenza, il throughput e l'affidabilita appropriata per la richiesta.
Nella pratica il campo TOS non è mai stato utilizzato. Tuttavia una grande quantità di esperimenti, ricerche e lavori di sviluppo hanno studiato come utilizzare questi otto bit. Questo ha portato alla attuale definizione del campo DS.

## Implementazione

Prima di essere stato deprecato il campo TOS era definito come segue:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| Precedenza | Precedenza | Precedenza | Type of Service | Type of Service | Type of Service | Type of Service | Type of Service |
L'ultimo bit del campo TOS (bit 7) era definito come "Deve essere zero" (Must Be Zero). Poiché gli ultimi tre bit cambiarono definizione molte volte, la documentazione e le implementazioni possono essere confuse e contraddittorie.

### Campo DS ed ECN

Attualmente la RFC 2474 ha riservato i primi sei bit di quello che era il campo TOS per il campo DS contenente i DiffServ Code Points (DSCP) e la RFC 3168 ha riservato gli ultimi due bit per la Explicit Congestion Notification.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| campo DS | campo DS | campo DS | campo DS | campo DS | campo DS | campo ECN | campo ECN |
   * DSCP <=> Tabella di Conversione Precedenza IP
| Nome DSCP | Valore Campo DS (Dec) | Precedenza IP (Descrizione) |
| CS0 | 0 | 0 : Best Effort |
| CS1,AF11-13 | 8,10,12,14 | 1 :Priority |
| CS2,AF21-23 | 16,18,20,22 | 2 :Immediato |
| CS3,AF31-33 | 24,26,28,30 | 3 :Flash - mainly used for voice signaling |
| CS4,AF41-43 | 32,34,36,38 | 4 :Flash Override |
| CS5,EF | 40,46 | 5 :Critico - usato principalmente per voce RTP |
| CS6 | 48 | 6 :Internetwork Control |
| CS7 | 56 | 7 :Network Control |
   * Descrizione dei nomi DSCP
    CS : Class Selector (Selettore di Classe RFC 2474)
    AFxy : Assured Forwarding (Inoltro assicurato x=classe, y=precedenza di soppressione) (RFC2597)
    EF : Expedited Forwarding (Inoltro accelerato RFC 3246)
   * "DSCP <=> TOS <=>Precedenza IP" tabella di conversione valori
    DSCP(Differentiated Services Code Point),TOS (Type of service)
| DSCP Dec | valore TOS | IP Prec |
| 0 | 0 | 0 |
| 8 | 32 | 1 |
| 10 | 40 | 1 |
| 14 | 56 | 1 |
| 18 | 72 | 2 |
| 22 | 88 | 2 |
| 24 | 96 | 3 |
| 28 | 112 | 3 |
| 34 | 136 | 4 |
| 36 | 144 | 4 |
| 38 | 152 | 4 |
| 40 | 160 | 5 |
| 46 | 184 | 5 |
| 48 | 192 | 6 |
| 56 | 224 | 7 |
Esempio basato sulla tabella precedente:
IPP = 1 in decimale, o 001 in bit. Valore che dà 001 00000 per tutto il campo ToS, o ToS = 32. Il campo DSCP è : 001000 00, o DSCP = 8 (gli ultimi 2 bit sono inutilizzati riguardo alla priorità, così si inizia a contare dal terzo bit).
    1) Tradizionalmente, i primi 3 bit per la precedenza IP(-> RFC 791) dovevano essere utilizzati in applicazioni di routing TOS (RFC 1583-> OSPF, IS-IS) ma nessuna applicazione diffusa lo supporta davvero.
    2) il campo TOS è stato quindi ridefinito come il Differentiated Services Code Point (DSCP-> RFC 2474) che consiste dei primi 6 bit e 2 bit usati per un meccanismo di TCP chiamato Explicit Congestion Notification (ECN) definito in RFC 3168.
    3) TOS significa "Type of service" e rappresenta il secondo byte nel datagramma IP
    4) Sintesi del concetto dei 3 valori QoS : Precedenza IP, ToS,DSCP
   * Precedenza IP - 0 ~ 7 (Il modo tradizionale e semplice di QoS) -> ToS : 0 ~ 224 (troppo complesso) -> DSCP : 0 ~ 56 (valore ottimizzato)
   * Precedenza IP, TOS(RFC 791, RFC 1583) -> DSCP(RFC 2474) -> ECN (RFC 3168)