摘要

  • RFC 3497 为 1.485 Gbit/s 的未压缩 HDTV 把 RTP 序列号扩展到 32 位:普通 16 位序列号只需 336 毫秒便回绕,扩展后约为六小时。
  • 序列号、行号和 RTCP 计数器让丢包与乱序可见,却不会让固定速率退让;最佳努力路径失去公平性时,接收方只能离开会话。

一条路径被称为“有 QoS”,并不会让下一只数据包少丢一点。RFC 3497 给接收方安排了更可靠的裁判:继续测量。如果请求的服务没有在丢包结果中出现,就把当前服务当作最佳努力来处理。

这份 2003 年的标准处理的是 SMPTE 292M。它原本是演播室里的串行数字接口,在摄像机、编码器和录像设备之间搬运十位字的未压缩高清电视。线路速率为 1.485 Gbit/s,或 1.485/1.001 Gbit/s。专用线缆能承受这种洪流;把它送上广域 IP,则必须重新说明图像边界,也必须正视共享网络的容量边界。

每一行 SMPTE 数据可以拆进一个或多个 RTP 包。活动视频开始信号 SAV,以及包含行号和 CRC 的 EAV 结束结构,不得跨包切开,因为解码器靠它们定位扫描线。标准 RTP 头之后增加四字节载荷头,标记位指出视频帧的结束。另有十一位行号,即便承载 EAV 的包丢失,应用仍多保留一条定位线索。

像素组也规定了可以下刀的位置。常见 4:2:2 采样以五字节为一组,4:2:0 与 4:4:4 则为十五字节。源表示未知时,pgroup=1 允许在任意字节边界拆分,但 SAV 和 EAV+LN+CRC 依然不可破坏。video/SMPTE292M、必需的时钟速率和可选 pgroup 让 SDP 能描述会话,却不替会话预留带宽。

高线速率首先击穿的是普通序列号的时间尺度。若包长至少一千字节,16 位 RTP 序列号 336 毫秒就会重复。迟到的旧包可能看起来像新包,长一点的观察窗口也无法可靠判断丢失与乱序。RFC 3497 在载荷头加入高十六位,组成 32 位序列空间,把回绕推迟到大约六小时。

这是一项证据工程,而不是流量工程。它扩大了“哪只包”的可辨识范围,没有减少“每秒多少包”。

同一条流里还有另外三个快速循环。148.5 MHz 的 RTP 时间戳在 21 秒回绕;RTCP 发送方八位组计数在 23 秒回绕;累计丢包字段在 93 秒回绕。需要全程总数的应用,必须自己记录这些字段转了几圈。监控若把回绕当作归零,协议仍然正确,历史却被观察系统抹掉了。

RFC 3497 对网络后果毫不含糊。1.485 Gbit/s 还不包括 RTP 开销,足以在当时多数互联网路径上造成拒绝服务。SMPTE 292M 是恒定高码率,无法实施通常的拥塞控制。因此它应严格限制在合适连接的端点、私有网络,或确实提供资源预留与增强 QoS 的网络上。

“确实”是关键。增强服务的接收方仍应监测丢包,确认所请求的待遇正在交付;若没有,就应改变判断。名称、会话描述和注册表属于符号层;队列、链路占用与竞争流的实际吞吐属于执行层。前者不能命令后者服从。

在最佳努力环境中,标准设置了更硬的退出条件。接收方必须监测损失,过高时必须离开。何谓可接受,不只看画面是否还能勉强播放,而是问:在同一路径和同一条件下,一条 TCP 流能否取得不低于 RTP 的平均吞吐?如果固定 HDTV 流占据了 TCP 无法得到的速率,它就没有与响应式流量公平共存。

发送方又无法逐步降码率,于是监测结果不能驱动柔性的拥塞窗口。接收方退出,是唯一能让不等式重新成立的断路器。这也是 RFC 3497 最容易被忽视的设计:更长的计数器不是控制回路,它只是让退出决策有证据。

后续标准拓展了周边能力。RFC 3550 取代早期 RTP 总规范,RFC 4175 给未压缩视频提供更广的载荷格式;RFC 8083 把多媒体断路器系统化,RFC 8085 总结 UDP 使用原则,RFC 8888 提供更丰富的拥塞反馈。但反馈、注册与描述都不会追溯性地把 2003 年的固定流变成弹性流。

完整的收据链应分开保存:会话被正确描述,包头正确,扫描线边界完整,序列缺口可识别,时间能重建,RTCP 回绕被累计,QoS 在负载下兑现,TCP 等效公平性成立,接收方得到可用视频,网络长期安全。抓包可以证明前半段,同时后半段彻底失败。

RFC 3497 的历史价值,就在于没有用标准身份遮盖这个落差。它给出了自愿采用的最低互操作规格,并未授予固定流占用任意路径的权力。现实一旦推翻标签,正确做法不是维护标签,而是退出。

Sources