摘要

  • 1996 年的主动网络论文区分了两条路线:由运营者另行装载程序的可编程交换机,以及让消息选择节点计算的激进 capsule。二者都能“编程”,却把准入权放在不同位置。
  • 论文没有掩盖代价。作者直接指出安全、资源分配和授权形成了一个“潘多拉盒子”,并提出瞬时执行环境与受限原语;这些机制约束单节点,却没有自动解决跨节点资源占用。
  • 后来的 ANTS 实践不再让每个包携带完整代码,而以加密指纹引用代码并依赖按需装载和缓存;它兼容非主动节点,也临时退回可信认证。它证明的是可研究性,而非公共互联网已经采用。

地址之外,数据包又带来一个动作

普通 IP 数据包进入路由器时,设备已经知道自己能够做什么。它检查必要字段、查表、更新首部,然后转发。数据包会影响选择,却通常不会把一段新的转发程序塞进陌生设备。

Tennenhouse 与 Wetherall 在 1996 年发表的 Towards an Active Network Architecture 改写了这层关系。最激进的设计把消息称为 capsule:它既可包含数据,也包含要在沿途主动路由器或交换机上求值的程序片段。论文借用了 PostScript 打印机的比喻。送进机器的对象不只装着内容,还描述机器该完成什么工作。

吸引力并非线速更高,而是服务变化更快。应用专用组播、信息融合、压缩、转码或其他中间处理,不必都等待标准化、厂商排期和整网换代。硬件仍在原处,服务可以按需要进入基础设施。

这是一项研究议程,不是部署报告。论文设想的广域 ActiveNet 会在少数关键地点放置主动平台,再像早期 MBONE 那样通过既有网络隧道互连。受控岛屿能够说明程序可以运行,却不能说明不同运营者会接受同一种语言、资源规则与责任划分。

同一个“主动”,打开的是两扇不同的门

论文没有把主动网络压成一种结构。第一类是可编程交换机。程序装载与程序执行分开;体积较大的模块可以从管理接口进入,由运营者认证、检查并安装。此后,数据包调用的是已经获准的能力。设备能扩展,但门把手仍在设备所有者手里。

第二类 capsule 把消息与程序选择绑得更紧。在纯粹模型中,每个消息至少是一条指令。用户或应用能够为自身流量指定节点内处理。需求到能力的距离缩短了,选择计算的人与支付机器成本的人也突然靠得很近——但他们并不是同一主体。

因此,两条路线需要不同证据。可编程交换机要说明谁在何时装载了哪个版本、哪些流能调用它。capsule 还要说明消息请求了什么、调用者为何有权请求、哪个执行环境接纳了它、资源上限在哪里。把两者都叫作“可编程”,不会抹去控制权差异。

把这段历史直接画成 SDN、OpenFlow、P4、NFV、eBPF 或边缘计算的单线祖谱,也超出了证据。1996 年论文揭示的是一个反复出现的设计空间:代码在哪里装载,谁选择它,它在哪里执行。它没有证明今天的某个系统继承了唯一的 capsule 架构。

路由器需要的不只是内存安全

两位作者说,主动网络打开了有关安全、保安与资源分配的“潘多拉盒子”。这不是礼节性保留。移动代码可以到达节点,并不等于它有权运行。

论文的第一道围栏是瞬时执行环境。环境只在某个节点求值某个 capsule 的时段存在,程序仅能使用有限原语,对存储和其他节点资源的访问受到动作与范围约束。类型安全语言、解释执行、受控编译与沙箱都是候选工具,论文没有宣称找到对所有硬件和威胁都成立的终极实现。

即使代码不会越界读写内存,它仍可能在运行意义上不安全。它可以消耗过多处理时间、建立过多状态、放大流量,或者让每个节点承担一点“合法”成本,最终在一条路径上形成巨大总量。系统需要统一描述节点资源,明确分配规则,并分别回答身份与权利:这是谁的程序,它是否被允许花这台机器的资源?

此时,运行收据也必须升级。只记录数据包进入和离开,无法证明请求的计算是否发生。真正可审计的记录要连接程序或引用标识、执行环境、可用原语、读写状态、扣除预算和拒绝原因。对主动网络来说,“已送达”不再等于“已按请求处理”。

ANTS 让包携带代码的名字,而不是每次携带代码本身

ANTS 把激进设想做成了工具包。David Wetherall 后来的经验论文之所以重要,正是因为它记录了妥协。最朴素的想法是每个包都带完整代码,实际系统转向了按引用携带代码:加密指纹标识 capsule 类型,节点在缺失时按需取得程序,并将其缓存。

这避免了反复发送相同代码,却产生了新的运行状态:代码未命中。第一个包能否获得服务,取决于节点从哪里装载、信任谁、缓存是否适合当前流量。指纹能稳定地命名程序,却不能保证程序已经存在,也不能替运营者作出准入决定。

ANTS 还必须与普通路由器和不同类型节点共存。修订后的架构允许非主动节点继续转发,不因缺少 capsule 执行能力而停下。这种兼容不是退缩,而是有限部署能够产生价值的前提。如果第一步就要求每个中间系统一致改变,所谓快速创新会重新变成全网协调。

性能证据同样有边界。Java 原型只能达到大约 10 Mb/s;剖析结果又表明,在软件路由器本来就可行的场景中,capsule 处理可能具有竞争力。前一个数字不是主动网络的物理上限,后一个判断也不是生产环境吞吐担保。它们共同说明了哪些成本来自设计,哪些来自当时的编码、解码和运行时。

单点配额没有结清整条路径的账

加密指纹给程序稳定身份,受限环境保护节点状态,这些都是真进展。但经验论文仍留下一个未解问题:如何阻止不良协议在一组节点上垄断资源。

局部限制不会自然组合成全局限制。某段程序可能在每台设备上都没有超额,却沿途累加 CPU、内存、持久状态和额外报文,最后形成任何单点仪表都看不出的放大。普通互联网已经难以处理带宽占用,主动代码又把计算与存储加入账单。

ANTS 的近期办法是依赖可信机构认证。这保护了设备,却收窄了“任何用户都能创新”的原始愿景。准入门没有消失,只是从标准与厂商切换成了代码认证者。这个选择可能合理,但必须承认它降低变化速度,并可能形成新的控制点。

应用价值也没有被夸大。capsule 适合试验和部署那些原本需要困难协议扩展的服务,却尚未证明普通用户拥有一大片不可替代的需求。Jerome Saltzer 从端到端论证一侧给出了同样的边界:端到端原则并不禁止主动功能,问题是尚缺简单、透明的编程语义与足够有力的应用实例。

Tennenhouse 留下的是控制面,而不是胜利宣言

MobiCom 1999 的官方简介把 Tennenhouse 放在 MIT 研究与 DARPA 信息技术项目领导之间,并将主动网络列为他参与开拓的领域之一。ACM SIGCOMM 后来给 1996 年论文颁发 Test of Time Award。它证明问题经得起时间,不证明商业采用,更不把集体工作变成个人独创;Wetherall 是愿景论文共同作者,ANTS 也有更大的团队。

这项工作的持久性来自同一处张力:把新计算放进中间节点,确实能让网络更灵活;同一个动作也让程序身份、机器所有权、资源预算和拒绝行为变成网络契约。

《heng-lu-note》中的“最小初始规范”原则可以作为今天的检验尺,但不是 1996 年作者意图的证据。哪些规则必须共同,才能让每个参与者独立判断一个 capsule 是否安全兼容?至少包括稳定代码身份、受限执行、资源语义、兼容性标记与明确拒绝路径。再多一些,共同层可能开始替运营者挑选创新;再少一些,用户自由就会变成节点所有者无法计价的风险。

所以,这个请求路由器运行代码的数据包留下了四个比功能更重要的问题:什么程序,谁在调用,可以消耗什么,节点不接受时如何继续。任何今天的可编程网络,如果只能展示“能运行代码”,却不能给出这四张收据,就继承了主动网络的雄心,却没有完成它的责任结构。

来源