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 + -
显示快捷键?