摘要

  • RFC 1770 的 Selective Directed Broadcast Mode 把面向某个网络的定向广播地址,与列有至多九台指定主机的 IPv4 选项结合起来。
  • 它省去了单独的群组控制流量,却把选择名单重复写进每份 UDP 数据报,并依赖后来被默认禁止的定向广播行为。

RFC 1770 于 1995 年 3 月以 Informational 文档发布,并非互联网标准。它面对的是一种特殊的多目的地需求:战术军事网络带宽极其有限,而接收者在网络中分布稀疏。若另行维持群组和控制通信,可能先耗掉最紧缺的资源。SDBM 只承诺不可靠的 UDP 投递;需要可靠性时,确认机制由应用层承担。

发送方先按网络标识把接收者分组。每个网络至少对应一份数据报,普通 IPv4 Destination 字段写入该网络的定向广播地址;选项中则写入真正目标主机的完整四字节地址。同一网络若有十台以上目标主机,发送方必须拆成多份数据报。

九台的上限不是业务规则,而是头部空间的结果。IPv4 的头长字段使全部选项最多占 40 字节。SDBM 用两个字节保存 Type 和 Length,每个地址再占四字节,因此 Length = 2 + 4 × 地址数。Type 的复制位置 1、类别为 0、选项号为 21,合成十进制值 149。地址名单决定投递对象,所以数据报分片时必须把它复制到每个分片。

中转路由器只做普通 IPv4 处理。特殊职责落在直接连接目的网络的路由器上。若本地链路支持广播,它可以只广播一次,让所有主机自行检查名单;若链路不支持广播,它为每台指定主机构造一份本地数据包;若二层提供可靠的多地址能力,它可以生成一份多地址帧。

主机端的规则很直接:只有在选项里找到自己的地址,才继续处理。外层地址邀请了整个子网,内层名单决定谁真正入席。这个结构也限定了传输协议。目的字段是广播地址,因此 RFC 1770 只允许 UDP,而不允许采用点到点连接模型的 TCP。

省去群组控制并没有消除状态和成本。名单会随数据重复;发送方要按网络和容量切分;最后一跳路由器要把名单转译成本地介质的投递方式;有些主机仍会先收到广播,再决定丢弃。这是从规定步骤得出的推论,RFC 1770 没有量化得失,而且明确没有讨论安全问题。

1999 年的 RFC 2644 改变了关键前提:路由器接收和转发网络定向广播必须默认关闭,只有用户明确配置才可开启。文档把改变与 Smurf 放大攻击联系起来,同时仍强调入口过滤。它不能证明这一项变化单独导致 SDBM 终结。更确定的记录来自 RFC 6814:2012 年,它称该选项从未广泛部署、方案已经放弃,正式废弃数值 149,并把 RFC 1770 改为 Historic。

SDBM 留下的教训是,取消一种协调不会取消决定。决定只是被写入每个数据包,再交给其他节点运输、解释和执行。

来源