RSVP(7) Miscellaneous Information Manual RSVP(7)
NAME
RSVP, rsvp - Resource ReSerVation Protocol general information
DESCRIPTION
Resource ReSerVation Protocol, also known as RSVP, is an Internet protocol 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 applica-
tion 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 application 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 contains a flowspec and a filter spec. The flowspec includes an Rspec,
which defines the desired QoS and is used to control the packet scheduling 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 receiv-
ing, or both, a single simplex data flow. An application calls this routine to register as a data sender. An application calls this rou-
tine 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 associated 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
application 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 application 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 registration.
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 formats: Flowspec RAPI_FLOWSTYPE_Simplified
A simple list of parameters needed for either Guaranteed or Controlled 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 Gereralized Port Identifier. This is recommended for all IP Security
(IPSEC) applications. sender Tspec RAPI_TSPECTYPE_Simplified
A simple list of parameters with the service type QOS_TSPEC. The RAPI client library routines map this format to and from an appro-
priate Integrated Services data structure. RAPI_TSPECTYPE_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_ses-
sion() 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 Services data structures.
RELATED INFORMATION
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 Processing Rules delim off
RSVP(7)