RTCP SDES
Abstract |
RTCP Sender Description |
Authors |
Walter Fan |
Status |
WIP as draft |
Updated |
2024-08-21 |
Overview
A SDES packet consists of a SDES header and a variable number of chunks for the described sources. Each chunk in turn consists of a SSRC/CSRC identifier and a collection of SDES items. SDES items themselves consists of a SDES item type code (8 bits), a length field (8 bits) and as much text octets as the length field indicates.
SDES 可用于将附加的非媒体信息附加到 RTP 媒体流,例如电子邮件地址和电话号码。 实际上,如果需要的话,大部分信息可以在其他层(例如呼叫信令)中更好地传达,从而使 SDES 数据包的许多字段现在的相关性不如以前。
然而,CNAME 仍然是重要且强制性的,而且它也是一种易于扩展的数据包类型。
SDES Header
SDES 数据包包含常规包头,有效负载类型为 202,项目计数等于数据包中 SSRC/CSRC 块的数量,后跟零个或多个 SSRC/CSRC 块,其中包含有关特定 SSRC 或 CSRC,每个都与 32 位边界对齐。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P| SC | PT=SDES=202 | length L |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| SSRC/CSRC_1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SDES items |
| ... |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| SSRC/CSRC_2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SDES items |
| ... |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
V, P, PT, L: As described for SR packets, with the packet type code set to 202.
SC: 5 bits, The number of SSRC/CSRC chunks contained in this SDES packet.
SDES Items
不同的 SDES 项根据类型-长度-值方案进行编码。 目前,CNAME、NAME、EMAIL、PHONE、LOC、TOOL、NOTE 和 PRIV 项在 RFC1889 中有详细定义。
CNAME 项在每个 SDES 数据包中都是必需的,而 SDES 数据包又是每个复合 RTCP 数据包中的必需部分。
与 SSRC 标识符一样,CNAME 必须与其他会话参与者的 CNAME 不同。 但 CNAME 不应随机选择 CNAME 标识符,而应允许个人或程序通过 CNAME 内容来定位其来源。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CNAME=1 | length | user and domain name ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
每个块包含一个 32 位 SSRC 或 CSRC,然后是零个或多个包含有关该 SSRC/CSRC 信息的项。
每个 item 由 8 位类型字段、8 位长度字段(不包括类型和长度的 2 个字节)和最多 255 个字节的值字段组成。
SDES Item 是连续的,不需要在 32 位边界上开始或终止,但整个块至少由一个空 (0) 字节终止,并且必须添加更多空字节以将块填充到 32 位边界。 位边界。 因此,一个结构良好的块末尾总是有 1 到 4 个空字节。 请注意,这些空字节是 SDES 项的一部分,因此在设置标头中的填充字节时不计为填充。
从技术上讲,值的内容是 UTF-8,尽管关心互操作性的实现可能希望使用 US-ASCII 来最大程度地减少接收者无法将值正确解释为 Unicode 的问题。
CNAME
关键项是规范端点标识符 (Canonical End-Point Identifier, CNAME),其类型值为 1。 CNAME 有几个关键用途:
它在 SSRC 之间提供一致的绑定,该绑定可以随时针对流进行更改。 CNAME 在整个呼叫过程中应该保持一致。
CNAME 在 RTP 会话中的所有流中应该是唯一的。
CNAME 是 RTP 流之间同步(例如,lip- sync 口型同步)的关键。