home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_i / draft-ietf-intserv-rsvp-use-01.txt < prev    next >
Text File  |  1996-11-26  |  76KB  |  1,593 lines

  1. Internet Engineering Task Force                   Integrated Services WG
  2. INTERNET-DRAFT                                             J. Wroclawski
  3. draft-ietf-intserv-rsvp-use-01.txt                               MIT LCS
  4.                                                            October, 1996
  5.                                                            Expires: 3/97
  6.  
  7.  
  8.  
  9.              The Use of RSVP with IETF Integrated Services
  10.  
  11.  
  12. Abstract
  13.  
  14.       This note describes the use of the RSVP resource reservation
  15.       protocol with the Controlled-Load and Guaranteed QoS control
  16.       services.  The RSVP protocol defines several data objects which
  17.       carry resource reservation information but are opaque to RSVP
  18.       itself.  The usage and data format of those objects is given here.
  19.  
  20.  
  21. Status of this Memo
  22.  
  23.    This document is an Internet-Draft.  Internet-Drafts are working
  24.    documents of the Internet Engineering Task Force (IETF), its areas,
  25.    and its working groups.  Note that other groups may also distribute
  26.    working documents as Internet-Drafts.
  27.  
  28.    Internet-Drafts are draft documents valid for a maximum of six months
  29.    and may be updated, replaced, or obsoleted by other documents at any
  30.    time.  It is inappropriate to use Internet-Drafts as reference
  31.    material or to cite them other than as "work in progress".
  32.  
  33.    To learn the current status of any Internet-Draft, please check the
  34.    "1id-abstracts.txt" listing contained in the Internet- Drafts Shadow
  35.    Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  36.    munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  37.    ftp.isi.edu (US West Coast).
  38.  
  39.    This draft is a product of the Integrated Services Working Group of
  40.    the Internet Engineering Task Force.  Comments are solicited and
  41.    should be addressed to the working group's mailing list at int-
  42.    serv@isi.edu and/or the author(s).
  43.  
  44. 0. Changes from previous version
  45.  
  46.    The format of FLOWSPEC, SENDER_TSPEC, and ADSPEC objects has changed
  47.    to add a length field to the parameter header. This changes fixes two
  48.    specific problems discussed on the intserv mailing list:
  49.  
  50.  
  51.  
  52. J. Wroclawski                 Expires 3/97                      [Page 1]
  53. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  54.  
  55.  
  56.      - The old format did not allow new service-specific override
  57.      parameters to be inserted into an ADSPEC if the ADSPEC also
  58.      contained parameters not known to the node. This problem breaks our
  59.      ability to introduce new general parameters over time.
  60.  
  61.      - The old format did not gracefully allow for future expansion of
  62.      the RSVP SENDER_TSPEC object to carry multiple TSpec formats. This
  63.      problem breaks our ability to deploy a new service using a
  64.      different TSpec format, if such a service is developed.
  65.  
  66.    Beyond these specific problems, the new format eliminates the
  67.    annoying alignment rules which have proved confusing to implementors
  68.    in favor of a simpler everything-is-32-bits message layout. Within
  69.    objects, XDR encoding rules are used for individual parameters.
  70.  
  71.    An appendix describing the general structure of the message format
  72.    has been added.
  73.  
  74. 1. Introduction
  75.  
  76.    The Internet integrated services framework provides the ability for
  77.    applications to choose among multiple, controlled levels of delivery
  78.    service for their data packets. To support this capability, two
  79.    things are required:
  80.  
  81.      - Individual network elements (subnets and IP routers) along the
  82.      path followed by an application's data packets must support
  83.      mechanisms to control the quality of service delivered to those
  84.      packets.
  85.  
  86.      - A way to communicate the application's requirements to network
  87.      elements along the path, and to convey QoS management information
  88.      between network elements and the application must be provided.
  89.  
  90.    In the integrated services framework the first function is provided
  91.    by QoS control services such as Controlled-Load [RFCCL] and
  92.    Guaranteed [RFCG].  The second function may be provided in a number
  93.    of ways, but is frequently implemented by a resource reservation
  94.    setup protocol such as RSVP [RFCRSVP].
  95.  
  96.    Because RSVP is designed to be used with a variety of QoS control
  97.    services, and because the QoS control services are designed to be
  98.    used with a variety of setup mechanisms, a logical separation exists
  99.    between the two specifications. The RSVP specification does not
  100.    define the internal format of those RSVP protocol fields, or objects,
  101.    which are related to invoking QoS control services. Rather, RSVP
  102.    treats these objects as opaque.  The objects can carry different
  103.    information to meet different application and QoS control service
  104.  
  105.  
  106.  
  107. J. Wroclawski                 Expires 3/97                      [Page 2]
  108. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  109.  
  110.  
  111.    requirements.
  112.  
  113.    Similarly, interfaces to the QoS control services are defined in a
  114.    general format, so that the services can be used with a variety of
  115.    setup mechanisms.
  116.  
  117.    This RFC provides the information required to use RSVP and the
  118.    integrated service framework's QoS control services together. It
  119.    defines the usage and contents of three RSVP protocol objects, the
  120.    FLOWSPEC, ADSPEC, and SENDER_TSPEC, in an environment supporting the
  121.    Controlled-Load and/or Guaranteed QoS control services. If new
  122.    services or capabilities are added to the integrated services
  123.    framework, this note will be revised as required.
  124.  
  125. 2. Use of RSVP
  126.  
  127.    Several types of data must be transported between applications and
  128.    network elements to correctly invoke QoS control services (1).  This
  129.    data includes:
  130.  
  131.      - Information generated by each receiver describing the QoS control
  132.      service desired, a description of the traffic flow to which the
  133.      resource reservation should apply (the Receiver TSpec), and
  134.      whatever parameters are required to invoke the service (the
  135.      Receiver RSpec). This information is carried from the receivers to
  136.      intermediate network elements and the sender(s) by RSVP FLOWSPEC
  137.      objects. The information being carried in a FLOWSPEC object may
  138.      change at intermediate points in the network due to reservation
  139.      merging and other factors.
  140.  
  141.      - Information generated at each sender describing the data traffic
  142.      generated by that sender (the Sender TSpec). This information is
  143.      carried from the sender to intermediate network elements and the
  144.      receiver(s) by RSVP, but is never modified by intermediate elements
  145.      within the network. This information is carried in RSVP
  146.      SENDER_TSPEC objects.
  147.  
  148.      - Information generated or modified within the network and used at
  149.      the receivers to make reservation decisions.  This information
  150.      might include available services, delay and bandwidth estimates,
  151.      and operating parameters used by specific QoS control services.
  152. -----------
  153.   1. In  addition  to  the  data used to directly invoke QoS
  154. control services, RSVP carries  authentication,  accounting,
  155. and  policy  information  needed  to manage the use of these
  156. services. This note is concerned only with the RSVP  objects
  157. needed to actually invoke QoS control services, and does not
  158. discuss accounting or policy objects.
  159.  
  160.  
  161.  
  162. J. Wroclawski                 Expires 3/97                      [Page 3]
  163. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  164.  
  165.  
  166.      This information is collected from network elements and carried
  167.      towards receivers in RSVP ADSPEC objects.  Rather than carrying
  168.      information from each intermediate node separately to the
  169.      receivers, the information in the ADSPEC represents a summary,
  170.      computed as the ADSPEC passes each hop.  The size of this summary
  171.      remains (roughly) constant as the ADSPEC flows through the network,
  172.      giving good scaling properties.
  173.  
  174.    From the point of view of RSVP objects, the breakdown is as follows:
  175.  
  176.      - The RSVP SENDER_TSPEC object carries the traffic specification
  177.      (sender TSpec) generated by each data source within an RSVP
  178.      session.  It is transported unchanged through the network, and
  179.      delivered to both intermediate nodes and receiving applications.
  180.  
  181.      - The RSVP ADSPEC object carries information which is generated at
  182.      either data sources or intermediate network elements, is flowing
  183.      downstream towards receivers, and may be used and updated inside
  184.      the network before being delivered to receiving applications.  This
  185.      information includes both parameters describing the properties of
  186.      the data path, including the availability of specific QoS control
  187.      services, and parameters required by specific QoS control services
  188.      to operate correctly.
  189.  
  190.      - The RSVP FLOWSPEC object carries reservation request
  191.      (Receiver_TSpec and RSpec) information generated by data receivers.
  192.      The information in the FLOWSPEC flows upstream towards data
  193.      sources.  It may be used or updated at intermediate network
  194.      elements before arriving at the sending application.
  195.  
  196.        NOTE: The existence of both SENDER_TSPEC and ADSPEC RSVP objects
  197.        is somewhat historical. Using the message format described in
  198.        this note it would be possible to place all of the service
  199.        control information carried "downstream" by RSVP in the same
  200.        object. However, the distinction between data which is not
  201.        updated within the network (in the SENDER_TSPEC object) and data
  202.        which is updated within the network (in the ADSPEC object) may be
  203.        useful to an implementation in practice, and is therefore
  204.        retained.
  205.  
  206. 2.1 Summary of operation
  207.  
  208.    Operation proceeds as follows:
  209.  
  210.    An application instance participating in an RSVP session as a data
  211.    sender registers with RSVP. One piece of information provided by the
  212.    application instance is the Sender TSpec describing the traffic the
  213.    application expects to generate.  This information is used to
  214.  
  215.  
  216.  
  217. J. Wroclawski                 Expires 3/97                      [Page 4]
  218. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  219.  
  220.  
  221.    construct an RSVP SENDER_TSPEC object, which is included in RSVP PATH
  222.    messages generated for the application.
  223.  
  224.    The sending application also constructs an initial RSVP ADSPEC
  225.    object.  This adspec carries information about the QoS control
  226.    capabilities and requirements of the sending application itself, and
  227.    forms the starting point for the accumulation of path properties
  228.    described below. The ADSPEC is added to the RSVP PATH message created
  229.    at the sender.
  230.  
  231.      NOTE: For the convenience of application programmers, a host RSVP
  232.      implementation may allow the sending application not to provide an
  233.      initial adspec, instead supplying its own default.  This usage is
  234.      most likely when the application sender does not itself participate
  235.      in the end-to-end QoS control process (by actively scheduling CPU
  236.      usage and similar means) and does not itself care which QoS control
  237.      service is selected by the receivers.
  238.  
  239.      Typically the default ADSPEC supplied by the host RSVP in this case
  240.      would support all QoS control services known to the host. However,
  241.      the exact behavior of this mechanism is implementation dependent.
  242.  
  243.    The ADSPEC is modified by subsequent network elements as the RSVP
  244.    PATH message moves from sender to receiver(s).  At each network
  245.    element, the ADSPEC is passed from RSVP to the traffic control
  246.    module.  The traffic control module updates the ADSPEC, which may
  247.    contain data for several QoS control services, by identifying the
  248.    services mentioned in the ADSPEC and calling each such service to
  249.    update its portion of the ADSPEC. If the traffic control module
  250.    discovers a QoS control service mentioned in the ADSPEC but not
  251.    implemented by the network element, a flag is set to report this to
  252.    the receiver.  The updated ADSPEC is then returned to RSVP for
  253.    delivery to the next hop along the path.
  254.  
  255.    Upon arrival of the PATH message at an application receiver, the data
  256.    in the SENDER_TSPEC and ADSPEC objects is passed across the RSVP API
  257.    to the application.  The application (perhaps with the help of a
  258.    library of common resource-reservation functions) interprets the
  259.    arriving data, and uses it to guide the selection of resource
  260.    reservation parameters.  Examples of this include use of the arriving
  261.    "PATH_MTU" composed characterization parameter [RFCGP] to determine
  262.    the maximum packet size parameter in the reservation request and use
  263.    of the arriving Guaranteed service "C" and "D" parameters [RFCG] to
  264.    calculate a mathematical bound on delivered packet delay when using
  265.    the Guaranteed service.
  266.  
  267.    An application receiver wishing to make a resource reservation
  268.    supplies its local RSVP with the necessary reservation parameters.
  269.  
  270.  
  271.  
  272. J. Wroclawski                 Expires 3/97                      [Page 5]
  273. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  274.  
  275.  
  276.    Among these are the QoS control service desired (Guaranteed or
  277.    Controlled-Load), the traffic specifier (TSpec) describing the level
  278.    of traffic for which resources should be reserved, and, if needed by
  279.    the selected QoS control service, an RSpec describing the level of
  280.    service desired.  These parameters are composed into an RSVP FLOWSPEC
  281.    object and transmitted upstream by RSVP.
  282.  
  283.    At each RSVP-aware point in the network, the SENDER_TSPECs arriving
  284.    in PATH messages and the FLOWSPECs arriving in RESV messages are used
  285.    to request an appropriate resource reservation from the desired QoS
  286.    control service.  State merging, message forwarding, and error
  287.    handling proceed according to the rules of the RSVP protocol.
  288.  
  289.    Finally, the merged FLOWSPEC object arriving at each of an RSVP
  290.    session's data senders is delivered to the application to inform each
  291.    sender of the merged reservation request and properties of the data
  292.    path.
  293.  
  294. 2.2. RSVP support for multiple QoS control services
  295.  
  296.    The design described in this note supports RSVP sessions in which the
  297.    receivers choose a QoS control service at runtime.
  298.  
  299.    To make this possible, a receiver must have all the information
  300.    needed to choose a particular service before it makes the choice.
  301.    This implies that the RSVP SENDER_TSPEC and ADSPEC objects must
  302.    provide the receivers with information for all services which might
  303.    be chosen.
  304.  
  305.    The Sender TSpec used by the two currently defined QoS control
  306.    services is identical.  This simplifies the RSVP SENDER_TSPEC, which
  307.    need carry only a single TSpec data structure in this shared format.
  308.    This SENDER_TSPEC can be used with either Guaranteed or Controlled-
  309.    Load service.
  310.  
  311.    The RSVP ADSPEC carries information needed by receivers to choose a
  312.    service and determine the reservation parameters. This includes:
  313.  
  314.      - Whether or not there is a non-RSVP hop along the path. If there
  315.      is a non-RSVP hop, the application's traffic will receive
  316.      reservationless best-effort service at at least one point on the
  317.      path.
  318.  
  319.      - Whether or not a specific QoS control service is implemented at
  320.      every hop along the path. For example, a receiver might learn that
  321.      at least one integrated-services aware hop along the path supports
  322.      the Controlled-Load service but not the Guaranteed service.
  323.  
  324.  
  325.  
  326.  
  327. J. Wroclawski                 Expires 3/97                      [Page 6]
  328. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  329.  
  330.  
  331.      - Default or global values for the general characterization
  332.      parameters described in [RFCGP]. These values describe properties
  333.      of the path itself, irrespective of the selected QoS control
  334.      service. A value reported in this section of the ADSPEC applies to
  335.      all services unless a different, service-specific value is also
  336.      present in the ADSPEC.
  337.  
  338.      - A service-specific value for one or more general characterization
  339.      parameters, if the service-specific value differs from the default
  340.      value.
  341.  
  342.      - Values of the per-service characterization parameters defined by
  343.      each supported service.
  344.  
  345.    Data in the ADSPEC is divided into blocks or fragments, each of which
  346.    is associated with a specific service.  This allows the adspec to
  347.    carry information about multiple services, allows new services to be
  348.    deployed in the future without immediately updating existing code,
  349.    and allows an application which will never use a particular service
  350.    to omit the ADSPEC data for that service.  The structure of the
  351.    ADSPEC is described in detail in Section 3.3.
  352.  
  353.    A sender may indicate that a specific QoS control service should
  354.    *not* be used by the receivers within an RSVP session.  This is done
  355.    by omitting all mention of that service from the ADSPEC, as described
  356.    in Section 3.3.  Upon arrival at a receiver, the complete absence of
  357.    an ADSPEC fragment for a specific service indicates to receivers that
  358.    the service should not be used.
  359.  
  360.       NOTE: In RSVP Version 1, all receivers within a session are
  361.       required to choose the same QoS control service.  This restriction
  362.       is imposed by the difficulty of merging reservations requesting
  363.       different QoS control services, and the current lack of a general
  364.       service replacement mechanism.  The restriction may be eliminated
  365.       in the future.
  366.  
  367.       Considering this restriction, it may be useful to coordinate the
  368.       receivers' selection of a QoS control service by having the
  369.       sender(s) offer only one choice, using the ADSPEC mechanism
  370.       mentioned above.  All receivers must then select the same service.
  371.       Alternatively, the coordination might be accomplished by using a
  372.       higher-level session announcement and setup mechanism to inform
  373.       the receivers of the QoS control service in use, by manual
  374.       configuration of the receivers, or by an agreement protocol
  375.       running among the session receivers themselves.
  376.  
  377.       As with the ADSPEC, the FLOWSPEC and SENDER_TSPEC object formats
  378.       described in Section 3 are capable of carrying TSpecs and RSpecs
  379.  
  380.  
  381.  
  382. J. Wroclawski                 Expires 3/97                      [Page 7]
  383. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  384.  
  385.  
  386.       for more than one QoS control service in separate data fragments.
  387.       Currently, use of a FLOWSPEC or SENDER_TSPEC containing fragments
  388.       for more than one QoS control service is not supported.  In the
  389.       future, this capability may be used to implement a more flexible
  390.       service request and replacement scheme, allowing applications to
  391.       obtain useful end-to-end QoS control when not all intermediate
  392.       nodes support the same set of QoS services.  RSVP-application APIs
  393.       should be designed to support passing SENDER_TSPEC, FLOWSPEC, and
  394.       ADSPEC objects of variable size and containing information about
  395.       multiple QoS control services between RSVP and its clients.
  396.  
  397. 2.3. Use of ADSPEC Information
  398.  
  399.    This section gives some details about setting reservation parameters
  400.    and the use of information conveyed by the RSVP ADSPEC object.
  401.  
  402. 2.3.1. Determining the availability of a QoS control service
  403.  
  404.    The RSVP ADSPEC carries flag bits telling the application receivers
  405.    whether or not a completely reservation-capable path exists between
  406.    each sender and the receiver. These bits are called "break bits",
  407.    because they indicate breaks in the QoS control along a network path.
  408.    Break bits are carried within the header which begins each per-
  409.    service data fragment of an RSVP ADSPEC.
  410.  
  411.    Service number 1 is used within the ADSPEC to carry information about
  412.    default or global parameter values [RFCGP], rather than values for a
  413.    particular QoS control service.  The break bit in Service 1's per-
  414.    service header tells the receiver(s) whether all of the network
  415.    elements along the path from sender to receiver support RSVP and
  416.    integrated services.  If a receiver finds this bit set, at least one
  417.    network element along the data transmission path between the ADSPEC's
  418.    sender and the receiver can not provide QoS control services at all.
  419.    This bit corresponds to the global NON_IS_HOP characterization
  420.    parameter defined in [RFCGP].
  421.  
  422.       NOTE: If this bit is set, the values of all other parameters in
  423.       the ADSPEC are unreliable. The bit being set indicates that at
  424.       least one node along the sender-receiver path did not fully
  425.       process the ADSPEC.
  426.  
  427.    Service-specific break bits tell the receiver(s) whether all of the
  428.    network elements along the path from sender to receiver support a
  429.    particular QoS control service.  The break bit for each service is
  430.    carried within the ADSPEC's per-service header for that service.  If
  431.    a bit is set at the receiver, at least one network element along the
  432.    data transmission path supports RSVP but does not support the QoS
  433.    control service corresponding to the per-service header.  These bits
  434.  
  435.  
  436.  
  437. J. Wroclawski                 Expires 3/97                      [Page 8]
  438. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  439.  
  440.  
  441.    correspond to the service-specific NON_IS_HOP characterization
  442.    parameters defined in [RFCGP].
  443.  
  444.    Section 3 gives more information about break bits.
  445.  
  446. 2.3.2. Determining Path MTU
  447.  
  448.    Both Guaranteed and Controlled-Load QoS control services place an
  449.    upper bound on packet size, and require that the application limit
  450.    the maximum size of packets subject to resource reservation. For both
  451.    services, the desired maximum packet size is a parameter of the
  452.    reservation request, and the service will reject (with an admission
  453.    control error) reservation requests specifying a packet size larger
  454.    than that supported by the service.
  455.  
  456.    Since RSVP reservation requests are made by receivers, this implies
  457.    that the *receivers* in an RSVP session, as well as the senders, need
  458.    to know the MTU supported by the QoS control services along a data
  459.    path.  Further, in some unusual cases the MTU supported by a QoS
  460.    control service may differ from that supported by the same router
  461.    when providing best effort service.
  462.  
  463.    A scalable form of MTU negotiation is used to address these problems.
  464.    MTU negotiation in an RSVP system works as follows:
  465.  
  466.      - Each sending application joining an RSVP session fills in the M
  467.      (MTU) parameter in its generated Sender_TSpec (carried from senders
  468.      to receivers in a SENDER_TSPEC object) with the maximum packet size
  469.      it wishes to send covered by resource reservation.
  470.  
  471.      - Each RSVP PATH message from a sending application also carries an
  472.      ADSPEC object containing at least one PATH_MTU characterization
  473.      parameter. When it arrives at the receiver, this parameter gives
  474.      the minimum MTU at any point along the path from sender to
  475.      receiver.  Generally, only the "global" PATH_MTU parameter (service
  476.      1, parameter 9) will be present, in which case its value is a legal
  477.      MTU for all reservation requests. If a service specific PATH_MTU
  478.      parameter is present, its value will be smaller than that of the
  479.      global parameter, and should be used for reservation requests for
  480.      that service.
  481.  
  482.      - Each receiver takes the minimum of all the PATH_MTU values (for
  483.      the desired QoS control service) arriving in ADSPEC messages from
  484.      different senders and uses that value as the MTU in its reservation
  485.      requests.  This value is used to fill in the M parameter of the
  486.      TSpec created at the receiver.  In the case of a FF style
  487.      reservation, a receiver may also choose to use the MTU derived from
  488.      each sender's ADSPEC in the FLOWSPEC generated for that sender, if
  489.  
  490.  
  491.  
  492. J. Wroclawski                 Expires 3/97                      [Page 9]
  493. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  494.  
  495.  
  496.      the receiver is concerned about obtaining the maximum MTU on each
  497.      data path. To accomodate changes in the data path, the receiver may
  498.      continue to watch the arriving ADSPECS, and modify the reservation
  499.      if a newly arriving ADSPEC indicates a smaller MTU than is
  500.      currently in use.
  501.  
  502.      - As reservation requests (RESV messages) move from receivers to
  503.      senders, reservation parameters are merged at intermediate nodes.
  504.      As part of this merging, the smaller of two M parameters arriving
  505.      at a merge point will be forwarded in the upstream RESV message.
  506.  
  507.      - As reservation requests arrive at intermediate RSVPs, the minimum
  508.      of the receivers' requested TSpec and the sum of the sender TSpecs
  509.      is taken, and a reservation for the resulting TSpec is made. The
  510.      reservation will use the smaller of the actual path MTU value
  511.      computed by the receivers and the largest maximum packet size
  512.      declared by any of the sender(s). (The TSpec sum() function
  513.      result's M parameter is the max of the summed TSpec M parameters).
  514.  
  515.      - When the completely merged RESV message arrives at each sender,
  516.      the MTU value (M parameter) in the merged FLOWSPEC object will have
  517.      been set to the smallest acceptable MTU of the data paths from that
  518.      sender to any session receiver. This MTU should be used by the
  519.      sending application to size its packets. Any packets larger than
  520.      this MTU may be delivered as best-effort rather than being covered
  521.      by the session's resource reservation.
  522.  
  523.      Note that senders do *not* adjust the value of their Sender_TSpec's
  524.      M field to match the actual packet size selected in this step. The
  525.      value of M represents the largest packet the sender could send, not
  526.      the largest packet the sender is currently sending.
  527.  
  528.    Note that the scheme above will allow each sender in a session to use
  529.    the largest MTU appropriate for that sender, in cases where different
  530.    data paths or receivers have different acceptable MTU's.
  531.  
  532. 3. RSVP Object Formats
  533.  
  534.    This section specifies the detailed contents and wire format of RSVP
  535.    SENDER_TSPEC, ADSPEC, and FLOWSPEC objects for use with the
  536.    Guaranteed and Controlled-Load QoS control services. The object
  537.    formats specified here are based on the general message construction
  538.    rules given in Appendix 1.
  539.  
  540. 3.1. RSVP SENDER_TSPEC Object
  541.  
  542.    The RSVP SENDER_TSPEC object carries information about a data
  543.    source's generated traffic. The required RSVP SENDER_TSPEC object
  544.  
  545.  
  546.  
  547. J. Wroclawski                 Expires 3/97                     [Page 10]
  548. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  549.  
  550.  
  551.    contains a global Token_Bucket_TSpec parameter (service_number 1,
  552.    parameter 127, as defined in [RFCGP]). This TSpec carries traffic
  553.    information usable by either the Guaranteed or Controlled-Load QoS
  554.    control services.
  555.  
  556.         31           24 23           16 15            8 7             0
  557.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  558.    1   | 0 (a) |    reserved           |             7 (b)             |
  559.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  560.    2   |    1  (c)     |0| reserved    |             6 (d)             |
  561.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  562.    3   |   127 (e)     |    0 (f)      |             5 (g)             |
  563.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  564.    4   |  Token Bucket Rate [r] (32-bit IEEE floating point number)    |
  565.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  566.    5   |  Token Bucket Size [b] (32-bit IEEE floating point number)    |
  567.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  568.    6   |  Peak Data Rate [p] (32-bit IEEE floating point number)       |
  569.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  570.    7   |  Minimum Policed Unit [m] (32-bit integer)                    |
  571.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  572.    8   |  Maximum Packet Size [M]  (32-bit integer)                    |
  573.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  574.  
  575.  
  576.      (a) - Message format version number (0)
  577.      (b) - Overall length (7 words not including header)
  578.      (c) - Service header, service number 1 (default/global information)
  579.      (d) - Length of service 1 data, 6 words not including header
  580.      (e) - Parameter ID, parameter 127 (Token_Bucket_TSpec)
  581.      (f) - Parameter 127 flags (none set)
  582.      (g) - Parameter 127 length, 5 words not including header
  583.  
  584.    In this TSpec, the parameters [r] and [b] are set to reflect the
  585.    sender's view of its generated traffic. The peak rate parameter [p]
  586.    may be set to the sender's peak traffic generation rate (if known and
  587.    controlled), the physical interface line rate (if known), or positive
  588.    infinity (if no better value is available).  Positive infinity is
  589.    represented as an IEEE single-precision floating-point number with an
  590.    exponent of all ones (255) and a sign and mantissa of all zeros.  The
  591.    format of IEEE floating-point numbers is further summarized in
  592.    [RFCXDR].
  593.  
  594.    The minimum policed unit parameter [m] should generally be set equal
  595.    to the size of the smallest packet generated by the application. Note
  596.    that smaller values of this parameter may lead to increased
  597.    likelyhood of admission control failure when a receiver tries to make
  598.    a reservation. In some cases, an application transmitting a small
  599.  
  600.  
  601.  
  602. J. Wroclawski                 Expires 3/97                     [Page 11]
  603. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  604.  
  605.  
  606.    percentage of very small packets may therefore choose to set the
  607.    value of [m] larger than the actual minimum transmitted packet size.
  608.    This will increase the likelyhood of the reservation succeeding, at
  609.    the expense of policing packets of size less than [m] as if they were
  610.    of size [m].
  611.  
  612.    The maximum packet size parameter [M] should be set to the size of
  613.    the largest packet the application might generate.
  614.  
  615. 3.2. RSVP FLOWSPEC Object
  616.  
  617.    The RSVP FLOWSPEC object carries information necessary to make
  618.    reservation requests from the receiver(s) into the network. This
  619.    includes an indication of which QoS control service is being
  620.    requested, and the parameters needed for that service.
  621.  
  622.    The QoS control service requested is indicated by the service_number
  623.    in the FLOWSPEC's per-service header.
  624.  
  625. 3.2.1 FLOWSPEC object when requesting Controlled-Load service
  626.  
  627.    The format of an RSVP FLOWSPEC object originating at a receiver
  628.    requesting Controlled-Load service is shown below. Each of the TSpec
  629.    fields is represented using the preferred concrete representation
  630.    specified in the 'Invocation Information' section of [RFCCL]. The
  631.    value of 5 in the per-service header (field (c), below) indicates
  632.    that Controlled-Load service is being requested.
  633.  
  634.         31           24 23           16 15            8 7             0
  635.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  636.    1   | 0 (a) |    reserved           |             7 (b)             |
  637.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  638.    2   |    5  (c)     |0| reserved    |             6 (d)             |
  639.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  640.    3   |   127 (e)     |    0 (f)      |             5 (g)             |
  641.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  642.    4   |  Token Bucket Rate [r] (32-bit IEEE floating point number)    |
  643.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  644.    5   |  Token Bucket Size [b] (32-bit IEEE floating point number)    |
  645.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  646.    6   |  Peak Data Rate [p] (32-bit IEEE floating point number)       |
  647.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  648.    7   |  Minimum Policed Unit [m] (32-bit integer)                    |
  649.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  650.    8   |  Maximum Packet Size [M]  (32-bit integer)                    |
  651.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  652.  
  653.      (a) - Message format version number (0)
  654.  
  655.  
  656.  
  657. J. Wroclawski                 Expires 3/97                     [Page 12]
  658. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  659.  
  660.  
  661.      (b) - Overall length (7 words not including header)
  662.      (c) - Service header, service number 5 (Controlled-Load)
  663.      (d) - Length of controlled-load data, 6 words not including
  664.            per-service header
  665.      (e) - Parameter ID, parameter 127 (Token Bucket TSpec)
  666.      (f) - Parameter 127 flags (none set)
  667.      (g) - Parameter 127 length, 5 words not including per-service header
  668.  
  669.    In this object, the TSpec parameters [r], [b], and [p] are set to
  670.    reflect the traffic parameters of the receiver's desired reservation
  671.    (the Reservation TSpec). The meaning of these fields is discussed
  672.    fully in [RFCCL].
  673.  
  674.    The maximum packet size parameter [M] should be set to the value of
  675.    the path MTU, which the receiver learns from information in arriving
  676.    RSVP ADSPEC objects.  However, if the receiving application has
  677.    built-in knowledge of the maximum packet size in use within the RSVP
  678.    session, that value may be used to set the [M] parameter of the
  679.    FLOWSPEC object.  See section 2.3.2 for further discussion of the MTU
  680.    value.
  681.  
  682. 3.2.2. FLOWSPEC Object when Requesting Guaranteed Service
  683.  
  684.    The format of an RSVP FLOWSPEC object originating at a receiver
  685.    requesting Guaranteed service is shown below. The flowspec object
  686.    used to request guaranteed service carries a TSpec and RSpec
  687.    specifying the traffic parameters of the flow desired by the
  688.    receiver.
  689.  
  690.    Each of the TSpec and RSpec fields is represented using the preferred
  691.    concrete representation specified in the 'Invocation Information'
  692.    section of [RFCG]. The value of 2 for the service header identifier
  693.    (field (c) in the picture below) indicates that Guaranteed service is
  694.    being requested.
  695.  
  696.         31           24 23           16 15            8 7             0
  697.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  698.    1   | 0 (a) |    Unused             |            10 (b)             |
  699.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  700.    2   |    2  (c)     |0| reserved    |             9 (d)             |
  701.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  702.    3   |   127 (e)     |    0 (f)      |             5 (g)             |
  703.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  704.    4   |  Token Bucket Rate [r] (32-bit IEEE floating point number)    |
  705.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  706.    5   |  Token Bucket Size [b] (32-bit IEEE floating point number)    |
  707.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  708.    6   |  Peak Data Rate [p] (32-bit IEEE floating point number)       |
  709.  
  710.  
  711.  
  712. J. Wroclawski                 Expires 3/97                     [Page 13]
  713. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  714.  
  715.  
  716.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  717.    7   |  Minimum Policed Unit [m] (32-bit integer)                    |
  718.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  719.    8   |  Maximum Packet Size [M]  (32-bit integer)                    |
  720.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  721.    9   |     130 (h)   |    0 (i)      |            2 (j)              |
  722.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  723.    10  |  Rate [R]  (32-bit IEEE floating point number)                |
  724.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  725.    11  |  Slack Term [S]  (32-bit integer)                             |
  726.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  727.  
  728.      (a) - Message format version number (0)
  729.      (b) - Overall length (9 words not including header)
  730.      (c) - Service header, service number 2 (Guaranteed)
  731.      (d) - Length of per-service data, 9 words not including per-service header
  732.      (e) - Parameter ID, parameter 127 (Token Bucket TSpec)
  733.      (f) - Parameter 127 flags (none set)
  734.      (g) - Parameter 127 length, 5 words not including parameter header
  735.      (h) - Parameter ID, parameter 130 (Guaranteed Service RSpec)
  736.      (i) - Parameter 130 flags (none set)
  737.      (j) - Parameter 130 length, 2 words not including parameter header
  738.  
  739.    In this object, the TSpec parameters [r], [b], and [p] are set to
  740.    reflect the traffic parameters of the receiver's desired reservation
  741.    (the Reservation TSpec). The meaning of these fields is discussed
  742.    fully in [RFCG].
  743.  
  744.    The maximum packet size parameter [M] should be set to the value of
  745.    the path MTU, which the receiver learns from information in arriving
  746.    RSVP ADSPEC objects.  However, if the receiving application has
  747.    built-in knowledge of the maximum packet size in use within the RSVP
  748.    session, that value may be used to set the [M] parameter of the
  749.    FLOWSPEC object.
  750.  
  751.    The RSpec terms [R] and [S] are selected to obtain the desired
  752.    bandwidth and delay guarantees. This selection is described in
  753.    [RFCG].
  754.  
  755. 3.3. RSVP ADSPEC Object
  756.  
  757.    An RSVP ADSPEC object is constructed from data fragments contributed
  758.    by each service which might be used by the application.  The ADSPEC
  759.    begins with an overall message header, followed by a fragment for the
  760.    default general parameters, followed by fragments for every QoS
  761.    control service which may be selected by application receivers. The
  762.    size of the ADSPEC varies depending on the number and size of per-
  763.    service data fragments present and the presence of non-default
  764.  
  765.  
  766.  
  767. J. Wroclawski                 Expires 3/97                     [Page 14]
  768. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  769.  
  770.  
  771.    general parameters (described in Section 3.3.5).
  772.  
  773.    The complete absence of a data fragment for a particular service
  774.    means that the application sender does not know or care about that
  775.    service, and is a signal to intermediate nodes not to add or update
  776.    information about that service to the ADSPEC. It is also a signal to
  777.    application receivers that they should not select that service when
  778.    making reservations.
  779.  
  780.    Each fragment present is identified by a per-service data header.
  781.    Each header contains a field identifying the service, a break bit,
  782.    and a length field.
  783.  
  784.    The length field allows the ADSPEC information for a service to be
  785.    skipped over by a network elements which does not recognize or
  786.    implement the service.  When an element does this, it sets the break
  787.    bit, indicating that the service's ADSPEC data was not updated at at
  788.    least one hop. Note that a service's break bit can be set without
  789.    otherwise supporting the service in any way.  In all cases, a network
  790.    element encountering a per-service data header it does not understand
  791.    simply sets bit 23 to report that the service is not supported, then
  792.    skips over the rest of the fragment.
  793.  
  794.    Data fragments must always appear in an ADSPEC in service_number
  795.    order. In particular, the default general parameters fragment
  796.    (service_number 1) always comes first.
  797.  
  798.    Within a data fragment, the service-specific data must alway come
  799.    first, followed by any non-default general parameters which may be
  800.    present, ordered by parameter_number. The size and structure of the
  801.    service-specific data is fixed by the service definition, and does
  802.    not require run-time parsing. The remainder of the fragment, which
  803.    carries non-default general parameters, varies in size and structure
  804.    depending on which, if any, of these parameters are present. This
  805.    part of the fragment must be parsed by examining the per-parameter
  806.    headers.
  807.  
  808.    Since the overall size of each data fragment is variable, it is
  809.    always necessary to examine the length field to find the end of the
  810.    fragment, rather than assuming a fixed-size structure.
  811.  
  812. 3.3.1. RSVP ADSPEC format
  813.  
  814.    The basic ADSPEC format is shown below. The message header and the
  815.    default general parameters fragment are always present. The fragments
  816.    for Guaranteed or Controlled-Load service may be omitted if the
  817.    service is not to be used by the RSVP session. Additional data
  818.    fragments will be added if new services are defined.
  819.  
  820.  
  821.  
  822. J. Wroclawski                 Expires 3/97                     [Page 15]
  823. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  824.  
  825.  
  826.        31           24 23            16 15            8 7             0
  827.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  828.        | 0 (a) |      reserved         |  Msg length - 1 (b)           |
  829.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  830.        |                                                               |
  831.        |    Default General Parameters fragment (Service 1)  (c)       |
  832.        |    (Always Present)                                           |
  833.        |                                                               |
  834.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  835.        |                                                               |
  836.        |    Guaranteed Service Fragment (Service 2)    (d)             |
  837.        |    (Present if application might use Guaranteed Service)      |
  838.        |                                                               |
  839.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  840.        |                                                               |
  841.        |    Controlled-Load Service Fragment (Service 5)  (e)          |
  842.        |    (Present if application might use Controlled-Load Service) |
  843.        |                                                               |
  844.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  845.  
  846.      (a) - Message format version number (0)
  847.      (b) - Overall message length not including header word
  848.      (c, d, e) - Data fragments
  849.  
  850. 3.3.2. Default General Characterization Parameters ADSPEC data fragment
  851.  
  852.    All RSVP ADSPECs carry the general characterization parameters defined in
  853.    [RFCGP].  Values for global or default general parameters (values which
  854.    apply to the all services or the path itself) are carried in the
  855.    per-service data fragment for service number 1, as shown in the picture
  856.    above.  This fragment is always present, and always first in the
  857.    message.
  858.  
  859.        31            24 23           16 15            8 7             0
  860.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  861.    1   |    1  (c)     |x| reserved    |           8 (d)               |
  862.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  863.    2   |    4 (e)      |    (f)        |           1 (g)               |
  864.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  865.    3   |        IS hop cnt (32-bit unsigned integer)                   |
  866.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  867.    4   |    6 (h)      |    (i)        |           1 (j)               |
  868.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  869.    5   |  Path b/w estimate  (32-bit IEEE floating point number)       |
  870.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  871.    6   |     8 (k)     |    (l)        |           1 (m)               |
  872.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  873.    7   |        Minimum path latency (32-bit integer)                  |
  874.  
  875.  
  876.  
  877. J. Wroclawski                 Expires 3/97                     [Page 16]
  878. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  879.  
  880.  
  881.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  882.    8   |     10 (n)    |      (o)      |           1 (p)               |
  883.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  884.    9   |      Composed MTU (32-bit unsigned integer)                   |
  885.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  886.  
  887.      (c) - Per-Service header, service number 1 (Default General
  888.            Parameters)
  889.      (d) - Global Break bit ([RFCGP], Parameter 2) (marked x) and
  890.            length of General Parameters data block.
  891.      (e) - Parameter ID, parameter 4 (Number-of-IS-hops param from
  892.    [RFCGP])
  893.      (f) - Parameter 4 flag byte
  894.      (g) - Parameter 4 length, 1 word not including header
  895.      (h) - Parameter ID, parameter 6 (Path-BW param from [RFCGP])
  896.      (i) - Parameter 6 flag byte
  897.      (j) - Parameter 6 length, 1 word not including header
  898.      (k) - Parameter ID, parameter 8 (minimum path latency from [RFCGP])
  899.      (l) - Parameter 8 flag byte
  900.      (m) - Parameter 8 length, 1 word not including header
  901.      (n) - Parameter ID, parameter 10 (composed path MTU from [RFCGP])
  902.      (o) - Parameter 10 flag byte
  903.      (p) - Parameter 10 length, 1 word not including header
  904.  
  905.    Rules for composing general parameters appear in [RFCGP].
  906.  
  907.    In the above fragment, the global break bit (bit 23 of word 1, marked
  908.    with (x) in the picture) is used to indicate the existence of a
  909.    network element not supporting QoS control services somewhere in the
  910.    data path.  This bit is cleared when the ADSPEC is created, and set to
  911.    one if a network element which does not support RSVP or integrated
  912.    services is encountered.  An ADSPEC arriving at a receiver with this
  913.    bit set indicates that all other parameters in the ADSPEC may be
  914.    invalid, since not all network elements along the path support
  915.    updating of the ADSPEC.
  916.  
  917.    The general parameters are updated at every network node which
  918.    supports RSVP:
  919.  
  920.      - When a PATH message ADSPEC encounters a network element implementing
  921.      integrated services, the portion of the ADSPEC associated with service
  922.      number 1 is passed to the module implementing general parameters. This
  923.      module updates the global general parameters.
  924.  
  925.      - When a PATH message ADSPEC encounters a network element that does
  926.      *not* support RSVP or implement integrated services, the break bit in
  927.      the general parameters service header must be set. In practice, this
  928.      bit will usually be set by another network element which supports RSVP,
  929.  
  930.  
  931.  
  932. J. Wroclawski                 Expires 3/97                     [Page 17]
  933. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  934.  
  935.  
  936.      but has been made aware of the gap in integrated services coverage.
  937.  
  938.      - In either case, the ADSPEC is passed back to RSVP for delivery to
  939.      the next hop along the path.
  940.  
  941. 3.3.3. Guaranteed Service ADSPEC data fragment
  942.  
  943.    The Guaranteed service uses the RSVP ADSPEC to carry data needed to
  944.    compute the C and D terms passed from the network to the application.
  945.    The minimum size of a non-empty guaranteed service data fragment is 8
  946.    32-bit words.  The ADSPEC fragment for Guaranteed service has the
  947.    following format:
  948.  
  949.        31            24 23           16 15            8 7             0
  950.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  951.    1   |     2 (a)     |x|  reserved   |             N-1 (b)           |
  952.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  953.    2   |    133 (c)    |     0 (d)     |             1 (e)             |
  954.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  955.    3   |   End-to-end composed value for C [Ctot] (32-bit integer)     |
  956.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  957.    4   |     134 (f)   |       (g)     |             1 (h)             |
  958.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  959.    5   |   End-to-end composed value for D [Dtot] (32-bit integer)     |
  960.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  961.    6   |     135 (i)   |       (j)     |             1 (k)             |
  962.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  963.    7   | Since-last-reshaping point composed C [Csum] (32-bit integer) |
  964.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  965.    8   |     136 (l)   |       (m)     |             1 (n)             |
  966.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  967.    9   | Since-last-reshaping point composed D [Dsum] (32-bit integer) |
  968.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  969.    10  | Service-specific general parameter headers/values, if present |
  970.     .  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  971.     .
  972.    N   |                                                               |
  973.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  974.  
  975.      (a) - Per-Service header, service number 2 (Guaranteed)
  976.      (b) - Break bit and Length of per-service data in 32-bit
  977.            words not including header word.
  978.      (c) - Parameter ID, parameter 133 (Composed Ctot)
  979.      (d) - Parameter 133 flag byte
  980.      (e) - Parameter 133 length, 1 word not including header
  981.      (f) - Parameter ID, parameter 134 (Composed Dtot)
  982.      (g) - Parameter 134 flag byte
  983.      (h) - Parameter 134 length, 1 word not including header
  984.  
  985.  
  986.  
  987. J. Wroclawski                 Expires 3/97                     [Page 18]
  988. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  989.  
  990.  
  991.      (i) - Parameter ID, parameter 135 (Composed Csum).
  992.      (j) - Parameter 135 flag byte
  993.      (k) - Parameter 135 length, 1 word not including header
  994.      (l) - Parameter ID, parameter 136 (Composed Dsum).
  995.      (m) - Parameter 136 flag byte
  996.      (n) - Parameter 136 length, 1 word not including header
  997.  
  998.    When a node which actually implements guaranteed service creates the
  999.    guaranteed service adspec fragment, the parameter values are set to
  1000.    the local values for each parameter. When an application or network
  1001.    element which does not itself implement guaranteed service creates a
  1002.    guaranteed service adspec fragment, it should set the values of each
  1003.    parameter to zero, and set the break bit to indicate that the service
  1004.    is not actually implemented at the node.
  1005.  
  1006.    An application or host RSVP which is creating a guaranteed service
  1007.    adspec fragment but does not itself implement the guaranteed service
  1008.    may create a truncated "empty" guaranteed adspec fragment consisting
  1009.    of only a header word:
  1010.  
  1011.        31            24 23           16 15            8 7             0
  1012.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1013.    1   |     2 (a)     |1|    (b)      |         0 (c)                 |
  1014.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1015.  
  1016.      (a) - Per-Service header, service number 2 (Guaranteed)
  1017.      (b) - Break bit (set, service not implemented)
  1018.      (c) - Length of per-service data in 32-bit words not
  1019.            including header word.
  1020.  
  1021.    This might occur if the sending application or host does not do
  1022.    resource reservation iself, but still wants the network to do so.
  1023.    Note that in this case the break bit will always be set, since the
  1024.    creator of the adspec fragment does not itself implement guaranteed
  1025.    service.
  1026.  
  1027.    When a PATH message ADSPEC containing a per-service header for
  1028.    Guaranteed service encounters a network element implementing
  1029.    Guaranteed service, the guaranteed service data fragment is updated:
  1030.  
  1031.      - If the data block in the ADSPEC is an empty (header-only) block
  1032.      the header-only fragment must first be expanded into the complete
  1033.      data fragment described above, with initial values of Ctot, Dtot,
  1034.      Csum, and Dsum set to zero. An empty fragment can be recognized
  1035.      quickly by checking for a size field of zero.  The value of the
  1036.      break bit in the header is preserved when the additional Guaranteed
  1037.      service data is added. The overall message length and the
  1038.      guaranteed-service data fragment size (field (b) in the pictures
  1039.  
  1040.  
  1041.  
  1042. J. Wroclawski                 Expires 3/97                     [Page 19]
  1043. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  1044.  
  1045.  
  1046.      above) are changed to reflect the increased message length.
  1047.  
  1048.      The values of Ctot, Csum, Dtot, and Dsum in the ADSPEC data
  1049.      fragment are then composed with the local values exported by the
  1050.      network element according to the composition functions defined in
  1051.      [RFCG].
  1052.  
  1053.      - When a PATH message ADSPEC with a Guaranteed service header
  1054.      encounters a network element that supports RSVP but does *not*
  1055.      implement Guaranteed service, the network element sets the break
  1056.      bit in the Guaranteed service header.
  1057.  
  1058.      - The new values are placed in the correct fields of the ADSPEC,
  1059.      and the ADSPEC is passed back to RSVP for delivery to the next hop
  1060.      along the path.
  1061.  
  1062.    When a PATH message ADSPEC containing a Guaranteed service data
  1063.    fragment encounters a network element that supports RSVP but does
  1064.    *not* implement Guaranteed service, the network element sets the
  1065.    break bit in the Guaranteed service header.
  1066.  
  1067.    When a PATH message ADSPEC *without* a Guaranteed service header
  1068.    encounters a network element implementing Guaranteed service, the
  1069.    Guaranteed service module of the network element leaves the ADSPEC
  1070.    unchanged. The absence of a Guaranteed service per-service header in
  1071.    the ADSPEC indicates that the application does not care about
  1072.    Guaranteed service.
  1073.  
  1074. 3.3.4. Controlled-Load Service ADSPEC data fragment
  1075.  
  1076.    Unlike the Guaranteed service, the Controlled-Load service does not
  1077.    require extra ADSPEC data to function correctly. The only ADSPEC data
  1078.    specific to the Controlled-Load service is the Controlled-Load break
  1079.    bit.  Therefore the usual Controlled-Load service data block contains
  1080.    no extra information. The minimum size of the controlled-load service
  1081.    data fragment is 1 32-bit word.
  1082.  
  1083.        31            24 23           16 15            8 7             0
  1084.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1085.    1   |     5 (a)     |x|  (b)        |            N-1 (c)            |
  1086.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1087.    2   | Service-specific general parameter headers/values, if present |
  1088.     .  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1089.     .
  1090.    N   |                                                               |
  1091.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1092.      (a) - Per-Service header, service number 5 (Controlled-Load)
  1093.      (b) - Break bit
  1094.  
  1095.  
  1096.  
  1097. J. Wroclawski                 Expires 3/97                     [Page 20]
  1098. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  1099.  
  1100.  
  1101.      (c) - Length of per-service data in 32 bit words not including
  1102.            header word.
  1103.  
  1104.    The Controlled-Load portion of the ADSPEC is processed according to
  1105.    the following rules:
  1106.  
  1107.      - When a PATH message ADSPEC with a Controlled-Load service header
  1108.      encounters a network element implementing Controlled-Load service,
  1109.      the network element makes no changes to the service header.
  1110.  
  1111.      - When a PATH message ADSPEC with a Controlled-Load service header
  1112.      encounters a network element that supports RSVP but does *not*
  1113.      implement Controlled-Load service, the network element sets the
  1114.      break bit in the Controlled-Load service header.
  1115.  
  1116.      - In either case, the ADSPEC is passed back to RSVP for delivery to
  1117.      the next hop along the path.
  1118.  
  1119. 3.3.5. Overriding Global ADSPEC Data with Service-Specific Information
  1120.  
  1121.    In some cases, the default values for the general parameters are not
  1122.    correct for a particular service. For example, an implementation of
  1123.    Guaranteed service may accept only packets with a smaller maximum
  1124.    size than the link MTU, or the percentage of outgoing link bandwidth
  1125.    made available to the Controlled-Load service at a network element
  1126.    may be administratively limited to less than the overall bandwidth.
  1127.  
  1128.    In these cases, a service-specific value, as well as the default
  1129.    value, is reported to the receiver receiving the ADSPEC.  Service-
  1130.    specific information which overrides general information is carried
  1131.    by a parameter with the same name as the general parameter, placed
  1132.    within the data fragment of the QoS control service to which it
  1133.    applies. These service-specific values are referred to as override or
  1134.    service-specific general parameters.
  1135.  
  1136.    For example, the following Controlled-Load ADSPEC fragment carries
  1137.    information overriding the global path bandwidth estimate with a
  1138.    different value:
  1139.  
  1140.        31           24 23           16 15            8 7             0
  1141.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1142.    1   |     5 (a)     |x| (b)         |             2 (c)             |
  1143.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1144.    2   |     6 (d)     |      0 (d)    |             1 (e)             |
  1145.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1146.    3   |  Path b/w estimate for C-L service (32b IEEE FP number)       |
  1147.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1148.  
  1149.  
  1150.  
  1151.  
  1152. J. Wroclawski                 Expires 3/97                     [Page 21]
  1153. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  1154.  
  1155.  
  1156.      (a) - Per-Service header, service number 5 (Controlled-Load)
  1157.      (b) - Break bit
  1158.      (c) - Length of per-service data, two words not including header
  1159.      (c) - Parameter ID, parameter 6
  1160.            (AVAILABLE_PATH_BANDWIDTH general parameter from [RFCGP])
  1161.      (d) - Parameter 6 flags (none set)
  1162.      (e) - Parameter 6 length, one word not including header
  1163.  
  1164.    The presence of override parameters in a data fragment can be quickly
  1165.    detected by examining the fragment's length field, which will be
  1166.    larger than the "standard" length for the fragment.  Specific
  1167.    override parameters can be easily identified by examining the
  1168.    parameter headers, because they have parameter_number's from the
  1169.    general parameter portion of the number space (1-127), but are found
  1170.    in service-specific data blocks (those with service_numbers between 2
  1171.    and 254 in the per_service header field).
  1172.  
  1173.    The presence of override parameters in a data fragment is optional. A
  1174.    parameter header/value pair is added only when a particular
  1175.    application or QoS control service wishes to override the global
  1176.    value of a general parameter with a service-specific value.
  1177.  
  1178.    As with IP options, it is only the use of these override parameters
  1179.    that is optional. All implementations must be prepared to receive and
  1180.    process override parameters.
  1181.  
  1182.    The basic principle for handling override parameters is to use the
  1183.    override value (local or adspec) if it exists, and to use the default
  1184.    value otherwise. If a local node exports an override value for a
  1185.    general parameter, but there is no override value in the arriving
  1186.    adspec, the local node adds it. The following pseudo-code fragment
  1187.    gives more detail:
  1188.  
  1189.    /* Adspec parameter processing rules *
  1190.  
  1191.    <get arriving ADSPEC from RSVP>
  1192.  
  1193.    for ( <each service number N with a fragment in the ADSPEC> ) {
  1194.      if ( <the local node does not support the service> ) {
  1195.        <set the break bit in the service header>
  1196.      } else {
  1197.        for ( <each parameter in the data fragment for service N> ) {
  1198.          if ( < the local service N supplies a value for the parameter> ) {
  1199.             <compose the arriving and values and update the adspec>
  1200.          } else {
  1201.             /* Must be a general parameter, or service N would have
  1202.              * supplied a value..
  1203.              */
  1204.  
  1205.  
  1206.  
  1207. J. Wroclawski                 Expires 3/97                     [Page 22]
  1208. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  1209.  
  1210.  
  1211.             <compose the arriving value with the local default value
  1212.              and update the adspec>
  1213.          }
  1214.        }
  1215.        for ( <any parameters supplied by the local service N implememtation
  1216.               but not found in the adspec> ) {
  1217.             /*
  1218.              * Must be an override value for a general parameter,
  1219.              * or the adspec would have contained a value..
  1220.              */
  1221.             <compose the local override value with the arriving default
  1222.              value (from the service 1 data fragment) and add the parameter
  1223.              to the adspec's service N fragment in parameter_number order>
  1224.        }
  1225.      }
  1226.    }
  1227.  
  1228.    <pass updated ADSPEC back to RSVP>
  1229.  
  1230.    In practice, the two 'for' loops can be combined. Since override
  1231.    parameters within a service's fragment are transmitted in numerical
  1232.    order, it is possible to determine whether a parameter is present
  1233.    without scanning the entire fragment. Also, because the data
  1234.    fragments are ordered by service_number, the default values for
  1235.    general parameters will always be read before they might be needed to
  1236.    update local override values in the second for loop.
  1237.  
  1238. 3.3.6. Example
  1239.  
  1240.    The picture below shows the complete adspec for an application which
  1241.    can use either controlled-load or guaranteed service. In the example,
  1242.    data fragments are present for general parameters, guaranteed, and
  1243.    controlled-load services. All fragments are of standard size, and
  1244.    there are no override parameters present.
  1245.  
  1246.        31            24 23           16 15            8 7             0
  1247.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1248.    1   | 0 (a) |    Unused             |          19 (b)               |
  1249.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1250.    2   |    1  (c)     |x| reserved (d)|           8 (e)               |
  1251.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1252.    3   |    4 (f)      |    (g)        |           1 (h)               |
  1253.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1254.    4   |  zero extension of ..           IS hop cnt (16-bit unsigned)  |
  1255.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1256.    5   |    6 (i)      |    (j)        |           1 (k)               |
  1257.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1258.    6   |  Path b/w estimate  (32-bit IEEE floating point number)       |
  1259.  
  1260.  
  1261.  
  1262. J. Wroclawski                 Expires 3/97                     [Page 23]
  1263. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  1264.  
  1265.  
  1266.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1267.    7   |     8 (l)     |    (m)        |           1 (n)               |
  1268.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1269.    8   |        Minimum path latency (32-bit integer)                  |
  1270.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1271.    9   |     10 (o)    |      (p)      |           1 (q)               |
  1272.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1273.    10  |  zero extension of ..        composed MTU (16-bit unsigned)   |
  1274.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1275.    11  |     2 (r)     |x| reserved (s)|             8 (t)             |
  1276.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1277.    12  |    133 (u)    |       (v)     |             1 (w)             |
  1278.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1279.    13  |   End-to-end composed value for C [Ctot] (32-bit integer)     |
  1280.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1281.    14  |     134 (x)   |       (y)     |             1 (z)             |
  1282.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1283.    15  |   End-to-end composed value for D [Dtot] (32-bit integer)     |
  1284.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1285.    16  |     135 (aa   |       (bb     |             1 (cc)            |
  1286.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1287.    17  | Since-last-reshaping point composed C [Csum] (32-bit integer) |
  1288.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1289.    18  |     136 (dd)  |       (ee)    |             1 (ff)            |
  1290.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1291.    19  | Since-last-reshaping point composed D [Dsum] (32-bit integer) |
  1292.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1293.    20  |     5 (gg     |x   0  (hh)    |             0 (ii)            |
  1294.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1295.  
  1296.      Word 1: Message Header:
  1297.      (a) - Message header and version number
  1298.      (b) - Message length - 19 words not including header
  1299.  
  1300.      Words 2-7: Default general characterization parameters
  1301.      (c) - Per-Service header, service number 1
  1302.            (Default General Parameters)
  1303.      (d) - Global Break bit (NON_IS_HOP general parameter 2) (marked x)
  1304.      (e) - Length of General Parameters data block (8 words)
  1305.      (f) - Parameter ID, parameter 4 (NUMBER_OF_IS_HOPS
  1306.            general parameter)
  1307.      (g) - Parameter 4 flag byte
  1308.      (h) - Parameter 4 length, 1 word not including header
  1309.      (i) - Parameter ID, parameter 6 (AVAILABLE_PATH_BANDWIDTH
  1310.            general parameter)
  1311.      (j) - Parameter 6 flag byte
  1312.      (k) - Parameter 6 length, 1 word not including header
  1313.      (l) - Parameter ID, parameter 8 (MINIMUM_PATH_LATENCY
  1314.  
  1315.  
  1316.  
  1317. J. Wroclawski                 Expires 3/97                     [Page 24]
  1318. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  1319.  
  1320.  
  1321.            general parameter)
  1322.      (m) - Parameter 8 flag byte
  1323.      (n) - Parameter 8 length, 1 word not including header
  1324.      (o) - Parameter ID, parameter 10 (PATH_MTU general parameter)
  1325.      (p) - Parameter 10 flag byte
  1326.      (q) - Parameter 10 length, 1 word not including header
  1327.  
  1328.      Words 11-19: Guaranteed service parameters
  1329.      (r) - Per-Service header, service number 2 (Guaranteed)
  1330.      (s) - Break bit
  1331.      (t) - Length of per-service data, 8 words not including header
  1332.      (u) - Parameter ID, parameter 133 (Composed Ctot)
  1333.      (v) - Composed Ctot flag byte
  1334.      (w) - Composed Ctot length, 1 word not including header
  1335.      (x) - Parameter ID, parameter 134 (Composed Dtot)
  1336.      (y) - Composed Dtot flag byte
  1337.      (z) - Composed Dtot length, 1 word not including header
  1338.      (aa)- Parameter ID, parameter 135 (Composed Csum).
  1339.      (bb)- Composed Csum flag byte
  1340.      (cc)- Composed Csum length, 1 word not including header
  1341.      (dd)- Parameter ID, parameter 136 (Composed Dsum).
  1342.      (ee)- Composed Dsum flag byte
  1343.      (ff)- Composed Dsum length, 1 word not including header
  1344.  
  1345.      Word 20: Controlled-Load parameters
  1346.      (gg - Per-Service header, service number 5 (Controlled-Load)
  1347.      (hh)- Break bit
  1348.      (ii)- Length of controlled-load data, 0 words not including header
  1349.  
  1350. 4. Security Considerations
  1351.  
  1352.    Security considerations are not discussed in this memo.
  1353.  
  1354. Appendix 1: Message construction rules
  1355.  
  1356.    This section gives the rule used to generate the object formats of
  1357.    Section 3. It is a general wire format for encoding integrated
  1358.    services data objects within setup and management protocol messages.
  1359.    The format has a three-level structure:
  1360.  
  1361.      - An overall message header carries a version number and message
  1362.      length.  Providing this header in a standard format allows the same
  1363.      code library to handle data objects carried by multiple setup
  1364.      protocols.
  1365.  
  1366.      - Per-service fragments carry information about a specific QoS
  1367.      control service, such as guaranteed [RFCG] or controlled load
  1368.      [RFCCL]. Each per-service fragment carries one or more parameters.
  1369.  
  1370.  
  1371.  
  1372. J. Wroclawski                 Expires 3/97                     [Page 25]
  1373. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  1374.  
  1375.  
  1376.      The set of parameters present in a fragment is determined by the
  1377.      needs of the protocol in use. Examples are given in Section 2.
  1378.  
  1379.      - Parameters are the actual data used to control or monitor a
  1380.      service. A parameter may be a single quantity such as an integer,
  1381.      or a composite data structure such as a TSpec. The parameters
  1382.      specific to a service are defined by the service specification. The
  1383.      available general parameters, with definitions shared by many
  1384.      services, are defined by [RFCGP].
  1385.  
  1386. A1.1. Message Header
  1387.  
  1388.    The 32-bit message header specifies the message format version number
  1389.    and total length of the message. The overall message must be aligned
  1390.    to a 32-bit boundary within the transport protocol's data packet.
  1391.    The message length is measured in 32-bit words *not including the
  1392.    word containing the header*. This is to lower the probability of an
  1393.    accidentally cleared word resulting in an infinite loop in the
  1394.    message parser.
  1395.  
  1396.    The Message Header is represented by a 32-bit bitfield laid out as
  1397.    shown below and then encoded as an XDR unsigned integer. Encoding as
  1398.    an XDR unsigned integer is equivalent to converting the bitfield from
  1399.    the machine's native format to big-endian network byte order.
  1400.  
  1401.    Message Header
  1402.  
  1403.        MSB                                                           LSB
  1404.        31    28 27                   16 15                            0
  1405.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1406.        |   V   |    Unused             |     OVERALL LENGTH            |
  1407.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1408.  
  1409.    V               - Message format version; currently 0
  1410.    OVERALL LENGTH  - Message length in 32-bit words not including header
  1411.  
  1412.  
  1413. A1.2. Per-Service Data Header
  1414.  
  1415.    The message header is followed by one or more service-specific data
  1416.    blocks, each containing the data associated with a specific QoS
  1417.    control service. Each service-specific data block begins with an
  1418.    identifying header. This 32-bit header contains the service number, a
  1419.    one-bit flag (the "break bit", because it indicates a break in the
  1420.    QoS control path) and a length field. The length field specifies the
  1421.    number of 32-bit words used to hold data specific to this service as
  1422.    a count of 32-bit words *not including the word containing the
  1423.    header*.
  1424.  
  1425.  
  1426.  
  1427. J. Wroclawski                 Expires 3/97                     [Page 26]
  1428. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  1429.  
  1430.  
  1431.    The break bit, if set, indicates that the service specified by the
  1432.    header was unsupported or unrecognized at some point in the message's
  1433.    path through the network. This bit corresponds to the general
  1434.    parameter NON_IS_HOP defined in [RFCGP]. It is cleared when a message
  1435.    is first generated, and set whenever the message passes through an
  1436.    element that does not recognize the service_number in the per-service
  1437.    header.
  1438.  
  1439.    The Per-Service Data Header is represented by a 32-bit bitfield laid
  1440.    out as shown below and then encoded as an XDR unsigned integer.
  1441.  
  1442.    Per-Service Data Header
  1443.  
  1444.        MSB                                                           LSB
  1445.        31            24 23           16 15                            0
  1446.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1447.        |  SVC_NUMBER   |B| Reserved    |            SVC_LENGTH         |
  1448.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1449.  
  1450.    SVC_NUMBER      - Service ID number (defined in service specification).
  1451.    B               - Break bit - service unsupported/break in path.
  1452.    SVC_LENGTH      - Service-specific data length in 32-bit words,
  1453.                      not including header.
  1454.  
  1455. A1.3. Parameter Header
  1456.  
  1457.    The per-service header is followed by one or more service parameter
  1458.    blocks, each identified by a Parameter Header. This header contains
  1459.    the parameter identifier (parameter number), the length of the data
  1460.    carrying the parameter's value, and a flag field. The data field(s)
  1461.    of the parameter follow.  The parameter number, as well as the
  1462.    meaning and format of the data words following the header, are given
  1463.    by the specification which defines the parameter.
  1464.  
  1465.    The Parameter Header is represented by a 32-bit bitfield laid out as
  1466.    shown below and then encoded as an XDR unsigned integer.
  1467.  
  1468.    Parameter Header
  1469.  
  1470.        MSB                                                           LSB
  1471.        31            24 23           16 15                            0
  1472.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1473.        |  PARAM_NUM    |I   FLAGS      |         PARAM_LENGTH          |
  1474.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1475.  
  1476.    PARAM_NUM       - Parameter number (defined in service specification)
  1477.    FLAGS           - Per-parameter flags
  1478.    PARAM_LENGTH    - Length of per-parameter data in 32-bit words, not
  1479.  
  1480.  
  1481.  
  1482. J. Wroclawski                 Expires 3/97                     [Page 27]
  1483. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  1484.  
  1485.  
  1486.                      including the header word.
  1487.  
  1488.    The following flags are currently defined in the FLAGS field:
  1489.  
  1490.    I (bit 23)      - INVALID
  1491.  
  1492.                      This flag indicates that the parameter value was
  1493.                      not correctly processed at one or more network
  1494.                      elements along a data path.  It is intended for use
  1495.                      in a possible future service composition scheme.
  1496.  
  1497.    Other bits in the FLAGS field of the parameter header are currently
  1498.    reserved, and should be set to zero.
  1499.  
  1500. A1.4. Parameter Data
  1501.  
  1502.    Following the Parameter Header is the actual data representing the
  1503.    parameter value. Parameter values are encoded into one or more 32-bit
  1504.    words using the XDR external data representation described in
  1505.    [RFCXDR], and the resulting words are placed in the message.
  1506.  
  1507.    The document defining a parameter should provide an XDR description
  1508.    of the parameter's data fields. If it does not, a description should
  1509.    be provided in this note.
  1510.  
  1511. References
  1512.  
  1513.    [RFCRSVP] B. Braden, et. al. "Resource Reservation Protocol (RSVP) -
  1514.    Version 1 Functional Specification", Internet Draft, July 1996,
  1515.    <draft-ietf-rsvp-spec-13.txt>
  1516.  
  1517.    [RFCTEMPLATE] S. Shenker and J. Wroclawski. "Network Element QoS
  1518.    Control Service Specification Template". Internet Draft, July 1996,
  1519.    <draft-ietf-intserv-svc-template-03.txt>
  1520.  
  1521.    [RFCG] S. Shenker, C. Partridge, and R Guerin. "Specification of
  1522.    Guaranteed Quality of Service", Internet Draft, July 1996, <draft-
  1523.    ietf-intserv-guaranteed-svc-06.txt>
  1524.  
  1525.    [RFCCL] J. Wroclawski. "Specification of the Controlled Load Quality
  1526.    of Service", Internet Draft, July 1996, <draft-ietf-intserv-ctrl-
  1527.    load-svc-03.txt>
  1528.  
  1529.    [RFCGP] S. Shenker and J. Wroclawski. "General Characterization
  1530.    Parameters for Integrated Service Network Elements", Internet Draft,
  1531.    October 1996, <draft-ietf-intserv-charac-02.txt>
  1532.  
  1533.    [RFCXDR] R. Srinivansan. "XDR: External Data Representation
  1534.  
  1535.  
  1536.  
  1537. J. Wroclawski                 Expires 3/97                     [Page 28]
  1538. INTERNET-DRAFT     draft-ietf-intserv-rsvp-use-01.txt      October, 1996
  1539.  
  1540.  
  1541.    Standard", RFC 1832, August 1995.
  1542.  
  1543. Author's Address:
  1544.  
  1545.    John Wroclawski
  1546.    MIT Laboratory for Computer Science
  1547.    545 Technology Sq.
  1548.    Cambridge, MA  02139
  1549.    jtw@lcs.mit.edu
  1550.    617-253-7885
  1551.    617-253-2673 (FAX)
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592. J. Wroclawski                 Expires 3/97                     [Page 29]
  1593.