《H.248程序员手册.doc》由会员分享,可在线阅读,更多相关《H.248程序员手册.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、RADVISION的Megaco/H.248工具包程序员指南申明2001 RADVISION有限公司本出版物中所有知识产权为RADVISION有限公司拥有,并受美国版权法和其他适用的版权法等国际条约保护。RADVISION有限公司保留所有未明确授予的权利。本出版物的任何部分不得以任何形式被应用于制作任何未经事先书面批准的衍生作品。RADVISION公司保留修订和更改本出版物的权利,且无义务向任何人通知此类修改或变更。RADVISION公司可以在任何时间进行改进或变更文档中的产品和程序。如果想了解更多的产品和信息,请联系RADVISION有限公司。RADVISION注册商标被登记在美国,除非另有
2、说明,否则不能使用于其他地区。欲了解更多信息,请联系RADVISION或您当地的经销商或分销商。1.0版,2001年6月 出版目录关于本手册 7相关文档 71 工具包概述介绍 9软件包 9什么是的Megaco/H.248? 9的Megaco/H.248基础知识 10简介RADVISION工具包 12产品规格 13产品特点 14符合规格的Megaco/H.248 14设计工具包 15差异化特性 16的Megaco/H.248堆栈架构 17语义层 18原始图层 19原料层 19核心层 19工具包的概念 20多个实例 20多线程和线程安全操作 20调用和回调 20非阻塞请求/应答交互 202 资料来
3、源参考API的命名约定 21句法 21主要功能动词 22工具包库和目录 233 设置和运行演示介绍25如何示范工程 26演示可执行文件 26媒体网关控制器命令行 26媒体网关命令行 27RVPhone命令行 28程序运行示例程序 294 创建应用程序介绍 31媒体网关的初始化/关机 31样品初始化/关机代码 31媒体网关控制器的初始化/关机 34样品初始化/关机代码 34建筑和发送的Megaco/H.248交易 36全力打造方法 37罐装生成方法 425 Media设备管理器介绍 45Media设备管理器模型 46媒体设备管理器API 46主要的操作使用Media设备管理器当 47初始化 48
4、初始化样例代码 48播放信号 51汇报活动 51统计报告 51创建,修改,释放和连接媒体流 52建立媒体流 52修改和释放媒体流 53连接媒体流 53使用选择终止回调函数 53样品的Megaco呼叫流程 546 日志介绍 61侦听器函数 62设置日志 62因果过滤器 62示例 63 关于这本手册 本手册介绍的Megaco/H.248工具包的组成和详细描述了在用户程序中如何实现RADVISION的Megaco/H.248堆栈 该Megaco/H.248工具套件包含了Megaco/H.248栈,一套 API,示例代码和相应的用户文档。该工具包提供给那些想开发媒体网关(MG)或媒体应用的程序开发者。
5、Megaco/H.248协议正在被IETF和ITU-T共同定义和规范。相关文档以下文档也与RADVISION的Megaco/ H.248工具包一起被提供 RADVISION的Megaco/H.248工具包参考图书馆的 提供有关API函数和数据类型的详细信息。 RADVISION SDP参考指南。 RADVISION的RTP / RTCP编程器和参考指南。 详细信息和安装说明。 1工具包概述介绍:该工具包Megaco/H.248是为那些想要开发媒体网关(MG)或媒体网关控制器(MGC)的应用程序的开发者提供的。该Megaco/H.248协议由IETF和ITU-T标准组织定义,并且被广泛遵守。注为
6、了清楚起见,H.248是ITU-T的协议的名称,MEGACO是IETF协议的名称。 在ITU-T和IETF共同制定了协议规范。软件包RADVISION公司的Megaco/H.248工具包一共提供的以下软件:工具包库:MEGACO/H.248,SDP和RTP / RTCP协议 一个包括演示一个媒体网关控制器和媒体网关示例的应用程序 RvPhone模拟手机模拟器什么是MEGACO/H.248Megaco/H.248 说明了媒体网关(MG)和媒体网关控制器之间的联系。媒体网关用于转换电路交换语音到基于包的通信流量,而媒体网关控制器用于规定这种流量的服务逻辑。Megaco/H.248 通知 MG 将来
7、自于数据包或单元数据网络之外的数据流连接到数据包或单元数据流上,如实时传输协议(RTP)。从 VOIP 结构和网关控制的关系来看,Megaco/H.248 与 MGCP 在本质上相当相似,但是 Megaco/H.248 支持更广泛的网络,如 ATM。Megaco/H.248 中有两个基本组成部分:终端(termination)和上下文(context)。 Termination 表示进入和离开 MG 的流(例如,模拟电话线路,RTP 流或 MP3 流)。Termination 具有一些属性,如最大活动缓存容量,MGC 可对其进行检查和修改。Termination 可以被置于 context 中
8、。当有两个或更多 Termination 流被混合或连接在一起时就需要定义 context。常规的活动 context 可能会有一个物理 Termination (比如说,DS3 中的一个 DS0)和一个暂时Megaco/H.248 基本概念 Termination:类似MGCP中的Endpoint概念,不过两者的标识符不同,Endpoint使用类似电子邮件的格式来标识,而Termination使用Termination ID来表示,Termination ID用一个十六进制字串来表示,也可以使用通配符表示。 Context: 一个Context就是一些Termination间的联系。 它描述
9、了Termination之间的拓扑关系以及媒体混合/交换的参数。Context由一组Termination组成。一个Context可以包含多个Termination,一个Termination在同一时刻只能属于一天Context,一个Context中至少要包含一个Termination。Context用一个Context ID来标识,在MG范围内唯一。 Transaction:是指MGC和MG之间的一次消息交互,用Transaction ID表示,该值由消息的发起方分配。Transaction的第一消息为TransactionRequest消息,对方可以回复TransactionReply消息
10、来结束这个Transaction也可以回复TransactionPending消息告诉发起者TransactionRequest消息已经收到,正在处理,无须重发。 Action:有Context属性和一组Commands组成;一个消息中可以有多个Actions,每一个Action中通常包含一个Context ID; Package:和MGCP中的Package概念类似,是为了对H.248进行扩展,RFC3525的附录E中定义了一些基本的Package,其它扩展Package在另外相关的文档中定义,每一个Package有一个字符串作为名字标识,由IANA进行统一管理。Pakcage就像一个名字空
11、间,把一些不同的属性分隔开来;Package中可以包含Property,Signal,Event,Statistics等,它们也有相应的Id来标识自己描述符(Descriptor) 媒体描述符(Media):描述所有的媒体流,包括一个终结点状态描述符和多个流描述符。 终结点状态描述符(Termination State):与媒体流无关,表明业务状态特性和事件缓存特性,终结点状态-Test, in service, out of service。 流描述符(stream):描述单个双向流:本地流的特性,远程流的特性,包括本地控制描述符、本地描述符和远程描述符。 本地控制描述符(local con
12、trol):媒体流特有的属性模式,receive-only/send-only/send-receive/inactive。 本地描述符(Local):描述MG接受到的媒体的编码格式。 远端描述符(Remote):描述MG发出的媒体的编码格式。 事件描述符:包括RequestID和一组MG需要检测和报告的事件。 调制器描述符(Modem):对调制器的类型和参数进行定义。 复用描述符(Multiplex):将媒体和对应的承载通道联系在一起。 事件缓存描述符(EventBuffer):一系列需要检测和缓存的事件,对检测到的事件的处理模式。 信号描述符(Signal):MG应用于终结点的信号集 审计
13、描述符(Audit):向MG指示要进行审计的信息,一个其他描述符的集合。 业务改变描述符(ServiceChange):只能用于ServiceChange命令,描述改变的模式、原因、时间等 数图描述符(DigitMap):规定作用于MG中的拨号方案,用于检测和报告在终结点处接收到的数字 统计描述符(Statistics):描述关联中终结点的统计属性。 包描述符(Packet):用于AuditValue命令,返回终结点实现的包的列表。 被观察事件描述符(ObservedEvent):向MGC报告检测到的事件 拓扑描述符(Topology):描述关联中终结点的流方向(T1,T2,联络) 错误描述符
14、(Error):向MGC报告错误入门套件RADVISION公司的Megaco/H.248工具包包括以下组件:Megaco/H.248堆栈 协议实现 RADVISION的实施的Megaco/H.248和建议制定的Megaco/H.248的MGC和MGS Media设备管理器 在RADVISION公司的Megaco/H.248工具包中包括媒体设备管理(MDM),它是用来构建媒体网关应用的。 MDM解释的Megaco/H.248信息的语义。 媒体网关所构建的MDM应用不需要处理Megaco/H.248消息语法,他们只需要处理应用程序特定的逻辑。 这将减少开发时间和开发难度。SDP组件RADVISIO
15、N实现了用SDP协议的多媒体会话通告,多媒体会话邀请和其它形式的多媒体会话启动。 一个多媒体会话的定义作为一组存在于某一时间段的媒体流。RTP / RTCP元器件RADVISION实现了通过RTP / RTCP协议发送和接收媒体分组数据规格RADVISION公司的Megaco/H.248工具包是基于以下规格:IETF RFC 3015ITU-T制定的H.248IETF RFC 2327会话描述协议2000 十一月MEGACO MIB草案注有关规格的信息,请参阅 Megaco协议的以下网址:http:/www.ietf.org/rfc/rfc3015.txt。http:/www.itu.int/
16、itudoc/itu-t/rec/h/h-248.html。产品特点该工具包是兼容的Megaco/H.248规格和支持:媒体网关和媒体网关控制器应用程序。ABNF(文字)编码/解析。TCP和UDP传输。中期AH机制,IPv4网络缺乏IPSEC,以及IPSEC。 这种机制提供了一种手段,以不安全的网络身份验证信息。标准封装。下面列出所有的标准软件包:基本(规范性附录)封装,包括:通用基根音频发生器音检测基本的DTMFDTMF检测呼叫进程音发生器呼叫进程音检测模拟线路监控基本连续性网络RTPTDM电路额外的软件包IP电话(附件草案)扩展包。非标准软件包,可以通过一个标准的API被添加。MIB该工具
17、包支持:RADVISION核心私有MIB工具包设计:该工具包提供了以下设计特点:ANSI C的编写,遵循面向对象的方法。 每个对象类型有关联函数构造和析构的对象。此外,每个对象都有访问功能操纵对象。多操作系统支持,包括:Win32的SolarisLinuxPSOSVxWorksOSE多层的接口具有多个接口层,组件,可访问高和低级别的水平。 较低级别的API使应用程序有更多的控制,但需要开发者对其有更详细的了解。 高层次的API处理细节要求较少,但提供较少控制。支持多种协议栈的实例支持多线程线程安全操作 对于在多个堆栈实例的详细信息,多线程和线程安全的操作,请参见本节 工具包辨证特点RADVIS
18、ION公司的Megaco/H.248 Toolkit提供这些独特的功能:Media设备管理器 构建媒体网关的媒体设备管理器应用程序和解释Megaco/H.248消息的语义。“封装”消息这个设备为那些想开发Megaco/H.248消息的开发者提供了一个快速的方法对于全功能媒体网关和媒体的示例代码网关控制器应用示例源代码演示了如何开发与应用该工具包的Megaco/H.248。 这些功能齐全的样品也帮助了测试和调试与开发其他应用程序的情况下使用该工具包。登录日志功能使应用程序能够收集,查看正在发生的事件,如错误,进程信息,入站和出站邮件,并且调试和跟踪信息。RVPhone一个Java应用程序,它模拟
19、了一个模拟电话。 该RVPhone可以与样品MG放到到一起使用帮助客户测试应用程序。Megaco/H.248堆栈架构体系结构的设计该堆栈的Megaco/H.248由四个软件层构成,语义层原始图层原料层核心层语义层语义层处理Megaco/H.248命令的语义并打破了语义成与协议无关的概念,例如启动/停止信令创建/修改/删除。该Megaco/H.248语义层是由媒体设备实施管理器(MDM)。 在MDM API隐藏的Megaco的语法和语义/H.248消息,并提供了一个抽象的接口应用程序开发人员不需要知道的Megaco/H.248消息,因此,用户应用程序是不知道这些消息的。 媒体网关/媒体网关控制器
20、用户应用程序知识产权TCPUDP解析器/编码器的API运输的API原始的API核心API原始图层原料层核心层媒体设备管理器API语义层H.248消息和用户应用程序表示到的Megaco/H.248堆栈当一个事件发生在用户应用程序。 因此,实现一个MG具有接口最小的简单应用程序代码是必需的。原始图层原始层API提供接口的解析器/编码器的API,并运输Megaco/H.248的API。 该解析器/编码器API函数的使用用于创建,销毁,访问和设置上的交易信息。 此外,API提供了一种机制,用于编码和解码这些交易进入/出的Megaco/H.248消息格式。在原始层的Megaco/H.248交通API提供
21、了可靠传输的MG和MGC之间的Megaco/H.248消息。 该原始图层进行重复交易拆卸和交易转播服务。原料层该生的Megaco/H.248 API实现了原始图层,并提供界面同时接收和发送。 与原始的API接口产生的Megaco/H.248消息,通过用适当的回调注册,用户应用程序有一个选项访问在接收路径或发送路径Raw格式的消息,如下:在接收路径,当收到消息时,用户应用程序可以利用该消息,检查或更新在它被处理之前,然后,无论是由它返回的处理堆叠,或绕过堆栈。在发送路径中,当一个消息被发送时,用户用程序可以访问或更新信息。 然后应用程序可以处理该消息本身,丢弃消息或消息返回到堆栈进行传输。核心层
22、核心层是RADVISION的媒体网关工具包的最底层核心API一组功能,它隔离更高级别的API体现了Toolkit组件和处理器和操作系统用户应用程序的依赖关系。多个实例Megaco/H.248堆栈的多个实例可以创建在相同或不同的进程空间。 多个实例允许多个逻辑和MGC共存于一个单一的进程空间。多线程和多线程安全操作每个堆栈实例是多线程和线程安全的。 多线程和线程安全功能对用户应用透明的。多线程协议栈可并行处理事务,从而减少往返延迟。 在多处理器环境中,多线程提供了真正的并行处理从而使网络吞吐量可扩展增加。 在单处理器环境中,多线程可以通过减少或消除头阻塞现象来提高整体吞吐量。在多线程的堆栈情况下
23、,协议栈提供了机制,线程安全。 每叠都有一个线程池。 用户构建一个堆栈实例时配置的线程池中的数量。该协议栈的用法是由底层操作系统提供互斥锁保护所有数据结构。这些锁序列化访问是数据结构中堆栈的处理的关键部分。拨号和回复所有层的API提供了一套功能从用户应用程序调用到堆栈和一组从堆栈回调函数的用户应用程序。 用户应用表明,它希望被通知有关某些事件注册一个回调函数。请求/应答交互请求/应答交互可能会阻止(顺序)或非阻塞(非顺序)。 例如,当堆叠接收到一个请求,并在用户应用程序的回调被调用时,用户应用程序可以从回复立即回调(阻塞发送),或者从回调返回并发送从任何线程(非阻塞发送)任何时间回复。2 参考
24、资源API命名规则在RADVISION公司的Megaco/H.248工具包中,API函数有一个被定义的方式,这种定义方式可以使用户理解准函数和它们的数据类型。句法RV -表示这是一个RADVISION特有的功能。TypeName 该函数相关联的该类型的名称(大小写混合的)VERB通常情况下,常用功能的动词之一主要的功能动词有如下几个ConstructDestructGetSetRegisterUnregister3设置和运行演示介绍:演示的目的是展示应用程序的开发与Megaco/H.248工具包的工作原理,从而使开发人员能够验证操作该Megaco/H.248堆栈在他们的运行环境中。该演示包括:
25、megacoMgc样本媒体网关控制器的应用。megacoMg样本媒体网关应用程序。RVPhone一个基于Java的终端仿真器,一个支持的端点协议(EPP)“黑”手机模拟器, RVPhone可以连接到示例媒体网关和使用标准电话的信令和音频功能。注 端点协议是一个模拟媒体网关和一个模拟电话之间的相互作用的专有RADVISION协议。如何操作演示RVPhone采用EPP协议的媒体网关进行通信,媒体网关使用Megaco/H.248与媒体网关控制器进行通信的。 编译后的媒体网关和媒体网关控制器与RVPhone携手合作提供一个全功能的环境测试的Megaco/H.248堆栈和RTP。4 创建应用程序介绍本章
26、介绍了任何实施必要的基本代码即RADVISION的Megaco/H.248堆栈。使用RADVISION工具包创建一个的Megaco/H.248应用1。 初始化Megaco/H.248系统。2。 注册登录听众。 (可选)3。 构建堆栈。4。 注册在堆栈回调。5。 构建本地和远程的实体。6。 寄存器堆栈与系统的Megaco/H.248。5 多媒体设备管理器介绍媒体设备管理(MDM)是的Megaco/H.248工具包用于构建媒体网关应用的一部分。 MDM解释Megaco/H.248消息的语义。 媒体网关应用程序的建立是不需要MDM处理Megaco/H.248消息的,他们只需要处理应用程序特定的逻辑。
27、因此,使用MDM,媒体网关的应用程序使用内置较少的源代码,而不是使用写在API的原始图层的应用程序。 这减少了应用程序开发时间并减轻了开发难度。MDM管理终端被放置在上下文中。 它的任务是在MDM中找出哪些媒体流需要连接到哪个媒体流,并把这些信息生成断开或连接命令。MDM提供了所需的Megaco/H.248语义级功能协议,如上下文管理,端点通配符,事件过滤,位图模式匹配和事件缓冲。 Megaco命令 Add:MGCMG,向一个关联添加一个终结点,当向一个关联添加第一个终结点时,同时创建一个关联。 Subtract:MGCMG,解除一个终结点与关联的联系,并把该终结点放入空关联,当删除关联中最后
28、一个终结点时,同时删除了这个关联 。 Move:MGCMG,将一个终结点从一个关联转移到另一个关联,不能用来将终结点从空关联中移走和移入。 Modify:MGCMG,修改一个终结点属性、事件和信号,指示检测相关的事件 Notify:MG-MGC,报告媒体网关中所发生的事件 AuditValue:MGCMG,获取与终结点的当前属性、事件、信号。 AuditCapability:MGCMG,获取媒体网关所允许的终结点特性、事件和信号的所有可能值的信息 ServiceChange:MG-MGC/MGC-MG,报告终结点将要退出服务或者恢复服务,MGC指示应退出服务或恢复服务的终结点,报告终结点的能力
29、发生了改变,MGC将对MG的控制权移交给其他的MGC。整个媒体流的流程如下:(1)主叫摘机,MG检测到后通过Notify命令将事件(Off-Hook)报告给MGC;(2)用户拨号,MG将收到的号码通过Notify命令报告给MGC;(3) MGC分析收到数据决定建立MG1到MG2的一个Context,并通过Add命令让MG1将主叫端口加入一个Context,向主叫送拨号音。因为MGC还未获得包含特定媒体流接收方的属性,所以媒体流的Mode是ReceiveOnly,并且在命令中,未知的参数用参数通配符“$”表明,意思为“选择”,具体的参数值将由MG1在下一条Reply中填入具体的值。(4) MG1
30、接受新的终端(Termination),并把自己的IP和UDP端口填入。(5) MGC分析被叫号码,找出被叫端口,决定建立MGC到MG2的一个新的Context,并通过Add命令让MG2将主叫端口加入一个Context。(6) MG2把自己的IP和UDP端口填入。(7) MGC命令MG1将被叫端口加入前面所说的那个Context 。MGC命令MG1向主叫送回铃音,向被叫送振铃音;(8) MG1再向MGC发送回应消息。(9)被叫摘机,MGC命令MG1连接主被叫,把媒体流的Mode从ReceiveOnly修改为SendReceive,并停止回铃。(10) MG再向MGC发一个Reply。此后,双方
31、进入通话。(11)(12)(13)(14)主/被叫挂机(由于主叫挂机和被叫挂机返回的命令是一样的,下面只列出被叫挂机的情况),MGC命令MG1和MG2释放主被叫连接,将主/被叫端口放空Context,此处只列出MGC对MG1的媒体流。至此,MG1与MGC的连接释放,媒体流终止。6 登陆介绍RADVISION的Megaco/H.248工具包日志组件使用户可以收集和查看有关应用程序正在发生的事件和运行进程信息。 这些信息包括错误,调试和跟踪信息。提供日志组件的装置,用于记录事件。 它还提供了应用程序开发的API函数,侦听器函数该工具包提供了以下标准的监听功能:rvLogStdio()此函数通过一个
32、文件描述符三角参数函数发送日志记录rvLogFile()该函数发送一个日志记录到一对名叫rv1.txt和rv2.txt文件。该功能记录N行到一个文件,然后切换其他文件,并写入N行到该文件,然后切换回到第一个文件,依此类推。线(N)的数目为通过在监听器的构造函数中的数据参数。建立日志用户应用程序需要指定以下内容:粗效过滤器,这表明该日志机制的类型为事件收集。一个或多个监听程序包括:收集到的函数变化传递到信宿的信号原因滤波器下面的日志级别。表6-1变量 级别RV_LOGMASK_ALL 记录一切RV_LOGMASK_NONE 不记录任何东西RV_LOGLEVEL_FATAL 登录致命错误RV_LO
33、GLEVEL_ERROR 记录错误RV_LOGLEVELWARNING 记录警告。RV_LOGLEVEL_ENTER 跟踪一个公共函数RV_LOGLEVEL_LEAVE 跟踪一个公共函数您可以指定使用RVLogListener监听变化和精滤。RvLogListener提供了一种方法,用户根据日志需要来设置应用程序的输出信息。例如,输出可以是显示屏幕,或从嵌入式系统到跨UDP网络另一个系统。RvLogListener包含过滤和输出信息。注册一个RvLogListener对象应用的过滤功能,所有后续日志记录。日志记录相匹配的侦听器触发的过滤器监听事件发送到指定的接收器。每个事件被捕获在RvLogRecord,其中包含:主题名称生成该事件的线程的名称。时间戳日期和时间发生了此事件。日志级别其中一个日志级别。文本事件的描述。