本页公开的是方法而不是结论:如何采集包长与间隔数据、样本规模与统计窗口如何设定、判读时如何区分真实差异与环境波动,以及误差从哪里来。
包长序列。记录单个连接上每个数据包的载荷长度(不含链路层头部),按时间顺序排列,用于计算长度分布。
发送间隔序列。记录相邻数据包之间的时间差,形成间隔序列,用于判断发送是否存在周期性。
无关信息的排除。采集时需排除重传包与保活探测包:重传不代表正常发送形态,保活包的发送规律由协议决定而非业务数据形态。是否排除会显著影响结论,因此必须声明。
采集在客户端本地进行,不涉及上行到服务端。这也是方法可被独立复核的前提:用户在自己设备上按同一规则采集,应能得到方向一致的结果。
多长才算够
统计窗口需要覆盖足够多的包,使长度分布的形态稳定下来。经验判据是:把窗口逐步扩大,当分布的关键分位点不再随窗口扩大而明显变化时,窗口达到下限。这个下限随业务类型不同而变化,小包高频业务达到下限更快。
固定包数在不同业务下对应的时长差别很大。对高频小包业务,几千个包可能只覆盖几秒;对低频大包业务,同样包数可能覆盖几分钟。用固定包数会让不同业务的结论可比性下降,因此窗口按分布收敛来确定,而不是按包数。
相邻统计窗口之间保留部分重叠,避免恰好跨越窗口边界的特征被截断而漏判。重叠比例需要声明,因为它影响有效独立样本数。
如何区分真实差异与波动
判读的第一步是确定参照对象。可以是不做处理时的原始分布,也可以是常规加密会话的分布。参照确定后,比较两者的关键分位点而不是平均值,平均值会被长尾拉偏,分位点更稳定。
| 观察结果 | 判读 | 后续动作 |
|---|---|---|
| 分位点差异小于窗口内波动幅度 | 无法区分,结论不成立 | 扩大窗口或更换环境重测 |
| 分位点差异稳定超出波动幅度 | 存在真实差异 | 记录差异幅度与环境条件 |
| 差异方向随环境变化 | 结论依赖环境 | 分环境分别给出结论 |
哪些因素会干扰结论
路径拥塞会改变发送节奏,拥塞控制介入后间隔自然变大,这与整形策略的效果混在一起。因此采集时应记录链路状态,在拥塞明显的时间窗内不判读整形效果。
低性能设备的处理延迟会叠加到发送间隔上,使间隔序列出现设备引入的抖动。判断整形效果时应确认设备负载处于正常水平。
在客户端采集与在链路上采集得到的结果不同:客户端看到的是打算发送什么,链路上看到的是实际传输了什么,两者之间隔着操作系统协议栈与网卡。因此结论必须声明采集点位置,跨采集点的结论不可直接比较。
完整的误差声明至少包含:采集点位置、是否排除重传与保活、统计窗口长度与重叠比例、采集时段与链路状态、重复采集次数与波动范围。缺少任何一项,结论的可复核性都会下降。