摘要

  • RFC 3721 把 iSCSI 节点持久的协议名称、可变的网络地址和不要求唯一的人类可读别名分开;三者回答的是不同问题。
  • 发现机制可以找到目标名称及路径,却不会发现 SCSI 逻辑单元,也不能证明登录、授权或 I/O 已成功。

在存储控制台里看到“本地磁盘”,让人安心。但它并不是可靠的协议身份。这个标签也许能帮助人选择列表中的一行,却无法告诉远端系统应联系哪个目标,无法证明是谁发起连接,也不决定该连接能使用什么。2004 年 4 月,RFC 3721 为 Internet Small Computer Systems Interface(iSCSI)的命名与发现明确了这些界线。

它的核心设计,是把节点的名称与地址分开。逻辑 iSCSI 节点在其生命周期内拥有一个永久、与位置无关的名称。地址则把名称与 TCP 位置结合起来,例如主机和端口。一个节点可以有多个地址,网络坐标也可以变化。网卡在主机之间迁移,正是身份不应绑定网卡的原因之一:逻辑存储节点可以保留自己的 SCSI 状态和授权配置,同时改变访问路径。

限定名称格式 iqn. 包含年月、反向书写的域名命名机构,以及可选的本地后缀。这种语法建立了命名空间;它既不证明命名机构目前仍拥有该域名,也不表示目标当前位于何处。RFC 3721 还描述了基于 IEEE EUI-64 标识符的 eui. 格式。两种格式都用于标识节点,而不是充当网络路由。

别名属于另一层。它是可选的 UTF-8 显示字符串,不必唯一。RFC 3721 的例子把“Local Disk”显示在真实目标名称旁边。别名方便人辨认界面项目;协议不得用它识别、寻址或认证发起方或目标。两套系统可能显示同样的友好文字,却不是同一个目标。名称可以保持稳定,地址却已改变;路径可以通向目标,但仍不能说明某个用户是否有权访问。

这种分离在存储迁移时尤为重要。如果节点名称绑定到特定接口或地址,网络重配可能看起来像创建了新的存储身份。稳定名称让配置引用逻辑节点,而地址描述可尝试建立会话的当前位置。这是一种连续性设计,不是自动迁移的保证:RFC 定义命名和发现行为,并未证明每种实现都能在迁移时正确保留状态。

发现也有明确边界。它的目标是让发起方找到自己有权访问的目标,并取得一个或多个地址。静态配置可以预先提供这些信息。SendTargets 允许发起方联系已知网络实体并请求目标信息。SLP、iSNS 等免配置发现框架则提供更广泛的选项。规范描述了这些机制,并不等于统计了存储网络的实际部署。

尤其要注意,找到目标不等于找到其中的磁盘。RFC 3721 将 SCSI 逻辑单元(LUN)的发现交由 SCSI 层处理,与 iSCSI 目标发现区分开来。返回一个名称和地址,并不证明会话已建立、认证已通过、授权已授予、LUN 可见,或应用数据已经传输。每一步都有各自的决策和证据。

安全章节进一步强调了这一点。在不可信环境中,不能仅凭发起方声称的节点名称就信任它。目标要认证一个安全标识(RFC 举例包括 CHAP、SRP 和 Kerberos),再通常通过访问控制列表决定是否授权。通过认证的标识可能与所声明的 iSCSI 名称不同,策略必须明确建立二者的映射。认证回答“谁证明了凭据”;授权回答“该身份能做什么”。别名和发现回复都回答不了这两个问题。

后来的标准史提供了有限但有用的注脚。RFC 4171 规定 iSNS 对 iSCSI 是可选的,对 iFCP 则是必需的。2014 年整合 iSCSI 协议的 RFC 7143 指出,需要超出 SendTargets 的发现能力时,设备应实现 iSNS,以支持扩展发现管理和互操作。它也指出,SLP 在 iSCSI 中并未得到广泛实现或部署,因此实现不应依赖基于 SLP 的发现互操作。这只是后续 RFC 对 iSCSI 的有限判断,不是对所有存储产品或服务发现技术的普查。

RFC 3721 是信息类文档,补充而非取代 RFC 3720 的协议规范。它的历史贡献,是建立一套不可互换的记录词汇:稳定节点名、当前地址、可选显示别名、已认证的安全身份、授权规则,以及发现得到的目标。一套好用的控制台可以同时展示它们;可靠的运维则始于不把它们混为一谈。

来源