摘要

  • t11FcSpSaNotifyAuthFailure 会在时间窗口内抑制同一 SA 的重复告警,也会在达到 Fabric 的 SA 数量上限后抑制其他首发告警;失败仍必须被检测和计数。
  • RFC 5324 的其他表也遵守同一证据纪律:非激活策略是可编辑意图,激活操作是转换请求,只读激活对象才描述当前执行状态,而 SA 对仍需 Traffic Selector 才能说明具体流量。

沉默是控制动作,不是安全结论

FC-SP 的认证失败可能发生在每一个入站 FC-2 frame 或 CT_IU 上。如果 SNMP 为每一次失败都发送通知,管理网络本身就会遭受洪水。RFC 5324 因而专门为数据面的认证失败规定速率控制。

同一 SA 第一次失败发出告警之后,窗口内后续失败会被抑制。即使是另一条 SA 的第一次失败,当本窗口已有配置数量的 SA 发出过通知,也可以被抑制。协议同时要求失败继续被检测和计数。

所以,“没有收到 trap”至少有六种解释:没有失败、通知未启用、单 SA 抑制、Fabric 范围上限、传输或收集器丢失、管理代理重启。只有把窗口、最大 SA 数、抑制计数、失败总数与 sysUpTime 放在一起,才能缩小答案。

历史表会主动丢掉最老的证据

认证拒绝表的容量由 t11FcSpAuRejectMaxRows 控制,范围为零到 1000。表满时,新拒绝会替换最老记录。管理代理重启之后,记录数量可能减少;实现不支持该表时,容量始终为零。

空表因此不是“历史上没有拒绝”。它可能从未支持,可能刚重启,可能已经淘汰旧记录,也可能确实没有事件。最后通知类型同样只从管理系统最近一次启动开始计算。受限视图不能承担无限历史的证明责任。

可编辑策略与执行策略分属两套表

RFC 5324 没有把“策略”压成一个对象。非激活 Policy Objects 是编辑区。管理者修改成员列表、管理主机、连通限制与属性,再建立引用这些对象的新 Policy Summary,然后发起独立激活操作。

激活操作有自己的状态,可能成功或失败。激活 Policy Objects 是只读表,它们描述 Fabric 当前真正执行的策略。证据链依次是:编辑内容、请求激活、操作结果、重新读取激活集合。任何一格都不能替下一格作证。

Policy Summary 还为每个被引用对象保存指针和密码学哈希。这能绑定摘要与对象版本,却不自动证明所有 Switch 同步收到并执行了它。Fabric 的管理名称甚至位于 Switch Membership List,而不是 Summary;错误投影会在字节真实时制造语义错误。

permanent 只说明保存方式

StorageType 描述配置的内存实现。即使值为 permanent(4),RFC 也明确说对应行不必可写。持久性回答“重启后还在吗”,可写性回答“这个管理入口能改吗”,激活回答“当前执行吗”。

活动与非活动策略在服务器会话结束后都可以保留,但读取一致性只在 server session 内保证。跨越不同会话逐行抓取,可能把旧摘要、新成员和下一次操作拼成一个从未存在的快照。

认证材料只提供建立 SA 的可能

FC-SP 支持秘密、证书和密码基础设施。DH-CHAP、FCAP 与 FCPAP 可以完成双向认证并选择性地产生共享密钥;密钥可用于建立 SA。IKEv2-AUTH 还能把认证与 SA 管理放进一项交易。

这些关系不能倒推。配置方法不等于发生认证,认证不等于 SA 已建立,SA 不等于一帧匹配它,一帧受保护也不等于上层业务成功。外部认证服务器不可达时,还可能使用本地配置,因此“配置了 RADIUS 等协议”不证明一次认证实际走了该路径。

这套 Fibre Channel SA 不是 IPsec

FC-SP 的 SA Management 是适用于 Fibre Channel 的 IKEv2 子集,文档明确说它不是 IPsec。ESP_Header 可保护 FC-2 frame,CT_Authentication 可保护 CT_IU。相似名词不能替协议身份作证。

每条活动 SA 在 SADB 中拥有 SPI、序列计数和 transforms。SA 是单向的,但总以同类型双向对存在。t11FcSpSaPairTable 的一行代表一对活动 SA,不代表两个方向都已经承载流量,更不代表上层完成交易。

Traffic Selector 才决定一帧的处置

Traffic Selector 有顺序。某些匹配要求 bypass 或 discard,另一些要求 protect 或 verify 并指向相应 SA。先匹配哪条会改变结果。

因此,在同一 Fabric 中发现活动 SA,仍不能给具体 frame 打上“已保护”标记。必须记录方向、选择器顺序、命中项、动作、SPI、协商 transform 与相应计数器。

提案表也只是协商输入:发起方愿意提供什么、响应方愿意接受什么,与最终协商内容分属不同事实。偏好不能冒充会话结果。

默认寿命不是活动 SA 的剩余寿命

SA 寿命可以按时间,也可以按通过字节数计量。默认值仅在该 SA 没有显式设置时适用。达到寿命后 SA 必须终止,并在需要时被新 SA 替换。

把默认八小时复制到每条活动记录,会制造精确错觉。凭据要说明寿命来源、单位、初值、已消耗量、活动 epoch、终止原因与替换身份。

计数器必须携带所属范围

有的计数属于某 Fabric 的 Policy Server,有的属于实体、接口或 SA。InterfaceIndexOrZero 为非零时指具体接口,为零时指管理实例通往该 Fabric 的全部接口。一些非瞬态总数会聚合已经消失的 SA 瞬态计数。

没有 index tuple 的数字没有可靠所有者;没有 sysUpTime 与重启信息的差值没有可靠时间段;没有 Counter32 回绕处理的趋势没有可靠方向。SA 行消失而总数继续上升完全可能同时正确。

决策凭据

策略变更应保留一致服务器会话、管理实例、Fabric、非激活对象名称与哈希、拟议 Summary、请求来源、操作状态、失败理由,以及转换后读回的活动 Summary。SA 应保留实体、接口、peer、双向标识、SPI、协商 transform、选择器顺序、寿命来源、计数与替换。

失败结论还要带通知启用、窗口、最大 SA 数、抑制计数、历史容量、淘汰、重启和收集器交付。只有再加入 frame 观察与上层结果,才能主张“使用”或“成功”。

来源