分类: 系统运维
2007-11-03 00:30:32
4.3.4. Processing of the Explicit Route Object
4.3.4.1. Selection of the Next Hop
A node receiving a Path message containing an EXPLICIT_ROUTE object
must determine the next hop for this path. This is necessary because
the next abstract node along the explicit route might be an IP subnet
or an Autonomous System. Therefore, selection of this next hop may
involve a decision from a set of feasible alternatives. The criteria
used to make a selection from feasible alternatives is implementation
dependent and can also be impacted by local policy, and is beyond the
//节点收到包含ERO对象的PATH消息时,必须决定该路径的下一跳(NHOP),之所
//以这样,是因为该显示路由描述的下一跳可能是一个IP子网或AS。因此,选择
//下一跳可能涉及到很多可选方法。选择的方法与实现有关,可以被本地策略
//所影响,且超出本文档的讨论范围。
Awduche, et al. Standards Track [Page 28]
RFC 3209 Extensions to RSVP for LSP Tunnels December 2001
scope of this specification. However, it is assumed that each node
will make a best effort attempt to determine a loop-free path. Note
that paths so determined can be overridden by local policy.
//假定每个节点都尽力而为的选择一个非环路由。注意,选择的路由可以被本
//地策略所覆盖。
To determine the next hop for the path, a node performs the following
steps:
//为了确定下一跳,节点执行以下步骤:
1) The node receiving the RSVP message MUST first evaluate the first
subobject. If the node is not part of the abstract node described
by the first subobject, it has received the message in error and
SHOULD return a "Bad initial subobject" error. If there is no
first subobject, the message is also in error and the system
SHOULD return a "Bad EXPLICIT_ROUTE object" error.
//1)节点收到含ERO对象的PATH消息,首先校验第一个子对象。如果本节点不属
//于该子对象描述的A node,属于收到的该消息有错误,需要发送一个错误码为
//"Bad initial subobject"的PATHERR消息。如果没有子对象,同样也是消息有
//误,需要发送一个错误码为"Bad EXPLICIT_ROUTE object"的PATHERR消息。
2) If there is no second subobject, this indicates the end of the
explicit route. The EXPLICIT_ROUTE object SHOULD be removed from
the Path message. This node may or may not be the end of the
path. Processing continues with section 4.3.4.2, where a new
EXPLICIT_ROUTE object MAY be added to the Path message.
//2)如果没有第二个子对象,这表明到了显示路由的末尾。需要把PATH中的
//ERO对象删除掉。本节点可能是本LSP的末节点。后续将按照4.3.4.2执行,
//也可能添加一个新的ERO对象到PATH中。
3) Next, the node evaluates the second subobject. If the node is
also a part of the abstract node described by the second
subobject, then the node deletes the first subobject and continues
processing with step 2, above. Note that this makes the second
subobject into the first subobject of the next iteration and
allows the node to identify the next abstract node on the path of
the message after possible repeated application(s) of steps 2 and
3.
//3)节点校验第二个子对象。如果节点是属于该子对象描述的A node,节点
//删除第一个子对象,并执行2)。这样在下次循环时,第二个子对象挪到第
//一个子对象位置,且通过反复执行2)、3)本节点可以确定该路径上的下
//一个A node。
4) Abstract Node Border Case: The node determines whether it is
topologically adjacent to the abstract node described by the
second subobject. If so, the node selects a particular next hop
which is a member of the abstract node. The node then deletes the
first subobject and continues processing with section 4.3.4.2.
//4)A node边缘情况:节点判断自己是否与第二个子对象描述的A node的邻接
//(即:节点是否是所属A node的边缘节点,即:本节点不属于第二个子对象
//描述的A node)。如果邻接,本节点选择一个NHOP,当然,这个NHOP属于该
//A node的一员。节点再删除第一个子对象,后续按4.3.4.3执行。
5) Interior of the Abstract Node Case: Otherwise, the node selects a
next hop within the abstract node of the first subobject (which
the node belongs to) that is along the path to the abstract node
of the second subobject (which is the next abstract node). If no
such path exists then there are two cases:
//5)A node内部情况(步骤4的if so的否定分支):节点选择一个属于本A node
//的下一跳(本节点与下一跳属于同一A node),该下一跳在通往第二个子对象
//描述的A node的路由上。如果找不到该下一跳,有一下两种情况:
5a) If the second subobject is a strict subobject, there is an error
and the node SHOULD return a "Bad strict node" error.
//5a)如果第二个子对象为严格,那么产生一个"Bad strict node"错误(应该
//发送该错误码的PATHERR)。
5b) Otherwise, if the second subobject is a loose subobject, the node
selects any next hop that is along the path to the next abstract
node. If no path exists, there is an error, and the node SHOULD
return a "Bad loose node" error.
//5)如果第二个子对象为松散。节点选择通往下一个A node的任意下一跳,如果
//不存在,那么产生一个"Bad lose node"的错误。
Awduche, et al. Standards Track [Page 29]
RFC 3209 Extensions to RSVP for LSP Tunnels December 2001
6) Finally, the node replaces the first subobject with any subobject
that denotes an abstract node containing the next hop. This is
necessary so that when the explicit route is received by the next
hop, it will be accepted.
//6)最后,节点把找到的描述下一跳的A node填写到第一个子对象中。这让下一
//跳收到ERO信息时,可以校验通过(否则下一跳认为收错了消息,并拒绝该消息)。
4.3.4.2. Adding subobjects to the Explicit Route Object
After selecting a next hop, the node MAY alter the explicit route in
the following ways.
//选好下一跳之后,节点应该通过一下方式修改ERO信息。
If, as part of executing the algorithm in section 4.3.4.1, the
EXPLICIT_ROUTE object is removed, the node MAY add a new
EXPLICIT_ROUTE object.
//作为4.3.4.1算法的一部分,ERO对象被删除,节点该添加一个新的ERO对象。
Otherwise, if the node is a member of the abstract node for the first
subobject, a series of subobjects MAY be inserted before the first
subobject or MAY replace the first subobject. Each subobject in this
series MUST denote an abstract node that is a subset of the current
abstract node.
//如果节点属于第一个子对象描述的A node,一堆子对象可能插入在第一个子
//对象之前,也可能是替换第一个子对象。这堆子对象描述的A node必须是当
//前A node的一个子集。
Alternately, if the first subobject is a loose subobject, an
arbitrary series of subobjects MAY be inserted prior to the first
subobject.
//另外,如果第一个子对象是一个松散子对象,那么第一个子对象前可能插入
//一堆任意的子对象。
4.3.5. Loops
While the EXPLICIT_ROUTE object is of finite length, the existence of
loose nodes implies that it is possible to construct forwarding loops
during transients in the underlying routing protocol. This can be
detected by the originator of the explicit route through the use of
another opaque route object called the RECORD_ROUTE object. The
RECORD_ROUTE object is used to collect detailed path information and
is useful for loop detection and for diagnostics.
//对于下层路由协议而言,松散节点可能造成环路。显示路由的创建者可以通过
//使用RRO对象来检测。RRO对象用于手机路径的详细信息,且可以用于环路检测
//和诊断。
4.3.6. Forward Compatibility
//兼容性
It is anticipated that new subobjects may be defined over time. A
node which encounters an unrecognized subobject during its normal ERO
processing sends a PathErr with the error code "Routing Error" and
error value of "Bad Explicit Route Object" toward the sender. The
EXPLICIT_ROUTE object is included, truncated (on the left) to the
offending subobject. The presence of an unrecognized subobject which
is not encountered in a node's ERO processing SHOULD be ignored. It
is passed forward along with the rest of the remaining ERO stack.
//可以预测到,随着时间推移会定义新的子对象。******
Awduche, et al. Standards Track [Page 30]
RFC 3209 Extensions to RSVP for LSP Tunnels December 2001
4.3.7. Non-support of the Explicit Route Object
An RSVP router that does not recognize the EXPLICIT_ROUTE object
sends a PathErr with the error code "Unknown object class" toward the
sender. This causes the path setup to fail. The sender should
notify management that a LSP cannot be established and possibly take
action to continue the reservation without the EXPLICIT_ROUTE or via
a different explicit route.
//节点不能识别ERO对象,将发送一个错误码为"Unknown object class"的PATHERR
//消息给首节点。将导致LSP建立失败。首节点应该通知管理平面,建立LSP失败,
//可以尝试不设置显示路由或设置一个不同的显示路由。