RSVP, rsvp - Resource ReSerVation Protocol general information
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 application using RAPI.
RSVP Model [Toc] [Back]
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 destination 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 [Toc] [Back]
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 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 [Toc] [Back]
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 appropriate 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_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 Services data
structures.
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
RSVP(7)
[ Back ] |