摘要

  • RFC 1474 的媒体状态按 PPP 链路和 MAC 类型分别列项。本地 accept 表示本端会接收并正确处理;远端 accept 只表示本端相信对端会接收。
  • RFC 1220 允许未声明能力的节点被假定支持所有类型,同时又允许它丢弃不理解的类型;选项被拒绝时,流量甚至仍可能被转发给已经表示会丢弃它的接收方。

1993 年 6 月发布的 RFC 1474 为 PPP 上的 Bridge Network Control Protocol 定义了一组管理对象。它不是数据包追踪器,也不是端到端服务证明,而是一张把配置、协商状态和媒体类型能力压缩到可管理对象中的地图。

这张地图最值得保留的,不是某个数值,而是它对“谁在作证”的交代。

两个 accept 并不对称

pppBridgeMediaTable 的索引由 ifIndex 和 pppBridgeMediaMacType 共同组成。每一行只讨论一条 PPP 链路上的一种 MAC 媒体类型。不能拿 Token Ring 的状态替代其他媒体,也不能把某条链路的判断扩展到所有邻居。

本地状态的语义很直接。pppBridgeMediaLocalStatus=accept 表示本地实体会接收该类型的数据包并正确处理;dont-accept 则表示收到也不会正确处理。这是实现对自身行为的描述。

远端状态换了一个证人。pppBridgeMediaRemoteStatus 表示本地实体是否“相信”远端会接收同类数据包。值指向远端,但生成和保存这项判断的仍是本端。

因此,两格同样写着 accept,证据强度并不相同。本端可以直接知道自己的配置和处理路径;它对远端的认识来自协商报文、协议默认值以及当前保存的状态。

对端沉默时,默认值很宽

RFC 1220 定义了 MAC Type Selection。节点可以用配置选项声明自己准备接收和服务哪些流量;支持多种类型,就要在 Configure-Request 中放入多个选项。

如果节点完全不声明,协议允许邻居假定它支持所有 MAC 类型。但同一段规范随即说明:节点仍会丢弃自己不理解的类型。

这揭示了默认值的真正作用。它是一项发送策略,不是一张能力证书。为了和没有新选项的旧设备继续互通,发送方可以先按广泛支持来行动;接收方内部却不会因为这个假定凭空获得解析能力。

显式声明会缩小范围:未列出的类型将被丢弃。可是拒绝选项也不等于风险消失。RFC 1220 甚至指出,MAC 类型声明遭 Configure-Reject 时,相关流量仍可能被转发到链路上,尽管接收方已经表示会丢弃它。

所以,远端 accept 只能在“哪次协商、哪条链路、哪种类型、依据是声明还是默认”这些条件里解释。

后来的规范直接称它为建议性信息

1994 年的 RFC 1638 取代早期桥接扩展,继续使用 MAC-Support 机制。它强烈建议进行协商,也明确说这一选项只是 advisory。声明能力可以避免发送对方不支持的类型,节省带宽;没有声明时,接收方仍可能丢弃无法处理的帧。

RFC 1638 还对编号大于 4 的 MAC 类型加了更强边界:没有收到对端愿意接收的 MAC-Support 选项,就不得发送。这表明协议会随着类型空间扩大而收紧默认行为,但并不证明任何设备真的发送、接收或遵守了某次协商。

历史价值就在这里。兼容旧端点、减少浪费和保护新类型,是三个不同目标。它们可以改变推断规则,却不能把推断变成观测。

能处理一种帧,不等于知道往哪里转

媒体类型能力解决的是“能不能理解这一类帧”。透明网桥还要回答“这个目的地址该走哪个端口”。同年 7 月的 RFC 1493 把后一问题放进独立的 forwarding database,按具体单播 MAC 地址记录学习或配置得到的转发/过滤信息。

两张表不能互换。RFC 1474 的媒体表不证明某个目的地址已经学习;RFC 1493 的地址条目也不证明远端主机收到了数据。真正的链条还包括本地配置、适用它的重启、BNCP 交换、本地形成远端判断的依据、实际发出的帧、对端处理、桥接转发以及端点结果。

RFC 1661 又增加一道门槛:相应 NCP 到达 Opened 后,PPP 才承载该网络协议的数据包;此前收到的包必须丢弃。Opened 是必要状态,仍不是某一帧越过链路的记录。

状态字段应带着证人和时间

RFC 1474 把可写配置与运行状态分开,并提醒 PPP 的配置与控制存在安全风险。受保护的 MIB 视图可以限制谁能读写,却不会扩大字段本身的语义。

今天的自动化若显示“远端支持”,至少应同时保留:接口、MAC 类型、配置代次、重启边界、NCP 状态、选项报文、是否使用默认假定、对端回应以及计算时间。否则,一个本地模型产生的绿灯,会在层层转发后变成“对端已经收到”。

分布式系统离不开判断。问题不是使用推断,而是把推断和直接事实画成同一种状态,然后忘掉判断者是谁。

RFC 1474 把判断者写进了定义。真正的管理纪律,是不要在界面上把他删掉。

来源