Network Working Group C. Villamizar Request for Comments: 2439 ANS Category: Standards Track R. Chandra Cisco R. Govindan ISI November 1998
Network Working Group C. Villamizar Request for Comments: 2439 ANS Category: Standards Track R. Chandra Cisco R. Govindan ISI November 1998
BGP Route Flap Damping
路由襟翼阻尼
Status of this Memo
本备忘录的状况
This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.
本文件规定了互联网社区的互联网标准跟踪协议,并要求进行讨论和提出改进建议。有关本协议的标准化状态和状态,请参考当前版本的“互联网官方协议标准”(STD 1)。本备忘录的分发不受限制。
Copyright Notice
版权公告
Copyright (C) The Internet Society (1998). All Rights Reserved.
版权所有(C)互联网协会(1998年)。版权所有。
Abstract
摘要
A usage of the BGP routing protocol is described which is capable of reducing the routing traffic passed on to routing peers and therefore the load on these peers without adversely affecting route convergence time for relatively stable routes. This technique has been implemented in commercial products supporting BGP. The technique is also applicable to IDRP.
描述了BGP路由协议的使用,该协议能够减少传递给路由对等方的路由通信量,从而减少这些对等方上的负载,而不会对相对稳定路由的路由收敛时间产生不利影响。该技术已在支持BGP的商业产品中实现。该技术也适用于IDRP。
The overall goals are:
总体目标是:
o to provide a mechanism capable of reducing router processing load caused by instability
o 提供一种能够减少由不稳定引起的路由器处理负载的机制
o in doing so prevent sustained routing oscillations
o 这样做可以防止持续的路由振荡
o to do so without sacrificing route convergence time for generally well behaved routes.
o 在不牺牲路由收敛时间的情况下,为表现良好的路由执行此操作。
This must be accomplished keeping other goals of BGP in mind:
必须牢记BGP的其他目标:
o pack changes into a small number of updates
o 将更改打包为少量更新
o preserve consistent routing
o 保持一致路由
o minimal addition space and computational overhead
o 最小加法空间和计算开销
An excessive rate of update to the advertised reachability of a subset of Internet prefixes has been widespread in the Internet. This observation was made in the early 1990s by many people involved in Internet operations and remains the case. These excessive updates are not necessarily periodic so route oscillation would be a misleading term. The informal term used to describe this effect is "route flap". The techniques described here are now widely deployed and are commonly referred to as "route flap damping".
互联网前缀子集的广告可达性更新速度过快,这在互联网上非常普遍。这一观察是在20世纪90年代初由许多参与互联网运营的人提出的,现在仍然如此。这些过度更新不一定是周期性的,因此路由振荡将是一个误导性的术语。用于描述这种效果的非正式术语是“路线皮瓣”。此处描述的技术现已广泛应用,通常称为“路线襟翼阻尼”。
1 Overview
1概述
To maintain scalability of a routed internet, it is necessary to reduce the amount of change in routing state propagated by BGP in order to limit processing requirements. The primary contributors of processing load resulting from BGP updates are the BGP decision process and adding and removing forwarding entries.
为了保持路由internet的可伸缩性,有必要减少BGP传播的路由状态更改量,以限制处理需求。BGP更新产生的处理负载的主要因素是BGP决策过程以及添加和删除转发条目。
Consider the following example. A widely deployed BGP implementation may tend to fail due to high routing update volume. For example, it may be unable to maintain it's BGP or IGP sessions if sufficiently loaded. The failure of one router can further contribute to the load on other routers. This additional load may cause failures in other instances of the same implementation or other implementations with a similar weakness. In the worst case, a stable oscillation could result. Such worse cases have already been observed in practice.
考虑下面的例子。由于路由更新量大,广泛部署的BGP实现可能会失败。例如,如果负载充足,它可能无法维持其BGP或IGP会话。一个路由器的故障会进一步增加其他路由器的负载。此额外负载可能会导致同一实现的其他实例或具有类似弱点的其他实现出现故障。在最坏的情况下,可能导致稳定的振荡。在实践中已经观察到这种更糟糕的情况。
A BGP implementation must be prepared for a large volume of routing traffic. A BGP implementation cannot rely upon the sender to sufficiently shield it from route instabilities. The guidelines here are designed to prevent sustained oscillations, but do not eliminate the need for robust and efficient implementations. The mechanisms described here allow routing instability to be contained at an AS border router bordering the instability.
必须为大量路由通信量准备BGP实现。BGP实现不能依赖发送方来充分屏蔽路由不稳定性。这里的指导方针旨在防止持续振荡,但并不排除对健壮和高效实现的需求。这里描述的机制允许路由不稳定性被包含在与不稳定性相邻的AS边界路由器上。
Even where BGP implementations are highly robust, the performance of the routing process is limited. Limiting the propagation of unnecessary change then becomes an issue of maintaining reasonable route change convergence time as a routing topology grows.
即使在BGP实现非常健壮的地方,路由过程的性能也是有限的。随着路由拓扑的增长,限制不必要更改的传播成为保持合理路由更改收敛时间的问题。
2 Methods of Limiting Route Advertisement
限制路线广告的2种方法
Two methods of controlling the frequency of route advertisement are described here. The first involves fixed timers. The fixed timer technique has no space overhead per route but has the disadvantage of slowing route convergence for the normal case where a route does not have a history of instability. The second method overcomes this
这里描述了两种控制路线广告频率的方法。第一种是固定计时器。固定计时器技术没有每条路由的空间开销,但在路由没有不稳定历史的正常情况下,其缺点是减慢了路由收敛速度。第二种方法克服了这一问题
limitation at the expense of maintaining some additional space overhead. The additional overhead includes a small amount of state per route and a very small processing overhead.
以维护额外空间开销为代价的限制。额外的开销包括每条路由的少量状态和非常小的处理开销。
It is possible and desirable to combine both techniques. In practice, fixed timers have been set to very short time intervals and have proven useful to pack routes into a smaller number of updates when routes arrive in separate updates. The BGP protocol refers to this as packing Network Layer Reachability Information (NLRI) [5].
将这两种技术结合起来是可能的,也是可取的。在实践中,固定计时器已设置为非常短的时间间隔,并已证明在路由以单独更新的形式到达时,将路由打包为少量更新非常有用。BGP协议将其称为打包网络层可达性信息(NLRI)[5]。
Seldom are fixed timers set to the tens of minutes to hours that would be necessary to actually damp route flap. To do so would produce the undesirable effect of severely limiting routing convergence.
很少有固定的计时器设置为几十分钟到几小时,这将是必要的,以实际潮湿的路线皮瓣。这样做会产生严重限制路由收敛的不良效果。
BGP-3 does not make specific recommendations in this area [1]. The short section entitled "Frequency of Route Selection" simply recommends that something be done and makes broad statements regarding certain properties that are desirable or undesirable.
BGP-3没有在这方面提出具体建议[1]。题为“路线选择频率”的简短章节仅建议采取措施,并就某些可取或不可取的特性作了广泛陈述。
BGP4 retains the "Frequency of Route Advertisement" section and adds a "Frequency of Route Origination" section. BGP-4 describes a method of limiting route advertisement involving a fixed (configurable) MinRouteAdvertisementInterval timer and fixed MinASOriginationInterval timer [5]. The recommended timer values of MinRouteAdvertisementInterval is 30 seconds and MinASOriginationInterval is 15 seconds.
BGP4保留了“路由公告频率”部分,并添加了“路由发起频率”部分。BGP-4描述了一种限制路由播发的方法,该方法涉及固定(可配置)MinRouteAdvertisementerval计时器和固定MinASOriginationInterval计时器[5]。MinRouteAdvertisementInterval的建议计时器值为30秒,MinASOriginationInterval的建议计时器值为15秒。
Before describing damping algorithms the objectives need to be clearly defined. Some key properties are examined to clarify the design rationale.
在描述阻尼算法之前,需要明确定义目标。对一些关键特性进行了检查,以阐明设计原理。
The overall objective is to reduce the route update load without limiting convergence time for well behaved routes. To accomplish this, criteria must be defined for well behaved and poorly behaved routes. An algorithm must be defined which allows poorly behaved routes to be identified. Ideally, this measure would be a prediction of the future stability of a route.
总体目标是在不限制性能良好的路由的收敛时间的情况下减少路由更新负载。要实现这一点,必须为行为良好和行为不良的路由定义标准。必须定义一种算法,允许识别行为不良的路由。理想情况下,该指标将是对路线未来稳定性的预测。
Any delay in propagation of well behaved routes should be minimal. Some delay is tolerable to support better packing of updates. Delay of poorly behave routes should, if possible, be proportional to a measure of the expected future instability of the route. Delay in propagating an unstable route should cause the unstable route to be
行为良好的路由传播的任何延迟都应该是最小的。一些延迟是可以容忍的,以支持更好地打包更新。如果可能的话,行为不良路线的延误应与路线预期未来不稳定性的度量成比例。传播不稳定路由时的延迟应导致不稳定路由失效
suppressed until there is some degree of confidence that the route has stabilized.
抑制,直到对路线稳定有一定程度的信心。
If a large number of route changes are received in separate updates over some very short period of time and these updates have the potential to be combined into a single update then these should be packed as efficiently as possible before propagating further. Some small delay in propagating well behaved routes is tolerable and is necessary to allow better packing of updates.
如果在很短的一段时间内,在单独的更新中接收到大量路由更改,并且这些更新有可能合并为单个更新,则在进一步传播之前,应尽可能有效地打包这些更新。在传播行为良好的路由时出现一些小的延迟是可以容忍的,并且是允许更好地打包更新所必需的。
Where routes are unstable, use and announcement of the routes should be suppressed rather than suppressing their removal. Where one route to a destination is stable, and another route to the same destination is somewhat unstable, if possible, the unstable route should be suppressed more aggressively than if there were no alternate path.
若路线不稳定,则应禁止使用和公布路线,而不是禁止移除路线。如果到目的地的一条路由是稳定的,而到同一目的地的另一条路由有点不稳定,如果可能的话,应该比没有备用路径时更积极地抑制不稳定的路由。
Routing consistency within an AS is very important. Only very minimal delay of internal BGP (IBGP) should be done. Routing consistency across AS boundaries is also very important. It is highly undesirable to advertise a route that is different from the route that is being used, except for a very minimal time. It is more desirable to suppress the acceptance of a route (and therefore the use of that route in the IGP) rather than suppress only the redistribution.
AS中的路由一致性非常重要。只应执行非常小的内部BGP(IBGP)延迟。跨AS边界的路由一致性也非常重要。除了非常短的时间外,非常不希望公布与正在使用的路由不同的路由。更可取的做法是抑制对路由的接受(因此在IGP中使用该路由),而不是仅抑制重新分配。
It is clearly not possible to accurately predict the future stability of a route. The recent history of stability is generally regarded as a good basis for estimating the likelihood of future stability. The criteria that is used to distinguish well behaved from poorly behaved routes is therefore based on the recent history of stability of the route. There is no simple quantitative expression of recent stability so a figure of merit must be defined. Some desirable characteristics of this figure of merit would be that the farther in the past that instability occurred, the less it's affect on the figure of merit and that the instability measure would be cumulative rather than reflecting only the most recent event.
显然,不可能准确预测路线的未来稳定性。最近的稳定历史通常被认为是估计未来稳定可能性的良好基础。因此,用于区分行为良好和行为不良路线的标准基于路线最近的稳定性历史。最近的稳定性没有简单的定量表达,因此必须定义一个价值指数。该绩效指标的一些可取特征是,过去不稳定发生的时间越长,其对绩效指标的影响就越小,并且不稳定指标将是累积的,而不仅仅是反映最近的事件。
The algorithms should behave such that for routes which have a history of stability but make a few transitions, those transitions should be made quickly. If transitions continue, advertisement of the route should be suppressed. There should be some memory of prior instability. The degree to which prior instability is considered should be gradually reduced as long as the route remains announced and stable.
算法的行为应确保,对于具有稳定历史但进行了少量转换的路线,应快速进行这些转换。如果继续转换,则应抑制路由的播发。应该有一些以前不稳定的记忆。只要路线保持公布和稳定,就应逐渐降低先前不稳定的程度。
After routes have been accepted their readvertisement will be briefly suppressed to improve packing of updates. There may be a lengthy suppression of the acceptance of an external route. How long a route will be suppressed is based on a figure of merit that is expected to be correlated to the probability of future instability of a route. Routes with high figure of merit values will be suppressed. An exponential decay algorithm was chosen as the basis for reducing the figure of merit over time. These choices should be viewed as suggestions for implementation.
接受路由后,将短暂抑制其重新读取,以改进更新的打包。对外部路线的接受可能会有长时间的压制。一条路线被抑制的时间取决于预期与路线未来不稳定概率相关的优值。具有高优值的路线将被禁止。选择指数衰减算法作为随时间降低优值的基础。这些选择应被视为实施建议。
An exponential decay function has the property that previous instability can be remembered for a fairly long time. The rate at which the instability figure of merit decays slows as time goes on. Exponential decay has the following property.
指数衰减函数的特性是,以前的不稳定性可以被记住相当长的时间。随着时间的推移,不稳定性价值指数衰减的速度变慢。指数衰减具有以下特性。
f(f(figure-of-merit, t1), t2) = f(figure-of-merit, t1+t2)
f(f(figure-of-merit, t1), t2) = f(figure-of-merit, t1+t2)
This property allows the decay for a long period to be computed in a single operation regardless of the current value (figure-of-merit). As a performance optimization, the decay can be applied in fixed time increments. Given a desired decay half life, the decay for a single time increment can be computed ahead of time. The decay for multiple time increments is expressed below.
此属性允许在单个操作中计算长时间的衰减,而不考虑当前值(优值)。作为性能优化,可以以固定的时间增量应用衰减。给定期望的衰变半衰期,可以提前计算单个时间增量的衰变。多个时间增量的衰减如下所示。
f(figure-of-merit, n*t0) = f(figure-of-merit, t0)**n = K**n
f(figure-of-merit, n*t0) = f(figure-of-merit, t0)**n = K**n
The values of K ** n can be precomputed for a reasonable number of "n" and stored in an array. The value of "K" is always less than one. The array size can be bounded since the value quickly approaches zero. This makes the decay easy to compute using an array bound check, an array lookup and a single multiply regardless as to how much time has elapsed.
K**n的值可以预先计算合理数量的“n”,并存储在数组中。“K”的值始终小于1。数组大小可以有界,因为值很快接近零。这使得使用数组绑定检查、数组查找和单个乘法(不管经过了多少时间)计算衰减变得很容易。
3 Limiting Route Advertisements using Fixed Timers
3使用固定计时器限制路线广告
This method of limiting route advertisements involves the use of fixed timers applied to the process of sending routes. It's primary purpose is to improve the packing of routes in BGP update messages. The delay in advertising a stable route should be bounded and minimal. The delay in advertising an unreachable need not be zero, but should also be bounded and should probably have a separate bound set less than or equal to the bound for a reachable advertisement.
这种限制路由广告的方法涉及在发送路由的过程中使用固定计时器。它的主要目的是改进BGP更新消息中路由的打包。稳定路线广告的延迟应为有界且最小。不可到达广告中的延迟不需要为零,但也应该是有界的,并且可能有一个单独的界集小于或等于可到达广告的界。
The BGP protocol defines the use of a Routing Information Base (RIB). Routes that need to be readvertised can be marked in the RIB or an external set of structures maintained, which references the RIB.
BGP协议定义了路由信息库(RIB)的使用。需要重新转换的路线可以标记在肋骨中,也可以标记在参考肋骨的外部结构集中。
Periodically, a subset of the marked routes can be flushed. This is fairly straightforward and accomplishes the objectives. Computation for too simple an implementation may be order N squared. To avoid N squared performance, some form of data structure is needed to group routes with common attributes.
可以定期刷新标记路由的子集。这相当简单,可以实现目标。对于过于简单的实现,计算可能是N阶平方。为了避免N平方性能,需要某种形式的数据结构来将具有公共属性的路由分组。
An implementation should pack updates efficiently, provide a minimum readvertisement delay, provide a bounds on the maximum readvertisement delay that would be experienced solely as a result of the algorithm used to provide a minimum delay, and must be computationally efficient in the presence of a very large number of candidates for readvertisement.
实现应高效地打包更新,提供最小读写延迟,提供仅因用于提供最小延迟的算法而产生的最大读写延迟的界限,并且必须在有大量候选人参加的情况下具有计算效率。
4 Stability Sensitive Suppression of Route Advertisement
4路由广告的稳定性敏感抑制
This method of limiting route advertisements uses a measure of route stability applied on a per route basis. This technique is applied when receiving updates from external peers only (EBGP). Applying this technique to IBGP learned routes or to advertisement to IBGP or EBGP peers after making a route selection can result in routing loops.
这种限制路线广告的方法使用基于每条路线的路线稳定性度量。此技术仅在从外部对等方(EBGP)接收更新时应用。将此技术应用于IBGP学习的路由,或在进行路由选择后向IBGP或EBGP对等方播发,可能会导致路由循环。
A figure of merit based on a measure of instability is maintained on a per route basis. This figure of merit is used in the decision to suppress the use of the route. Routes with high figure of merit are suppressed. Each time a route is withdrawn, the figure of merit is incremented. While the route is not changing the figure of merit value is decayed exponentially with separate decay rates depending on whether the route is stable and reachable or has been stable and unreachable. The decay rate may be slower when the route is unreachable, or the stability figure of merit could remain fixed (not decay at all) while the route remains unreachable. Whether to decay unreachable routes at the same rate, a slower rate, or not at all is an implementation choice. Decaying at a slower rate is recommended.
基于不稳定性度量的优值以每条路线为基础进行维护。在决定禁止使用该路线时,将使用该优值。具有高优值的路线将被禁止。每次撤销一条路线时,奖赏数字都会增加。当路由不改变时,优值的数值以指数形式衰减,衰减率取决于路由是否稳定且可到达,或是否稳定且不可到达。当路由不可到达时,衰减速率可能较慢,或者当路由不可到达时,稳定性优值可能保持不变(根本不衰减)。是以相同的速率衰减不可到达的路由,还是以较慢的速率衰减,或者根本不衰减,这是一个实现选择。建议以较慢的速度衰减。
A very efficient implementation is suggested in the following sections. The implementation only requires computation for the routes contained in an update, when an update is received or withdrawn (as opposed to the simplistic approach of periodically decaying each route). The suggested implementation involves only a small number of simple operations, and can be implemented using scaled integers.
下面几节将介绍一种非常有效的实现方法。当接收或撤回更新时,实现只需要计算更新中包含的路由(与周期性衰减每个路由的简单方法相反)。建议的实现只涉及少量简单操作,并且可以使用缩放整数实现。
The behavior of unstable routes is fairly predictable. Severely flapping routes will often be advertised and withdrawn at regular time intervals corresponding to the timers of a particular protocol (the IGP or exterior protocol in use where the problem exists). Marginal circuits or mild congestion can result in a long term pattern of occasional brief route withdrawal or occasional brief
不稳定路由的行为是相当可预测的。严重摆动的路由通常会以与特定协议(存在问题时使用的IGP或外部协议)的计时器相对应的固定时间间隔发布和撤销。边缘线路或轻度拥堵可能导致偶尔短暂的路线退出或偶尔短暂的路线退出的长期模式
connectivity.
连通性
The behavior of the algorithm is modified by a number of configurable parameters. It is possible to configure separate sets of parameters designed to handle short term severe route flap and chronic milder route flap (a pattern of occasional drops over a long time period). The former would require a fast decay and low threshold (allowing a small number of consecutive flaps to cause a route to be suppressed, but allowing it to be reused after a relatively short period of stability). The latter would require a very slow decay and a higher threshold and might be appropriate for routes for which there was an alternate path of similar bandwidth.
算法的行为由许多可配置参数修改。可以配置单独的参数集,用于处理短期严重路线皮瓣和慢性温和路线皮瓣(长时间内偶尔下降的模式)。前者需要快速衰减和低阈值(允许少量连续襟翼导致路线被抑制,但允许在相对较短的稳定期后重复使用)。后者需要非常缓慢的衰减和更高的阈值,并且可能适用于具有类似带宽的备用路径的路由。
It may also be desirable to configure different thresholds for routes with roughly equivalent alternate paths than for routes where the alternate paths have a lower bandwidth or tend to be congested. This can be solved by associating a different set of parameters with different ranges of preference values. Parameter selection could be based on BGP LOCAL_PREF.
对于具有大致相等的备用路径的路由,与备用路径具有较低带宽或趋向于拥塞的路由相比,可能还需要配置不同的阈值。这可以通过将一组不同的参数与不同的偏好值范围相关联来解决。参数选择可以基于BGP LOCAL_PREF。
Parameter selection could also be based on whether an alternate route was known. A route would be considered if, for any applicable parameter set, an alternate route with the specified preference value existed and the figure of merit associated with the parameter set did not indicate a need to suppress the route. A less aggressive suppression would be applied to the case where no alternate route at all existed. In the simplest case, a more aggressive suppression would be applied if any alternate route existed. Only the highest preference (most preferred) value needs to be specified, since the ranges may overlap.
参数选择也可以基于是否知道备用路线。如果对于任何适用的参数集,存在具有指定偏好值的备用路线,且与参数集相关的价值系数未表明需要抑制路线,则将考虑路线。在根本不存在备用路线的情况下,应采用不太激进的抑制措施。在最简单的情况下,如果存在任何替代路线,则将应用更积极的抑制。由于范围可能重叠,因此只需指定最高首选(最高首选)值。
It might also be desirable to configure a different set of thresholds for routes which rely on switched services and may disconnect at times to reduce connect charges. Such routes might be expected to change state somewhat more often, but should be suppressed if continuous state changes indicate instability.
还可能需要为依赖交换服务的路由配置一组不同的阈值,这些路由有时可能会断开连接以减少连接费用。这样的路由可能会更频繁地改变状态,但如果连续的状态变化表明不稳定,则应该抑制这种路由。
While not essential, it might be desirable to be able to configure multiple sets of configuration parameters per route. It may also be desirable to be able to configure sets of parameters that only correspond to a set of routes (identified by AS path, peer router, specific destinations or other means). Experience may dictate how much flexibility is needed and how to best to set the parameters. Whether to allow different damping parameter sets for different routes, and whether to allow multiple figures of merit per route is an implementation choice.
虽然不是必需的,但可能需要能够为每个路由配置多组配置参数。还可能希望能够配置仅对应于一组路由(由路径、对等路由器、特定目的地或其他方式标识)的参数集。经验可能决定需要多少灵活性,以及如何最好地设置参数。是否允许为不同的路由设置不同的阻尼参数,以及是否允许每个路由有多个优值是一种实现选择。
Parameter selection can also be based on prefix length. The rationale is that longer prefixes tend to reach less end systems and are less important and these less important prefixes can be damped more aggressively. This technique is in fairly widespread use. Small sites or those with dense address allocation who are multihomed are often reachable by long prefixes which are not easily aggregated. These sites tend to dispute the choice of prefix length for parameter selection. Advocates of the technique point out that it encourages better aggregation.
参数选择也可以基于前缀长度。其基本原理是,较长的前缀往往到达较少的终端系统,并且不太重要,这些不太重要的前缀可能会受到更大的抑制。这项技术应用相当广泛。小型站点或地址分配密集的多址站点通常可以通过不容易聚合的长前缀访问。这些站点往往会对参数选择的前缀长度选择产生争议。该技术的拥护者指出,它鼓励更好的聚合。
At configuration time, a number of parameters may be specified by the user. The configuration parameters are expressed in units meaningful to the user. These differ from the parameters used at run time which are in unit convenient for computation. The run time parameters are derived from the configuration parameters. Suggested configuration parameters are listed below.
在配置时,用户可以指定许多参数。配置参数以对用户有意义的单位表示。这些参数不同于运行时使用的参数,这些参数以便于计算的单位表示。运行时参数是从配置参数派生的。下面列出了建议的配置参数。
cutoff threshold (cut)
截止阈值(cut)
This value is expressed as a number of route withdrawals. It is the value above which a route advertisement will be suppressed.
该值表示为路线取款次数。它是将抑制路由广告的值。
reuse threshold (reuse)
重用阈值(重用)
This value is expressed as a number of route withdrawals. It is the value below which a suppressed route will now be used again.
该值表示为路线取款次数。该值低于此值时,将再次使用抑制的管线。
maximum hold down time (T-hold)
最大保持时间(T保持)
This value is the maximum time a route can be suppressed no matter how unstable it has been prior to this period of stability.
该值是可以抑制路线的最长时间,无论在此稳定期之前路线有多不稳定。
decay half life while reachable (decay-ok)
可达到时的衰变半衰期(衰变正常)
This value is the time duration in minutes or seconds during which the accumulated stability figure of merit will be reduced by half if the route if considered reachable (whether suppressed or not).
该值是以分钟或秒为单位的持续时间,在此期间,如果认为路线可到达(无论是否被抑制),则累积稳定性优值将减少一半。
decay half life while unreachable (decay-ng)
无法到达时的衰变半衰期(衰变ng)
This value is the time duration in minutes or seconds during which the accumulated stability figure of merit will be reduced by half if the route if considered unreachable. If not specified or set to zero, no decay will occur while a route
该值是以分钟或秒为单位的持续时间,在此期间,如果认为无法到达路线,则累积稳定性优值将减少一半。如果未指定或未设置为零,则布线时不会发生衰减
remains unreachable.
仍然遥不可及。
decay memory limit (Tmax-ok or Tmax-ng)
衰减记忆极限(Tmax ok或Tmax ng)
This is the maximum time that any memory of previous instability will be retained given that the route's state remains unchanged, whether reachable or unreachable. This parameter is generally used to determine array sizes.
这是在路由状态保持不变(无论是可达还是不可达)的情况下,保留以前不稳定的任何内存的最长时间。此参数通常用于确定数组大小。
There may be multiple sets of the parameters above as described in Section 4.1. The configuration parameters listed below would be applied system wide. These include the time granularity of all computations, and the parameters used to control reevaluation of routes that have previously been suppressed.
上述参数可能有多组,如第4.1节所述。下面列出的配置参数将应用于整个系统。这些包括所有计算的时间粒度,以及用于控制以前被抑制的路由重新评估的参数。
time granularity (delta-t)
时间粒度(delta-t)
This is the time granularity in seconds used to perform all decay computations.
这是用于执行所有衰减计算的时间粒度(以秒为单位)。
reuse list time granularity (delta-reuse)
重用列表时间粒度(增量重用)
This is the time interval between evaluations of the reuse lists. Each reuse lists corresponds to an additional time increment.
这是评估重用列表之间的时间间隔。每个重用列表对应一个额外的时间增量。
reuse list memory reuse-list-max
重用列表内存重用列表最大值
This is the time value corresponding to the last reuse list. This may be the maximum value of T-hold for all parameter sets of may be configured.
这是与上次重用列表相对应的时间值。这可能是可配置的所有参数集的T-hold的最大值。
number of reuse lists (reuse-list-size)
重用列表的数量(重用列表大小)
This is the number of reuse lists. It may be determined from reuse-list-max or set explicitly.
这是重用列表的数量。可以根据重用列表最大值或显式设置来确定。
A recommended optimization is described in Section 4.8.6 that involves an array referred to as the "reuse index array". A reuse index array is needed for each decay rate in use. The reuse index array is used to estimate which reuse list to place a route when it is suppressed. Proper placement avoids the need to periodically evaluate decay to determine if a route can be reused or when storage can be recovered. Using the reuse index array avoids the need to compute a logarithm to determine placement. One additional system wide parameter can be introduced.
第4.8.6节介绍了一种推荐的优化方法,该方法涉及一个称为“重用索引数组”的数组。使用中的每个衰减率都需要一个重用索引数组。重用索引数组用于估计抑制路由时要放置的重用列表。正确放置避免了需要定期评估衰变以确定路线是否可以重复使用或何时可以恢复存储。使用重用索引数组避免了计算对数以确定位置的需要。可以引入一个附加的系统范围参数。
reuse index array size (reuse-index-array-size)
重用索引数组大小(重用索引数组大小)
This is the size of reuse index arrays. This size determines the accuracy with which suppressed routes can be placed within the set of reuse lists when suppressed for a long time.
这是重用索引数组的大小。此大小决定了长时间抑制时,抑制的管线可以放置在重用列表集中的精度。
The decay half life should be set to a time considerably longer than the period of the route flap it is intended to address. For example, if the decay is set to ten minutes and a route is withdrawn and readvertised exactly every ten minutes, the route would continue to flap if the cutoff was set to a value of 2 or above.
衰变半衰期应设置为比拟处理的路线襟翼周期长得多的时间。例如,如果“衰减”设置为“十分钟”,并且恰好每十分钟提取一条路线并重新转换一次,则如果“截止”设置为2或更高的值,该路线将继续翻动。
The stability figure of merit itself is an accumulated time decayed total. This must be kept in mind in setting the decay time, cutoff values and reuse values. The figure of merit is increased each time a route transitions from reachable to unreachable. The figure of merit is decayed at a rate proportional to its current value. Increasing the rate of route flap therefore increments the figure of merit more often and reaches a given threshhold in a shorter amount of time. When the response to a constant rate route flap is plotted this looks like a sawtooth with an abrupt rising edge and a decaying falling edge. Since the absolute decay amount is proportional to the figure of merit, at a continuous constant flap rate the baseline of the sawtooth will tend to stop rising and converge if not clipped by a ceiling value.
稳定性优值本身是一个累积时间衰减的总和。在设置衰减时间、截止值和重用值时必须记住这一点。每次路由从可到达转换为不可到达时,优值都会增加。优值的衰减速率与其当前值成正比。因此,增加路线襟翼的速率会更频繁地增加优值,并在更短的时间内达到给定的阈值。当绘制对恒定速率路径襟翼的响应时,这看起来像一个锯齿,具有突然上升边缘和衰减下降边缘。由于绝对衰变量与优值成正比,在连续恒定的拍打速率下,如果不被上限值截断,锯齿基线将趋于停止上升和收敛。
If clipped by a ceiling value, the sawtooth baseline will simply reach the ceiling faster at a higher rate of route flap. For example, if flapping at four times the decay rate the following progression occurs. When the route becomes unreachable the first time the value becomes 1. When the next flap occurs, one is added to the previous value, which has been decreased by the fourth root of 2 (the amount of decay that would occur in 1/4 of the half life time if decay is exponential). The sequence is 1, 1.84, 2.55, 3.14, 3.64, 4.06, 4.42, 4.71, 4.96, 5.17, ..., converging at about 6.285. If a route flaps at four times the decay rate, it will reach 3 in 4 cycles, 4 in 6 cycles, 5 in 10 cycles, and will converge at about 6.3. At twice the decay time, it will reach 3 in 7 cycles, and converge at a value of less than 3.5.
如果被上限值剪裁,锯齿基线将以更高的路由翻转速率更快地到达上限。例如,如果以四倍于衰减率的速度拍打,则会发生以下过程。当路由第一次变得不可到达时,该值变为1。当下一个活门发生时,一个活门与前一个值相加,该值已减少2的第四根(如果衰减为指数衰减,则在半衰期的1/4内发生的衰减量)。序列为1,1.84,2.55,3.14,3.64,4.06,4.42,4.71,4.96,5.17,…,收敛于约6.285。如果一条路线以四倍于衰减率的速度摆动,它将在4个循环中达到3个,6个循环中达到4个,10个循环中达到5个,并将在6.3左右收敛。在两倍衰减时间时,它将在7个周期内达到3,并收敛到小于3.5的值。
Figure 1 shows the stability figure of merit for route flap at a constant rate. The time axis is labeled in multiples of the decay half life. The plots represent route flap with a period of 1/2, 1/3, 1/4, and 1/8 times the decay half life. A ceiling of 4.5 was set, which can be seen to affect three of the plots, effectively limiting the time it takes to readvertise the route regardless of the prior
图1显示了恒定速率下路线襟翼的稳定性优值。时间轴以衰变半衰期的倍数标记。图中所示为具有衰变半衰期1/2、1/3、1/4和1/8倍周期的路线襟翼。设置了4.5的上限,可以看出这会影响其中三个地块,有效地限制了重新浏览路线所需的时间,而不考虑之前的路线
history. With cutoff and reuse thresholds of 1.5 and 0.75, routes would be suppressed after being declared unreachable 2-3 times and be used again after approximately 2 decay half life periods of stability.
历史当切断和再利用阈值为1.5和0.75时,路线在被宣布2-3次不可到达后将被抑制,并在大约2个衰变半寿命稳定期后再次使用。
This function can be expressed formally. Reachability of a route can be represented by a variable "R" with possible values of 0 and 1 representing unreachable and reachable. At a discrete time R can only have one value. The figure of merit is increased by 1 at each transition from R=1 to R=0 and clipped to a ceiling value. The decay in figure of merit can then be expressed over a set of discrete times as follows.
这个函数可以用形式表示。路由的可达性可以用变量“R”表示,可能的值为0和1表示不可达和可达。在离散时间,R只能有一个值。在从R=1到R=0的每次转换中,优值增加1,并剪裁为上限值。然后,优值的衰减可以在一组离散时间内表示,如下所示。
figure-of-merit(t) = K * figure-of-merit(t - delta-t) K = K1 for R=0 K=K2 for R=1
figure-of-merit(t) = K * figure-of-merit(t - delta-t) K = K1 for R=0 K=K2 for R=1
The four plots are presented vertically. Due to space limitations, only a limited set of points along the time axis are shown. The value of the figure of merit is given. Along side each value is a very low resolution strip chart made up of ASCII dots. This is just intended to give a rough feel for the rise and fall of the values. The strip charts are not displayed on an overlapping set of axes because the sawtooth waveforms cross each other quite frequently. At the very low resolution of these plots, the rise and fall of the baseline is evident, but the sawtooth nature is only observed in the printed value.
这四个图垂直显示。由于空间限制,沿时间轴仅显示有限的一组点。给出了绩效指标的值。沿着每个值的一侧是由ASCII点组成的极低分辨率条形图。这仅仅是为了给人一个粗略的感觉的上升和下降的价值观。条形图不会显示在一组重叠的轴上,因为锯齿波彼此交叉非常频繁。在这些图的分辨率非常低的情况下,基线的上升和下降是明显的,但锯齿性质仅在打印值中观察到。
From the maximum hold time value (T-hold), a ratio of the reuse value to a ceiling can be determined. An integer value for the ceiling can then be chosen such that overflow will not be a problem and all other values can be scaled accordingly. If both cutoffs are specified or if multiple parameter sets are used the highest ceiling will be used.
根据最大保持时间值(T-hold),可以确定重用值与上限的比率。然后可以选择天花板的整数值,这样溢出就不会成为问题,所有其他值都可以相应地缩放。如果指定了两个截止值或使用了多个参数集,则将使用最高上限。
time figure-of-merit as a function of time (in minutes)
作为时间函数的时间优值(分钟)
0.00 0.000 . 0.000 . 0.000 . 0.000 . 0.08 0.000 . 0.000 . 0.000 . 0.000 . 0.16 0.000 . 0.000 . 0.000 . 0.973 . 0.24 0.000 . 0.000 . 0.000 . 0.920 . 0.32 0.000 . 0.000 . 0.946 . 1.817 . 0.40 0.000 . 0.953 . 0.895 . 2.698 . 0.48 0.000 . 0.901 . 0.847 . 2.552 . 0.56 0.953 . 0.853 . 1.754 . 3.367 . 0.64 0.901 . 0.807 . 1.659 . 4.172 . 0.72 0.853 . 1.722 . 1.570 . 3.947 . 0.80 0.807 . 1.629 . 2.444 . 4.317 . 0.88 0.763 . 1.542 . 2.312 . 4.469 . 0.96 0.722 . 1.458 . 2.188 . 4.228 . 1.04 1.649 . 2.346 . 3.036 . 4.347 . 1.12 1.560 . 2.219 . 2.872 . 4.112 . 1.20 1.476 . 2.099 . 2.717 . 4.257 . 1.28 1.396 . 1.986 . 3.543 . 4.377 . 1.36 1.321 . 2.858 . 3.352 . 4.141 . 1.44 1.250 . 2.704 . 3.171 . 4.287 . 1.52 2.162 . 2.558 . 3.979 . 4.407 . 1.60 2.045 . 2.420 . 3.765 . 4.170 . 1.68 1.935 . 3.276 . 3.562 . 4.317 . 1.76 1.830 . 3.099 . 4.356 . 4.438 . 1.84 1.732 . 2.932 . 4.121 . 4.199 . 1.92 1.638 . 2.774 . 3.899 . 3.972 . 2.00 1.550 . 2.624 . 3.688 . 3.758 . 2.08 1.466 . 2.483 . 3.489 . 3.555 . 2.16 1.387 . 2.349 . 3.301 . 3.363 . 2.24 1.312 . 2.222 . 3.123 . 3.182 . 2.32 1.242 . 2.102 . 2.955 . 3.010 . 2.40 1.175 . 1.989 . 2.795 . 2.848 . 2.48 1.111 . 1.882 . 2.644 . 2.694 . 2.56 1.051 . 1.780 . 2.502 . 2.549 . 2.64 0.995 . 1.684 . 2.367 . 2.411 . 2.72 0.941 . 1.593 . 2.239 . 2.281 . 2.80 0.890 . 1.507 . 2.118 . 2.158 . 2.88 0.842 . 1.426 . 2.004 . 2.042 . 2.96 0.797 . 1.349 . 1.896 . 1.932 . 3.04 0.754 . 1.276 . 1.794 . 1.828 . 3.12 0.713 . 1.207 . 1.697 . 1.729 . 3.20 0.675 . 1.142 . 1.605 . 1.636 . 3.28 0.638 . 1.081 . 1.519 . 1.547 . 3.36 0.604 . 1.022 . 1.437 . 1.464 . 3.44 0.571 . 0.967 . 1.359 . 1.385 .
0.00 0.000 . 0.000 . 0.000 . 0.000 . 0.08 0.000 . 0.000 . 0.000 . 0.000 . 0.16 0.000 . 0.000 . 0.000 . 0.973 . 0.24 0.000 . 0.000 . 0.000 . 0.920 . 0.32 0.000 . 0.000 . 0.946 . 1.817 . 0.40 0.000 . 0.953 . 0.895 . 2.698 . 0.48 0.000 . 0.901 . 0.847 . 2.552 . 0.56 0.953 . 0.853 . 1.754 . 3.367 . 0.64 0.901 . 0.807 . 1.659 . 4.172 . 0.72 0.853 . 1.722 . 1.570 . 3.947 . 0.80 0.807 . 1.629 . 2.444 . 4.317 . 0.88 0.763 . 1.542 . 2.312 . 4.469 . 0.96 0.722 . 1.458 . 2.188 . 4.228 . 1.04 1.649 . 2.346 . 3.036 . 4.347 . 1.12 1.560 . 2.219 . 2.872 . 4.112 . 1.20 1.476 . 2.099 . 2.717 . 4.257 . 1.28 1.396 . 1.986 . 3.543 . 4.377 . 1.36 1.321 . 2.858 . 3.352 . 4.141 . 1.44 1.250 . 2.704 . 3.171 . 4.287 . 1.52 2.162 . 2.558 . 3.979 . 4.407 . 1.60 2.045 . 2.420 . 3.765 . 4.170 . 1.68 1.935 . 3.276 . 3.562 . 4.317 . 1.76 1.830 . 3.099 . 4.356 . 4.438 . 1.84 1.732 . 2.932 . 4.121 . 4.199 . 1.92 1.638 . 2.774 . 3.899 . 3.972 . 2.00 1.550 . 2.624 . 3.688 . 3.758 . 2.08 1.466 . 2.483 . 3.489 . 3.555 . 2.16 1.387 . 2.349 . 3.301 . 3.363 . 2.24 1.312 . 2.222 . 3.123 . 3.182 . 2.32 1.242 . 2.102 . 2.955 . 3.010 . 2.40 1.175 . 1.989 . 2.795 . 2.848 . 2.48 1.111 . 1.882 . 2.644 . 2.694 . 2.56 1.051 . 1.780 . 2.502 . 2.549 . 2.64 0.995 . 1.684 . 2.367 . 2.411 . 2.72 0.941 . 1.593 . 2.239 . 2.281 . 2.80 0.890 . 1.507 . 2.118 . 2.158 . 2.88 0.842 . 1.426 . 2.004 . 2.042 . 2.96 0.797 . 1.349 . 1.896 . 1.932 . 3.04 0.754 . 1.276 . 1.794 . 1.828 . 3.12 0.713 . 1.207 . 1.697 . 1.729 . 3.20 0.675 . 1.142 . 1.605 . 1.636 . 3.28 0.638 . 1.081 . 1.519 . 1.547 . 3.36 0.604 . 1.022 . 1.437 . 1.464 . 3.44 0.571 . 0.967 . 1.359 . 1.385 .
Figure 1: Instability figure of merit for flap at a constant rate
图1:恒定速率下襟翼的不稳定性优值
time figure-of-merit as a function of time (in minutes)
作为时间函数的时间优值(分钟)
0.00 0.000 . 0.000 . 0.000 . 0.20 0.000 . 0.000 . 0.000 . 0.40 0.000 . 0.000 . 0.000 . 0.60 0.000 . 0.000 . 0.000 . 0.80 0.000 . 0.000 . 0.000 . 1.00 0.999 . 0.999 . 0.999 . 1.20 0.971 . 0.971 . 0.929 . 1.40 0.945 . 0.945 . 0.809 . 1.60 0.919 . 0.865 . 0.704 . 1.80 0.894 . 0.753 . 0.613 . 2.00 1.812 . 1.657 . 1.535 . 2.20 1.762 . 1.612 . 1.428 . 2.40 1.714 . 1.568 . 1.244 . 2.60 1.667 . 1.443 . 1.083 . 2.80 1.622 . 1.256 . 0.942 . 3.00 1.468 . 1.094 . 0.820 . 3.20 2.400 . 2.036 . 1.694 . 3.40 2.335 . 1.981 . 1.475 . 3.60 2.271 . 1.823 . 1.284 . 3.80 2.209 . 1.587 . 1.118 . 4.00 1.999 . 1.381 . 0.973 . 4.20 2.625 . 2.084 . 1.727 . 4.40 2.285 . 1.815 . 1.503 . 4.60 1.990 . 1.580 . 1.309 . 4.80 1.732 . 1.375 . 1.139 . 5.00 1.508 . 1.197 . 0.992 . 5.20 1.313 . 1.042 . 0.864 . 5.40 1.143 . 0.907 . 0.752 . 5.60 0.995 . 0.790 . 0.654 . 5.80 0.866 . 0.688 . 0.570 . 6.00 0.754 . 0.599 . 0.496 . 6.20 0.656 . 0.521 . 0.432 . 6.40 0.571 . 0.454 . 0.376 . 6.60 0.497 . 0.395 . 0.327 . 6.80 0.433 . 0.344 . 0.285 . 7.00 0.377 . 0.299 . 0.248 . 7.20 0.328 . 0.261 . 0.216 . 7.40 0.286 . 0.227 . 0.188 . 7.60 0.249 . 0.197 . 0.164 . 7.80 0.216 . 0.172 . 0.142 . 8.00 0.188 . 0.150 . 0.124 .
0.00 0.000 . 0.000 . 0.000 . 0.20 0.000 . 0.000 . 0.000 . 0.40 0.000 . 0.000 . 0.000 . 0.60 0.000 . 0.000 . 0.000 . 0.80 0.000 . 0.000 . 0.000 . 1.00 0.999 . 0.999 . 0.999 . 1.20 0.971 . 0.971 . 0.929 . 1.40 0.945 . 0.945 . 0.809 . 1.60 0.919 . 0.865 . 0.704 . 1.80 0.894 . 0.753 . 0.613 . 2.00 1.812 . 1.657 . 1.535 . 2.20 1.762 . 1.612 . 1.428 . 2.40 1.714 . 1.568 . 1.244 . 2.60 1.667 . 1.443 . 1.083 . 2.80 1.622 . 1.256 . 0.942 . 3.00 1.468 . 1.094 . 0.820 . 3.20 2.400 . 2.036 . 1.694 . 3.40 2.335 . 1.981 . 1.475 . 3.60 2.271 . 1.823 . 1.284 . 3.80 2.209 . 1.587 . 1.118 . 4.00 1.999 . 1.381 . 0.973 . 4.20 2.625 . 2.084 . 1.727 . 4.40 2.285 . 1.815 . 1.503 . 4.60 1.990 . 1.580 . 1.309 . 4.80 1.732 . 1.375 . 1.139 . 5.00 1.508 . 1.197 . 0.992 . 5.20 1.313 . 1.042 . 0.864 . 5.40 1.143 . 0.907 . 0.752 . 5.60 0.995 . 0.790 . 0.654 . 5.80 0.866 . 0.688 . 0.570 . 6.00 0.754 . 0.599 . 0.496 . 6.20 0.656 . 0.521 . 0.432 . 6.40 0.571 . 0.454 . 0.376 . 6.60 0.497 . 0.395 . 0.327 . 6.80 0.433 . 0.344 . 0.285 . 7.00 0.377 . 0.299 . 0.248 . 7.20 0.328 . 0.261 . 0.216 . 7.40 0.286 . 0.227 . 0.188 . 7.60 0.249 . 0.197 . 0.164 . 7.80 0.216 . 0.172 . 0.142 . 8.00 0.188 . 0.150 . 0.124 .
Figure 2: Separate decay constants when unreachable
图2:无法达到时的单独衰减常数
Figure 2 shows the effect of configuring separate decay rates to be used when the route is reachable or unreachable. The decay rate is 5 times slower when the route is unreachable. In the three case shown, the period of the route flap is equal to the decay half life but the route is reachable 1/8 of the time in one, reachable 1/2 the time in one, and reachable 7/8 of the time in the other. In the last case the route is not suppressed until after the third unreachable (when it is above the top threshold after becoming reachable again).
图2显示了在路由可到达或不可到达时配置单独衰减率的效果。当路径无法到达时,衰减速度慢5倍。在所示的三种情况下,路线襟翼的周期等于衰变半衰期,但路线在一种情况下可达到时间的1/8,在一种情况下可达到时间的1/2,在另一种情况下可达到时间的7/8。在最后一种情况下,直到第三次不可到达(再次可到达后高于最高阈值)之后,才会抑制路由。
The main point of Figure 2 is to show the effect of changing the duty cycle of the square wave in the variable "R" for a fixed frequency of the square wave. If the decay constants are chosen such that decay is slower when R=0 (the route is unreachable), then the figure of merit rises more slowly (more accurately, the baseline of the sawtooth waveform rises more slowly) if the route is reachable a larger percentage of the time. The effect when the route becomes persistently reachable again can be fairly negligible if the sawtooth is clipped by a ceiling value, but is more significant if a slow route flap rate or short interval of route flapping is such that the sawtooth does not reach the ceiling value. In Figure 2 the interval in which the routes are unstable is short enough that the ceiling value is not reached, therefore, the routes that are reachable for a greater percentage of the route flap cycle are reused (placed in the RIB and advertised to peers) sooner than others after the route becomes stable again ("R" becomes 1, indicating the announced state goes to reachable and remains there).
图2的要点是显示在固定的方波频率下,在变量“R”中改变方波占空比的效果。如果衰变常数的选择使衰变在R=0时变慢(路径不可到达),则如果路径可到达的时间百分比更大,则优值上升得更慢(更准确地说,锯齿波基线上升得更慢)。如果锯齿被上限值截断,则路径再次持续可到达时的影响可以相当忽略,但如果缓慢的路径襟翼速率或较短的路径襟翼间隔导致锯齿未达到上限值,则影响更为显著。在图2中,路由不稳定的间隔足够短,以至于没有达到上限值,因此,在路由再次稳定后,在更大百分比的路由襟翼循环中可到达的路由比其他路由更快地被重新使用(放置在肋骨中并向对等方公布)(“R”变为1,表示宣布的状态变为可访问并保持不变)。
In both Figure 1 and Figure 2, routes would be suppressed. Routes flapping at the decay half life or less would be withdrawn two or three times and then remain withdrawn until they had remained stably announced and stable for on the order of 1 1/2 to 2 1/2 times the decay half life (given the ceiling in the example).
在图1和图2中,路由都将被抑制。在衰变半衰期或以下拍打的路线将被撤回两次或三次,然后继续撤回,直到它们在衰变半衰期的1 1/2至2 1/2倍(给定示例中的上限)内保持稳定。
The purpose of damping BGP route flap is to reduce the processor burden at the immediate router and the processor burden to downstream routers (BGP peer routers and peers of peers that will see the route announcements advertised by the immediate router). Computing a figure of merit at each discrete time interval using figure-of-merit(t) = K * figure-of-merit(t - delta-t) would be very inefficient and defeat the purpose. This problem is addressed by defering computation as long as possible and doing a single simple computation to compensate for the decay during the time that has elapsed since the figure of merit was last updated. The use of decay arrays provides the single simple calculation. The use of reuse lists (described later) provide a means to defer calculations. A route becomes usable if there was not further change for a period of time and the route is unreachable. The data structure storage is recovered if the route's state has not changed for a period of time
抑制BGP路由抖动的目的是减少直接路由器处的处理器负担和下游路由器(BGP对等路由器和将看到直接路由器公布的路由公告的对等路由器的对等路由器)的处理器负担。使用优值(t)=K*优值(t-δ-t)计算每个离散时间间隔的优值将非常低效,并且无法达到目的。解决这个问题的方法是尽可能长时间推迟计算,并进行一次简单的计算,以补偿自上次更新价值指数以来经过的时间内的衰减。衰变阵列的使用提供了单一的简单计算。使用重用列表(稍后描述)提供了一种推迟计算的方法。如果在一段时间内没有进一步的更改,并且无法访问该路由,则该路由将变为可用。如果路由的状态在一段时间内没有更改,则恢复数据结构存储
and it has been unreachable. The reuse arrays provide a means to estimate how long a computation can be deferred if there is no further change.
而且这是遥不可及的。重用数组提供了一种方法,可以估计如果没有进一步的更改,计算可以延迟多长时间。
A larger time granularity will keep table storage down. The time granularity should be less than a minimal reasonable time between expected worse case route flaps. It might be reasonable to fix this parameter at compile time or set a default and strongly recommend that the user leave it alone. With an exponential decay, array size can be greatly reduced by setting a period of complete stability after which the decayed total will be considered zero rather than retaining a tiny quantity. Alternately, very long decays can be implemented by multiplying more than once if array bounds are exceeded.
更大的时间粒度将降低表存储。时间粒度应小于预期的最坏情况路径之间的最小合理时间。在编译时修复此参数或设置默认值可能是合理的,强烈建议用户不要使用它。对于指数衰减,可以通过设置一个完全稳定的周期来大大减小阵列大小,在该周期之后,衰减的总数将被视为零,而不是保留一个很小的数量。或者,如果超过数组边界,可以通过多次相乘来实现很长的衰减。
The reuse lists hold suppressed routes grouped according to how long it will be before the routes are eligible for reuse. Periodically each list will be advanced by one position and one list removed as described in Section 4.8.7. All of the suppressed routes in the removed list will be reevaluated and either used or placed in another list according to how much additional time must elapse before the route can be reused. The last list will always contain all the routes which will not be advertised for more time than is appropriate for the remaining list heads. When the last list advances to the front, some of the routes will not be ready to be used and will have to be requeued. The time interval for reconsidering suppressed routes and number of list heads should be configurable. Reasonable defaults might be 30 seconds and 64 list heads. A route suppressed for a long time would need to be reevaluated every 32 minutes.
“重用”列表根据管线符合重用条件之前的时间将抑制的管线分组。按照第4.8.7节所述,每个列表将定期提前一个位置,并删除一个列表。删除列表中所有被抑制的路由都将重新评估,并根据重新使用路由之前必须经过的额外时间,使用或放置在另一个列表中。最后一个列表将始终包含所有路线,这些路线的广告时间不会超过剩余列表头的广告时间。当最后一个列表前进到最前面时,某些路线将无法使用,必须重新排队。重新考虑抑制路由的时间间隔和列表头的数量应该是可配置的。合理的默认值可能是30秒和64个列表头。长时间抑制的路线需要每32分钟重新评估一次。
A fixed small amount of per system storage will be required. Where sets of multiple configuration parameters are used, storage will be required per set of parameters. A small amount of per route storage is required. A set of list heads is needed. These list heads are used to arrange suppressed routes according to the time remaining until they can be reused.
每个系统需要固定的少量存储空间。如果使用多组配置参数,则每组参数都需要存储。需要少量的每条路线存储。需要一组列表标题。这些列表头用于根据剩余时间排列抑制的路由,直到它们可以重新使用。
A separate reuse list can be used to hold unreachable routes for the purpose of later recovering storage if they remain unreachable too long. This might be more accurately described as a recycling list. The advantage this would provide is making free data structures available as soon as possible. Alternately, the data structures can simply be placed on a queue and the storage recovered when the route hits the front of the queue and if storage is needed. The latter is less optimal but simple.
如果无法访问的路由太长,可以使用单独的重用列表来保存无法访问的路由,以便以后恢复存储。这可以更准确地描述为回收清单。这将提供的优势是尽快提供免费的数据结构。或者,可以简单地将数据结构放置在队列上,并在路由到达队列前端时恢复存储(如果需要存储)。后者不太理想,但很简单。
If multiple sets of configuration parameters are allowed per route, there is a need for some means of associating more than one figure of merit and set of parameters with each route. Building a linked list of these objects seems like one of a number of reasonable implementations. Similarly, a means of associating a route to a reuse list is required. A small overhead will be required for the pointers needed to implement whatever data structure is chosen for the reuse lists. The suggested implementation uses a double linked lists and so requires two pointers per figure of merit.
如果每条路由允许多组配置参数,则需要某种方法将多个优值和一组参数与每条路由相关联。构建这些对象的链接列表似乎是许多合理的实现之一。类似地,需要一种将路由与重用列表关联的方法。对于实现为重用列表选择的任何数据结构所需的指针,都需要较小的开销。建议的实现使用一个双链接列表,因此每个优点数字需要两个指针。
Each set of configuration parameters can reference decay arrays and reuse arrays. These arrays should be shared among multiple sets of parameters since their storage requirement is not negligible. There will be only one set of reuse list heads for the entire router.
每组配置参数都可以引用衰减阵列和重用阵列。这些阵列应在多组参数之间共享,因为它们的存储需求不容忽视。整个路由器将只有一组重用列表头。
Based on the configuration parameters described in the previous section, the following values can be computed as scaled integers directly from the corresponding configuration parameters.
根据上一节中描述的配置参数,可以直接从相应的配置参数计算以下值作为缩放整数。
o decay array scale factor (decay-array-scale-factor)
o 衰减阵列比例因子(衰减阵列比例因子)
o cutoff value (cut)
o 截止值(cut)
o reuse value (reuse)
o 重用价值(重用)
o figure of merit ceiling (ceiling)
o 奖赏上限(上限)
Each configuration parameter set will reference one or two decay arrays and one or two reuse arrays. Only one array will be needed if the decay rate is the same while a route is unreachable as while it is reachable, or if the stability figure of merit does not decay while a route is unreachable.
每个配置参数集将引用一个或两个衰减阵列和一个或两个重用阵列。如果路径不可到达时的衰减率与路径可到达时的衰减率相同,或者路径不可到达时的稳定性优值不衰减,则只需要一个阵列。
The following are also computed from the configuration parameters though not as directly. The computation is described in Section 4.5.
以下也是根据配置参数计算的,尽管不是直接计算的。第4.5节对计算进行了说明。
o decay rate per tick (decay-delta-t)
o 每滴答声衰减率(衰减-delta-t)
o decay array size (decay-array-size)
o 衰减阵列大小(衰减阵列大小)
o decay array (decay[])
o 衰变阵列(衰变[])
o reuse index array size (reuse-index-array-size)
o 重用索引数组大小(重用索引数组大小)
o reuse index array (reuse-index-array[])
o 重用索引数组(重用索引数组[])
For each decay rate specified, an array will be used to store the value of a computed parameter raised to the power of the index of each array element. This is to speed computations. The decay rate per tick is an intermediate value expressed as a real number and used to compute the values stored in the decay arrays. The array size is computed from the decay memory limit configuration parameter expressed as an array size or as a maximum hold time.
对于指定的每个衰减率,将使用一个数组存储计算参数的值,该值将提高到每个数组元素的索引的幂。这是为了加快计算速度。每个刻度的衰减率是一个中间值,表示为实数,用于计算衰减数组中存储的值。阵列大小根据衰减内存限制配置参数计算,该参数表示为阵列大小或最大保持时间。
The decay array size must be of sufficient size to accommodate the specified decay memory given the time granularity, or sufficient to hold the number of array elements until integer rounding produces a zero result if that value is smaller, or a implementation imposed reasonable size to prevent configurations which use excessive memory. Implementations may chose to make the array size shorter and multiply more than once when decaying a long time interval to reduce storage.
衰变数组大小必须足够大,以容纳给定时间粒度的指定衰变内存,或足够大,以容纳数组元素的数量,直到整数舍入产生零结果(如果该值较小),或实现施加合理大小以防止使用过多内存的配置。实现可能会选择缩短阵列大小,并在长时间间隔衰减时多次乘法,以减少存储。
The reuse index arrays serve a similar purpose to the decay arrays. In BGP, a route is said to be "used" if it is considered the best route. In this context, if the route is "used" it is placed in the RIB and is eligible for advertisement to BGP peers. If a route is withdrawn (a BGP announcement is made by a peer indicating that it is no longer reachable), then it is no longer eligible for "use". When a route becomes reachable it may not be "used" immediately if the figure of merit indicates that a recent instability has occurred. After the route remains stable and the figure of merit decays below the "reuse" threshhold, the route is said to be eligible to be "reused" (treated as truly reachable, placed in the RIB and advertised to peers). The amount of time until a route can be reused can be determined using a array lookup. The array can be built given the decay rate. The array is indexed using a scaled integer proportional to the ratio between a current stability figure of merit value and the value needed for the route to be reused.
重用索引数组的用途与衰减数组类似。在BGP中,如果一条路由被认为是最佳路由,则称其为“已使用”。在这种情况下,如果路由被“使用”,它将被放置在RIB中,并且有资格向BGP对等方发布。如果路由被撤销(对等方发出BGP通知,表明其不再可访问),则该路由不再有资格“使用”。当一条路线变得可到达时,如果价值指数表明最近发生了不稳定,则可能不会立即“使用”该路线。在路径保持稳定且优值衰减到“重用”阈值以下后,称该路径有资格“重用”(视为真正可到达,放置在肋骨中并向同行公布)。可以使用数组查找来确定路由可重用之前的时间量。在给定衰减率的情况下,可以构建阵列。使用比例整数对阵列进行索引,该比例整数与当前稳定性优值与路由重用所需的值之间的比率成比例。
Information must be maintained per some tuple representing a route. At the very minimum, the NLRI (BGP prefix and length) must be contained in the tuple. Different BGP attributes may be included or excluded depending on the specific situation. The AS path should also be contained in the tuple by default. The tuple may also optionally contain other BGP attributes such as MULTI_EXIT_DISCRIMINATOR (MED).
必须按照表示路由的某个元组维护信息。至少,NLRI(BGP前缀和长度)必须包含在元组中。根据具体情况,可以包括或排除不同的BGP属性。默认情况下,AS路径也应包含在元组中。元组还可以可选地包含其他BGP属性,例如多出口鉴别器(MED)。
The tuple representing a route for the purpose of route flap damping is:
表示路线的元组(用于路线襟翼阻尼)为:
tuple entry default options ------------------------------------------- NLRI prefix required length required AS path included option to exclude last AS set in path excluded option to include next hop excluded option to include MED excluded option to include in comparisons only
tuple entry default options ------------------------------------------- NLRI prefix required length required AS path included option to exclude last AS set in path excluded option to include next hop excluded option to include MED excluded option to include in comparisons only
The AS path is generally included in order to identify downstream instability which is not being damped or not being sufficiently damped and is alternating between a stable and an unstable path. Under rare circumstances it may be desirable to exclude AS path for all or a subset of prefixes. If an AS path ends in an AS set, in practice the path is always for an aggregate. Changes to the trailing AS set should be ignored. Ideally the AS path comparison should insure that at least one AS has remained constant in the old and new AS set, but completely ignoring the contents of a trailing AS set is also acceptable.
通常包括AS路径,以识别下游不稳定,其未被阻尼或阻尼不足,且在稳定路径和不稳定路径之间交替。在极少数情况下,可能需要将所有前缀或前缀子集排除为路径。如果AS路径以AS集合结束,实际上该路径始终用于聚合。应忽略对尾部AS集合的更改。理想情况下,AS路径比较应确保至少有一个AS在新旧AS集中保持不变,但完全忽略后续AS集的内容也是可以接受的。
Including next hop and MED changes can help suppress the use of an AS which is internally unstable or avoid a next hop which is closer to an unstable IGP path in the adjacent AS. If a large number of MED values are used, the increase in the amount of state may become a problem. For this reason MED is disabled by default and enabled only as part of the tuple comparison, using a single state entry regardless of MED value. Including MED will suppress the use of the adjacent AS even though the change need not be propagated further. Using MED is only a safe practice if a path is known to exist through another AS or where there are enough peering sites with the adjacent AS such that routes heard at only a subset of the peering sites will be suppressed.
包括下一跳和MED更改有助于抑制使用内部不稳定的AS,或避免下一跳更接近相邻AS中不稳定的IGP路径。如果使用大量MED值,状态量的增加可能会成为一个问题。因此,MED在默认情况下是禁用的,并且仅作为元组比较的一部分启用,使用单个状态条目而不考虑MED值。包括MED将禁止使用相邻的,即使更改不需要进一步传播。如果已知路径通过另一个AS存在,或者存在足够多的对等站点和相邻AS,则使用MED仅是一种安全做法,这样仅在对等站点的子集上听到的路由将被抑制。
The following information must be maintained per route. A route here is considered to be a tuple usually containing NLRI, next hop, and AS path as defined in Section 4.4.3.
每条路线必须维护以下信息。此处的路由被认为是一个元组,通常包含NLRI、下一跳和第4.4.3节中定义的AS路径。
stability figure of merit (figure-of-merit)
稳定价值指数(价值指数)
Each route must have a stability figure of merit per applicable parameter set.
每条路线必须根据适用参数集具有稳定性优值。
last time updated (time-update)
上次更新时间(时间更新)
The exact last time updated must be maintained to allow exponential decay of the accumulated figure of merit to be deferred until the route might reasonable be considered eligible for a change in status (having gone from unreachable to reachable or advancing within the reuse lists).
必须保持最后一次更新的准确时间,以允许延迟累积价值指数的衰减,直到路线被认为有资格改变状态(从无法到达到可到达或在重用列表中前进)。
config block pointer
配置块指针
Any implementation that supports multiple parameter sets must provide a means of quickly identifying which set of parameters corresponds to the route currently being considered. For implementations supporting only parameter sets where all routes must be treated the same, this pointer is not required.
任何支持多个参数集的实现都必须提供一种快速识别哪一组参数对应于当前正在考虑的路线的方法。对于仅支持参数集的实现,其中所有路由必须被视为相同的,则不需要此指针。
reuse list traversal pointers
重用列表遍历指针
If doubly linked lists are used to implement reuse lists, then two pointers will be needed, previous and next. Generally there is a double linked list which is unused when a route is suppressed from use that can be used for reuse list traversal eliminating the need for additional pointer storage.
如果使用双链接列表来实现重用列表,则需要两个指针,前一个指针和下一个指针。通常,当禁止使用路由时,有一个未使用的双链接列表,可用于重用列表遍历,从而无需额外的指针存储。
From the configuration parameters, it is possible to precompute a number of values that will be used repeatedly and retain these to speed later computations that will be required frequently.
根据配置参数,可以预先计算大量重复使用的值,并保留这些值,以加速以后频繁需要的计算。
Scaling is usually dependent on the highest value that figure-of-merit can attain, referred to here as the ceiling. The real number value of the ceiling will typically be determined by the following equation. The ceiling can also be configured to a specific value, which in turn dictates T-hold.
比例通常取决于功绩指标所能达到的最高值,这里称为上限。天花板的实数值通常由以下等式确定。天花板也可以配置为特定值,这反过来决定T-hold。
ceiling = reuse * (exp(T-hold/decay-half-life) * log(2))
ceiling = reuse * (exp(T-hold/decay-half-life) * log(2))
In the above equation, reuse is the reuse threshhold described in Section 4.2.
在上述等式中,重用是第4.2节中描述的重用阈值。
The methods of scaled integer arithmetic are not described in detail here. The methods of determining the real values are given. Translation into scaled integer values and the details of scaled integer arithmetic are left up to the individual implementations.
这里不详细描述缩放整数算法的方法。给出了确定实际值的方法。转换成缩放整数值和缩放整数值算法的细节由各个实现决定。
The ceiling value can be set to be the largest integer that can fit in half the bits available for an unsigned integer. This will allow the scaled integers to be multiplied by the scaled decay
上限值可以设置为最大整数,可以容纳无符号整数可用位的一半。这将允许缩放整数乘以缩放衰减
value and then shifted down. Implementations may prefer to use real numbers or may use any integer scaling deemed appropriate for their architecture.
值,然后向下移动。实现可能更喜欢使用实数,或者可能使用任何适合其体系结构的整数缩放。
penalty value and thresholds (as proportional scaled integers)
惩罚值和阈值(按比例缩放的整数)
The figure of merit penalty for one route withdrawal and the cutoff values must be scaled according to the above scaling factor.
必须根据上述比例系数,对一条路线撤销的优缺点和截止值进行比例调整。
decay rate per tick (decay[1])
每刻度的衰减率(衰减[1])
The decay value per increment of time as defined by the time granularity must be determined (at least initially as a floating point number). The per tick decay is a number slightly less than one. It is the Nth root of the one half where N is the half life divided by the time granularity.
必须确定由时间粒度定义的每时间增量的衰减值(至少最初为浮点数)。每滴答声衰减是一个略小于1的数字。它是半衰期的N根,其中N是半衰期除以时间粒度。
decay[1] = exp ((1 / (decay-half-life/delta-t)) * log (1/2))
decay[1] = exp ((1 / (decay-half-life/delta-t)) * log (1/2))
decay array size (decay-array-size)
衰减阵列大小(衰减阵列大小)
The decay array size is the decay memory divided by the time granularity. If integer truncation brings the value of an array element to zero, the array can be made smaller. An implementation should also impose a maximum reasonable array size or allow more than one multiplication.
衰变数组大小是衰变内存除以时间粒度。如果整数截断使数组元素的值为零,则可以使数组变小。一个实现还应该施加一个最大的合理数组大小或允许多个乘法。
decay-array-size = (Tmax/delta-t)
decay-array-size = (Tmax/delta-t)
decay array (decay[])
衰变阵列(衰变[])
Each i-th element of the decay array is the per tick delay raised to the i-th power. This might be best done by successive floating point multiplies followed by scaling and integer rounding or truncation. The array itself need only be computed at startup.
衰变阵列的每个第i个元素是提升到第i次方的每滴答延迟。最好是通过连续的浮点乘法,然后进行缩放和整数舍入或截断。阵列本身只需要在启动时计算。
decay[i] = decay[1] ** i
decay[i] = decay[1] ** i
The reuse lists may be accessed quite frequently if a lot of routes are flapping sufficiently to be suppressed. A method of speeding the determination of which reuse list to use for a given route is suggested. This method is introduced in Section 4.2, its configuration described in Section 4.4.2 and the algorithms described in Section 4.8.6 and Section 4.8.7. This section describes building
如果许多路由被充分抑制,那么重用列表可能会非常频繁地被访问。提出了一种加速确定给定路由使用哪个重用列表的方法。第4.2节介绍了该方法,第4.4.2节描述了其配置,第4.8.6节和第4.8.7节描述了算法。本节介绍了建筑
the reuse list index arrays.
重用列表索引数组。
A ratio of the figure of merit of the route under consideration to the cutoff value is used as the basis for an array lookup. The ratio is scaled and truncated to an integer and used to index the array. The array entry is an integer used to determine which reuse list to use.
考虑中的路由优值与截止值的比率用作数组查找的基础。比率被缩放并截断为整数,并用于为数组编制索引。数组项是一个整数,用于确定要使用哪个重用列表。
reuse array maximum ratio (max-ratio)
重用阵列最大比率(最大比率)
This is the maximum ratio between the current value of the stability figure of merit and the target reuse value that can be indexed by the reuse array. It may be limited by the ceiling imposed by the maximum hold time or by the amount of time that the reuse lists cover.
这是稳定性优值的当前值与可由重用数组索引的目标重用值之间的最大比率。它可能受到最大保持时间或重用列表所涵盖的时间量所施加的上限的限制。
max-ratio = min(ceiling/reuse, exp((1 / (half-life/reuse- array-time)) * log(2)))
max-ratio = min(ceiling/reuse, exp((1 / (half-life/reuse- array-time)) * log(2)))
reuse array scale factor ( scale-factor )
重用阵列比例因子(比例因子)
Since the reuse array is an estimator, the reuse array scale factor has to be computed such that the full size of the reuse array is used.
由于重用数组是一个估计器,因此必须计算重用数组的比例因子,以便使用重用数组的完整大小。
scale-factor = reuse-index-array-size / (max-ratio - 1)
scale-factor = reuse-index-array-size / (max-ratio - 1)
reuse index array (reuse-index-array[])
重用索引数组(重用索引数组[])
Each reuse index array entry should contain an index into the reuse list array pointing to one of the list heads. This index should corresponding to the reuse list that will be evaluated just after a route would be eligible for reuse given the ratio of current value of the stability figure of merit to target reuse value corresponding the the reuse array entry.
每个重用索引数组项都应该包含指向其中一个列表头的重用列表数组的索引。该索引应与重用列表相对应,该列表将在某条路线符合重用条件后进行评估,给出了稳定性优值的当前值与重用数组条目对应的目标重用值的比率。
reuse-index-array[j] = integer((decay-half-life / reuse- time-granularity) * log(1/(reuse * (1 + (j / scale-factor)))) / log(1/2))
reuse-index-array[j] = integer((decay-half-life / reuse- time-granularity) * log(1/(reuse * (1 + (j / scale-factor)))) / log(1/2))
To determine which reuse queue to place a route which is being suppressed, the following procedure is used. Divide the current figure of merit by the cutoff. Subtract one. Multiply by the scale factor. This is the index into the reuse index array (reuse-index-array[]). The value fetched from the reuse index array (reuse-index-array[]) is an index into the array of reuse lists (reuse-array[]). If this index is off the end of the array use the last queue otherwise look in the array and pick the number of the queue
要确定要放置被抑制的路由的重用队列,请使用以下过程。将当前的绩效指标除以截止值。减去一。乘以比例因子。这是到重用索引数组(重用索引数组[])的索引。从重用索引数组(重用索引数组[])中获取的值是指向重用列表数组(重用数组[])的索引。如果此索引不在数组末尾,请使用最后一个队列,否则请查看数组并选择队列的编号
from the array at that index. This is quite fast and well worth the setup and storage required.
从该索引处的数组中。这相当快,值得进行所需的设置和存储。
A simple example is presented here in which the space overhead is estimated for a set of configuration parameters. The design here assumes:
这里给出了一个简单的示例,其中估计了一组配置参数的空间开销。此处的设计假定:
1. there is a single parameter set used for all routes,
1. 所有路线都使用一个参数集,
2. decay time for unreachable routes is slower than for reachable routes
2. 不可到达路由的衰减时间比可到达路由的衰减时间慢
3. the arrays must be full size, rather than allow more than one multiply per decay operation to reduce the array size.
3. 阵列必须为全尺寸,而不是允许每个衰减操作进行一次以上的乘法以减小阵列尺寸。
This example is used in later sections. The use of multiple parameter sets complicates the examples somewhat. Where multiple parameter sets are allowed for a single route, the decay portion of the algorithm is repeated for each parameter set. If different routes are allowed to have different parameter sets, the routes must have pointers to the parameter sets to keep the time to locate to a minimum, but the algorithms are otherwise unchanged.
本示例将在后面的章节中使用。多参数集的使用使示例有些复杂。如果单个路线允许多个参数集,则对每个参数集重复算法的衰减部分。如果允许不同的路由具有不同的参数集,则路由必须具有指向参数集的指针,以将定位时间保持在最小值,但在其他情况下,算法不变。
A sample set of configuration parameters and a sample set of implementation parameters are provided in in the two following lists.
以下两个列表中提供了配置参数示例集和实现参数示例集。
1. Configuration Parameters
1. 配置参数
o cut = 1.25
o 切割=1.25
o reuse = 0.5
o 重用=0.5
o T-hold = 15 mins
o T-hold=15分钟
o decay-ok = 5 min
o 衰减正常=5分钟
o decay-ng = 15 min
o 衰减ng=15分钟
o Tmax-ok, Tmax-ng = 15, 30 mins
o Tmax正常,Tmax ng=15,30分钟
2. Implementation Parameters
2. 实现参数
o delta-t = 1 sec
o delta-t=1秒
o delta-reuse = 15 sec
o 增量重用=15秒
o reuse-list-size = 256
o 重用列表大小=256
o reuse-index-array-size = 1,024
o 重用索引数组大小=1024
Using these configuration and implementation parameters and the equations in Section 4.5, the space overhead can be computed. There is a fixed space overhead that is independent of the number of routes. There is a space requirement associated with a stable route. There is a larger space requirement associated with an unstable route. The space requirements for the parameters above are provide in the lists below.
使用这些配置和实现参数以及第4.5节中的方程式,可以计算空间开销。存在与路由数量无关的固定空间开销。存在与稳定路线相关的空间要求。与不稳定路线相关的空间需求较大。以下列表提供了上述参数的空间要求。
1. fixed overhead (using parameters from previous example)
1. 固定开销(使用上一示例中的参数)
o 900 * integer - decay array
o 900*整数衰减阵列
o 1,800 * integer - decay array
o 1800*整数衰减阵列
o 120 * pointer - reuse list-heads
o 120*指针-重用列表头
o 2,048 * integer - reuse index arrays
o 2048*整数-重用索引数组
2. overhead per stable route
2. 每条稳定路线的开销
o pointer - containing null entry
o 指针-包含空项
3. overhead per unstable route
3. 每条不稳定路线的开销
o pointer - to a damping structure containing the following
o 指针-指向包含以下内容的阻尼结构
o integer - figure of merit + bit for state
o 整数-优点数字+状态位
o integer - last time updated
o 整数-上次更新的时间
o 2 * pointer - reuse list pointers (prev, next)
o 2*指针-重用列表指针(上一个,下一个)
The decay arrays are sized acording to delta-t and Tmax-ok or Tmax-ng. The number of reuse list-heads is based on delta-reuse and the greater of Tmax-ok or Tmax-ng. There are two reuse index arrays whose size is a configured parameter.
衰变阵列的尺寸根据delta-t和Tmax ok或Tmax ng确定。重用列表头的数量基于增量重用和Tmax ok或Tmax ng中的较大值。有两个重用索引数组,其大小是配置的参数。
Figure 3 shows the behavior of the algorithm with the parameters given above. Four cases are given in this example. In all four, there is a twelve minute period of route oscillations. Two periods of oscillation are used, 2 minutes and 4 minutes. Two duty cycles are used, one in which the route is reachable during 20% of the cycle and the other where the route is reachable during 80% of the cycle. In all four cases, the route becomes suppressed after it becomes
图3显示了具有上述参数的算法的行为。本例中给出了四种情况。在这四种情况下,有一个12分钟的路线振荡周期。使用两个振荡周期,2分钟和4分钟。使用两个占空比,一个在循环的20%期间可到达路线,另一个在循环的80%期间可到达路线。在所有四种情况下,路由在变为
unreachable the second time. Once suppressed, it remains suppressed until some period after becoming stable. The routes which oscillate over a 4 minute period are no longer suppressed within 9-11 minutes after becoming stable. The routes with a 2 minute period of oscillation are suppressed for nearly the maximum 15 minute period after becoming stable.
第二次无法到达。一旦被抑制,它将一直被抑制,直到稳定后的一段时间。在4分钟内振荡的路线在变得稳定后的9-11分钟内不再受到抑制。具有2分钟振荡周期的路线在变得稳定后几乎在最大15分钟内被抑制。
The prior sections concentrate on configuration parameters and their relationship to the parameters and arrays used at run time and provide the algorithms for initializing run time storage. This section provides the steps taken in processing routing events and timer events when running.
前面的部分主要介绍配置参数及其与运行时使用的参数和阵列的关系,并提供初始化运行时存储的算法。本节提供运行时处理路由事件和计时器事件所采取的步骤。
The routing events are:
路由事件包括:
1. A BGP peer or new route comes up for the first time (or after an extended down time) (Section 4.8.1)
1. BGP对等或新路由首次出现(或在延长停机时间后出现)(第4.8.1节)
2. A route becomes unreachable (Section 4.8.2)
2. 无法到达路线(第4.8.2节)
3. A route becomes reachable again (Section 4.8.3)
3. 路线再次可到达(第4.8.3节)
4. A route changes (Section 4.8.4)
4. A路线变更(第4.8.4节)
5. A peer goes down (Section 4.8.5)
5. 一个同伴倒下(第4.8.5节)
time figure-of-merit as a function of time (in minutes)
作为时间函数的时间优值(分钟)
0.00 0.000 . 0.000 . 0.000 . 0.000 . 0.62 0.000 . 0.000 . 0.000 . 0.000 . 1.25 0.000 . 0.000 . 0.000 . 0.000 . 1.88 0.000 . 0.000 . 0.000 . 0.000 . 2.50 0.977 . 0.968 . 0.000 . 0.000 . 3.12 0.949 . 0.888 . 0.000 . 0.000 . 3.75 0.910 . 0.814 . 0.000 . 0.000 . 4.37 1.846 . 1.756 . 0.983 . 0.983 . 5.00 1.794 . 1.614 . 0.955 . 0.935 . 5.63 1.735 . 1.480 . 0.928 . 0.858 . 6.25 2.619 . 2.379 . 0.901 . 0.786 . 6.88 2.544 . 2.207 . 0.876 . 0.721 . 7.50 2.472 . 2.024 . 0.825 . 0.661 . 8.13 3.308 . 2.875 . 1.761 . 1.608 . 8.75 3.213 . 2.698 . 1.711 . 1.562 . 9.38 3.122 . 2.474 . 1.662 . 1.436 . 10.00 3.922 . 3.273 . 1.615 . 1.317 . 10.63 3.810 . 3.107 . 1.569 . 1.207 . 11.25 3.702 . 2.849 . 1.513 . 1.107 . 11.88 3.498 . 2.613 . 1.388 . 1.015 . 12.50 3.904 . 3.451 . 2.312 . 1.953 . 13.13 3.580 . 3.164 . 2.120 . 1.791 . 13.75 3.283 . 2.902 . 1.944 . 1.643 . 14.38 3.010 . 2.661 . 1.783 . 1.506 . 15.00 2.761 . 2.440 . 1.635 . 1.381 . 15.63 2.532 . 2.238 . 1.499 . 1.267 . 16.25 2.321 . 2.052 . 1.375 . 1.161 . 16.88 2.129 . 1.882 . 1.261 . 1.065 . 17.50 1.952 . 1.725 . 1.156 . 0.977 . 18.12 1.790 . 1.582 . 1.060 . 0.896 . 18.75 1.641 . 1.451 . 0.972 . 0.821 . 19.38 1.505 . 1.331 . 0.891 . 0.753 . 20.00 1.380 . 1.220 . 0.817 . 0.691 . 20.62 1.266 . 1.119 . 0.750 . 0.633 . 21.25 1.161 . 1.026 . 0.687 . 0.581 . 21.87 1.064 . 0.941 . 0.630 . 0.533 . 22.50 0.976 . 0.863 . 0.578 . 0.488 . 23.12 0.895 . 0.791 . 0.530 . 0.448 . 23.75 0.821 . 0.725 . 0.486 . 0.411 . 24.37 0.753 . 0.665 . 0.446 . 0.377 . 25.00 0.690 . 0.610 . 0.409 . 0.345 .
0.00 0.000 . 0.000 . 0.000 . 0.000 . 0.62 0.000 . 0.000 . 0.000 . 0.000 . 1.25 0.000 . 0.000 . 0.000 . 0.000 . 1.88 0.000 . 0.000 . 0.000 . 0.000 . 2.50 0.977 . 0.968 . 0.000 . 0.000 . 3.12 0.949 . 0.888 . 0.000 . 0.000 . 3.75 0.910 . 0.814 . 0.000 . 0.000 . 4.37 1.846 . 1.756 . 0.983 . 0.983 . 5.00 1.794 . 1.614 . 0.955 . 0.935 . 5.63 1.735 . 1.480 . 0.928 . 0.858 . 6.25 2.619 . 2.379 . 0.901 . 0.786 . 6.88 2.544 . 2.207 . 0.876 . 0.721 . 7.50 2.472 . 2.024 . 0.825 . 0.661 . 8.13 3.308 . 2.875 . 1.761 . 1.608 . 8.75 3.213 . 2.698 . 1.711 . 1.562 . 9.38 3.122 . 2.474 . 1.662 . 1.436 . 10.00 3.922 . 3.273 . 1.615 . 1.317 . 10.63 3.810 . 3.107 . 1.569 . 1.207 . 11.25 3.702 . 2.849 . 1.513 . 1.107 . 11.88 3.498 . 2.613 . 1.388 . 1.015 . 12.50 3.904 . 3.451 . 2.312 . 1.953 . 13.13 3.580 . 3.164 . 2.120 . 1.791 . 13.75 3.283 . 2.902 . 1.944 . 1.643 . 14.38 3.010 . 2.661 . 1.783 . 1.506 . 15.00 2.761 . 2.440 . 1.635 . 1.381 . 15.63 2.532 . 2.238 . 1.499 . 1.267 . 16.25 2.321 . 2.052 . 1.375 . 1.161 . 16.88 2.129 . 1.882 . 1.261 . 1.065 . 17.50 1.952 . 1.725 . 1.156 . 0.977 . 18.12 1.790 . 1.582 . 1.060 . 0.896 . 18.75 1.641 . 1.451 . 0.972 . 0.821 . 19.38 1.505 . 1.331 . 0.891 . 0.753 . 20.00 1.380 . 1.220 . 0.817 . 0.691 . 20.62 1.266 . 1.119 . 0.750 . 0.633 . 21.25 1.161 . 1.026 . 0.687 . 0.581 . 21.87 1.064 . 0.941 . 0.630 . 0.533 . 22.50 0.976 . 0.863 . 0.578 . 0.488 . 23.12 0.895 . 0.791 . 0.530 . 0.448 . 23.75 0.821 . 0.725 . 0.486 . 0.411 . 24.37 0.753 . 0.665 . 0.446 . 0.377 . 25.00 0.690 . 0.610 . 0.409 . 0.345 .
Figure 3: Some fairly long route flap cycles, repeated for 12 minutes, followed by a period of stability.
图3:一些相当长的路径皮瓣循环,重复12分钟,然后是一段稳定期。
The reuse list is used to provide a means of fast evaluation of route that had been suppressed, but had been stable long enough to be reused again or had been suppressed long enough that it can be treated as a new route. The following two operations are described.
重用列表用于提供一种快速评估已被抑制的路由的方法,该路由已稳定到足以再次重用,或已被抑制到足以将其视为新路由。描述了以下两个操作。
1. Inserting into a reuse list (Section 4.8.6)
1. 插入重用列表(第4.8.6节)
2. Reuse list processing every delta-t seconds (Section 4.8.7)
2. 每隔delta-t秒重复使用列表处理(第4.8.7节)
When a peer comes up, no action is required if the routes had no previous history of instability, for example if this is the first time the peer is coming up and announcing these routes. For each route, the pointer to the damping structure would be zeroed and route used. The same action is taken for a new route or a route that has been down long enough that the figure of merit reached zero and the damping structure was deleted.
当对等方出现时,如果路由以前没有不稳定的历史记录,则无需采取任何行动,例如,如果这是对等方第一次出现并宣布这些路由。对于每个路由,指向阻尼结构的指针将归零并使用路由。对于新路线或下降足够长的路线,也会采取相同的措施,以使优值达到零,并删除阻尼结构。
When a route is withdrawn or changed (Section 4.8.4 describes how a change is handled), the following procedure is used.
当路线被撤销或更改时(第4.8.4节描述了如何处理更改),使用以下程序。
If there is no previous stability history (the damping structure pointer is zero), then:
如果之前没有稳定性历史(阻尼结构指针为零),则:
1. allocate a damping structure
1. 分配阻尼结构
2. set figure-of-merit = 1
2. 设定功绩值=1
3. withdraw the route
3. 撤回路线
Otherwise, if there is an existing damping structure, then:
否则,如果存在现有阻尼结构,则:
1. set t-diff = t-now - t-updated
1. 设置t-diff=t-now-t-updated
2. if (t-diff puts you off the end of the array) {
2. if(t-diff使您离开阵列的末端){
setfigure-of-merit =1
设定价值系数=1
}else {
}否则{
setfigure-of-merit =figure-of-merit *decay-array-ok [t-diff ]+ 1
setfigure-of-merit =figure-of-merit *decay-array-ok [t-diff ]+ 1
if(figure-of-merit >ceiling) {
if(figure-of-merit >ceiling) {
setfigure-of-merit =ceiling
设定价值=最高限额
}
}
}
}
3. remove the route from a reuse list if it is on one
3. 如果路由位于重用列表上,请将其从重用列表中删除
4. withdraw the route unless it is already suppressed
4. 撤回路由,除非它已被抑制
In either case then:
在这两种情况下:
1. set t-updated = t-now
1. 设置t-updated=t-now
2. insert into a reuse list (see Section 4.8.6)
2. 插入重用列表(见第4.8.6节)
If there was a stability history, the previous value of the stability figure of merit is decayed. This is done using the decay array (decay-array). The index is determined by subtracting the current time and the last time updated, then dividing by the time granularity. If the index is zero, the figure of merit is unchanged (no decay). If it is greater than the array size, it is zeroed. Otherwise use the index to fetch a decay array element and multiply the figure of merit by the array element. If using the suggested scaled integer method, shift down half an integer. Add the scaled penalty for one more unreachable (shown above as 1). If the result is above the ceiling replace it with the ceiling value. Now update the last time updated field (preferably taking into account how much time was truncated before doing the decay calculation).
如果存在稳定性历史,则稳定性价值指数的先前值将衰减。这是使用衰变阵列(衰变阵列)完成的。通过减去当前时间和上次更新的时间,然后除以时间粒度来确定索引。如果指数为零,则优值不变(无衰减)。如果大于数组大小,则将其置零。否则,使用索引获取衰减数组元素,并将优值乘以数组元素。如果使用建议的缩放整数方法,请向下移动半个整数。为一个以上的不可到达项添加比例惩罚(如上所示为1)。如果结果高于上限,则将其替换为上限值。现在更新上次更新的时间字段(最好考虑在进行衰减计算之前截断的时间)。
When a route becomes unreachable, alternate paths must be considered. This process is complicated slightly if different configuration parameters are used in the presence or absence of viable alternate paths. If all of these alternate paths have been suppressed because there had previously been an alternate route and the new route withdrawal changes that condition, the suppressed alternate paths must be reevaluated. They should be reevaluated in order of normal route preference. When one of these alternate routes is encountered that had been suppressed but is now usable since there is no alternate route, no further routes need to be reevaluated. This only applies if routes are given two different reuse thresholds, one for use when there is an alternate path and a higher threshold to use when suppressing the route would result in making the destination completely unreachable.
当路由变得不可到达时,必须考虑备用路径。如果在存在或不存在可行的备用路径的情况下使用不同的配置参数,则此过程会稍微复杂一些。如果所有这些备用路径都已被抑制,因为以前存在备用路径,并且新的路径撤回更改了该条件,则必须重新评估抑制的备用路径。应按照正常路线偏好的顺序对其进行重新评估。当遇到其中一个已被抑制但由于没有备用路由而现在可用的备用路由时,无需重新评估其他路由。这仅适用于为路由指定了两个不同的重用阈值的情况,一个用于存在备用路径时,另一个用于抑制路由将导致完全无法到达目的地时的更高阈值。
When a route is readvertised if there is no damping structure, then the procedure is the same as in Section 4.8.1.
如果不存在阻尼结构,则当重新转换路线时,程序与第4.8.1节相同。
1. don't create a new damping structure
1. 不要创建新的阻尼结构
2. use the route
2. 使用路线
If an damping structure exists, the figure of merit is decayed and the figure of merit and last time updated fields are updated. A decision is now made as to whether the route can be used immediately or needs to be suppressed for some period of time.
如果存在阻尼结构,则优值将衰减,优值和上次更新的字段将更新。现在决定是否可以立即使用该路线,或者是否需要在一段时间内抑制该路线。
1. set t-diff = t-now - t-updated
1. 设置t-diff=t-now-t-updated
2. if (t-diff puts you off the end of the array) {
2. if(t-diff使您离开阵列的末端){
set figure-of-merit =0
设定价值系数=0
}else {
}否则{
set figure-of-merit= figure-of-merit* decay-array-ng[t-diff]
设定优值=优值*衰变阵列ng[t-diff]
}
}
3. if ( not suppressed and figure-of-merit < cut ) {
3. 如果(未被抑制,且绩效指标<削减){
use the route
使用路线
}else if( suppressed and figure-of-merit< reuse) {
}else if( suppressed and figure-of-merit< reuse) {
set state tonot suppressed
将状态设置为不抑制
remove the route from a reuse list
从重用列表中删除路由
use the route
使用路线
}else {
}否则{
set state to suppressed
将状态设置为“抑制”
don't use the route
不要走这条路
insert into a reuse list (see Section 4.8.6)
插入重用列表(见第4.8.6节)
}
}
4. if ( figure-of-merit > 0 ) {
4. 如果(价值指数>0){
set t-updated= t-now
设置t-updated=t-now
}else {
}否则{
recover memory for damping struct
恢复阻尼结构的内存
zero pointer to damping struct
阻尼结构的零指针
}
}
If the route is deemed usable, a search for the current best route must be made. The newly reachable route is then evaluated according to the BGP protocol rules for route selection.
如果认为路线可用,则必须搜索当前最佳路线。然后根据用于路由选择的BGP协议规则评估新可到达的路由。
If the new route is usable, the previous best route is examined. Prior to route comparisons, the current best route may have to be reevaluated if separate parameter sets are used depending on the presence or absence of an alternate route. If there had been no alternate the previous best route may be suppressed.
如果新路由可用,则检查以前的最佳路由。在路线比较之前,如果根据是否存在备用路线使用单独的参数集,则可能必须重新评估当前最佳路线。如果没有备选路线,则可能会抑制以前的最佳路线。
If the new route is to be suppressed it is placed on a reuse list only if it would have been preferred to the current best route had the new route been accepted as stable. There is no reason to queue a route on a reuse list if after the route becomes usable it would not be used anyway due to the existence of a more preferred route. Such a route would not have to be reevaluated unless the preferred route became unreachable. As specified here, the less preferred route would be reevaluated and potentially used or potentially added to a reuse list when processing the withdrawal of a more preferred best route.
如果要抑制新路由,则只有在新路由被认为是稳定的情况下,它会优先于当前最佳路由时,才会将其置于重用列表中。如果在路由变得可用后,由于存在更优选的路由,因此该路由无论如何都不会被使用,则没有理由在重用列表上对该路由进行排队。除非首选路线无法到达,否则无需重新评估此类路线。如本文所述,当处理更优选的最佳路线的撤回时,将重新评估不优选的路线,并可能使用或可能添加到重用列表中。
If a route is replaced by a peer router by supplying a new path, the route that is being replaced should be treated as if an unreachable were received (see Section 4.8.2). This will occur when a peer somewhere back in the AS path is continuously switching between two AS paths and that peer is not damping route flap (or applying less damping). There is no way to determine if one AS path is stable and the other is flapping, or if they are both flapping. If the cycle is sufficiently short compared to convergence times neither route through that peer will deliver packets very reliably. Since there is no way to affect the peer such that it chooses the stable of the two AS paths, the only viable option is to penalize both routes by considering each change as an unreachable followed by a route advertisement.
如果通过提供新路径将路由替换为对等路由器,则被替换的路由应视为接收到无法访问的路由(参见第4.8.2节)。当AS路径后面的某个对等方在两个AS路径之间连续切换,并且该对等方没有阻尼路由襟翼(或应用较少阻尼)时,就会发生这种情况。无法确定一个AS路径是否稳定,另一个是否在拍动,或者它们是否都在拍动。如果与收敛时间相比,该周期足够短,则通过该对等方的路由都不会非常可靠地传送数据包。由于没有办法影响对等方,使其选择两条路径中的稳定路径作为路径,因此唯一可行的选择是通过将每次更改视为不可到达,然后进行路由公告来惩罚两条路由。
When a peer routing session is broken, either all individual routes advertised by that peer may be marked as unstable, or the peering session itself may be marked as unstable. Marking the peer will save
当对等路由会话中断时,该对等方播发的所有单独路由可能被标记为不稳定,或者对等会话本身可能被标记为不稳定。标记对等项将节省时间
considerable memory. Since the individual routes are advertised as unreachable to routers beyond the immediate problem, per route state will be incurred beyond the peer immediately adjacent to the BGP session that went down. If the instability continues, the immediately adjacent router need only keep track of the peer stability history. The routers beyond that point will receive no further advertisements or withdrawal of routes and will dispose of the damping structure over time.
相当大的记忆力。由于个别路由被公布为路由器无法访问,超出了直接问题的范围,因此每个路由状态将发生在与发生故障的BGP会话相邻的对等方之外。如果不稳定性继续存在,紧邻的路由器只需跟踪对等稳定性历史。超过该点的路由器将不会收到进一步的广告或退出路由,并将随着时间的推移处理阻尼结构。
BGP notification through an optional transitive attribute that damping will already be applied may be considered in the future to reduce the number of routers that incur damping structure storage overhead.
将来可能会考虑通过可选的传递属性发出BGP通知,说明阻尼已经应用,以减少产生阻尼结构存储开销的路由器数量。
The reuse lists are used to provide a means of fast evaluation of route that had been suppressed, but had been stable long enough to be reused again. The data structure consists of a series of list heads. Each list contains a set of routes that are scheduled for reevaluation at approximately the same time. The set of reuse list heads are treated as a circular array. Refer to Figure 4.
重用列表用于提供一种快速评估路线的方法,该路线已被抑制,但已足够稳定,可以再次重用。数据结构由一系列列表头组成。每个列表包含一组路线,这些路线计划在大约相同的时间重新评估。重用列表头集被视为一个圆形数组。请参阅图4。
A simple implementation of the circular array of list heads would be an array containing the list heads. An offset is used when accessing the array. The offset would identify the first list. The Nth list would be at the index corresponding to N plus the offset modulo the number of list heads. This design will be assumed in the examples that follow.
列表头的循环数组的一个简单实现是包含列表头的数组。访问阵列时使用偏移量。偏移量将标识第一个列表。第N个列表将位于对应于N的索引处加上列表头数量的偏移模。该设计将在下面的示例中进行假设。
A key requirement is to be able to insert an entry in the most appropriate queue with a minimum of computation. The computation is given only the current value of figure-of-merit. Instead of a computation which would involve a logarithm, the reuse array (reuse-array[]) described in Section 4.6 is used. The array, scale, and bounds are precomputed to map figure-of-merit to the nearest list head without requiring a logarithm to be computed (see Section 4.5).
关键要求是能够以最小的计算量将条目插入最合适的队列中。该计算仅给出当前的优值。使用第4.6节中描述的重用数组(重用数组[]),而不是涉及对数的计算。预先计算数组、比例和边界,以将优值映射到最近的列表头,而无需计算对数(见第4.5节)。
+-+ +-+ +-+ non-empty linked list means | | | | | | <-- that there are routes with +-+ +-+ +-+ defered action to be taken ^ ^ ^ N * delta-reuse seconds later. | | | +------+------+------+------+------+ +------+ | list | list | list | list | list | ... | list | | head | head | head | head | head | ... | head | +------+------+------+------+------+ +------+ ^ ^ ^ ^ ^ ^ Nth 1st 2nd 3rd 4th N-1 | offset to first list (the offset is incremented every delta-reuse seconds)
+-+ +-+ +-+ non-empty linked list means | | | | | | <-- that there are routes with +-+ +-+ +-+ defered action to be taken ^ ^ ^ N * delta-reuse seconds later. | | | +------+------+------+------+------+ +------+ | list | list | list | list | list | ... | list | | head | head | head | head | head | ... | head | +------+------+------+------+------+ +------+ ^ ^ ^ ^ ^ ^ Nth 1st 2nd 3rd 4th N-1 | offset to first list (the offset is incremented every delta-reuse seconds)
Figure 4: Reuse List Data Structures
图4:重用列表数据结构
Note that in the following sections the operator prefix notation "modulo a b" means "b % a" in C language algebraic operator notation. For example, "modulo 16 1023" would be 15.
请注意,在以下章节中,运算符前缀表示法“模AB”在C语言代数运算符表示法中表示“b%a”。例如,“模16 1023”将是15。
1. scale figure-of-merit for the index array lookup producing index
1. 索引数组查找生成索引的比例优值
2. check index against the array bound
2. 对照数组绑定检查索引
3. if (within the array bound) {
3. if(在数组绑定内){
set index =reuse-array [index ]
设置索引=重用数组[索引]
}else {
}否则{
set index =reuse-list-size -1
设置索引=重用列表大小-1
}
}
4. insert into the list
4. 插入列表
reuse-list[ moduloreuse-list-size (index +offset )]
重用列表[模块重用列表大小(索引+偏移量)]
Choosing the correct reuse list involves only a multiply and shift to do the scaling, an integer truncation, then an array lookup in the reuse array (reuse-array[]). The value retrieved from the reuse array is used to select a reuse list. The reuse list is a circular list. The most common method of implementing a circular list is to use an array and apply an offset and modulo operation to pick the correct array entry. The offset is incremented to rotate the circular list.
选择正确的重用列表仅涉及执行缩放的乘法和移位、整数截断,然后在重用数组中进行数组查找(重用数组[])。从重用数组检索的值用于选择重用列表。重用列表是一个循环列表。实现循环列表最常用的方法是使用数组并应用偏移和模运算来选择正确的数组条目。偏移量将增加以旋转圆形列表。
The granularity of the reuse timer should be more coarse than that of the decay timer. As a result, when the reuse timer fires, suppressed routes should be decayed by multiple increments of decay time. Some computation can be avoided by always inserting into the reuse list corresponding to one time increment past reuse eligibility. In cases where the reuse lists have a longer "memory" than the "decay memory" (described above), all of the routes in the first queue will be available for immediate reuse if reachable or the history entry could be disposed of if unreachable.
重用计时器的粒度应该比衰减计时器的粒度更粗。因此,当重用计时器启动时,受抑制的路由应以多个衰减时间增量衰减。通过总是插入到重用列表中,对应于超过重用资格的一个时间增量,可以避免一些计算。如果重用列表的“内存”比“衰退内存”长(如上所述),则第一个队列中的所有路由将可立即重用(如果可访问),或者历史记录条目可在不可访问时丢弃。
When it is time to advance the lists, the first queue on the reuse list must be processed and the circular queue must be rotated. Using an array and an offset as a circular array (as described in Section 4.8.6), the algorithm below is repeated every delta-reuse seconds.
当需要推进列表时,必须处理重用列表上的第一个队列,并且必须旋转循环队列。使用阵列和偏移量作为圆形阵列(如第4.8.6节所述),每秒钟重复一次以下算法。
1. save a pointer to the current zeroth queue head and zero the list head entry
1. 保存指向当前第零个队列头的指针,并将列表头项置零
2. set offset = modulo reuse-list-size ( offset + 1 ), thereby rotating the circular queue of list-heads
2. set offset=按模重用列表大小(offset+1),从而旋转列表头的循环队列
3. if ( the saved list head pointer is non-empty )
3. if(保存的列表头指针非空)
for each entry {
对于每个条目{
sett-diff =t-now -t-updated
sett diff=t-now-t-updated
set figure-of-merit =figure-of-merit *decay-array-ok [t-diff ]
设置优值=优值*衰减阵列正常[t-diff]
sett-updated =t-now
sett updated=t-now
if( figure-of-merit< reuse)
if(优值<重复使用)
reuse the route
重复使用路线
else
其他的
re-insert into another list (seeSection 4.8.6)
重新插入另一个列表(见第4.8.6节)
}
}
The value of the zeroth list head would be saved and the array entry itself zeroed. The list heads would then be advanced by incrementing the offset. Starting with the saved head of the old zeroth list, each route would be reevaluated and used, disposed of entirely or requeued if it were not ready for reuse. If a route is used, it must
将保存第0个列表头的值,并将数组项本身归零。然后通过增加偏移量来推进列表头。从旧的第0个列表中保存的头开始,每个路由都将重新评估和使用,完全丢弃,或者如果没有准备好重新使用,则重新查询。如果使用路线,则必须
be treated as if it were a new route advertisement as described in Section 4.8.3.
视为第4.8.3节所述的新路线广告。
5 Implementation Experience
5实施经验
The first implementations of "route flap damping" were the route server daemon (rsd) coding by Ramesh Govindan (ISI) and the Cisco IOS implementation by Ravi Chandra. Both implementations first became available in 1995 and have been used extensively. The rsd implementation has been in use in route servers at the NSF funded Network Access Points (NAPs) and at other major Internet interconnects. The Cisco IOS version has been in use by Internet Service Providers worldwide. The rsd implementation has been integrated in releases of gated (see http://www.gated.org) and is available in commercial routers using gated.
“路由”的第一个实现是Ramesh Govindan(ISI)的路由服务器守护程序(rsd)编码和Ravi Chandra的Cisco IOS实现。这两种实现在1995年首次出现,并已被广泛使用。rsd实施已在NSF资助的网络接入点(NAP)和其他主要互联网互连的路由服务器中使用。Cisco IOS版本已被全球互联网服务提供商使用。rsd实现已集成在门控版本中(请参阅http://www.gated.org)并且在使用门控的商用路由器中可用。
There are now more than 2 years of BGP route damping deployment experience. Some problems have occurred in deployment. So far these are solvable by careful implementation of the algorithm and by careful deployment. In some topologies coordinated deployment can be helpful and in all cases disclosure of the use of route damping and the parameters used is highly beneficial in debugging connectivity problems.
现在有超过2年的BGP路由阻尼部署经验。在部署过程中出现了一些问题。到目前为止,通过仔细实施算法和仔细部署,这些问题是可以解决的。在某些拓扑中,协调部署是有帮助的,并且在所有情况下,公开路由阻尼的使用和使用的参数对于调试连接问题非常有益。
Some of the problems have occurred due to subtle implementation errors. Route damping should never be applied on IBGP learned routes. To do so can open the possibility for persistent route loops. When IBGP routes within an AS are inconsistent, route loops can easily form. Suppressing IBGP learned routes causes such inconsistencies. Implementations should disallow configuration of route damping on IBGP peers.
有些问题是由于细微的实现错误造成的。不得在IBGP学习的路线上应用路线阻尼。这样做可能会导致持久路由循环。当AS中的IBGP路由不一致时,很容易形成路由循环。抑制IBGP学习路由会导致此类不一致。实现应该禁止在IBGP对等机上配置路由阻尼。
Penalties for instability should only be applied when a route is removed or replaced and not when a route is added. If damping parameters are applied consistently, this implementation constraint will result in a stable secondary path being preferred over an unstable primary path due to damping of the primary path near the source.
仅当移除或更换路线时,才应适用不稳定性惩罚,而不是添加路线时。如果一致应用阻尼参数,由于源附近主路径的阻尼,此实施约束将导致稳定的次路径优先于不稳定的主路径。
In topologies where multiple AS paths to a given destination exist flapping of the primary path can result in suppression of the secondary path. This can occur if no damping is being done near the cause of the route flap or if damping is being applied more aggressively by a distant AS. This problem can be solved in one of two ways. Damping can be done near the source of the route flap and the damping parameters can be made consistent. Alternately, a distant AS which insists on more aggressive damping parameters can disable penalizing routes on AS path change, penalizing routes only
在存在到给定目的地的多个AS路径的拓扑中,主路径的摆动会导致次路径的抑制。如果在路线襟翼的原因附近没有进行阻尼,或者如果远距离AS更积极地施加阻尼,则可能发生这种情况。这个问题可以用两种方法中的一种来解决。阻尼可以在路径襟翼的源附近进行,并且阻尼参数可以保持一致。或者,一个坚持更激进阻尼参数的远距离AS可以在路径改变时禁用惩罚路由,仅惩罚路由
if they are withdrawn completely. In order to do so, the implementation must support this option (as described in Section 4.4.3).
如果他们完全撤回。为此,实施必须支持该选项(如第4.4.3节所述)。
Route flap should be damped near the source. Single homed destinations can be covered by static routes. Aggregation provides another means of damping. Providers should damp their own internal problems, however damping on IGP link state origination is not yet implemented by router vendors. Providers which use multiple AS within their own topology should damp between their own AS. Providers should damp adjacent providers AS.
路由活门应在震源附近受潮。静态路由可以覆盖单宿目的地。聚合提供了另一种阻尼方法。供应商应缓解其自身的内部问题,但路由器供应商尚未实施对IGP链路状态发起的抑制。在自己的拓扑中使用多个AS的提供程序应该在自己的AS之间进行缓冲。提供程序应将相邻的提供程序视为。
Damping provides a means to limit propagation excessive route change when connectivity is highly intermittent. Once a problem is corrected, damping state corresponding to the prefixes known to be damped due to the problem just fixed can be manually cleared. In order to determine where damping may have occurred after connectivity problems, providers should publish their damping parameters. Providers should be willing to manually clear damping on specific prefixes or AS paths at the request of other providers when the request is accompanied by credible assurance that the problem has truly been addressed.
阻尼提供了一种在连接高度间断时限制传播过度路由更改的方法。一旦问题得到纠正,可以手动清除与由于刚刚修复的问题而被阻尼的前缀相对应的阻尼状态。为了确定连接问题后可能发生阻尼的位置,提供商应公布其阻尼参数。供应商应愿意在其他供应商的请求下手动清除特定前缀上的阻尼或作为路径,前提是该请求附有可靠的保证,即问题已得到真正解决。
By damping their own routing information, providers can reduce their own need to make requests of other providers to clear damping state after correcting a problem. Providers should be pro-active and monitor what prefixes and paths are suppressed in addition to monitoring link states and BGP session state.
通过阻尼他们自己的路由信息,提供者可以减少他们自己在纠正问题后请求其他提供者清除阻尼状态的需要。提供商应主动监控哪些前缀和路径被抑制,以及监控链路状态和BGP会话状态。
Acknowledgements
致谢
This work and this document may not have been completed without the advise, comments and encouragement of Yakov Rekhter (Cisco). Dennis Ferguson (MCI) provided a description of the algorithms in the gated BGP implementation and many valuable comments and insights. David Bolen (ANS) and Jordan Becker (ANS) provided valuable comments, particularly regarding early simulations. Over four years elapsed between the initial draft presented to the BGP WG (October 1993) and this iteration. At the time of this writing there is significant experience with two implementations, each having been deployed since 1995. One was led by Ramesh Govindan (ISI) for the NSF Routing Arbiter project. The second was led by Ravi Chandra (Cisco). Sean Doran (Sprintlink) and Serpil Bayraktar (ANS) were among the early independent testers of the Cisco pre-beta implementation. Valuable comments and implementation feedback were shared by many individuals on the IETF IDR WG and the RIPE Routing Work Group and in NANOG and IEPG.
如果没有Yakov Rekhter(Cisco)的建议、评论和鼓励,本工作和本文件可能无法完成。Dennis Ferguson(MCI)对门控BGP实现中的算法进行了描述,并提供了许多有价值的评论和见解。David Bolen(ANS)和Jordan Becker(ANS)提供了宝贵的意见,特别是关于早期模拟的意见。从提交给BGP工作组的初稿(1993年10月)到本次迭代,经过了四年多的时间。在撰写本文时,有两个实现的重要经验,每个实现都是从1995年开始部署的。一个由Ramesh Govindan(ISI)领导,负责NSF路由仲裁项目。第二个由拉维·钱德拉(Cisco)领导。Sean Doran(Sprintlink)和Serpil Bayraktar(ANS)是Cisco测试前实施的早期独立测试人员。IETF IDR工作组和成熟路由工作组以及NANOG和IEPG中的许多个人分享了宝贵的意见和实施反馈。
Thanks also to Rob Coltun (Fore Systems), Sanjay Wadhwa (Fore), John Scudder (IENG), Eric Bennet (IENG) and Jayesh Bhatt (Bay Networks) for pointing out errors in the math uncovered during coding of more recent implementations. These errors appeared in the details of the implementation suggestion sections written after the first two implementations were completed. Thanks also to Vern Paxson for a very thorough review resulting in numerous clarifications to the document.
还要感谢Rob Coltun(Fore Systems)、Sanjay Wadhwa(Fore)、John Scudder(IENG)、Eric Bennet(IENG)和Jayesh Bhatt(Bay Networks),他们指出了在编写最新实现时发现的数学错误。这些错误出现在前两个实现完成后编写的实现建议部分的细节中。还感谢Vern Paxson对该文件进行了非常彻底的审查,并对该文件进行了大量澄清。
References
工具书类
[1] Gross, P., and Y. Rekhter, "Application of the border gateway protocol in the internet", RFC 1268, October 1991.
[1] Gross,P.和Y.Rekhter,“互联网中边界网关协议的应用”,RFC 1268,1991年10月。
[2] ISO/IEC. Iso/iec 10747 - information technology - telecommuni-cations and information exchange between systems - protocol for exchange of inter-domain routeing information among intermediate systems to support forwarding of iso 8473 pdus. Technical report, International Organization for Standardization, August 1994. ftp://merit.edu/pub/iso/idrp.ps.gz.
[2] ISO/IEC。Iso/iec 10747-信息技术-系统间远程通信和信息交换-支持Iso 8473 PDU转发的中间系统间域间路由信息交换协议。技术报告,国际标准化组织,1994年8月。ftp://merit.edu/pub/iso/idrp.ps.gz.
[3] Lougheed, K., and Y. Rekhter, "A border gateway protocol 3 (BGP-3)", RFC 1267, October 1991.
[3] K.Lougheed和Y.Rekhter,“边境网关协议3(BGP-3)”,RFC 1267,1991年10月。
[4] Rekhter, Y., and P. Gross, "Application of the border gateway protocol in the internet", RFC 1772, March 1995.
[4] Rekhter,Y.和P.Gross,“互联网中边界网关协议的应用”,RFC 1772,1995年3月。
[5] Rekhter, Y., and T. Li, "A border gateway protocol 4 (BGP-4)", RFC 1771, March 1995.
[5] Rekhter,Y.和T.Li,“边境网关协议4(BGP-4)”,RFC 17711995年3月。
[6] Rekhter, Y., and C. Topolcic,"Exchanging routing information across provider boundaries in the CIDR environment", RFC 1520, September 1993.
[6] Y.Rekhter和C.Topolocic,“在CIDR环境中跨提供商边界交换路由信息”,RFC 1520,1993年9月。
[7] Traina, P., "BGP-4 protocol analysis", RFC 1774, March 1995.
[7] Trana,P.,“BGP-4协议分析”,RFC 1774,1995年3月。
[8] Traina, P., "Experience with the BGP-4 protocol", RFC 1773, March 1995.
[8] Trana,P.,“BGP-4协议的经验”,RFC 1773,1995年3月。
Security Considerations
安全考虑
The practices outlined in this document do not further weaken the security of the routing protocols. Denial of service is possible in an already insecure routing environment but these practices only contribute to the persistence of such attacks and do not impact the methods of prevention and the methods of determining the source.
本文档中概述的实践不会进一步削弱路由协议的安全性。拒绝服务在已经不安全的路由环境中是可能的,但这些做法只会导致此类攻击的持续存在,不会影响预防方法和确定攻击源的方法。
Authors' Addresses
作者地址
Curtis Villamizar ANS
柯蒂斯别墅酒店
EMail: curtis@ans.net
EMail: curtis@ans.net
Ravi Chandra Cisco Systems
拉维钱德拉思科系统公司
EMail: rchandra@cisco.com
EMail: rchandra@cisco.com
Ramesh Govindan ISI
拉梅什·戈文丹三军情报局
EMail: govindan@isi.edu
EMail: govindan@isi.edu
Full Copyright Statement
完整版权声明
Copyright (C) The Internet Society (1998). All Rights Reserved.
版权所有(C)互联网协会(1998年)。版权所有。
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
本文件及其译本可复制并提供给他人,对其进行评论或解释或协助其实施的衍生作品可全部或部分编制、复制、出版和分发,不受任何限制,前提是上述版权声明和本段包含在所有此类副本和衍生作品中。但是,不得以任何方式修改本文件本身,例如删除版权通知或对互联网协会或其他互联网组织的引用,除非出于制定互联网标准的需要,在这种情况下,必须遵循互联网标准过程中定义的版权程序,或根据需要将其翻译成英语以外的其他语言。
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
上述授予的有限许可是永久性的,互联网协会或其继承人或受让人不会撤销。
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
本文件和其中包含的信息是按“原样”提供的,互联网协会和互联网工程任务组否认所有明示或暗示的保证,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。