摘要

  • RFC 1587 让 OSPF 的 NSSA 以区域内 Type-7 LSA 引入外部路由,同时继续把全域 Type-5 外部路由挡在叶端之外。
  • P 位与非零转发地址只是让 Type-7 具备被翻译的条件;有资格的边界翻译器仍须另行产生 Type-5,而且通告者身份会改成该边界路由器。
  • RFC 3101 后来重写翻译器选举与交接稳定规则,并指出 P 位政策悖论:不向外传播的 Type-7 仍可能在边界影响来自区域外的流量。

普通 stub area 只差一个例外

OSPF stub area 用少知道来换取低负担。区域边界不把 Type-5 AS 外部 LSA 灌进叶端,而是给出默认路由。资源有限的路由器无须保存每一个外部目的地。

麻烦出现在叶端自己从 RIP 或其他协议学到外部网络时。普通 stub area 不准把这些外部路由引入 OSPF。若把它改回普通区域,外部路由可以导入,但核心的整套 Type-5 又会涌向叶端。

NSSA 保留了这种不对称:向内仍像 stub,向外却允许有限的外部知识。边界没有消失,而是变成必须审计的转换点。

N 位只证明双方会说同一种语法

RFC 1587 为 NSSA 增加 N 位,并与 E 位共同表示区域的外部路由能力。NSSA 接口上 N 置位、E 清零。Hello 中的设置与本地配置不一致,接收端就停止处理,邻接不会建立。

这一步证明相邻路由器同意使用 NSSA 语法。它不证明任何外部路由已经出现,也不证明某个来源可信,更不证明信息能越过区域边界。邻接成立只是证据链的入口。

外部路由由 NSSA 内的 AS 边界路由器写成 Type-7。Type-7 只在原区域内泛洪,也只存进该区域的链路状态数据库。Type-5 则在能够承载它的多个区域中拥有更大范围。两者字段相似,作用域与作者却不同。

收到 Type-7 仍不等于选中路由

路由器看见 Type-7 后,还要在 NSSA 内找到产生它的 ASBR。若 LSA 指定转发地址,也必须存在到该地址的区域内路径。内部 OSPF 路由优先于外部路由,合格外部路径再按类型与代价比较。

因此至少有三个记录:LSA 已进入数据库、路由计算接受了路径、转发表形成可用动作。RFC 1587 定义它们如何衔接,却没有把它们宣布成同一个事实。

P 位是请求,不是回执

NSSA 内部 ASBR 若希望网络进入全域传输拓扑,会在 Type-7 上设置 P 位,并提供有效的非零转发地址。P 清零或转发地址为零,通常就不能翻译。

但 P=1 只是在边界一侧提出要求。翻译要等 Type-5 与 Type-7 路由计算完成,并由有资格的 NSSA area border router 执行。RFC 1587 让区域内可达、Router ID 最高的边界路由器承担这项工作。

未聚合时,派生 Type-5 会复制网络、掩码、路径类型、代价、转发地址和外部标签,却必然改变 Advertising Router:Type-7 的作者是原 ASBR,Type-5 的作者是翻译 ABR。跨过边界的不是同一对象,而是一份重新署名的投影。

默认路由还存在按角色区分的例外。NSSA ABR 产生的 Type-7 default 必须保持 P=0,绝不能翻译成 Type-5;由 NSSA 内部、且并非 ABR 的 ASBR 产生的 Type-7 default 则可以设置 P=1,也可以被翻译。两种起源者不能互换。

范围政策能让已知路由留在里面

Type-7 address range 允许 ABR 聚合多个区域内网络,也能设为 DoNotAdvertise。此时,组成路由可继续在 NSSA 内被知道和采用,外部却没有相应 Type-5。

聚合进一步压缩来源。外部观察者只看见一个由翻译器产生的汇总及其派生代价,无法据此恢复全部 Type-7。状态减少了,证据颗粒也减少了。

当某条路由不再满足翻译条件时,原翻译器必须清除或按剩余状态重发 Type-5。本地 Type-7 与外部投影相互关联,却有各自生命周期。外面的记录可以消失,里面的原始通告仍然存在。

RFC 3101 把翻译权写成状态机

2003 年 1 月,RFC 3101 取代 RFC 1587。它定义 NSSATranslatorRole、NSSATranslatorState 与 Nt 位。边界路由器可以被配置为 Always,也可以作为 Candidate 参加选举。候选者要同时观察 NSSA 内可达性、AS 传输拓扑中的可达性、Nt 位与 Router ID。

落选的 elected translator 也不会立即停手。默认四十秒的 TranslatorStabilityInterval 让它暂时继续翻译,以减少反复清除与泛洪。控制权交接因此是带重叠期的可观察状态变化,不是一瞬间换名。

RFC 3101 还揭示 P 位政策悖论。P 清零的非默认 Type-7 虽不会被翻译成 Type-5,NSSA 边界仍可能把它装入本地路由表。来自 NSSA 外部的流量经过该边界时,可能被这条“不可传播”路由吸进区域,偏离发送端预计的路径,也偏离 P=0 看似表达的政策。

协议认证没有认证再分发意图

RFC 1587 明说没有讨论安全问题。RFC 3101 补入了对既有 OSPF 交换认证、共享密钥限制、重复通告与数据库溢出等问题的讨论,同时指出这些风险并非 NSSA 独有。

通过 OSPF 报文认证,只能说明报文通过了所配置的协议检查,并不提供机密性。它不能证明外部来源真实、P 位符合运营者意图、range 配置正确、翻译器选举无误、汇总保留了必要来源,更不能证明远端已经转发成功。

运行实现反过来改了文本

RFC 3101 记录,第一个已知完整实现带来了实质性内容修改。这是一张边界清楚的历史凭证:实现反馈改变了替代规范。它不是多厂商互通、广泛部署或现场成效的证明。

冻结来源也不证明当前仍有部署、任何厂商的现实行为,或某个具名运营者采用了怎样的配置。

这与 Heng Lu 关于运行代码优先、最小初始规范与本地采用以及现实而非倡议的要求相合:规范、实现、区域内路由、跨边界投影与真实业务结果只有在边界被保留时,才能写进同一段历史。

完整记录应依次保存:外部来源、Type-7 产生、NSSA 泛洪、本地计算、P 与 range 政策、翻译器状态、Type-5 产生、全域泛洪、远端选路、转发与实测结果。RFC 1587 让中间那道门变得可见。区域可以先知道;骨干网仍要等自己的证据。

来源