摘要

  • RFC 3357 从按顺序保存的单向丢包样本中派生“丢包距离”和“丢包周期”,使五次孤立丢失不再与一次连续丢失五个报文看起来相同。
  • 形态仍取决于报文类型、方向、采样、超时、时钟与仪器;它能够描述这段观测,却不能独自定位原因或证明用户体验。

设想两条各含一百个报文的流。两条流都有五个报文在规定等待时间内没有到达。第一条流中,每个缺失报文两侧都有成功交付;第二条流中,五个报文连续消失。仪表盘给出的答案完全相同:丢包率百分之五。

这个算术结果没有错,却丢掉了应用最可能在意的部分。语音解码器或许能够利用相邻声音掩盖一个孤立缺口;如果可用历史本身连续缺失,掩盖能力就会下降。自适应传输面对分散丢失和成组丢失时,确认节奏、重传与恢复机会也不同。平均值保住了数量,删除了位置。

2002年8月发布的 Informational RFC 3357 题为《One-way Loss Pattern Sample Metrics》。Rajeev Koodli 与 R. Ravikanth 没有设计一个普适的“网络质量分数”。他们从已经判定为成功或丢失的报文序列出发,追问这些判定的排列还能告诉我们什么。

这项工作建立在 IPPM 的测量纪律之上。RFC 2330 区分单次观测、样本和样本统计。RFC 2680 随后定义 Type-P 单向报文丢失:某一类型报文在指定时间从源端发往目的端,及时到达记为零;在选定阈值内没有到达记为一。

这个零或一是一项受条件约束的判断。报文类型、源和目的、方向、时间、丢失阈值、时钟校准以及经过的路径都应随结果报告。报文可能真的在网络中被丢弃,也可能只是晚于阈值,或者因为测量主机资源耗尽而被错误算作丢失。RFC 2680 的平均丢包率可以回答“样本中有多少比例被归类为丢失”,却不会记住这些一出现在什么位置。

RFC 3357 没有重新定义何为丢包,而是在同一基础序列上增加了两个派生视图。第一个是丢包距离。按发送序列为测试报文分配连续编号;每遇到一个丢失报文,就用它的序号减去上一个丢失报文的序号。如果第20号和第50号报文先后丢失,距离就是30。样本中的第一次丢失没有前项,因此距离记为零。

这里的单位是样本序列中的报文位置,不天然是毫秒或秒。要把距离换成时间,必须知道报文的发送计划。稠密周期流中的十个位置与稀疏随机探测中的十个位置,可能跨越完全不同的时长。丢包距离让间隔可见,却没有获得超出采样设计的时间含义。

第二个视图是丢包周期。当一个丢失报文紧跟在成功接收的报文之后,一个新周期开始。后续连续丢失都属于同一个非零周期;成功接收的报文对应周期零。因此,连续丢失五个报文是一段长度为五的丢包周期,而不是五个彼此独立的周期。

在这些派生序列上,RFC 3357 讨论了若干统计量:丢包周期总数、每个周期的长度、周期之间的距离,以及根据约束 delta 计算的“可察觉丢包率”。“可察觉”在这里不是对真人感知的证明,而是指相邻丢失之间的距离是否不大于所选阈值。delta 来自具体应用模型,必须与结果一同披露。

一个周期数很大的样本不一定说明丢包分散,因为其中某些周期可能很长;一个平均值不高的样本也不一定温和,因为大部分丢失可能集中在一次短促爆发中。每个统计量只回答自己的问题,不能借用另一个统计量的权威。

采样方式决定观测能够看见什么。RFC 3357 允许不同采样方法,却明确提醒:IPPM 框架常用的泊松采样,对于 VoIP 或 TCP 可能得不到合适的形态值。一个稀疏随机探测可能从短促爆发的两侧穿过而没有命中;真实周期媒体流却可能正好连续穿过整段故障。反过来,固定周期也可能与网络中的其他周期行为同步,或变得可预测。

三个月后发布的 RFC 3432 正式描述周期性能测量流。它用随机开始时间降低可预测性,限定测试持续时间,要求写明速率、报文大小与时序,并控制主动测量带来的负载。这不是宣布周期采样战胜泊松采样,而是承认:为了模拟某类应用而选择的已知偏差,与为一般总体设计的随机样本回答不同问题。

之后的 RFC 7312 扩展了 IPPM 的流与采样框架,讨论更复杂的观测约束。RFC 7680 又取代 RFC 2680,按照后来的框架更新单向丢包基础指标。因此,历史上可以用 RFC 3357 理解2002年的派生逻辑;今天实施测量时,则应同时遵循更新后的基础与采样规范。

相近思想也进入媒体运行报告,但定义边界并不相同。RFC 3611 为 RTCP 增加扩展报告,可以用游程编码报告接收和丢失位置,并提供 burst/gap 指标。RFC 7003 则报告抖动缓冲区中的成组或间隔丢弃。一个报文已被网络送达、却因到得太晚而被播放缓冲区丢弃,与 IPPM 意义上的单向丢包不是同一张凭证。

传输控制还有另一套边界。RFC 5348 的 TFRC 把一个往返时间内的一次或多次丢失归入同一个 loss event,用于计算允许发送速率。这种分组服务于拥塞控制,不能直接替代 RFC 3357 依照样本位置连续性定义的丢包周期。

报文重排进一步提醒我们谨慎分类。RFC 4737 研究到达顺序发生变化的报文。若等待阈值和结果合并规则没有保留,一个暂时缺席的报文可能先被判为丢失,稍后又表现为重排。只有方法与原始轨迹一起存在,审查者才知道一次“丢失”具体如何形成。

RFC 6390 后来把这套纪律概括为指标设计指南:输入、单位、测量点、时序、采样、有效范围、不确定性与预期用途都必须清楚。它也明确举例,有的应用对短时间高丢包很敏感,却对孤立丢失相对不敏感。一个听起来精确的名称,不能替代参数与限制。

因此,比较两份丢包形态结果之前,至少要对齐源端、目的端、方向、Type-P、报文大小、观测区间、采样计划与速率、丢失阈值、序号生成方式、时钟状态以及仪器容量。原始有序结果必须保存,而不是只留下月度百分比。任何使用 delta 的统计,都要连同 delta 与应用依据一并存档。

形态证据也有清晰的停止线。一段明显爆发只能支持“在这份样本里,丢失发生了聚集”。它不能单独指出是哪台路由器、哪条队列、哪条链路、哪家运营商或哪个终端造成问题。若合同没有采用相同指标和条件,它也不能直接证明 SLA 违约。故障归因需要把路由、接口、队列、主机和应用证据在时间上对齐。

主动测量本身还会进入被测系统。RFC 3357 提醒,配置不当的测试流量可能造成拒绝服务风险;测量数据可能泄露信息;篡改结果则会误导决策。合理做法是限制负载、获得授权并保护记录,而不是因为单个探测包很小就假定测量天然中立。

RFC 3357 最持久的贡献不是某个指标名,而是一条认识论边界:平均值不能冒充序列。丢包比例、丢包距离、丢包周期、故障原因和用户体验属于不同层次;它们都可能正确,却不能相互替代。

本文还披露使用 Lu Heng 的两个分析视角。“Minimum Initial Specification”强调先建立狭窄、可复用的基础定义,再让具体用途作本地化派生,而不是让一个统计统治所有应用。“Reality Layers”帮助区分观测轨迹、指标标签、运行解释、商业主张与用户体验。这些是编辑分析工具,不是对 RFC 3357 作者意图的历史断言。

两条流都少了五个报文。只有按顺序保存的记录,才能说明它们是各自消失,还是一起坠落。

来源