摘要

  • RFC 2386 用资源可用性与流的服务要求寻找较可能承载请求的路径,却明确指出:路由计算本身不预留它所描述的资源。
  • 它把细密、快速的决定留在自治系统内部,域间只交换相对稳定的信息;真正建立流时,每个节点仍保留对本地资源的准入权。

纸面上先出现的路径

传统尽力而为路由回答的是一个刻意受限的问题:目的地在哪里,按既定代价走哪条路。QoS 路由把另一个问题带进控制平面:这条流需要多少带宽、能容忍多少时延和抖动,哪一条路更有机会满足这些要求?最短路径可能没有余量,更长的路径反而可用。

问题也由此容易被说过头。既然路由器掌握容量信息,又算出一条合适的路,是否等于服务已经得到保证?RFC 2386 的回答是否定的。它反复使用“有较大机会容纳”这类受限表述。QoS 路由负责发现候选路径,不负责占住带宽。RSVP 之类的预留协议能够沿路径申请资源,却不会自动替路由器找出一条资源充足的路径。

于是,一条完整证据链浮现出来:链路先测量本地状态;路由系统把状态编码、量化并传播;接收者得到一幅可能已经延迟或汇总的地图;算法从地图上选出候选路线;流建立时,每个节点再用当下的本地资源做流准入控制。即使每一跳都说有容量,更高层的公平、成本或优先级策略仍可拒绝。资源真正分配、转发状态保持一致、实际指标被测到之后,服务结果才存在。

地图很有用,但地图不是回执。

被使用的指标会改变自己

可达性通常相对持久,可用带宽却是一种会被消耗的事实。一条路径因为“空闲”而吸引流量,正会使它不再空闲。若路由器一看到别处稍好就搬动流量,流量又会把新路径压满,然后再搬回来。RFC 2386 警告,这种追逐可能造成振荡,还会增加用户看到的时延变化与抖动,即使原路径其实仍满足要求。

因此,新鲜度不是简单追求“越实时越好”。高频发布会消耗带宽和路由器 CPU,也会把短暂波动放大成控制动作;发布太慢,计算又会依据过时信息。粗粒度量化能减少更新,却会抹掉准入所需的差异。平滑算法能压低噪声,也可能遮住真正的局部拥塞。

规范把更新触发条件视为稳定性的一部分。它还定义了路径固定:一条流被接受后,在一段时间内留在原路径,而不是随地图每次细小变化迁移。固定不等于永久保证;它只是把一条已准入流的连续性,与周围地图的持续刷新分开。

精细决策要付出状态代价

路由决定可以只按目的地址,也可以按源和目的地址组合,还可以细到每一条流。粒度越细,越可能为特定需求找到合适路径,路由状态也越大。

仅按目的地址时,来自不同源的流会被压到同一选择上。按源与目的地址区分,仍会把性质不同的流放在一起。逐流路由最精确,却要求网络长期保存更多状态。状态一旦丢失,还可能出现循环:一个节点忘了特殊路径,退回普通目的路由;上游节点仍记得逐流路径,于是包在两套现实之间往返。

更多状态不等于无条件地拥有更多真相。它也是更多需要维护的内存、更多会失步的副本,以及更多只能在运行时暴露的故障。关键不只是能否算出细路径,而是所有依赖这条路径的转发决定能否在流的生命周期里保持一致。

汇总用不确定性换规模

层次化汇总让大网络能够计算。一个域可以把许多内部链路和路径压成较小的表示,既减轻传播负担,也避免暴露全部内部拓扑。代价是细节消失。

RFC 2386 指出,一条流可能依据汇总状态被接受,建立时却发现真实的底层路径无法满足要求。这个摘要未必是谎言;它只是一个有损投影,却被拿去回答超出其精度的问题。

“回退重试”提供了一种补偿。建立过程在某节点失败后,可以沿已走的部分退回到更早的节点,让那里尝试另一条路。这样,预测错误变成一次受控搜索。但回退会延长建立时间,在某些负载下反而降低整体性能,不能替代准入控制。

正确顺序应当是:汇总信息缩小搜索范围,算法提出候选,节点面对实时资源,失败后明确拒绝或有限尝试其他路径。若第一步就被称作“保证”,系统反而失去诚实处理失败的空间。

自治系统之间只共享最小层

RFC 2386 最有力量的设计不在某个算法,而在行政边界。域内可以大胆试验:链路状态、探测、静态配置、按需计算,都可并存。域间交互则应简单、一致、稳定。

这不是等待“终极协议”期间的权宜之计。高度动态的域间状态难以扩展,会泄露运营者不愿公开的细节,也让远端路由器依赖一幅无法核验且必然有损的内部地图。框架更愿意交换依据工程容量形成的相对稳定信息。只在故障或集中超载等异常情况下更新,而不是每来一条流就改变域间声明。

网络因此运行在两种时钟上。自治系统内部可以用短时钟处理细粒度变化;邻居看到的是慢时钟上的工程能力、可达性和策略。公共层负责协调预期,不负责复制每一项内部事实。

这也保存了决策权。远端通告可以说明一个域在特定假设下愿意承载什么,入口边界仍要统计聚合需求并执行准入。超出工程上限的流量可以被拒绝、降为尽力而为,或交由其他策略。路由通告没有把本地资源的所有权交给域外的计算器。

价格暴露了缺失的最后一张票据

RFC 2386 把金钱成本列为可能的路由策略之一。运营者可以传播承载不同服务要求的大致价格,跨域路径再把成本组合起来。随之而来的问题很尖锐:如果承诺的 QoS 最终没有交付,应当如何收费?

这个问题揭示了控制平面无法证明的部分。通告描述能力,预留记录分配,两者都不必然测量跨越多个域的端到端结果。时延、抖动、丢包和吞吐仍需观察。若没有交付回执,价格可能比性能证据传播得更远。

安全章节从另一方向说明同一边界。QoS 请求必须经过验证,任意资源请求可能成为耗尽攻击。请求者写下的“需要”不具有自我授权能力。策略、计费和监管能够施加限制,但规范也承认,形式化防护仍有工作要做。

后来的机制没有抹掉这些分层

RFC 2205 定义了 RSVP 的接收方发起预留过程;RFC 2210、2211 与 2212 说明综合服务、受控负载与保证服务如何与之配合。RFC 2676 随后记录 QoS 路由机制和 OSPF 扩展。RFC 3272 把路由放入更广的流量工程循环:测量、建模、控制与评估。RFC 3630 又规定 OSPF 如何传播流量工程链路属性。

这些后续文档不能倒过来证明 RFC 2386 得到普遍部署。它们证明的是功能分离仍有价值:属性可以被通告,算法可以消费属性,信令可以请求资源,运营者可以规划容量,测量可以检查结果。正因为任何一项都不能诚实替代其他项,它们才需要组合。

RFC 2386 把自适应路由归结为两个基础动作:收集网络状态,再依据信息计算路径。它真正留下的,是围绕这两个动作的一组边界。状态受测量时钟约束,通告受范围与策略改写,计算只产生候选,准入查询本地现实,预留改变资源状态,转发与测量才给出结果。

凡是地图没有权力的地方,路径都还需要另一个决定。

来源