摘要
- PRR 成功只把规则带到 RESERVED 状态:它可以占住地址或端口,却不建立 NAT binding、不打开 pinhole,也不改变数据包处理。
- PER 成功证明指定中间盒建立了本地 ENABLED 规则;它既不证明控制会话仍在线,也不证明数据包抵达远端应用。
值班人员看到控制器连接中断,便把相关变更单标记为“已回滚”。十分钟后,原先开放的流量仍能通过。设备没有违背协议,错误出在把两种寿命写进了同一个状态字段。
RFC 5189 描述的是 MIDCOM 语义,而不是某一种线协议。它允许 agent 控制 NAT、防火墙或组合设备,同时要求各类动作拥有可区分的状态、权限和回执。这个最小语义恰好说明:结束发指令的通道,不会自动撤销已经获准的规则。
预留先占资源,但不改变流量
Policy Reserve Rule 用于提前保留地址或端口范围。此时应用可能还不知道完整远端参数,却需要一个之后可交付给信令流程的稳定 tuple。
PRR 不配置地址绑定,也不打开防火墙孔洞。规范明确说中间盒的数据包处理保持不变。传统 NAT 通常预留外部地址,twice-NAT 可以同时预留内外地址;纯防火墙没有 NAT 资源可占,因此可以成功返回空的预留值。
空值不是失败,成功也不是放行。完整事实应写成:事务成功;规则 ID 进入 RESERVED;设备能力为纯过滤;没有地址资源被分配;数据面未改变。
如果平台把所有成功响应都归一为“active”,它会同时制造两个错误。在 NAT 上,它把尚未开放的资源当作已连通;在纯防火墙上,它把完全正确的空回执当作采集缺失。
ENABLED 必须由另一条事务建立
Policy Enable Rule 才改变数据包处理。NAT 建立 binding,防火墙建立 allow action,组合设备可能同时完成两者。PER 可以消费先前 PRR,也可以从未使用状态直接进入 ENABLED。
成功替换 PRR 时,系统可以复用同一个规则 ID。相同 ID 只说明新旧状态属于同一条演进链,并不说明两次响应拥有相同含义。审计记录必须保存 UNUSED → RESERVED → ENABLED 的转换时间。
若 PER 失败,被引用的预留继续存在。此时既没有启用通信,也不能假定资源已经释放。重试、显式删除和等待到期是三种不同处置;没有状态回读就无法安全选择。
PER 成功也有边界。它是中间盒对本地配置的权威回执,不是端到端收件证明。后续路由、另一台防火墙、主机监听、传输握手和应用授权都可能失败。规则回执、双侧抓包、远端接收和业务结果必须分别记录。
控制会话与规则各有时钟
正常 Session Termination、异步终止或连接中断都会结束 MIDCOM 会话。规范同时要求已建立规则继续保留,直到自身 lifetime 到期或另一个事件终止它们。
这项安排保护业务免受控制器短暂故障影响,却让治理责任变得更具体。规则存续时,创建它的会话可能已经无法查询。系统必须独立保存 agent 身份、认证结果、owner、创建请求、授予期限和后续事件。
agent 提交的 lifetime 只是提议。中间盒返回的 granted lifetime 才是当前承诺,而且不得超过请求值和会话建立时公布的最大值。把请求的一小时写成实际一小时,会在设备只批准十分钟时制造五十分钟虚假权限。
RLC 把 lifetime 设为零可以删除规则;中间盒或其他获权 agent 也可能触发异步变化。状态页需要把“谁请求”“谁有权”“设备实际授予什么”“何时观察到”放在同一条证据链上。
所有权不是在线状态
创建规则的已认证 agent 成为 owner,且 owner 在规则寿命内不变。策略可以允许另一个 agent 操作该 owner 的规则,但这属于显式授权,不是因为它碰巧接管了连接。
每条规则只属于一个 group,同组成员共享 owner。group 随第一个成员出现,随最后一个成员消失;它不是脱离成员而独立存在的持久对象。
group lifetime 初始上反映成员中最长的剩余期限,而 GLC 可以为全部成员设置共同期限,或以零一次终止所有成员。一个 group 里可能同时有 RESERVED 预留和 ENABLED 放行。相同的组删除动作对数据面的含义并不相同。
因此,仪表盘不能只显示“group alive”。它必须列出成员、状态、用途、期限和最后事件。否则一个仍存活的预留可能掩盖已经消失的放行,也可能反过来。
原子性也有适用范围
RFC 5189 要求请求事务彼此原子:不向 agent 报告稳定的中间状态。但异步事务可以中断或终止正在处理的请求。具体协议若把一个语义事务拆成多步,也可能改变原来的原子边界。
冲突策略同样需要原始记录。新规则若与已有规则冲突,按先到先得拒绝新请求,原规则不变;不冲突的重叠甚至完全相同规则可以同时接受。准入顺序解释规则为什么存在,却仍不能证明之后出现了哪些包。
需要保留的证据对象
首先记录不可变 change、session、agent、request 和 middlebox ID,以及认证 owner、设备能力、接口、事务类型、规则和 group ID、先前状态。
PRR 记录 A0 约束、协议、端口范围、奇偶要求、A1/A2 返回值和空值。PER 记录引用的 PRR 或直接启用路径、A0/A3 端点、方向、wildcard、binding 与 pinhole。两者都记录 requested、maximum 与 granted lifetime。
失败回执必须说明预留是否仍在;PRS/GS 回读和 REN、GEN、STN 按发生顺序追加。session end 不得自动填入 rule end。
最后连接中间盒两侧包观察、远端接收和应用结果。没有这些证据时,只能说“本地规则已建立,结果未知”。这不是降低自动化价值,而是让每个运行部件只为自己真正执行的现实负责。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
