摘要

  • RFC 2041 把特定路径上的移动主机观察,保存为带有分组、设备、位置与缺失信息的轨道;PaM 再执行经过筛选和简化的时变分组损伤。
  • 原始踪迹与调制踪迹之间需要明确的转换假设。单机时钟、小大 ICMP 分组配对和滑动窗口,能支持有限实验,不能重造无线物理环境或证明普遍性能。

一台笔记本沿着楼内同一条路再走一次,得到的仍然是第二次观察。方向与路线可以相同,主机经历的网络状态却未必相同。1996 年 10 月的 RFC 2041 想解决的,就是这个不适合只用平均值回答的问题:怎样保存移动主机在时间和空间中经历的变化,让另一轮软件测试还能遇到有意义的同类考验?

Brian D. Noble、Giao T. Nguyen、Mahadev Satyanarayanan 与 Randy H. Katz,当时分别来自 Carnegie Mellon University 和 University of California, Berkeley。他们把方案分成记录与调制两阶段。先带着已知工作负载走一条路径,留下观察;再让修改过内核的局域网主机,按照从观察中提炼出的规则延迟、丢弃或破坏分组。

这份文件的 Informational 状态 值得放在开头。它不是互联网标准,也不是已获广泛采用的证明,而是早期研究的状态报告与共享格式讨论。它在互联网实验史上的意义,是把“看见了什么”与“试验台执行了什么”分开交代。

观察的边界首先是一条路径

记录阶段需要带有测量设施的移动主机,在指定路径上行进;静止主机产生已知工作负载的分组。移动主机记录收到的分组以及设备特征。这组数据描述的是该次经过。换用不同负载、多次走同一路径,可以形成踪迹族,为这条路径提供更多观察。

“这条路径”限制了结论。踪迹能够共享,并不使它自动代表另一幢楼、另一种接口或所有用户。多次经过增加了样本,也不等于无线环境终于被固定下来。研究者仍须说明纳入了哪些经过、主机用了什么设备、负载怎样产生。

对自适应软件而言,保留变化顺序比一个长期平均值更有用。持续良好的连接中夹着一次短促恶化,与始终略差的连接,可能迫使程序作出不同反应。踪迹让这种时间结构可以进入实验;实验结果的对象,则是软件面对所选结构时的表现,而不是整个无线世界的评级。

轨道让解释随记录一起移动

第三、第四节 的格式设计遵循可扩展、自描述、易管理三个原则。记录按网络字节序保存,带有识别类型的 magic word 和长度,便于检查结构是否合理。同类记录归入轨道,轨道头先说明后续条目包含什么;不同轨道的条目可以交错出现。

属性表区分整条轨道不变的值与每次观察变化的值。前者放在头部,后者由属性表声明每条记录占用多少字,并按顺序保存。旧工具即使不认识某个属性,也可以找到它的范围并跳过。能够跳过,保证的是结构可读,不是已经理解测量含义,更不是所有属性都能转成回放参数。

分组轨道记录采集主机、接口与协议,条目包含分组大小、发送或接收时间以及所选属性。设备轨道保存信号、噪声、状态等接口特有信息;通用轨道容纳位置;注释则单独记录时间、主机和描述文字。这些安排让另一位研究者有机会解释数据,而不必只相信一串已经计算好的数。

设备指标不能脱离接口解释。某些 WaveLAN 接口能逐分组提供测量,许多设备却在较长时段内求平均,由驱动决定周期性报告的频率。因此,一条信号记录和一个分组之间,未必存在想当然的逐一对应。原文指出,可用的 CRC、接口缓冲区溢出等状态信息能够解释部分损失;单看信号、位置和丢包的相关性,仍不足以判定每一次损失的原因。

一个坐标也有来历

位置记录不是自动获得的真相。作者考虑在室外使用 GPS,室内则开发了显示楼层地图、让使用者随移动点击位置的工具。基站关联最多提供较松的位置近似,有时连关联信息也不易可靠取得。不同记录方式,带来不同的位置证据。

地图更换还涉及参照环境。原文设想在换图时创建新位置轨道,并通过注释记录图像文件名。这样一来,数字坐标不至于脱离它所指的地图。这里的文件名是实验背景,不是坐标已经精确的保证。保存方法与参照物,比把所有位置都包装成同一精度更有解释价值。

踪迹的时间表示也有类似限制。一份文件选择秒加微秒,或秒加纳秒的双字格式。表示单位再细,也不能自行证明时钟准确、主机之间同步,或后来调度分组时能达到相同精度。编码粒度、测量准确性与执行粒度,是三个不同问题。

丢失记录不等于网络丢包

第四节的缺失记录 是整份方案中尤其重要的诚实设计。采集缓冲区可能溢出,或因其他原因丢失踪迹数据。作者没有把受损踪迹一概丢弃,也没有默默忽略,而是用专门记录计数:哪些分组头、分组条目、设备记录或注释没有被保存。

这让两类空白能够被分开审视。网络没有把某个分组送到主机,与采集系统没有保存某次观察,并非同一件事。如果把所有记录空缺都计作网络损失,测量设施的故障就会变成“信道恶化”,随后又被调制器作为真实特征执行。

缺失计数可以揭示损伤,却无法恢复缺失条目的内容与时间。文件尾标记说明踪迹写到了结尾,也不能据此断言整个经过没有遗漏。一个结构完整的文件,仍可能装着不完整的观察。

采集工具本身也受到现实约束:内核中的 agent 收集并缓冲数据,用户态 collector 周期性通过伪设备读取、写盘,留到离线再解释。批量传输摊薄固定开销,目标是减少干扰,而不是证明测量没有开销。

PaM 的执行对象是分组效应

PaM 位于 IP 与底层接口之间,可以截获收发分组,停止转发、翻转部分位,或延迟转发。被测应用无需修改源代码或二进制。干预点位于应用下面,方便比较软件,而不会要求软件先适配测试专用接口。

延迟模型由两部分组成:分组大小除以可用带宽所得的发送时间,再加上 latency。第五节 明确假定承载回放的实际有线网络,比被模拟的网络更快、更可靠,因而可以忽略。如果承载网络本身已经拖慢或丢弃分组,应用遭遇的就不只是预定损伤。

调制踪迹是一份更小的执行说明。各条目有持续时间,规定 latency、带宽倒数形式的 inter-byte time,以及丢失、损坏比例;头部声明单位与比例尺度。丰富的位置、设备和注释信息没有逐项进入执行器。它们留在观察层,用于解释为何可以这样提炼。

原文还交代,系统内部时钟较粗,调度侧努力减小平均误差,而非使每个分组恰好在理想时刻释放。由此可见,重复运行同一损伤时序,并不是逐分组历史完全一致的保证,更不是原样重建墙面、反射与无线物理过程。

从观察到参数,没有一条无条件的捷径

转换工具 只接受很窄的一类原始踪迹。作者寻找在同一路径上、发送时间接近而大小不同的两个分组,并假定二者经历相同的 latency 与带宽。在这个模型下,大小和经过时间的差异才可用于估计参数。假设成立与否,直接影响执行器接到什么。

当时可用笔记本的时钟漂移不可忽略。作者在这组实验中不用 NTP,因为额外通信会改变已知负载,校时造成的快慢调整也会干扰测量。这不是对所有网络校时的普遍否定,而是一次实验的方法选择。

他们改用同一台机器的时钟:在 ICMP ECHO 请求发出时打时间戳,记录对应回复,并修改 ping,让小、大分组交替出现。得到的是往返观察,不能自动当成两个方向分别验证过的单程延迟。原文把面向非对称信道的独立入站、出站调制条目列为后续工作,正好提醒读者不要越过这个边界。

滑动窗口则对配对分组的 latency、带宽求平均,并计算损失率。窗口大小与推进粒度是可调参数,作者尚期待更多经验帮助给出建议。较长窗口可能抹平短暂恶化,较短窗口可用样本更少;这是由方法产生的取舍,不是 RFC 已报告的定量结论。

作者的无线硬件还会在操作系统不知情时丢弃损坏分组。调制系统可以把这种损坏折合为更多损失,重现软件看见的外部效应,但这并不恢复一条独立观测过的误码历史。相同可见后果,并不要求研究者已经证明相同隐藏原因。

文件能合并,模型仍有未完成的部分

第七节 承认格式偏重 IP,多主机共享带宽尚未深入研究。踪迹合并工具存在,不等于共享介质行为已经被建模;收发流量都能截获,不等于非对称性已经分方向解决。多接口、按目的地配置不同参数等,仍属于计划。

因此,RFC 2041 最有价值的成就,是提供一条可检查的实验链:有限观察,经声明过的转换,成为软件可重复承受的分组级考验。回放成功支持的是软件在这一构造条件下的表现,不会反过来扩大那次行走的证据范围。

来源