摘要

  • RFC 5346 是一份 Informational 历史报告,记录 NIDA 与两家韩国 VoIP 运营商在 2006 年开展的 Infrastructure ENUM 预商用试验。它不是互联网标准,也不能证明当前部署;它具体展示了 ENUM 与既有 PSTN 路由共存时的控制分支。
  • 在试验规则中,NOERROR 且存在可用 URI 才继续处理 ENUM 路径;NOERROR 但没有可用 URI 会让 ENUM-only 号码立即失败;NXDOMAIN、服务器失败、拒绝、格式错误、未实现或超时则把号码交回厂商方法和 PSTN。响应码并不独自决定业务含义。
  • 呼叫成功只能证明最终路径取得了结果,不能证明 ENUM 提供了路由。可审计记录必须保留查询、响应、可用记录判断、URI 域名、映射来源、超时、回退原因、网关、互联协议和最终结果。

超时不是等待结束,而是授权切换

如果只看用户体验,超时是一段额外延迟。如果看控制面,超时是新目录失去决定权的时刻。

softswitch 先把 E.164 号码转换成 ENUM 域名,通过递归解析器查询 NAPTR。没有响应时,它不会永远等待。计时结束后,ENUM 模块把情况视为 DNS 错误,并按试验规则回到厂商特定方法。在当时的配置中,这意味着通过 PSTN 继续路由。

号码本身没有变化,所依赖的制度却变了。ENUM 路径依赖 e164.arpa、递归解析器、NAPTR 服务和 URI;备用路径依赖本地前缀表、传统交换网络以及另一套运营安排。把两者都记成“已接通”,会删除最重要的控制事件。

因此,超时字段不能只记录毫秒数。它还应记录:哪个解析器、哪次查询、何时失效、系统合成了什么错误、哪条政策接管、旧路径是否允许处理这个号码,以及最终使用了哪一跳。

试验没有草率缩短共享 DNS 计时器

一种诱人的修复是缩短 ENUM 查询超时,让 PSTN 更快接管。RFC 5346 说明试验没有这样做。softswitch 的 DNS 栈还服务于其他用途,针对一个分支采用非标准计时配置,可能改变别的 DNS 操作。

这暴露了一个常被忽略的依赖:局部性能参数可能是共享运行时配置。缩短它或许改善呼叫建立,却可能让其他查询过早失败。没有依赖图,就无法把“优化 ENUM”与“改变整台设备的 DNS 行为”分开。

可靠变更需要按用途测量,而不是只看一个平均值。应比较解析器等待、fallback 决策、PSTN 路由和 SIP 响应分别花费多少时间,并验证同一 DNS 栈上的其他消费者。

NOERROR 也可能要求立即停止

试验为不同号码范围设计了不同含义。ENUM-only 范围中的在用号码必须发布可用的 SIP 或 H.323 URI,因为它们没有 PSTN 互联点。若号码停用,域名仍可存在,但不提供可用于发起呼叫的 NAPTR。

因此,NAPTR 查询可以得到 RCODE=0,答案却没有可用 URI。试验把这个状态解释为“号码存在于该范围,但当前不能呼叫”,于是立即失败。若盲目回退 PSTN,可能走向根本不存在的路径,产生失败甚至循环。

相反,许多拥有 PSTN 互联点的号码在 ENUM 初期根本没有记录。NXDOMAIN 或其他 DNS 错误不表示号码停用,只表示新目录没有有效答案。此时旧路由仍可能正确。

所以响应码与动作之间还有一层政策:号码属于哪类范围、是否有传统互联、支持哪些 enumservice、记录如何配置。DNS 搬运状态,却没有创造其业务语义。

正确的 URI 仍未形成可执行路由

当 NAPTR 返回可用 URI,softswitch 还要处理 URI 的 domainpart。RFC 5346 给出两种来源:递归解析和内部固定表。

固定表把域名映射到具体网关主机名与地址。若表中没有该域,呼叫回退 PSTN。递归方案若无法得到 SIP 可用记录,同样回退。

表之所以存在,不只是因为 DNS 不可靠。运营商按照双边协议互联并收取费用,可能约定专用网关。公开可解析地址不等于任何运营商都有权使用。私有表部分承载了商业许可面。

但表也是第二份事实。DNS 更新而表不更新,或协议改变后旧网关仍在表内,都可能造成分歧。一次 URI 解析成功不能证明表条目有效,一次表命中也不能证明协议仍生效。

试验允许在固定表和递归 DNS 之间迅速切换,以控制早期性能与可靠性风险。文档明确把它称为临时办法,而非长期合理架构。切换模式本身必须进入日志。

回退可以保护服务,也可以掩盖目录空洞

ENUM 初期只有少数运营商提供数据。若完全依赖新目录,大多数呼叫都会失败。继续保留 PSTN 是现实的迁移保护。

问题出在指标。若仪表盘只奖励接通率,目录缺失会被旧网络悄悄修复。团队看到的可能是“所有呼叫先查 ENUM,最终大多成功”,却误写成“ENUM 已覆盖大多路由”。尝试不是选择。

至少要分开四类:ENUM URI 直接形成 IP 路由;取得 URI 后 domainpart 失败而回退;DNS 错误或超时后回退;NOERROR 无可用 URI 而按政策终止。每类需要自己的分母、延迟和结果。

当备用路径长期表现良好,撤掉它会越来越困难。过渡状态会制度化,新目录可能永远不必面对自身覆盖不足。这是连续性带来的二阶依赖。

平均建立时间没有说明谁选了路

试验用 SIP INVITE 到 200 OK 的平均时间比较 ENUM 与非 ENUM 呼叫。六组数据分别为 A→A 2.33/2.28 秒、A→B 2.23/2.25、A→其他 PSTN 4.11/3.79、B→B 2.18/2.05、B→A 2.19/2.19、B→其他 PSTN 3.95/3.41。

差异都小于一秒。这支持有限结论:在这些试验组合中,呼叫者难以从建立体验区分选择。它不构成普遍商用性能证明。

报告未给出样本量、分布、尾延迟、失败分母、缓存状态或每次呼叫的真实路径。200 OK 也不证明媒体质量、计费、通话完成或号码归属。

一次快速 PSTN 回退与一次纯 ENUM 呼叫可以落在同一平均值中。平均数衡量体验表面,不能充当路由来源证据。

错误发生在主叫网络,修复权却可能在别处

共享 ENUM 数据若配置错误,故障会出现在发起呼叫的运营商网络。该运营商未必知道目前由谁服务这个号码,也未必知道谁能修改记录。号码携转让责任链更加模糊。

解析器可能忠实返回错误数据;softswitch 可能正确执行错误路径;最终故障仍无法指出修复者。技术正确性没有自动生成治理责任。

事故包应包含记录版本、EPP 提交、动态更新、服务运营商声明、携转状态、解析器视图、路由来源、实际网关和修复联系人。共享数据库若只传播数据而不传播可追责性,会加速错误扩散。

公共 ENUM 与隐私目标发生拉扯

试验中的 2.8.e164.arpa 可从公共互联网访问。运营商质疑集中号码管理是否现实,也担心号码暴露,更倾向某些私有访问模式。

递归解析器还是攻击面。RFC 5346 指出,解析器被控制后可以迫使呼叫失败或延迟,建议允许 softswitch 所在本地网络访问并限制外部。

私有查询不保证数据正确,公共解析不授予互联权限。可见性政策、记录真实性、路径授权和呼叫结果必须分别记录。

勘误和历史边界不能省略

勘误 1537 把第 4.1.1 节四处“rule 2”更正为“rule 3”;勘误 1538 把“non-complaint”改为“non-compliant”。若运行手册直接复制旧编号,可能把操作员引向错误步骤。

RFC 5346 是 Informational,不是互联网标准;它描述 2006 年韩国预商用试验。RFC 6116 后来取代 RFC 3761。本文不据此断言现有部署、厂商缺陷、现实事故或采用率。

它留下的可复用原则很清楚:只要新目录与旧路径共存,结果记录就必须保存控制权转换,不能用最终成功覆盖中间事实。