资源描述
中国联通H.248协议技术规范
中国联合通信有限公司
信息产业部电信传输研究所
2003.2
目 次
1.范围 1
2.引用标准 1
3.定义 1
4.缩略语 2
5.连接模型 3
5.1 终结点 3
5.2 关联 5
5.3 包(Package) 5
6.命令 6
6.1 描述符 6
6.2 命令 15
6.3 命令错误码 23
7.事务交互(Transaction) 24
7.1事物交互参数 25
7.2 事物交互编程接口 25
7.3 消息 26
8.协议传送 27
8.1 命令执行的顺序 27
8.2 预防重启动崩溃 27
9.安全 28
9.1 保护协议连接 28
9.2过渡性AH 方案 28
9.3保护媒体连接 28
10. MG和MGC的控制接口 28
10.1 逻辑MG 29
10.2 冷启动 29
10.3 协议版本协商 29
10.4 MG故障 30
10.5 MGC故障 30
11.包定义 30
11.1包的定义 31
11.2 特性、统计和事件和信号参数的定义 32
11.3 列表类型(List) 33
11.4 标识符的命名 33
11.5包的注册 33
附录A(标准的附录)本协议语法的ASN.1语言描述 34
附录B(标准的附录)本协议语法的ABNF语言描述 51
附录 C(标准性附录)媒体流特性标签 62
附录D(标准的附录)在IP上的传输本协议的要求 73
附录E(标准的附录)H.248协议包 77
附录 F (标准的附录) 在SCTP上传输本协议的要求 91
前 言
基于H.248的媒体网关控制协议是下一代分组网中语音业务、数据业务和视频业务呼叫、控制、业务提供的控制设备与受控制设备之间的接口协议。本标准是以国际电联、计算机标准化组织、软交换论坛制定的相关标准为基础,结合国内网络的实际情况和相关国内标准制定的。它是软交换、媒体网关控制器、媒体网关研制、开发和生产的主要依据。
由于基于H.248的媒体网关控制协议涉及的内容比较多,因此本规范重点规定了它的基本要求。随着技术的发展,我们将逐步完善规范的内容。
本标准的附录A、B、C、D、E、F都是标准的附录。
本标准由中国联合通信有限公司提出并归口。
本标准起草单位:
本标准主要起草人:
1.范围
本标准规定了媒体网关和媒体网关控制器之间, 媒体网关和软交换之间进行通信时的协议要求。
本标准适用于媒体网关、媒体网关控制器和软交换设备的研制、开发和引进。
2.引用标准
下列标准包含的条文,通过在本标准中引用而构成为本标准的条文。在标准出版时,所示版本均为有效。所有标准都会被修订,使用本标准的各方应探讨使用下列标准最新版本的可能性。
YD/T 1044-200X IP电话/传真业务总体技术要求
YD/T 1046-2000 IP电话网关设备互通技术规范
YD/T 1142-2001 IP电话网守设备技术要求及测试方法
ITU-T H.323(99) 基于分组的多媒体通信系统
ITU-T H.225.0(99) 用于不保证质量的业务本地网上的可视电话
系统的媒体流的打包与同步
ITU-T H.245(98) 多媒体通信的控制协议
ITU-T I.363(1997) B-ISDN ATM适配层规范
ITU-T H.248v2(2001) H.248协议
RFC 2805 媒体网关控制协议结构和要求
RFC 1819 RTP协议
RFC 2327 SDP协议
RFC 2960(2000) SCTP协议
RFC 2401 IP协议安全机制
RFC 2402 AH协议
RFC 2406 ESP协议
RFC 2234 ABNF语法定义规则
ITU-T X.680(1997) 抽象语法符号定义规则(ASN.1)
ITU-T X.690(1994) ASN.1编码规则
3.定义
媒体网关(MG):MG将一种网络中的媒体转换成另一种网络所要求的媒体格式。例如:MG能够在电路交换网的承载通道和分组网的媒体流之间进行转换。MG可以处理音频、视频或者T.120,也可以具备处理这三者任意组合的能力。MG能够进行全双工的媒体转换。MG可以演示视频/音频消息,实现其它IVR功能,也可以进行媒体会议。
媒体网关控制器(MGC):MGC对MG中的与媒体通道的连接控制相关的呼叫状态进行控制。
软交换设备(SoftSwitch):是电路交换网向分组网演进的核心设备,也是下一代电信网络的重要设备之一,它独立于底层承载协议,主要完成呼叫控制、媒体网关接入控制、资源分配、协议处理、路由、认证、计费等主要功能,并可以向用户提供现有电路交换机所能提供的所有业务以及多样化的第三方业务。
中继媒体网关(Trunk Gateway):位于电路交换网和分组网络之间的媒体网关设备,用来终结大量的数字电路。
驻地网关(Residental Gateway):位于用户侧将模拟电话终端连接到分组网络的媒体网关,通常一个驻地网关包括一个或多个模拟电话终端。
终结点(Termination): 终结点是MG上的逻辑实体,它发起和/或接收媒体和/或控制流。终结点可用特性来进行描述,如媒体流、modem和承载能力等特性,这些特性可以组成了一系列描述符。
关联(Context): 表明一些终结点之间的连接关系。空关联是一种特殊的关联,它包含所有那些与其它终结点没有联系的终结点。
描述符(Descriptor):协议中的一种语法元素,用来描述一组相互联系的特性。例如:通过在一个命令中包含适当的描述符,控制器能够设置MG中的媒体流特性。
事物交互(Transaction):MG 与MGC之间的一组命令构成事物交互。一个事物交互可以有一组或多组动作(Action)组成,每组动作又由一个或多个命令组成。
流(Stream):在一个呼叫或者会议中,由一个MG接收或发送的双向媒体流或者控制流。
包(Package):终结点具有可选的特性(Property)、事件(Event)、信号(Signal)和统计(Statistic),这些可选项组合成包,包的定义包括特性、事件、信号、统计和程序五个部分。
根终结点(Root):特殊的终结点,代表整个MG,当root作为命令的输入参数时,命令可以作用于整个网关,而不是一个终结点。
通配值(Wildcard):协议语法中用于标识与终结点或关联相匹配的符号,协议规定通配值可为“CHOOSE”和“ALL”,“ALL”表示需要选择所有满足条件的终结点或关联,“CHOOSE”表示选择一个满足条件的终结点或关联。
4.缩略语
ABR 可用比特率
AH 认证头
ALF 应用层帧协议
ATM 异步传输模式
AAL ATM适配层
B-ISDN 宽带综合业务数字网
BRI 基本速率接口
CAS 随路信令
CBR 恒定比特率
CDV 信元时延变化
CDVT 信元时延变化容限
CLP 信元丢失优先级
CPCS 公共部分会聚子层
CS 会聚子层
DTMF 双音多频
ESP 封装安全净荷
FIFO 先进先出
FR 帧中继
GW 网关
IANA 因特网号码分配机构
ICV 集成校验值
IKE 密钥交换
IP 因特网协议
IVR 交互式语音应答
MF 中频
MID 消息标识符
MG 媒体网关
MGC 媒体网关控制器
MWD 最大等待时延
PCR 峰值信元速率
PDU 协议数据单元
PRI 一次群接口
PSTN 公共电话交换网
QoS 服务质量
RTP 实时传输协议
SBR 可维持比特率
SCN 电路交换网
SCTP 流控传输协议
SDP 会话描述协议
SDU 业务数据单元
SG 信令网关
SS7 7号信令系统
TCP 传输控制协议
TDM 时分(多路)复用
UBR 未指定比特率
UDP 用户数据报协议
UNI 用户网络接口
VBR 可变比特率
VCI 虚通道识别码
VPC 虚通道连接
VPI 虚通道识别码
5.连接模型
本协议的连接模型主要描述MG中能由MGC控制的逻辑实体,连接模型的主要抽象概念包括终结点和关联。
5.1 终结点
终结点是MG上的一个逻辑实体,它发起和/或接收媒体和/或控制流。在一个多媒体会议中,一个终结点可以支持多种媒体,并且发送或者接收多个媒体流。终结点可用特性来进行描述,在终结点中,封装了媒体流参数、modem和承载能力参数,这些特性可以组成了一系列描述符。MG在创建终结点时,赋予终结点一个唯一的TerminationID来标识终结点。
终结点的类型分为半永久性终结点和临时性终结点两类。半永久性终结点可以代表物理实体,例如一个TDM信道,此时,只要MG中存在这个信道,这个终结点就存在。临时性终结点可以代表临时性的信息流,例如RTP流,此时,只有当MG使用这些信息流时,这个终结点才存在。临时性终结点可由Add命令来创建和Subtract命令来删除。而半永久性终结点则不同,当使用Add命令向一个关联添加物理终结点时,这个物理终结点来自空关联,当使用Subtract命令从一个关联中删除物理终结点时,这个物理终结点将转移到空关联中。
终结点可以支持信号,这些信号可以是MG产生的媒体流(如信号音和录音通知),也可以是信路信号(如Hook Flash)。通过编程可以设置终结点对事件进行检测,一旦检测到这些事件发生,MG就向MGC发送Notify消息进行报告或由MG采取相应的操作。
终结点可以对数据进行统计,当MGC发出审计(AuditValue)请求时,或者当终结点从它所在的关联被删除时,终结点就将这些统计数据报告给MGC。
MG可以处理复用媒体流,例如,H.221建议描述了将多个媒体流复用在几个64kbit/s数字通道上的帧结构。在处理复用媒体流的连接模型中,用于携带部分复用流的每个数字承载通道就有一个终结点相对应,所有处于这些数字通道的起始和终结位置的终结点都与一个称为复用终结点的独立终结点相连接。这个复用终结点使用Mux描述符来描述所使用的多路复用方式。如果一个终结点携带多个媒体,则相应地,这个终结点携带多个Stream描述符。
终结点可创建用来代表复用的承载能力,例如ATM AAL2。当创建一个新的复用承载能力时,就同时在关联中创建一个临时性终结点。当删除这个终结点时,同时也就删除了这个复用承载能力。
5.1.1通配值
终结点可用TerminationID进行标识,TerminationID由MG分配,本协议对TerminationID分配规则不作规定。本协议规定TerminationID可使用通配值“ALL”和“CHOOSE”,通配值的编码方式参见本规范附录A和附录B。通配值“ALL”用来规定多个终结点,“CHOOSE”则用来指示MG必须选择符合条件的终结点,例如MGC可以指示MG选择一个中继群中的一条中继电路。当命令中的TerminationID是通配值“ALL”时,则对每一个匹配的终结点重复该命令。当命令不要求通配响应时,每一个重复的命令将产生一个命令响应,当命令要求通配响应时,则多个命令只会产生一个通配响应,该通配响应中应包含所有单个响应的集合。
例如,当终结点T1 具有以下特性值:
P1 = 1,P2 =3
终结点T2具有以下特性值:
P2 =7,P3 =5
则终结点T1 和T2的通配响应为:
P1 = 1,P2 =3,7,P3 =5
5.1.2 终结点特性
终结点可用特性进行描述,每个特性由一个PropertyID标识,由这些特性可以组成了一系列描述符。大部分特性有缺省值,其缺省值在包中进行定义。当创建一个终结点时,通常赋予这些特性缺省值,除非MGC设定的特性值不同于缺省值。通过重新设置处于空关联之中的终结点的特性缺省值,可以改变物理终结点的特性缺省值。当物理终结点返回到空关联中,它的特性值将被设置为这个新的缺省值。
终结点具有一些公共特性以及与特定媒体流相关的非公共特性,这些公共特性与特定媒体流无关,也称为终结点状态(TerminationState)特性。与特定媒体流相关的特性包括本地(Local)特性和接收或/发送流特性。终结点的非公共特性由包进行定义,这些特性可由包名(PackageName )和特性标识符(PropertyID)来标识。特性具有只读(ReadOnly)和可读写(Read/Write)两种属性,对于可读写的特性,MGC可以设置它们的值。如果某个特性值设置为全局参数(Global),则所有实现了这个包的终结点都共享这个特性值。
当使用Add命令将一个终结点添加到一个关联时,可以通过加入适当的描述符作为命令输入参数来设置可读写的特性值,Add命令中未设置的特性值将保持它们以前的值。类似的,使用Modify命令可对改变一个关联中的终结点的特性值,Modify命令中未设置的特性值将保持它们以前的值。使用Move命令将一个终结点从一个关联转移到另一个关联时,也可以改变终结点的特性值。
5.1.3 描述符
本协议规定将相关的一些特性组合成描述符,描述符可作为命令的输入和输出参数。本协议定义的描述符参见表1。
表1 描述符
描述符名称
功能描述
Modem
标识modem类型和特性
Mux
描述多媒体终结点的复用类型和形成Mux终结点的终结点
Media
媒体流特性的列表
TerminationState
与特定媒体流无关的终结点特性
Stream
对应于单个媒体流的remote/local/localControl描述符的列表
Local
对MG从远端实体接收到的媒体流进行描述的一些特性
Remote
对MG发送给远端实体的媒体流进行描述的一些特性
LocalControl
与MG和MGC有关的一些特性
Events
描述由MG检测的事件,以及当事件被检测到时如何作出反应
EventBuffer
描述当EventBuffer处于激活状态时,由MG检测的事件
Signals
描述适用于终结点的信号和/或动作(如忙音)
Audit
可作为Auditvalue和Auditcapabilities命令的输入参数,定义需要审计的信息
Packages
可作为AuditValue命令的输出参数,返回由终结点实现的包的列表
DigitMap
为MG定义的号码采集规则,用于匹配拨号事件,使拨号事件按组而非单个上报
ServiceChange
可作为ServiceChange命令的输入参数,描述何种业务发生改变以及业务发生改变的原因
ObservedEvents
可作为Notify 或者 AuditValue命令的输出参数,报告被检测到的事件
Statistics
可作为Subtract、 Auditvalue和Auditcapabilities命令的输出参数,报告与终结点有关的统计数据
Topology
描述关联中终结点之间的媒体流流向
Error
定义了错误代码和错误文本描述,该描述符可作为Notify请命令和命令响应Reply的输入参数
5.1.4 根终结点 (Root)
本协议定义了一类特殊的终结点“根”。使用根终结点,可以将一个命令作用于整个网关,而不是其中的某个终结点。根上还可以定义包,根终结点可以有特性、事件、信号和统计。根终结点只能作为以下命令的输入参数,除这些命令外,使用根终结点都是非法的。
Modify命令的输入参数,用来改变整个网关的特性,或者设置需要检测的事件。
Notify命令的输入参数,用来报告整个网关所检测到的事件。
AuditValue命令的输入参数中,用来检查在根上实现的特性和所统计的统计数据。
Auditcapabilities命令的输入参数,用来确定根已实现了的所有可能特性。
ServiceChange命令,以说明网关处于服务还是退出服务状态。
5.2 关联
本协议规定关联为一组终结点之间的联系。如果一个关联中超过两个终结点,那么关联就对终结点之间的拓扑结构和媒体混合和/或交换参数进行描述。空关联是一种特殊的关联,它包含所有那些与其它终结点没有联系的终结点。
使用Add命令可以向一个关联添加终结点,如果MGC不指明将终结点添加到某个已有的关联中,则MG就创建一个新的关联。使用Subtract命令可以将一个终结点从一个关联中删除。使用Move命令可以将一个终结点从一个关联转移到另一个关联。一个终结点只能同时存在于一个关联之中。一个关联中可以存在的终结点的最大数目由MG的特性决定。只提供点到点连接的MG中的每个关联最多支持两个终结点,支持多点会议的MG中的每个关联可以支持三个或三个以上的终结点。
5.2.1 关联特性
本协议规定关联具有以下特性:
1.ContextID(关联标识符)
2.拓扑(Topology)
用于描述一个关联中终结点之间的媒体流方向。而终结点的模式(Send或Receive等)描述的是媒体流在MG的入口和出口处的流向。
3.关联优先级(Priority)
用于指示MG处理关联时的先后次序。本协议规定“0”为最低优先级,“15“为最高优先级。
4.紧急呼叫的标识符(Indicator for Emergency Call)
MG优先处理使用紧急呼叫标识符的呼叫。
5.3 包(Package)
不同类型的网关可以支持不同类型的终结点。本协议通过允许终结点具有可选的特性(Property)、事件(Events)、信号(Signals和统计(Statistics)来实现不同类型的终结点。为了实现MG和MGC之间的互操作,本协议将这些可选项组合成包(Packages),MGC可以通过审计命令(Audit)来确定终结点实现了哪一种类型的包。
包的定义由特性(Property)、事件(Events)、信号(Signals)和统计(Statistics)组成,这些项以及包含的参数分别由标识符(ID)进行标识。MG为了实现某种类型的包,则必须支持此包中定义的所有特性、事件、信号、统计以及信号和事件的所有参数类型。但对一个特定的特性或参数而言,MG可以仅支持其在包中所定义的数值集的一个子集。
包的定义方法参见本规范第11章,本协议定义的基本包类型参见本规范附录E。
6.命令
本协议定义了8个命令用于对协议连接模型中的逻辑实体(关联和终结点)进行操作和管理,命令提供了实现对关联和终结点进行完全控制的机制。
本协议规定的命令大部分用于MGC实现对MG的控制,通常MGC作为命令起始者发起,MG作为命令响应者接收。但是, Notify和ServiceChange命令除外。Notify命令由MG发送给MGC,而ServiceChange既可以由MG发起,也可以由MGC发起。本协议规定的命令参见表2,命令的使用方法参见本规范第6.2.1至6.2.8节。
表2 命令
Add
使用Add命令可以向一个关联添加一个终结点,当使用Add命令向一个关联添加第一个终结点时,同时就相当于使用Add命令创建了一个关联。
Modify
使用Modify命令可以修改一个终结点的特性,事件和信号。
Subtract
使用Subtract命令可以删除一个终结点与它所在的关联之间的联系。当使用Subtract命令删除一个关联中最后一个终结点与它所在的关联之间的联系时,同时就删除了这个关联。
Move
使用Move命令可以自动地将一个终结点从一个关联转移到另一个关联。
AuditValue
使用AuditValue可以获取有关终结点的当前特性,事件,信号和统计信息。
Auditcapabilities
使用Auditcapabilities可以获取MG所允许的终结点的特性,事件和信号的所有可能值的信息。
Notify
MG使用Notify命令可以向MG报告MG中所发生的事件。
ServiceChange
MG使用ServiceChange命令向MGC报告一个终结点或者一组终结点将要退出服务或者刚刚进入服务。MG也可以使用ServiceChange命令向MGC进行注册,通报其可用性,以及向MGC报告MG将要开始或者已经完成了重新启动工作。同时,MGC可以使用ServiceChange命令通知MG将一个终结点或者一组终结点进入服务,或者退出服务。
6.1 描述符
本协议规定描述符可作为命令的输入和输出参数。描述符由描述符名称和一些参数项组成,参数可以有数值。许多命令引用相同的描述符。
6.1.1 描述符参数
本协议定义描述符由特性参数组成,描述符的文本格式如下:
DescriptorName=<someID>{parm=value, parm=value….}
本协议规定描述符的值参数值具有“Full specified”、“Under-specified”和“Over-specified”三种属性。
1.Full specified:指定的描述符具有唯一、确定的值。
2.Under-specified:使用通配值 “CHOOSE”,允许命令响应方为该描述符选择任意一个所支持的值。
3.Over-specified:描述符具有多个可能的值列表,该列表指定了命令发起方对于这些值的优选权,命令响应方从该列表中选择一个值作为对命令发起方的响应。
6.1.2 Modem描述符
Modem描述符用于定义调制解调器的类型和参数。Modem描述符包含以下调制解调器类型:V.18, V.22, V.22bis, V.32, V.32bis, V.34, V.90, V.91, 同步ISDN, 并且允许进行扩展。缺省情况下,终结点中不包含Modem描述符。
6.1.3复用描述符(Mux)
多媒体呼叫时,媒体流是在一群承载通道上进行传输。Mux描述符将媒体和对应的承载通道联系起来。Mux描述符支持的复用类型包括:H.221、H.223、H.226、V.76以及一些扩展复用类型。Mux描述符的定义由复用类型以及被复用的输入终结点的TerminationID集合组成,例如:
Mux=H.221{ MyT3/1/2,MyT3/2/3,MyT3/3/6,MyT3/21/22}
6.1.4 媒体描述符(Media)
Media描述符用于描述所有媒体流特性的参数。媒体流特性参数可终结点状态描述符(TerminationState)和若干个流描述符(Stream)来描述。其中,TerminationState描述符与特定媒体流无关,用于描述终结点的特性,Stream描述符描述媒体流。本协议规定Stream描述符由StreamID进行标识。Stream描述符可分为本地控制描述符(LocalControl )、本地描述符(Local)和远端描述符(Remote)三种。为简便起见,本协议规定LocalControl、Local和Remote可以在一个Media描述符中进行定义。当这三种描述符在一个Media描述符中描述时,Stream描述符的StreamID通常假定为1。
这几种描述符之间的关系如下所示:
Media Descriptor
TerminationState Descriptor
Stream Descriptor
LocalControl Descriptor
Local Descriptor
Remote Descriptor
6.1.5终结点状态描述符(TerminationState)
TerminationState描述符包括业务状态(ServiceStates)特性、事件缓存控制(EventBufferControl)特性以及在包中定义的与特定流无关的终结点特性。其中,ServiceStates特性描述了终结点的状态,本协议规定终结点状态有以下三种:"test", "out of service" 和 "in service"。 “test”用于指示一个终结点正在处于被检测的状态,"out of service"用于指示一个终结点处于退出服务的状态,"in service"用于指示一个终结点正处于服务状态。TerminationState描述符的缺省值为"in service"。
EventBufferControl特性描述了检测到Events描述符中指定的事件后的处理方式,本协议规定处理方式有两种,一种是立即对事件进行处理,另一种是先对事件进行缓存再处理。
6.1.6 流描述符 (Stream)
Stream描述符用于指定一个双向流的参数。Stream描述符可分为LocalControl、Local和Remote描述符三种。本协议规定Stream描述符可用StreamID进行标识。通过在关联中的一个终结点上指定一个新的StreamID可以创建一个新的流。如果需要删除一个存在的流,则需要对该流原先所在的关联中的所有终结点设置如下:
1.LocalControl描述符中 ReserveGroup和ReserveValue参数为“false”。
2.Local和Remote描述符为空。
本协议规定StreamID由MGC分配,StreamID是MGC和MG之间的局部参数。本协议规定一个关联中具有相同StreamID的流是相互连接。
6.1.7 本地控制描述符(LocalControl)
LocalControl描述符包含模式属性(Mode)、预留组属性(ReserveGroup)、预留值属性(ReserveValue)和包中定义的某些与特定媒体流有关的终结点属性。
本协议规定关联中媒体流的Mode可分为“Sendonly”,“Receiveonly”,“Send/Receive”,“Inactive”和“Loopback”几种。接收/发送(Send/Receive)与媒体流的流向有关,其中,媒体流的流向是从关联的外部来进行确定。例如,如果某个媒体流的模式为“Sendonly”,则此流并不将接收到的媒体传送给关联。信号和事件均不受模式的影响。
预留属性Reserve决定了MG在收到Local和/或Remote描述符后的处理动作,Reserve属性包括ReserveValue和ReserveGroup两种属性,属性值为布尔函数,缺省值均为 “False”。
如果Reserve属性值为“True”,则MG在有可用资源情形下,要为Local描述符和/或Remote描述符中的所有可选特性(组)预留资源,并且在响应中返回已经预留了资源的特性,如果MG不能支持任何可选特性(组),那么返回的响应中的Locale描述符和/或Remote描述符均为空。
如果Reserve属性值为“False”,且Local描述符和Remote描述符存在,则MG为它们各选一个可选特性(组)。如果MG未给选中的特性(组)预留资源,那么MG则为其预留资源。相反,如果之前Reserve属性值为“True”且MG已经为选中的特性(组)预留了资源,则消息交换之后应释放先前预留的多余资源。处理完毕后,MG应向MGC发送Reply响应,响应中应给出Local描述符和Remote描述符中被选中的特性/特性组。如果MG没有足够的资源来支持任何指定的可选特性(组),则返回510出错响应,错误原因为“Insufficient Resource”。
新设置的LocalControl描述符将完全替代先前设定的LocalControl描述符。因此,如果想要保留现有控制描述符以前的信息,则MGC必须在新设置描述符中包含这些信息,如果想删除LocalControl描述符中的某些信息,则只需在Modify命令中重新发送删除了不需要信息的LocalControl描述符。
6.1.8 本地和远端描述符(Local和Remote)
Local描述符针对MG接收到的媒体进行定义,Remote描述符对MG发出的媒体进行定义。
利用Local和Remote描述符,MGC为MG预留和承接用于信息流和终结点的媒体编解码所需的资源,MG则在响应中通过这些描述符返回它实际预留的资源。如果一些必选属性未在MG发出的请求中给出,那么MG要在响应中添加这些属性。
如果本协议采用文本方式编码,则Local和Remote描述符由RFC 2327所定义的SDP的会话描述来构造。本协议规定的会话描述的语法规定与RFC 2327的语法规定在某些方面不同:
·“s=”行, “t=”行和“o=”行可选;
·可用通配值“CHOOSE”替代单个参数值;
·可用可选参数方式替代单个参数值。
如果一个描述符包含多个会话描述,则以“v=”行作为分隔行,否则“v=”行为可选项。具体实现应该参照RFC2327中的规定。
如果本协议采用二进制方式编码,则Local和Remote描述符由属性组组成,属性组可参见本规范附录C。属性组中包含会话描述参数。
本协议规定Local和Remote描述符的值具有以下五种属性:
· Unspecified:例如描述符缺省;
· Empty;
· Underspecified:属性值为通配值CHOOSE;
· Full specified: 属性值具有唯一、确定的值;
· Overspecified:描述符具有多组属性或属性具有多个属性值。
当命令由MGC发送给MG时,本协议规定按如下规则对Local和Remote描述符进行解释:
1. 如果命令中Local或Remote描述符的值为“Unspecified”,则视为必选参数丢失,要求MG使用此描述符原先的值,如果原先未规定此描述符,那么以后处理命令时忽略该描述符;
2. 如果命令中Local或Remote描述符为“Empty”,表明MGC请求MG释放接收到的媒体流(或发送出的媒体流)的所有预留资源;
3. 如果命令中Local或Remote描述符包含多组属性,或一组属性含多组值,属性值的选择按优先顺序递减;
4. 如果命令中Local或Remote描述符包含“Underspecified”或“Overspecified”的属性,则要求MG为每个属性选择一个或多个所支持的值,并且,“Overspecified”属性的属性值选择优先顺序递减。
在遵循以上规则的前提下,MG接收到Local或Remote描述符后采取的操作取决于LocalControl描述符中的ReserveValue和ReserveGroup的属性值。
如果ReserveGroup和ReserveValue为“True”,则要求MG为MGC预留任何一组MG所能支持的属性组资源。
如果Local或Remote描述符含多组属性,且ReserveGroup为“True”,则要求MG为MGC预留任何所能支持的媒体流编解码资源。例如,如果Local描述符中包含两组属性,一组是G.711A-律的音频包,另一组是G.723.1的音频包,则MG必须预留既能对G.711A-律的音频包又能对G.723.1的音频包进行编码所需的资源。但MG不必同时预留这两种音频包的解码所需的资源。ReserveValue的情况与ReserveGroup类似。
如果ReserveGroup为“True”或ReserveValue为“True”,本协议规定按如下规则进行处理:
1.如果MG没有足够的资源支持MGC对Local和Remote资源的所有请求,则MG预留的资源至少应能支持Local和/或Remote描述符中所定义的一个资源请求;
2.如果MG不能支持MGC对Local或Remote描述符的任何资源请求,则返回的响应中Local或Remote描述符应为空;
3.如果MGC请求中包含Local和Remote描述符,则MG对MGC的响应中应返回所有为MGC预留的资源的属性组和属性值组的描述符。如果MG不能支持MGC对Local(或Remote)描述符的任何资源请求,则返回的Local(或Remote)描述符为“Empty”;
4.如果LocalControl描述符中的Mode属性值为“ReceiveOnly”、“SendReceive”或“Loopback”,则MG应准备接收在其响应中包含的任何编码方式的媒体流。
如果ReserveGroup为“False”且ReserveValue为“False”,本协议规定MG按如下规则为Local和Remote描述符中各选择一个值:
1.在能至少支持Remote描述符中一个值的Local描述符中选择第一个可选值;
2. 如果MG不能支持Local描述符和Remote描述符的任何值,则返回错误响应510,错误原因为“Insufficient Resource”。
3.MG在响应中返回其所选择的Local和Remote描述符的值。
新设置的Local或Remote描述符将完全替代先前MG中的Local和Remote描述符。如果想保留以前Local和Remote描述符的信息,则必须在新设置的Local和Remote描述符中保留原先的描述符信息。如果想删除Local和Remote描述符中的某些信息,则MGC只需通过Modify命令向MG重新发送此描述符,但该描述符中不必包含需要删除的描述符信息。
6.1.9 事件描述符(Events)
Events描述符包含RequestID 属性以及MG要求检测和报告的一组事件,通过RequestID可以将事件请求命令和事件发生通知Notify命令关联起来。请求事件包括传真音、摘机/挂机和Hook Flash等。
Events描述符中的事件由事件名(Eventname),StreamID,KeepActive标记和其它一些可选参数组成,其中StreamID和KeepActive标记为可选参数。事件名包括包名(PackageName)和EventID两部分,描述方式为PackageName/EventID。EventID 可使用ALL通配符,当EventID等于“ALL”时用来检测特定包中的所有事件。当SteamID的缺省值为0,表明要检测的事件与特定的媒体流无关。事件可以包含参数,这些参数可对单个事件进行描述,有关事件的详细定义可参见本规范附录E中各个包的定义。
如果Events描述符中包含“DigitMap Completion”事件,则Events描述符中的EventDM参数用来携带与DigitMap相关的字符和数值。有关DigitMap的内容可参见6.1.14。
当处于激活状态的Events描述符中的事件发生时,缺省地,MG向MGC发送Notify命令进行报告。事件的识别可能导致停止当前的激活信号,或导致当前的Events和/或Signals描述符被替换。除非Events描述符被另一个Events描述符所替换,否则,在事件识别出后,原Events描述符仍保持激活状态。
如果EventBufferCon
展开阅读全文