摘要

  • RFC 3409 建议链路层把头部有错的数据包连同明确错误指示交给 ROHC 解压器,即使这个包本身必须被丢弃。
  • 非均等错误检测可以分别判断头部与负载,让头部完整而负载受损的包由懂媒体容错的应用决定是否可用。

头部压缩把一次错误的影响放大了。普通负载坏掉,通常只影响当前包;压缩头若被当作有效更新,可能污染双方共享的上下文,让后续包也被错误重建。RFC 3409 因而要求下层至少保护压缩头,使交给解压器的残余头部误码率接近零。

严格检测不等于让失败对象彻底消失。规范提出一个反直觉建议:即使头部有错、整包必须丢弃,也可以把它连同错误指示上传给解压器。解压器或许能利用这次失败来调整状态或恢复策略。这个包对“交付”无效,对“观察错误”却仍可能有效。

若没有错误标签,上传受损比特会让它们冒充可信上下文更新;若链路层直接销毁整包,解压器又看不到一次可能重要的异常。对象加标签的组合同时守住两条边界:不给坏数据交付权,也不抹掉状态机可用的证据。

链路层原本就在参与重建头部。IPv4 总长度、IPv6 负载长度和 UDP 长度都可由逐包提供的链路长度推断。解压器并非只展开收到的字段,而是把压缩信息与其他层产生的事实合并。来源不同,责任也必须可追溯。

检错覆盖范围决定了多少包会被误伤。一个校验覆盖整个头部和负载时,任一比特错误都无法定位。ROHC 必须假设头部可能受损,因为无法保证正确解压。即便错误只落在某段语音负载,而且编解码器可能容忍,这个包也会被一并丢掉。

非均等错误检测把决策拆开。如果系统能证明压缩头完好,只是负载出现错误,解压器就可正确恢复头部,再把媒体负载交给应用判断。RFC 3409 没说听感一定合格;它只是把判断权交给真正理解负载语义的组件,而不是让粗粒度校验提前替它作答。

非均等错误保护又是另一件事。给头部更多保护可能降低错误率,但只有 UED 能说明错误究竟发生在哪个区域。若检测仍把整包混为一体,更强保护也不会自动产生可解释的分类。规范同样没有给出普遍收益数字,因为无线代价与应用容忍度都依实现而变。

复制与乱序规则进一步说明“位置”属于证据。压缩器之前的重复包可以处理,虽然浪费资源;压缩器与解压器之间的下层则不得复制。压缩之前出现乱序,与两个共享状态机之间发生乱序,也不是同一种事件。

切换场景同样需要明确收据。系统可以转移压缩上下文,也可以通知压缩器重新用完整头部初始化。如果长丢包之后既没有上下文转移记录,也没有刷新记录,就不能把继续解压当成已证明的连续性。

后来的 ROHC 框架与重排序文档改变了周边条件,却没有替这份 Informational 指南补出部署成绩。RFC 3409 留下的历史价值,是让“有效”带上用途:不能交付的数据仍可作带标签的状态证据,能观察的错误也绝不等于能接受的内容。

反馈路径也提醒人们,证据是否存在与证据何时到达是两回事。O 模式和 R 模式需要把很小的反馈包送回压缩器;若不能搭载在反向业务包上,下层就必须单独承运,而且越快越有利于恢复效率。一个系统可能完整保存错误标签,却因反馈迟到而继续使用保守头部;这不是证据内容错误,而是证据时效不足。监测时应把“已产生、已传输、已收到、已作用”分别记录,不能只留下最终模式状态。

Sources