IP电话机、视频可视电话通信产品及组网方案

会话描述协议 ( SDP)

时间:2021-09-09 15:25 作者:-1 分享到:
8.2.1功能概述
        所谓多媒体会话就是泛指一组多媒体发送方和接收方以及从发送方至接收方的数据流,多媒体会议就是多媒体会话的一个实例。Internet一般采用松弛方式实现多媒体会议,其主要机制就是通过会话公告(sessio anouncement)将会议的地址、时间、媒体和建立等信息告之每一个可能的参会者。用户收到此公告,获知会议的多播组地址和数据流的UDP端口号后,就可自由加入此会议。SDP就是传送这类会话信息的协议。它定义了会话描述的统一格式,但是并不定义多播地址的分配和SDP消息的传送,也不支持媒体编码方案的协商,这些功能均由下层传送协议完成。
       SDP描述的信息封装在传送协议中发送,典型的会话传送协议包括:会话公告协议(SAP-SessionAnnouncementProtocol)、SIP、RTSP、HITP和使用MIME的E-mail。
       采用SAP、SIP或RTSP传送,其数据包格式如图8.3所示。其中头部属于相应传送协议,文本净荷就是SDP会话描述部分。对于用于1P电话的SIP来说,其头部对应为呼叫控制信息,SDP净荷描述的则为媒体信息。采用E-mail或WWW传送,应使用MIME内容类型“application/sdp”。
SOP传送方式
图8.3 SOP协议信息的传送方式
       一般来说,SDP传递的是多媒体会话的媒体流信息,这些媒体流是多点到多点信息流,且只在规定的时间区段内存在,这些时间区段可能是不连续的,但可以重复发生。SDP描述有两个目的,一是告之某会话的存在,二是给出参与该会话所必需的信息。
       为此,SDP描述应包含:
·  会话名和目的;
·  会话激活的时间区段;
·  构成会话的媒体;
·  接收这些媒体所需的信息〈地址、端口、格式等);
·  会话所用的带宽信息〈任选);
·  会话负责人的联系信息〈任选)。
       媒体信息的具体内容包括:
·  媒体类型〈视频、音频等);
.传送协议(RTP/UDP/IP、H.320等);
·  媒体格式(H.261视频、MPEG视频等);
·  媒体地址和端口。
      时间信息的具体内容包括:
.会话的开始和结束时间,可有多组时间段;
.对于每个时间段,可以指定重复时间,例如“每星期三上午10:00,持续1小时”。
      除此以外,SDP 还可创建专用会话,即该会话描述需作加密处理。此时,会话传送协议必需能传送解密密钥及加密方法等信息。
8.2.2会话描述的一般格式
       SDP会话描述完全是文本形式,采用UTF-8编码的ISO10646字符集。之所以采用文本形式而不采用诸如ASN.1的二进制编码方式,是为了提高描述的可携带性,使其可以用各种传送协议传递,并可用各种文本工具软件生成和处理会话描述。为了减少描述所用的开销,便于差错检测,SDP采用了紧凑型编码,并且严格规定了各字段的顺序和格式。
SDP会话描述由许多文本行组成,每个文本行的格式均为:
      〈type〉=〈value〉
       其中,type〉恒为单个字符,需区分大小写。(valu心为结构化文本串,其格式取决于(type〉,也需区分大小写。一般由多个字段组成,各字段由一个空格符分隔,也可以是一个自由格式的文本串。“="符号二侧不允许有空格。
       会话描述包括两个部分:
       会话级描述部分给出适用于整个会话和所有媒体流的描述信 息,它以“V=“文本行开始。若采用SAP传递,SDP只能包含一个会话描述;若采用其它会话传送协议传递,SDP可包含多个会话描述。媒体级描述部分给出只适用于该媒体流的信息,它以“m=”文本行开始。一个会话描述可包含零个或多个媒体级描述。如果在媒体级描述中没有重新定义,会话级描述给定的值就是所有媒体的缺省值。
     会话描述的一般格式为:
      v=〈协议版本)
      0  =〈会话拥有者/创建者和会话标识)
      s=〈会话名)
      i=*〈会话信息)
      u=*〈会话描述的URI)
      e=*(E-mail地址)
      p=*〈电话号码)
      c= *〈连接信息:如果已包含在所有媒体中,则该行不需要)
      b=*〈带宽信息)
       一个或多个时间描述z=*〈时区调整)
      k=*〈加密密钥)
       a=*〈零个或多个会话属性行)
零个或多个媒体描述
各类文本行必须严格按上述次序排列,以便简化语法分析和检错。凡带”*”号的文本行为任选项。
       其中,时间描述的格式为:
       t=〈会话激活的时间区段)
       r=*〈零个或多个重复时间)媒体描述的格式为:
       m=〈媒体名和传送地址)
       i=*〈媒体称呼)
       c=  *〈连接信息:如果已含于会话级描述则为任选项)
       b=*〈带宽信息)
       k=*〈加密密钥)
       a=*〈零个或多个媒体属性行)
       SDP定义的类型(type)字母很少。如果SDP语法分析器不能识别描述中的某一类型字母,则应将整个描述丢弃。属性机制("a="行)供SDP扩展其应用或媒体范围,可根据应用、媒体或会话的需要增加属性值。如果接收方不理解某属性值,则予以丢弃。

8.2.3会话级描述格式
下面依次说明各文本行的格式和意义。
       (1)协议版本格式:v=O
       意义:给出SDP的版本号,目前为0版本,无子版本号。
       (2)会话源
       格式:0=〈用户名〉〈会话标识〉〈版本〉〈网络类型〉〈地址类型〉
     〈地址〉
       意义:给出会话的发起者〈其用户名和用户主机地址)以及会话标识和会话版本号。
       其中,用户名是用户在发起主机上的登录名,如果主机不支持用户标识的概念,则该字段标记为”-”。会话标识为一数字串,使得多元组〈用户名、会话标识、网络类型、地址类型、地址)构成会话的全球唯一的标识符。
       会话标识的分配由创建工具决定,建议采用网络时间协议(NTP­NetworkTimeProtocol)时戳,以确保唯一性。
       版本号指的是该会话公告的版本。供公告代理服务器检测同一会话的若于个公告哪一个是最新的公告。其基本要求是会话数据修改后,其版本号应递增,具体分配值由软件程序决定,也建议使用NTP时戳。
       网络类型为文本串,目前规定“IN”表示Internet。地址类型也是文本串,目前已定义的有“IP4”和“IP6”两种。地址为创建会话的主机的全球唯一地址。对于IP4地址类型,可以是域名全称或点分十进制IPV4地址表示形式。对于1P6地址类型,可以是域名全称或压缩文本IPV6地址表示形式。
      (3)会话名
      格式:s=〈会话名〉
      意义:用ISO10646字符表示的会话名。每个会话描述必需有一个且只有一个会话名。
      (4)会话信息
      格式:i=〈会话信息〉
      意义:用ISO10646字符表示的会话信息,可供用户接口编辑会话时输入相应的说明性文字。每个会话描述至多只有一个会话级“i=”字段。
      虽然此字段并非必备,但建议包含此字段。
      (5)URI
      格式:u:=〈URI〉
      意义:给出能提供会议进一步信息的URI地址。为任选字段,每个会话描述最多只能有一个URI字段,它必须位于第一个媒体字段之前。
      (6)E-mail地址和电话号码
      格式:e=〈E-mail地址〉
                p=<电话号码>
       意义:给出会议负责人的联系信息,该人不一定是创建会议公告的人。一个会话描述可以给出多个E-mail地址或电话号码。
电话号码的格式为国际号码的通用格式,如:
        p=+44- 171-380-7777或p= +16172536011
注意:起始字符必须是“+",国家码后必须是“-”或空格,其后号码各子字段间可以“-”或空格分隔,以便于阅读。
        E-mail地址和电话号码后都可以用括号标明联系人的姓名,姓名均用自由格式文本串表示。
       如:e=mjh@isi.edu(Mark Handley)
       也可写成如下形式:
       e=Mark Handley(mjh@isi.edu〉
       (7)连接数据
       格式:c=〈网络类型〉〈地址类型〉〈连接地址〉
       意义:给出连接数据。每个媒体描述必须包含一个“c=”字段,或者在会话级描述中包含一个公共的"c=”字段。
       网络类型和地址类型目前的定义值仅限于IN和IP4。连接地址可为多播组地址或单播地址。如果为多播地址,还必须有一个生存时间(1TL)值,其表示方法为:
       c=INIP4224.2.1.1/127
       表示ITL=127秒。
       在分层编码中,常常将不同层的编码经由不同的多播地址传送,使接收方可以根据不同的质量要求选用所需要的编码层次,此时,可以用如下格式表示多个多播组地址:
     〈多播基地址〉/〈ttl〉/〈地址数〉
        这些多播地址占用连续的地址空间。如:
        c=IN IP4224.2.1.1/127/3
       表示连接地址为224.2.1.1、224.2.1.2和224.2.1.3,生存期均为127秒。上述多重地址只能用于媒体描述,不能用于会话级“c =”字段。
      (8)带宽
      格式:b=〈修饰语〉:〈带宽值〉
       意义:给出会话或媒体所用的带宽,为可选项。其中,带宽值的单位为khit/s。修饰语为一个字母数字组成的词,指示带宽值的含义。现定义了两个修饰语:会议总带宽(CT)和应用特定最大带宽(AS),前者         表示是所有通信地点所有媒体的总带宽,后者表示是一个地点单一媒体的带宽。
       (9)时间描述
      格式:l=〈起始时间〉〈终止时间〉
       r=〈重复周期〉〈激活时长〉〈从起始时间算起的偏置值列表〉
       z=〈调整时间〉〈偏置值〉〈调整时间置〉〈偏置值〉…
       意义:给出会话激活的时间区段,允许会话周期性发生。
       其中,起始时间和终止时间值为NTP时间值的十进制表示,单位为秒。如果会话在多个不规则间隔时间段内发生,则可使用多个"t=”行表示,每个“t="行表示会话激活的时间。如果会话按规则间隔时间周期发生,则可在“t=”行后加一“r="行。其中,“t ="行指示总的时间段,“r="行指示在这段时间中会话周期激活的时间区段。
        如果“t="行中的终止时间为0,表示会话存在时间无界;如果起始时间为0,表示是永久会话。
       "r=“行各字段的意义可由下述例子予以说明。设某会话在三个月的时间内,每周周一上午10时和周二上午11时激活,每次激活1个小时,则“t=“行的起始时间为第1个周一上午10时的NTP时间值,终止时间为三个   月后最后一次会话结束时间的NTP时间值。“r  =“行的重复周期为1周,激活时长为1小时,从起始时间算起的偏置值有两个,分别为0和25小时。所有时间的缺省单位都为秒,由此得描述该例会话激活时的文本行格式为:
      t=3034423619   3042462419
      r=604800  3600  0  90000
      为了使信息公告更加紧凑,“r=”行时间单位也可取为天、小时、分或秒、分别用d、h,m、s表示(一般不建议使用单位秒)。此时,上例中的“r="行可表示为:
      r=7d lh 0 25h
      ”重复周期”为月或年不用“r="行表示,而采用多个“t="行表示。
      "z="行用于夏时制的时间调整,在此不予详述。
      (10)  加密密钥格式:k=〈方法〉
      k=〈方法〉:〈加密密〉钥
     意义:传送密钥。若置于第1个媒体描述之前,则适用于会话的所有媒体。若只用于某一媒体,则置于该媒体描述之中。
     ”方法”指明获得密钥的机制。已定义的方法有:
     • k=clear:〈加密钥〉:密钥未作变换置于K字段中。
     • k=base64:〈编码密钥〉。含于K字段中的密钥已经编码变换,因为它含有SDP禁用的字符。
     • k=uri:〈获得密钥的URI〉。含于K字段中的是可由此获得密钥数据的URI,请求密钥要求鉴权。
     • k=prompt。SDP描述没有提供密钥,但该会话或媒体流是需要加密的。用户想加入会话时,会提示他提供密钥,该密钥用于解密媒体流。
     (11)属性
     格式:a=〈属性〉
     a=〈属性〉:〈值〉
     意义:属性是SDP扩展的基本手段。可以定义为会话级属性或媒体级属性。
     有两种形式的属性:
     • a=  (flag〉,为特性属性。它们为二进制属性,表示会话具有该性质。如:a=recvonly表示是“只收“特性。
     • a=〈属性〉〈值〉,为数值属性。
     下面给出某会话描述的实例,根据以上分析,不难理解各描述行的意义。
     v=o
     o=mhandley28908445262890842807INIP4126.16.64.4
     s=SDP seminar
     i=A aeminar on the session description protocol
     u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.pse=mjh@ isi.edu(MarkHandley)
     c=IN iP4224.2.17.2/127
     t=2873397496  2873404696
     a=recvonly
 
8.2.4媒体级描述格式
媒体级描述需要说明的主要是“m="描述行,其格式为:
m=〈媒体〉〈端口〉〈传送层〉《格式列表〉下面分别介绍各子字段的格式和含义。
(1)媒体类型
        目前定义了5种媒体类型:音频、视频、应用、数据和控制。其中,“应用”和“数据"的差别是,前者是诸如白板信息的媒体流,后者是诸如可执行程序多播这样的批量数据传送,这些数据并不向用户显示。"控制“用于规定会话的附加会议控制信道。
(2)端口
        指明媒体流发往的传送层端口,其含义取决于“c=“行规定的网络类型和“m=”行第3子字段定义的传送层协议。对于UDP协议来说,端口号的取值范围为1024~65535。媒体应用使用的其它端口应由此基端口导出。例如,对于RTP来说,传送数据的RTP端口为基端口,规定为偶数端口,对应的RTCP端口为比RTP端口高1号的奇数端口。
对于采用分层编码的应用,送往单播地址时,应规定多个传送层端口,其格式和“c=“行中1P多播地址的描述格式类似:
      m=〈媒体〉〈端口〉/〈端口数量〉〈传送层〉〈格式表列〉例如:
      m=   video49170/2RTP/AVP31
表示该视频信号有二层编码。端口49170和49171为第1对RTP/RTCP端口,49172和49173为第2对RTP/RTCP端口。
需要注意的是,在同一会话描述中,不允许同时在“c=”行中规定多重地址,义在“m=“行中规定多重端口。
(3)传送层协议
其值和“c=”行中的地址类型有关。对于IP4来说,大多数媒体业务流都在RTP/UDP上传送,已定义如下两类协议:
•RTP/AVP:IETFRTP协议,音频/视频应用文档,在UDP上传送。
•udp:UDP协议。
(4)媒体格式
       对于音频和视频来说,就是RTP音频/视频应用文档中定义的媒体净荷类型。如果“m=”行中有一列净荷格式,则表示在会话中所有这些格式都可能被用到,但第一个格式是会话的缺省格式。
       如果传送协议是RTP,则媒体格式就是RTP应用文档中的净荷类型号。如果为静态净荷,即媒体编码方式已由类型号完全确定,则只需媒体格式即可完全定义,称之为静态绑定。如果为动态净荷,即媒体编码方式〈如时钟速率、音频信道数等)并未完全确定,则尚需属性行给出进一步的信息,称之为媒体编码和RTP净荷类型的动态绑定。
例如,对于A律PCM编码单信道音频信号,其在RTP音频/视频应用文档中的静态净荷类刮号为8,该信号发往UDP端口49232的描述格式为:
       m=audio49232RTP/AVP8
对于如下的动态净荷类型:16比特线性编码、双声道立体声、抽样速率16kHz,其动态RTP/AVP净荷类型为98,则”m="行描述为:
       m=audio49232RTPIAVP98
另外,尚需增加一行属性行描述:
       a=rtpmap:98Ll6/16000/2
rtpmap属性行的一般格式为:
a= rtpmap〈净荷类型〉〈编码名〉/〈时速钟率〉[/〈码编参数〉]
其中,〈编码参数〉指的就是音频信道数,对于视频信号尚无编码参数定义。
SDP还允许使用rtpmap规定实验性编码格式,其编码名必须冠以“X-“前缀,表示此格式尚未正式登记。例如,某GSM线性预测编码的描述行格式可为:
       m=audio  49232  RTP/AVP99
       a=rtpmap:99X-GSMLPC/8000
       RTP音频格式通常不含每分组取样点数这一信息。如果要求使用非缺省打包方式,则可用“ptime”属性行予以描述。
       媒体描述级中的“i=“行主要用于标记媒体流。当一个会话包含多个同样的媒体类型时,例如,在会话中有两个白板流,一个用于摄影显示,另一个用于提问,就可用“i="行予以区分。其余描述行的格式和含义已在会话描述级中说明,在此不再赘述。
一般说来,一个会话描述可包含多个媒体描述,每个媒体描述均以“m="描述行开始。
在会话级描述和媒体级描述的末尾都可以根据需要写入若干属性行,以扩展SDP的性能。表8.1给出SDP协议建议的若干属性行描述,用户可根据需要予以扩充
      表8.1  SDP    建议的属性描述行

格 式
 
会话级描述
 
媒体级描述
 
作 用
 
a= cat :〈类别〉
  给出点分层次式会话分类号,供接收方筛选会话
a= keywds〈关键词〉   供接收方筛选会话
a= tool〈工具名和版本号〉   给出创建会话描述的工具名和版本号
a= ptime:〈分组时间〉   给出媒体分组的时长(单位:ms)
a= recvonly 指定为只收模式
a= sendrecv 指定为收发模式
a= sendonly 指定为只发模式
a=  orient〈白板方向〉   指明白板在屏幕上的方向
 
a= type〈会议类型〉
  指定会议类型:广播、聚会、主席主持、测试、H. 332
 
a=  charset  〈字符集〉
 
  指定显示会话名和信息数据的字符集
(非缺省值)
a= sdplang〈语言标记〉   指定描述所用语言
 
a= lang:〈语言标记〉
指定会话描述的缺省语言或媒体描述的语言
a=framerat〈 帧速率〉   给出视频帧速率(单位:帧/秒)
a= quality:〈质量〉   给出视频的建议质量( 10/ 5/ 0)
a= fmtp:〈格式〉
(格式特定参数〉
   
 
定义指定格式的附加参数
 
 
版权所有:IP电话:http://www.g3voip.com 转载请注明出处

热销IP电话产品hot products