一、H248数图

数图可以是一个字符串,我们不妨称之为数图字符串,它遵循了Unix系统命令中的规则表达式的语法规定,也可以是许多数图字符串的并集,之间用“|”分隔,我们不妨称之为数图字符串列表。以下是一个数图的例子:

[2-8]xxxxxxx | 13xxxxxxxxx | 0xxxxxxxxx | 9xxxx | 1[0124-9]x | * | # | x.# | [0-9*#].T 

我们结合对该数图的分析,学习一下怎样读懂一个数图。首先,我们对一个数图字符串中可能出现的字符进行一下归纳。

第一类:数字:0、1、2、3、4、5、6、7、8、9;

第二类:定时器:数图中用大写的“T”匹配一个定时器的超时,称之为超时匹配,定时器的时长是由媒体网关主机软件自己控制的,一般是要比位间不拨号超时定时器短;

第三类:字符:包括A、B、C、D、*、#,还包括定时器“T”,如果有其它的扩展字符,象我们前文所说的一些广义上的号码字符,也属于该类;

第四类:通配符:x,匹配从0到9的任何一个数字;

第五类:范围:数图中用一对中括号“[”、“]”括起一个或多个DTMF字符表示选择范围,在该范围中出现的任何一个DTMF都可以匹配;

第六类:子范围:数图中用两个数字间通过一个连字号“-”相连表示一个范围,比如“2-4”表示匹配从2到4之间的任何一个数字,包括2和4。之所以称之为子范围,是因为这个结构只能出现在方括号中。比如“[1-578]”表示从1到5,或7、8任何一个匹配,排除了6;

第七类:位置:小圆点“.”是一种位置匹配,它对在它之前出现的任何一个结构进行0次或多次匹配,注意它的匹配次数包括零次。比如“12.”匹配“1”、“12”、“122”、“1222”、„„。

现在我们再对上文给出的数图进行分析:

[2-8]xxxxxxx | 13xxxxxxxxx | 0xxxxxxxxx | 9xxxx | 1[0124-9]x | * | # | x.# | [0-9*#].T   

这是一个由9个数图字符串组成的数图字符串列表:

第一个数图字符串“[2-8]xxxxxxx”匹配一个八位号码,第一位必须是数字2~8中的一位,其余七位号码可以是0~9中的任何一位;

第二个数图字符串是“13xxxxxxxxx”,匹配一串11位号码,第一位必须匹配1,第二位必须匹配3,其余9位匹配0~9;

第三个数图字符串是“0xxxxxxxxx”,匹配以0起始的10位号码;

第四个数图字符串是“9xxxx”,匹配以9起始的5位号码;

第五个数图字符串是1[0124-9]x,匹配三位号码,第一位必须匹配1,第二位匹配012中的任何一位或4~9中任何一位,也就是说只要第二位是除3之外的任何数字,都能匹配成功,第三位匹配0~9的任何数字;

第六个数图字符串匹配DTMF字符“*”;

第七个数图字符串匹配DTMF字符“#”;

第八个数图字符串“x.#”,x后面加一点,表示对0~9中任何一位进行零次或多次匹配,除非遇到“#”,停止匹配;

第九个数图字符串“[0-9*#].T”,T表示启动超时匹配,对0~9或“*”号或“#”号进行一次次或多次匹配,如果匹配定时器超时,停止匹配。

这里需要说明的是,本来小圆点表示的是零次或多次匹配,但这个数图子串比较特殊,由于至少输入一个字符才可能进入该子串,从而触发匹配定时器的启动,因此此处需要至少匹配一次0~9或*、#。

我们已经知道怎样读懂一个数图了。但是用户号码毕竟是一位一位上报给媒体网关的,媒体网关怎样对每一位号码处理,最后统一上报呼叫代理?当号码同时符合数图中多个数图字符串匹配时,媒体网关以哪一个为准呢?这是本节讨论的问题。

由于用户号码是逐位上报给媒体网关的,而媒体网关想要将号码收齐后统一上报给呼叫代理,必然需要将之前上报的号码先进行缓存。用户每上报一位号码,媒体网关将该号码添加到一个叫做“当前拨号串”的状态变量后面,替换掉原来的变量值,然后将该变量值交给数图进行分析。

对数图的分析顺序是从左到右的,每分析一个数图字符串,给出一个匹配结果,匹配的结果可能有四种:

完全匹配,即完全符合该数图字符串的匹配要求;

超时匹配,即符合某个超时匹配的数图字符串;

部分匹配,即部分匹配某个数图字符串;

不匹配,即不匹配某个数图字符串。

这四种匹配结果优先级由高到低依次为完全匹配、超时匹配、部分匹配、不匹配。优先级体现在当对数图从左到右先后匹配时,每个数图字符串都有一个匹配结果,优先级高的结果替换优先级低的结果,当所有数图字符串匹配结束后,给出一个最终的结果。

最终匹配结果如果是完全匹配,号码立即上报呼叫代理;如果是超时匹配,匹配定时器超时后号码上报呼叫代理;如果是部分匹配,号码缓存到“当前拨号串”状态变量中,等待用户下一位号码上报后再进行新一轮匹配;如果是不匹配,号码立即丢弃。如此循环,完成用户号码分析上报过程。

下面结合两个数图实例理解一下媒体网关怎样利用数图对收到的号码进行号码分析。

实例一:

(xxxxxxx | x11) 

当前媒体网关号码缓存中已有的号码是“41”,用户又拨入一个“1”,则,号码缓存中变成了“411”,先比较数图子集“xxxxxxx”,匹配结果应该是部分匹配,再比较数图子集“x11”,匹配结果应该是完全匹配,于是网关就会将本次匹配结果作为完全匹配,把“411”发送给呼叫代理。

实例二:

(0[12]. | 00 | 1[12].1 | 2x.#)   

用户输入“0”,立即产生一个完全匹配,因为第一个数图子集是“0[12].”,小圆点表示1、2出现零次或多次,本次匹配符合零次的要求,完全匹配。而第二个数图子集“00”虽然对于“0”来说是一个部分匹配,但按照匹配优先级,该匹配不会发生,号码会立即上报给呼叫代理。

用户输入“1”,只有一个部分匹配存在,即第三个数图子集“1[12].1”,输入“12”仍然是一个部分匹配,输入“11”或“121”都是一个完全匹配。

用户输入“2”,只有一个部分匹配存在,即“2x.#”,用户输入“23”、“234”、“2345”都属于部分匹配,因为该输入的x后有一个小圆点,表示对x进行零次或多次匹配,而x又是一个通配符,0~9任何数字都满足匹配条件。只有“#”出现时,才产生一次完全匹配事件,比如“23456789#”。而用户输入“2#”,也属于一个完全匹配。

数图由于其灵活性和高效性,在号码分析中起到了很大的作用于实际应用中各种拨号方案千变万化。

二、 群内数图和号首集数图

群内数图不用配置,软交换按照群内字冠自动生成群内数图, 以下就是奥太乐的例子,用户摘机后,软交换根据配置群内字冠下发群内的数图。

dmap1{(9|1x|2xxx|3xxx|4xxxxx|5xxx|6xxx|7xxx|8xxx|E|F|x.F|[0-9EF].L)}  

用户拨9后,软交换下发号首集内的数图。

dmap1{([2-8]xxxxxxx|13xxxxxxxxx|15xxxxxxxxx|0xxxxxxxxx|9xxxx|1[0124-9]x|20x|E|F|x.F|[0-9].L)}
[16:30:17.180]msg from mgc([10.49.0.70]:2944) to mg([10.49.32.90]:2944): !/1 [10.49.0.70]:2944
T=943221130{C=-{MF=A13{E=939646479{dd/ce{DM=dmap1},al/*},SG{cg/dt},DM=dmap1{(9|1x|2xxx|3xxx|4xxxxx|5xxx|6xxx|7xxx|8xxx|E|F|x.F|[0-9EF].L)}}}}
[16:30:17.180]msg  from mg([10.49.32.90]:2944) to  mgc([10.49.0.70]:2944): !/1 [10.49.32.90]:2944 P=943221130{C=-{MF=A13}}
[16:30:17.570]msg  from mg([10.49.32.90]:2944) to  mgc([10.49.0.70]:2944): !/1 [10.49.32.90]:2944
T=708875126{C=-{N=A13{OE=939646479{20090815T16301700:dd/ce{ds="9",meth=FM}}}}}
[16:30:17.600]msg from mgc([10.49.0.70]:2944) to mg([10.49.32.90]:2944): !/1 [10.49.0.70]:2944 P=708875126{C=-{N=A13}}
[16:30:17.600]msg from mgc([10.49.0.70]:2944) to mg([10.49.32.90]:2944): !/1 [10.49.0.70]:2944
T=943221132{C=-{MF=A13{E=939646465{dd/ce{DM=dmap1},al/*},SG{srvtn/rdt},DM=dmap1{([2-8]xxxxxxx|13xxxxxxxxx|15xxxxxxxxx|0xxxxxxxxx|9xxxx|1[0124-9]x|20x|E|F|x.F|[0-9].L)}}}}
[16:30:17.600]msg  from mg([10.49.32.90]:2944) to  mgc([10.49.0.70]:2944): !/1 [10.49.32.90]:2944 P=943221132{C=-{MF=A13}}   

三、 定时器:(在ONU上设置)

长定时器(L):若号码串至少还需要一位号码来匹配DigitMap中的任意拨号方案,则数字间的定时器值应设置为长定时器。

短定时器(S):若号码串至少已经匹配了DigitalMap中的一种拨号方案,但还有可能接收更多数的号码而匹配其它不同的拨号方案,则不应立即报匹配情况,MG必须使用短定时器(S)等待接收更多位数的号码。

初始定时器(T):初始定时器T用于任何已拨号码之前,即从摘机到收到第一个号码之间的时长。

举例:

[2-8]xxxxxxx|13xxxxxxxxx|15xxxxxxxxx|0xxxxxxxxx|9xxxx|1[0124-9]x|20x|E|F|x.F|[0-9].L

拨打020114,或则02010000,都是匹配0xxxxxxxxx的树图,但还没有匹配上,而且也没有其他的可匹配,这时候就要等长定时器超时才能上报。按照一般用户一秒拨一位计算,拨完020114已经花费了6秒,还要等4秒才上报。(假定长定时器为10秒)

拨打200,匹配了两个数图:[2-8]xxxxxx和20x,如果不再拨号,等短定时器超时即可上报。就是说拨完200等待4秒不再拨号才上报,如果200后(4秒内)又拨了其他号码,就不再匹配20x。(假定短定时器为4秒)

MA5616(config-if-h248-0)#display digitmap-timer
-----------------------------------------------------
Start     Timer length(s): 20
Short     Timer length(s): 4
Long      Timer length(s): 10
Duration  Timer length(ms):3000
-----------------------------------------------------

四、数图匹配方式:(在ONU上设置)

为提高AG对数图的适应性,华为可以通过参数设置匹配方式(mg-software) 。

有下面两个数图存在:

1xx 1xxx 

如果你拨1000,按照最长匹配,他就应该匹配1xxx然后立即上报1000

如果是最短匹配,匹配上1xx就上报,也就是会上报100然后再逐位收号,上报一个0。 但是该配置和定时器有很大的相关性。

拨100,已经匹配上了1xx,也可能会匹配1xxx,所以要等待短定时器超时。 拨1000,只有1xxx得到了匹配,如果没有其他数图影响,应该立即上报。

五、SIP数图:(在终端上设置)

SIP本身没有数图概念,华为沿用了H248协议的习惯。并且数图设置是在SIP终端上,每台终端一个设置(H.248是在软交换上设置,全局),所以提前规划就变得非常重要。 SIP要求终端一次送全号码,不能像H248那样(收到部分就可以上报,然后软交换再次发一个收号),sip要求一个invite上报全部号码。所以数图非常重要。

一、建议“号码匹配方式”设置为“最大匹配”,这样的话,那个+号才能起作用。

二、建议“号间超时”设置为“3”,这样的话,可以缩短等待时间。因为不能设置为最小匹配,实在没有办法。

三、请根据各自区域情况(7、8位),选择SIP数图

如果本地号码是7位的, 请用下面的拨号规则

[*#]x[0-9*]+#|**xx|*#x[0-9*]+#|#*x[0-9*]+#|#300##|#500##|[*#]96#xx+|[*#]95#xx+|*99*xx+#xx+|*66*x[0-9*]+#x[0-9*]+|##|010xxxxxxxx|02xxxxxxxxx|0[3-9]xxxxxxxxx|0311xxxxxxxx|037[179]xxxxxxxx|04[135]1xxxxxxxx|051[0-9]xxxxxxxx|052[37]xxxxxxxx|053[12]xxxxxxxx|057[1345679]xxxxxxxx|059[15]xxxxxxxx|0731xxxxxxxx|075[457]xxxxxxxx|076[09]xxxxxxxx|0898xxxxxxxx|00xxx+|[2-8][1-9]xxxxx
|1[358]xxxxxxxxx|01[358]xxxxxxxxx|11[02479]|12[0268]|11[13568]x+|125xx|12[13479]x+|100[015678]x|100[2349]x+|10[1-9]xx+|14xx+|1[79]xx+|160|168xxxxx|16[1-79]x+|[48]00xxxxxxx|[48]0[1-9]x+|[23567]0xx+|955xx|95[0-46-9]xxx+|9[0-46-9]xxxx+   

如果本地号码是8位,用下面的拨号规则

[*#]x[0-9*]+#|**xx|*#x[0-9*]+#|#*x[0-9*]+#|#300##|#500##|[*#]96#xx+|[*#]95#xx+|*99*xx+#xx+|*66*x[0-9*]+#x[0-9*]+|##|010xxxxxxxx|02xxxxxxxxx|0[3-9]xxxxxxxxx|0311xxxxxxxx|037[179]xxxxxxxx|04[135]1xxxxxxxx|051[0-9]xxxxxxxx|052[37]xxxxxxxx|053[12]xxxxxxxx|057[1345679]xxxxxxxx|059[15]xxxxxxxx|0731xxxxxxxx|075[457]xxxxxxxx|076[09]xxxxxxxx|0898xxxxxxxx|00xxx+
|[2-8][1-9]xxxxxx|1[358]xxxxxxxxx|01[358]xxxxxxxxx|11[02479]|12[0268]|11[13568]x+|125xx|12[13479]x+|100[015678]x|100[2349]x+|10[1-9]xx+|14xx+|1[79]xx+|160|168xxxxx|16[1-79]x+|[48]00xxxxxxx|[48]0[1-9]x+|[23567]0xx+|955xx|95[0-46-9]xxx+|9[0-46-9]xxxx+  

以上数图唯一不同在:

7位号码:[2-8][1-9]xxxxx

8位号码:[2-8][1-9]xxxxxx

第一段,解决特殊业务  :

[*#]x[0-9*]+#|**xx|*#x[0-9*]+#|#*x[0-9*]+#|#300##|#500##|[*#]96#xx+|[*#]95#xx+|*99*xx+#xx+|*66*x[0-9*]+#x[0-9*]+|##  

第二段,解决长途区号是3位的:

0[3-9]xxxxxxxxx|0311xxxxxxxx|037[179]xxxxxxxx|04[135]1xxxxxxxx|051[0-9]xxxxxxxx|052[37]xxxxxxxx|053[12]xxxxxxxx|057[1345679]xxxxxxxx|059[15]xxxxxxxx|0731xxxxxxxx|075[457]xxxxxxxx|076[09]xxxxxxxx|0898xxxxx

0[3-9]XXXXXXXXX,是总纲,解决绝大多数长途电话。

其他,是解决区号是4位,本地电话是8位的。 00XXX+ 解决00国际长途

以上,将01、02、03/4/5/6/7/8/9,已经描述全了。应该没有011、012等区号。就是说0开头的都全了。

第三段,解决了188、189手机号段问题:

1[358]xxxxxxxxx|01[358]xxxxxxxxx

紧急号码,+号表示超时上报 :

11[02479]|11[13568]x+ 

专门将125xx,比如12580单列:

12[0268]|125xx|12[13479]x+

同上的处理:

10[1-9]xx+

14,17,19:

14xx+|1[79]xx+

同上的处理:

160|168xxxxx|16[1-79]x+

分的更细,能缩短168xxxxx的接通时间,差别应该不大。

14、16、17、19也都全了。

第四段,突出了400、800。另外要说明的是[2-8][1-9]xxxxxx,这最后一个x要根据本地网是7位还是8位来定。

第四段将2、3、4、5、6、7、8,开头的全部搞定。加上上面已经搞定了0、1开头,就剩下9了。

[48]00xxxxxxx|[48]0[1-9]x+|[23567]0xx+|[2-8][1-9]xxxxxx  

第五段,突出了95539等特殊号码,能缩短接通时间:

955xx|95[0-46-9]xxx+|9[0-46-9]xxxx+   

8245数图里面不能有+,应该用.

对于以.结尾的子方案需要显示加一个S(.表示0个或多个的重复)定时器,否则后面的号就收不了,下面是帮你修改好的数图(下面这个是本地网8位号码的,如果是7位的区域:[2-8][1-9]xxxxxx要少一个x)

[*#]x[0-9*].#|**xx|*#x[0-9*].#|#*x[0-9*].#|#300##|#500##|[*#]96#xx.S|[*#]95#xx.S|*99*xx.#xx.S|*66*x[0-9*].#x[0-9*].S|##|010xxxxxxxx|02xxxxxxxxx|0[3-9]xxxxxxxxx|0311xxxxxxxx|037[179]xxxxxxxx|04[135]1xxxxxxxx|051[0-9]xxxxxxxx|052[37]xxxxxxxx|053[12]xxxxxxxx|057[1345679]xxxxxxxx|059[15]xxxxxxxx|0731xxxxxxxx|075[457]xxxxxxxx|076[09]xxxxxxxx|0898xxxxxxxx|00xxx.S|[2-8][1-9]xxxxxx|1[358]xxxxxxxxx|01[358]xxxxxxxxx|11[02479]|12[0268]|11[13568]x.S|125xx|12[13479]x.S|100[015678]x|100[2349]x.S|10[1-9]xx.S|14xx.S|1[79]xx.S|160|168xxxxx|16[1-79]x.S|[48]00xxxxxxx|[48]0[1-9]x.S|[23567]0xx.S|955xx|95[0-46-9]xxx.S|9[0-46-9]xxxx.S  

转载于:https://www.cnblogs.com/Liubit/p/5958028.html

关于H.248的树图规则相关推荐

  1. 【NGN学习笔记】4 软交换中的协议2—Megaco/H.248

    作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.概述: 软交换设备之间采用SIP(Session Initiation Protocol)协议或者BICC( ...

  2. MGCP /H.248 鉴权认证

    MGCP /H.248 鉴权认证 MGCP /H.248 鉴权认证 鉴权概述和基本算法 MGCP/H.248鉴权概述 MGCP协议没有涉及安全认证的标准.对于网络应用终端客户或运营商来说都不安全的盗号 ...

  3. 10036.简评多媒体协议H.323和SIP

    http://www.cmvc.com.cn/printpage.asp?id=381 简评多媒体协议H.323和SIP www.aspsky.net  2004-3-30  动网先锋 摘 要:业界对 ...

  4. Nginx之Location命中URI规则

    目录 1. Location语法规则 2. location如何发挥作用 3. 精确匹配 4. 前缀匹配 5. 正则匹配 6. 优先级 7. 匹配规则示例 8. 实际常用规则 1. Location语 ...

  5. Linux之iptables(六、rich规则)

    其它规则 当基本firewalld语法规则不能满足要求时,可以使用以下更复杂的规则 rich-rules 富规则,功能强,表达性语言 Direct configuration rules 直接规则,灵 ...

  6. H.248-Transcoding与Interception

    Transcoding PLMN中的Transcoding      在PLMN(Public Land Mobile Network)中,跨网络的语音通信时,有可能在一次呼叫的用户面存在四次编码解码 ...

  7. 炎炎夏日,深夜详谈nginx的配置中location和rewrite的语法规则(从入门到高手的第六步)

    前言 在生产实际中,当用户页面请求后,很多是需要自动跳转到其他特定页面,这个时候往往可以利用nginx配置中location规则或rewrite语法进行设置. Nginx提供的全局变量或自己设置的变量 ...

  8. hⅰgh怎么读音发音英语_lie英语怎么读,hⅰde英语怎么读。

    别想对我说谎话英语怎么读 believe 汉语发音是 逼利vlie 发音是 赖 sit 英 [sɪt] 美 [sɪt] vi. 坐:位于 vt. 使就座 n. (Sit)人名:(东南亚国家华语)硕:( ...

  9. nginx配置以及rewrite规则

    1 location正则写法 语法规则: location [=||*|^~] /uri/ { - } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.ng ...

最新文章

  1. 博士生在没有导师指导的情况下,该如何自己选题发 CVPR ?
  2. 12:MYSQL 使用函数创建自增序列管理表(批量使用自增表,设置初始值,自增幅度)
  3. bash-shell高级编程--条件判断
  4. MyLiveSearch:它将会革掉Google的命?
  5. File类创建删除功能的方法
  6. 单例设计模式-序列化破坏单例模式原理解析及解决方案
  7. linux防火墙阻断目的,基于Linux防火墙的内部邮件监控与阻断系统
  8. 1090 Highest Price in Supply Chain (25)(25 分)
  9. iOS - 判断用户是否允许推送通知(iOS7/iOS8)
  10. Teamcenter - Index search 找不到相关物件的解决方法
  11. RMAN备份学习笔记
  12. Makefile、.mk、.bp、Blueprint、Soong、kati工具链的关系
  13. Python字符串的截取|Python练习题
  14. ad20/ad21/ad22学习笔记(基本包含一套流程)Altium Designer
  15. python好玩的代码-神奇的Python,一行代码能做哪些炫酷的事情?
  16. CentOS7或7以上,无iptable解决方法
  17. ASP.NET微信开发视频教程
  18. BERT tokenization 处理英文句子 Wordpiece之后的处理技巧
  19. 人工蜂群算法(ABC)算法笔记丨matlab实现
  20. PS快速处理证件照(给证件照拉直)

热门文章

  1. 公共WiFi到底该不该连?黑客教父龚蔚这么说
  2. STM32 五个时钟源HSI、HSE、LSI、LSE、PLL 如何识别
  3. Magic Leap在增强现实中展示了外形如同真人的AI
  4. 华为 WLAN基本配置
  5. OBS studio 显示器捕获黑屏问题
  6. 台资企业管理职的中英文称谓以及级别
  7. SwaggerUI增加公共的Global全局Header
  8. idc服务器排名戴尔型号,IDC公布2019年全球服务器市场数据:戴尔、HPE和浪潮分列前三...
  9. 程序员的8个高薪职业发展方向,总有一个适合你!
  10. 024:事务和相关的功能