RSVP(7)RSVP(7)NAME
RSVP, rsvp - Resource ReSerVation Protocol general information
DESCRIPTION
Resource ReSerVation Protocol, also known as RSVP, is an Internet pro‐
tocol that enables Internet applications to request enhanced quality-
of-service (QoS). The Internet application uses the RSVP Application
Programming Interface (RAPI) routines to make the QoS request. The
RSVP control program, rsvpd, uses the RSVP protocol to propagate the
QoS request through routers along the path or paths for the data flow.
Each router accepts or rejects the request depending on its available
resources. If the request fails, rsvpd informs the application using
RAPI.
RSVP Model
RSVP performs the signaling necessary to make a resource reservation
for a simplex data flow sent to a unicast or multicast destination
address. Although RSVP distinguishes senders from receivers, an appli‐
cation can act as both.
RSVP assigns a QoS to a specific multipoint-to-multipoint data flow
called a session. A session is defined by a transport protocol, IP
destination address, and a destination port. In order to receive data
packets for a particular multicast session, the host must join the IP
multicast group by using the setsockopt call with the IP_ADD_MEMBERSHIP
option (IPv4) or IPV6_JOIN_GROUP option (IPv6).
A sender, or data source, is defined by an IP source address and a
source port. A session can have multiple senders and, if the destina‐
tion is a multicast address, multiple receivers. TCP/UDP port numbers
are used by RSVP for defining sessions and senders.
Under RSVP, data receivers make the QoS requests. A QoS request con‐
tains a flowspec and a filter spec. The flowspec includes an Rspec,
which defines the desired QoS and is used to control the packet sched‐
uling mechanism in the router or host, and a Tspec, which defines the
traffic that the receiver expects. The filter spec controls packet
classification to determine which sender's data packets receive the
corresponding QoS.
The reservation style reservation parameter controls how reservations
from different receivers are shared in the Internet. See RFC 2205 for
information on reservation styles.
RSVP API
The RSVP API (RAPI) consists of the following routines: An application
calls this routine to define an API session for sending or receiving,
or both, a single simplex data flow. An application calls this routine
to register as a data sender. An application calls this routine to
make a QoS reservation as a data receiver. An application calls this
routine to close an API session and delete all resource reservations.
An application calls this routine to obtain the file descriptor associ‐
ated with the UNIX socket connected to rsvpd. An application calls
this routine when a read event is signaled on the file descriptor that
was obtained by a successful call to rapi_getfd. An application calls
this routine to obtain the version of RAPI on the system. The API
calls this routine to invoke a procedure whose address was specified in
a call to rapi_session.
A single API session, defined by a single call to rapi_session, can
have only one sender at a time. More than one API session can be
established for the same RSVP session. For example, if an application
sends multiple UDP data flows, distinguished by source port, the appli‐
cation calls rapi_session and rapi_sender separately for each of the
flows.
The rapi_session routine allows the application to specify an upcall
(callback) routine that is invoked to signal RSVP state change and
error events. See rapi_event_rtn_t(3) for a description of the
upcalls.
Upcall routines are invoked indirectly and synchronously by the appli‐
cation in the following manner: Application issues a call to the
rapi_getfd() routine to learn the file descriptor of the UNIX socket
used by the API. The application detects read events on this file
descriptor, either passing it directly in a select call or passing it
to the notifier of another library. When a read event on the file
descriptor is signaled, the application calls rapi_dispatch. This call
makes the API execute the upcall routine, if defined.
The rapi_sender and rapi_reserve calls can be repeated with different
parameters at different times to modify the state at any time, or can
be issued with null parameters to retract the correcponding registra‐
tion.
RAPI Objects
Every RAPI object consists of two words: the total length of the object
(in bytes) and the object type. An empty object consists of a header
with type zero and a length of 8 bytes.
The RAPI defines the following RAPI objects and their respective for‐
mats: Flowspec RAPI_FLOWSTYPE_Simplified
A simple list of parameters needed for either Guaranteed or Con‐
trolled Load service, using the service type QOS_GUARANTEED or
QOS_CNTR_LOAD, respectively. The RAPI client library routines
map this format to and from an appropriate Integrated Services
data structure. RAPI_FLOWSTYPE_Intserv
A fully formatted Integrated Services flowspec data structure.
In an upcall, a flowspec is delivered in simplified format by
default. However, if the RAPI_USE_INTSERV flag is set in the
rapi_session() call, the IntServ format is used in upcalls.
Filter spec and sender template RAPI_FILTERFORM_BASE
A socket address structure that defines the IP address and port.
RAPI_FILTERFORM_GPI
An address structure that defines the IP address and 32-bit Ger‐
eralized Port Identifier. This is recommended for all IP Secu‐
rity (IPSEC) applications. sender Tspec RAPI_TSPECTYPE_Simpli‐
fied
A simple list of parameters with the service type QOS_TSPEC.
The RAPI client library routines map this format to and from an
appropriate Integrated Services data structure. RAPI_TSPEC‐
TYPE_Intserv A fully formatted Integrated Services Tspec data
structure.
In an upcall, a sender Tspec is delivered in simplified format
by default. However, if the RAPI_USE_INTSERV flag is set in the
rapi_session() call, the IntServ format is used in upcalls.
Adspec RAPI_ADSTYPE_Simplified
A simple list of Adspec parameters for all possible services.
The RAPI client library routines map this format to and from an
appropriate Integrated Services data structure.
RAPI_ADSTYPE_Intserv A fully formatted Integrated Services Tspec
data structure.
In an upcall, an Adspec is delivered in simplified format by
default. However, if the RAPI_USE_INTSERV flag is set in the
rapi_session() call, the IntServ format is used in upcalls.
See <rapi_lib.h> and <rsvp_intserv.h> for additional information on
RAPI object formats. See the Resource ReSerVation Protocol API (RAPI)
technical standard by The Open Group for information on Integrated Ser‐
vices data structures.
SEE ALSO
Commands: iftcntl(8), rsvpd(8), rsvpstat(8)
Routines: rapi_dispatch(3), rapi_event_rtn_t(3), rapi_getfd(3),
rapi_release(3), rapi_reserve(3), rapi_sender(3), rapi_session(3),
rapi_version(3)
RFC 2205, Resource ReSerVation Protocol (RSVP) Version 1 Functional
Specification
RFC 2206, RSVP Management Information Base using SMIv2
RFC 2207, RSVP Extensions for IPSEC Data Flows
RFC 2208, Resource ReSerVation Protocol (RSVP) Version 1 Applicability
Statement Some Guidelines on Deployment
RFC 2209, Resource ReSerVation Protocol (RSVP) Version 1 Message Pro‐
cessing Rules
RSVP(7)