浅谈H.248协议及其CDR的合成与分析

2022-09-11

1 H.248协议概述及消息结构

1.1 协议概述

H.248协议,是媒体网关控制器 (MGC) 与媒体网关 (MG) 之间的一种媒体网关控制协议,这个协议是一项ITU—T与lETF合作结果的新标准。与MGCP协议相比H.248协议可以支持更多类型的接入技术并支持终端的移动性,除此之外,H.248协议最显著之处在于能够支持更大规模的网络应用,而且更便于对协议进行扩充,因而灵活性更强,已逐渐取代M G C P发展成为媒体网关控制协议的标准。

H.248消息可基于UDP/IP传输,此外还可基于其它多种传输协议传输,如承载在l P网络上的T C P、S C T P和M 3 U A,承载在A T M上的M T P 3-B等。H.2 4 8协议传输层可以是承载在I P上的U D P/T C P, S C T P和承载在A T M上的M T P 3-B。H.248协议假设其下层的传输网络是不可靠的,因此事务的状态和可靠性由协议本身实现。

1.2 消息结构

H.248协议发送或接收的信息单元称为消息。在H.2 4 8协议中,一个或多个命令被封装成一个消息进行发送或接收。H.248消息可以是二进制格式和文本格式编码。采用二进制编码时,使用I T U-T X.6 8 0 (A S N.1) 定义的规范描述,使用X.690定义的BER规则编码;采用文本方式编码时,遵循R F C2234 ABNF规范。MGC必须支持两种编码格式,M G可能支持其中任何一种或两种方式。

2 H.248合成的基本原理和实现算法

2.1 H.248合成的设计要求

首先,介绍一下H.248监测模块基本消息处理过程。

采集卡捕获到的数据首先保存在消息缓存中,解码器从消息缓存中取出消息逐条进行解码,获得呼叫信息;这些信息按照协议类别交给呼叫合成器进行呼叫合成,得到每个协议的CDR集合,保存在CDR缓存中,根据用户需要进行显示。根据相关通信测试仪表测试规范的要求,H.248模块CDR合成显示的功能主要有:C D R类别、终端J D、开始时间、接通时长、应答时长、呼叫状态、错误码等。

2.2 H.248合成的基本算法及原理

通常来说,呼叫合成是基于命令的,为了提高性能要求,在这里我们对H.248协议模块的合成采用的基本思想是对呼叫流程和现实情况的深入分析。当一个解码结果对象到来时,首先检查其关联ID是否为空,因为关联为空时,一定处于终端呼叫的主叫侧的第一阶段。这时使用终端ID对CDR缓存进行一次检索, 如果找到了,说明这个消息属于某一个C D R,如果没有,就要新建一个C D R。

如果来的解码结果对象关联ID不为空,那要进一步检查它是否含有增加请求 (ADD_REQ) ,如果是,那这一定是正在添加终端的过程,他可能是一个新呼叫的开始 (如中继呼叫) ,也可能是终端呼叫的第二阶段,这时要先使用终端lD进行一次检索,如果找到,他就属于终端呼叫的一个解码结果对象,如果没有,这时要根据通配符情况进行新建C D R。

如果关联ID不为空,也不是增加请求,这时我们还需要一个相同事务ID的增加响应 (ADD_REPLY) 来确定这个CDR的终端ID。这时需要判断解码结果对象中是否含有增加响应,如果不是,这个解码结果对象只能是第三阶段的信息了,可直接按关联lD检索,更新CDR。如果解码结果对象中有增加响应,这时我们要用事务ID进行一次检索,一定能找到他对应的C D R,然后更新它。

3 H.248合成算法分析

从该CDR合成的算法,主要是根据一些关键参数进行查找、匹配来确定是否属于同一个消息流程,因此在这个过程中,需要一些临时存储方式来保存没有匹配到的消息,在内存分配上比较复杂,涉及动态分配内存另外,该合成算法涉及大量的查找、匹配,所以需要比较好的建立索引方法显得至关重要,但是建立这些索引也是要耗费时间的,所以根据具体情况应使用具体的索引建立方法。

H.248协议规则上阐述:一个消息有多个事务,一个事务有多个关联,一个关联下有多个命令。在大部分的现实的电信数据中,一个事务只有一条消息,一条消息只有一个关联,但一个关联下,经常有多个命令。这就是说一个协议数据单元中可能有多个动作和多个终端ID以及多消息类型。为了设计的严谨,针对多终端,多动作,多消息类型的情况,设计中最好使用结构体容器和枚举容器。在这种设计的基础上,才有可能把呼叫合成的处理数量下降一个层次。对于很多H.248的命令来说,它们同属于一个关联,如果每个命令合成一个解码结果对象的话,浪费了很多时间,而且取到了很多重复的信息。所以设计从关联中合成解码结果对象,合成触发一次CDR合成过程。这样可以不漏信息,也可以降低处理时间。

另外是从呼叫流程上考虑,现实的呼叫流程情况多端,和标准相比有很多不一致的地方,无法用标准流程分析。一个解码结果对象触发一次CDR合成,由于解码结果关对象是由一个关联而来,所以这个CDR的合成不能再从命令的角度来划分。因为从性质上看,由关联来的解码结果对象是多个命令信息的整合。事实上这样的情况下已经没有按命令处理的条件,如果强行划分,那只能以对解码结果对象进行分解,这样本来以提高效率为目的设计的解码结果对象就没有什么意义了。所以CDR的合成应该针对联进行分析与设计。

4 仿真结果显示 (见表1)

5 结语

本文通过对H.248协议监测模块的CDR合成的深入分析和研究,采用面向对象的设计思想和C++编程进行编程测试,能很好的达到监测模块要实现的预期效果,并在N G N网络测试仪中得到应用,效果良好。

摘要:本文根据作者的工作实际, 对H.248协议及其CDR的合成提出了自己的看法, 以供同仁参考。

关键词:H.248协议,合成

上一篇:体育教学计划中学习目标的作用与表述下一篇:企业税收筹划的问题与对策研究