rfc2209.txt

来自「RFC 的详细文档!」· 文本 代码 · 共 1,404 行 · 第 1/4 页

TXT
1,404
字号

             6.   Continue with the next flow descriptor.

        o    All flow descriptors have been processed.

             Build and send any RTEAR messages to be forwarded, in the
             following manner.

             1.   Select each PSB that routes to the outgoing interface
                  OI, and, for distinct style, that has a
                  SENDER_TEMPLATE matching Filtss.

             2.   Select a flow descriptor (Qj,Fj) (where Fj may be a
                  list) in the RTEAR message whose FILTER_SPEC matches
                  the SENDER_TEMPLATE in the PSB.  If not match is
                  found, return for next PSB.

                  -    Search for an RSB (for any outgoing interface) to
                       which the PSB routes and whose Filter_spec_list
                       includes the SENDER_TEMPLATE from the PSB.

                  -    If an RSB is found, add the PHOP of the PSB to
                       the Refresh_PHOP_list.




Braden & Zhang               Informational                     [Page 13]

RFC 2209                RSVP-Message Processing           September 1997


                  -    Otherwise (no RSB is found), add the flow
                       descriptor (Qj,Fj) to the new RTEAR message being
                       built, in a manner appropriate to the style.

                  -    Continue with the next PSB.

             3.   If the next PSB is for a different PHOP or the last
                  PSB has been processed, forward any RTEAR message that
                  has been built.

        o    If any PSB's were found in the preceding step, and if the
             Resv_Refresh_Needed flag is now on, execute the RESV
             REFRESH sequence (below) for each PHOP in
             Refresh_PHOP_list.

        o    Drop the RTEAR message and return.

   RERR MESSAGE ARRIVES

        A RERR message arrives through the (real) incoming interface
        In_If.

        o    If there is no path state for SESSION, drop the RERR
             message and return.

        o    If the Error Code = 01 (Admission Control failure), do
             special processing as follows:

             1.   Find or create a Blockade State Block (BSB), in the
                  following style-dependent manner.

                  For WF (wildcard) style, there will be one BSB per
                  (session, PHOP) pair.

                  For FF style, there will be one BSB per (session,
                  filter_spec) pair.  Note that an FF style RERR message
                  carries only one flow descriptor.

                  For SE style, there will be one BSB per (session,
                  filter_spec), for each filter_spec contained in the
                  filter spec list of the flow descriptor.

             2.   For each BSB in the preceding step, set (or replace)
                  its FLOWSPEC Qb with FLOWSPEC from the message, and
                  set (or reset) its timer Tb to Kb*R seconds.  If the
                  BSB is new, set its PHOP value, and set its
                  Sender_Template equal to the appropriate filter_spec
                  from the message.



Braden & Zhang               Informational                     [Page 14]

RFC 2209                RSVP-Message Processing           September 1997


             3.   Execute the RESV REFRESH event sequence (shown below)
                  for the previous hop PHOP, but only with the B_Merge
                  flag off.  That is, if processing in the RESV REFRESH
                  sequence reaches the point of turning the B_Merge flag
                  on (because all matching reservations are blockaded),
                  do not turn it on but instead exit the REFRESH
                  sequence and return here.

        o    Execute the following for each RSB for this session whose
             OI differs from In_If and whose Filter_spec_list has at
             least one filter spec in common with the FILTER_SPEC* in
             the RERR message.   For WF style, empty FILTER_SPEC*
             structures are assumed to match.

             1.   If Error_Code = 01 and the InPlace flag in the
                  ERROR_SPEC is 1 and one or more of the BSB's
                  found/created above has a Qb that is strictly greater
                  than Flowspec in the RSB, then continue with the next
                  matching RSB, if any.

             2.   If NHOP in the RSB is the local API, then:

                  -    If the FLOWSPEC in the RERR message is strictly
                       greater than the RSB Flowspec, then turn on the
                       NotGuilty flag in the ERROR_SPEC.

                  -    Deliver an error upcall to application:

                        Call: <Upcall_Proc>( session-id, RESV_ERROR,
                                        Error_code, Error_value,
                                           Node_Addr,  Error_flags,
                                           Flowspec, Filter_Spec_List
                                            [ , Policy_data] )

                       and continue with the next RSB.

             3.   If the style has wildcard sender selection, use the
                  SCOPE object SC.In from the RERR message to construct
                  a SCOPE object SC.Out to be forwarded.  SC.Out should
                  contain those sender addresses that appeared in SC.In
                  and that route to OI, as determined by scanning the
                  PSB's.  If SC.Out is empty, continue with the next
                  RSB.

             4.   Create a new RERR message containing the error flow
                  descriptor and send to the NHOP address specified by
                  the RSB.  Include SC.Out if the style has wildcard
                  sender selection.



Braden & Zhang               Informational                     [Page 15]

RFC 2209                RSVP-Message Processing           September 1997


             5.   Continue with the next RSB.

        o    Drop the RERR message and return.

   RESV CONFIRM ARRIVES

        o    If the (unicast) IP address found in the RESV_CONFIRM
             object in the RACK message matches an interface of the
             node, a confirmation upcall is made to the matching
             application:

                  Call: <Upcall_Proc>( session-id, RESV_CONFIRM,
                              Error_code, Error_value, Node_Addr,
                                  LUB-Used, nlist, Flowspec,
                                  Filter_Spec_List, NULL, NULL )

        o    Otherwise, forward the RACK message to the IP address in
             its RESV_CONFIRM object.

        Drop the RACK message and return.

   UPDATE TRAFFIC CONTROL

        The sequence is invoked by many of the message arrival sequences
        to set or adjust the local traffic control state in accordance
        with the current reservation and path state.  An implicit
        parameter of this sequence is the `active' RSB.

        If the result is to modify the traffic control state, this
        sequence notifies any matching local applications with a
        RESV_EVENT upcall.  If the state change is such that it should
        trigger immediate RESV refresh messages, it also turns on the
        Resv_Refresh_Needed flag.

        o    Compute the traffic control parameters using the following
             steps.

             1.   Initially the local flag Is_Biggest is off.

             2.   Consider the set of RSB's matching SESSION and OI from
                  the active RSB.  If the style of the active RSB is
                  distinct, then the Filter_spec_list must also be
                  matched.

                  -    Compute the effective kernel flowspec,
                       TC_Flowspec, as the LUB of the FLOWSPEC values in
                       these RSB's.




Braden & Zhang               Informational                     [Page 16]

RFC 2209                RSVP-Message Processing           September 1997


                  -    Compute the effective traffic control filter spec
                       (list) TC_Filter_Spec* as the union of the
                       Filter_spec_lists from these RSB's.

                  -    If the active RSB has a FLOWSPEC larger than all
                       the others, turn on the Is_Biggest flag.

             3.   Scan all RSB's matching session and Filtss, for all
                  OI.  Set TC_B_Police_flag on if TC_Flowspec is smaller
                  than, or incomparable to, any FLOWSPEC in those RSB's.

             4.   Locate the set of PSBs (senders) whose
                  SENDER_TEMPLATEs match Filter_spec_list in the active
                  RSB and whose OutInterface_list includes OI.

             5.   Set TC_E_Police_flag on if any of these PSBs have
                  their E_Police flag on.  Set TC_M_Police_flag on if it
                  is a shared style and there is more than one PSB in
                  the set.

             6.   Compute Path_Te as the sum of the SENDER_TSPEC objects
                  in this set of PSBs.

        o    Search for a TCSB matching SESSION and OI; for distinct
             style (FF), it must also match Filter_spec_list.

             If none is found, create a new TCSB.

        o    If TCSB is new:

             1.   Store TC_Flowspec, TC_Filter_Spec*, Path_Te, and the
                  police flags into TCSB.

             2.   Turn the Resv_Refresh_Needed flag on and make the
                  traffic control call:

                 TC_AddFlowspec( OI, TC_Flowspec,
                              Path_Te, police_flags)
                               ->  Rhandle, Fwd_Flowspec

             3.   If this call fails, build and send a RERR message
                  specifying "Admission control failed" and with the
                  InPlace flag off.  Delete the TCSB, delete any
                  RESV_CONFIRM object from the active RSB, and return.







Braden & Zhang               Informational                     [Page 17]

RFC 2209                RSVP-Message Processing           September 1997


             4.   Otherwise (call succeeds), record Rhandle and
                  Fwd_Flowspec in the TCSB.  For each filter_spec F in
                  TC_Filter_Spec*, call:

                 TC_AddFilter( OI, Rhandle, Session, F)
                                     -> Fhandle

             and record the returned Fhandle in the TCSB.

        o    Otherwise, if TCSB is not new but no effective kernel
             flowspec TC_Flowspec was computed earlier, then:

             1.   Turn on the Resv_Refresh_Needed flag.

             2.   Call traffic control to delete the reservation:

                 TC_DelFlowspec( OI, Rhandle )

             3.   Delete the TCSB and return.

        o    Otherwise, if TCSB is not new but the TC_Flowspec, Path_Te,
             and/or police flags just computed differ from corresponding
             values in the TCSB, then:

             1.   If the TC_Flowspec and/or Path_Te values differ, turn
                  the Resv_Refresh_Needed flag on.

             2.   Call traffic control to modify the reservation:

                 TC_ModFlowspec( OI, Rhandle, TC_Flowspec,
                                Path_Te, police_flags )
                                     -> Fwd_Flowspec

             3.   If this call fails, build and send a RERR message
                  specifying "Admission control failed" and with the
                  InPlace bit on.  Delete any RESV_CONFIRM object from
                  the active RSB and return.

             4.   Otherwise (the call succeeds), update the TCSB with
                  the new values and save Fwd_Flowspec in the TCSB.

        o    If the TCSB is not new but the TC_Filter_Spec* just
             computed differs from the FILTER_SPEC* in the TCSB, then:

             1.   Make an appropriate set of TC_DelFilter and
                  TC_AddFilter calls to transform the Filter_spec_list
                  in the TCSB into the new TC_Filter_Spec*.




Braden & Zhang               Informational                     [Page 18]

RFC 2209                RSVP-Message Processing           September 1997


             2.   Turn on the Resv_Refresh_Needed flag.

        o    If the active RSB contains a RESV_CONFIRM object, then:

             1.   If the Is_Biggest flag is on, move the RESV_CONFIRM
                  object into the TCSB and turn on the
                  Resv_Refresh_Needed flag. (This will later cause the
                  RESV REFRESH sequence to be invoked, which will either
                  forward or return the RESV_CONFIRM object, deleting it
                  from the TCSB in either case).

             2.   Otherwise, create and send a RACK message to the
                  address in the RESV_CONFIRM object.  Include the
                  RESV_CONFIRM object in the RACK message.  The RACK
                  message should also include an ERROR_SPEC object whose
                  Error_Node parameter is IP address of OI from the TCSB
                  and that specifies "No Error".

        o    If the Resv_Refresh_Needed flag is on and the RSB is not
             from the API, make a RESV_EVENT upcall to any matching
             application:

                  Call: <Upcall_Proc>( session-id, RESV_EVENT,
                              style, Flowspec, Filter_spec_list [ ,
                              POLICY_DATA] )

             where Flowspec and Filter_spec_list come from the TCSB and
             the style comes from the active RSB.

        o    Return to the event sequence that invoked this one.

   PATH REFRESH

        This sequence sends a path refresh for a particular sender,
        i.e., a PSB.  This sequence may be entered by either the
        expiration of a refresh timer or directly as the result of the
        Path_Refresh_Needed flag being turned on during the processing
        of a received PATH message.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?