摘要

  • RFC 1065 以名称、语法、编码和访问类别声明对象类型;这种声明不是某一台机器此刻的读数。
  • 它的标识符树委派持久名称,类型词汇约束表示法;至于什么对象存在、怎样指到一个实例、一个回答意味着什么,仍须由 MIB 和管理协议说明。

目录不是仪表盘

早期 TCP/IP 管理首先要让不同系统对词语达成一致。若没有共同结构,一家实现里的“接口错误”可能只是另一家的私有数字,表示方法也互不兼容。但共同词汇也会诱发另一种误读:把目录当成网络当下的状态。

1988 年 8 月发布的 RFC 1065 有意把两件事拆开。它使用 ASN.1,为基于 TCP/IP 的互联网管理信息提供共同结构和识别方案。它的管理信息结构是地基,不是运行中的百科全书。文本明确说,它不定义某个特定系统实际管理哪些对象,也不定义某种协议怎样引用一个对象实例。前一项仍是 MIB 的工作,后一项仍是管理协议的工作。

“对象类型”最能显示这条边界。类型声明一类管理信息如何命名、它的值采用什么语法、怎样编码以及适用哪种访问类别。这是声明性的定义。与之相对,“对象实例”是一个类型在某一时刻与一个值的结合。类型能让管理器在收到回答时知道如何理解;它不能自己交出回答,不能证明哪个设备提供了数值,不能说明采样时间,也不能证明数值仍描述着正在运行的系统。

树先命名责任,后谈数值

OBJECT IDENTIFIER 是这套纪律最显眼的骨架。RFC 1065 用一棵由弧组成的层级树,把 Internet 管理置于 iso.org.dod.internet 之下。数字路径让不同管理者负责的子树可以共存,无须为每一种可能变量建立一份扁平的全球清单。

把这条路径读成设备序列号、每一次出现的数据库主键,或某个实现必然导出该对象的保证,都是越界。对象标识符是可以委派管理权的结构化名称;它指向的是一种类型的定义。如何在协议中补足或携带实例信息,以及某个代理是否真的有该实例,仍需要额外规则。

这份克制很重要。稳定名称能够让比较成为可能,却不会抹掉比较发生的条件。不同代理可以以同一种类型回答;同一代理也可以在不同时间回答;没有回答的原因远不止类型不存在。RFC 1065 提供的正是让这些问题可以被清楚提出的语法,而不是悄悄替人给出答案。

语法让数值可读,却不让它天然为真

该 RFC 在 ASN.1 的基本词汇之外加入了 Counter、Gauge、TimeTicks 和 Opaque 等应用范围的数据类型。这并非装饰。知道语法和编码,接收者才能不靠猜测地读出字节:这是整数、对象标识符还是八位组字符串?

然而,表示法不是来源证明。格式正确的 Counter 不会告诉人计数从哪里开始;一个 TimeTicks 值无法重建时钟的完整历史;Opaque 也不会因为外层字段能安全传输就自动变得可理解。后来的 MIB 和协议可以为个别类型给出更精确的运行含义。RFC 1065 的贡献更窄,也更持久:它避免每一次管理交换都从头发明基本记法。

访问字段同样有边界。read-only、read-write、write-only 与 not-accessible 分类的是一个类型预期的管理访问面。它们不是凭证,不是某位操作者认证通过的结果,不是政策决定,也不是一次修改已经生效的证据。一个类型被称为 read-write,并没有授权每一个管理器;它只说明读和写属于声明的表面,具体请求仍要受真正执行处理的系统约束。

这条边界阻止协议假扮数据库

随着表、计数器和配置控制不断增加,SMI 的克制愈发有价值。MIB 定义对象;协议构造实例引用、携带请求并带回响应;代理施行本地状态和访问政策;管理器再决定应当给予结果多少信任。RFC 1065 没有让这些角色消失在一个好看的对象名背后。

RFC 1155 后来废止 RFC 1065,同时明确把它的技术内容原样再版,只改变状态并作少量印刷校正。RFC 1212 给出后来简洁 MIB 定义的约定,RFC 2578 记录演进后的 SMIv2 形式。它们显示一条技术谱系,却不能把后来的机制倒投回 1988 年。

来源与边界

RFC 1065 证明早期 SMI 的范围、类型声明、标识符层级、值语法与访问类别;RFC 1155 证明技术内容不变的再版;RFC 1212 和 RFC 2578 用作后来的比较。这些材料不能证明当前部署、某厂商 MIB 的内容、响应代理的身份、特定会话的授权、数据平面效果,或某个数值的真实性和新鲜度。把持久声明理解为有意窄于实时观测,是对这种有文献依据的分离所作的分析。