
RTP RTCP协议.ppt
41页1RTP&RTCP协议2006-4-192RTP&RTCPRTP&RTCP协议协议协议协议•概述概述•相关定义相关定义•RTP数据传输协议数据传输协议•RTP控制协议控制协议——RTCP•RTP变换器和混合器变换器和混合器•基于网络和传输协议的基于网络和传输协议的RTP•服务器算法服务器算法•流媒体服务器实现中应注意的问题流媒体服务器实现中应注意的问题 3概述概述概述概述•Realtime Transport Protocol–针对针对Internet上多媒体数据流上多媒体数据流–工作在一对一或一对多的情况下工作在一对一或一对多的情况下–一般建立在一般建立在UDP上上–只保证实时数据的传输,不能提供顺序可靠的传送只保证实时数据的传输,不能提供顺序可靠的传送机制,也不提供流量控制或拥塞控制机制,也不提供流量控制或拥塞控制•Realtime Transport Control Protocol–负责管理传输质量和在当前应用进程之间交换控制负责管理传输质量和在当前应用进程之间交换控制信息4概述概述概述概述5RTP&RTCPRTP&RTCP协议协议协议协议•概述概述•相关定义相关定义•RTP数据传输协议数据传输协议•RTP控制协议控制协议——RTCP•RTP变换器和混合器变换器和混合器•基于网络和传输协议的基于网络和传输协议的RTP•服务器算法服务器算法•流媒体服务器实现中应注意的问题流媒体服务器实现中应注意的问题 6相关定义相关定义相关定义相关定义•RTP报文:报文:固定首部+负载数据组成的数据包。
固定首部+负载数据组成的数据包•RTCP报文:报文:固定首部+描述固定首部+描述RTCP报文类型的结构元素报文类型的结构元素•Port::使用相连的整数对分别表示使用相连的整数对分别表示RTP和和RTCP,来区分不同的,来区分不同的传输协议传输协议•RTP会话:会话:使用一个网络地址加上一对使用一个网络地址加上一对RTP和和RTCP端口来表示端口来表示一个会话一个会话•提供源(提供源(CSRC):):RTP报文经过混合器时,混合器把那些产生报文经过混合器时,混合器把那些产生特殊报文的贡献源的特殊报文的贡献源的SSRC标志插入那些报文的标志插入那些报文的RTP首部的列表首部的列表中这个列表就叫做中这个列表就叫做CSRC列表 •混合器:混合器:可以从一个或多个源接收可以从一个或多个源接收RTP报文的中间系统,可能修报文的中间系统,可能修改数据格式,采用某种方法合并报文并作为一个新的报文转发改数据格式,采用某种方法合并报文并作为一个新的报文转发 •变换器:变换器:转发转发RTP报文并保证不修改同步源标志的中间系统报文并保证不修改同步源标志的中间系统 7相关定义相关定义相关定义相关定义RTP packet in IP packet:8RTP&RTCPRTP&RTCP协议协议协议协议•概述概述•相关定义相关定义•RTP数据传输协议数据传输协议•RTP控制协议控制协议——RTCP•RTP变换器和混合器变换器和混合器•基于网络和传输协议的基于网络和传输协议的RTP•服务器算法服务器算法•流媒体服务器实现中应注意的问题流媒体服务器实现中应注意的问题 9RTPRTP数据传输协议数据传输协议数据传输协议数据传输协议•RTP固定首部固定首部 •多路多路RTP会话会话•RTP首部扩展首部扩展 10RTPRTP数据传输协议数据传输协议数据传输协议数据传输协议----RTPRTP固定首部固定首部固定首部固定首部最前面的最前面的12个字节存在于所有的个字节存在于所有的RTP报文中,而最后的报文中,而最后的CSRC标志只有经过混合器时才有。
标志只有经过混合器时才有V:版本号:版本号CC::CSRC计数计数Seq Num:序列号:序列号CSRC:贡献源:贡献源P:填充:填充M:用户自定义:用户自定义TimeStamp:时间戳:时间戳X:扩展标志:扩展标志PT:负载类型:负载类型SSRC:同步源:同步源11RTPRTP数据传输协议数据传输协议数据传输协议数据传输协议----多路多路多路多路RTPRTP会话会话会话会话•如果会话中的负载类型发生改变,就没有通用的方法标志新类如果会话中的负载类型发生改变,就没有通用的方法标志新类型该替换旧类型的哪一个型该替换旧类型的哪一个•一个一个SSRC是用来标志一个独立的定时器和序列号空间的大是用来标志一个独立的定时器和序列号空间的大量类型交叉的报文,如果媒体时钟速率不同的话,需要不同的量类型交叉的报文,如果媒体时钟速率不同的话,需要不同的定时器空间和不同的序列号空间,来标志哪种负载类型的报文定时器空间和不同的序列号空间,来标志哪种负载类型的报文被丢失了被丢失了•RTCP接收者和发送者针对一个接收者和发送者针对一个SSRC只能描述一个定时器和序只能描述一个定时器和序列号空间,而且也不包含负载类型域。
列号空间,而且也不包含负载类型域 不推荐将音视频使用一个不推荐将音视频使用一个RTP会话,或者将音视频基于负载类型或会话,或者将音视频基于负载类型或SSRC域进行多路分解域进行多路分解使用相同的使用相同的SSRC传递不同负载类型的交叉报文会引起很多问题:传递不同负载类型的交叉报文会引起很多问题: 12RTPRTP数据传输协议数据传输协议数据传输协议数据传输协议----RTPRTP首部扩展首部扩展首部扩展首部扩展 如果RTP首部的X位为1的话,RTP首部就存在一个可变长的首部扩展RTP首部的扩展机制提供了允许个人试验新的独立负载格式需要额外承载信息的功能 如果RTP首部的X位为1的话,RTP首部就存在一个可变长的首部扩展,如果CSRC列表存在的话则紧跟其后才是扩展部分首部扩展包含一个16位长度域,用来计算首部扩展中32位双字的个数,不包括四字节的首部扩展(因此0是有效长度)RTP首部只能存在一个扩展 13RTP&RTCPRTP&RTCP协议协议协议协议•概述概述•相关定义相关定义•RTP数据传输协议数据传输协议•RTP控制协议控制协议——RTCP•RTP变换器和混合器变换器和混合器•基于网络和传输协议的基于网络和传输协议的RTP•服务器算法服务器算法•流媒体服务器实现中应注意的问题流媒体服务器实现中应注意的问题 14RTPRTP控制协议控制协议控制协议控制协议——RTCP——RTCP•基本功能是为数据分发的质量提供反基本功能是为数据分发的质量提供反馈馈•RTCP为为RTP源承载了一个不变的传输源承载了一个不变的传输层标志层标志 ——CNAME•每个参与者可以独立观测参与者的数每个参与者可以独立观测参与者的数量,计算报文送出的速率量,计算报文送出的速率•传输最小的控制信息,比如在每个参传输最小的控制信息,比如在每个参与者的用户界面上显示参与者的名称与者的用户界面上显示参与者的名称 RTP控制协议(RTCP)是基于周期性的给会话中所有参与者传输控制报文,使用和数据报文相同的分发机制。
底层协议必须对数据报文和控制报文提供多路技术,比如UDP使用不同的端口号 RTCP执行四个功能: 15RTPRTP控制协议控制协议控制协议控制协议——RTCP——RTCP•RTCP报文格式报文格式•RTCP传输间隔传输间隔•发送者和接收者报告发送者和接收者报告–SR:发送者报告:发送者报告RTCP报文报文–RR:接收者报告:接收者报告RTCP报文报文–扩展发送者和接收者报告扩展发送者和接收者报告–接收者和发送者报告的分析接收者和发送者报告的分析 •SDES:源描述:源描述RTCP报文报文•BYE::RTCP再见报文再见报文•APP:应用程序定义的:应用程序定义的RTCP报文报文 16RTCPRTCP报文格式报文格式报文格式报文格式•SR:发送者报告,活跃的发送参与者发出的传输回复统计信息:发送者报告,活跃的发送参与者发出的传输回复统计信息•RR:接收者报告,不活跃的发送参与者发出的统计信息回复:接收者报告,不活跃的发送参与者发出的统计信息回复•SDES:包含:包含CNAME的源描述项的源描述项•BYE:标志参与者结束:标志参与者结束•APP:应用程序特殊功能:应用程序特殊功能承载不同控制信息的多种承载不同控制信息的多种RTCP报文类型:报文类型: 每一个RTCP报文以类似于RTP数据报文的固定头开始,紧跟着32位对齐的根据报文类型变长的可能的元素结构。
17RTCPRTCP报文格式报文格式报文格式报文格式•每周期传送的复合每周期传送的复合RTCP报文必须包括一个报告报文报文必须包括一个报告报文•每个复合每个复合RTCP报文也应该包含报文也应该包含SDES CNAME•首先出现在复合报文中的报文类型的数量应该受到限制首先出现在复合报文中的报文类型的数量应该受到限制 RTCP报文的特征使得RTCP报文可叠加复合报文中每一单个的RTCP报文可以根据报文顺序或组合被分别处理 因此,所有的RTCP报文必须使用至少包含两个独立报文的复合报文送出 18RTCPRTCP报文格式报文格式报文格式报文格式推荐格式如下: 19RTCPRTCP传输间隔传输间隔传输间隔传输间隔 增加增加RTCP发送接收报告的传送间隔,默发送接收报告的传送间隔,默认情况下最大间隔为认情况下最大间隔为5分钟 RTP被设计成允许应用程序从被设计成允许应用程序从少数几个参与者到成千上万的参与者少数几个参与者到成千上万的参与者自动扩大会话的规模自动扩大会话的规模 如果每个参与者的接收者报告以一如果每个参与者的接收者报告以一个不变的速率送出,流量控制将会随着个不变的速率送出,流量控制将会随着参与者的数量的增加而线性增加。
因此参与者的数量的增加而线性增加因此速率必须按比例下降速率必须按比例下降20发送者和接收者报告发送者和接收者报告发送者和接收者报告发送者和接收者报告——SR——SR21发送者和接收者报告发送者和接收者报告发送者和接收者报告发送者和接收者报告——RR——RR 接收者报告(RR)报文的格式除了报文类型域包含的常数为201和省略了发送者信息的5个字长度外,其他的格式和SR报文的格式相同剩下的域和SR报文的含义一样没有数据传输或报告回复的时候,复合RTCP报文的首部是一个空的RR报文(RC=0) 22扩展发送者和接收者报告扩展发送者和接收者报告扩展发送者和接收者报告扩展发送者和接收者报告•较少的报文字节数(没有较少的报文字节数(没有RTCP首部或首部或SSRC域);域);•简单快速的分析,由于应用程序运行在接收报告之后直简单快速的分析,由于应用程序运行在接收报告之后直接可定位访问扩展域接可定位访问扩展域 如果需要有规律的报告关于发送者和接收者的附加信息,则需要配置特殊的应用程序或扩展配置该方法使用在另外定义的RTCP报文类型中,因为这需要较少的额外开销: 如果需要附加发送者信息,必须在发送者报告的扩展域中首先包括进来,但是不会在接收者报告中展现。
如果需要包含接收者信息,该信息将组织成跟接收报告块已经存在的数组平行的数组块;也就是说,块的计数在RC域中表明23接收者和发送者报告的分析接收者和发送者报告的分析接收者和发送者报告的分析接收者和发送者报告的分析 不但发送者而且接收者和第三方监控器都希望回复质量的反馈发送者可能基于反馈修改传输;接收者能判断是局部、区域还是全局问题;网络管理者可以使用独立配置监控器只接收RTCP报文而不是RTP数据报文来评估他们网络的组播分发的执行效率24SDESSDES:源描述:源描述:源描述:源描述RTCPRTCP报文报文报文报文 每个字节块由一个SSRC/CSRC标志紧跟一个承载SSRC/CSRC有关信息的0个或多个表项列表每个字节块的开始边界是一个32bits的数每个表项由一个8bits的类型域、一个8bits的字节计数描述文本长度(因此,不包括这两个字节的头)以及文本本身注意文本不能超过255字节,但这是为了和限制RTCP带宽占用的需求一致25SDESSDES:源描述:源描述:源描述:源描述RTCPRTCP报文报文报文报文•CNAME:规范的终点标志:规范的终点标志SDES项项 •NAME:用户名:用户名SDES项项•EMAIL:电子邮件地址:电子邮件地址SDES项项•PHONE:号码:号码SDES项项•LOC:用户的地理位置:用户的地理位置SDES项项•TOOL:应用或工具名:应用或工具名SDES项项•NOTE:通知:通知/状态状态SDES项项•PRIV:私有:私有SDES表项扩展表项扩展26BYEBYE::::RTCPRTCP再见报文再见报文再见报文再见报文 如果混合器接收到BYE报文,则保持SSRC/CSRC标志不变直接转发。
如果混合器关机,它将发送一个BYE报文列出所有它掌握的有作用的源,同样包含自己的SSRC标志 27APPAPP:应用程序定义的:应用程序定义的:应用程序定义的:应用程序定义的RTCPRTCP报文报文报文报文 APP报文是开发新应用和新特性时的试验用的,不需要注册报文类型值不能识别的报文类型的APP报文应该忽略测试之后,如果广泛用户接受,则每个APP报文重新定义,没有子类型和名字域并项IANA注册并推荐作为一个RTCP报文类型28RTP&RTCPRTP&RTCP协议协议协议协议•概述概述•相关定义相关定义•RTP数据传输协议数据传输协议•RTP控制协议控制协议——RTCP•RTP变换器和混合器变换器和混合器•基于网络和传输协议的基于网络和传输协议的RTP•服务器算法服务器算法•流媒体服务器实现中应注意的问题流媒体服务器实现中应注意的问题 29RTPRTP变换器和混合器变换器和混合器变换器和混合器变换器和混合器 RTP变换器/混合器连接两个或多个传输层的“云团”典型意义上讲,每个云由普通网络和传输协议(比如,IP/UDP)、组播地址或一对单播地址以及描述传输层的端口定义。
30RTCPRTCP在变换器中的处理在变换器中的处理在变换器中的处理在变换器中的处理•SR发送者信息:变换器不产生自己的发送者发送者信息:变换器不产生自己的发送者信息,但是向其它的云转发收到的信息,但是向其它的云转发收到的SR报文•SR/RR接收报告块:变换器转发从一个云接接收报告块:变换器转发从一个云接收到的接收报告到另一个云去收到的接收报告到另一个云去•SDES:变换器通常不作修改的转发从一个云:变换器通常不作修改的转发从一个云收到的收到的SDES信息到另一个信息到另一个•BYE:变换器不作修改的转发:变换器不作修改的转发BYE报文•APP:变换不作修改的转发:变换不作修改的转发APP报文31RTCPRTCP报文在混合器中的处理报文在混合器中的处理报文在混合器中的处理报文在混合器中的处理•SR发送者信息:由于源数据流在混合后特征会消失,发送者信息:由于源数据流在混合后特征会消失,因而源发送的信息不能通过混合器因而源发送的信息不能通过混合器•SR/RR接受报告块:混合器为云中的每个源产生一接受报告块:混合器为云中的每个源产生一个自己的接受报告并只对这个云发送出去个自己的接受报告并只对这个云发送出去。
•SDES:典型情况下,混合器不作修改的转发它从一:典型情况下,混合器不作修改的转发它从一个云接收到的个云接收到的SDES信息到另外的云团信息到另外的云团•BYE:混合器必须转发:混合器必须转发BYE报文•APP:混合器对:混合器对APP报文的处理方式是应用程序特报文的处理方式是应用程序特殊定义的殊定义的不让不让SR或或RR报文通过报文通过 32串连混合器串连混合器串连混合器串连混合器33RTP&RTCPRTP&RTCP协议协议协议协议•概述概述•相关定义相关定义•RTP数据传输协议数据传输协议•RTP控制协议控制协议——RTCP•RTP变换器和混合器变换器和混合器•基于网络和传输协议的基于网络和传输协议的RTP•服务器算法服务器算法•流媒体服务器实现中应注意的问题流媒体服务器实现中应注意的问题 34基于网络和传输协议的基于网络和传输协议的基于网络和传输协议的基于网络和传输协议的RTPRTP•RTP依赖底层协议提供对依赖底层协议提供对RTP数据和数据和RTCP控制流的多路分解控制流的多路分解•RTP报文的最大长度只受底层协议的限制报文的最大长度只受底层协议的限制•如果如果RTP报文由底层协议承载并提供连续报文由底层协议承载并提供连续的字节流抽象的字节流抽象 ,,RTP报文封装必须提供成报文封装必须提供成帧机制。
帧机制35RTP&RTCPRTP&RTCP协议协议协议协议•概述概述•相关定义相关定义•RTP数据传输协议数据传输协议•RTP控制协议控制协议——RTCP•RTP变换器和混合器变换器和混合器•基于网络和传输协议的基于网络和传输协议的RTP•服务器算法服务器算法•流媒体服务器实现中应注意的问题流媒体服务器实现中应注意的问题 36服务器算法服务器算法服务器算法服务器算法•((1)打开设备,分配资源当设备准备好时,创建一个)打开设备,分配资源当设备准备好时,创建一个RTP实时服实时服务线程和一个务线程和一个RTCP实时服务线程实时服务线程•((2)创建一个)创建一个UDP套接字并将其绑定到所提供服务的地址之上套接字并将其绑定到所提供服务的地址之上•((3)反复调用接收模块,接收来自客户的)反复调用接收模块,接收来自客户的RTCP报告,根据其类型报告,根据其类型做出响应对新实时客户的请求,把客户地址添加到实时服务的客做出响应对新实时客户的请求,把客户地址添加到实时服务的客户列表中,对新文件客户的请求,则创建一个新户列表中,对新文件客户的请求,则创建一个新RTP文件服务线程文件服务线程和一个新和一个新RTCP文件服务线程;对已经在服务中的客户则根据文件服务线程;对已经在服务中的客户则根据RTCP报告的内容调整服务。
报告的内容调整服务 两种服务器软件模型:并发服务器和循环服务器流媒体服务器一般采用并发服务器算法 37服务器算法服务器算法服务器算法服务器算法客户分为请求实时数据的实时客户和请求文件数据的文件客户两类:38服务器算法服务器算法服务器算法服务器算法————实时服务算法实时服务算法实时服务算法实时服务算法初始化客户列表和RTP首部RTP实时服务线程实时服务线程 从设备读取媒体数据发送给实时服务列表中的客户更新RTP首部和统计数据计算延时初始化客户列表和RTP首部发送发送方报告给实时服务列表中的客户计算延时RTCP实时服务线程实时服务线程 39服务器算法服务器算法服务器算法服务器算法————文件服务算法文件服务算法文件服务算法文件服务算法初始化RTP首部RTP文件服务线程文件服务线程 从文件读取媒体数据发送数据给客户更新统计信息准备生成发送报告计算延时调整发送速度 初始化RTP首部生成发送方报告发送给客户 计算延时RTCP文件服务线程文件服务线程 发送一个源描述(SDES)报文给客户 40RTP&RTCPRTP&RTCP协议协议协议协议•概述概述•相关定义相关定义•RTP数据传输协议数据传输协议•RTP控制协议控制协议——RTCP•RTP变换器和混合器变换器和混合器•基于网络和传输协议的基于网络和传输协议的RTP•服务器算法服务器算法•流媒体服务器实现中应注意的问题流媒体服务器实现中应注意的问题41流媒体服务器实现中应注意的问题流媒体服务器实现中应注意的问题流媒体服务器实现中应注意的问题流媒体服务器实现中应注意的问题•会话和流的两级分用会话和流的两级分用•多线程的管理多线程的管理•时间戳的处理时间戳的处理•媒体数据发送速度的控制媒体数据发送速度的控制•多种流同步多种流同步。
