您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > H248通话信令流程简介
H.248正常通话流程分析题记:转贴一个高手写的入门资料,写得很完美,没什么好改的,原版copy了一下。内容很不错,看完后对248协议就基本算入门了。推荐大家好好看看!一、基本概念终端(Termination)和关联(Context)是H248中两个基本而重要的概念。终端通常可分为两类,一类是半永久终端,用来表示物理实体。例如设备中的某个物理,只要这个物理通道在媒体网关中被配置,就一直存在,只有当配置信息被删除,与之对应的终端才会消失。每个半永久终端都有一个标识,如ZGiad0036line0.另一类称为临时终端,代表临时性的信息流,例如RTP流,当需要时创建,使用完毕后就删除。每个临时终端也有一个标识,如RTP/00001。临时终端通过ADD命令创建,通过SUBTRACT命令清除。与此不同,当一个半永久终端被加入一个特定关联时,它是从NULL关联中获取,而当从特定关联中删除时,它又被返回到NULL关联。关联描述一个终端集之间的关联关系,当一个关联涉及多个终端时,关联将描述这些终端所组成的拓扑结构以及媒体混合交换的参数。它可以通过Add命令进行创建,通过Subtract进行删除。除空关联外,一个关联中必须包含终端媒体网关(MG)和媒体网关控制器(MGC)之间的交互是通过发送消息来完成的。H.248协议中,每个消息由消息头和消息体组成,消息头中包含消息标识符(MID,MessageIdentifier)和版本字段:MID用于标识消息的发送者,可以是域地址、域名或设备名。消息体中包含若干“事务(Transaction)”,事务又是由MGC和MG之间的一组命令构成,命令是H.248消息的主要内容,实现对终端属性的控制,包括指定终端报告检测到的事件,通知终端使用什么信号和动作。H.248协议定义了八个命令,分别是ServiceChange,Notify,Modify,ADD,SUB,Move,Auditvalue,Auditcapabilities。其中“Notify”是由MG发给MGC,“ServiceChange”可由MG发给MGC或者MGC发给MG,其余的命令都是由MGC发给MG。下文将按照一次正常通话流程分别对常用的几个命令进行介绍。二、协议基本命令和流程1.ServiceChange命令MG在发起和接收呼叫之前(打/接电话)必须首先注册到MGC上去,H248协议使用ServiceChange命令进行业务的注册和注销。①!/1[10.47.0.36]T=1{C=-{SC=ROOT{SV{MT=RS,V=1,RE=901ColdBoot}}}}②!/1[10.48.1.68]P=1{C=-{SC=ROOT{SV{AD=11222,V=1}}}}消息①是mg向mgc发送的注册请求消息,消息②是mgc对注册请求的响应。消息中“!/1”表示该消息为H248协议消息,协议版本号为1;[10.47.0.36]和[10.48.1.68]分别“1”为事务号,每一个事务请求消息都应该有一个事务号,且事务号是唯一的。而消息②中的“P=1”表示该消息是对T=1事务的响应。对于每一个T=XXX的事务请求,都应该有一个P=XXX的事务响应与之相对应。消息中的“C”是Context(关联)的缩写。“SC”是ServiceChange(业务改变)命令的缩写,使用此命令,MG能够向MGC进行注册和注销。“ROOT”表示本命令作用的对象是网关,“MT=RS”表示业务改变的方式是重启,“RE=‘901ColdBoot’”表示业务改变的原因。总的来说,消息①表示一个名字叫[10.47.0.36]的设备以网关的形式向MGC发起注册请-1-求。消息②是MGC对名为[10.47.0.36]的MG设备的注册请求的响应,其中“AD=11222”表示MGC侧后续的通讯端口为11222,当名为[10.47.0.36]的MG设备收到该注册响应后,以后就向11222这个目的端口发包。除了以网关的形式注册,MG设备还可以以单个端口的形式注册(MG收到的notify响应消息中有错误码,MG就会以单个端口的形式向MGC进行注册),消息③就是一个以单个端口进行注册的消息。③!/1[10.47.0.36]T=22567{C=-{SC=ZGiad0036line1{SV{MT=RS,V=1,RE=901ColdBoot}}}}2.Modify命令Modify永远是由MGC发给MG的命令,该命令用于修改一个终端的属性、事件和信号参数。④!/1[10.48.1.68]T=1342673857{C=-{MF=ROOT{DM=Shanxi1{(00[1-9][0-9].F|013XXXXXXXXX|0[1-9][0-9].F|13XXXXXXXXX|[1-9][0-9].F|[EF][0-9ABCDEF]X.F)}}}}⑤!/1[10.47.0.36]P=1342673857{C=-{MF=ROOT}}消息④为一个Modify命令,“MF”为Modify的缩写,DM表示拨号计划,该消息表示MGC通过Modify命令给MG的下发了一个名字为Shanxi1的拨号计划。MG收到这个拨号计划后,要使用该拨号计划代替原有的拨号计划。ROOT表示该命令作用的对象是网关,即该设备上的所有终端节点都要使用新的拨号计划。消息⑤是MG对MGC发送Modify命令的回复。⑥!/1[10.48.1.68]T=1342673860{C=-{MF=ZGiad0036line1{E=589829{al/of{strict=exact,EM{SG{cg/dt},E=393217{dd/ce{DM=Shanxi1},al/on{strict=exact},g/sc}}},al/on{strict=exact}}}}}⑦!/1[10.47.0.36]P=1342673860{C=-{MF=ZGiad0036line1}}消息⑥是MGC通过Modify命令向MG的一个物理终端ZGiad0036line1下发了检测事件列表。检测事件列表包含MG要求检测和报告的一组事件,通过RequestID可以将事件检测请求-2-命令和事件发生通知命令(Notify)关联起来。该消息中“E”为Event(事件)的缩写,589829和393217为RequestID。当MG检测到属于某一RequestID的事件发生时,就通过Notify命令将该事件和RequestID一同上报给MGC。该命令让物理终端ZGiad0036line0检测摘机(al/of)和挂机事件(al/on),检测事件的RequestID为589829。注意在589829的这个检测事件列表中的摘机事件中包含一个嵌入式检测事件,由“EM”标识,该嵌入式事件包含一个信号“SG”和一个事件列表(RequestID为393217)。嵌入式检测事件是在外层检测事件发生时才开始检测的,本例中外层检测事件是摘机,也就是当物理终端ZGiad0036line0检测到摘机事件时,会立即进入嵌入式事件的检测:MG会先对该物理终端放拨号音(SG{cg/dt}),然后检测拨号完成事件(dd/ce)和挂机事件(al/on)。消息⑦是MG对消息⑥的响应。3.Notify命令Notify命令永远是MG发给MGC的命令,使用该命令MG将检测到的事件(摘、挂机,拨号等)通知给MGC。⑧!/1[10.47.0.36]T=11{C=-{N=ZGiad0036line1{OE=589829{al/of{init=OFF}}}}}⑨!/1[10.48.1.68]P=11{C=-{N=ZGiad0036line1}}消息⑧表明MG使用Notify命令通知MGC物理通道ZGiad0036line1检测到了摘机事件(al/of)。“OE”为ObservedEvent(观测事件)的缩写,589829为RequestID。消息⑨是MGC对消息⑧的响应。⑩!/1[10.47.0.36]T=12{C=-{N=ZGiad0036line1{OE=393217{dd/ce{ds=13453475000F,Meth=UM}}}}}⑾!/1[10.48.1.68]P=12{C=-{N=ZGiad0036line1}}消息⑩表明物理通道ZGiad0036line1检测到了拨号完成事件(dd/ce),拨的号码是13453475000#。消息⑾是MGC对消息⑩的响应。4.ADD命令当mgc收到主叫上报的电话号码后,会对主叫下发ADD命令,该命令主要是让AG开个通道(开个端口,该端口用于以后的语音传输)。ADD命令将一个Termination(物理节点或媒体节点)添加到一个关联中,如果不指定关联号时,MG自己指定关联号,然后将终结点加入到该关联中。⑿!/1[10.48.1.68]T=1342673892{C=${A=ZGiad0036line1{M{O{MO=SR,tdmc/ec=on}}},A=${M{O{MO=RC},L{v=0c=INIP4$m=audio$RTP/AVP8-3-}}}}}消息⑿是MGC发给MG的ADD命令,在物理终端ZGiad0036line1上报了所播的号码后(消息⑩),MGC会给ZGiad0036line1下发ADD命令。该命令让MG做三件事,其一是创建一个非空关联(C=$),“$”表示关联号由MG自己确定;其二是将物理终端ZGiad0036line1从空关联(C=-)中移到这个新的非空关联中,并设置物理终端的一些属性;其三是在新关联中添加一个新的媒体终端,媒体终端的标识由MG自己确定(A=$),并设置了媒体终端的一些属性。H248协议适用流描述符描述媒体流的一些属性。流描述符包括本地控制,本地和远端描述符三种。“M”表示流描述符,“O”表示本地控制描述符,“L”表示本地描述符,“M”表示远端描述符。本地控制描述符主要设置流的收发模式(收发模式由“MO”表示),收发模式主要有只收不发(RC)、只发不收(SO)、既收又发(SR)和去活(IN)四种情况(还有一种环,很少用)。本地和远端描述符分别描述本地和远端的IP地址,端口号和编码方式等属性。MGC将媒体终端的收发模式设置为只收不发(RC),“不发”是因为此刻远端的端口并没有开,即使发出去对方也收不到;“可以收”是因为在双方还未正常通话前主叫可能要接收一些语音信息(远端放的回铃,媒体服务器的语音提示)。后面可以看到当被叫摘机后,mgc才将主叫的收发模式置为“SR”。(13)!/1[10.47.0.36]P=1342673892{C=5{A=ZGiad0036line1,A=RTP/00003{M{L{v=0c=INIP410.47.0.36a=ptime:20m=audio4030RTP/AVP8}}}}}消息(13)是主叫对mgc下发开通道命令的回复,可以看出ag自己创建了一个关联,指定该关联的关联号为5,在这个关联中,物理终结点ZGiad0036line1是从空关联中移过来的,而媒体终结点RTP/00003是新创建的,媒体终端的标识RTP/00003由MG自己确定,同时自己还确定了端口号4030,打包时间20,编码方式8。MGC在收到主叫对开通道命令的回复后,就知道主叫的ip地址,端口号等信息。此时如果mgc发现被叫不忙,就会对给被叫下发开通道的ADD命令(14)。由于现在mgc知道了主叫的相关信息,所以该ADD命令将主叫的信息(IP地址,端口号,编码方式等信息)发给了被叫。注意此时给被叫设置的媒体收发模式为so(只发不收,即被叫可以向外发语音流),这是因为有可能由被叫放回铃给主叫。L{}中的一些属性和上一个ADD命令一样,都是本端的媒体信息,而R{}中的属性是远端的信息(主叫)。-4-消息(15)是AG对add命令的回复,AG在收到ADD命令后,开了通道,然后向mgc返回了本地媒体相关信息(IP地址10.47.0.36,端口号4040)。(14)!/1[10.48.1.68]T=1342673893{C=${A=ZGiad0036line0{M{O{MO=SR,tdm
本文标题:H248通话信令流程简介
链接地址:https://www.777doc.com/doc-637034 .html