144 lines
9.3 KiB
HTML
144 lines
9.3 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE html
|
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html lang="en-us" xml:lang="en-us">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta name="security" content="public" />
|
|
<meta name="Robots" content="index,follow" />
|
|
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
|
|
<meta name="DC.Type" content="concept" />
|
|
<meta name="DC.Title" content="QoS API connection-oriented functional flow" />
|
|
<meta name="abstract" content="The server and client examples in this topic illustrate qtoq quality of service (QoS) socket APIs written for a connection-oriented functional flow." />
|
|
<meta name="description" content="The server and client examples in this topic illustrate qtoq quality of service (QoS) socket APIs written for a connection-oriented functional flow." />
|
|
<meta name="DC.Relation" scheme="URI" content="rzak8rsvp.htm" />
|
|
<meta name="DC.Relation" scheme="URI" content="../apis/qtoq_accept.htm" />
|
|
<meta name="DC.Relation" scheme="URI" content="../apis/qtoq_close.htm" />
|
|
<meta name="DC.Relation" scheme="URI" content="../apis/rapi_session.htm" />
|
|
<meta name="DC.Relation" scheme="URI" content="../apis/rapi_sender.htm" />
|
|
<meta name="DC.Relation" scheme="URI" content="../apis/rapi_getfd.htm" />
|
|
<meta name="DC.Relation" scheme="URI" content="../apis/qtoq_connect.htm" />
|
|
<meta name="copyright" content="(C) Copyright IBM Corporation 1998, 2006" />
|
|
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 1998, 2006" />
|
|
<meta name="DC.Format" content="XHTML" />
|
|
<meta name="DC.Identifier" content="rzak8qtoq" />
|
|
<meta name="DC.Language" content="en-us" />
|
|
<!-- All rights reserved. Licensed Materials Property of IBM -->
|
|
<!-- US Government Users Restricted Rights -->
|
|
<!-- Use, duplication or disclosure restricted by -->
|
|
<!-- GSA ADP Schedule Contract with IBM Corp. -->
|
|
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
|
|
<link rel="stylesheet" type="text/css" href="./ic.css" />
|
|
<title>QoS API connection-oriented functional flow</title>
|
|
</head>
|
|
<body id="rzak8qtoq"><a name="rzak8qtoq"><!-- --></a>
|
|
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
|
|
<h1 class="topictitle1">QoS API connection-oriented functional flow</h1>
|
|
<div><p>The server and client examples in this topic illustrate qtoq quality
|
|
of service (QoS) socket APIs written for a connection-oriented
|
|
functional flow.</p>
|
|
<p>The following figure illustrates the client/server relationship of the
|
|
qtoq socket functions enabled for QoS APIs for a connection-oriented protocol,
|
|
such as Transmission Control Protocol (TCP).</p>
|
|
<p>When the QoS enabled API functions are called for a connection-oriented
|
|
flow requesting that ReSerVation Protocol (RSVP) be initiated, additional
|
|
functions are initiated. These functions cause the QoS agents on the client
|
|
and server to set up the RSVP protocol for the data flow between the client
|
|
and the server.</p>
|
|
<br /><img src="rzak8508.gif" alt="client/server relationship" /><br /><p><strong>qtoq flow of events:</strong> The following sequence of socket calls provide
|
|
a description of the figure. It also describes the relationship between the
|
|
server and client application in a connection-oriented design. These are modifications
|
|
of the basic socket APIs.</p>
|
|
<div class="section" xml:lang="en-us" id="rzak8qtoq__serverside"><a name="rzak8qtoq__serverside"><!-- --></a><h4 class="sectiontitle">Server side</h4></div>
|
|
<div class="section" xml:lang="en-us" id="rzak8qtoq__nosignaling"><a name="rzak8qtoq__nosignaling"><!-- --></a><h4 class="sectiontitle">qtoq_accept() API for a
|
|
rule marked with no signaling</h4><ol><li>The application calls the socket() function to get a socket descriptor.</li>
|
|
<li>The application calls listen() to specify what connections it will wait
|
|
for.</li>
|
|
<li>The application calls qtoq_accept() to wait for a connection request from
|
|
the client.</li>
|
|
<li>The API calls the rapi_session() API and, if successful, a QoS session
|
|
ID is assigned.</li>
|
|
<li>The API calls the standard accept() function to wait for a client connection
|
|
request.</li>
|
|
<li>When the connection request is received, admission control is performed
|
|
on the requested rule. The rule is sent to the TCP/IP stack, and, if valid,
|
|
the rule returns to the calling application with the results and the session
|
|
ID.</li>
|
|
<li>The applications for the server and the client perform the required data
|
|
transfers.</li>
|
|
<li>The application calls the qtoq_close() function to close the socket and
|
|
to unload the rule.</li>
|
|
<li>The QoS server deletes the rule from the QoS manager, deletes the QoS
|
|
session, and performs whatever other actions are needed.</li>
|
|
</ol>
|
|
</div>
|
|
<div class="section" xml:lang="en-us" id="rzak8qtoq__qtoq_acceptwithnormalrsvpsignaling"><a name="rzak8qtoq__qtoq_acceptwithnormalrsvpsignaling"><!-- --></a><h4 class="sectiontitle">qtoq_accept()
|
|
API with normal RSVP signaling</h4><ol><li>The application calls the socket() function to get a socket descriptor.</li>
|
|
<li>The application calls listen() to specify what connections it will wait
|
|
for.</li>
|
|
<li>The application calls qtoq_accept() to wait for a connection request from
|
|
the client.</li>
|
|
<li>When a connection request comes in, the rapi_session() API is called to
|
|
create a session with the QoS server for this connection and to get the QoS
|
|
session ID, which is returned to the caller.</li>
|
|
<li>The rapi_sender() API is called to initiate a PATH message from the QoS
|
|
server and to inform the QoS server that it must expect an RESV message from
|
|
the client.</li>
|
|
<li>The rapi_getfd() API is called to get the descriptor that the applications
|
|
use to wait for QoS event messages.</li>
|
|
<li>The accept descriptor and the QoS descriptor are returned to the application.</li>
|
|
<li>The QoS server waits for the RESV message to be received. When the message
|
|
is received, the server loads the appropriate rule with the QoS manager and
|
|
sends a message to the application if the application requested notification
|
|
on the call to the qtoq_accept() API.</li>
|
|
<li>The QoS server continues to provide refreshes for the established session.</li>
|
|
<li>The application calls qtoq_close() when the connection is completed.</li>
|
|
<li>The QoS server deletes the rule from the QoS manager, deletes the QoS
|
|
session, and performs whatever other actions are needed.</li>
|
|
</ol>
|
|
</div>
|
|
<div class="section" xml:lang="en-us" id="rzak8qtoq__clientside"><a name="rzak8qtoq__clientside"><!-- --></a><h4 class="sectiontitle">Client side</h4></div>
|
|
<div class="section" xml:lang="en-us" id="rzak8qtoq__rsvpsignaling"><a name="rzak8qtoq__rsvpsignaling"><!-- --></a><h4 class="sectiontitle">qtoq_connect() API with
|
|
normal RSVP signaling</h4><ol><li>The application calls the socket() function to get a socket descriptor.</li>
|
|
<li>The application calls qtoq_connect() function to inform the server application
|
|
that it wants to make the connection.</li>
|
|
<li>The qtoq_connect() function calls the rapi_session() API to create a session
|
|
with the QoS server for this connection.</li>
|
|
<li>The QoS server is primed to wait for the PATH command from the requested
|
|
connection.</li>
|
|
<li>The rapi_getfd() API is called to get the QoS descriptor that the applications
|
|
use to wait for QoS messages.</li>
|
|
<li>The connect() function is called. The results of the connect() and the
|
|
QoS descriptor are returned to the application.</li>
|
|
<li>The QoS server waits for the PATH message to be received. When the message
|
|
is received, it responds by sending an RESV message to the QoS server on the
|
|
application's server machine.</li>
|
|
<li>If the application requested notification, the QoS server sends the notification
|
|
to the application by using the QoS descriptor.</li>
|
|
<li>The QoS server continues to provide refreshes for the established session.</li>
|
|
<li>The application calls qtoq_close() when the connection is complete.</li>
|
|
<li>The QoS server closes the QoS session and performs whatever other actions
|
|
are necessary.</li>
|
|
</ol>
|
|
</div>
|
|
<div class="section" xml:lang="en-us" id="rzak8qtoq__qtoq_connectforarulemarkednosignaling"><a name="rzak8qtoq__qtoq_connectforarulemarkednosignaling"><!-- --></a><h4 class="sectiontitle">qtoq_connect()
|
|
API for a rule marked with no signaling</h4><p>This request is not valid
|
|
for the client side because no response is required from the client in this
|
|
case.</p>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="rzak8rsvp.htm" title="You can read this topic to learn about protocols, APIs, and requirements for a router that is enabled for the ReSerVation Protocol (RSVP). The current quality of service (QoS) APIs include the RAPI API, the qtoq socket API, the sendmsg() API, and the monitor APIs.">QoS APIs</a></div>
|
|
</div>
|
|
<div class="relref"><strong>Related reference</strong><br />
|
|
<div><a href="../apis/qtoq_accept.htm">qtoq_accept() API</a></div>
|
|
<div><a href="../apis/qtoq_close.htm">qtoq_close() API</a></div>
|
|
<div><a href="../apis/rapi_session.htm">rapi_session() API</a></div>
|
|
<div><a href="../apis/rapi_sender.htm">rapi_sender() API</a></div>
|
|
<div><a href="../apis/rapi_getfd.htm">rapi_getfd() API</a></div>
|
|
<div><a href="../apis/qtoq_connect.htm">qtoq_connect() API</a></div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html> |