Attualmente la rete Internet fornisce unicamente il servizio best effort, cioè tutte le entità che entrano in gioco nell'inoltro dei pacchetti cercano di fare del loro meglio ma di fatto non vengono date garanzie di nessun tipo. Con IntServ, [10], l'intenzione è di estendere (senza stravolgere) l'attuale modello della rete aggiungendo nuove classi di servizio a quella già esistente.
Nella rete Internet attuale tutti i pacchetti vengono trattati allo stesso modo e sono normalmente serviti da nodi a disciplina FIFO. In una rete che supporta IntServ, invece, ogni flusso3.3 può ricevere una determinata qualità del servizio, che è stata negoziata all'inizio tra l'applicazione e la rete tramite il protocollo RSVP [11] (Resource reSerVation Protocol). Lo stesso RSVP viene anche utilizzato per settare la rete al fine di garantire che tutti i pacchetti di quel flusso beneficino della stessa qualità del servizio. Quindi prima di iniziare la trasmissione, l'applicazione, utilizzando RSVP, deve costruire i percorsi e prenotare le risorse.
Il meccanismo che si occupa di garantire la qualità del servizio necessaria
si chiama controllo del traffico, in figura
è mostrato il modello di riferimento della
sua implementazione nei router.
Sicuramente gli elementi principali di questo modello sono i seguenti:
si nota che è divisa
in due parti, nella parte superiore troviamo il codice di background,
queste routine si occupano di creare le strutture dati che controllano il meccanismo
di instradamento. Il routing agent implementa un particolare protocollo di routing
e crea il database di routing. Il reservation setup agent implementa il protocollo
utilizzato per riservare le risorse (tipicamente RSVP). Se l'admission control
da la conferma ad una nuova richiesta, i cambiamenti appropriati sono apportati
al database dello schedulatore e del classificatore al fine di garantire la
qualità del servizio richiesta. Infine, ogni router supporta un agente per il
network management, questo agente deve essere in grado di modificare il database
dello schedulatore e del classificatore, ad esempio, per settare le politiche
dell'admission control.
Nella parte inferiore troviamo il percorso di inoltro, che viene seguito da ogni pacchetto e deve essere molto ottimizzato affinché il router sia in grado di offrire buone prestazioni.
Nel modello iniziale di IntServ sono state pensate tre diverse classi di servizio corrispondenti a tre diversi tipi di applicazioni.
L'ultima classe corrisponde al classico servizio offerto da Internet ed in esse rientrano oltre alle applicazioni elastiche anche tutte le altre applicazioni non interattive (come ad esempio la posta elettronica), le altre due classi di servizio vengono invece illustrate di seguito.
Questa classe fornisce al flusso di dati generati dall'applicazione cliente un limite stretto sul ritardo di trasmissione end-to-end del generico pacchetto, inoltre viene garantita anche la banda che sarà fornita al flusso. Il servizio garantito quindi rappresenta sicuramente quello con le garanzie massime possibili, ed ha caratteristiche tali da permettere di emulare una comunicazione su circuito dedicato.
Le informazioni relative al traffico generato, le caratteristiche della rete, i parametri di prenotazione ecc. vengono scambiate tra i nodi tramite il protocollo RSVP.
Il servizio a carico controllato può essere considerato come una sorta di ``controlled best-effort'', nel senso che ha le stesse caratteristiche di un servizio best-effort (quindi nessuna garanzia) su di una rete poco carica, tuttavia si cerca di fare in modo che il servizio non cambi anche al crescere del carico della rete.
In altre parole l'utente che richiede un servizio a carico controllato ottiene un servizio best-effort che però risulta essere poco sensibile alle variazioni del carico della rete. É chiaro quindi che per riuscire a mantenere queste promesse è fondamentale il ruolo dell'admission control.
Il protocollo RSVP è usato dagli host per richiedere una specifica qualità del servizio alla rete, ma è anche usato dai router per spedire informazioni sulla qualità del servizio lungo il percorso seguito dal flusso al fine di stabilire e mantenere la classe di servizio richiesta.
Le risorse sono riservate per i flussi simplex, cioè in una sola direzione, quindi sono ben distinti i ruoli di trasmettitore e ricevitore anche se nulla vieta che una stessa entità possa essere allo stesso tempo trasmettitore e ricevitore, in realtà RSVP è indipendente da IntServ, quindi può essere utilizzato anche in altri sistemi che garantiscono la qualità del servizio, la sua integrazione con IntServ è illustrata in [12].
Il protocollo gira al di sopra di IP, tuttavia non trasporta in alcun modo dati, ed è quindi scorretto considerarlo un protocollo di trasporto. Esso fa parte (insieme ad ICMP, IGMP ed ai protocolli di routing) di quei protocolli che possiamo immaginare confinati ancora a livello tre anche se ne sfruttano i servizi.
É interessante notare che RSVP è esplicitamente pensato per funzionare in ambiente multicast, quindi il caso unicast è visto come una semplice specializzazione. Questo permette di fare in modo che ogni ricevitore possa richiedere una qualità del servizio diversa da quanto fatto dagli altri.
In figura
è mostrato il modo in cui il processo RSVP interagisce
negli host e nei router.
Nel processo di prenotazione il ruolo fondamentale è giocato dai messaggi Path
e Resv (figura
). I primi vanno
dal trasmettitore ad ricevitore, trasportano informazioni sul flusso e sono
usati per costruire il percorso che sarà seguito dal flusso. I messaggi Resv
seguono il percorso contrario e sono quelli che di fatto compiono la prenotazione.
Come si vede la prenotazione è di tipo receiver initiated, questo approccio
è molto vantaggioso nel caso multicast, e permette una flessibilità maggiore
rispetto al caso in cui la prenotazione viene effettuata dal trasmettitore.
Un messaggio Path contiene le seguenti informazioni:
Un messaggio Resv contiene le seguenti informazioni: