home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / rfc / rfc2209 < prev    next >
Text File  |  1997-10-01  |  52KB  |  1,404 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                          R. Braden
  8. Request For Comments: 2209                                           ISI
  9. Category: Standards Track                                       L. Zhang
  10.                                                                     UCLA
  11.                                                           September 1997
  12.  
  13.                 Resource ReSerVation Protocol (RSVP) --
  14.                    Version 1 Message Processing Rules
  15.  
  16.  
  17. Status of this Memo
  18.  
  19.    This document specifies an Internet standards track protocol for the
  20.    Internet community, and requests discussion and suggestions for
  21.    improvements.  Please refer to the current edition of the "Internet
  22.    Official Protocol Standards" (STD 1) for the standardization state
  23.    and status of this protocol.  Distribution of this memo is unlimited.
  24.  
  25.  
  26. Abstract
  27.  
  28.    This memo contains an algorithmic description of the rules used by an
  29.    RSVP implementation for processing messages.  It is intended to
  30.    clarify the version 1 RSVP protocol specification.
  31.  
  32.    This memo provides a generic description of the rules for the
  33.    operation of Version 1 of RSVP [RFC 2205].  It is intended to outline
  34.    a set of algorithms that will accomplish the needed function,
  35.    omitting many details.
  36.  
  37. 1. GENERIC DATA STRUCTURES
  38.  
  39.    This memo assumes the generic interface calls defined in [RFC 2005]
  40.    and the following data structures.  An actual implementation may use
  41.    additional or different data structures and interfaces.  The data
  42.    structure fields that are shown are required unless they are
  43.    explicitly labelled as optional.
  44.  
  45.    o    PSB -- Path State Block
  46.  
  47.         Each PSB holds path state for a particular (session, sender)
  48.         pair, defined by SESSION and SENDER_TEMPLATE objects,
  49.         respectively, received in a PATH message.
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Braden & Zhang              Standards Track                     [Page 1]
  59.  
  60. RFC 2209                RSVP-Message Processing           September 1997
  61.  
  62.  
  63.         PSB contents include the following values from a PATH message:
  64.  
  65.         -    Session
  66.  
  67.         -    Sender_Template
  68.  
  69.         -    Sender_Tspec
  70.  
  71.         -    The previous hop IP address and the Logical Interface
  72.              Handle (LIH) from a PHOP object
  73.  
  74.         -    The remaining IP TTL
  75.  
  76.         -    POLICY_DATA and/or ADSPEC objects (optional)
  77.  
  78.         -    Non_RSVP flag
  79.  
  80.         -    E_Police flag
  81.  
  82.         -    Local_Only flag
  83.  
  84.         In addition, the PSB contains the following information provided
  85.         by routing: OutInterface_list, which is the list of outgoing
  86.         interfaces for this (sender, destination), and IncInterface,
  87.         which is the expected incoming interface.  For a unicast
  88.         destination, OutInterface_list contains one entry and
  89.         IncInterface is undefined.
  90.  
  91.         Note that there may be more than one PSB for the same (session,
  92.         sender) pair but different incoming interfaces.  At most one of
  93.         these, which will have the Local_Only flag off, will be the PSB
  94.         used for forwarding PATH messages downstream; we will refer to
  95.         it as the "forwarding PSB" in the following.  The other PSB's
  96.         will have the Local_Only flag on and an empty
  97.         OutInterface_list.h The Local_Only flag is needed to correctly
  98.         match PSB's against RSB's, by the rules of [RFC 2205].
  99.  
  100.    o    RSB -- Reservation State Block
  101.  
  102.         Each RSB holds a reservation request that arrived in a
  103.         particular RESV message, corresponding to the triple:  (session,
  104.         next hop, Filter_spec_list).  Here "Filter_spec_list" may be a
  105.         list of FILTER_SPECs (for SE style), a single FILTER_SPEC (FF
  106.         style), or empty (WF style).  We define the virtual object type
  107.         "FILTER_SPEC*" for such a data structure.
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Braden & Zhang              Standards Track                     [Page 2]
  115.  
  116. RFC 2209                RSVP-Message Processing           September 1997
  117.  
  118.  
  119.         RSB contents include:
  120.  
  121.         -    Session specification
  122.  
  123.         -    Next hop IP address
  124.  
  125.         -    Filter_spec_list
  126.  
  127.         -    The outgoing (logical) interface OI on which the
  128.              reservation is to be made or has been made.
  129.  
  130.         -    Style
  131.  
  132.         -    Flowspec
  133.  
  134.         -    A SCOPE object (optional, depending upon style)
  135.  
  136.         -    RESV_CONFIRM object that was received (optional)
  137.  
  138.    o    TCSB -- Traffic Control State Block
  139.  
  140.         Each TCSB holds the reservation specification that has been
  141.         handed to traffic control for a specific outgoing interface.  In
  142.         general, TCSB information is derived from RSB's for the same
  143.         outgoing interface.  Each TCSB defines a single reservation for
  144.         a particular triple: (session, OI, Filter_spec_list).   TCSB
  145.         contents include:
  146.  
  147.         -    Session
  148.  
  149.         -    OI (Outgoing Interface)
  150.  
  151.         -    Filter_spec_list
  152.  
  153.         -    TC_Flowspec, the effective flowspec, i.e., the LUB over the
  154.              corresponding FLOWSPEC values from matching RSB's.
  155.              TC_Flowspec is passed to traffic control to make the actual
  156.              reservation.
  157.  
  158.          -   Fwd_Flowspec, the updated object to be forwarded
  159.              after merging.
  160.  
  161.         -    TC_Tspec, equal to Path_Te, the effective sender Tspec.
  162.  
  163.         -    Police Flags
  164.  
  165.              The flags are E_Police_Flag, M_Police_Flag, and
  166.              B_Police_Flag.
  167.  
  168.  
  169.  
  170. Braden & Zhang              Standards Track                     [Page 3]
  171.  
  172. RFC 2209                RSVP-Message Processing           September 1997
  173.  
  174.  
  175.         -    Rhandle, F_Handle_list
  176.  
  177.              Handles returned by the traffic control interface,
  178.              corresponding to a flowspec and perhaps a list of filter
  179.              specs.
  180.  
  181.         -    A RESV_CONFIRM object to be forwarded.
  182.  
  183.    o    BSB -- Blockade State Block
  184.  
  185.         Each BSB contains an element of blockade state.  Depending upon
  186.         the reservation style in use, the BSB's may be per (session,
  187.         sender_template) pair or per (session, PHOP) pair.  In practice,
  188.         an implementation might embed a BSB within a PSB; however, for
  189.         clarity we describe BSB's independently.
  190.  
  191.         The contents of a BSB include:
  192.  
  193.         -    Session
  194.  
  195.         -    Sender_Template (which is also a filter spec)
  196.  
  197.         -    PHOP
  198.  
  199.         -    FLOWSPEC Qb
  200.  
  201.         -    Blockade timer Tb
  202.  
  203.         The following Boolean Flag variables are used in this section:
  204.         Path_Refresh_Needed, Resv_Refresh_Needed, Tear_Needed,
  205.         Need_Scope, B_Merge, and NeworMod.  Refresh_PHOP_list is a
  206.         variable-length list of PHOPs to be refreshed.
  207.  
  208. 2. PROCESSING RULES
  209.  
  210.    MESSAGE ARRIVES
  211.  
  212.    Verify version number and RSVP checksum, and discard message if any
  213.    mismatch is found.
  214.  
  215.    If the message type is not PATH or PTEAR or RACK and if the IP
  216.    destination address does not match any of the addresses of the local
  217.    interfaces, then forward the message to IP destination address and
  218.    return.
  219.  
  220.    Parse the sequence of objects in the message.  If any required
  221.    objects are missing or the length field of the common header does not
  222.    match an object boundary, discard the message and return.
  223.  
  224.  
  225.  
  226. Braden & Zhang              Standards Track                     [Page 4]
  227.  
  228. RFC 2209                RSVP-Message Processing           September 1997
  229.  
  230.  
  231.    Verify the INTEGRITY object, if any.  If the check fails, discard the
  232.    message and return.
  233.  
  234.    Verify the consistent use of port fields.  If the DstPort in the
  235.    SESSION object is zero but the SrcPort in a SENDER_TEMPLATE or
  236.    FILTER_SPEC object is non-zero, then the message has a "conflicting
  237.    source port" error; silently discard the message and return.
  238.  
  239.    Processing of POLICY_DATA objects will be specified in the future.
  240.  
  241.    Further processing depends upon message type.
  242.  
  243.    PATH MESSAGE ARRIVES
  244.  
  245.    Assume the PATH message arrives on interface InIf.
  246.  
  247.    Process the sender descriptor object sequence in the message as
  248.    follows.  The Path_Refresh_Needed and Resv_Refresh_Needed flags are
  249.    initially off.
  250.  
  251.    o    Search for a path state block (PSB) whose (session,
  252.         sender_template) pair matches the corresponding objects in the
  253.         message, and whose IncInterface matches InIf.
  254.  
  255.              During this search:
  256.  
  257.              1.   If a PSB is found whose session matches the
  258.                   DestAddress and Protocol Id fields of the received
  259.                   SESSION object, but the DstPorts differ and one is
  260.                   zero, then build and send a "Conflicting Dst Port"
  261.                   PERR message, drop the PATH message, and return.
  262.  
  263.              2.   If a PSB is found with a matching sender host but the
  264.                   Src Ports differ and one of the SrcPorts is zero, then
  265.                   build and send an "Ambiguous Path" PERR message, drop
  266.                   the PATH message, and return.
  267.  
  268.              3.   If a forwarding PSB is found, i.e., a PSB that matches
  269.                   the (session, sender_template) pair and whose
  270.                   Local_Only flag is off, save a pointer to it in the
  271.                   variable fPSB.  If none is found, set fPSB to NULL.
  272.  
  273.         o    If there was no matching PSB, then:
  274.  
  275.              1.   Create a new PSB.
  276.  
  277.              2.   Copy contents of the SESSION, SENDER_TEMPLATE,
  278.                   SENDER_TSPEC, and PHOP (IP address and LIH) objects
  279.  
  280.  
  281.  
  282. Braden & Zhang              Standards Track                     [Page 5]
  283.  
  284. RFC 2209                RSVP-Message Processing           September 1997
  285.  
  286.  
  287.                   into the PSB.
  288.  
  289.              3.   If the sender is from the local API, set
  290.                   OutInterface_List to the single interface whose
  291.                   address matches the sender address, and make
  292.                   IncInterface undefined.  Otherwise, turn on the
  293.                   Local_Only flag.
  294.  
  295.              4.   Turn on the Path_Refresh_Needed flag.
  296.  
  297.         o    Otherwise (there is a matching PSB):
  298.  
  299.              -    If the PHOP IP address, the LIH, or Sender_Tspec
  300.                   differs between the message and the PSB, copy the new
  301.                   value into the PSB and turn on the Path_Refresh_Needed
  302.                   flag.  If the PHOP IP address or the LIH differ, also
  303.                   turn on the Resv_Refresh_Needed flag.
  304.  
  305.         o    Call the resulting PSB the "current PSB" (cPSB).  Update
  306.              the cPSB, as follows:
  307.  
  308.              -    Start or Restart the cleanup timer for the PSB.
  309.  
  310.              -    If the message contains an ADSPEC object, copy it into
  311.                   the PSB.
  312.  
  313.              -    Copy E_Police flag from SESSION object into PSB.
  314.  
  315.              -    Store the received TTL into the PSB.
  316.                   If the received TTL differs from Send_TTL in the RSVP
  317.                   common header, set the Non_RSVP flag on in the PSB.
  318.  
  319.         o    If the PSB is new or if there is no route change
  320.              notification in place, then perform the following routing
  321.              manipulations, but not if the cPSB is from the local API.
  322.  
  323.              1.   Invoke the appropriate Route_Query routine using
  324.                   DestAddress from SESSION and (for multicast routing)
  325.                   SrcAddress from Sender_Template.
  326.  
  327.                   Call the results (Rt_OutL, Rt_InIf).
  328.  
  329.              2.   If the destination is multicast and Rt_InIf differs
  330.                   from IncInterface in the cPSB, but fPSB points to the
  331.                   cPSB, then do the following.
  332.  
  333.                   -    Turn on the Local_Only flag and clear the
  334.                        OutInterface_list of the fPSB.  Set the fPSB
  335.  
  336.  
  337.  
  338. Braden & Zhang              Standards Track                     [Page 6]
  339.  
  340. RFC 2209                RSVP-Message Processing           September 1997
  341.  
  342.  
  343.                        pointer to NULL.
  344.  
  345.                   -    Search for a PSB for the same (session,
  346.                        sender_template) pair whose IncInterface matches
  347.                        Rt_InIf.  If one is found, set fPSB to point to
  348.                        it.
  349.  
  350.              3.   If the destination is multicast and Rt_InIf is the
  351.                   same as IncInterface in the cPSB, but fPSB does not
  352.                   point to the cPSB, then do the following.
  353.  
  354.                   -    Copy into the cPSB the OutInterface_list from the
  355.                        PSB, if any, pointed to by fPSB.  Clear
  356.                        OutInterface_list and turn on the Local_Only flag
  357.                        in the PSB pointed to by fPSB, if any.
  358.  
  359.                   -    Turn off the Local_Only flag in the cPSB and set
  360.                        fPSB to point to cPSB.
  361.  
  362.              4.   If Rt_OutL differs from OutInterface_list of the PSB
  363.                   pointed to by fPSB, then:
  364.  
  365.                   -    Update the OutInterface_list of the PSB from
  366.                        Rt_OutL, and then execute the PATH LOCAL REPAIR
  367.                        event sequence below.
  368.  
  369.         o    If the Path_Refresh_Needed flag is now off, drop the PATH
  370.              message and return.
  371.  
  372.              Otherwise (the path state is new or modified), do
  373.              refreshes, upcalls, and state updates as follows.
  374.  
  375.              1.   If this PATH message came from a network interface and
  376.                   not from a local application, make a Path Event upcall
  377.                   for each local application for this session:
  378.  
  379.                        Call: <Upcall_Proc>( session-id, PATH_EVENT,
  380.                                     flags, sender_tspec, sender_template
  381.                                     [ , ADSPEC] [ , POLICY_DATA] )
  382.  
  383.              2.   If OutInterface_list is not empty, execute the PATH
  384.                   REFRESH event sequence (below) for the sender defined
  385.                   by the PSB.
  386.  
  387.              3.   Search for any matching reservation state, i.e., an
  388.                   RSB whose Filter_spec_list includes a FILTER_SPEC
  389.                   matching the SENDER_TEMPLATE and whose OI appears in
  390.                   the OutInterface_list, and make this the `active RSB'.
  391.  
  392.  
  393.  
  394. Braden & Zhang              Standards Track                     [Page 7]
  395.  
  396. RFC 2209                RSVP-Message Processing           September 1997
  397.  
  398.  
  399.                   If none is found, drop the PATH message and return.
  400.  
  401.              4.   Execute the RESV REFRESH sequence (below) for the PHOP
  402.                   in the PSB.
  403.  
  404.              5.   Execute the event sequence UPDATE TRAFFIC CONTROL to
  405.                   update the local traffic control state if necessary.
  406.                   This sequence will turn on the Resv_Refresh_Needed
  407.                   flag if the traffic control state has been modified in
  408.                   a manner that should trigger a reservation refresh.
  409.                   If so, execute the RESV REFRESH sequence for the PHOP
  410.                   in the PSB.
  411.  
  412.         o    Drop the PATH message and return.
  413.  
  414.    PTEAR MESSAGE ARRIVES
  415.  
  416.         o    Search for a PSB whose (Session, Sender_Template) pair
  417.              matches the corresponding objects in the message.  If no
  418.              matching PSB is found, drop the PTEAR message and return.
  419.  
  420.         o    Forward a copy of the PTEAR message to each outgoing
  421.              interface listed in OutInterface_list of the PSB.
  422.  
  423.         o    Find each RSB that matches this PSB, i.e., whose
  424.              Filter_spec_list matches Sender_Template in the PSB and
  425.              whose OI is included in OutInterface_list.
  426.  
  427.              1.   If the RSB style is explicit, then:
  428.                   -    Delete from Filter_spec_list the FILTER_SPEC that
  429.                        matches the PSB.
  430.  
  431.                   -    if Filter_spec_list is now empty, delete the RSB.
  432.  
  433.              2.   Otherwise (RSB style is wildcard) then:
  434.  
  435.                   -    If this RSB matches no other PSB, then delete the
  436.                        RSB.
  437.  
  438.              3.   If an RSB was found, execute the event sequence UPDATE
  439.                   TRAFFIC CONTROL (below) to update the traffic control
  440.                   state to be consistent with the current reservation
  441.                   and path state.
  442.  
  443.         o    Delete the PSB.
  444.  
  445.         o    Drop the PTEAR message and return.
  446.  
  447.  
  448.  
  449.  
  450. Braden & Zhang              Standards Track                     [Page 8]
  451.  
  452. RFC 2209                RSVP-Message Processing           September 1997
  453.  
  454.  
  455.    PERR MESSAGE ARRIVES
  456.  
  457.         o    Search for a PSB whose (SESSION, SENDER_TEMPLATE) pair
  458.              matches the corresponding objects in the message.  If no
  459.              matching PSB is found, drop the PERR message and return.
  460.  
  461.         o    If the previous hop address in the PSB is the local API,
  462.              make an error upcall to the application:
  463.  
  464.                   Call: <Upcall_Proc>( session-id, PATH_ERROR,
  465.                                  Error_code, Error_value, Node_Addr,
  466.                                  Sender_Template [ , Policy_Data] )
  467.  
  468.              Any SENDER_TSPEC or ADSPEC object in the message is
  469.              ignored.
  470.  
  471.              Otherwise, send a copy of the PERR message to the PHOP IP
  472.              address.
  473.  
  474.         o    Drop the PERR message and return.
  475.  
  476.    RESV MESSAGE ARRIVES
  477.  
  478.         Initially, Refresh_PHOP_list is empty and the
  479.         Resv_Refresh_Needed and NeworMod flags are off.  These variables
  480.         are used to control immediate reservation refreshes.
  481.  
  482.         o    Determine the Outgoing Interface OI
  483.  
  484.              The logical outgoing interface OI is taken from the LIH in
  485.              the NHOP object.  (If the physical interface is not implied
  486.              by the LIH, it can be learned from the interface matching
  487.              the IP destination address).
  488.  
  489.         o    Check the path state
  490.  
  491.              1.   If there are no existing PSB's for SESSION then build
  492.                   and send a RERR message (as described later)
  493.                   specifying "No path information", drop the RESV
  494.                   message, and return.
  495.  
  496.              2.   If a PSB is found with a matching sender host but the
  497.                   SrcPorts differ and one of the SrcPorts is zero, then
  498.                   build and send an "Ambiguous Path" PERR message, drop
  499.                   the RESV message, and return.
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Braden & Zhang              Standards Track                     [Page 9]
  507.  
  508. RFC 2209                RSVP-Message Processing           September 1997
  509.  
  510.  
  511.         o    Check for incompatible styles.
  512.  
  513.              If any existing RSB for the session has a style that is
  514.              incompatible with the style of the message, build and send
  515.              a RERR message specifying "Conflicting Style", drop the
  516.              RESV message, and return.
  517.  
  518.         Process the flow descriptor list to make reservations, as
  519.         follows, depending upon the style.  The following uses a filter
  520.         spec list struct Filtss of type FILTER_SPEC* (defined earlier).
  521.  
  522.         For FF style: execute the following steps independently for each
  523.         flow descriptor in the message, i.e., for each (FLOWSPEC,
  524.         Filtss) pair.  Here the structure Filtss consists of the
  525.         FILTER_SPEC from the flow descriptor.
  526.  
  527.         For SE style, execute the following steps once for (FLOWSPEC,
  528.         Filtss), with Filtss consisting of the list of FILTER_SPEC
  529.         objects from the flow descriptor.
  530.  
  531.         For WF style, execute the following steps once for (FLOWSPEC,
  532.         Filtss), with Filtss an empty list.
  533.  
  534.         o    Check the path state, as follows.
  535.  
  536.              1.   Locate the set of PSBs (senders) that route to OI and
  537.                   whose SENDER_TEMPLATEs match a FILTER_SPEC in Filtss.
  538.  
  539.                   If this set is empty, build and send an error message
  540.                   specifying "No sender information", and continue with
  541.                   the next flow descriptor in the RESV message.
  542.  
  543.              2.   If the style has explicit sender selection (e.g., FF
  544.                   or SE) and if any FILTER_SPEC included in Filtss
  545.                   matches more than one PSB, build and send a RERR
  546.                   message specifying "Ambiguous filter spec" and
  547.                   continue with the next flow descriptor in the RESV
  548.                   message.
  549.  
  550.              3.   If the style is SE and if some FILTER_SPEC included in
  551.                   Filtss matches no PSB, delete that FILTER_SPEC from
  552.                   Filtss.
  553.  
  554.              4.   Add the PHOP from the PSB to Refresh_PHOP_list, if the
  555.                   PHOP is not already on the list.
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Braden & Zhang              Standards Track                    [Page 10]
  563.  
  564. RFC 2209                RSVP-Message Processing           September 1997
  565.  
  566.  
  567.         o    Find or create a reservation state block (RSB) for
  568.              (SESSION, NHOP).  If the style is distinct, Filtss is also
  569.              used in the selection.  Call this the "active RSB".
  570.  
  571.         o    If the active RSB is new:
  572.  
  573.              1.   Set the session, NHOP, OI and style of the RSB from
  574.                   the message.
  575.  
  576.              2.   Copy Filtss into the Filter_spec_list of the RSB.
  577.  
  578.              3.   Copy the FLOWSPEC and any SCOPE object from the
  579.                   message into the RSB.
  580.  
  581.              4.   Set NeworMod flag on.
  582.  
  583.         o    If the active RSB is not new, check whether Filtss from the
  584.              message contains FILTER_SPECs that are not in the RSB; if
  585.              so, add the new FILTER_SPECs and turn on the NeworMod flag.
  586.  
  587.         o    Start or restart the cleanup timer on the active RSB, or,
  588.              in the case of SE style, on each FILTER_SPEC of the RSB
  589.              that also appears in Filtss.
  590.  
  591.         o    If the active RSB is not new, check whether STYLE, FLOWSPEC
  592.              or SCOPE objects have changed; if so, copy changed object
  593.              into RSB and turn on the NeworMod flag.
  594.  
  595.         o    If the message contained a RESV_CONFIRM object, copy it
  596.              into the RSB and turn on NeworMod flag.
  597.  
  598.         o    If the NeworMod flag is off, continue with the next flow
  599.              descriptor in the RESV message, if any.
  600.  
  601.         o    Otherwise (the NeworMod flag is on, i.e., the active RSB is
  602.              new or modified), execute the UPDATE TRAFFIC CONTROL event
  603.              sequence (below).  If the result is to modify the traffic
  604.              control state, this sequence will turn on the
  605.              Resv_Refresh_Needed flag and make a RESV_EVENT upcall to
  606.              any local application.
  607.  
  608.              If the UPDATE TRAFFIC CONTROL sequence fails with an error,
  609.              then delete a new RSB but restore the original reservation
  610.              in an old RSB.
  611.  
  612.         o    Continue with the next flow descriptor.
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Braden & Zhang              Standards Track                    [Page 11]
  619.  
  620. RFC 2209                RSVP-Message Processing           September 1997
  621.  
  622.  
  623.         o    When all flow descriptors have been processed, check the
  624.              Resv_Refresh_Needed flag.  If it is now on, execute the
  625.              RESV REFRESH sequence (below) for each PHOP in
  626.              Refresh_PHOP_list.
  627.  
  628.         o    Drop the RESV message and return.
  629.  
  630.              If processing a RESV message finds an error, a RERR message
  631.              is created containing flow descriptor and an ERRORS object.
  632.              The Error Node field of the ERRORS object is set to the IP
  633.              address of OI, and the message is sent unicast to NHOP.
  634.  
  635.    RTEAR MESSAGE ARRIVES
  636.  
  637.         Processing of a RTEAR message roughly parallels the processing
  638.         of the corresponding RESV message
  639.  
  640.         A RTEAR message arrives with an IP destination address matching
  641.         outgoing interface OI.  Flag Resv_Refresh_Needed is initially
  642.         off and Refresh_PHOP_list is empty.
  643.  
  644.         o    Determine the Outgoing Interface OI
  645.  
  646.              The logical outgoing interface OI is taken from the LIH in
  647.              the NHOP object.  (If the physical interface is not implied
  648.              by the LIH, it can be learned from the interface matching
  649.              the IP destination address).
  650.  
  651.         o    Process the flow descriptor list in the RTEAR message to
  652.              tear down local reservation state, as follows, depending
  653.              upon the style.  The following uses a filter spec list
  654.              struct Filtss of type FILTER_SPEC* (defined earlier).
  655.  
  656.              For FF style: execute the following steps independently for
  657.              each flow descriptor in the message, i.e., for each
  658.              (FLOWSPEC, Filtss) pair.  Here the structure Filtss
  659.              consists of the FILTER_SPEC from the flow descriptor.
  660.  
  661.              For SE style, execute the following steps once for
  662.              (FLOWSPEC, Filtss), with Filtss consisting of the list of
  663.              FILTER_SPEC objects from the flow descriptor.
  664.  
  665.              For WF style, execute the following steps once for
  666.              (FLOWSPEC, Filtss), with Filtss an empty list.
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Braden & Zhang              Standards Track                    [Page 12]
  675.  
  676. RFC 2209                RSVP-Message Processing           September 1997
  677.  
  678.  
  679.              1.   Find an RSB matching (SESSION, NHOP).  If the style is
  680.                   distinct, Filtss is also used in the selection.  Call
  681.                   this the "active RSB".  If no active RSB is found,
  682.                   continue with next flow descriptor.
  683.  
  684.              2.   Check the style
  685.  
  686.                   If the active RSB has a style that is incompatible
  687.                   with the style of the message, drop the RTEAR message
  688.                   and return.
  689.  
  690.              3.   Delete from the active RSB each FILTER_SPEC that
  691.                   matches a FILTER_SPEC in Filtss.
  692.  
  693.              4.   If all FILTER_SPECs have now been deleted from the
  694.                   active RSB, delete the active RSB.
  695.  
  696.              5.   Execute the UPDATE TRAFFIC CONTROL event sequence
  697.                   (below) to update the traffic control state to be
  698.                   consistent with the reservation state.  If the result
  699.                   is to modify the traffic control state, the
  700.                   Resv_Refresh_Needed flag will be turned on and a
  701.                   RESV_EVENT upcall will be made to any local
  702.                   application.
  703.  
  704.              6.   Continue with the next flow descriptor.
  705.  
  706.         o    All flow descriptors have been processed.
  707.  
  708.              Build and send any RTEAR messages to be forwarded, in the
  709.              following manner.
  710.  
  711.              1.   Select each PSB that routes to the outgoing interface
  712.                   OI, and, for distinct style, that has a
  713.                   SENDER_TEMPLATE matching Filtss.
  714.  
  715.              2.   Select a flow descriptor (Qj,Fj) (where Fj may be a
  716.                   list) in the RTEAR message whose FILTER_SPEC matches
  717.                   the SENDER_TEMPLATE in the PSB.  If not match is
  718.                   found, return for next PSB.
  719.  
  720.                   -    Search for an RSB (for any outgoing interface) to
  721.                        which the PSB routes and whose Filter_spec_list
  722.                        includes the SENDER_TEMPLATE from the PSB.
  723.  
  724.                   -    If an RSB is found, add the PHOP of the PSB to
  725.                        the Refresh_PHOP_list.
  726.  
  727.  
  728.  
  729.  
  730. Braden & Zhang              Standards Track                    [Page 13]
  731.  
  732. RFC 2209                RSVP-Message Processing           September 1997
  733.  
  734.  
  735.                   -    Otherwise (no RSB is found), add the flow
  736.                        descriptor (Qj,Fj) to the new RTEAR message being
  737.                        built, in a manner appropriate to the style.
  738.  
  739.                   -    Continue with the next PSB.
  740.  
  741.              3.   If the next PSB is for a different PHOP or the last
  742.                   PSB has been processed, forward any RTEAR message that
  743.                   has been built.
  744.  
  745.         o    If any PSB's were found in the preceding step, and if the
  746.              Resv_Refresh_Needed flag is now on, execute the RESV
  747.              REFRESH sequence (below) for each PHOP in
  748.              Refresh_PHOP_list.
  749.  
  750.         o    Drop the RTEAR message and return.
  751.  
  752.    RERR MESSAGE ARRIVES
  753.  
  754.         A RERR message arrives through the (real) incoming interface
  755.         In_If.
  756.  
  757.         o    If there is no path state for SESSION, drop the RERR
  758.              message and return.
  759.  
  760.         o    If the Error Code = 01 (Admission Control failure), do
  761.              special processing as follows:
  762.  
  763.              1.   Find or create a Blockade State Block (BSB), in the
  764.                   following style-dependent manner.
  765.  
  766.                   For WF (wildcard) style, there will be one BSB per
  767.                   (session, PHOP) pair.
  768.  
  769.                   For FF style, there will be one BSB per (session,
  770.                   filter_spec) pair.  Note that an FF style RERR message
  771.                   carries only one flow descriptor.
  772.  
  773.                   For SE style, there will be one BSB per (session,
  774.                   filter_spec), for each filter_spec contained in the
  775.                   filter spec list of the flow descriptor.
  776.  
  777.              2.   For each BSB in the preceding step, set (or replace)
  778.                   its FLOWSPEC Qb with FLOWSPEC from the message, and
  779.                   set (or reset) its timer Tb to Kb*R seconds.  If the
  780.                   BSB is new, set its PHOP value, and set its
  781.                   Sender_Template equal to the appropriate filter_spec
  782.                   from the message.
  783.  
  784.  
  785.  
  786. Braden & Zhang              Standards Track                    [Page 14]
  787.  
  788. RFC 2209                RSVP-Message Processing           September 1997
  789.  
  790.  
  791.              3.   Execute the RESV REFRESH event sequence (shown below)
  792.                   for the previous hop PHOP, but only with the B_Merge
  793.                   flag off.  That is, if processing in the RESV REFRESH
  794.                   sequence reaches the point of turning the B_Merge flag
  795.                   on (because all matching reservations are blockaded),
  796.                   do not turn it on but instead exit the REFRESH
  797.                   sequence and return here.
  798.  
  799.         o    Execute the following for each RSB for this session whose
  800.              OI differs from In_If and whose Filter_spec_list has at
  801.              least one filter spec in common with the FILTER_SPEC* in
  802.              the RERR message.   For WF style, empty FILTER_SPEC*
  803.              structures are assumed to match.
  804.  
  805.              1.   If Error_Code = 01 and the InPlace flag in the
  806.                   ERROR_SPEC is 1 and one or more of the BSB's
  807.                   found/created above has a Qb that is strictly greater
  808.                   than Flowspec in the RSB, then continue with the next
  809.                   matching RSB, if any.
  810.  
  811.              2.   If NHOP in the RSB is the local API, then:
  812.  
  813.                   -    If the FLOWSPEC in the RERR message is strictly
  814.                        greater than the RSB Flowspec, then turn on the
  815.                        NotGuilty flag in the ERROR_SPEC.
  816.  
  817.                   -    Deliver an error upcall to application:
  818.  
  819.                         Call: <Upcall_Proc>( session-id, RESV_ERROR,
  820.                                         Error_code, Error_value,
  821.                                            Node_Addr,  Error_flags,
  822.                                            Flowspec, Filter_Spec_List
  823.                                             [ , Policy_data] )
  824.  
  825.                        and continue with the next RSB.
  826.  
  827.              3.   If the style has wildcard sender selection, use the
  828.                   SCOPE object SC.In from the RERR message to construct
  829.                   a SCOPE object SC.Out to be forwarded.  SC.Out should
  830.                   contain those sender addresses that appeared in SC.In
  831.                   and that route to OI, as determined by scanning the
  832.                   PSB's.  If SC.Out is empty, continue with the next
  833.                   RSB.
  834.  
  835.              4.   Create a new RERR message containing the error flow
  836.                   descriptor and send to the NHOP address specified by
  837.                   the RSB.  Include SC.Out if the style has wildcard
  838.                   sender selection.
  839.  
  840.  
  841.  
  842. Braden & Zhang              Standards Track                    [Page 15]
  843.  
  844. RFC 2209                RSVP-Message Processing           September 1997
  845.  
  846.  
  847.              5.   Continue with the next RSB.
  848.  
  849.         o    Drop the RERR message and return.
  850.  
  851.    RESV CONFIRM ARRIVES
  852.  
  853.         o    If the (unicast) IP address found in the RESV_CONFIRM
  854.              object in the RACK message matches an interface of the
  855.              node, a confirmation upcall is made to the matching
  856.              application:
  857.  
  858.                   Call: <Upcall_Proc>( session-id, RESV_CONFIRM,
  859.                               Error_code, Error_value, Node_Addr,
  860.                                   LUB-Used, nlist, Flowspec,
  861.                                   Filter_Spec_List, NULL, NULL )
  862.  
  863.         o    Otherwise, forward the RACK message to the IP address in
  864.              its RESV_CONFIRM object.
  865.  
  866.         Drop the RACK message and return.
  867.  
  868.    UPDATE TRAFFIC CONTROL
  869.  
  870.         The sequence is invoked by many of the message arrival sequences
  871.         to set or adjust the local traffic control state in accordance
  872.         with the current reservation and path state.  An implicit
  873.         parameter of this sequence is the `active' RSB.
  874.  
  875.         If the result is to modify the traffic control state, this
  876.         sequence notifies any matching local applications with a
  877.         RESV_EVENT upcall.  If the state change is such that it should
  878.         trigger immediate RESV refresh messages, it also turns on the
  879.         Resv_Refresh_Needed flag.
  880.  
  881.         o    Compute the traffic control parameters using the following
  882.              steps.
  883.  
  884.              1.   Initially the local flag Is_Biggest is off.
  885.  
  886.              2.   Consider the set of RSB's matching SESSION and OI from
  887.                   the active RSB.  If the style of the active RSB is
  888.                   distinct, then the Filter_spec_list must also be
  889.                   matched.
  890.  
  891.                   -    Compute the effective kernel flowspec,
  892.                        TC_Flowspec, as the LUB of the FLOWSPEC values in
  893.                        these RSB's.
  894.  
  895.  
  896.  
  897.  
  898. Braden & Zhang              Standards Track                    [Page 16]
  899.  
  900. RFC 2209                RSVP-Message Processing           September 1997
  901.  
  902.  
  903.                   -    Compute the effective traffic control filter spec
  904.                        (list) TC_Filter_Spec* as the union of the
  905.                        Filter_spec_lists from these RSB's.
  906.  
  907.                   -    If the active RSB has a FLOWSPEC larger than all
  908.                        the others, turn on the Is_Biggest flag.
  909.  
  910.              3.   Scan all RSB's matching session and Filtss, for all
  911.                   OI.  Set TC_B_Police_flag on if TC_Flowspec is smaller
  912.                   than, or incomparable to, any FLOWSPEC in those RSB's.
  913.  
  914.              4.   Locate the set of PSBs (senders) whose
  915.                   SENDER_TEMPLATEs match Filter_spec_list in the active
  916.                   RSB and whose OutInterface_list includes OI.
  917.  
  918.              5.   Set TC_E_Police_flag on if any of these PSBs have
  919.                   their E_Police flag on.  Set TC_M_Police_flag on if it
  920.                   is a shared style and there is more than one PSB in
  921.                   the set.
  922.  
  923.              6.   Compute Path_Te as the sum of the SENDER_TSPEC objects
  924.                   in this set of PSBs.
  925.  
  926.         o    Search for a TCSB matching SESSION and OI; for distinct
  927.              style (FF), it must also match Filter_spec_list.
  928.  
  929.              If none is found, create a new TCSB.
  930.  
  931.         o    If TCSB is new:
  932.  
  933.              1.   Store TC_Flowspec, TC_Filter_Spec*, Path_Te, and the
  934.                   police flags into TCSB.
  935.  
  936.              2.   Turn the Resv_Refresh_Needed flag on and make the
  937.                   traffic control call:
  938.  
  939.                  TC_AddFlowspec( OI, TC_Flowspec,
  940.                               Path_Te, police_flags)
  941.                                ->  Rhandle, Fwd_Flowspec
  942.  
  943.              3.   If this call fails, build and send a RERR message
  944.                   specifying "Admission control failed" and with the
  945.                   InPlace flag off.  Delete the TCSB, delete any
  946.                   RESV_CONFIRM object from the active RSB, and return.
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Braden & Zhang              Standards Track                    [Page 17]
  955.  
  956. RFC 2209                RSVP-Message Processing           September 1997
  957.  
  958.  
  959.              4.   Otherwise (call succeeds), record Rhandle and
  960.                   Fwd_Flowspec in the TCSB.  For each filter_spec F in
  961.                   TC_Filter_Spec*, call:
  962.  
  963.                  TC_AddFilter( OI, Rhandle, Session, F)
  964.                                      -> Fhandle
  965.  
  966.              and record the returned Fhandle in the TCSB.
  967.  
  968.         o    Otherwise, if TCSB is not new but no effective kernel
  969.              flowspec TC_Flowspec was computed earlier, then:
  970.  
  971.              1.   Turn on the Resv_Refresh_Needed flag.
  972.  
  973.              2.   Call traffic control to delete the reservation:
  974.  
  975.                  TC_DelFlowspec( OI, Rhandle )
  976.  
  977.              3.   Delete the TCSB and return.
  978.  
  979.         o    Otherwise, if TCSB is not new but the TC_Flowspec, Path_Te,
  980.              and/or police flags just computed differ from corresponding
  981.              values in the TCSB, then:
  982.  
  983.              1.   If the TC_Flowspec and/or Path_Te values differ, turn
  984.                   the Resv_Refresh_Needed flag on.
  985.  
  986.              2.   Call traffic control to modify the reservation:
  987.  
  988.                  TC_ModFlowspec( OI, Rhandle, TC_Flowspec,
  989.                                 Path_Te, police_flags )
  990.                                      -> Fwd_Flowspec
  991.  
  992.              3.   If this call fails, build and send a RERR message
  993.                   specifying "Admission control failed" and with the
  994.                   InPlace bit on.  Delete any RESV_CONFIRM object from
  995.                   the active RSB and return.
  996.  
  997.              4.   Otherwise (the call succeeds), update the TCSB with
  998.                   the new values and save Fwd_Flowspec in the TCSB.
  999.  
  1000.         o    If the TCSB is not new but the TC_Filter_Spec* just
  1001.              computed differs from the FILTER_SPEC* in the TCSB, then:
  1002.  
  1003.              1.   Make an appropriate set of TC_DelFilter and
  1004.                   TC_AddFilter calls to transform the Filter_spec_list
  1005.                   in the TCSB into the new TC_Filter_Spec*.
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Braden & Zhang              Standards Track                    [Page 18]
  1011.  
  1012. RFC 2209                RSVP-Message Processing           September 1997
  1013.  
  1014.  
  1015.              2.   Turn on the Resv_Refresh_Needed flag.
  1016.  
  1017.         o    If the active RSB contains a RESV_CONFIRM object, then:
  1018.  
  1019.              1.   If the Is_Biggest flag is on, move the RESV_CONFIRM
  1020.                   object into the TCSB and turn on the
  1021.                   Resv_Refresh_Needed flag. (This will later cause the
  1022.                   RESV REFRESH sequence to be invoked, which will either
  1023.                   forward or return the RESV_CONFIRM object, deleting it
  1024.                   from the TCSB in either case).
  1025.  
  1026.              2.   Otherwise, create and send a RACK message to the
  1027.                   address in the RESV_CONFIRM object.  Include the
  1028.                   RESV_CONFIRM object in the RACK message.  The RACK
  1029.                   message should also include an ERROR_SPEC object whose
  1030.                   Error_Node parameter is IP address of OI from the TCSB
  1031.                   and that specifies "No Error".
  1032.  
  1033.         o    If the Resv_Refresh_Needed flag is on and the RSB is not
  1034.              from the API, make a RESV_EVENT upcall to any matching
  1035.              application:
  1036.  
  1037.                   Call: <Upcall_Proc>( session-id, RESV_EVENT,
  1038.                               style, Flowspec, Filter_spec_list [ ,
  1039.                               POLICY_DATA] )
  1040.  
  1041.              where Flowspec and Filter_spec_list come from the TCSB and
  1042.              the style comes from the active RSB.
  1043.  
  1044.         o    Return to the event sequence that invoked this one.
  1045.  
  1046.    PATH REFRESH
  1047.  
  1048.         This sequence sends a path refresh for a particular sender,
  1049.         i.e., a PSB.  This sequence may be entered by either the
  1050.         expiration of a refresh timer or directly as the result of the
  1051.         Path_Refresh_Needed flag being turned on during the processing
  1052.         of a received PATH message.
  1053.  
  1054.         o    Insert TIME_VALUES object into the PATH message being
  1055.              built.  Compute the IP TTL for the PATH message as one less
  1056.              than the TTL value received in the message.  However, if
  1057.              the result is zero, return without sending the PATH
  1058.              message.
  1059.  
  1060.         o    Create a sender descriptor containing the SENDER_TEMPLATE,
  1061.              SENDER_TSPEC, and POLICY_DATA objects, if present in the
  1062.              PSB, and pack it into the PATH message being built.
  1063.  
  1064.  
  1065.  
  1066. Braden & Zhang              Standards Track                    [Page 19]
  1067.  
  1068. RFC 2209                RSVP-Message Processing           September 1997
  1069.  
  1070.  
  1071.         o    Send a copy of the PATH message to each interface OI in
  1072.              OutInterface_list.  Before sending each copy:
  1073.  
  1074.              1.   If the PSB has the E_Police flag on and if interface
  1075.                   OI is not capable of policing, turn the E_Police flag
  1076.                   on in the PATH message being built.
  1077.  
  1078.              2.   Pass the ADSPEC object and Non_RSVP flag present in
  1079.                   the PSB to the traffic control call TC_Advertise.
  1080.                   Insert the modified ADSPEC object that is returned
  1081.                   into the PATH message being built.
  1082.  
  1083.              3.   Insert into its PHOP object the interface address and
  1084.                   the LIH for the interface.
  1085.  
  1086.    RESV REFRESH
  1087.  
  1088.         This sequence sends a reservation refresh towards a particular
  1089.         previous hop with IP address PH.  This sequence may be entered
  1090.         by the expiration of a refresh timer, or invoked from the PATH
  1091.         MESSAGE ARRIVES, RESV MESSAGE ARRIVES, RTEAR MESSAGE ARRIVES, or
  1092.         RERR MESSAGE ARRIVES sequence.
  1093.  
  1094.         In general, this sequence considers each of the PSB's with PHOP
  1095.         address PH.  For a given PSB, it scans the TCSBs for matching
  1096.         reservations and merges the styles, FLOWSPECs and
  1097.         Filter_spec_list's appropriately.  It then builds a RESV message
  1098.         and sends it to PH.  The details depend upon the attributes of
  1099.         the style(s) included in the reservations.
  1100.  
  1101.         Initially the Need_Scope flag is off and the new_SCOPE object is
  1102.         empty.
  1103.  
  1104.         o    Create an output message containing INTEGRITY (if
  1105.              configured), SESSION, RSVP_HOP, and TIME_VALUES objects.
  1106.  
  1107.         o    Determine the style for these reservations from the first
  1108.              RSB for the session, and move the STYLE object into the
  1109.              proto-message.  (Note that the present set of styles are
  1110.              never themselves merged; if future styles can be merged,
  1111.              these rules will become more complex).
  1112.  
  1113.         o    If style is wildcard and if there are PSB's from more than
  1114.              one PHOP and if the multicast routing protocol does not use
  1115.              shared trees, set the Need_Scope flag on.
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Braden & Zhang              Standards Track                    [Page 20]
  1123.  
  1124. RFC 2209                RSVP-Message Processing           September 1997
  1125.  
  1126.  
  1127.         o    Select each sender PSB whose PHOP has address PH.  Set the
  1128.              local flag B_Merge off and execute the following steps.
  1129.  
  1130.              1.   Select all TCSB's whose Filter_spec_list's match the
  1131.                   SENDER_TEMPLATE object in the PSB and whose OI appears
  1132.                   in the OutInterface_list of the PSB.
  1133.  
  1134.              2.   If the PSB is from the API, then:
  1135.  
  1136.                   -    If TCSB contains a CONFIRM object, then create
  1137.                        and send a RACK message containing the object and
  1138.                        delete the CONFIRM object from the TCSB.
  1139.  
  1140.                   -    Continue with next PSB.
  1141.  
  1142.              3.   If B_Merge flag is off then ignore a blockaded TCSB,
  1143.                   as follows.
  1144.  
  1145.                   -    Select BSB's that match this TCSB.  If a selected
  1146.                        BSB is expired, delete it.  If any of the
  1147.                        unexpired BSB's has a Qb that is not strictly
  1148.                        larger than TC_Flowspec, then continue processing
  1149.                        with the next TCSB.
  1150.  
  1151.                   However, if steps 1 and 2 result in finding that all
  1152.                   TCSB's matching this PSB are blockaded, then:
  1153.  
  1154.                   -    If this RESV REFRESH sequence was invoked from
  1155.                        RESV ERROR RECEIVED, then return to the latter.
  1156.  
  1157.                   -    Otherwise, turn on the B_Merge flag and restart
  1158.                        at step 1, immediately above.
  1159.  
  1160.              4.   Merge the flowspecs from this set of TCSB's, as
  1161.                   follows:
  1162.  
  1163.                   -    If B_Merge flag is off, compute the LUB over the
  1164.                        flowspec objects.  From each TCSB, use the
  1165.                        Fwd_Flowspec object if present, else use the
  1166.                        normal Flowspec object.
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Braden & Zhang              Standards Track                    [Page 21]
  1179.  
  1180. RFC 2209                RSVP-Message Processing           September 1997
  1181.  
  1182.  
  1183.                        While computing the LUB, check for a RESV_CONFIRM
  1184.                        object in each TCSB.  If a RESV_CONFIRM object is
  1185.                        found:
  1186.  
  1187.                        -    If the flowspec (Fwd_Flowspec or Flowspec)
  1188.                             in that TCSB is larger than all other (non-
  1189.                             blockaded) flowspecs being compared, then
  1190.                             save this RESV_CONFIRM object for forwarding
  1191.                             and delete from the TCSB.
  1192.  
  1193.                        -    Otherwise (the corresponding flowspec is not
  1194.                             the largest), create and send a RACK message
  1195.                             to the address in the RESV_CONFIRM object.
  1196.                             Include the RESV_CONFIRM object in the RACK
  1197.                             message.  The RACK message should also
  1198.                             include an ERROR_SPEC object whose
  1199.                             Error_Node parameter is IP address of OI
  1200.                             from the TCSB and specifying "No Error".
  1201.  
  1202.                        -    Delete the RESV_CONFIRM object from the
  1203.                             TCSB.
  1204.  
  1205.                   -    Otherwise (B_Merge flag is on), compute the GLB
  1206.                        over the Flowspec objects of this set of TCSB's.
  1207.  
  1208.                   While computing the GLB, delete any RESV_CONFIRM
  1209.                   object object in any of these TCSB's.
  1210.  
  1211.              5.   (All matching TCSB's have been processed).  The next
  1212.                   step depends upon the style attributes.
  1213.  
  1214.                   Distinct reservation (FF) style
  1215.  
  1216.                        Use the Sender_Template as the merged
  1217.                        FILTER_SPEC.  Pack the merged (FLOWSPEC,
  1218.                        FILTER_SPEC, F_POLICY_DATA) triplet into the
  1219.                        message as a flow descriptor.
  1220.  
  1221.                   Shared wildcard reservation (WF) style
  1222.  
  1223.                        There is no merged FILTER_SPEC.  Merge (compute
  1224.                        the LUB of) the merged FLOWSPECS from the TCSB's,
  1225.                        across all PSB's for PH.
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Braden & Zhang              Standards Track                    [Page 22]
  1235.  
  1236. RFC 2209                RSVP-Message Processing           September 1997
  1237.  
  1238.  
  1239.                   Shared distinct reservation (SE) style
  1240.  
  1241.                        Using the Sender_Template as the merged
  1242.                        FILTER_SPEC, form the union of the FILTER_SPECS
  1243.                        obtained from the TCSB's.  Merge (compute the LUB
  1244.                        of) the merged FLOWSPECS from the TCSB's, across
  1245.                        all PSB's for PH.
  1246.  
  1247.              6.   If the Need_Scope flag is on and the sender specified
  1248.                   by the PSB is not the local API:
  1249.  
  1250.                   -    Find each RSB that matches this PSB, i.e., whose
  1251.                        Filter_spec_list matches Sender_Template in the
  1252.                        PSB and whose OI is included in
  1253.                        OutInterface_list.
  1254.  
  1255.                   -    If the RSB either has no SCOPE list or its SCOPE
  1256.                        list includes the sender IP address from the PSB,
  1257.                        insert the sender IP address into new_SCOPE.
  1258.  
  1259.         o    (All PSB's for PH have been processed).  Finish the RESV
  1260.              message.
  1261.  
  1262.              1.   If Need_Scope flag is on but new_SCOPE is empty, no
  1263.                   RESV message should be sent; return.  Otherwise, if
  1264.                   Need_Scope is on, move new_SCOPE into the message.
  1265.  
  1266.              2.   If a shared reservation style is being built, move the
  1267.                   final merged FLOWSPEC object and filter spec list into
  1268.                   the message.
  1269.  
  1270.              3.   If a RESV_CONFIRM object was saved earlier, move it
  1271.                   into the new RESV message.
  1272.  
  1273.              4.   Set the RSVP_HOP object in the message to contain the
  1274.                   IncInterface address through which it will be sent and
  1275.                   the LIH from (one of) the PSB's.
  1276.  
  1277.         o    Send the message to the address PH.
  1278.  
  1279.    ROUTE CHANGE NOTIFICATION
  1280.  
  1281.         This sequence is triggered when routing sends a route change
  1282.         notification to RSVP.
  1283.  
  1284.         o    Each PSB is located whose SESSION matches the destination
  1285.              address and whose SENDER_TEMPLATE matches the source
  1286.              address (for multicast).
  1287.  
  1288.  
  1289.  
  1290. Braden & Zhang              Standards Track                    [Page 23]
  1291.  
  1292. RFC 2209                RSVP-Message Processing           September 1997
  1293.  
  1294.  
  1295.              1.   If the OutInterface_list from the notification differs
  1296.                   from that in the PSB, execute the PATH LOCAL REPAIR
  1297.                   sequence.
  1298.  
  1299.              2.   If the IncInterface from the notification differs from
  1300.                   that in the PSB, update the PSB.
  1301.  
  1302.    PATH LOCAL REPAIR
  1303.  
  1304.         The sequence is entered to effect local repair after a route
  1305.         change for a given PSB.
  1306.  
  1307.         o    Wait for a delay time of W seconds.
  1308.  
  1309.         o    Execute the PATH REFRESH event sequence (above) for the
  1310.              PSB.
  1311.  
  1312. References
  1313.  
  1314.    [Baker96]  Baker, F., "RSVP Cryptographic Authentication", Work in
  1315.         Progress.
  1316.  
  1317.  
  1318.    [RFC 2205]  Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and
  1319.         S. Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1
  1320.         FunctionalSpecification", RFC 2205, September 1997.
  1321.  
  1322.    [RFC 2207]  Berger, L. and T. O'Malley, "RSVP Extensions for IPSEC
  1323.         IPv4 Data Flows", RFC 2207, September 1997.
  1324.  
  1325.    [RSVP93]  Zhang, L., Deering, S., Estrin, D., Shenker, S., and D.
  1326.         Zappala, "RSVP: A New Resource ReSerVation Protocol", IEEE
  1327.         Network, September 1993.
  1328.  
  1329. Security Considerations
  1330.  
  1331.    Processing the RSVP INTEGRITY object [Baker96] is only mentioned in
  1332.    this memo, because the processing rules are described here only in
  1333.    general terms.  The RSVP support for IPSEC [RFC 2207] will imply
  1334.    modifications that have not yet been incorporated into these
  1335.    processing rules.
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346. Braden & Zhang              Standards Track                    [Page 24]
  1347.  
  1348. RFC 2209                RSVP-Message Processing           September 1997
  1349.  
  1350.  
  1351. Authors' Addresses
  1352.  
  1353.    Bob Braden
  1354.    USC Information Sciences Institute
  1355.    4676 Admiralty Way
  1356.    Marina del Rey, CA 90292
  1357.  
  1358.    Phone: (310) 822-1511
  1359.    EMail: Braden@ISI.EDU
  1360.  
  1361.  
  1362.    Lixia Zhang
  1363.    UCLA Computer Science Department
  1364.    4531G Boelter Hall
  1365.    Los Angeles, CA 90095-1596 USA
  1366.  
  1367.    Phone: 310-825-2695
  1368.    EMail: lixia@cs.ucla.edu
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. Braden & Zhang              Standards Track                    [Page 25]
  1403.  
  1404.