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-01.txt < prev    next >
Text File  |  1997-08-04  |  75KB  |  2,173 lines

  1.  
  2.  
  3. Internet Draft                                               Shai Herzog
  4. Expiration: Oct. 1997                                          IPHighway
  5. File: draft-ietf-rsvp-policy-oops-01.txt
  6.                                                     Dimitrios Pendarakis
  7.                                                               Raju Rajan
  8.                                                              Roch Guerin
  9.                                          IBM T.J. Watson Research Center
  10.  
  11.  
  12.  
  13.             Open Outsourcing Policy Service (OOPS) for RSVP
  14.  
  15.  
  16.  
  17.                                 07/30/97
  18.  
  19. Status of Memo
  20.  
  21.    This document is an Internet-Draft.  Internet-Drafts are working
  22.    documents of the Internet Engineering Task Force (IETF), its areas,
  23.    and its working groups.  Note that other groups may also distribute
  24.    working documents as Internet-Drafts.
  25.  
  26.    Internet-Drafts are draft documents valid for a maximum of six months
  27.    and may be updated, replaced, or obsoleted by other documents at any
  28.    time.  It is inappropriate to use Internet-Drafts as reference
  29.    material or to cite them other than as "work in progress."
  30.  
  31.    To learn the current status of any Internet-Draft, please check the
  32.    "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
  33.    Directories on ds.internic.net (US East Coast), nic.nordu.net
  34.    (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
  35.    Rim).
  36.  
  37. Abstract
  38.  
  39.    This document describes a protocol for exchanging policy information
  40.    and decisions between an RSVP-capable router (client) and a policy
  41.    server. The OOPS protocol supports a wide range of router
  42.    configurations and RSVP implementations, and is compatible with the
  43.    RSVP Extensions for Policy Control [Ext].
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 1]
  56.  
  57.  
  58. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  59.  
  60.  
  61. 1. Overview Reservation protocols function by discriminating between
  62.    users by providing some users with better service at the expense of
  63.    others.  The utility of reservation protocols is sharply degraded in
  64.    the absence of mechanisms for restricting access to higher service
  65.    categories and enforcing network and bandwidth usage criteria. In
  66.    this document, we refer to such mechanisms as "policy control". This
  67.    term is quite broad; it ranges from simple access control to
  68.    sophisticated accounting and debiting mechanisms.
  69.  
  70.    The policy control component may reside fully within the router (as
  71.    an add-on module to RSVP). However, it is often advantageous for
  72.    routers to outsource some of their policy decision making to external
  73.    entities.  Open Outsourcing Policy Service (OOPS) is a protocol for
  74.    exchanging policy information and decisions between Local Policy
  75.    Modules (LPMs) located within RSVP-capable routers and one or more
  76.    external policy servers. OOPS is an open protocol in a sense that it
  77.    does not define or depend on particular policies; instead, it
  78.    provides a framework for adding, modifying and experimenting with new
  79.    policies in a modular, plug-n-play fashion. Moreover, the OOPS
  80.    protocol supports both partial and complete delegation of policy
  81.    control.
  82.  
  83.    The OOPS protocol was designed to be compatible with the RSVP
  84.    Extensions for Policy Control [Ext], both in the format of RSVP
  85.    objects, as well as the set of supported services.
  86.  
  87.    The basic features of OOPS are as follows:
  88.  
  89.  
  90.  
  91.    Asymmetry between client and server
  92.  
  93.         Adding policy support to RSVP may require substantial
  94.         modifications to platforms (e.g., routers) which may not have
  95.         the required implementation flexibility and/or processing power.
  96.         OOPS assumes that the server is more sophisticated than the
  97.         client, in terms of processing power and support for diverse
  98.         policies.
  99.  
  100.  
  101.    Support for a wide range of client implementation
  102.  
  103.         The OOPS protocol supports a wide range of client
  104.         implementations.  At one end of the spectrum, a "dumb" client
  105.         may delegate total responsibility to the server for all policy
  106.         decisions without even maintaining cached states.  At the other
  107.         end, smart clients can perform most policy processing locally
  108.         and only address the server for a small number of sub-policy
  109.  
  110.  
  111.  
  112. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 2]
  113.  
  114.  
  115. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  116.  
  117.  
  118.         elements and only when things change (otherwise, cache can be
  119.         used).
  120.  
  121.  
  122.    Support for different policy interfaces
  123.  
  124.         The OOPS protocol allows clients and servers to negotiate the
  125.         nature and sophistication of their interaction. For instance,
  126.         responses from the server to the client may be restricted to
  127.         allow the server to merely accept, deny or remain neutral on
  128.         reservation requests, while a more sophisticated implementation
  129.         may allow the server to respond with preemption priorities or
  130.         other characteristics of the reservation. The negotiation
  131.         handshake is simple, and may always fall back onto the lowest
  132.         level of interaction that must always be supported.
  133.  
  134.  
  135.    Minimal knowledge of RSVP's processing rules.
  136.  
  137.         The server must be aware of the format of several RSVP objects
  138.         and basic RSVP message types. However, it is not required to
  139.         understand RSVP's processing rules (e.g., different reservation
  140.         styles).  Moreover, OOPS functionality is not tied to that of
  141.         RSVP, and OOPS may be extended to be used by other, non-RSVP,
  142.         connection setup protocols.
  143.  
  144.  
  145.    Asynchronicity
  146.  
  147.         Both client and server may asynchronously generate queries or
  148.         requests.
  149.  
  150.  
  151.    TCP for reliable communications
  152.  
  153.         TCP is used as a reliable communication protocol between client
  154.         and server.
  155.  
  156.  
  157.  
  158.    1.1 Glossary
  159.  
  160.  
  161.       Policy
  162.  
  163.            Comprehensive set of rules for controlling some aspects of
  164.            the network.
  165.  
  166.  
  167.  
  168.  
  169. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 3]
  170.  
  171.  
  172. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  173.  
  174.  
  175.       Sub-policies
  176.  
  177.            Modular building blocks out of which comprehensive policies
  178.            are compiled.
  179.  
  180.  
  181.       POLICY_DESC
  182.  
  183.            Data representation of policy information (e.g., POLICY_DATA
  184.            objects in RSVP).
  185.  
  186.  
  187.       Sub-policy element
  188.  
  189.            Data representation of sub-policy information, as
  190.            encapsulated in POLICY_DESC objects.
  191.  
  192.  
  193.  
  194.    1.2 Representative OOPS Scenarios
  195.  
  196.       Figure 1 depicts some representative scenarios for policy control
  197.       along an RSVP path, as envisioned in OOPS.  Nodes A, B and C
  198.       belong to one administrative domain AD-1 (advised by policy server
  199.       PS-1), while D and E belong to AD-2 and AD-3, respectively.
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 4]
  227.  
  228.  
  229. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  230.  
  231.  
  232.                              AD-1                AD-2       AD-3
  233.                _______________/\___________     __/\__     __/\__
  234.               {                            }   {      }   {      }
  235.  
  236.               +------+   +------+   +------+   +------+   +------+
  237.       +----+  |  A   |   |  B   |   |  C   |   |  D   |   |  E   |  +----+
  238.       | S1 |--| RSVP |---| RSVP |---| RSVP |---| RSVP |---| RSVP |--| R1 |
  239.       +----+  +------+   +------+   +------+   +------+   +------+  +----+
  240.               | LPM  |              | LPM  |   | LPM  |   | LPM  |
  241.               +------+              +------+   +------+   +------+
  242.                     \                /                       |
  243.                      \              /                     +------+
  244.                       \            /                      |Policy|
  245.                        \          /                       |Server|
  246.                         \        /                        | PS-2 |
  247.                          \      /                         +------+
  248.                          +------+
  249.                          |Policy|
  250.                          |Server|
  251.                          | PS-1 |
  252.                          +------+
  253.  
  254.                Figure 1: Policy Control along an RSVP path
  255.  
  256.  
  257.       Policy objects are carried in RSVP messages along the path
  258.       consisting of four typical node types:
  259.  
  260.       (1) Policy incapable nodes: Node B. (2) Self-sufficient policy
  261.       node: Node D does not need to outsource policy tasks to external
  262.       servers since its LPM satisfies its entire policy needs.  (3)
  263.       "Dumb" policy nodes: Node E is an unsophisticated node that lacks
  264.       processing power, code support or caching capabilities, and needs
  265.       to rely on PS-2 for every policy processing operation.  In this
  266.       case, the volume of traffic and delay requirements make it
  267.       imperative to connect Node E to PS-2 a direct link or a LAN.  (4)
  268.       "Smart" policy nodes:  Nodes A and C include sophisticated LPMs,
  269.       in that these nodes can process some sub-policy elements, and have
  270.       the capacity to cache responses from PS-1.  In this case, the
  271.       contact between the clients and server would be limited to
  272.       occasional updates, and PS-1 could be located somewhere in AD-1.
  273.  
  274.       Consider the case where the receiver R1 sends a Resv message
  275.       upstream toward sender S1.  Assuming that the reservation is
  276.       successful, the conceptual flow of policy objects is:
  277.  
  278.       R1 -- E -- ELPM -- PS-2 -- ELPM -- E -- D -- DLPM -- D -- C -- CLPM
  279.       -- PS-1 -- CLPM -- C -- B -- A -- ALPM -- PS-1 -- ALPM -- A -- S1.
  280.  
  281.  
  282.  
  283. Shai Herzog et al.       Expiration: Oct. 1997                  [Page 5]
  284.  
  285.  
  286. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  287.  
  288.  
  289.       Of course, other OOPS messages may be exchanged between policy
  290.       servers and nodes before authorizing the reservation at individual
  291.       nodes.
  292.  
  293.       The functioning of the policy module at a policy aware router is
  294.       presented through the following conceptual diagram.
  295.  
  296.                      +---------+         +----------+
  297.                      |  RSVP   |         |  Policy  |
  298.                      |  Module |         |  Server  |
  299.                      +---------+  OOPS   |          |
  300.                      |  LPM    |---------|          |
  301.                      +- - - - -+         +----------+
  302.                      |PSM| |PSM|         |PSM|  |PSM|
  303.                      |___| |___|         |___|  |___|
  304.  
  305.            Figure 2: Local Policy Modules and Policy Server communications
  306.  
  307.       The policy server and the local policy module provide support for
  308.       a number of sub-policy elements, each embodied by a policy sub-
  309.       module (PSM).  The policy object forwarded by RSVP may contain a
  310.       number of elements, each identified by a number, and hence
  311.       destined to the sub-module that enforces that sub-policy element's
  312.       number. For instance, some of these sub-objects may deal with
  313.       authentication, others with security, accounting and so on.  The
  314.       LPM is aware of the sub-modules it is capable of processing
  315.       locally; After the handshake comes to know the set of sub-policies
  316.       that are supported by the server. Processing of policy sub-objects
  317.       can be split between the LPM and the policy server, and responses
  318.       may be merged back before returning a unified response to RSVP.
  319.  
  320. 2. OOPS Protocol: Basic Features
  321.  
  322.    OOPS is a transaction protocol, in which most communication is in the
  323.    form of queries from the client followed by responses from the
  324.    server.  However, a small portion of the communication may also
  325.    consist of queries originating from the server, or of unidirectional
  326.    notifications from one entity to another.  In this context, it is
  327.    important that messages be distinguished by a unique association, so
  328.    that responses may identify the query to which they correspond.
  329.  
  330.    This section discusses four fundamental concepts of the OOPS
  331.    protocol:  (a) query/response mechanism, (b) flexible division of
  332.    labor between client and server, and (c) consistent management of
  333.    client, server and RSVP state.
  334.  
  335.    2.1 Query/Response mechanism
  336.  
  337.       Each OOPS message is uniquely identified by a sequence number;
  338.       Both client and server begin communication with Mseq = 0 (the
  339.       handshake message), and number consecutive messages in increasing
  340.       order. These sequence numbers do not imply the order of execution;
  341.       while the server receives messages in-order, it is free to execute
  342.       them in any reasonable order.
  343.  
  344. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 6]
  345.  
  346.  
  347. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  348.  
  349.  
  350.       These sequence numbers are mainly used by the Error-Notification
  351.       operation as a means to identify the message that is associated
  352.       with the reported error. [Note 2]
  353.  
  354.       2.1.1 Associating Queries and Responses
  355.  
  356.          Queries and responses carry a Q_ASSOC object which relates
  357.          newly received responses to their original query operations.
  358.          The contents of this object is client-specific and therefore
  359.          opaque to the server; it is set by the client for each query
  360.          and is echoed back as-is by the server. The client must store
  361.          enough information in the Q_ASSOC object to enable its own
  362.          unique identification of the original query.
  363.  
  364.    2.2 Division of Labor between Client and Server
  365.  
  366.       The OOPS protocol allows for a flexible division of
  367.       responsibilities between server and client. First, the client must
  368.       be able to decide how to distribute the processing and second, it
  369.       must be able to merge the distributed responses into one unified
  370.       result.
  371.  
  372.       2.2.1 Distributed Processing
  373.  
  374.          Processing of sub-policies (sub-policy elements within
  375.          POLICY_DESC objects) can be performed by the server, the
  376.          client, or by both.  The decision on which sub-policies are to
  377.          be handled locally and which are to be sent to the server is
  378.          always made by the client based on information exchanged during
  379.          the connection establishment handshake (see Section 3.1).
  380.  
  381.          The client may remove sub-policy elements which are not to be
  382.          processed by the server. In this case, the client is solely
  383.          responsible for checking the integrity of the incoming policy
  384.          object; [Note 3]
  385. _________________________
  386. [Note 1] Execution order is implementation and policy specific; any
  387. order that does not violate the policy specific requirements is assumed
  388. to be reasonable.
  389.  
  390. [Note 2] Senders must be informed about the receiver's failure to
  391. process their messages. This is especially critical given that OOPS
  392. relies on TCP's reliability and lacks additional reliability mechanisms.
  393.  
  394. [Note 3] If any portion of the POLICY_DESC object is modified, the
  395. digest integrity verification at the server is bound to fail.
  396.  
  397.  
  398.  
  399.  
  400.  
  401. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 7]
  402.  
  403.  
  404. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  405.  
  406.  
  407.          the client must also set the OP-Code header flag to inform the
  408.          server to that fact.
  409.  
  410.          During connection establishment, the server may request to have
  411.          oversight over the clients local decisions; in this case, the
  412.          client should forward incoming policy objects in their
  413.          entirety, and consult the server for all RSVP flows, regardless
  414.          of whether they include POLICY_DATA objects. This oversight is
  415.          transparent to the client and is therefore post factum. [Note
  416.          4]
  417.  
  418.  
  419.          OOPS does not impose limitations on the number of servers
  420.          connected to the client; when appropriate, the client could
  421.          divide the work along policy lines between several servers, and
  422.          be responsible for combining their results. In the rest of this
  423.          document we describe the protocol for a single server-client
  424.          pair.
  425.  
  426.       2.2.2 Unification of Distributed Responses
  427.  
  428.          Division of labor between client and server is only possible to
  429.          the extent that the client has the capability to unify or merge
  430.          results; the client must be able to merge the results of
  431.          queries arriving from servers with its own local results, to
  432.          produce a single unified response to the underlying protocol
  433.          (e.g., RSVP).
  434.  
  435.          Results unification is straight-forward for outgoing
  436.          POLICY_DESC object; since sub-policy elements are independent,
  437.          their unification is performed by concatenating all local and
  438.          server elements and packing them in POLICY_DESC objects. [Note
  439.          5]
  440.  
  441.  
  442.          Unification is more complex for status queries, since the
  443.          various responses must truly be merged to produce a single
  444.          status result.  OOPS defines one basic (default) status
  445.          response interface (object and unification rules).
  446. _________________________
  447. [Note 4] The client should not wait for an oversight decision; if the
  448. server overrides a local decision, it may notify the client sometime
  449. later, even after the local client authorized the RSVP operation.
  450.  
  451. [Note 5] An oversight sub-policy element would override the locally
  452. generated element, if the two are of the same type.
  453.  
  454.  
  455.  
  456.  
  457.  
  458. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 8]
  459.  
  460.  
  461. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  462.  
  463.  
  464.          However, given that OOPS is an extensible framework, it allows
  465.          the the client and server to negotiate a more sophisticated
  466.          interface (see Section 3.1).  Additional response interfaces
  467.          could be described in separate documents which should define
  468.          the response object format and unification rules. [Note 6]
  469.  
  470.  
  471.       2.2.3 Default Status Response
  472.  
  473.          The default status response object is of the C-Type 1.  C-Type
  474.          1 objects may contain two values: a policy admission decision
  475.          (PAD) and a preemption priority value (PP).  It is reasonable
  476.          to assume that some clients would not be able to utilize the
  477.          flow preemption priority information; such clients are free to
  478.          ignore this value and assume that all flows are created equal.
  479.          (have priority 0).
  480.  
  481.          PADs may have one of three values: ACCEPT, SNUB, and VETO.
  482.          ACCEPT authorizes the query, SNUB signifies neutrality (neither
  483.          accept nor reject).  A VETO from the server or LPM has a
  484.          stronger semantics than a snub, since it has the power to
  485.          forcefully reject a flow regardless of any accept decisions
  486.          made by the other.
  487.  
  488.          The rules for unification of PAD values A and B are straight-
  489.          forward:
  490.  
  491.                    +----------------------+---------------------+
  492.                    |  A+B                 | IF...               |
  493.                    +----------------------+---------------------+
  494.                    |  SNUB                | A=SNUB and B=SNUB   |
  495.                    |  VETO                | A=VETO or  B=VETO   |
  496.                    |  ACCEPT (+PP value)  | Otherwise           |
  497.                    +----------------------+---------------------+
  498.  
  499.          A unified result of ACCEPT provides approval for the status
  500.          query; both SNUB and VETO signal the rejection of the query.
  501.  
  502.          Note that a client and/or server should complete their policy
  503.          processing even if a veto was cast by some policy. [Note 7]
  504. _________________________
  505. [Note 6] A separate template document and a list of more sophisticated
  506. responses should be prepared.
  507.  
  508. [Note 7] A wide range of sub-policies may not care about the final
  509. status results and should be activated regardless.  For instance: a
  510. policy that logs all policy queries.
  511.  
  512.  
  513.  
  514.  
  515. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 9]
  516.  
  517.  
  518. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  519.  
  520.  
  521.          An ACCEPT response is accompanied by a PP value between 0..255.
  522.          Lower values describe higher priorities (priority 1 is the
  523.          highest).  The value 0 is reserved for "N/A"; this value is
  524.          used when preemption priority is not applicable.
  525.  
  526.          The unification of PP values A and B attempts to provide the
  527.          highest priority (lowest value) which is supported by an ACCEPT
  528.          decision. The value 0 has no effect on the unified priority:
  529.  
  530.                    +----------------------+---------------------+
  531.                    |  A+B                 | IF...               |
  532.                    +----------------------+---------------------+
  533.                    |  MIN(A,B)            | A!=0 and B!=0       |
  534.                    |  A                   | B=0                 |
  535.                    |  B                   | A=0                 |
  536.                    |  0 (n/a)             | A=0  and B=0        |
  537.                    +----------------------+---------------------+
  538.  
  539.    2.3 State Management
  540.  
  541.       In order for policy objects contained in RSVP messages to be
  542.       processed quickly and correctly, it is often required that the
  543.       results of past policy decisions be cached and maintained at the
  544.       LPM or the policy server. During normal operations, the state
  545.       maintained in the client and in the server must remain consistent,
  546.       and must timeout at roughly the identical times in RSVP, the
  547.       client, and the server.
  548.  
  549.       The most straightforward method for state maintenance is for the
  550.       LPM and the policy server to use the same soft-state mechanism as
  551.       the RSVP capable router. Unfortunately, this soft-state approach
  552.       has undesirable scaling properties since it requires the client to
  553.       contact the server on each refresh period (regardless of state
  554.       changes).
  555.  
  556.       An alternative approach is to allow both client and server to use
  557.       hard-state mechanisms that could limit the client-server
  558.       communication to state updates only. To support the hard-state
  559.       mode, the client must be able to distinguish between repeats
  560.       (refreshes) and updates; it must also be able to translate the
  561.       soft-state that is provided by RSVP into the hard-state exchanged
  562.       with the server.
  563.  
  564.       Thus, we envision one end of the spectrum where a "dumb" client
  565.       would use a soft-state approach and simply pass all policy objects
  566.       to the server relying on it for all policy processing.  The rate
  567.       of queries and lack of caching at the client implies the need for
  568.       a dedicated, close-by server (PS-2, in our example). As we move
  569.  
  570.  
  571.  
  572. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 10]
  573.  
  574.  
  575. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  576.  
  577.  
  578.       towards the other extreme, clients become smarter, split the work
  579.       between themselves and the server, utilize caching capabilities.
  580.       Such clients could take advantage of the benefits of hard-state
  581.       management, and initiate queries only on actual state updates.
  582.  
  583.       OOPS supports soft and hard state mechanisms seamlessly, as
  584.       described in this section. The client determines its desired type
  585.       of state management, and communicates it on an object-by-object
  586.       basis.  A single client can use soft-state for some information,
  587.       and hard state for others.  Furthermore, the OOPS protocol allows
  588.       clients to modify their caching strategies on the fly (without
  589.       having to renegotiate with the server).  While the protocol does
  590.       not impose strategy limitations, a client implementation could
  591.       restrict itself to a more modest and simple combination of soft
  592.       and hard state.
  593.  
  594.       There are two types of state information that is stored at the
  595.       client:  (a) client state information that was forwarded to the
  596.       server (e.g., policy objects in incoming Path/Resv messages).  (b)
  597.       server state which is cached at the client (e.g., policy results
  598.       computed by the server). The OOPS protocol addresses each of these
  599.       types of states separately:
  600.  
  601.       2.3.1 Client State Information Cached at the Server
  602.  
  603.          The client indicates its choice of state management approach by
  604.          setting (or resetting) the OOPS_HardState flag in objects sent
  605.          to the server.  When the client chooses soft-state management,
  606.          policy state for that specific object ages and expires at the
  607.          server according to the specified timeout (refresh-period * K).
  608.          Therefore, the state cached at the server is kept alive by
  609.          constant refreshing (the client must forward ALL incoming RSVP
  610.          messages, whether or not they represent refreshes or updates).
  611.          On the other hand, when indicating a choice of hard-state
  612.          management, the client assumes responsibility for reliably
  613.          informing the server on every policy update.  In this case, the
  614.          state cached at the server would not expire unless explicitly
  615.          modified by the client, or when the communication channel to
  616.          the client breaks. [Note 8]
  617.           The client may refrain from forwarding to the server any
  618.          repeat policy objects (which represent no updated information).
  619.  
  620.          The client may switch between hard and soft states on the fly
  621. _________________________
  622. [Note 8] Clearly the channel breaks when either the client or server
  623. become disfunctional or die.
  624.  
  625.  
  626.  
  627.  
  628.  
  629. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 11]
  630.  
  631.  
  632. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  633.  
  634.  
  635.          by modifying the OOPS_HardState flag while forwarding input to
  636.          the server.
  637.  
  638.       2.3.2 Server State Information Cached at the Client
  639.  
  640.          The client indicate its state management capabilities by
  641.          setting (or resetting) the OOPS_HardState flag in queries sent
  642.          to the server. A choice of soft-state indicates that the client
  643.          is incapable of caching, and it purges the server responses
  644.          after usage (one-time, or disposable results). Clearly, without
  645.          caching, the client must issue a new query each time that
  646.          responses are needed.
  647.  
  648.          When the server responds to a cached (hard-state) query, it
  649.          assumes responsibility to reliably inform the client about any
  650.          changes that may occur later with the original response to this
  651.          query.  The client may rely on cached results as long as there
  652.          is no change in RSVP's state (which includes incoming policy
  653.          objects), [Note 9]
  654.           and the communication channel with the server is intact.
  655.  
  656.          The client may switch between hard and soft states on the fly
  657.          by issuing a new query with a modified flag.
  658.  
  659.       2.3.3 State Change Notification
  660.  
  661.          State change notification is done by resending the same type as
  662.          the original message but with the modified state instead.
  663.  
  664.          Client notification example (incoming POLICY_DESC objects for
  665.          Resv-X):
  666.  
  667. _________________________
  668. [Note 9] A configurable option may allow the client to use cached
  669. results even when some RSVP state changes.  There is a clear trade-off
  670. here between fast and accurate policy processing, however, given that
  671. the server is up, and that authorization was already granted previously
  672. for that RSVP flow, some may find it a reasonable policy approach.
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 12]
  686.  
  687.  
  688. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  689.  
  690.  
  691.                                   TYPE           DATA
  692.                                   ----           ----
  693.          CLIENT ==> SERVER:       NOTIFY:INPUT   RESV-X: PD-1
  694.  
  695.          Time passes; the input POLICY_DESC object associated with
  696.          Resv-X changed to PD-2.
  697.  
  698.          CLIENT ==> SERVER:       NOTIFY:INPUT   RESV-X: PD-2
  699.  
  700.  
  701.          Server notification example (status query for reservation
  702.          Resv-X):
  703.  
  704.  
  705.                                   TYPE            DATA
  706.                                   ----            ----
  707.          CLIENT ==> SERVER:       QUERY:STATUS   Q_ASSOC=ID1, RESV-X
  708.          SERVER ==> CLIENT:       RESP :STATUS   Q_ASSOC=ID1, ACCEPT
  709.  
  710.          Time passes; the status of Resv-X changed to "reject".
  711.  
  712.          SERVER ==> CLIENT:       RESP :STATUS   Q_ASSOC=ID1, REJECT
  713.  
  714.  
  715.       2.3.4 State Re-synchronization
  716.  
  717.          Both client and server may re-synchronize their respective
  718.          states at any time during the connection. The reset initiator
  719.          sends a Bye-Notification with a RESET code, and the receiver
  720.          responds with a Bye-Notification with the same code.  After
  721.          this exchange, all cached state becomes soft, and a new logical
  722.          connection is reestablished (beginning with Connection-
  723.          Initiation-Query,...). New/hard state gradually replaces
  724.          old/soft state as described in Section 2.3.4.
  725.  
  726.    2.4 Error Handling
  727.  
  728.       We distinguish between two types of possible errors; policy errors
  729.       and protocol errors.
  730.  
  731.       2.4.1 Protocol Errors
  732.  
  733.          Protocol errors (e.g., missing or bad parameters) do not reveal
  734.          either positive or negative policy decisions and are therefore
  735.          neutral (represented as SNUBs). [Note 10]
  736. _________________________
  737. [Note 10] This neutrality allows, when appropriate, other valid sub-
  738. policy elements to support an accept decision.
  739.  
  740.  
  741.  
  742. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 13]
  743.  
  744.  
  745. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  746.  
  747.  
  748.  
  749.  
  750.          It is recommended (although not required) that all local status
  751.          processing at the client be completed before querying the
  752.          server.  This allows the server to immediately commit the
  753.          transaction rather than having to wait until the client is
  754.          done.  (See the Client-Status-Notification Op-Code.)
  755.  
  756.          Some OOPS protocol errors may only affect the OOPS protocol
  757.          processing or simply be logged. Other errors may escalate to
  758.          become policy errors (e.g., a bad POLICY_DESC is reported as a
  759.          policy error).
  760.  
  761.       2.4.2 Policy Errors
  762.  
  763.          Policy errors are reported in a sub-policy element specific
  764.          format. These elements are encapsulated in POLICY_DESC objects
  765.          and are forwarded toward the originator (cause) of the error.
  766.          In most cases, a negative Status-Response initiates an
  767.          automatic error response (e.g., RSVP ResvErr or PathErr),
  768.          however, OOPS allows reporting of other error situations by
  769.          scheduling an explicit error message (using the Protocol-
  770.          Message-Notification op-code).  (See [Ext] for more about the
  771.          rules governing error reporting).
  772.  
  773.          Consider a scenario where two receivers R1 and R2 listen to a
  774.          multicast transmission from S1. A reservation sent by R1 is
  775.          propagated upstream until it reaches node A, where it
  776.          encounters a policy rejection.
  777.  
  778.  
  779.            R1------------+
  780.                                             B--------------A----------- S1
  781.                           / \             |
  782.            R2------------+   \            |
  783.                               \           |
  784.                               PS1        PS2
  785.  
  786.                    Figure 3: An Error Reporting Scenario
  787.  
  788.  
  789.          The following table describes a subset of the relevant
  790.          signaling which begins with reservation initiation by R1 and R2
  791.          and ends by R1 receiving the appropriate error response.
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 14]
  800.  
  801.  
  802. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  803.  
  804.  
  805.  
  806. From/To   Message                                    Comments
  807. ________________________________________________________________________________
  808. R1->B     Resv [PD1]
  809. R2->B     Resv [PD2]
  810. B->PS1    OOPS-Incoming-Policy-Query[PD1,PD2]        ;B queries PS1
  811.           OOPS-Status-Query?
  812.           OOPS-Outgoing-Policy-Query? [Resv]
  813. PS1->B    OOPS-Status-Response: ACCEPT
  814.           OOPS-Outgoing-Policy-Response[PD3]
  815. B->A      Resv [PD3]                                 ;B forwards the Resv to A
  816. A->PS2    OOPS-Incoming-Policy-Query[PD3]            ;A queries PS2
  817.           OOPS-Status-Query?
  818. PS2->A    OOPS-Status-Response: SNUB (reject)        ;PS2 reject the reservation
  819. A->PS2    OOPS-Outgoing-Policy-Query? [ResvErr]      ;PS2 provides error PD
  820. PS2->A    OOPS-Outgoing-Policy-Response [PD1-E]
  821. A->B      ResvErr [PD1-E]                            ;A sends back ResvErr to B
  822. B->PS1    OOPS-Incoming-Policy-Query[PD1-E]
  823.           OOPS-Outgoing-Policy-Query? [ResvErr]      ;PS1 builds error PD
  824. PS1->B    OOPS-Outgoing-Policy-Response[PD1-E'],R1   ; (directed to R1 only)
  825. B->R1     ResvErr [PD1-E']                           ;B sends back ResvErr to R1
  826. ________________________________________________________________________________
  827.  
  828.           Figure 4: Error Reporting Signaling
  829.  
  830.  
  831.          All error information is carried in POLICY_DESC objects (as
  832.          sub-policy elements). OOPS server may read and modify this
  833.          information along the ResvErr path; it may also direct the
  834.          error responses only to the relevant branches of the reserved
  835.          tree (in this scenario, the error is associated with R1 but not
  836.          with R2).
  837.  
  838.  
  839. 3. Client-Server Connection
  840.  
  841.    The following section describes the fundamentals of client-server
  842.    connection: establishment, channel, and termination.
  843.  
  844.    3.1 Connection Establishment
  845.  
  846.       OOPS uses a well known port number (OOPS = 3288) for incoming
  847.       connection requests. Usually, the client would attempt to
  848.       establish a TCP connection to its preferred policy server,
  849.       however, both client and server listen to the OOPS port. [Note 11]
  850.  
  851. _________________________
  852. [Note 11] New (or recovering) policy servers are allowed to notify
  853. clients on their existence by issuing a TCP connection request to the
  854. client's OOPS port number.
  855.  
  856.  
  857. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 15]
  858.  
  859.  
  860. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  861.  
  862.  
  863.       Regardless of who initiated the TCP connection, once the
  864.       connection is in place, the OOPS logical connection establishment
  865.       is always initiated by the client and is performed through a two
  866.       way handshake.
  867.  
  868.       o    Communication Initiation by the Client
  869.  
  870.            The client sends a Connection-Initiation-Query to the server.
  871.            This message identifies the client to the server and provides
  872.            the basic characteristics of the client as well as a list of
  873.            policy responses that are acceptable to the client. This list
  874.            is in decreasing order of acceptability, and terminates with
  875.            the default element.
  876.  
  877.  
  878.       o    Response by the Server
  879.  
  880.            The server responds with a Connection-Accept-Response to
  881.            connect to the client. It may also respond with a
  882.            Connection-Reject-Response to refuse and disconnect from the
  883.            client.
  884.  
  885.            After connection establishment both the client and server
  886.            know the set of sub-policies that the client can send to the
  887.            server, which one of them should handle default
  888.            (unrecognized) sub-policies, as well as the format of status
  889.            responses from server to client.  They also establish the
  890.            Channel-Hold period which is determined as the minimum
  891.            between the two values declared in the handshake messages,
  892.            but must be at least 3 seconds.
  893.  
  894.       3.1.1 Reliable Communication
  895.  
  896.          We expect TCP to provide us with reliable, in-order delivery of
  897.          packets.  Given that TCP is responsible for all the time
  898.          critical network operations, reliability errors are assumed to
  899.          be virtually nonexistent.
  900.  
  901.       3.1.2 Secure Communications
  902.  
  903.          OOPS relies on standard protocols for security of client-server
  904.          communications. An emerging standard protocol IPSEC [IPSEC] is
  905.          the mechanism of choice for ensuring either integrity or
  906.          secrecy.  The use of IPSEC and/or other security protocols is
  907.          transparent to OOPS.
  908.  
  909.    3.2 Connection Termination
  910.  
  911.       This section describes the handling of communication breakdown.
  912.  
  913.  
  914. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 16]
  915.  
  916.  
  917. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  918.  
  919.  
  920.       3.2.1 Implicit Termination
  921.  
  922.          The communication channel may be unexpectedly disconnected
  923.          because of a misbehaving client or server, network split, or
  924.          for other reasons.  Both client and server must be able to
  925.          detect such channel failures and act accordingly.  Consider the
  926.          case where OOPS is used for quota enforcement.  The server may
  927.          approve a reservation while debiting X/min from a local
  928.          account. If the OOPS communication channel breaks, it is
  929.          critical for the server to detect the break and stop debiting
  930.          this account.
  931.  
  932.          The OOPS protocol relies on Keep-Alive messages to provide
  933.          application-level communication-channel verification. [Note 12]
  934.  
  935.          Implicitly, the communications channel is assumed to be
  936.          disconnected after it has been idle (no message was received on
  937.          it) for more than a Channel-Hold period (see Section 3.1).
  938.          Keep-Alive messages are sent by both client and server as
  939.          needed [Note 13]
  940.           to ensure the liveness of the connection (to prevent a
  941.          Channel-Hold timeout). Keep-Alive messages are not
  942.          acknowledged.
  943.  
  944.       3.2.2 Explicit Termination
  945.  
  946.          The client (or server) may terminate the connection by sending
  947.          a Bye-Notification, and wait until either it receives an echoed
  948.          Bye-Notification or the Channel-Hold period had passed. In
  949.          between, it should ignore incoming messages (and not reset the
  950.          Channel-Hold timer).
  951.  
  952.          At the opposite side, when a client (or server) receive a Bye-
  953.          Notification message, it should echo it, and close the
  954.          connection.
  955.  
  956.  
  957.  
  958. _________________________
  959. [Note 12] OOPS implementations may utilize system dependent mechanisms
  960. for detecting broken TCP connections, but does not rely on them. This is
  961. especially important since a server may be in a dysfunctional state
  962. while its TCP connection is still open and viable.
  963.  
  964. [Note 13] When the intermediate period in between two OOPS messages
  965. approaches the Channel-Hold time.
  966.  
  967.  
  968.  
  969.  
  970.  
  971. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 17]
  972.  
  973.  
  974. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  975.  
  976.  
  977.       3.2.3 Post Termination
  978.  
  979.          Soft-state has an inherent cleanup mechanism; when the channel
  980.          disconnects, the soft-state begins to age until it eventually
  981.          expires (using the same mechanism and refresh-period * K used
  982.          by RSVP).
  983.  
  984.          In contrast, hard-state is assumed to be valid unless
  985.          explicitly modified. However, when the channel disconnects such
  986.          an explicit notification is not possible.  Clearly, purging all
  987.          state immediately upon disconnection is not an acceptable
  988.          approach since should cause disruption of service and would not
  989.          allow enough time to contact an alternate server.  OOPS uses
  990.          the following simple rule:
  991.  
  992.          When the communication channel disconnects, all hard state
  993.          associated with it is assumed to be soft-state that had been
  994.          refreshed recently.
  995.  
  996.       3.2.4 Switching to An Alternative Server
  997.  
  998.          We assume that as part of their local configuration, clients
  999.          obtain a list of policy servers and site specific selection
  1000.          criteria. This list can be the basis for server switching
  1001.          decisions.
  1002.  
  1003.          A switch to an alternate server may be triggered by a voluntary
  1004.          disconnection (i.e., Bye-Notification) or an unexpected break
  1005.          in the communication channel.  During normal operations, the
  1006.          client may wish to switch to an alternate server (for any
  1007.          reason). The client is advised to first connect to the new
  1008.          server before sending a Bye-Notification to the original one.
  1009.          If the communication channel unexpectedly disconnects, the
  1010.          client should quickly attempt to connect to an alternate
  1011.          server.
  1012.  
  1013.          In both cases, after the connection to a new server [Note 14]
  1014.           is established, the aging cached state from the old server
  1015.          would be gradually replaced by responses from the new server.
  1016.          [Note 15]
  1017. _________________________
  1018. [Note 14] The term "new server" may be the same as the "previous
  1019. server"; it may happen that the connection encounters a problem and the
  1020. client chooses to disconnected and re-established the connection.
  1021.  
  1022. [Note 15] The client could speed-up replacement of cached state by
  1023. sending copies of cached input to the server and issuing repeated
  1024. queries, on connection establishment (instead of waiting until objects
  1025.  
  1026.  
  1027.  
  1028. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 18]
  1029.  
  1030.  
  1031. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1032.  
  1033.  
  1034.          As general guidelines, state replacement from a new server
  1035.          should not cause a disruption of service that would not
  1036.          otherwise occur (if a new server was not found). [Note 16]
  1037.  
  1038.  
  1039.          After switching to an alternate server, the client may
  1040.          periodically poll its old (preferred) server by attempting a
  1041.          TCP connection to its OOPS port. Similarly, a new (or recovered
  1042.          server) may notify clients about its liveness by attempting to
  1043.          connect to their OOPS port. In the latter case, clients may
  1044.          disconnect the TCP connection or respond with a Connection-
  1045.          Initiation-Query as if the client initiated the connection in
  1046.          the first place. [Note 17]
  1047.  
  1048.  
  1049.           %% TOO EARLY: WE SHOULD PUT IT IN THE NEXT VERSION (02)
  1050.           %% ----------------------------------------------------
  1051.           %%The client may choose to use both the main and the alternate
  1052.          servers
  1053.           %%in tandem. In this case, the client would send inputs and
  1054.          updates to
  1055.           %%both servers, but will make status and outgoing-policy
  1056.          queries only
  1057.           %%to the main server. Given that both servers have the same
  1058.          state image,
  1059.           %%a switch between them could be fast without causing
  1060.          disruption of
  1061.           %%service.
  1062.  
  1063. 4. OOPS Message Format
  1064.  
  1065.    OOPS messages serve as a wrapper that may include one or more Op-
  1066.    Codes; the message wrapper allows common operation (e.g., MD5
  1067.    integrity, HOP_DESCs, protocol version, etc.) to be performed and
  1068.    verified in one-shot. All OOPS messages are composed of the following
  1069.    fields:
  1070.  
  1071. _________________________
  1072. arrive from RSVP).
  1073.  
  1074. [Note 16] Practically, this means that as long as there is no change in
  1075. RSVP messages, the client is advised to choose between cached and new
  1076. results in favor of authorizing the request.
  1077.  
  1078. [Note 17] Future version of this document may include the use of
  1079. multicast to advertise the liveness of servers.
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 19]
  1086.  
  1087.  
  1088. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1089.  
  1090.  
  1091.    +---------------+---------------+---------------+---------------+
  1092.    |    Ver        |  #Op-Codes    |  Flags        |    //////     |
  1093.    +---------------+---------------+---------------+---------------+
  1094.    |                  Message Length                               |
  1095.    +---------------+---------------+---------------+---------------+
  1096.    |                  Message Sequence Number                      |
  1097.    +---------------+---------------+---------------+---------------+
  1098.    |                  OOPS_MSG_AUTH (Optional)                     |
  1099.    +---------------+---------------+---------------+---------------+
  1100.    |                  List of Op-Codes...                          |
  1101.    +---------------+---------------+---------------+---------------+
  1102.  
  1103.  
  1104.    Version: 8 bits
  1105.  
  1106.         Protocol version number. The current version is 1.
  1107.  
  1108.  
  1109.    Flags: 8 bits
  1110.  
  1111.         0x01 H_Integrity_Checked      POLICY_DESC Integrity already checked by client
  1112.         0x02 H_Hops_Checked           Prev/Next HOPs already checked by client
  1113.  
  1114.  
  1115.    #Op-Codes: 8 bits
  1116.  
  1117.         Number of Op-Codes included in this message.
  1118.  
  1119.  
  1120.    Message Length: 32 bits
  1121.  
  1122.         The total length of this OOPS message in bytes.
  1123.  
  1124.  
  1125.    Message Sequence Number: 32 bits
  1126.  
  1127.         The sequence number of the message being sent.
  1128.  
  1129.  
  1130.    OOPS_MSG_AUTH (optional): variable length
  1131.  
  1132.         This Message Authenticator provides integrity verification based
  1133.         on a shared-keyed message digest. The message digest is
  1134.         calculated over the entire OOPS message.
  1135.  
  1136.         There is only one object format currently defined is identical
  1137.         to the RSVP INTEGRITY object (defined in [Bak96]).
  1138.  
  1139.  
  1140.  
  1141.  
  1142. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 20]
  1143.  
  1144.  
  1145. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1146.  
  1147.  
  1148.    List of OOPS operation codes (Op-Codes): variable length
  1149.  
  1150.         Described in the following section.
  1151.  
  1152.  
  1153.  
  1154.    4.1 OOPS Operation Codes (Op-Codes)
  1155.  
  1156.       Each OOPS message may contain multiple OOPS operations each
  1157.       encapsulating a different query, response or notification.  For
  1158.       example, multiple Incoming-Policy-Queries might be followed by a
  1159.       Status-Query operation in the same message.
  1160.  
  1161.       Individual OOPS Op-Codes have the following header:
  1162.  
  1163.       +---------------+---------------+---------------+---------------+
  1164.       | Operation Code| Op. Subtype   |  Flags        |    //////     |
  1165.       +---------------+---------------+---------------+---------------+
  1166.       |                      Length (bytes)                           |
  1167.       +---------------+---------------+---------------+---------------+
  1168.       |                      Refresh Period                           |
  1169.       +---------------+---------------+---------------+---------------+
  1170.  
  1171.       The operation header has the following fields:
  1172.  
  1173.  
  1174.       operation Code: 8 bits
  1175.  
  1176.            The type of OOPS operation.
  1177.  
  1178.  
  1179.       Operation Subtype: 8 bits
  1180.  
  1181.            This field can be used to indicate an attribute of the Op-
  1182.            Code, such as its version; currently it is always set to 1.
  1183.  
  1184.  
  1185.       Flags: 8 bits
  1186.  
  1187.            0x01 OOPS_HardState:   Hard State (soft-state if not set (0) )
  1188.            0x02 OOPS_Shared   :   Resv shared among sources as filter specs
  1189.            0x02 OOPS_FullList :   Last in the set of status queries.
  1190.  
  1191.  
  1192.       Length: 32 bits
  1193.  
  1194.            Contains the total operation length in bytes (including
  1195.            header).
  1196.  
  1197.  
  1198.  
  1199. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 21]
  1200.  
  1201.  
  1202. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1203.  
  1204.  
  1205.       Refresh Period
  1206.  
  1207.            The refresh-period associates with this object (e.g., RSVP's
  1208.            refresh period).
  1209.  
  1210.  
  1211.  
  1212.       The remainder of this section describes the set of operations that
  1213.       may appear in OOPS messages and their object format.  OOPS does
  1214.       not bind itself to a particular protocol (i.e., RSVP) and is built
  1215.       around objects that may belong to different (other) protocols. The
  1216.       current draft is based on the assumption that RSVP would be one
  1217.       (the first) of these protocols and thus, the draft provides the
  1218.       appropriate RSVP objects format.
  1219.  
  1220.       4.1.1 Null-Notification (a.k.a Keep-Alive)
  1221.  
  1222.          Operation Type = 0, sub-type = 1
  1223.  
  1224.          <Null-Notification> ::= <Common OOPS header>
  1225.  
  1226.          This empty or null notification triggers no operation; thus,
  1227.          can be used as as Keep-Alive signal to test the viability of
  1228.          the communication channel between client and server (see
  1229.          Section 3.2.1).
  1230.  
  1231.       4.1.2 Connection-Initiation-Query
  1232.  
  1233.          Operation Type = 1, sub-type = 1
  1234.  
  1235.          <Connection-Initiation-Query> ::=  <Common OOPS header>
  1236.                                             <CONNECT_DESC>
  1237.                                             <CLASS_ID>
  1238.                                             <CLIENT_ID>
  1239.                                             <RESP_INT>
  1240.                                             <COOKIE>
  1241.  
  1242.  
  1243.          The client sends this query to establish a connection with a
  1244.          server. This message is sent following the establishment of a
  1245.          transport connection (TCP).
  1246.  
  1247.  
  1248.  
  1249.          o    CONNECT_DESC
  1250.  
  1251.               Description of connection parameters.
  1252.  
  1253.  
  1254.  
  1255.  
  1256. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 22]
  1257.  
  1258.  
  1259. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1260.  
  1261.  
  1262.          o    CLASS_ID
  1263.  
  1264.               The client's class provides an implicit description of the
  1265.               client's capabilities and requirements; the CLASS_ID is an
  1266.               index into the class list maintained by the server; it is
  1267.               used in conjunction with the CLIENT_ID.)
  1268.  
  1269.  
  1270.          o    CLIENT_ID
  1271.  
  1272.               The network address of the client.  From the combination
  1273.               of CLIENT_ID and CLASS_ID the server can learn about the
  1274.               set of sub-policies it is required to support for this
  1275.               particular client; it can also learn which of these sub-
  1276.               policies are optional and which are mandatory.
  1277.  
  1278.  
  1279.          o    RESP_INT
  1280.  
  1281.               A list of possible response interfaces.
  1282.  
  1283.  
  1284.          o    COOKIE
  1285.  
  1286.  
  1287.  
  1288.       4.1.3 Connection-Accept-Response
  1289.  
  1290.          Operation Type = 2, sub-type = 1
  1291.  
  1292.          <Connection-Accept-Response> ::=  <Common OOPS header>
  1293.                                            <CONNECT_DESC>
  1294.                                            <PLIST>
  1295.                                            <RESP_INT>
  1296.                                            <COOKIE>
  1297.  
  1298.          The server sends this response to accept a client's connection
  1299.          connection request.
  1300.  
  1301.  
  1302.  
  1303.          o    CONNECT_DESC
  1304.  
  1305.  
  1306.          o    PLIST
  1307.  
  1308.               Each "From Policy m" and "To Policy m" pair represent a
  1309.               range of sub-policies that the server is willing to
  1310.  
  1311.  
  1312.  
  1313. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 23]
  1314.  
  1315.  
  1316. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1317.  
  1318.  
  1319.               support.
  1320.  
  1321.  
  1322.          o    RESP_INT
  1323.  
  1324.               The chosen (agreed upon) status response interface.
  1325.  
  1326.  
  1327.          o    COOKIE
  1328.  
  1329.  
  1330.  
  1331.       4.1.4 Connection-Reject-Response
  1332.  
  1333.          Operation Type = 3, sub-type = 1
  1334.  
  1335.          <Connection-Reject-Response> ::=  <Common OOPS header>
  1336.                                            <ERR_DESC>
  1337.  
  1338.          The server sends this response to reject a client's connection
  1339.          initiation. It specifies both reason code and text.
  1340.  
  1341.       4.1.5 Bye-Notification
  1342.  
  1343.          Operation Type = 4, sub-type = 1
  1344.  
  1345.          <Bye-Notification> ::= <Common OOPS header>
  1346.                                 <BYE_DESC>
  1347.                                 [<ERR_DESC>]
  1348.  
  1349.  
  1350.          This message is used by either client or server to terminate
  1351.          the OOPS connection.
  1352.  
  1353.  
  1354.  
  1355.          o    BYE_DESC
  1356.  
  1357.  
  1358.  
  1359.          (Section 3.2.2 includes a description of explicit termination
  1360.          using Bye-Notification)
  1361.  
  1362.       4.1.6 Incoming-Policy-Query
  1363.  
  1364.          Operation Type = 5, sub-type = 1
  1365.  
  1366.          <Incoming-Policy-Query> ::=  <Common OOPS header>
  1367.  
  1368.  
  1369.  
  1370. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 24]
  1371.  
  1372.  
  1373. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1374.  
  1375.  
  1376.                                       <Q_ASSOC>
  1377.                                       <PROT_MSG_TYPE>
  1378.                                       <DST_DESC>
  1379.                                       <SRC_DESC list>
  1380.                                       <HOP_DESC>
  1381.                                       [<ADV_DESC>]
  1382.                                       <POLICY_DESC list>
  1383.  
  1384.          This operation is used to forward POLICY_DESC objects from the
  1385.          client to the server.  Selection between hard and soft state
  1386.          management is reflected in the OOPS_HardState flag.  The other
  1387.          fields are copied from the PC_InPolicy() function called by
  1388.          RSVP. (See [Ext]).
  1389.  
  1390.       4.1.7 Incoming-Policy-Response
  1391.  
  1392.          Operation Type = 6, sub-type = 1
  1393.  
  1394.          <Incoming-Policy-Response> ::=  <Common OOPS header>
  1395.                                          <Q_ASSOC>
  1396.                                          <ERR_DESC>
  1397.  
  1398.          Incoming-Policy-Response is used ONLY to report protocol errors
  1399.          (e.g., syntax) found with incoming policy objects.  (it is not
  1400.          used in the normal operation of the protocol).
  1401.  
  1402.       4.1.8 Outgoing-Policy-Query
  1403.  
  1404.          Operation Type = 7, sub-type = 1
  1405.  
  1406.          <Outgoing-Policy-Query> ::=  <Common OOPS header>
  1407.                                       <Q_ASSOC>
  1408.                                       <PROT_MSG_TYPE>
  1409.                                       <DST_DESC>
  1410.                                       <SRC_DESC list>
  1411.                                       <HOP_DESC list>
  1412.  
  1413.          This operation queries the server for a set of outgoing policy
  1414.          objects for a set of HOP_DESCs.  The client can choose between
  1415.          hard and soft state management through the OOPS_HardState flag.
  1416.          When hard state is selected, the client caches copies of the
  1417.          outgoing objects and assumes they remain valid unless
  1418.          explicitly modified by the server.
  1419.  
  1420.       4.1.9 Outgoing-Policy-Response
  1421.  
  1422.          Operation Type = 8, sub-type = 1
  1423.  
  1424.  
  1425.  
  1426.  
  1427. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 25]
  1428.  
  1429.  
  1430. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1431.  
  1432.          <Outgoing-Policy-Response> ::=  <Common OOPS header>
  1433.                                          <Q_ASSOC>
  1434.                                          { <HOP_DESC>
  1435.                                            <ERR_DESC> or <POLICY_DESC>
  1436.                                          } pairs list
  1437.  
  1438.          The  <Query Sequence Number> links the response to the original query.
  1439.  
  1440.          In the response, the server provides a list of triplets, one
  1441.          for each outgoing HOP_DESC (For Path messages, only the LIH
  1442.          part is significant). Each triplet contains a list of policy
  1443.          objects for that hop and an error description.
  1444.  
  1445.          The OOPS server can block an outgoing RSVP message by replacing
  1446.          the outgoing POLICY_DESC list for a particular HOP_DESC with an
  1447.          <Error-Description> with an appropriate value.
  1448.  
  1449.          The ability to block outgoing RSVP control messages is
  1450.          especially useful when policy is enforcement is performed at
  1451.          border nodes of a network; RSVP control messages that are
  1452.          allowed through are capable of installing state at internal
  1453.          nodes without being subject to further policy control.
  1454.  
  1455.       4.1.10 Status-Query
  1456.  
  1457.          Operation Type = 9, sub-type = 1
  1458.  
  1459.          <Status_Query> ::=  <Common OOPS header>
  1460.                              <Q_ASSOC>
  1461.                              <PROT_MSG_TYPE>
  1462.                              <DST_DESC>
  1463.                              <SRC_DESC list>
  1464.                              { <HOP_DESC>
  1465.                                <QOS_DESC>
  1466.                              } triplets list
  1467.  
  1468.          This operation queries the server for status results of a list
  1469.          of LIHs.  The client can choose between hard and soft state
  1470.          management through the OOPS_HardState flag. When hard state is
  1471.          selected, the client caches the status results and assumes they
  1472.          remain valid unless explicitly modified by the server.
  1473.  
  1474.          In the upstream direction (e.g., Resv) status may need to be
  1475.          checked on multiple LIHs (all reservations for a flow). In such
  1476.          cases, status queries can be perform separately for each LIH,
  1477.          once for all LIHs, or anything in between. Flag OOPS_FullList
  1478.          must be set at the last of status query of the series. [Note 18]
  1479. _________________________
  1480. [Note 18] When sub-policies are interdependent across LIHs (as when the
  1481. cost is shared among downstream receivers), flag OOPS_FullList notifies
  1482. the server that the list of reserved LIH is complete and that it can
  1483. safely compute the status of these reservations.
  1484.  
  1485. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 26]
  1486.  
  1487.  
  1488. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1489.  
  1490.  
  1491.       4.1.11 Status-Response
  1492.  
  1493.          Operation Type = 10, sub-type = 1
  1494.  
  1495.          <Status-Response> ::=  <Common OOPS header>
  1496.                                 <Q_ASSOC>
  1497.                                 { <HOP_DESC>
  1498.                                   <STATUS_DESC>
  1499.                                   [<ERR_DESC>]
  1500.                                 } triplet list
  1501.  
  1502.          The  <Q_ASSOC> links the response to the original query.
  1503.  
  1504.          In the response, the server provides a list of triplets, each
  1505.          of which contains an LIH, status, and any applicable error
  1506.          results.  The set of LIHs is an attribute of the results and
  1507.          not of the query; the server is allowed to respond with a
  1508.          superset of LIHs specified in the original query, as in the
  1509.          following example:
  1510.  
  1511.                              SEQ#  TYPE           DATA
  1512.                              ---   ----           ----
  1513.          Client ==> Server:  150   Query:status   Q_ASSOC=ID2, Resv-X, LIH={2}
  1514.          Server ==> Client:  153   Resp :status   Q_ASSOC=ID2, {2,rej}
  1515.  
  1516.          Two new reservations arrive, carrying new policy data objects:
  1517.  
  1518.          Client ==> Server:  160   Query:status   Q_ASSOC=ID3, Resv-X, LIH={4,7}
  1519.          Server ==> Client:  169   Resp :status   Q_ASSOC=ID3, {2,acc;4,acc;7,rej}
  1520.  
  1521.       4.1.12 Delete-State-Notification
  1522.  
  1523.          Operation Type = 11, sub-type = 1
  1524.  
  1525.          <Delete-State-Notification> ::=  <Common OOPS header>
  1526.                                           <STATE_OP_DESC>
  1527.                                           <DST_DESC>
  1528.                                           [<PROT_MSG_TYPE>]
  1529.                                           [<SRC_DESC list>]
  1530.                                           [<HOP_DESC>]
  1531.                                           [<ERR_DESC>]
  1532.  
  1533.  
  1534.  
  1535.          o    STATE_OP_DESC
  1536.  
  1537.               This object describes the type of requested operation (see
  1538.               Appendix A).
  1539.  
  1540.  
  1541.  
  1542. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 27]
  1543.  
  1544.  
  1545. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1546.  
  1547.  
  1548.          This operation informs the sender about an immediate RSVP
  1549.          teardown of state caused by PATH_TEAR, RESV_TEAR, routes
  1550.          change, etc.  As a result, the server should ignore the
  1551.          described state as if it was never received from the client.
  1552.  
  1553.          Despite its name, this operation can be used to switch between
  1554.          blockaded and non-blockaded state.
  1555.  
  1556.          The semantics of this operation is described for PC_DelState()
  1557.          in [Ext].
  1558.  
  1559.          Error description is used to provide the server with a reason
  1560.          for the delete (for logging purposes).
  1561.  
  1562.       4.1.13 Protocol-Message-Notification
  1563.  
  1564.          Operation Type = 12, sub-type = 1
  1565.  
  1566.          <Protocol-Message-Notification> ::=  <Common OOPS header>
  1567.                                               <PROT_MSG_TYPE>
  1568.                                               <DST_DESC>
  1569.                                               <SRC_DESC list>
  1570.                                               <HOP_DESC>
  1571.  
  1572.          The operation results in the generation of an outgoing protocol
  1573.          message (e.g., RSVP's Path, Resv).  The client should schedule
  1574.          the requested message to the specified HOP_DESC.
  1575.  
  1576.       4.1.14 Client-Status-Notification
  1577.  
  1578.          Operation Type = 13, sub-type = 1
  1579.  
  1580.          <Client-Status-Notification> ::=  <Common OOPS header>
  1581.                                            <Q_ASSOC>
  1582.                                            <STATUS_DESC>
  1583.  
  1584.          The Client notifies the server about the status results
  1585.          computed at the client (that may also include results from
  1586.          other servers, if policy computation is spread among several
  1587.          servers).
  1588.  
  1589.          The overall status of an RSVP flow is computed by merging the
  1590.          client's status report with the server's. The server should not
  1591.          commit a transaction (e.g., charge an account) before knowing
  1592.          its final status. The Client-Status-Results operation can be
  1593.          sent with the query, if the client computed its status prior to
  1594.          making the query. It can also be sent later, after the server
  1595.          sent its response to the status query.
  1596.  
  1597.  
  1598.  
  1599. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 28]
  1600.  
  1601.  
  1602. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1603.  
  1604.  
  1605.       4.1.15 Error-Notification
  1606.  
  1607.          Operation Type = 14, sub-type = 1
  1608.  
  1609.          <Message-Error-Notification> ::=  <Common OOPS header>
  1610.                                            <Message-Sequence-Number>
  1611.                                            <ERR_DESC>
  1612.  
  1613.          Message-Error-Notification can be used by either client or
  1614.          server to report errors associated with an entire message (as
  1615.          opposed to a specific operation). Error-Notification may be
  1616.          triggered by both syntax or substantive errors (e.g., failure
  1617.          to verify the integrity of the message).
  1618.  
  1619.          <Message-Sequence-Number> identified the message that triggered
  1620.          the error. It uses identical format to the one used by the OOPS
  1621.          message header.
  1622.  
  1623.          Message-Error-Notification is not acked.
  1624.  
  1625. 5. Acknowledgment
  1626.  
  1627.    This document reflects feedback from Paul Amsden, Fred Baker, Lou
  1628.    Berger, Bob Braden, Ron Cohen, Deborah Estrin, Steve Jackowski, Tim
  1629.    O'Malley, Claudio Topolcic, Raj Yavatkar, and many other IPC and RSVP
  1630.    collaborators,
  1631.  
  1632. 6. Authors' Address
  1633.  
  1634.  
  1635.    Shai Herzog              Phone: (917) 318-7938
  1636.    IP"Highway"                Email: herzog@iphighway.com
  1637.  
  1638.  
  1639.  
  1640.  
  1641.    Dimitrios Pendarakis     Phone: (914) 784-7536
  1642.                             Email: dimitris@watson.ibm.com
  1643.    Raju Rajan               Phone: (914) 784-7260
  1644.                             Email: raju@watson.ibm.com
  1645.    Roch Guerin              Phone: (914) 784-7038
  1646.                             Email: guerin@watson.ibm.com
  1647.  
  1648.  
  1649.    IBM T. J. Watson Research Center
  1650.    P.O. Box 704
  1651.    Yorktown Heights, NY 10598
  1652.  
  1653.  
  1654.  
  1655.  
  1656. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 29]
  1657.  
  1658.  
  1659. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1660.  
  1661.  
  1662. 7. References
  1663.  
  1664. References
  1665.  
  1666. [IPSEC]  R. Atkinson, Security Architecture for the Internet Protocol,
  1667.     "RFC1825", Aug. 1997.
  1668.  
  1669. [Bak96]  F. Baker.  RSVP Cryptographic Authentication "Internet-Draft",
  1670.     draft-ietf-rsvp-md5-02.txt, 1996.
  1671.  
  1672. [RSVPSP]  R. Braden, L. Zhang, S. Berson, S. Herzog, and S. Jamin,
  1673.     Resource ReSerVation Protocol (RSVP) Version 1 Functional
  1674.     Specification.  "Internet-Draft", draft-ietf-RSVPSP-14.[ps,txt],
  1675.     Nov. 1996.
  1676.  
  1677. [Arch]  S. Herzog Accounting and Access Control Policies for Resource
  1678.     Reservation Protocols. "Internet-Draft", draft-ietf-rsvp-policy-
  1679.     arch-01.[ps,txt], Nov. 1996.
  1680.  
  1681. [LPM]  S. Herzog Local Policy Modules (LPM): Policy Enforcement for
  1682.     Resource Reservation Protocols. "Internet-Draft", draft-ietf-rsvp-
  1683.     policy-lpm-01.[ps,txt], Nov. 1996.
  1684.  
  1685. [Ext]  S. Herzog RSVP Extensions for Policy Control.  "Internet-Draft",
  1686.     draft-ietf-rsvp-policy-ext-02.[ps,txt], Apr. 1997.
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 30]
  1714.  
  1715.  
  1716. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1717.  
  1718.  
  1719. A Appendix: OOPS Objects
  1720.  
  1721. This section describes objects that are used within OOPS OP-Codes.  All
  1722. objects have a common header:
  1723.  
  1724. +---------------+---------------+---------------+---------------+
  1725. |            Length             |      Class    |   C-Type      |
  1726. +---------------+---------------+---------------+---------------+
  1727.  
  1728. Length describes the length of the entire object, in bytes.  Class
  1729. describes the type of object and C-Type describes the a class sub-type.
  1730.  
  1731.  
  1732.  
  1733. o    CLASS_ID class
  1734.  
  1735.  
  1736.  
  1737.      -    Class = 1, C-Type = 1
  1738.  
  1739.           +---------------+---------------+---------------+---------------+
  1740.           |   ASCII String ........ 0 Padded to multiples of 32 bits      |
  1741.           +---------------+---------------+---------------+---------------+
  1742.  
  1743.  
  1744.  
  1745.  
  1746. o    CLIENT_ID class
  1747.  
  1748.  
  1749.  
  1750.      -    Class = 2, C-Type = 1
  1751.  
  1752.           A Network Address.
  1753.  
  1754.           +---------------+---------------+---------------+---------------+
  1755.           |   IPv4 Address                                                |
  1756.           +---------------+---------------+---------------+---------------+
  1757.  
  1758.  
  1759.      -    Class = 2, C-Type = 2
  1760.  
  1761.           +---------------+---------------+---------------+---------------+
  1762.           |   IPv6 Address                                                |
  1763.           |                                                               |
  1764.           |                                                               |
  1765.           |                                                               |
  1766.           +---------------+---------------+---------------+---------------+
  1767.  
  1768.  
  1769.  
  1770. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 31]
  1771.  
  1772.  
  1773. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1774.  
  1775.  
  1776.      From the combination of Client-ID and Class-Indicator the server
  1777.      can learn about the set of sub-policies it is required to support
  1778.      for this particular client; it can also learn which of these sub-
  1779.      policies are optional and which are mandatory.
  1780.  
  1781.  
  1782. o    RESP_INT class
  1783.  
  1784.  
  1785.  
  1786.      -    Class = 3, C-Type = 1
  1787.  
  1788.           +---------------+---------------+---------------+---------------+
  1789.           | Most-Prefered |.....          |               |               |
  1790.           +---------------+---------------+---------------+---------------+
  1791.           |               | Least-Pref.   |...0 Padded to 32 bit multiples|
  1792.           +---------------+---------------+---------------+---------------+
  1793.  
  1794.  
  1795.  
  1796. o    COOKIE class
  1797.  
  1798.  
  1799.  
  1800.      -    Class = 4, C-Type = 1
  1801.  
  1802.           Currently, no values are defined.
  1803.  
  1804.  
  1805.  
  1806.  
  1807. o    PLIST class
  1808.  
  1809.  
  1810.  
  1811.      -    Class = 5, C-Type = 1
  1812.  
  1813.           +---------------+---------------+---------------+---------------+
  1814.           |          Number (or pairs)    |             //////            |
  1815.           +---------------+---------------+---------------+---------------+
  1816.           |          From Policy 1        |         To Policy 1           |
  1817.           +---------------+---------------+---------------+---------------+
  1818.           +---------------+---------------+---------------+---------------+
  1819.           |          From Policy n        |         To Policy n           |
  1820.           +---------------+---------------+---------------+---------------+
  1821.  
  1822.  
  1823.      Each "From Policy m" and "To Policy m" pair represent a range of
  1824.  
  1825.  
  1826.  
  1827. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 32]
  1828.  
  1829.  
  1830. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1831.  
  1832.  
  1833.      sub-policies that the server is willing to support.
  1834.  
  1835.  
  1836. o    ERR_DESC class
  1837.  
  1838.  
  1839.  
  1840.      -    Class = 6, C-Type = 1
  1841.  
  1842.           +---------------+---------------+---------------+---------------+
  1843.           | Error-Code    |     //////    |        Reason Code            |
  1844.           +---------------+---------------+---------------+---------------+
  1845.           |   Error ASCII String .... 0 Padded to multiples of 32 bits    |
  1846.           +---------------+---------------+---------------+---------------+
  1847.  
  1848.  
  1849.      Detailed Error-Code and Reason-Codes would be defined in future
  1850.      versions of this document.
  1851.  
  1852.  
  1853. o    Q_ASSOC class
  1854.  
  1855.  
  1856.  
  1857.      -    Class = 7, C-Type = 1
  1858.  
  1859.           +---------------+---------------+---------------+---------------+
  1860.           |                      Client-Specific Semantics                |
  1861.           //                        (Variable Length)                    //
  1862.           |                                                               |
  1863.           +---------------+---------------+---------------+---------------+
  1864.  
  1865.           The client-specific contents of this object is opaque to the
  1866.           server; it is set by the client for a query and is echoed by
  1867.           the server as-is. The client must store enough information
  1868.           there that will enable it to uniquely identify the original
  1869.           query when the response arrive. This must at least include a
  1870.           counter to identify the version of the latest query. [Note 19]
  1871.  
  1872.  
  1873.  
  1874.  
  1875. _________________________
  1876. [Note 19] A simple association could be the combination of a pointer to
  1877. an internal client (router) control-block that describes the query, and
  1878. a query version counter.
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 33]
  1885.  
  1886.  
  1887. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1888.  
  1889.  
  1890. o    PROT_MSG_TYPE class
  1891.  
  1892.  
  1893.  
  1894.      -    Class = 8, C-Type = 1
  1895.  
  1896.           +---------------+---------------+---------------+---------------+
  1897.           |               RSVP MSG TYPE                                   |
  1898.           +---------------+---------------+---------------+---------------+
  1899.  
  1900.           Values specified in [RSVPSP].
  1901.  
  1902.  
  1903.  
  1904.  
  1905. o    DST_DESC class
  1906.  
  1907.  
  1908.  
  1909.      -    Class = 9, C-Type = 1
  1910.  
  1911.           The RSVP SESSION object as defined in [RSVPSP].
  1912.  
  1913.  
  1914.  
  1915.  
  1916. o    SRC_DESC class
  1917.  
  1918.  
  1919.  
  1920.      -    Class = 10, C-Type = 1
  1921.  
  1922.           The RSVP FILTER_SPEC object as defined in [RSVPSP].
  1923.  
  1924.  
  1925.  
  1926.  
  1927. o    HOP_DESC class
  1928.  
  1929.  
  1930.  
  1931.      -    Class = 11, C-Type = 1
  1932.  
  1933.           The RSVP_HOP object as defined in [RSVPSP].
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 34]
  1942.  
  1943.  
  1944. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  1945.  
  1946.  
  1947. o    ADV_DESC class
  1948.  
  1949.  
  1950.  
  1951.      -    Class = 12, C-Type = 1
  1952.  
  1953.           The RSVP ADSPEC object as defined in [RSVPSP].
  1954.  
  1955.  
  1956.  
  1957.  
  1958. o    QOS_DESC class
  1959.  
  1960.  
  1961.  
  1962.      -    Class = 13, C-Type = 1
  1963.  
  1964.           The RSVP FLOWDESC object as defined in [RSVPSP].
  1965.  
  1966.  
  1967.  
  1968.  
  1969. o    POLICY_DESC class
  1970.  
  1971.  
  1972.  
  1973.      -    Class = 14, C-Type = 1
  1974.  
  1975.           The RSVP POLICY_DATA object as defined in [Ext] and [RSVPSP].
  1976.  
  1977.  
  1978.  
  1979.  
  1980. o    OOPS_MSG_AUTH class
  1981.  
  1982.  
  1983.  
  1984.      -    Class = 15, C-Type = 1
  1985.  
  1986.           The RSVP INTEGRITY object as defined in [RSVPSP] and [Bak96].
  1987.  
  1988.  
  1989.  
  1990.  
  1991. o    STATUS_DESC class
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 35]
  1999.  
  2000.  
  2001. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  2002.  
  2003.  
  2004.      -    Class = 16, C-Type = 1
  2005.  
  2006.           +---------------+---------------+---------------+---------------+
  2007.           | Results       |   Priority    |             //////            |
  2008.           +---------------+---------------+---------------+---------------+
  2009.  
  2010.           Results may have one of the following values:
  2011.  
  2012.  
  2013.           1 :         Accept
  2014.           2 :         Snub
  2015.           3 :         Veto
  2016.  
  2017.  
  2018.           Priority ranges between 1..255 (see 2.2.3).
  2019.  
  2020.  
  2021.  
  2022.  
  2023. o    CONNECT_DESC class
  2024.  
  2025.  
  2026.  
  2027.      -    Class = 17, C-Type = 1
  2028.  
  2029.           This object describes the OOPS connection parameters; in the
  2030.           Connection-Accept-Response, the refresh-multiplier is an echo
  2031.           of the value received with the Connection-Initiation-Query.
  2032.  
  2033.           +---------------+---------------+---------------+---------------+
  2034.           |  Version      |  Flags        | Refresh-Mult. |    //////     |
  2035.           +---------------+---------------+---------------+---------------+
  2036.           | Max-Msg-Size (in KBytes)      | Channel-Hold period (in sec.) |
  2037.           +---------------+---------------+---------------+---------------+
  2038.  
  2039.  
  2040.           Ver: 8 bits
  2041.  
  2042.                Currently, version 1.
  2043.  
  2044.  
  2045.           Flags:
  2046.  
  2047.                0x01  OOPS_CONNECT_DefaultC     Client handles default sub-policies.
  2048.  
  2049.  
  2050.           Refresh-Mult.:
  2051.  
  2052.  
  2053.  
  2054.  
  2055. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 36]
  2056.  
  2057.  
  2058. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  2059.  
  2060.  
  2061.                The refresh-period multiplier (e.g., RSVP's K value).
  2062.  
  2063.  
  2064.           Max-Msg-Size: Upper limit on the length of an OOPS message
  2065.  
  2066.  
  2067.           Channel-Hold period: Implicit disconnection timeout
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074. o    BYE_DESC class
  2075.  
  2076.  
  2077.  
  2078.      -    Class = 18, C-Type = 1
  2079.  
  2080.           BYE_DESC provides details about the Bye-Notification request.
  2081.  
  2082.           +---------------+---------------+---------------+---------------+
  2083.           |   Bye-Flags   |   //////      |      BYE_DELAY (seconds)      |
  2084.           +---------------+---------------+---------------+---------------+
  2085.  
  2086.           Bye-Flags:
  2087.           0x01     An echo (response) to a received Bye-Notification
  2088.  
  2089.           The BYE_DELAY could provide both sides with some time delay to
  2090.           be better prepared to a pending bye. [Note 20]
  2091.            The delay value is determined by the originator of the bye-
  2092.           notification, and is echoed in the bye response. The delay
  2093.           effect should be as if the Bye-Notification was sent BYE_DELAY
  2094.           seconds later with a delay timer value of 0.
  2095.  
  2096.  
  2097.  
  2098.  
  2099. o    STATE_OP_DESC class
  2100.  
  2101.  
  2102.  
  2103.      -    Class = 19, C-Type = 1
  2104.  
  2105. _________________________
  2106. [Note 20] Similar to the delayed shutdown command known in Unix.
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 37]
  2113.  
  2114.  
  2115. Internet Draft       OOPS: Policy Protocol for RSVP            Apr. 1997
  2116.  
  2117.  
  2118.           +---------------+---------------+---------------+---------------+
  2119.           |   Op-Type     |                      //////                   |
  2120.           +---------------+---------------+---------------+---------------+
  2121.  
  2122.           Op-Type values:
  2123.  
  2124.  
  2125.           1 :         Delete State
  2126.           2 :         Block State
  2127.           3 :         Unblock State
  2128.  
  2129.  
  2130. B Appendix: Error Codes
  2131.  
  2132. This appendix describes an initial list of error codes available in
  2133. OOPS, as well as the set of Reason Codes for each error code.  (Reason
  2134. Code of 0 must be used when Reason Codes are not applicable).  This list
  2135. should evolve and not be considered conclusive. [Note 21]
  2136.  
  2137. o    Code = 1, Connection Management
  2138.  
  2139.      1:  Connection Reject: Server does not support client version.
  2140.      2:  Bye: Reset due to routine state re-synchronization
  2141.      3:  Bye: Reset due to connection problems (Bad message formats)
  2142.  
  2143.  
  2144. o    Code = 2, Protocol problems
  2145.  
  2146.      1:  Syntax: Bad OOPS message
  2147.      2:  Syntax: Bad OOPS Op-Code
  2148.      3:  Syntax: Bad POLICY_DESC format
  2149.  
  2150. o    Code = 3, Policy Decisions
  2151.  
  2152.      1:  Don't forward: refrain from forwarding an outgoing message.
  2153.      2:  Policy Reject: cancel protocol operation (Reservation, path, etc.)
  2154.  
  2155. o     Code = 4, State Management
  2156.  
  2157.      1:  Delete State: Reservation Canceled
  2158.      2:  Delete State: route change
  2159.      3:  Delete State: State Timeout
  2160.      4:  Blockade State
  2161.      5:  Unblock State
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170. Shai Herzog et al.       Expiration: Oct. 1997                 [Page 38]
  2171.  
  2172.  
  2173.