摘要
- RFC 3568 是 2003 年发布的 Informational 调查,概括截至 2000 年 12 月已知或使用的 DNS、传输层与应用层请求路由机制;它不是互联网标准,也不是当代部署报告。
- “最佳替代服务器”不是服务器的固有属性,而是观察者、可见请求者、候选集、指标方向与新鲜度、策略权重以及交接方式共同生成的有期限结论。
DNS 请求里通常没有客户端地址。专用 DNS 服务器能按策略返回不同的 A、NS 或 CNAME 记录,却常常只知道客户端站点的 DNS 服务器。若解析采用递归,请求路由服务器看到的甚至只是代替该站点 DNS 继续查询的另一台服务器。
这不是定位精度少几个百分点的问题,而是优化对象已经被替换。系统测量到递归服务器的往返时间,不能据此声称测量了每个终端到替代服务器的路径。证据链必须先回答:决策到底看见了谁?
一个解析器承载很多客户端
单一 DNS 回复可以指向一台替代服务器或一组服务器的虚拟地址;多个 A 记录可以让站点解析器轮转选择。排序可以影响同一解析器背后的多个客户端,但它并不证明实际负载均衡。
在 TTL 有效期内,共享解析器的用户可能获得同一组地址。突发流量于是带着共同选择涌向一个节点。缩短 TTL 能更快响应故障或负载变化,却会增加 DNS 查询量;有些实现还不遵守 TTL。缓存有效不等于支撑该答案的测量仍然有效。
每次选择都应绑定解析器身份、递归链、候选集、测量时间、策略版本、缓存范围和到期时刻。“最近”还必须带一个 离谁最近 的字段。缺少这个字段,形容词就在替数据作证。
多级解析增加了多级责任
NS 与 CNAME 可以把一次解析交给多个专业决策服务器。NS 重定向受域名层级限制,最后一台 DNS 服务器可能影响整个过程的缓存期限,异常引用还可能触发超时。CNAME 可以转入全新域名,不受原名称层级限制,但会增加另一轮解析。
这种分工能让地域、内容或策略判断更细,却也增加延迟、缓存和权威边界。审计记录不能只保存最终 A 记录;它必须保存每一跳收到什么、依据什么、返回什么以及答案会保持多久。
Anycast 找到的是决策服务器
RFC 3568 描述多台请求路由 DNS 服务器宣告同一 anycast 地址。路由会把查询送到在 OSPF/BGP 意义上离站点解析器较近的实例。它解决的是“哪台决策服务器接收查询”。
它没有证明该实例离客户端最近,也没有检查其负载。路由协议通常不对服务器负载敏感;路由距离近也未必意味着时延最低。更不能把到决策服务器的路径,冒充后来内容交付节点的路径。
因此 anycast 收件记录与替代服务器选择记录必须分开。前者说明查询到了哪里,后者才说明候选如何被比较。
DNS 只看见名称
DNS 天然按域名决策,理想的内容路由却可能需要按对象决策。把对象类型、哈希或标识编码进 DNS 名称,可以提前暴露对象信息,但一张页面可能因此触发多次解析,增加总体时延。
传输层提供另一条路。检查首个数据包可以看到客户端 IP、端口与四层协议,再对 DNS 的粗选结果作细化。不过 RFC 3568 指出,客户端到新节点的前向流量通常仍会经过最初由 DNS 选中的替代服务器,而数据量更大的反向流量可能直接返回客户端。
同一会话于是有决策路径、前向路径与反向路径。任何时延指标都要标明方向;任何“已交接”都要有目标节点接受、实际响应路径与生效时间的后续凭证。
应用层用权力换取可见性
应用层能读取 URL、头部、Cookie、语言和 User-Agent,从而按对象或会话选择节点。它可以返回 302 类重定向,在路径中拦截并拼接连接,或改写页面里的嵌入 URL。
每一种精细化都带来成本。重定向多一次往返,并依赖客户端继续请求;路径内元素把解析与连接状态放进数据通路;URL 改写仍让第一次请求到达源站,而且会把一次选择固化进页面。若页面被长期缓存,旧 URL 会继续指向已不可用或已不合适的节点。
TLS 把权限边界暴露得最清楚:内容网络若不终止 TLS,就看不到完整 URL。要获得更精细的路由上下文,就必须承担证书、密钥、内容可见性与修改授权。更了解请求,不只是技术能力提高,也是权力范围扩大。
指标从不脱离观察点
规范列出时延、跳数、BGP 信息、节点负载和内容可用性等输入。在其讨论中,“邻近”指往返时间;DNS 模式下常测到本地解析器。有些测量只有单向,而互联网路径可能不对称。
主动探测只能周期进行,NAT 与防火墙可能阻断,入侵检测还可能报警。没有回复可能代表策略,而非远或故障。用 HTTP 探测节点负载也难以获得实时信息,旧反馈可能不准确。RFC 3568 甚至明确警告,BGP AS_PATH 作为优选指标可能没有意义。
每个指标都应保存来源、目标、方法、方向、时间、原始值与失败语义。策略还要保存版本、硬约束、权重和决胜规则。只有这些字段齐全,“最佳”才是可以重放的计算,而不是无法质询的标签。
从选择到交付的凭证图
先记录该层实际可见的请求者与请求,再记录解析器链、查询或对象、候选与排除原因。测量携带观察点和新鲜度,策略给出规则,选择记录给出节点、理由与到期时刻。
随后保存 DNS 答案、重定向、改写、拦截或传输交接;保存 TLS 终止者与修改权限;保存目标节点是否接受请求、服务时是否拥有对象、当时负载、响应实际经过的路径、客户端是否重试以及应用结果。
DNS 返回不等于客户端到达。发出重定向不等于客户端跟随。改写 URL 不等于对象交付。选中节点不等于节点接单。任何一层都不能替下一层签收。
证据边界
本文不指认任何 CDN、运营商、解析器、客户端、源站、替代服务器、厂商、会话、事故或实测性能。RFC 3568 是历史机制调查,不是部署证明。
RFC 3466 提供同期内容互联模型;RFC 3238 讨论中间件边界。RFC 2782、RFC 1546、RFC 1034、RFC 1035 与 RFC 2181 提供 DNS/anycast 背景;RFC 3272、RFC 2386 与 RFC 3221 提供路由背景。RFC 7336 与 RFC 8008 只是后来的 CDNI 演进背景,不能倒推早期实现。
Heng Lu 关于运行代码优先与最小初始规范的文章,是明确披露的编辑视角:共同协议应保持小,而实际测量、交接和交付必须由运行系统举证。它们不证明 RFC 作者意图或任何部署结果。
结论是有限的:请求路由器只能在自身观察范围内作优选。只有把“为谁、为哪个对象、在何时、从哪些候选、依据哪些方向的测量、最终是否交付”写进同一凭证图,“最佳”才有可治理的含义。
Sources
- https://www.rfc-editor.org/rfc/rfc3568.html
- https://www.rfc-editor.org/info/rfc3568
- https://datatracker.ietf.org/doc/rfc3568/
- https://www.rfc-editor.org/rfc/rfc3466.html
- https://www.rfc-editor.org/rfc/rfc3238.html
- https://www.rfc-editor.org/rfc/rfc2782.html
- https://www.rfc-editor.org/rfc/rfc1546.html
- https://www.rfc-editor.org/rfc/rfc1034.html
- https://www.rfc-editor.org/rfc/rfc1035.html
- https://www.rfc-editor.org/rfc/rfc2181.html
- https://www.rfc-editor.org/rfc/rfc3272.html
- https://www.rfc-editor.org/rfc/rfc2386.html
- https://www.rfc-editor.org/rfc/rfc3221.html
- https://www.rfc-editor.org/rfc/rfc7336.html
- https://www.rfc-editor.org/rfc/rfc8008.html
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
