3
SDP使用方式
一般情况下,应用场景都至少是在两方或者多方参与者之间进行。多方语音或者视频应用场景中,系统需要对话型的多媒体应用来传输会话描述。为了会话创建,会话描述允许参与者同意它们之间的一系列兼容性能力的协商。为了客户端和服务器端之间的媒体传输,多媒体流要求一系列的恰当的媒体协商来保证客户端和服务器端的传输。在所有的用户创建中,SDP用来传输通信参与方之间的会话信息来支持它们之间的媒体能力协商。因此,SDP主要可以使用在以下五个方面的应用中:- SIP中的会话,前面我们已经提到,SIP是一种基于应用层的协议,它可以创建会话,修改会话和结束会话。典型的应用如SIP呼叫,网络会议和媒体分发等。SIP消息用来创建会话并且传输会话描述。会话描述来支持参与方之间的能力协商。通常情况下,会话描述由SDP通过格式化处理而产生。当使用SIP协议时,RFC3264规定了offer/answer模式,它是一种有限的架构可以支持使用SDP进行协商。
- WebRTC的会话,和SIP一样,WebRTC也是一种应用层协议,其目的是通过网络在浏览器用户之间为实时通信交互中语音,视频和数据应用程序协议。WebRTC信息传递SDP消息来实现对会议会话的创建修改管理,以便基于浏览器的终端之间可以协商一系列的能力支持。例如,WebRTC使用SDP offer/answer模式来协商其会话能力支持。
流媒体,Real Time Streaming Protocol (RTSP),RFC2326规定了具体的细节,它也是一种应用层协议,使用数据属性对数据传输进行控制。控制功能可以是对视频的播放或者暂停等。RTSP提供了一种扩展架构对已控制的实时数据,例如语音视频实现按需传递。RTSP客户端和服务器端通过部分SDP语法使用对媒体传输能力参数进行协商。
Email和www应用,这是另外一种传输手段来传输会话描述。其媒体类型使用的是“application/sdp”, 通过此方式可以在参与方之间自动发起一个应用。
多播会话声明,为了协助多播多媒体会议通知和其他多播会话和并且为了和所需要的会议参与方进行相关会话创建消息的通信,可能需要一个分布式会话目录。这样的会话目录实例,例如SAP通知方可以周期性地对已知的多播组发送此会话的描述,其他会话目录收到通知,这些会话目录可能是潜在远端参与者,它们可以此会话描述在此会话中启动必要的应用工具。SAP通知方本身也不知道接收方是否存在丢失,它也不会提供其他UDP/IP的可靠性保证手段。其中,SAP(Session Announcement Protocol,RFC2974)是使用了类似会话目录部署方式的协议,对这样的会话通知,SDP提供了一种推荐会话描述格式。关于SAP中对会话的管理可以查阅RFC2974-4/5章节,笔者这里不再赘述。
4
SDP要求和建议
前面笔者已经多次介绍SDP的作用和目的,这里我们再次简单强调一下。SDP的目的是在多媒体会话中传输多媒体流,支持会话描述的接收参与到会话中。在实际应用场景中,不同场景有对多媒体和会话有不同的要求。媒体流的呈现方式可以是多对多的形式,会话有时也根据业务要求,有时不会继续呈现活动状态。目前来看,网络中的基于多播会话的形式和其他会议形式有一点不同,任何接收会话数据方可以加入到会话中(除非会话流量加密)。在这种场景中,SDP有两个基本的目的,SDP是一种已存在会话的通信手段,它同时也是一种对参与方传输有效信息开启和参与会话的手段。在单播环境中,SDP的目的可能和后一种方式接近。因此,一般来说,SDP会话描述需要包括几个方面的内容:
会话名称和目的
会话活动时间
构成会话的媒体
- 获取媒体所需要的必要参数(地址,端口,格式)
- 支持会话所需带宽
- 此会话负责人联系方式
以上信息是SDP会话描述的基本要求,SDP会话描述需要的具体类别消息内容包括:
媒体和传输信息,此部分信息包括媒体类型(语音,视频,数据),传输协议(RTP/UDP/IP,H323或者),传输协议中需要考虑多播组地址,单播组地址和NAT等规范,媒体格式(H.263 视频,MPEG 视频)。
会话有效性信息:会话具有一定的时间有效性,它可以在规定边界范围内活动或者停止。它包括一个在会话时间内的任意列表,包括启动和停止时间,每个会话边界的重复次数类似信息,例如“每星期二早晨十点做一个小时检测”。会话时间有效性具有全局持续性的特点,和本地设置不相关。
私有会话: SDP中可以支持私有会话和公共会话。私有会话是通过加密方式来处理,公共会话则无需加密。SDP自己本身没有对两种会话加以区别。在私有会话分发前对会话描述进行加密则可。如果是私有广播的话,需要对广播增加私有密钥。关于SDP加密机制的处理,读者可查阅RFC2974和RFC3261。
- 更多会话其他信息:SDP 会话描述应该传递更多足够的信息全部参与方是否加入会话中。SDP也可以包括一个URL来获得更多会话信息支持。
- 归类:当很多会话描述通过SAP或者其他机制分发出去时,应该支持一个过滤会话设置,接收方可以针对自己感兴趣的会话接收响应,过滤掉不感兴趣的会话。因此,通过划分类别来加以区分。SDP支持了一个类别定义机制,可以支持对某些会话做类别处理,SDP通过"a=cat:"属性定义类别。
- 国际化支持,SDP推荐使用UTF-8解码(RFC3629规范)使用ISO 10646字符串来实现多语言解码支持。但是,为了保持会话描述格式的紧凑,有时SDP也支持其他的字符串规范,例如,ISO 8859-1。注意,国际化支持仅支持SDP中的自由文本格式域值(例如,会话名称,背景信息),不支持整个SDP。
接下来的章节,笔者将继续讨论SDP基础的第三部分,关于细节规范的总体介绍。
参考链接:https://www.rfc-editor.org/rfc/rfc2974
关注微信公众号:asterisk-cn,获得有价值的Asterisk行业分享Asterisk freepbx FreeSBC技术文档: www.freepbx.org.cn融合通信/IPPBX商业解决方案:www.hiastar.com如何使用FreeSBC,qq技术分享群:334023047, www.freesbc.cn