流媒体协议RTP与SRTP简介

RTP协议用于传输实时数据,可用于传输语音与视频。在网络协议分层层架构中,RTP工作在传输层(通常为UDP)之上。在VoIP系统中,音视频传输是通过RTP/RTCP协议协同实现的。

 


RTP协议

RTP协议通常由UDP来承载,由UDP提供复用(分配不同的端口号传送多个RTP流)及校验和服务。一般情形下,RTP流使用偶数(2n)端口号,相应的RTCP流使用相邻的奇数(2n+1)端口号。

为了减少时延,语音报文分组通常都很短(20~30ms)。

一般情况下,一个UDP包只包含一个报文分组(RTP的净荷即为传送的语音数据)。RTP头如下所示

0~1

2

3

4~7

8

9~15

16~31

V

P

X

CC

M

PT

序号

时间戳

同步源(SSRC)标识

分信源(CSRC)标识(0~15个)

  • V:RTP版本号,为“10”。

  • P:填充指示位,P为“1”时表示分组有填充(结尾填充数据)。

  • X:扩展指示位,X为“1”时,则表示固定头部后还有一个扩展头部。

  • CC:CSRC计数,指示固定头部后的CSRC的个数

  • M:由应用文档解释(如视频帧中,可用于标识一帧的结束(一帧的最后一个包))。

  • PT:RTP分组的净荷类型,如:

    • “0”: G.711μ

    • “8”: G.711A

    • “4”: G.723.1

    • “18”: G.729

    • “96~127”:用于动态协商的算法,如iLBC、AMR、SPEEX等。

  • 序号:RTP分组的序号(供接收方检测分组丢失和恢复分组次序)。其初值为随机数,每发送一个增加1。

  • 时间戳:表示RTP分组第一个字节的取样时刻。其初值为随机数,每个采样周期加1

    • 如每次传送20ms的采样频率为8000Hz的数据,则每个传输分组时间戳增加160。

  • SSRC:同步源标识(Synchronous Source),表示信号的同步信源(如产生媒体流的麦克风、摄像机、RTP混合器等)。其值应随机选择,以保证同一个RTP会话中任意两个同步源的SSRC标识不同。

  • CSRC:分信源(贡献源)标识(Contributing Source),识别该数据包中的有效载荷的贡献源。

    • RTP分组的头部最多可以包含15个CSRC标识,其数目由CC字段指明。

    • 通过混合器时;来源的RTP包的SSRC作为CSRC,混合器的SSRC做为新的SSRC。

当然,RTP也支持承载在TCP上,但需注意重传管理,每次重传都会增加会话的时延。

 


RTCP协议

RTCP是RTP(没有提供任何机制来保证数据包的到达顺序与传输质量)的控制协议,主要提供:服务质量的监视与反馈、媒体间的同步,以及多播组中成员的标识。在RTP会话期间,各参与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,各参与者可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,以有效的反馈和最小的开销使传输效率最佳化。

  • P:填充标识,是否有填充;
  • RC:数据包个数;
  • PT:数据包类型;
  • length:报长度(包括头);

RTCP通常也是用UDP来传送的,仅仅封装一些控制信息,因而分组很短,所以可以将多个RTCP分组封装在一个UDP包中。RTCP有如下五种分组类型:

类型(PT)

缩写表示

用途

200

SR(Sender Report)

发送端报告

201

RR(Receiver Report)

接收端报告

202

SDES(Source Description Items)

源点描述

203

BYE

结束传输

204

APP

特定应用

192FIR(Full INTRA-frame Request)请求一个I帧(弃用)
193NACK(Negative Acknowledgement)(弃用)
205RTPFB(Generic RTP Feedback)传输层控制(如NACK)
206PSFB(Payload-specific Feedback)负载层的控制(编解码)

RTCP传输过程中进行流量总体控制,因此参会人员越多,RTCP发生间隔越长。其中SR与RR比其他报告发送的频繁,这些报告用于反馈网络质量,主要包括:

  • 发送与接收包的数量;

  • 丢失包的数量;

  • 包Jitter(延时波动);

RTPFB Type:

  • NACK(1):Generic NACK
  • TMMBR(3):Max Media Stream Bitrate Request
  • TMMBN(4):Max Media Stream Bitrate Notification

PsFB Type:

  • PLI(1):Picture Loss Indication(重传关键帧);
  • SLI(2):Slice Loss Indication;
  • RPSI(3):Reference Picture Selection Indication(B帧丢失);
  • FIR(4):Full Intra Request Command;
  • TSTR(5):Temporal-Spatial Trade-off Request
  • TSTN(6):Temporal-Spatial Trade-off Notification

 


安全实时传输协议SRTP

SRTP(Secure Real-time Transport Protocol)是对RTP协议的扩展,旨在提供数据加密、消息认证、完整性保证和重放保护等。SRTP使用AES对RTP/RTCP数据包的载荷进行加密保护,使用HMAC-SHA1提供完整性保护和消息认证。

SRTP报文格式与RTP基本相同,只是加入了两个主密钥标识符(MKI)和认证标签(Authentication Tag):

 

SRTP会话时,发送方与接收方需要为每个SRTP会话维护一份加密状态信息,即加密环境(加密环境ID号由SSRC、目的网络地址与端口号确定)。加密环境包含两类参数:

  • 算法相关参数:与认证与加密算法相关的,如会话密钥、初始化向量等;

  • 算法无关参数:SRTP规定的一些通用参数。

  • 重要参数说明:

    • 循环计数器(Rollover Counter,ROC):32位,16比特的RTP序号(SEQ)重置次数(超过65535);所以RTP数据索引为i=2^16*ROC+SEQ;

    • 16比特的序列号;

    • 抗重放列表:接收且通过认证的SRTP数据包的索引号,不能低于256条;

    • <From, To>值:两个48比特的SRTP报文索引,标识了主密钥的合法范围;

    • 密钥推导率:从主密钥推导会话密钥,为2的幂(1~2^24),默认为0表示不用该参数;

    • 加密算法标识符:使用哪种算法,如AES-f8;

    • 消息认证算法标识符:使用哪种算法,如HMAC-SHA1;

    • 主密钥:用于推导会话密钥,要确保机密;

    • 主Salt:用于从主密钥推导各种会话密钥的随机数;

密钥协商主要有ZRTP与MiKey模式。MiKey有三种密钥协商方式:

  • 预共享密钥(Pre-shared key)

  • 公钥加密(Public-key encryption)

  • Diffie-Hellman密钥交换

 

ZRTP

ZRTP是一种密钥管理协议,用来协商SRTP加密和认证相关的各种参数以及会话密钥,它复用了RTP端口(在媒体路径上传输);它是基于Diffie-Hellman密钥交换机制的。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值