摘要
- 对等待更新答复的既有会话,RETRY_AND_TERMINATE 在 Tx 到期时允许服务继续,并保持 PendingU;之后若出现发送失败或协议定义的临时错误,才终止服务。
- 生效策略可能覆盖本地配置;迁移既有信用控制会话,还必须满足故障转移许可与状态处理要求,不能只验证备用服务器是否可达。
“重试,然后终止”听起来像一条很坚决的规则。但在 Diameter 的信用控制过程中,规则名称没有说出全部时间顺序:一个计时器已经到点,服务仍可以继续,请求也仍然没有结案。此时发生的消耗不是仪表盘上的一个待处理符号,而是已经交付出去的服务。
这不是对某家运营商事故的描述,而是标准明确容纳的一种行为。范围也必须说清:会话已经建立,客户端发出更新请求,正在 PendingU 状态等待答复。在 RETRY_AND_TERMINATE 下,应用计时器 Tx 到期的动作是允许服务、继续留在 PendingU;后续若确定发送失败,或收到协议所定义的临时错误,则终止服务并转入 Idle。RFC8506 第 7 节表 4给出了这组转换,第 5.7 节解释相应的失败处理过程。
因此,管理问题不宜停留在“故障时放行还是阻断”。更有用的问法是:究竟哪个事件结束了继续提供服务的容忍?谁批准了前面的等待?最终成功的答复,是否把等待期间的消耗从管理视野里抹掉了?
请求还在等待,服务已经发生
按会话进行的信用控制,包含单位预留、中间更新和最终用量报告。这里的单位不必是钱,可以是时间、数据量或者服务数量。第 5.3 节说明,额度被消耗、有效期届满以及某些服务条件变化,都可能触发中间请求;为减少中断,也可以提前提出请求。它是围绕用量和授权展开的持续交换,不是每次都从零开始的余额查询。
下面的三个事件,只描述采用 RETRY_AND_TERMINATE 的既有会话更新,不能套用于所有初次接入。
| 更新等待期间发生的事件 | 标准规定的处理 |
|---|---|
| Tx 到期 | 允许服务,仍处于 PendingU |
| 收到成功的更新答复 | 停止 Tx,回到 Open |
| 发生发送失败或收到临时错误通知 | 终止服务,进入 Idle |
“临时错误”在这里是协议中的错误类别,并不是对响应慢的随口形容。“发送失败”则包括无法与目标及适用的备用目标通信、请求最终超时等情形。若把这些都归为一个笼统的“超时告警”,就会丢掉同一策略先继续、后终止的原因。
第 13 节建议 Tx 取十秒,但建议值不是任意运营网络的实测配置,也不是保证最多承担十秒消耗的上限。额度有效期对应的 Validity-Time、服务器会话监督所用的计时器,又各有用途。不能把几个不同位置的时钟拼成一个未经验证的统一服务承诺。
继续服务同样不等于客户端凭空增加了一笔无限额度。第 5.3 节把已报告用量与随后获得的新授权连接起来;报告旧用量后、拿到新授权前,客户端并不因此自动拥有一笔新的可用单位。标准中的临时服务动作,应放在这个交换过程内理解,而不是解释成免费使用权。
三种策略,不是一张全局通行证
第 8.14 节列出 TERMINATE、CONTINUE 和 RETRY_AND_TERMINATE;没有收到故障处理属性时,默认使用 TERMINATE。在 PendingU 中,TERMINATE 会在 Tx 到期时终止服务。另外两种策略在这一步都允许服务,但在后续发送失败或临时错误出现时分叉:CONTINUE 仍允许服务,RETRY_AND_TERMINATE 则终止。尝试备用目标还取决于是否支持故障转移、是否存在可用替代目标。
这些规则并不意味着任何负面答复都可以忽略。表 4 对 END_USER_SERVICE_DENIED 明确要求终止服务,不因 CCFH 的取值而改变。初次询问如果与 AA-Request 结合,也有另一套状态机,并会在 Tx 到期时断开。本文讨论更新等待,不能把它扩大为所有首次认证流程。RFC8506 的范围是信用授权,服务自身的身份认证与授权不在其范围内;继续策略不是绕过身份验证的总开关。
即使理解了状态转换,也不能只看本地配置就断定责任落点。第 5.7 节规定,归属域 AAA 服务器给出的值优先于本地值,而信用控制服务器答复中的值又会覆盖已有设置。复盘时真正需要的是相关时刻生效的策略及其来源。一张默认配置截图,未必能说明当时为什么继续。
备用地址之外,还有一整段状态
让服务临时继续,与把既有会话的信用控制消息流移到另一台服务器,是两个不同决定。第 5.7 节和第 8.4 节要求后者遵循 CC-Session-Failover。该属性缺失时按 FAILOVER_NOT_SUPPORTED 处理,不能把这条既有会话消息流迁移到替代服务器。给新会话选择备用服务器则是另一回事。传输路径上的对等节点切换也应单独看待:它可能产生重复请求,却不等于已经获准迁移带状态的信用控制会话。
标准建议在主、备服务器间转移会话和账户状态,并要求支持会话故障转移的实现正确检测重复、乱序消息;至于服务器之间究竟如何传递状态,则留给实现解决。Session-Id 和 CC-Request-Number 可以标识请求,但字段存在并不能证明预留状态已正确复制。只验证备用地址能够响应,仍然少了一半问题。
核算也不会因为服务不中断就自动完成。第 5.7 节建议使用备用用量核算流;其中 CONTINUE 搭配 DELIVER_AND_GRANT 的例子,明确依赖核算系统收集信息并与信用控制服务器交换。因此,不能把“继续”写成不计量、不收费,或者已经发生确定损失。第 5.4 节所述最终询问仍然涉及已用单位报告和未用预留的结算。反过来,服务器释放了预留,也不能单独证明客户端已经停止交付服务。
标准能说明什么,不能证明什么
官方条目将 RFC8506 列为 2019 年 3 月的 Proposed Standard,并注明其替代 RFC4006。勘误查询在 2026 年 9 月 8 日检查时没有返回匹配条目。这既不是厂商符合性证明,也不说明实际部署规模或事故概率。本文没有运营商流量、客户数量或损失金额可供推算。
卢恒关于“现实而非倡议才是产品”的论述,为这里提供的是编辑方法:先讲清机制,不急于把连续服务定性为英明或冒险。他对互联网治理代理问题的分析,可以用来追问谁作决定、谁承担后果,但不能直接证明某个 Diameter 团队存在激励错配。可确认的事实更具体:请求仍在等待,服务消耗已经可以发生。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
