# Resource Reservation Protocol

Het Resource Reservation Protocol (RSVP) is een netwerkprotocol werkzaam op de transportlaag dat ontworpen is om internettoepassingen de mogelijkheid te geven om speciale Quality of service(QoS) te verkrijgen voor hun dataverkeer. RSVP werkt op een Ipv4 of Ipv6 internet layer en zorgt enkel voor het reserveren van de resources. Een ander protocol wordt gebruikt voor het zenden van de data.
RSVP zorgt ervoor dat meerdere zenders naar meerdere groepen van ontvangers kan sturen, individuele ontvangers kunnen vrij wisselen van kanaal en het optimaliseert de bandbreedte terwijl het tegelijkertijd ook de congestie elimineert.

## RSVP data flows

In RSVP, een dataflow is een opeenvolging van berichten dat dezelfde bron, bestemming en quality of service hebben. De QoS benodigdheden worden gevraagd via het netwerk via een flow specificatie. De flow specificatie is een datastructuur gebruikt door een internetwork host om speciale services te vragen van het internetwork.
RSVP ondersteunt drie verkeerstypen: best-effort, rate-sensitive en de delay-sensitive. Welke ondersteuning gebruikt wordt voor deze drie typen hangt af van de QoS.
* Best-effort traffic is een traditionele IP traffic, applicaties bevatten een file transfer zoals bijvoorbeeld mail transmissies.
* Delay-sensitive traffic verkiest stiptheid van levering en varieert de rate naar die stiptheid.
* Rate-sensitive traffic is niet altijd tijdig omdat het de rate wil garanderen, rate-sensitive traffic is niet gemaakt om over circuit-switched netwerk te gaan.

## Spanning trees

Het protocol dat gebruikt wordt voor multicast routing is spanning trees, elke groep krijgt een groepsadres toegewezen. Om naar een groep te sturen moet de zender het groepsadres mee in het packet steken. Het standaard routing algoritme stelt dan een spanning tree op waarin alle groepsleden zitten, het algoritme dat gebruikt wordt maakt geen deel uit van RSVP.
Figuur 1 is een voorbeeld van een spanning tree waarin zender 1 een packet stuurt naar 3 ontvangers. Elke ontvanger kan een reservatiebericht sturen naar de zender, bij elke hop zal de router bij de gereserveerde nodes de nodige bandbreedte reserveren. Als er niet genoeg bandbreedte is zal de router een bericht terugsturen om te zeggen dat het niet lukt.

## RSVP Session start up

Om een RSVP multicast sessie te initialiseren moet een ontvanger eerst toetreden tot de multicast groep gespecificeerd door een IP-bestemmingsadres door gebruik te maken van Internet Group Management Protocol. Wanneer een ontvanger toegetreden is tot de groep kan een zender de RSVP path berichten sturen naar het IP-bestemmingsadres. Als de ontvanger de berichten heeft gekregen, zal deze, door gebruik te maken van RSVP, de juiste reservaties request berichten sturen om de gewenste flow descriptoren te specificeren.
Wanneer de zender deze request heeft gekregen kan het beginnen met het sturen van de datapakketten.

## RSVP Reservatiestijl

De reservatiestijl verwijst naar een set van controle opties dat een aantal ondersteunde parameters specificeert. RSVP ondersteunt 2 grote reservatieklassen, namelijk de distinct reservations en de shared reservations. Distinct reservation installeren een flow voor elke relevante zender in elke sessie en een shared reservation wordt gebruikt door een set van zenders waarvan men weet dat ze elkaar niet storen.
De reservatiestijlen maken gebruik van 2 scopen die zo verschillende filters vormen.
* De wildcard-filter(WF) stijl specifieert een shared reservation met een wildcard scope.
Met de WF stijl reservatie wordt een enkele reservatie gemaakt waarin alle upstreams van de zenders gemixt worden.
* De Fixed-Filter (FF) stijl specifieert een distinct reservation met een explicit scope. Met een FF-stijl reservatie wordt een distinct reservation request gecreëerd voor data pakketten van een bepaalde zender.
* Shared-Explicit (SE) stijl specifieert een shared reservation stijl met een explicit reservation scope. De SE stijl creëerd een enkele reservatie waarin alle flows van alle upstream zender gemixt worden.

## Bron

* Andrew S. Tanenbaum (2011), Computer Networks, 5de uitgave. ISBN 0132126958