1、抓包看 H.248呼叫流程H.248协议简介 H.248协议,也叫 MeGaCo协议,是媒体网关控制器( MGC)与媒体网关( MG)之间的一种媒体网关控制协议。与 MGCP协议相比, H.248 协议可以支持更多类型的接入技术并支持终端的移动性,除此之外, H.248协议最显著之处在于能够支持更大规模的网络应用,而且更便于对协议进行扩充,因而灵活性更强,已逐渐取代 MGCP发展成为媒体网关控制协议的标准。基本概念:终结点 终结点( Termination): 终结点是 MG 上的逻辑实体,它发起和 /或接收媒体和 /或控制流。终结点用一些属性来描述,如媒体流、 modem 和承载能力等属性,
2、这些属性组成了一系列描述符。 Termination的分类 物理终结点( Physical Termination) 在网关制造出来之后就存在并一直存在下去的物理端点 映射到中继线、模拟线等 临时终结点( Ephemeral Termination) 在呼叫中临时分配,并持续到呼叫结束时候的逻辑端点 映射到 RTP端口等 ROOT终结点 物理终结点 代表整个网关,可以用于修订网关属性基本概念:关联 关联( Context) : 关联是一些终结点具有相互联系而形成的结合体。有一种特殊的关联称为空关联( Null),它包含所有那些与其它终结点没有联系的终结点。例如,接入网关中所有的空闲线路都被看作
3、空关联中的终结点。 Context的分类 NULL Context(空关联) 当网关中没有建立任何关联,则所有的物理 Terminations都将归属于 NULL Context。例如,在一个接入网关刚刚注册的时候,所有用于描述用户线的 Terminations都将归属于 NULL Context。 NULL Context只有逻辑概念。 注意:端点从 NULL ContextContext 不是使用 Move操作。基本概念 命令( Command): 协议定义了一些命令用于对协议连接模型中的逻辑实体(关联和终结点 )进行操作和管理。命令提供了本协议所支持的最精微层次的控制。例如,通过命令可以
4、向关联增加终结点、修改终结点、从关联中删除终结点以及审计关联或终结点的属性。命令提供了对关联和终结点的属性的完全控制;包括指定要求终结点报告的事件、向终结点加载的信号以及指定关联的拓扑结构(谁能听见 /看见谁)。 描述符( Descriptor): 协议中的一种语法元素,用来描述一组相互联系的特性。例如:通过在一个命令中包含适当的描述符,控制器能够设置 MG 中的媒体流特性。描述符可作为命令的输入和输出参数。一个空描述符只由其描述符名组成,后面没有项目列表。常见描述符有:媒体描述符( Media)、事件描述符( Events)、信号描述符( Signals)、审计描述符( Audit)、业务改
5、变描述符( ServiceChange)、号码采集规则描述符( DigitMap)、统计描述符( Statistics)、包描述符(Packages)、被观察事件描述符( ObservedEvents)、拓扑描述符(Topology)、错误描述符( Error)等。基本概念 事务( Transaction): MG 与 MGC 之间的一组命令构成事务。一个事务可以由一个或多个动作(Action)组成,每个动作又由作用范围局限在同一个关联中的一个或多个命令组成。 请求( Request)和响应( Reply): MGC 和 MG 之间进行各种层次上的交互(如事务交互、动作交互和命令交互等)。每次
6、交互包含一个请求和一个响应。请求由发送方发起;接收方对请求进行处理,并将处理结果包含在响应中返回给发送方。通常MGC 发起请求而 MG 做出响应。但相反的情况也是可能的。H.248协议的消息结构H.248的八个命令命令名称 描 述Add MGCMG , 增加一个 终 端到一个关 联 中,当不指明 ContextID时 ,将生成一个关 联 ,然后再将 终 端加入到 该 关 联 中。 Modify MGCMG ,修改一个 终 端的属性、事件和信号参数。 Subtract MGCMG ,从一个关 联 中 删 除一个 终 端,同 时 返回 终 端的 统计 状 态 。如关 联 中再没有其它的 终 端,将
7、 删 除此关 联 。 Move MGCMG ,将一个 终 端从一个关 联 移到另一个关 联 。 AuditValue MGCMG , 获 取有关 终 端的当前特性,事件、信号和 统计 信息。 AuditCapabilities MGCMG , 获 取 MG 所允 许 的 终 端的特性、事件和信号的所有可能 值 的信息。 Notify MGMGC , MG将 检测 到的事件通知 给 MGC。 ServiceChange MGCMG 或 MGMGC , MG使用 该 命令向 MGC报 告一个 终 端或者一 组终 端将要退出服 务 或者 刚刚进 入服 务 。 MG也可以使用 该 命令向 MGC进 行
8、注册并且向 MGC报 告 MG将要开始或者已 经 完成了重新启 动 工作。同 时 ,MGC可以使用 该 命令通知 MG将一个 终 端或者一 组终 端 进 入服 务 或者退出服务 。 呼叫流程图流程说明( 1)1) MG1 检测到用户 User1 的摘机,将此摘机事件通过 Notify 命令上报给 MGC;2) MGC 向 MG1 返回 Reply;3) MGC 向 MG1 发送 Modify 消息,向 MG1 发送号码表( Digitmap);请求MG1 放拨号音( cg/dt);并检测收号完成( dd/ce)、挂机( al/on)、拍叉簧( al/fl)事件;4) MG1 向 MGC 返回
9、Reply;5) MG1 上的用户 User1 拨号, MG1 根据 MGC 所下发的号码表进行收号,并将所拨号码及匹配结果用 Notify 消息上报 MGC;6) MGC 向 MG1 返回 Reply;7) MGC 向 MG1 发送 Add 消息,在 MG 中创建一个新 context, 并在 context 中加入用户 User1 的 termination 和 RTP termination,其中 RTP 的 Mode 设置为ReceiveOnly,并设置语音压缩算法;8) MG1 为所需 Add 的 RTP 分配资源 RTP1,并向 MGC 应答 Reply 消息,其中包括该 RTP1的 IP 地址,采用的语音压缩算法和 RTP 端口号等;9) MGC 向 MG2 发送 Add 消息,在 MG2 创建一个新 context,在 context 中加入用户 User2的 termination 和 RTP termination,其中 Mode 设置为 SendReceive,并设置远端 RTP 地址及端口号、语音压缩算法等 ;10) MG2 为所需 Add 的 RTP 分配资源 RTP2,并向 MGC 应答 Reply 消息,其中包括该 RTP2的 IP 地址,采用的语音压缩算法和 RTP 端口号等 ;