18
RTP/RTCP 协 协协协

RTP/RTCP 协议介绍

Embed Size (px)

DESCRIPTION

RTP/RTCP 协议介绍. RTP 介绍. Real-Time Transport Protocol (实时传输协议) RTP 的设计主要是为了多媒体多方会议的需要 提供端对端的实时数据传输服务, RTP 使用的传输层协议一般为 UDP 。 不提供机制确保数据的间隔发送 不提供机制保证 QoS. RTCP 介绍. Real-Time Transport Control Protocol (实时传输控制协议) 监控 RTP 的服务质量和网络拥塞程度 收集在一个 RTP 会话中参与者的状态 跟踪 RTP 源(同步音频视频流, SSRC 有可能变化). - PowerPoint PPT Presentation

Citation preview

RTP/RTCP 协议介绍

RTP 介绍 • Real-Time Transport Protocol (实时传输协议)• RTP 的设计主要是为了多媒体多方会议的需要• 提供端对端的实时数据传输服务, RTP使用的传输层协议一般为 UDP 。• 不提供机制确保数据的间隔发送• 不提供机制保证 QoS

RTCP 介绍 • Real-Time Transport Control Protocol (实时传输控制协议)• 监控 RTP 的服务质量和网络拥塞程度• 收集在一个 RTP 会话中参与者的状态• 跟踪 RTP 源(同步音频视频流, SSRC有可能变化)

RTP/RTCP 的应用场景• 简单的广播音频会议

广播地址• 音频和视频广播会议• 混音器 (Mixer)

用于多数据源的合成和编解码的转换• 转换器 (Translator)

用于实时数据的防火墙穿透和跨网中继

RTP 消息格式 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|X| CC |M| PT | sequence number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| timestamp |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| synchronization source (SSRC) identifier |+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+| contributing source (CSRC) identifiers || .... |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+V: VersionP: PaddingX: Header ExtensionCC: CSRC countM: MarkerPT: Payload Type

实际的 RTP 消息

RTP Profile• RTP 被设计成通用的实时传输协议,对特定应用的支持需要 Profile 和 Payload

RFC 来定义,如RFC 3551: RTP Profile for Audio and Video ConferencesRFC 3016: RTP Payload Format for MPEG-4 Audio-Visual Streams

RTP Profile• Profile 对 RTP 包的修改:

MarkerPayload TypePayload SectionHeader Extension (与数据编解码无关的应用)Padding (数据加解密)

RTCP 消息的种类和组成• SR(Sender Report)• RR(Receiver Report)• SDES(Source DEScription)• BYE• APP在没有加密的情况下,每一个 RTCP 复合消息至少由一个 SR/RR 加上一个包含了 CNAME 的SDES 组成

RTCP SR 消息格式 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+header |V=2|P| RC | PT=SR=200 | length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SSRC of sender | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+sender | NTP timestamp, most significant word |info +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NTP timestamp, least significant word | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RTP timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | sender's packet count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | sender's octet count | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+report | SSRC_1 (SSRC of first source) |block +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1 | fraction lost | cumulative number of packets lost | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | extended highest sequence number received | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | interarrival jitter | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | last SR (LSR) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | delay since last SR (DLSR) | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

RTCP SR 消息格式 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+report | SSRC_2 (SSRC of second source) |block +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2 : ... : +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | profile-specific extensions | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

RC: reception report count

RTCP SDES 消息格式 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+header |V=2|P| SC | PT=SDES=202 | length | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+chunk | SSRC/CSRC_1 | 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SDES items | | ... | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+chunk | SSRC/CSRC_2 | 2 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SDES items | | ... | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

• SDES item 的种类CNAME NAME EMAIL PHONE LOCTOOL NOTE PRIV

实际的 RTCP 复合消息

RTCP 对会话参与者状态的维护

超时

收到多个连续的 RTP 包收到一个 RTP 包

InvalidParticipant

ValidParticipantBye Received

Idle 超时

收到 BYE RTCP包

一段时间内没有收到任何 RTCP 包Sender

一段时间内没有收到任何 RTP包

收到 CNAME RTCP 包

收到 BYE RTCP包 收到 RTP 包

RTCP 发送间隔的计算• 以固定间隔发送 RTCP 带来的问题计算 RTCP 发送间隔的几个要素:• RTP Session 带宽• RTCP 所占带宽比重( RFC 建议 5% )• 预先设定的会话中 RTP 数据发送者和接收者对 RTCP 带宽的分享( 1:3 或 S:R )• 当前会话中发送者的数量• RTCP Flood

Translator• 不修改 SSRC• 有可能修改数据格式• 对 RTCP 包的处理:简单传递或做修改• 相当于应用层的网关

Mixer• 把来自多个 Source 的数据合成为一个• 有可能修改数据格式• 以自己的 SSRC 作为新的 RTP 包的

SSRC ,合成前的多个 SSRC 作为新 RTP包的 CSRC• 对 RTCP 包的处理

SR 和 RRSDES 和 BYE

谢 谢 !