home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_q_t / draft-ietf-rsvp-policy-oops-00.txt < prev    next >
Text File  |  1997-03-20  |  61KB  |  1,741 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Internet Draft                                               Shai Herzog
  8. Expiration: Oct. 1997                               Dimitrios Pendarakis
  9. File: draft-ietf-rsvp-policy-oops-00.txt                      Raju Rajan
  10.                                                              Roch Guerin
  11.                                          IBM T.J. Watson Research Center
  12.                                                                Apr. 1997
  13.  
  14.  
  15.  
  16.             Open Outsourcing Policy Service (OOPS) for RSVP
  17.  
  18.  
  19.  
  20.                                 03/19/97
  21.  
  22. Status of Memo
  23.  
  24.    This document is an Internet-Draft.  Internet-Drafts are working
  25.    documents of the Internet Engineering Task Force (IETF), its areas,
  26.    and its working groups.  Note that other groups may also distribute
  27.    working documents as Internet-Drafts.
  28.  
  29.    Internet-Drafts are draft documents valid for a maximum of six months
  30.    and may be updated, replaced, or obsoleted by other documents at any
  31.    time.  It is inappropriate to use Internet-Drafts as reference
  32.    material or to cite them other than as "work in progress."
  33.  
  34.    To learn the current status of any Internet-Draft, please check the
  35.    "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
  36.    Directories on ds.internic.net (US East Coast), nic.nordu.net
  37.    (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
  38.    Rim).
  39.  
  40. Abstract
  41.  
  42.    This document describes a protocol for exchanging policy information
  43.    and decisions between an RSVP-capable router (client) and a policy
  44.    server. The OOPS protocol supports a wide range of router
  45.    configurations and RSVP implementations, and is compatible with the
  46.    RSVP Extensions for Policy Control [Ext].
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 1]
  59.  
  60.  
  61.  
  62.  
  63.  
  64. Internet Draft       OOPS: Policy Protocol for RSVP
  65.  
  66.  
  67. Table of Contents
  68.  
  69. 1     Overview                                                        4
  70.  
  71.       1.1   Representative OOPS Scenarios  .......................... 4
  72.  
  73. 2     Query-Response Protocol                                         6
  74.  
  75.       2.1   Division of Labor between Client and Server  ............ 6
  76.  
  77.             2.1.1 Error Reporting   ................................. 7
  78.  
  79.       2.2   State Management   ...................................... 8
  80.  
  81.             2.2.1 Client State Information Cached at Server  ........ 9
  82.  
  83.             2.2.2 Server State Information Cached at Client  ........ 9
  84.  
  85.             2.2.3 State Change Notification  ........................ 10
  86.  
  87. 3     Client-Server Communications                                    10
  88.  
  89.       3.1   Connection Establishment   .............................. 10
  90.  
  91.             3.1.1 Secure Communications  ............................ 11
  92.  
  93.       3.2   Reliable Communication  ................................. 11
  94.  
  95.             3.2.1 Sequence Numbers   ................................ 12
  96.  
  97.             3.2.2 Receiver initiated retransmit  .................... 12
  98.  
  99.             3.2.3 Keep-Alive Messages   ............................. 12
  100.  
  101.             3.2.4 Overhead   ........................................ 13
  102.  
  103.       3.3   Connection Termination   ................................ 13
  104.  
  105.             3.3.1 Explicit Termination   ............................ 13
  106.  
  107.             3.3.2 Implicit Termination   ............................ 13
  108.  
  109.             3.3.3 Post Termination  ................................. 14
  110.  
  111.             3.3.4 Switching to An Alternative Server   .............. 14
  112.  
  113. 4     OOPS Message Format                                             15
  114.  
  115.  
  116.  
  117.  
  118. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 2]
  119.  
  120.  
  121.  
  122.  
  123.  
  124. Internet Draft       OOPS: Policy Protocol for RSVP
  125.  
  126.  
  127.       4.1   OOPS Operations   ....................................... 16
  128.  
  129.             4.1.1 Null-Notification (a.k.a Keep-Alive)  ............. 17
  130.  
  131.             4.1.2 Connection-Initiation-Query   ..................... 17
  132.  
  133.             4.1.3 Connection-Accept-Response   ...................... 17
  134.  
  135.             4.1.4 Connection-Reject-Response   ...................... 18
  136.  
  137.             4.1.5 Bye-Notification   ................................ 18
  138.  
  139.             4.1.6 Incoming-Policy-Query   ........................... 18
  140.  
  141.             4.1.7 Incoming-Policy-Response   ........................ 19
  142.  
  143.             4.1.8 Outgoing-Policy-Query   ........................... 19
  144.  
  145.             4.1.9 Outgoing-Policy-Response   ........................ 19
  146.  
  147.             4.1.10 Status-Query   ................................... 20
  148.  
  149.             4.1.11 Status-Response   ................................ 20
  150.  
  151.             4.1.12 Delete-State-Notification   ...................... 21
  152.  
  153.             4.1.13 Schedule-RSVP-Notification   ..................... 21
  154.  
  155.             4.1.14 Client-Status-Notification   ..................... 22
  156.  
  157.             4.1.15 Resend-Notification   ............................ 22
  158.  
  159.             4.1.16 Error-Notification   ............................. 22
  160.  
  161.       4.2   Fields format   ......................................... 23
  162.  
  163. 5     Acknowledgment                                                  25
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 3]
  179.  
  180.  
  181.  
  182.  
  183.  
  184. Internet Draft       OOPS: Policy Protocol for RSVP
  185.  
  186.  
  187. 1. Overview
  188.  
  189.    Open Outsourcing Policy Service (OOPS) is a protocol for exchanging
  190.    policy information and decisions between an RSVP-capable router
  191.    (client) and a policy server.  As the name suggests, OOPS is an
  192.    outsourcing protocol which allows the partial or complete delegation
  193.    of the task of policy control from the local router to an external
  194.    server. Moreover, it is an open protocol in a sense that it does not
  195.    define or depend on particular policies; instead, it provides a
  196.    framework for adding, modifying and experimenting with new policies
  197.    in a modular, plug-n-play fashion.
  198.  
  199.    The OOPS protocol was designed to be compatible with the RSVP
  200.    Extensions for Policy Control [Ext], both in the format of RSVP
  201.    objects, as well as the set of supported services.
  202.  
  203.    The basic features of OOPS design are as follows:
  204.  
  205.    Asymmetry between client and server
  206.  
  207.         Adding policy support to RSVP may require substantial
  208.         modifications to platforms (e.g., routers) which may not have
  209.         the required implementation flexibility and/or processing power.
  210.         OOPS assumes that the server is more sophisticated than the
  211.         client, in terms of processing power and support for diverse
  212.         policies.
  213.  
  214.    Support for a wide range of client implementation
  215.  
  216.         The OOPS protocol supports a wide range of client
  217.         implementations.  At one end of the spectrum, a "dumb" client
  218.         may delegate total responsibility to the server for all policy
  219.         decisions without even maintaining cached states.  At the other
  220.         end, smart clients can perform most policy processing locally
  221.         and only address the server for a small number of policies and
  222.         only when they change (otherwise, cache can be used).
  223.  
  224.    Minimal knowledge of RSVP's processing rules.
  225.  
  226.         The server must be aware of the format of several RSVP objects
  227.         and basic RSVP message types. However, it is not required to
  228.         understand RSVP's processing rules (e.g., different reservation
  229.         styles).
  230.  
  231.    Asynchronicity
  232.  
  233.         Both client and server may asynchronously generate queries or
  234.         requests.
  235.  
  236.  
  237.  
  238. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 4]
  239.  
  240.  
  241.  
  242.  
  243.  
  244. Internet Draft       OOPS: Policy Protocol for RSVP
  245.  
  246.  
  247.    TCP for reliable communications
  248.  
  249.         TCP is used as a reliable communication protocol between client
  250.         and server.
  251.  
  252.  
  253.    1.1 Representative OOPS Scenarios
  254.  
  255.       Figure 1 depicts some representative scenarios for policy control
  256.       along an RSVP path, as envisioned in OOPS.  Nodes A, B and C
  257.       belong to one administrative domain AD-1 (advised by policy server
  258.       PS-1), while D and E belong to AD-2 and AD-3, respectively.
  259.  
  260.  
  261.                              AD-1                AD-2       AD-3
  262.                _______________/\___________     __/\__     __/\__
  263.               {                            }   {      }   {      }
  264.  
  265.               +------+   +------+   +------+   +------+   +------+
  266.       +----+  |  A   |   |  B   |   |  C   |   |  D   |   |  E   |  +----+
  267.       | S1 |--| RSVP |---| RSVP |---| RSVP |---| RSVP |---| RSVP |--| R1 |
  268.       +----+  +------+   +------+   +------+   +------+   +------+  +----+
  269.               | LPM  |              | LPM  |   | LPM  |   | LPM  |
  270.               +------+              +------+   +------+   +------+
  271.                     \                /                       |
  272.                      \              /                     +------+
  273.                       \            /                      |Policy|
  274.                        \          /                       |Server|
  275.                         \        /                        | PS-2 |
  276.                          \      /                         +------+
  277.                          +------+
  278.                          |Policy|
  279.                          |Server|
  280.                          | PS-1 |
  281.                          +------+
  282.  
  283.                Figure 1: Policy Control along an RSVP path
  284.  
  285.  
  286.       The scenario includes four typical node types:
  287.  
  288.       (1) Policy incapable nodes: Node B. (2) Self-sufficient policy
  289.       node: Node D is self-sufficient since its local LPM satisfies its
  290.       entire policy needs. (It has no need for server advice.)  (3)
  291.       "Dumb" policy nodes: Node E is an unsophisticated node that lacks
  292.       processing power, code support or caching capabilities, and needs
  293.       to rely on PS-2 for every policy processing operation.  In this
  294.       case, the volume of traffic and delay requirements make it
  295.  
  296.  
  297.  
  298. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 5]
  299.  
  300.  
  301.  
  302.  
  303.  
  304. Internet Draft       OOPS: Policy Protocol for RSVP
  305.  
  306.  
  307.       imperative to connect PS-2 to node E by a direct link or a LAN.
  308.       (4) "Smart" policy nodes:  Nodes A and C include sophisticated
  309.       LPMs, in that these nodes can process some policies, and have the
  310.       capacity to cache responses from PS-1.  In this case, the contact
  311.       between the clients and server will be limited to occasional
  312.       updates, and PS-1 could be located somewhere in AD-1.
  313.  
  314.       Consider the case where the receiver R1 sends a Resv message
  315.       upstream toward sender S1.  Assuming that the reservation is
  316.       successful, the conceptual flow of policy objects is:
  317.  
  318.       R1 -- E -- ELPM -- PS-2 -- ELPM -- E -- D -- DLPM -- D -- C -- CLPM
  319.       -- PS-1 -- CLPM -- C -- B -- A -- ALPM -- PS-1 -- ALPM -- A -- S1.
  320.  
  321.       Of course, other OOPS messages may be exchanged between policy
  322.       servers and nodes before authorizing the reservation at individual
  323.       nodes.
  324.  
  325. 2. Query-Response Protocol
  326.  
  327.    OOPS is a transaction protocol, in which most communication is in the
  328.    form of queries from the client followed by responses from the
  329.    server.  However, a small portion of the communication may also
  330.    consist of queries originating from the server, or of unidirectional
  331.    notifications from one entity to another.  In this context, it is
  332.    important that messages be distinguished by a unique sequence number,
  333.    so that responses may identify the query to which they correspond.
  334.  
  335.    This section discusses two fundamental concepts of the OOPS protocol:
  336.    (a) flexible division of labor between client and server.  (b)
  337.    consistent management of client, server and RSVP state.
  338.  
  339.    2.1 Division of Labor between Client and Server
  340.  
  341.       The OOPS protocol allows for a flexible division of
  342.       responsibilities between server and client. Processing of policies
  343.       (policy elements within POLICY_DATA objects) can be performed by
  344.       the server, the client, or by both.  The decision on which
  345.       policies are to be handled locally and which are to be sent to the
  346.       server is always made by the client based on information exchanged
  347.       during the connection establishment handshake (see Section 3.1).
  348.  
  349.       Before the client forwards incoming POLICY_DATA objects to the
  350.       server (Incoming-Policy-Query) it removes or marks the policy
  351.       elements it wishes the server to ignore.  (Marking is performed by
  352.       changing the policy element P-type to zero.)  When forwarding
  353.       incoming policy objects, the client may also set header flags to
  354.       inform the server that message integrity and/or rsvp hop has been
  355.  
  356.  
  357.  
  358. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 6]
  359.  
  360.  
  361.  
  362.  
  363.  
  364. Internet Draft       OOPS: Policy Protocol for RSVP
  365.  
  366.  
  367.       already checked.
  368.  
  369.       OOPS does not impose limitations on the number of servers
  370.       connected to the client; when appropriate, the client could divide
  371.       the work along policy lines between several servers, and be
  372.       responsible for combining their results. In the rest of this
  373.       document we describe the protocol for a single server-client pair.
  374.  
  375.       When the client receives outgoing POLICY_DATA objects in response
  376.       to a previous query (Outgoing-Policy-Response) it is responsible
  377.       for merging the server response with the locally generated
  378.       outgoing POLICY_DATA object.  Merging is performed by
  379.       concatenating the local and server policy elements and if
  380.       necessary, computing some of the POLICY_DATA object fields (e.g.,
  381.       length, INTEGRITY, etc.)
  382.  
  383.       When the client receive status results in response to a previous
  384.       query (Status-Policy-Response) it is responsible for merging the
  385.       results from the server with the local results.  The following
  386.       rule applies for combining any number of policies, and
  387.       specifically, local and server policies:
  388.  
  389.       o    When responding to a status query (authorization check),
  390.            individual policy handlers may vote to ACCEPT, SNUB or VETO
  391.            the request. As their names suggest, a vote of accept
  392.            authorizes the request; a snub fails it, but remains
  393.            indifferent on its final outcome (i.e., other policies could
  394.            provide authorization); a veto vote excludes the possibility
  395.            of authorizing the request, even if other policy handlers
  396.            cast accept votes.
  397.  
  398.       o    The merge result provides an authorization if there is at
  399.            least one accept, and no vetoes. [Note 1]
  400.             (See [LPM]) for more details).
  401.  
  402.       o    The client and/or server should complete their policy
  403.            processing even if a veto was cast by some policy. [Note 2]
  404.  
  405. _________________________
  406. [Note 1] A veto has a stronger semantics than a snub, since it has the
  407. power to forcefully reject a flow regardless of any accept decisions
  408. made by others.
  409.  
  410. [Note 2] A wide range of policies may not care about the final status
  411. results and should be activated regardless.  For instance: a policy that
  412. logs all policy queries.
  413.  
  414.  
  415.  
  416.  
  417.  
  418. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 7]
  419.  
  420.  
  421.  
  422.  
  423.  
  424. Internet Draft       OOPS: Policy Protocol for RSVP
  425.  
  426.  
  427.       o    Protocol errors are always considered as snubs, and thus,
  428.            neutral.
  429.  
  430.       It is recommended (although not required) that all local status
  431.       processing at the client be completed before querying the server.
  432.       This allows the server to immediately commit the transaction
  433.       rather than having to wait until the client is done.  (See the
  434.       Client-Status-Notification operation.)
  435.  
  436.       2.1.1 Error Reporting
  437.  
  438.          Policy error reporting is policy specific; it is performed by
  439.          sending POLICY_DATA objects with specific error objects toward
  440.          the originator of the error. The rules governing error
  441.          reporting are described in [Ext].
  442.  
  443.          In this document, we discuss only error reporting between the
  444.          client and the server, which is intended to help the client
  445.          determine whether error reporting is required at all.
  446.  
  447.          There are two types of possible errors; policy errors and
  448.          protocol errors.  For the purpose of this protocol, policy
  449.          errors are considered as legitimate results (e.g., reject) and
  450.          not as errors.  Protocol errors must be reported as such.
  451.          However, since they do not reveal any policy decisions they
  452.          should always be considered as snubs (and therefore neutral to
  453.          the overall policy decision).
  454.  
  455.          When the client (or server) discovers a protocol error (syntax,
  456.          missing parameters, etc.), it is reported alongside and
  457.          orthogonal to the status results (accept, reject or veto).
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 8]
  479.  
  480.  
  481.  
  482.  
  483.  
  484. Internet Draft       OOPS: Policy Protocol for RSVP
  485.  
  486.  
  487.    2.2 State Management
  488.  
  489.       In order for policy objects contained in RSVP messages to be
  490.       processed quickly and correctly, it is often required that the
  491.       results of past policy decisions be cached and maintained at the
  492.       LPM or the policy server.  Maintenance of policy state must be
  493.       done in a manner that is consistent with the division of
  494.       responsibility for policy processing between client and server and
  495.       with RSVP's state management rules. [Note 3]
  496.  
  497.  
  498.       The most straightforward method for state maintenance is for the
  499.       LPM and the policy server to use the same soft-state mechanism as
  500.       the RSVP capable router. Unfortunately, this soft-state approach
  501.       has undesirable scaling properties since it requires the client to
  502.       contact the server on each refresh period (regardless of state
  503.       changes).
  504.  
  505.       An alternative approach is to allow both client and server to use
  506.       hard-state mechanisms that could limit the client-server
  507.       communication to updates only.  This alternative implies that the
  508.       client must be capable of recognizing objects that would result in
  509.       a change of policy state, as well as being able to translate
  510.       between the soft-state provided by RSVP and the hard-state
  511.       exchanged with the server.
  512.  
  513.       Thus, we envision one end of the spectrum where a "dumb" client
  514.       would use a soft-state approach and simply pass all policy objects
  515.       to the server relying on it for all policy processing.  The rate
  516.       of queries and lack of caching at the client implies the need for
  517.       a dedicated, close-by server (PS-2, in our example). As we move
  518.       towards the other extreme, clients become smarter, more capable of
  519.       caching, and dividing the work between themselves and the server.
  520.       Such clients could take advantage of the benefits of hard-state
  521.       management, and initiate queries only on actual state updates.
  522.  
  523.       OOPS supports soft and hard state mechanisms seamlessly, as
  524.       described in this section. The client determines its desired type
  525.       of state management, and communicates it on an object-by-object
  526.       basis.  A single client can use soft-state for some information,
  527.       and hard state for others.  Furthermore, the OOPS protocol allows
  528.       clients to modify their caching strategies on the fly (without
  529. _________________________
  530. [Note 3] During normal processing, state split between client and server
  531. should remain consistent, and timeout at roughly the same time at RSVP,
  532. the client, and the server.
  533.  
  534.  
  535.  
  536.  
  537.  
  538. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 9]
  539.  
  540.  
  541.  
  542.  
  543.  
  544. Internet Draft       OOPS: Policy Protocol for RSVP
  545.  
  546.  
  547.       having to renegotiate with the server).  While the protocol does
  548.       not impose strategy limitations, a client implementation could
  549.       restrict itself to a more modest and simple combination of soft
  550.       and hard state.
  551.  
  552.       There are two types of state information that is stored at the
  553.       client:  (a) client state information that was forwarded to the
  554.       server (e.g., policy objects in incoming Path/Resv messages).  (b)
  555.       server state which is cached at the client (e.g., policy results
  556.       computed by the server). The OOPS protocol addresses each of these
  557.       types of states:
  558.  
  559.       2.2.1 Client State Information Cached at Server
  560.  
  561.          The client indicates that it desires hard (or soft) state
  562.          management of client state information cached at the server by
  563.          setting (or resetting) the OOPS_HardState flag in objects sent
  564.          to the server.  When the client chooses soft-state management
  565.          for a particular object, policy state for that object would age
  566.          and expire at the server according to the timeout specified in
  567.          the object. The client must, therefore, forward each policy
  568.          refresh (update or not) to the server, to keep the soft-state
  569.          at the server from becoming stale and expiring.  On the other
  570.          hand, when the client indicates hard-state management, it
  571.          assumes responsibility for reliably informing the server on
  572.          every policy update.  In this case, the state cached at the
  573.          server would not expire unless explicitly modified by the
  574.          client, or when the communication channel to the client breaks.
  575.          The client may refrain from forwarding to the server any policy
  576.          objects that are identical to objects previously sent to the
  577.          server.
  578.  
  579.          The client may switch between hard and soft states on the fly
  580.          by modifying the OOPS_HardState flag while forwarding input to
  581.          the server.
  582.  
  583.       2.2.2 Server State Information Cached at Client
  584.  
  585.          The client indicates that it is capable of hard (or soft) state
  586.          management of server state information by setting (or
  587.          resetting) the OOPS_HardState flag in queries sent to the
  588.          server. Here, hard state management refers to the caching of
  589.          response results at the client. Soft state management means
  590.          that the client, being incapable of caching, would purge them
  591.          after usage (one-time, or disposable results).
  592.  
  593.          A non-cached response has no strings attached, but the client
  594.          must issue a query each time that responses are needed.  When
  595.  
  596.  
  597.  
  598. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 10]
  599.  
  600.  
  601.  
  602.  
  603.  
  604. Internet Draft       OOPS: Policy Protocol for RSVP
  605.  
  606.  
  607.          the server responds to a cached (hard-state) query, it assumes
  608.          responsibility to reliably inform the client about any changes
  609.          that may occur later to the original results of this query.
  610.          The client may rely on cached results as long as the there is
  611.          no change in RSVP's state (which includes incoming policy
  612.          objects), [Note 4]
  613.           and the communication channel with the server is intact.
  614.  
  615.          The client may switch between hard and soft states on the fly
  616.          by issuing a new query with a modified flag.
  617.  
  618.       2.2.3 State Change Notification
  619.  
  620.          State change notification is done by resending the same type as
  621.          the original message but with the modified state instead.
  622.  
  623.          Client notification example (incoming POLICY_DATA objects for
  624.          Resv-X):
  625.  
  626.  
  627.                              Seq#  Type           Data
  628.                              ---   ----           ----
  629.          Client ==> Server:   50   Notify:input   Resv-X: PD-1
  630.  
  631.          Time passes; the input POLICY_DATA object associated with
  632.          Resv-X changed to PD-2.
  633.  
  634.          Client ==> Server:   90   Notify:input   Resv-X: PD-2
  635.  
  636.  
  637.          Server notification example (status query for reservation
  638.          Resv-X):
  639.  
  640.  
  641.                               Seq#   Type            Data
  642.                               ---    ----            ----
  643.          Client ==> Server:  150   Query:status   Resv-X
  644.          Server ==> Client:  151   Resp :status   #150: accept
  645.  
  646.          Time passes; the status of Resv-X changed to "reject".
  647. _________________________
  648. [Note 4] A configurable option may allow the client to use cached
  649. results even when some RSVP state changes.  Clearly, there is a trade-
  650. off between fast and accurate policy processing, however, given that the
  651. server is up, and that authorization was already granted previously for
  652. that RSVP flow, some may find it a reasonable policy approach.
  653.  
  654.  
  655.  
  656.  
  657.  
  658. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 11]
  659.  
  660.  
  661.  
  662.  
  663.  
  664. Internet Draft       OOPS: Policy Protocol for RSVP
  665.  
  666.  
  667.          Server ==> Client:  205   Resp :status   #150: reject
  668.  
  669. 3. Client-Server Communications
  670.  
  671.    This section describes the fundamentals of client-server
  672.    communications: connection establishment, communication channel
  673.    management, and connection termination.
  674.  
  675.    3.1 Connection Establishment
  676.  
  677.       Connections are always initiated by clients. The client
  678.       establishes a TCP connection to its preferred policy server, and
  679.       then initiates the OOPS session through a two way handshake.
  680.  
  681.       o    Communication Initiation by the Client
  682.  
  683.            The client sends a Connection-Initiation-Query to the server.
  684.            This message identifies the client to the server and provides
  685.            the basic characteristics of the client.
  686.  
  687.       o    Response by the Server
  688.  
  689.            The server responds with a Connection-Accept-Response to
  690.            connect to the client. It may also respond with a
  691.            Connection-Reject-Response to refuse and disconnect from the
  692.            client.
  693.  
  694.            After connection establishment both the client and server
  695.            know the set of policies that the client can send to the
  696.            server, and which one of them should handle default
  697.            (unrecognized) policies.  The Keep-Alive period is determined
  698.            as the minimum between the two values declared in the
  699.            handshake messages.
  700.  
  701.       3.1.1 Secure Communications
  702.  
  703.          The integrity of the communication channel between client and
  704.          server is guaranteed by the use of shared-key message digest.
  705.          (e.g., keyed MD5). A client, wishing to establish secure
  706.          communications adds a "Cookie" to the Connection-Initiation-
  707.          Query.  The server may respond with a reply Cookie or with an
  708.          Error-Description [Note 5]
  709.  
  710. _________________________
  711. [Note 5] The Error-Description provides reasons for rejecting the secure
  712. communications request.
  713.  
  714.  
  715.  
  716.  
  717.  
  718. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 12]
  719.  
  720.  
  721.  
  722.  
  723.  
  724. Internet Draft       OOPS: Policy Protocol for RSVP
  725.  
  726.  
  727.          Shared keys may be obtained from local static configurations or
  728.          could be distributed dynamically. The exchange of cookies
  729.          provides the client and server with an opportunity for
  730.          establishing a temporary shared-key (e.g., from Kerberos) for
  731.          the connection length.
  732.  
  733.          Once a shared key is available, each message sent by either
  734.          client or server includes an INTEGRITY object as described in
  735.          [Bak96].  The format and functionality of the INTEGRITY object
  736.          are identical to that of RSVP. The sender client or server
  737.          computes the message digest over the entire OOPS message; if
  738.          the receiver fails to verify the message, it response with an
  739.          error message.
  740.  
  741.          The format of "cookies" is left for future versions of this
  742.          document.
  743.  
  744.    3.2 Reliable Communication
  745.  
  746.       We expect TCP to provide us with reliable, in-order delivery of
  747.       packets, as well as information on the liveliness of the
  748.       communication channel.  Given that TCP is responsible for all the
  749.       time critical network operations, reliability errors are assumed
  750.       to be virtually nonexistent. However, to maintain application-
  751.       level reliability, OOPS uses a minimalistic reliability mechanism
  752.       using sequence numbers, selective retransmit and keep-alive
  753.       messages. This requires no retransmission timeouts, and has low
  754.       overhead.
  755.  
  756.       3.2.1 Sequence Numbers
  757.  
  758.          Each OOPS message, except a Resend-Notification, is uniquely
  759.          identified by a sequence number [Note 6]
  760.           (Mseq).  These numbers do not imply any order of execution;
  761.          while the server receives messages in-order, it is free to
  762.          execute them in any reasonable order. [Note 7]
  763.  
  764.          In addition, each message also carries the sequence number of
  765.          the last received message (Rseq). Both client and server begin
  766.          communication with Mseq = 0 (the handshake message), and number
  767.          consecutive messages in increasing order.
  768. _________________________
  769. [Note 6] Not counting wraparounds
  770. [Note 7] Execution order is implementation and policy specific; any
  771. order that does not violate the policy specific requirements is assumed
  772. to be reasonable.
  773.  
  774.  
  775.  
  776.  
  777.  
  778. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 13]
  779.  
  780.  
  781.  
  782.  
  783.  
  784. Internet Draft       OOPS: Policy Protocol for RSVP
  785.  
  786.  
  787.          A transmitted message with Mseq = m is considered to be
  788.          acknowledged if m <= Rseq (Rseq from the latest received
  789.          message). [Note 8]
  790.  
  791.          The sender must be prepared to retransmit (as requested) any
  792.          message that has not been acknowledged yet.  Missing, or out-
  793.          of-order messages are identified by a gap in sequence numbers
  794.          of received messages.
  795.  
  796.       3.2.2 Receiver initiated retransmit
  797.  
  798.          When the receiver (client or server) detects missing messages
  799.          it immediately sends an explicit Resend-Notification listing
  800.          these messages.  The Resend-Notification has a sequence number
  801.          0. [Note 9]
  802.  
  803.          Upon receiving the Resend-Notification, the sender must
  804.          retransmit all the requested messages before sending new ones.
  805.  
  806.       3.2.3 Keep-Alive Messages
  807.  
  808.          Many platforms provide system support for detecting broken TCP
  809.          connections. OOPS can utilize, but does not depend on such
  810.          mechanisms.  Instead, it relies on Keep-Alive messages to
  811.          provide application-level communication-channel verification,
  812.          as a server may be in a dysfunctional state while its TCP
  813.          connection is still open and viable.
  814.  
  815.          The client sends a Keep-Alive message to the server only after
  816.          the receiving channel has been idle for longer than the Keep-
  817.          Alive period.  The server responds promptly with a Keep-Alive
  818.          ack.
  819.  
  820.       3.2.4 Overhead
  821.  
  822.          These reliability mechanisms were designed to be simple and
  823.          impose minimal overhead in a busy working environment.  When
  824.          the client supports a large number of RSVP sessions and has
  825.          frequent message exchange with the server, it would not be
  826. _________________________
  827. [Note 8] Mseq <= Rseq should take into account possible wrap-around of
  828. sequence numbers.
  829.  
  830. [Note 9] Thus, Resend-Notification cannot participate in sequence number
  831. reliability verification. A lost Resend-Notification cannot not be
  832. detected, however, a new one is bound to be triggered sometime again.
  833.  
  834.  
  835.  
  836.  
  837.  
  838. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 14]
  839.  
  840.  
  841.  
  842.  
  843.  
  844. Internet Draft       OOPS: Policy Protocol for RSVP
  845.  
  846.  
  847.          sending Keep-Alive messages.  Similarly, since TCP is used for
  848.          reliable communications, there is a virtually zero probability
  849.          that Resend-Notification messages would be required. The only
  850.          timer required is for the Keep-Alive period; the timer is reset
  851.          on each message arrival and a Keep-Alive message is initiated
  852.          only when it expires.
  853.  
  854.    3.3 Connection Termination
  855.  
  856.       This section describes how communication breakdown is handled.
  857.  
  858.       3.3.1 Explicit Termination
  859.  
  860.          The client (or server) may terminate the connection by sending
  861.          a Bye-Notification, and wait until either it receives an echoed
  862.          Bye-Notification or a Keep-Alive period had passed. In between,
  863.          it should ignore incoming messages (and not reset the Keep-
  864.          Alive timer).
  865.  
  866.          At the opposite side, when a client (or server) receive a Bye-
  867.          Notification message, they should echo it, and close the
  868.          connection.
  869.  
  870.          After an explicit termination, both client and server may
  871.          cleans up and purges the state related to the closed
  872.          connection.
  873.  
  874.       3.3.2 Implicit Termination
  875.  
  876.          The communication channel may be unexpectedly disconnected
  877.          because of a misbehaving client or server, network split, or
  878.          other reasons.  Both client and server must be able to detect
  879.          such channel failures and act accordingly.
  880.  
  881.          Consider the case where OOPS is used for quota enforcement.
  882.          The server may approve a reservation while debiting X/min from
  883.          a local account. If the OOPS communication channel breaks, it
  884.          is critical for the server to detect it and stop debiting this
  885.          account.
  886.  
  887.          A communication channel is assumed to be disconnected when the
  888.          channel was idle (no message was received on it) for over two
  889.          Keep-Alive periods.
  890.  
  891.       3.3.3 Post Termination
  892.  
  893.          Soft-state has an inherent cleanup mechanism; when the channel
  894.          disconnects, the soft-state would age and eventually expire
  895.  
  896.  
  897.  
  898. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 15]
  899.  
  900.  
  901.  
  902.  
  903.  
  904. Internet Draft       OOPS: Policy Protocol for RSVP
  905.  
  906.  
  907.          based on the same mechanism and refresh-period used by RSVP.
  908.  
  909.          When hard-state is used, cached state is assumed to be valid
  910.          unless explicitly modified. However, when the channel
  911.          disconnects such an explicit notification is not possible.
  912.          Purging all state immediately upon disconnection is not an
  913.          acceptable approach since it may cause a disruption of service
  914.          before an alternate server is contacted.  OOPS uses the
  915.          following simple rule:
  916.  
  917.          When the communication channel disconnects, the hard state
  918.          associated with it is assumed to be soft-state that was just
  919.          refreshed.
  920.  
  921.          Naturally, when any RSVP state changes (e.g., routing changes,
  922.          policy input changes, etc.), cached results at the client
  923.          should not be used and must be purged.
  924.  
  925.       3.3.4 Switching to An Alternative Server
  926.  
  927.          We assume that the client is provided a list of policy servers
  928.          and site specific selection criteria.
  929.  
  930.          A switch to an alternate server may be triggered by a voluntary
  931.          disconnection (i.e., Bye-Notification) or an unexpected break
  932.          in the communication channel.
  933.  
  934.          During normal operations, the client may wish to switch to an
  935.          alternate server (for any reason). The client is advised to
  936.          first connect to the new server before sending a Bye-
  937.          Notification to the original one.  If the communication channel
  938.          unexpectedly disconnects, the client should quickly attempt to
  939.          connect to an alternate server.
  940.  
  941.          In both cases, after the connection to a new server [Note 10]
  942.           is established, the aging cached state from the old server
  943.          would be gradually replaced by responses from the new server.
  944.          [Note 11]
  945. _________________________
  946. [Note 10] The term "new server" may be the same as the "previous
  947. server"; it may happen that the connection encounters a problem and the
  948. client chooses to disconnected and re-established the connection.
  949.  
  950. [Note 11] The client could speed-up replacement of cached state by
  951. sending copies of cached input to the server and issuing repeated
  952. queries, on connection establishment (instead of waiting until objects
  953. arrive from RSVP).
  954.  
  955.  
  956.  
  957.  
  958. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 16]
  959.  
  960.  
  961.  
  962.  
  963.  
  964. Internet Draft       OOPS: Policy Protocol for RSVP
  965.  
  966.  
  967.          As general guidelines, state replacement from a new server
  968.          should not cause a disruption of service that would not
  969.          otherwise occur (if a new server was not found). [Note 12]
  970.  
  971.  
  972. 4. OOPS Message Format
  973.  
  974.    OOPS messages serve as a wrapper that may include one or more
  975.    protocol operations; this wrapper allows common operation (e.g., MD5
  976.    integrity, RSVP_HOPs, protocol version, etc.) to be verified and
  977.    performed in one-shot.
  978.  
  979.    +---------------+---------------+---------------+---------------+
  980.    |    Vers       |   Flags       |   op-objs#    | Reserved (0)  |
  981.    +---------------+---------------+---------------+---------------+
  982.    |                       Message Length                          |
  983.    +---------------+---------------+---------------+---------------+
  984.    |                  Message Sequence Number                      |
  985.    +---------------+---------------+---------------+---------------+
  986.    |                  Ack-ed Sequence Number                       |
  987.    +---------------+---------------+---------------+---------------+
  988.    |                      INTEGRITY Object... (optional)           |
  989.    +---------------+---------------+---------------+---------------+
  990.    |                      List of operations                       |
  991.    +---------------+---------------+---------------+---------------+
  992.  
  993.    Any OOPS message is composed of the following fields:
  994.  
  995.    Version: 8 bits
  996.  
  997.         Protocol version number. The current version is 1.
  998.  
  999.    Flags: 8 bits
  1000.  
  1001.         0x01 H_Integrity_Checked      Integrity already checked by client
  1002.         0x01 H_Hops_Checked           RSVP_HOPs already checked by client
  1003.  
  1004.    op-objs#: 8 bits
  1005.  
  1006.         Number of objects included in this message.
  1007.  
  1008.    Message Length: 32 bits
  1009. _________________________
  1010. [Note 12] Practically, this means that as long as there is no change in
  1011. RSVP messages, the client is advised to choose between cached and new
  1012. results in favor of authorizing the request.
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 17]
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024. Internet Draft       OOPS: Policy Protocol for RSVP
  1025.  
  1026.  
  1027.         The total length of this OOPS message in bytes.
  1028.  
  1029.    Message Sequence Number: 32 bits
  1030.  
  1031.         The sequence number of the message being sent.
  1032.  
  1033.    Ack-ed Sequence Number: 32 bits
  1034.  
  1035.         The sequence number of the last message received in-order from
  1036.         the peer entity (client or server).
  1037.  
  1038.    RSVP INTEGRITY Object (optional): variable length
  1039.  
  1040.         This object is defined in [Bak96]. It provides a message digest
  1041.         based on a shared key between the client and sender. The message
  1042.         digest is calculated over the entire OOPS message.
  1043.  
  1044.    List of OOPS operations: variable length
  1045.  
  1046.         Described in the following section.
  1047.  
  1048.  
  1049.    4.1 OOPS Operations
  1050.  
  1051.       Each OOPS message may contain multiple OOPS operations each
  1052.       encapsulating a different query, response or notification.  For
  1053.       example, multiple Incoming-Policy-Queries might be followed by a
  1054.       Status-Query operation in the same message. Operations within an
  1055.       OOPS message are sequentially numbered.
  1056.  
  1057.       Individual OOPS operations have the following header:
  1058.  
  1059.       +---------------+---------------+---------------+---------------+
  1060.       | Operation Type| Op. Subtype   | Op. Seq#      |     Flags     |
  1061.       +---------------+---------------+---------------+---------------+
  1062.       |                      Length (bytes)                           |
  1063.       +---------------+---------------+---------------+---------------+
  1064.       |               |  RSVP's Refresh Period                        |
  1065.       +---------------+---------------+---------------+---------------+
  1066.  
  1067.       The operation header has the following fields:
  1068.  
  1069.       operation Type: 8 bits
  1070.  
  1071.            The type of OOPS operation.
  1072.  
  1073.       Operation Subtype: 8 bits
  1074.  
  1075.  
  1076.  
  1077.  
  1078. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 18]
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084. Internet Draft       OOPS: Policy Protocol for RSVP
  1085.  
  1086.  
  1087.            This field can be used to indicate an attribute of the
  1088.            operation type, such as its version; currently it is always
  1089.            set to 1.
  1090.  
  1091.       Operation Sequence Number: 8 bits
  1092.  
  1093.            The operation sequence number within the message.
  1094.  
  1095.       Flags: 8 bits
  1096.  
  1097.            0x01 OOPS_HardState:   Hard State (soft-state if not set (0) )
  1098.            0x02 OOPS_Shared   :   Resv shared among sources as filter specs
  1099.            0x02 OOPS_FullList :   Last in the set of status queries.
  1100.  
  1101.       Length: 32 bits
  1102.  
  1103.            Contains the total operation length in bytes.
  1104.  
  1105.       RSVP's Refresh Period
  1106.  
  1107.            The refresh-period RSVP associates with this object.
  1108.  
  1109.  
  1110.       This remainder of this section describes the set of operations
  1111.       that may appear in OOPS messages. Many data fields of these
  1112.       operations are RSVP objects; they are typed in uppercase letters
  1113.       and their format is defined in [RSVPSP].  The format of other
  1114.       operations is listed in the following section.
  1115.  
  1116.  
  1117.       4.1.1 Null-Notification (a.k.a Keep-Alive)
  1118.  
  1119.          Operation Type = 0, sub-type = 0
  1120.  
  1121.          <Null-Notification> ::= <Common OOPS header>
  1122.  
  1123.          This empty or null notification triggers no operation; thus,
  1124.          can be used as as Keep-Alive signal to test the viability of
  1125.          the communication channel between client and server (see
  1126.          Section 3.2.3).
  1127.  
  1128.       4.1.2 Connection-Initiation-Query
  1129.  
  1130.          Operation Type = 1, sub-type = 1
  1131.  
  1132.          <Connection-Initiation-Query> ::=  <Common OOPS header>
  1133.                                             <Ver> <RSVP-K> <Flags>
  1134.                                             <Client-ID>
  1135.  
  1136.  
  1137.  
  1138. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 19]
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144. Internet Draft       OOPS: Policy Protocol for RSVP
  1145.  
  1146.  
  1147.                                             <Max-Pkt-Size> <Keep-Alive period>
  1148.                                             <Class Indicator>
  1149.                                             <Cookie>
  1150.  
  1151.  
  1152.          The client sends this query to establish a connection with a
  1153.          server. This message is sent following the establishment of a
  1154.          transport connection (TCP).
  1155.  
  1156.       4.1.3 Connection-Accept-Response
  1157.  
  1158.          Operation Type = 2, sub-type = 1
  1159.  
  1160.          <Connection-Accept-Response> ::=  <Common OOPS header>
  1161.                                            <Max-Pkt-Size> <Keep-Alive period>
  1162.                                            <Policy list>
  1163.                                            <Cookie>
  1164.  
  1165.          The server sends this response to accept a client's connection
  1166.          connection request.
  1167.  
  1168.       4.1.4 Connection-Reject-Response
  1169.  
  1170.          Operation Type = 3, sub-type = 1
  1171.  
  1172.          <Connection-Reject-Response> ::=  <Common OOPS header>
  1173.                                            <Error-Description>
  1174.  
  1175.          The server sends this response to reject a client's connection
  1176.          initiation. It specifies both reason code and text.
  1177.  
  1178.       4.1.5 Bye-Notification
  1179.  
  1180.          Operation Type = 4, sub-type = 1
  1181.  
  1182.          <Bye-Notification> ::= <Common OOPS header>
  1183.  
  1184.          This message is used by either client or server to terminate
  1185.          the OOPS connection.  (Section 3.3.1 includes a description of
  1186.          explicit termination )
  1187.  
  1188.       4.1.6 Incoming-Policy-Query
  1189.  
  1190.          Operation Type = 5, sub-type = 1
  1191.  
  1192.          <Incoming-Policy-Query> ::=  <Common OOPS header>
  1193.                                       <RSVP MESSAGE TYPE>
  1194.                                       <SESSION>
  1195.  
  1196.  
  1197.  
  1198. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 20]
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204. Internet Draft       OOPS: Policy Protocol for RSVP
  1205.  
  1206.  
  1207.                                       <FILTER_SPEC list> <RSVP_HOP>
  1208.                                       <resv_handle> <RESV_FLOWSPEC>
  1209.                                       <counter (of in P.D.)>
  1210.                                       <in POLICY_DATA objects>
  1211.  
  1212.          This operation is used to forward POLICY_DATA objects from the
  1213.          client to the server.  Selection between hard and soft state
  1214.          management is reflected in the OOPS_HardState flag.  The other
  1215.          fields are copied from the PC_InPolicy() function called by
  1216.          RSVP. (See [Ext]).
  1217.  
  1218.       4.1.7 Incoming-Policy-Response
  1219.  
  1220.          Operation Type = 6, sub-type = 1
  1221.  
  1222.          <Incoming-Policy-Query> ::=  <Common OOPS header>
  1223.                                       <Query Sequence Number>
  1224.                                       <Error-Description>
  1225.  
  1226.          Incoming-Policy-Response is used ONLY to report protocol errors
  1227.          (e.g., syntax) found with incoming policy objects.  (it is not
  1228.          used in the normal operation of the protocol).
  1229.  
  1230.          The  <Query Sequence Number> links the response to the original
  1231.          query.
  1232.  
  1233.       4.1.8 Outgoing-Policy-Query
  1234.  
  1235.          Operation Type = 7, sub-type = 1
  1236.  
  1237.          <Outgoing-Policy-Query> ::=  <Common OOPS header>
  1238.                                       <RSVP MESSAGE TYPE>
  1239.                                       <SESSION>
  1240.                                       <FILTER_SPEC list>
  1241.                                       <counter (of RSVP_HOPs)>
  1242.                                       <RSVP_HOP list>
  1243.  
  1244.          This operation queries the server for a set of outgoing policy
  1245.          objects for a set of RSVP_HOPs.  The client can choose between
  1246.          hard and soft state management through the OOPS_HardState flag.
  1247.          When hard state is selected, the client caches copies of the
  1248.          outgoing objects and assumes they remain valid unless
  1249.          explicitly modified by the server.
  1250.  
  1251.       4.1.9 Outgoing-Policy-Response
  1252.  
  1253.          Operation Type = 8, sub-type = 1
  1254.  
  1255.  
  1256.  
  1257.  
  1258. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 21]
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264. Internet Draft       OOPS: Policy Protocol for RSVP
  1265.  
  1266.  
  1267.          <Outgoing-Policy-Response> ::=  <Common OOPS header>
  1268.                                          <Query Sequence Number>
  1269.                                          <Counter (of triplets)>
  1270.                                          { <RSVP_HOP>
  1271.                                            <Error-Description>
  1272.                                            <out POLICY_DATA objects>
  1273.                                          } pair list
  1274.  
  1275.          The  <Query Sequence Number> links the response to the original
  1276.          query.
  1277.  
  1278.          In the response, the server provides a list of triplets, one
  1279.          for each outgoing RSVP_HOP (For Path messages, only the LIH
  1280.          part is significant). Each triplet contains a list of policy
  1281.          objects for that hop and an error description.
  1282.  
  1283.       4.1.10 Status-Query
  1284.  
  1285.          Operation Type = 9, sub-type = 1
  1286.  
  1287.          <Status_Query> ::=  <Common OOPS header>
  1288.                              <RSVP MESSAGE TYPE>
  1289.                              <SESSION>
  1290.                              <FILTER_SPEC_LIST>
  1291.                              <counter (of Triplets)>
  1292.                              { <LIH> <resv_handle> <RESV_FLOWSPEC> }
  1293.  
  1294.          This operation queries the server for status results of a list
  1295.          of LIHs.  The client can choose between hard and soft state
  1296.          management through the OOPS_HardState flag. When hard state is
  1297.          selected, the client caches the status results and assumes they
  1298.          remain valid unless explicitly modified by the server.
  1299.  
  1300.          In the upstream direction (e.g., Resv) status may need to be
  1301.          checked on multiple LIHs (all reservations for a flow). In such
  1302.          cases, status queries can be perform separately for each LIH,
  1303.          once for all LIHs, or anything in between. Flag OOPS_FullList
  1304.          must be set at the last of status query of the series. [Note
  1305.          13]
  1306.  
  1307.  
  1308. _________________________
  1309. [Note 13] When policies are interdependent across LIHs (as when the cost
  1310. is shared among downstream receivers), flag OOPS_FullList notifies the
  1311. server that the list of reserved LIH is complete and that it can safely
  1312. compute the status of these reservations.
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 22]
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. Internet Draft       OOPS: Policy Protocol for RSVP
  1325.  
  1326.  
  1327.       4.1.11 Status-Response
  1328.  
  1329.          Operation Type = 10, sub-type = 1
  1330.  
  1331.          <Status_Response> ::=  <Common OOPS header>
  1332.                                 <Query Sequence Number>
  1333.                                 <Counter (of triplets)>
  1334.                                 { <LIH>
  1335.                                   <Status Result>
  1336.                                   <Error-Description>
  1337.                                 } pair list
  1338.  
  1339.          The  <Query Sequence Number> links the response to the original
  1340.          query.
  1341.  
  1342.          In the response, the server provides a list of triplets, each
  1343.          of which contains an LIH, status, and any applicable error
  1344.          results.  The set of LIHs is an attribute of the results and
  1345.          not of the query; the server is allowed to respond with a
  1346.          superset of LIHs specified in the original query, as in the
  1347.          following example:
  1348.  
  1349.                              Seq#  Type           Data
  1350.                              ---   ----           ----
  1351.          Client ==> Server:  150   Query:status   Resv-X, LIH={2}
  1352.          Server ==> Client:  153   Resp :status   #150:{2,rej}
  1353.  
  1354.          Two new reservations arrive, carrying new policy data objects:
  1355.  
  1356.          Client ==> Server:  160   Query:status   Resv-X, LIH={4,7}
  1357.          Server ==> Client:  169   Resp :status   #160:{2,acc;4,acc;7,rej}
  1358.  
  1359.       4.1.12 Delete-State-Notification
  1360.  
  1361.          Operation Type = 11, sub-type = 1
  1362.  
  1363.          <Delete-State-Notification> ::=  <Common OOPS header>
  1364.                                           <RSVP MESSAGE TYPE>
  1365.                                           <SESSION>
  1366.                                           <FILTER_SPEC_LIST>
  1367.                                           <RSVP_HOP>
  1368.                                           <Op-type>
  1369.  
  1370.          This operation informs the sender about an immediate RSVP
  1371.          teardown of state caused by PATH_TEAR, RESV_TEAR, routes
  1372.          change, etc.  As a result, the server should ignore the
  1373.          described state as if it was never received from the client.
  1374.  
  1375.  
  1376.  
  1377.  
  1378. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 23]
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384. Internet Draft       OOPS: Policy Protocol for RSVP
  1385.  
  1386.  
  1387.          Despite its name, this operation can be used to switch between
  1388.          blockaded and non-blockaded state.
  1389.  
  1390.          The semantics of this operation is described for PC_DelState()
  1391.          in [Ext].
  1392.  
  1393.       4.1.13 Schedule-RSVP-Notification
  1394.  
  1395.          Operation Type = 12, sub-type = 1
  1396.  
  1397.          <Schedule-RSVP-Notification> ::=  <Common OOPS header>
  1398.                                            <RSVP MESSAGE TYPE>
  1399.                                            <SESSION>
  1400.                                            <FILTER_SPEC list>
  1401.                                            <RSVP_HOP>
  1402.  
  1403.          The operation results in the generation of an outgoing RSVP
  1404.          message (Path, Resv, etc.) in the client's RSVP.  RSVP should
  1405.          schedule the requested message to the specified RSVP_HOP.
  1406.  
  1407.       4.1.14 Client-Status-Notification
  1408.  
  1409.          Operation Type = 13, sub-type = 1
  1410.  
  1411.          <Client-Status-Notification> ::=  <Common OOPS header>
  1412.                                            <Query Sequence Number>
  1413.                                            <Status Result>
  1414.  
  1415.          The Client notifies the server about the status results
  1416.          computed at the client (that may also include results from
  1417.          other servers, if policy computation is spread among several
  1418.          servers).
  1419.  
  1420.          The overall status of an RSVP flow is computed by merging the
  1421.          client's status report with the server's. The server should not
  1422.          commit a transaction (e.g., charge an account) before knowing
  1423.          its final status. The Client-Status-Results operation can be
  1424.          sent with the query, if the client computed its status prior to
  1425.          making the query. It can also be sent later, after the server
  1426.          sent its response to the status query.
  1427.  
  1428.       4.1.15 Resend-Notification
  1429.  
  1430.          Operation Type = 14, sub-type = 1
  1431.  
  1432.          <Resend-Notification> ::= <Common OOPS header>
  1433.                                    <Counter (of missing messages)>
  1434.                                    <Message sequence number> list
  1435.  
  1436.  
  1437.  
  1438. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 24]
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444. Internet Draft       OOPS: Policy Protocol for RSVP
  1445.  
  1446.  
  1447.          Both client and server may issue a Resend-Messsage request when
  1448.          they detect missing or out-of-order messages.  The Resend-
  1449.          Notification has message sequence number 0.  The message
  1450.          explicitly lists the sequence numbers of all missing messages.
  1451.          Notice that since OOPS uses a reliable transmission protocol
  1452.          this list should never be long.  (See Section 3.2).
  1453.  
  1454.       4.1.16 Error-Notification
  1455.  
  1456.          Operation Type = 6, sub-type = 1
  1457.  
  1458.          <Error-Notification> ::=  <Common OOPS header>
  1459.                                    <Message Sequence Number>
  1460.                                    <Error-Description>
  1461.  
  1462.          Error-Notification can be used by either client or server to
  1463.          report errors associated with an entire message (as opposed to
  1464.          a specific operation). Error-Notification may be triggered by
  1465.          both syntax or substantive errors (e.g., failure to verify the
  1466.          integrity of a previous message).
  1467.  
  1468.          <Message Sequence Number> identified the message that triggered
  1469.          the error.
  1470.  
  1471.          Error-Notification is not acked.
  1472.  
  1473.    4.2 Fields format
  1474.  
  1475.       o    <Ver> <RSVP-K> <Flags>
  1476.  
  1477.            +---------------+---------------+---------------+---------------+
  1478.            |   Version     |  RSVP-K       |   Flags       |       0       |
  1479.            +---------------+---------------+---------------+---------------+
  1480.  
  1481.            Ver: Currently, version 1.
  1482.  
  1483.            RSVP-K: The K value used by RSVP as a refresh-period
  1484.            multiplier.
  1485.  
  1486.            Flags:
  1487.            0x01  OOPS_CONNECT_DefaultC     Client handles default policies.
  1488.  
  1489.       o    <Max-Pkt-Size><Keep-Alive period>
  1490.  
  1491.            +---------------+---------------+---------------+---------------+
  1492.            | Max-Pkt-Size (in KBytes)      | Keep-Alive period (in seconds)|
  1493.            +---------------+---------------+---------------+---------------+
  1494.  
  1495.  
  1496.  
  1497.  
  1498. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 25]
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504. Internet Draft       OOPS: Policy Protocol for RSVP
  1505.  
  1506.  
  1507.       o    <Class Indicator>
  1508.  
  1509.            +---------------+---------------+---------------+---------------+
  1510.            |            Length (total)     |         Class Code            |
  1511.            +---------------+---------------+---------------+---------------+
  1512.            |   ASCII String ........ 0 Padded to multiples of 32 bits      |
  1513.            +---------------+---------------+---------------+---------------+
  1514.  
  1515.       o    <Client-ID>
  1516.  
  1517.            Client address, uses the same format as RSVP's FILTER_SPEC
  1518.            objects.
  1519.  
  1520.            From the combination of Client-ID and Class-Indicator the
  1521.            server can learn about the set of policies it is required to
  1522.            support for this particular client.
  1523.  
  1524.       o    <Cookie>
  1525.  
  1526.            +---------------+---------------+---------------+---------------+
  1527.            |          Length (total)       |    Type       |       0       |
  1528.            +---------------+---------------+---------------+---------------+
  1529.            |   Octet String ........ 0 Padded to multiples of 32 bits      |
  1530.            +---------------+---------------+---------------+---------------+
  1531.  
  1532.            Currently, no values are defined.
  1533.  
  1534.       o    <Policy list>
  1535.  
  1536.            +---------------+---------------+---------------+---------------+
  1537.            |          Number (or pairs)    |              0                |
  1538.            +---------------+---------------+---------------+---------------+
  1539.            |          From Policy 1        |         To Policy 1           |
  1540.            +---------------+---------------+---------------+---------------+
  1541.            +---------------+---------------+---------------+---------------+
  1542.            |          From Policy n        |         To Policy n           |
  1543.            +---------------+---------------+---------------+---------------+
  1544.  
  1545.            Each "From Policy m" and "To Policy m" pair represent a range
  1546.            of policies that the server is willing to support.
  1547.  
  1548.       o    <Error-Description>
  1549.  
  1550.            +---------------+---------------+---------------+---------------+
  1551.            | Length (*)    | Error-Type    |        Reason Code            |
  1552.            +---------------+---------------+---------------+---------------+
  1553.            |   Error ASCII String .... 0 Padded to multiples of 32 bits    |
  1554.            +---------------+---------------+---------------+---------------+
  1555.  
  1556.  
  1557.  
  1558. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 26]
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564. Internet Draft       OOPS: Policy Protocol for RSVP
  1565.  
  1566.  
  1567.            (*) Length of the overall <Error-Description> in 4 bytes
  1568.            increments (i.e., length value of X should be interpreted as
  1569.            X*4 bytes description and an (X-1)*4 bytes Error ASCII
  1570.            String.
  1571.  
  1572.            No errors are reported by setting the length to 1 (4 bytes)
  1573.            and setting the Error-Type to 0.
  1574.  
  1575.            Detailed Error-Types and Reason-Codes would be defined in
  1576.            future versions of this document.
  1577.  
  1578.       o    <resv_handle>
  1579.  
  1580.            +---------------+---------------+---------------+---------------+
  1581.            |               IntServ or Client-Specific Semantics            |
  1582.            +---------------+---------------+---------------+---------------+
  1583.  
  1584.            The server may use the <resv_handle> to obtain IntServ and
  1585.            other low-level information about the reservation.
  1586.  
  1587.            The current version of this document does not define the
  1588.            semantics of this field. It may be a pointer into some router
  1589.            specific data structures (proprietary) or an index into mib
  1590.            records obtainable through SNMP.
  1591.  
  1592.       o    <Query Sequence Number> (and internally, <Message Sequence
  1593.            Number>)
  1594.  
  1595.            +---------------+---------------+---------------+---------------+
  1596.            |                <Message Sequence Number>                      |
  1597.            +---------------+---------------+---------------+---------------+
  1598.            | Obj. Seq. Num.|                      0                        |
  1599.            +---------------+---------------+---------------+---------------+
  1600.  
  1601.       o    <Counter>
  1602.  
  1603.            +---------------+---------------+---------------+---------------+
  1604.            |                           <Counter>                           |
  1605.            +---------------+---------------+---------------+---------------+
  1606.  
  1607.       o    <Status Result>
  1608.  
  1609.            +---------------+---------------+---------------+---------------+
  1610.            | Results       |                      0                        |
  1611.            +---------------+---------------+---------------+---------------+
  1612.  
  1613.            Results may have one of the following values:
  1614.  
  1615.  
  1616.  
  1617.  
  1618. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 27]
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624. Internet Draft       OOPS: Policy Protocol for RSVP
  1625.  
  1626.  
  1627.            1 :         Accept
  1628.            2 :         Snub
  1629.            3 :         Veto
  1630.  
  1631.  
  1632.       o    <Op-Type>
  1633.  
  1634.            +---------------+---------------+---------------+---------------+
  1635.            | Mod-Type      |                       0                       |
  1636.            +---------------+---------------+---------------+---------------+
  1637.  
  1638.            Op-Type values:
  1639.  
  1640.  
  1641.            1 :         Delete State
  1642.            2 :         Block State
  1643.            3 :         Unblock State
  1644.  
  1645.  
  1646. 5. Acknowledgment
  1647.  
  1648.  
  1649.    This document reflects feedback from many other RSVP collaborators.
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 28]
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684. Internet Draft       OOPS: Policy Protocol for RSVP
  1685.  
  1686.  
  1687. References
  1688.  
  1689. [Bak96]  F. Baker.  RSVP Cryptographic Authentication "Internet-Draft",
  1690.     draft-ietf-rsvp-md5-02.txt, 1996.
  1691.  
  1692. [RSVPSP]  R. Braden, L. Zhang, S. Berson, S. Herzog, and S. Jamin,
  1693.     Resource ReSerVation Protocol (RSVP) Version 1 Functional
  1694.     Specification.  "Internet-Draft", draft-ietf-RSVPSP-14.[ps,txt],
  1695.     Nov. 1996.
  1696.  
  1697. [Arch]  S. Herzog Accounting and Access Control Policies for Resource
  1698.     Reservation Protocols. "Internet-Draft", draft-ietf-rsvp-policy-
  1699.     arch-01.[ps,txt], Nov. 1996.
  1700.  
  1701. [LPM]  S. Herzog Local Policy Modules (LPM): Policy Enforcement for
  1702.     Resource Reservation Protocols. "Internet-Draft", draft-ietf-rsvp-
  1703.     policy-lpm-01.[ps,txt], Nov. 1996.
  1704.  
  1705. [Ext]  S. Herzog RSVP Extensions for Policy Control.  "Internet-Draft",
  1706.     draft-ietf-rsvp-policy-ext-02.[ps,txt], Apr. 1997.
  1707.  
  1708.  
  1709.  
  1710. Authors' Address
  1711.  
  1712.  
  1713. Shai Herzog              Phone: (914) 784-6059
  1714.                          Email: herzog@watson.ibm.com
  1715. Dimitrios Pendarakis     Phone: (914) 784-7536
  1716.                          Email: dimitris@watson.ibm.com
  1717. Raju Rajan               Phone: (914) 784-7260
  1718.                          Email: raju@watson.ibm.com
  1719. Roch Guerin              Phone: (914) 784-7038
  1720.                          Email: guerin@watson.ibm.com
  1721.  
  1722.  
  1723. IBM T. J. Watson Research Center
  1724. P.O. Box 704
  1725. Yorktown Heights, NY 10598
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 29]
  1739.  
  1740.  
  1741.