摘要
- RFC 5203 分别定义
REG_INFO通告、REG_REQUEST请求、REG_RESPONSE批准、REG_FAILED失败与零寿命取消;它们不能合并成一个“服务正常”。 - 注册是一份可刷新、可提前取消的软状态。批准的寿命约束注册本身,不是附属服务的可用性承诺。
- 可信的运维判断必须连接请求方与注册器状态、服务侧确认、配置纪元、实际调用以及最终结果。
绿色状态究竟来自哪里
设想一个分支节点向 HIP 服务注册,收到寿命为 120 秒的 REG_RESPONSE。控制器验签成功,于是写入“已注册”,并把这条记录显示为绿色,直到本地计算出的到期时间。
三十秒后,注册器所连接的服务组件重载配置,服务侧状态被清空。注册器进程仍然在线,也尝试发送零寿命取消,但更新走上旧路径,没有到达请求方。请求方随后真正调用服务时被拒绝。界面依然绿色,因为它只看原响应的计时器。
这是一个构造场景,不指向任何产品、部署或真实事故。它说明的不是协议造假,而是证据被越权使用:原响应确实批准过注册,本地计时器也确实没有到期;这两件真事都不能证明另一组件仍有状态,更不能证明后续操作成功。
如果系统不能回答“绿色来自哪一层”,它就会把历史准入事实伪装成当前运行事实。
通用注册机制刻意没有包办服务执行
RFC 5203 于 2008 年以 Experimental RFC 发布,给 HIP 主机提供向服务注册的通用方法,服务可以是会合服务器,也可以是支持 HIP 的中间盒。文档明确不规定如何发现服务、如何找到注册器,也不规定注册完成后如何与具体服务交互。
这不是等待实现者随意补齐的空白,而是职责边界。通用层可以描述请求、认证、授权与有限期状态;具体服务怎样建立资源、怎样接受一次操作、怎样报告完成,应由服务类型规范和实现本身负责。
RFC 将注册定义为请求方与注册器保存的共享状态,它使请求方可以从一个或多个服务中受益。这里的“可以”表示条件已经具备一部分,并不表示利益已经发生。
更关键的一句是:成功处理 REG_REQUEST 会在注册器建立状态,并且可能在服务建立状态。“可能”意味着注册器记录与服务记录不能默认视为同一对象。一个 API 返回成功,也可能只覆盖了前者。
通告、请求、批准各有时间边界
注册器用 REG_INFO 表明当前能够并愿意提供哪些注册类型。若暂时无法提供服务,RFC 5203 建议发送空的 REG_INFO;以后恢复时,再通过 UPDATE 告知关联主机当前集合。
因此,通告是一个带时间的声明。它没有预留未来容量,也没有证明服务在下一次使用时仍然存在。请求方只能根据最后收到的相关通告提出 REG_REQUEST,但请求本身仍只是意图。
注册器从 I2 中的 Host Identity 认证请求方,再按本地策略判断它是否有权注册。REG_RESPONSE 列出获批类型和授予寿命,REG_FAILED 列出未获批或因其他原因失败的类型。RFC 5203 中,失败类型 0 表示还需要凭证,类型 1 表示注册类型不可用。
这四个对象分别回答:
- 注册器当时声称能提供什么;
- 请求方想要什么;
- 注册器批准建立什么注册;
- 哪些类型没有完成,以及可表达的原因。
它们都没有声称某个后续业务请求已经穿过服务并得到结果。把四个时点压成 available=true,只是丢掉了证据的出处。
授予寿命不是不可撤销的运行保证
REG_REQUEST 带有期望寿命,REG_RESPONSE 带有实际授予寿命。请求方不能假定两者相同,即使所请求的值位于通告的最小值和最大值之间。
寿命字段很有价值。它让两端知道注册软状态何时需要刷新或失效。但它不是服务级别承诺。零寿命用于取消;请求方可提前取消;注册器或附属服务在无法继续提供能力时也可提前取消,例如配置改变。安全讨论还指出,注册器可在攻击或资源压力下自行取消。
所以,一条准确记录至少要区分:状态创建时间、上次刷新时间、配置纪元、取消发出时间、取消收到时间与预计过期时间。若服务有独立状态,还要有独立标识、建立结果与删除原因。
“没有看到取消”也不能自动变成“仍然可用”。规范说注册器应发送零寿命响应,不代表消息一定生成、传输、到达并处理。观察不到事件,只能留下未知。
验签增强可信度,却不会扩大语义范围
把 REG_RESPONSE 说成弱证据同样不准确。HIP 保护这些参数,注册器已经认证请求方并执行本地授权策略。对于“该注册器是否批准了这些类型、给了多长寿命”这个问题,响应是强证据。
问题发生在复用阶段。签名保护陈述的来源与完整性,但不会替陈述增加宾语。注册器签署“批准类型 S、寿命 L”,并不会让另一个进程保留内存,也不会让后续分组自动到达。
基础设施常把密码学强度误当成语义广度。越是可靠的签名对象,越容易被拿去关闭告警、跳过探测或证明交付。正确做法是保留原对象及其限定:谁、在什么配置纪元、依据哪版策略、批准了什么、到何时。
服务随后提供服务侧收据,网络提供传输观察,应用提供结果。这样,强签名仍然有用,却不会冒充未观察到的事实。
RFC 8003 增加了失败细节,没有取消这条边界
2016 年发布的 RFC 8003 取代 RFC 5203,并进入 Standards Track。它更清楚地区分注册器针对特定请求方的意愿,扩展证书授权相关失败原因,并增加资源不足类型,要求请求方在这种情况下不要立即重试。
这些改动改善了准入失败的可解释性。运维人员可以更准确地区分缺少凭证、证书问题、类型不可用与资源不足。然而,REG_INFO、REG_REQUEST、REG_RESPONSE、REG_FAILED、有限寿命和取消仍然存在。
更详细的失败码仍然只覆盖注册决策。它没有把通用响应变成服务执行遥测。后者仍需要具体服务的证据。
同时,标准更新不等于部署更新。文档取代关系说明规范史;某个现场是否使用新版本,需要二进制、配置和报文共同证明。
服务类型必须完成自己的证据链
RFC 5203 允许注册类型要求通用请求与响应之外的 HIP 参数,其语义由具体类型规范定义。这体现了最小共同机制:共同层只做共同的事,局部能力由局部规范决定。
对于会合服务,后续证据可以包括 HIT 到 locator 绑定、后来收到 I1、转发动作以及对端独立响应。对于中间盒服务,证据可能是具体规则、匹配条件、策略所有者、寿命以及实际命中的分组。二者不能共用一个虚构的“服务成功”字段。
可以把链条写成:
已通告 → 已请求 → 已批准 → 注册器有状态 → 服务有状态 → 已使用 → 有结果。
任何一条箭头都需要新的观察。若服务没有提供确认接口,就写“服务状态未知”。未知不会破坏系统;把未知填成正常,才会破坏定位能力。
一份可以跨越重启的收据
所需记录并不复杂:
- HIP 与扩展版本、实现构建和配置修订;
- 请求方、注册器的 HIT;
REG_INFO指纹、类型、寿命范围、时间与验签结果;REG_REQUEST指纹、类型和期望寿命;- 已认证身份、凭证链、策略版本和决策主体;
REG_RESPONSE或REG_FAILED指纹、逐类型结果和授予寿命;- 两端状态标识、创建、刷新和过期;
- 服务侧状态标识与明确确认;
- 取消、驱逐、重启、配置变化和资源压力事件;
- 服务专用请求、响应、路径观察与最终结果;
- 观察盲区明确标为未知。
重启后,控制器不应让旧纪元的绿色状态直接继承。注册器可以重建自己的记录,服务应重新证明其状态,自动化再根据新的证据恢复判断。
RFC 5203 给出的并不是“注册不可信”,而是更严格的答案:注册只对注册负责。把这句话保留下来,准入、可用性和结果才能各自被正确验证。
来源
- RFC 5203 信息
- RFC 5203 HTML
- RFC 5203 文本
- RFC 5203 Datatracker 记录
- RFC 5203 历史
- RFC 5203 Datatracker API
- RFC 5203 勘误
- RFC 8003 信息
- RFC 8003 HTML
- RFC 8003 文本
- RFC 8003 历史
- RFC 5201 — Host Identity Protocol
- RFC 5204 — HIP Rendezvous Extension
- RFC 8004 — HIP Rendezvous Extension
- RFC 7401 — Host Identity Protocol Version 2
- RFC 3234 — Middleboxes: Taxonomy and Issues
- RFC 9063 — Host Identity Protocol Architecture
- On Reality Layers, Symbolic Power, and Why Clarity Feels So Hostile
- Running Code Primary
- Minimum Initial Specification, Localized Future Decision
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
