摘要

  • RFC 1104 没有提出一套完成的统一架构,而是把策略路由分成三种模型:控制路由信息的分发、过滤或转发具体数据包、动态分配带宽与缓冲等资源;它又把 accounting 作为相关但独立的历史记录来讨论。
  • 路由表里存在一条可达性,不证明某个数据包通过了过滤;一个路由器放行数据包,不证明端到端路径或交付;路由与放行都不证明容量已分配,也不证明后来的费用归属正确。
  • 因此,“策略成功”不是足够证据。可达性状态、逐包处置、资源授权与使用记录必须保留各自的控制者、版本、时间、观察点和作用范围。

账本在最后出现,却最容易被当成开端

设想一条记录写着某个用户消耗了一定网络资源。它看似能解释整段过程:网络允许了通信,数据包经过了路由器,容量被占用,因此费用成立。但记录本身最多证明某个计量系统在某处累加了一个定义过的单位。它没有分发路由,没有打开过滤器,也没有把缓冲或带宽交给任何流量。

RFC 1104 在 1989 年 6 月就把这种倒推拆掉。作者是 Merit/NSFNET 的 H-W. Braun,目的不是宣布一种已经完成的 Internet 架构,而是列出可讨论的模型,寻找能够扩展的策略路由方法。当前 RFC Editor 资料页 把文档状态列为 Unknown;IETF Datatracker 将其归入 Legacy,且不赋予 IETF 标准流程中的正式地位。

这份历史文本最重要的动作不是给出答案,而是拒绝让同一个词覆盖不同机器。它先列出三类策略:路由信息分发、数据包过滤与转发、网络资源动态分配;随后又单独讨论核算。四类动作可以互相影响,却不共享同一种证据。

路由信息改变的是“可能到达”的集合

第一种模型在网络或 Administrative Domain 的尺度上工作。控制者决定接受、采用或继续传播哪些路由信息,于是某些网络会进入或退出一张路由视图。RFC 1104 称它为宏观层面的控制,因为它操作的是整段可达性,不是某个终端或某个人。

文档用当时的 NSFNET 接口说明这种做法,包括按来源地址核验邻居、核对域或 AS、检查所通告的网络号,以及通过策略数据库控制度量。这四项历史检查已经作为旁证出现在 Sofia Ren 的 RFC 1074 文章中,不是本文的新发现,也不承担本文主线。

RFC 1104 在例子之后写出的限制更值得保留。只控制路由信息,不能等同于逐包过滤;它也不能仅靠普通路由分发阻止经 source routing 注入的恶意流量。一个网络没有出现在某份路由视图里,说明从该视图出发缺少一种转发可能,不说明后来观测到的数据包为何消失。反过来,一条路由存在,也只说明控制平面提供了选择,不说明实际选择、转发或交付。

路由证据因而需要限定对象:哪一个前缀或网络,由哪个邻居,在何种策略版本下被接受或拒绝,最终进入了哪台设备的哪份状态。它不能代替逐包记录。

过滤器作出的是局部数据包决定

第二种模型把观察单位缩到单个数据包。设备可以把包头或其他可用字段与当前规则比较,然后在一个具体位置放行、转发或丢弃。RFC 1104 称这种控制更“微观”,因为它可能细到终端甚至用户标签。

精度同时带来成本。文档提醒,严格的逐包核验会影响路由器性能,也可能要求规模庞大、彼此一致的策略数据库。规则写得越细,系统越需要证明它在决策时取得了哪一版规则,并且不同执行点没有各自理解成另一件事。

即使证据完整,一次放行仍只属于一个观察点。它没有完成 RFC 1102 所讨论的策略路由构造——后者把策略路由描述为一串由策略网关逐步具体化的行政区域。RFC 1104 的一次 filter match 也不证明下一跳继续接受、回程存在、终点收到或应用读取。

因此,数据包日志应回答很窄的问题:哪个观测到的包,在何处,以哪版规则匹配哪条条件,得到何种本地处置。把它写成“端到端策略成功”,就是让一个闸门替整条路径作证。

容量分配是第三项授权,而且总有竞争者

第三种模型处理带宽、缓冲、线路和队列优先级。RFC 1104 说它与路由信息分发“基本正交”,同时承认两者会相互作用。正交的意义不是互不相干,而是状态不能合并。

一条路由可以存在,但相关流量没有预留带宽;一个包可以通过过滤,却在队列里长期等待。反过来,系统也可能提前为某类流量保留资源,但端到端可达性随后失败。“允许前进”和“给足前进条件”属于不同控制者。

资源还有路由与过滤不一定显露的竞争关系。某一类获得更多带宽、缓冲或优先级,通常意味着另一类可用份额减少。跨域分配因此不只是技术信令问题,还涉及谁有权从他人处抽走稀缺资源。RFC 1104 只提出这类政治与技术问题,没有证明某次跨域授权真的发生。

文档还点出另一种选择:与其投入计算、数据库与治理成本执行稀缺规则,网络也可以尝试降低资源的稀缺程度。能写出一条分配规则,不等于执行它就是最经济的策略;控制系统本身也占用资源。

计量记录事实主张,不签发权限

RFC 1104 把 accounting 视为独立而相关的面。它把历史使用信息与策略结合,可在域、网络、主机或用户等层次记录流量、路径或其他用量,并可能影响后续决策。关键词是“历史”:记录在动作之后形成,不能倒过来授予之前的路由、过滤或容量权限。

后来的 RFC 1125 将 charging policy 拆得更细:计量单位、计算依据、金额、谁支付、以谁的计数为准,以及上下界。文中的示例明确不是官方政策,但这种字段划分揭示了归属问题。即使计数准确,“这个计数属于谁”和“谁应承担后果”仍需要另一套规则与授权。

跨域服务尤其容易出现空隙。一个域观测到的流量,不一定足以描述由多个域共同完成的端到端服务。不同观测点可能使用不同单位、时钟与归属对象。把其中一个计数直接升级为账单,会把计量权限变成裁决权限。

完整证据链至少依次包含:政策文本存在;控制器装载了当前版本;路由、数据包或资源动作发生;定义明确的观察者记录使用;另一制度主体完成归属并采取收费或制裁。前一环不能自动签发后一环。

四条记录必须允许彼此不一致

RFC 1104 的价值在于承认同一时刻可能存在四个不同答案。路由视图说可达,过滤日志说拒绝;过滤日志说放行,资源记录说没有容量;资源记录说已经预留,计量器却没有观察到使用;计量器有数字,收费规则仍无法确定承担者。这些差异不是脏数据,而是系统真实边界。

“策略已执行”会消灭这些边界。如果路由和逐包处置合成一个字段,调查者无法区分无路可走与被规则拦截。如果放行和资源授权合成一个字段,等待会被误报成拒绝,许可会被误报成服务。如果资源计划和计量合成一个字段,尚未使用的预留就可能变成费用。

可审计对象不应是一句 verdict,而应是一组带出处的有限事实:政策版本、控制者、时间、范围、路由状态、本地数据包处置、资源授权、计量单位与制度决定。四条记录可以互相引用,不能互相冒名。

来源