摘要

  • RFC 1243 用一套 SNMP MIB 描述 AppleTalk 端口、路由、区域、服务登记和计数器,同时要求管理器结合来源枚举与行状态解释结果,不能把“表中存在”当作“正在运行”。
  • RFC 1742 后来把若干路由和区域字段从可写改为只读,却把配置来源字段改为可写,并新增来源、默认值与当前值的区分;访问属性本身也是会修订的责任分配。

如果三个端口都显示同一个网络号,传统资产表很容易把它们视为同一种事实。RFC 1243 没有这样做。它为网络配置和区域配置各留出一个来源字段,并用四个状态解释数值如何出现:configured 是明确配置,garnered 是观察网络后推定,guessed 是随机猜测,unconfigured 则表示尚未配置。

这份文件发布于 1991 年 7 月,目标是用 SNMP 管理 AppleTalk 网络。对象被分进 LLAP、AARP、ATPort、DDP、RTMP、KIP、ZIP、NBP 与 ATEcho 等组。某个协议语义若适用于实现,相应对象组就构成一致性单位。这个规则能够说明代理承诺提供哪些接口,却不能说明某台设备当时返回了什么。

ATPort 表最能体现模型的张力。AppleTalk 端口是一条能够传送数据包的逻辑连接。表中列出端口类型、网络范围、网络地址、状态、区域以及关联的物理接口。其中多项值可以读写,而 atportNetConfig 与 atportZoneConfig 在 RFC 1243 中只读,用来保存配置的来路。

同样的数值,只要来源不同,操作含义就不同。明确配置可以追溯到一次管理决策;从网络中取得的值依赖当时观察到的环境;猜测值只是本地启动策略的产物。若采集器只留最终数值,之后就无法判断这是意图、推断还是临时自救。

行状态又补上了一层。atportStatus 可以是运行、未配置、关闭或无效。把它写成无效会解除对应关系,但代理是否把该行从表中真正删掉,由实现决定。RFC 因此明确提醒:管理站必须准备接收“不再使用”的表项,并通过状态字段解释它们。返回一行,只证明代理还返回这行。

RTMP 路由表采用类似结构。网络范围、下一跳、网络类型、端口、跳数与状态分别记录;在 RFC 1243 中,多数路由字段均可读写。状态则从良好、可疑、正在变坏到坏。即使被判为坏,表项也可能继续保留。KIP 进一步区分 configured、learned 与 invalid,还另外说明信息是否会向其他路由器传播。来源、可用性和传播策略并不是一个字段能代表的事实。

ZIP 把可达网络范围与区域名相连;NBP 记录本机登记的服务名称、类型与区域。这些主要字段当时也可写,另有状态负责使表项失效。若库存程序只做遍历而不看状态,设备记忆里的旧项就会被误当成当前服务。

ATEcho 的计数也有边界。它只统计代理收到多少回显请求、发出多少回显响应,并不把某次请求与某次响应关联起来,也不证明对端是谁、路径如何或用户的测试成功。RFC 1243 的安全部分甚至只说没有讨论安全问题。

继任者为什么值得对照

1995 年 1 月,RFC 1742 以 AppleTalk MIB II 取代 RFC 1243。它扩充了对象和计数器,但更重要的是修改了旧对象的读写边界。

原本只读的 atportNetConfig 与 atportZoneConfig 变成可读写。相反,RTMP 的网络范围、下一跳、类型、端口与跳数从可读写变成只读;ZIP 的区域名和网络范围也改成只读。标准并没有假定“路由”天生应该由管理器直接写,也没有假定“配置来源”永远只能观察。它重新划分了管理输入与协议状态的职责。

新版还把来源说得更清楚。atportNetFrom 和 atportZoneFrom 指向网络与区域信息的出处;旧区域字段更名为 atportZoneDefault,并新增独立的 atportCurrentZone。默认区域可以继续表达管理意图,而当前区域保留实际状态。NBP 的说明也建议:名称、类型或区域变化后,代理应重新登记服务。建议指出了下游动作,却没有把一次写入冒充成已完成的登记。

计量面也随之改变。新版加入 AARP 查询与命中、RTMP 路由删除与表溢出、NBP 登记失败以及每端口流量等计数,同时废弃与 MIB-II 接口计数重复的 LLAP 指标。新增或删除计数器会改变统计范围和分母;RFC 的发布日期并不能证明代理与采集器已在同一天迁移。

把两份文件并排阅读,得到的不是“新版更正确”这样简单的结论。更准确的说法是:MIB 是一份有版本的控制与观测合同,合同会随着实现经验修改。若要重建一次真实变更,还必须连接模块版本、对象实例、值及其来源、行状态、请求者身份、授权判断、请求与响应、持久化、协议侧观测以及最终服务效果。

两份 RFC 没有提供这条完整证据链;它们说明了为什么不能省略它。

来源与边界

本文只以 RFC 1243《AppleTalk Management Information Base》与 RFC 1742《AppleTalk Management Information Base II》为主要来源。它们支持对象、访问属性、枚举状态与版本变化,不支持推断某个具体实现、管理员、授权写入、现行路由、当前区域、成功登记、数据包交付、部署比例或用户结果。