# Resource Reservation Protocol

In telecomunicazioni RSVP (Resource Reservation Protocol) è un protocollo di livello trasporto (nello stack TCP/IP) usato da alcune classi di servizio IntServ e che differisce in modo sostanziale dai protocolli di segnalazione convenzionali usati nelle reti orientate alla connessione.

## Descrizione

Uno dei presupposti chiave di RSVP è quello di non togliere nulla alla robustezza attuale delle reti prive di connessione; tali reti si basano sul fatto di non avere informazioni di stato (o averne pochissime) memorizzate al proprio interno, pertanto è possibile che i router interrompano bruscamente il proprio funzionamento e si riavviino o che le linee di collegamento si guastino e poi riprendano la propria operatività, senza che la connettività tra i nodi terminali sia compromessa.
Il protocollo RSVP cerca di mantenere viva questa robustezza usando il concetto di stato soft nei router: lo stato soft, al contrario dello stato hard che si usa nelle reti orientate alla connessione, non ha bisogno di essere rimosso esplicitamente quando non è più necessario perché scade dopo un periodo di tempo opportuno se non viene periodicamente aggiornato.
Un'altra caratteristica di RSVP è quella di supportare i flussi multicast con la stessa efficacia di quella offerta ai flussi unicast. Questo protocollo fa uso di un approccio orientato ai destinatari. Piuttosto che lasciare il compito al mittente di tenere traccia di un numero di destinatari potenzialmente elevato, è più sensato che siano i destinatari a gestire le proprie necessità, come un'unica persona che parla e tante che ascoltano una lezione tenuta su una rete Mbone.

### Step principali

Il protocollo RSVP si basa su due step. Un primo detto di downstream in cui il mittente indirizza un pacchetto PATH verso il primo router del percorso fino all'host destinatario. Nel suddetto pacchetto sono indicati il Phop, Sender_Tspec e Adspec. Il Phop è l'indirizzo del router al passo precedente, mentre Sender_Tspec e Adspec includono informazioni sulle caratteristiche richieste alla linea che si intende prenotare. Quando un router riceve il PATH, aggiorna le sue informazioni, aggiorna il timer della prenotazione ed inoltra il PATH al router successivo, dopo aver modificato il campo Phop.
Nella seconda fase, quella di upstream, viene spedito a ritroso un pacchetto RESV contenente il FlowSpec. Ogni router valuterà tramite l'Admission Control se tale traffico è accettabile dalla rete, e in caso aggiunge al Packet Classifier le informazioni su tale traffico ricavate dal FilterSpec, e al Packet Scheduler le informazioni tratte dal FlowSpec per poter fare un corretto scheduling. Inoltre aggiorna il timer associato allo stato RESV e inoltra il pacchetto al router indicato nel Phop, fino al mittente originale. In caso il traffico non sia accettabile dalla rete, viene generato un messaggio di errore.
Applicare RSVP con IntServ porta ad avere una scarsa scalabilità, in quanto è necessario mantenere le informazioni di stato per ciascun microflusso, e il numero di questi microflussi può risultare molto elevato (basti pensare che solitamente un microflusso è individuato da 5-tuple: indirizzo IP sorgente, indirizzo IP destinazione, porta sorgente, porta destinazione e protocol ID). È tuttavia errato pensare che sia RSVP a essere poco scalabile. Infatti può essere utilizzato con successo nel campo dell'MPLS, laddove l'approccio non è a microflusso ma a flussi aggregati.