摘要

  • RFC 1476 的 RAP 流程把一条入站路由依次交给接收过滤、度量与选项处理、聚合、活动路由选择和逐对等方发送过滤。
  • 未知选项的类别可以让路由继续携带选项、删去选项后传播、只在本地使用或整体丢弃;这些分支都不等同于认证、实际转发或送达。

通告落地时,决定才刚刚开始

RFC 1476 描述的 RAP 是一项实验性距离向量协议。它希望同一套机制从孤立局域网延伸到国际运营商网络,并尽量避免先验地把“内部”和“外部”路由划成两套世界;真正的边界由具体策略形成。

这是一项设计目标,不是部署证明。RFC Editor 的记录 能确认文档身份、日期与状态,不能确认某台路由器运行过 RAP,也不能确认某条报文走过它计算的路径。

RFC 里的流程图比宏大目标更有用。来自 RAP 对等方的路由,先经过邻近度过滤和聚合,进入内部候选数据库;系统再从中选择活动路由,装入 IP 转发表;最后,输出过滤器才从活动路由中挑出各个对等方能够看到的子集。静态配置、接口状态和 RIP 等协议也可提供候选。收到、保留、激活、输出与数据报使用,是五种不同事实。

第一关:今天愿意接收,不等于路由仍在

接收过滤器可以按距离和前缀具体程度丢弃通告。资源不足时,路由器可以收紧阈值;需要全局连通的路由器则要接受所有尚未达到“无穷大”的路由,再通过聚合减小规模,或者依赖另一台承担此事的默认路由器。

RFC 特别指出一个时间陷阱:过滤器日后放宽,早先被丢掉的路由也未必回来。对等方可能已经发布过一次,之后没有理由重发。新配置只证明“现在会接受”,不能证明“现在已经拥有”。

要跨过这道缺口,需要新的通告、过滤前留存的原始记录,或明确的刷新机制。策略可以改变未来,不能凭空恢复已经消失的输入。

第二关:不懂选项,也必须选择后果

RAP 在处理阶段递增距离,累加时延与成本,并沿路径取最小 MTU 和最小带宽。已知策略可以拒绝路由;未知选项则由选项头里的类别决定处理方式。

类别 0:可以使用和传播,但传播时必须原样保留选项。类别 1:可以使用和传播,却不再携带该选项。类别 2:可以本地使用,不能继续传播。类别 3:丢弃整条路由。除路由头里的距离以外,规范不要求所有实现理解任何特定选项。

类别不是信任位。它不验证发送者,不证明内容真实,也不保证动作安全。类型与类别彼此正交,同一类型在不同实现中可能承担不同类别。格式字段有时能让系统把未知值打印出来供排障,但“能显示”不等于“懂语义”。RFC 还明确说,类别 1 没有保密作用:实现可以把类型置为 null,再转发剩余描述。

这不是对已有 IPv6 未知选项文章或 BGP Partial 文章的重写。那两篇各自拥有动作位与不透明传递机制。这里的关键是:RAP 把“不理解”变成整条决策链里的分叉,它会改变路由留在本地、跨越边界或彻底消失的命运。

源限制、可接受使用与公共介质是三件事

Source Restriction 用来说明哪些源地址可以使用某条路由。如果 IP 转发层配置了安全过滤器,RAP 必须把限制带进路由信息,否则流量可能选择看似更优的路径,最后在过滤器处被静默丢弃。

但传播限制也可能泄露安全配置。RFC 承认这种信息具有保密性,并要求实现谨慎地只向有权使用该路由的网络方向传播。文本写下了责任边界,却没有提供真实部署中边界未被突破的证据。

AUP 选项表达的是合作性使用规则,例如某个网络不接受商业流量。RFC 明说它不是转发过滤意义上的安全屏障。Public 选项又回答另一问题:路径是否包含可能被非目的接收者读取的广播介质。谁能作为源、什么用途被允许、传输介质是否暴露,不能压缩成同一个“策略”标签。

第三关:聚合节省状态,也删去解释

若多条更具体路由经过同一对等方,并满足距离条件,RAP 可以把它们纳入更宽的聚合路由。但规范反对无条件聚合。特别是策略属性,可能阻止聚合,甚至导致路由被直接丢弃。

RFC 1338 提供了当时超网与规模压力的背景。RFC 1476 暴露的是另一面:摘要减少资源消耗,也可能拿走下游做策略判断所需的差异。收到聚合路由,不等于知道所有贡献前缀及其属性。

第四关:候选数据库不是转发表

聚合之后,RAP 把剩余候选与 RIP 等其他协议提供的路由合并,再由本地策略决定哪些进入 IP 转发表。任何度量和选项组合都可以参与选择。

RFC 1058 是 RIP 的距离向量背景,RFC 1247 则代表 OSPF 链路状态设计。RFC 1476 希望与多种来源协作,但没有把“学到”写成“选中”。内部数据库中出现候选,不能证明 FIB 已安装;FIB 中出现条目,也不能证明某个具体数据报匹配、出接口或抵达目的地。

第五关:每个邻居看到的是不同投影

发送过滤只能从活动路由中取子集,并且可以为每个对等方选择不同集合。本地正在使用的路由,可以不告诉某个邻居;类别 1 的选项可以在输出时消失;类别 2 的路由则停在本地。

规范还要求输出通告反映数据报过滤器,以免邻居把流量引入黑洞。这是一条规范义务,不是履约回执。要证明它真正成立,需要对齐生效过滤器、具体输出通告、邻居选择以及数据面观测。

TCP 活着,RAP 进程仍可能已经死去

RAP 对等方在 38 端口建立一条对称 TCP 连接,双向交换路由命令,却不逐条确认。Poll 与 No Operation 在 RAP 层检查活动并重置计时器。

RFC 不鼓励只依赖 TCP keepalive,因为它最多证明远端 TCP 仍接收数据,不能证明 RAP 进程仍在工作。连接断开时,双方应清除对方曾提供的全部路由。这里仍需区分规范、执行日志与转发表结果。

环路恢复也有边界。RAP 利用距离上限和 Trace 选项,最后手段只能保证在错误不反复出现时“最终”打破环路,不能保证快速收敛。一个形容词不能替代收敛时间分布。

历史价值在于没有把层次压平

配套的 RFC 1475 及其信息记录 描述 TP/IX 与前向路由标识。上一篇文章已经拥有那个逐跳私有标识、无效值回退及 RAP Add/Purge 时序。本篇只引用它划定边界,不重讲同一机制。

RFC 2026 有助于正确理解标准流程用语。实验性提案可以提供重要思想,但文档状态不会自动升级为实现与采用。

这正是 Heng Lu 关于运行代码优先、最小初始规范与本地化未来决策和现实层次的编辑准则:入站通告只能证明一条消息到达。它不能借用过滤、激活、输出、转发与最终结果尚未产生的权威。

来源