MGCP协议学习(三)

通知请求(RQNT

    通知请求命令是由MGC发送给网关的命令,以指示网关在指定端点上检测指定的事件。
NotificationRequest{EndpointId,RequestIdentifie,RequestedEvents,SignalRequests,NotifiedEntity,DigitMap,QuarantineHandling,DetectEvents}
主要参数:
    EndpointId:端点标识。MGC请求网关检测在这个端点上发生的指定事件。这里的端点标识可以使用表示“所有的”通配符“*”。
    RequestedEvents:事件列表。指示网关检测对应端点上事件列表中的事件。这些事件包括:Fax信号、摘挂机事件等。
    DigitMap:当需要网关按堆积方式收号时,MGC指示网关按此参数收号。
收号方式有立即与堆积方式,按堆积方式收号时,网关收齐指定的位数以后一次把所收集的号码发给MGC。
    SignalRequests:信号音请求参数。MGC在检测特定事件的时候或之前,可以通过此参数指示网关向对应端点输出信号。

    收到该命令后,网关立即发送一应答(Respond)给MGC,并执行相应操作,检测对应的事件。一旦网关检测到对应的事件,则按该命令规定的动作处理(每个事件对应一个动作),如直接通知MGC、按照DigitMap收号等,缺省的动作是发送通知。

通知命令(NTFY)
    当在指定端口上检测到指定的事件后,如果规定的动作是发送通知,则网关将发出命令Notify给MGC。
    Notify{EndPointId,RequestIdentifier,NotifiedEntity,ObservedEvents,QuarantineHandling,DetectEvents}
    主要参数:
    EndpointId:端点标识。Notify是由端点上的事件触发。这里端点标识不能使用通配符。
    ObservedEvents:被网关检测到的事件集。其中只包含对应命令NotificationRequest要求检测的并被检测到的事件。
    收到网关发来的Notify命令后,MGC立即应答网关。如果有必要,随后还会发出其它命令,如NotificationRequest或CreateConnection等给网关。
创建连接命令(CRCX)
    该命令由MGC发送给网关的命令,用于创建连接。
    CreateConnection{EndpointId,CallId,RequestIdentifier,LocalConnectionOptions,ConnectionMode,RequestEvents,SignalRequests,NotifiedEntity,DigitMap,QuarantineHandlling,DetectEvents,RemoteConnectionDesriptr}
    主要参数:
    CallId:呼叫标识。全局唯一的标识。指出所建立的连接属于这个呼叫。
    EndpointId:端点标识。网关所创建的连接的端点。
    LocalConnectionOptions:本地连接选项。引导网关如何设置这个连接的一些参数,它包括这样一些域:编码方案、打包时延、占用带宽、业务类型、回声抑制的使用、静音抑制的使用、增益控制的使用、资源预留的使用、RTP安全机制的使用、承载网络的类型。
    RemoteConnectionDescripto:远端连接描述。与本地连接选项的域相同。该MGC不清楚远端描述的情况下,本参数缺省。
    ConnectionMode:连接模式。指示此连接的操作模式,如它们可以被设置为“只发送”(sendonly)、“只接收”(recvonly)、“收/发”(sendrecv)、“会议”(confrnce)、“数据(data)”、“去激活(inactive)等。
在这些连接上接收到的音频信号的处理是由这些模式参数决定的:
    通过“接收”、“会议”或者“收/发”模式连接收到的数据包中的音频信号将被混合,并被送到该端点。
    源于模式为“发送”、“会议”或者“收/发”的连接的该端点的音频信号将被发送出去。
    通过“会议”连接模式数据包收到的音频信号,除了被送到端点之外,还被复制到所有模式为“会议”的其他连接上。
    其它参数:
    这些参数与通知请求命令相同,这也说明在创建连接的同时可以携带通知请求命令给网关,使之同时执行这两条命令。
    执行完CreateConnection后,网关将立即发送一应答给MGC。指出连接建立是否成功。如果成功,则返回网关创建的连接标识(ConnectionId,在端点内唯一,一个端点可以终结多个连接)、用SDP描述的本地连接描述(其中包含IP地址和RTP端口号)。
修改连接命令(MDCX)
    由MGC发送给网关的命令,用于更改连接的特征,其参数中既包括本地连接描述,也包括远端连接描述。
    ModifyConnection{CallID,EndPointId,ConnectionID,RequestIdentifier,LocalConnectionOptions,ConnectionMode,RequestEvents,SignalRequests,NotifiedEntity,DigitMap,QuarantineHandlling,DetectEvents,RemoteConnectionDesriptr}
    主要参数:
    CallID:呼叫标识。
    ConnectionId:连接标识。这是在建立连接时由网关返回的标识,对应端点内连接的标识。
    其它参数:
    与建立连接命令参数相同,且其用法也是一样。不同之处在于EndpointId不可使用通配符。
    执行ModifyConnection后,网关立即应答MGC,如果本地连接的参数被更改,则同时返回更改后的LocalConnectionDescriptor参数。
由MGC发起的删除连接命令(DLCX)
    MGC用DeleteConnection来终止之前建立的连接。
    DeleteConnection{CallID,EndPointId,ConnectionID,RequestIdentifier,RequestEvents,SignalRequests,NotifiedEntity,ReasonCode,DigitMap,QuarantineHandlling,DetectEvents}
    主要参数:
    CallId:呼叫标识。
    EndpointId:端点标识。这里端点标识不能用通配符。
    ConnectionId:连接标识。
    其它参数:
    与建立连接的参数一样,用法也相同。
    通常情况下,一条连接对应着两个端点,要MGC(可能是不同的MGC)分别发送一条删除连接命令给这两个端点所对应的网关。连接一旦被删除,所有关于此连接的操作,如挂机事件检测等都将被取消。作为对DeleteConnection的应答,网关还会将关于此连接在此端点上的一些统计值返回给MGC,MGC可以据此记帐。这些统计值是:发送出的数据包的数目、发送出的信息的字节数、接收到的包的数目、接收到的信息的字节数、丢包数、平均时延抖动、平均传输时延等。
由网关发起的删除连接命令(DLCX)
    某些情况下,如资源不够、端点不能接收和发送数据而变的得不可用等,网关将不得不拆除这条连接,对此它将发送删除连接命令给MGC通知对应的连接已被拆除。
    DeleteConnection{CallID,EndPointId,ConnectionID,ReasonCode,ConnectionParameters}
    主要参数:
    CallId:呼叫标识。
    EndpointId:端点标识。不可使用通配符。
    ConnectionId:连接标识。
    ReasonCode:拆除的原因。
    ConnectionParameters:连接参数。包括关于此连接的各种统计值等信息。
    收到网关发来的DeleteConnection后,MGC立即应答网关。
审计端点命令(AUEP)
    MGC可以用这条命令检查指定端点的状态。
    AuditEndpoint{EndPointID,RequestedInfo}
    主要参数:
    EndpointId:端点标识。如果端点标识含有通配符“*”,则网关将返回所有匹配此标识的端点标识,且不返回任何关于这些端点的状态。如果端点标识不含通配符,则网关将返回此端点的各种指定状态。
    RequestedInfo:请求检查的状态信息。MGC通过此参数告知网关,希望得到关于端点的哪些状态。这些状态信息包括:RequestedEvents、DigitMap、SignalRequests、RequestIdentifier、NotifiedEntity、ConnectionIdentifiers、DetectEvents、Capabilities。
    收到AuditEndpoint请求后,网关将立即应答MGC,并根据RequestedInfo中的指示,返回关于指定端点的特定的状态信息。
审计连接命令(AUCX)
    MGC可以用这条命令检查指定连接的各种信息。
    AuditConnection{EndPointID,ConnectionID,RequestedInfo}
    主要参数:
    EndpointId:端点标识。这里,端点标识不能含通配符。
    ConnectionId:连接标识。欲被检查的连接标识。
    RequestedInfo:请求检查的连接信息。MGC利用此参数告知网关,希望获知此连接的哪些信息。这些信息是:CallId、NotifiedEntity、LocalConnectionOptions、Mode、RemoteConnectionDescriptor、RemoteConnectionDescriptor、ConnectionParameters。
    收到AuditConnection请求后,网关将立即应答MGC,并根据RequestedInfo中的指示,返回关于指定端点中指定连接的指定信息。
重启命令(RSIP)
    网关利用命令RestartInProgress提示MGC,网关内的一个或一群端点将不再提供服务或将可以提供服务(take in or out of service),换句话说,就是即将离线或即将在线。
    RestartInProgress{EndPointID,RestartMethod,RestartDelay}
    主要参数:
    EndpointId:端点标识,指即将在线或离线的端点。它可以含表示“所有”的通配符“*”,但不能含表示“其中任何一个”的通配符“$”。
    RestartMethod:重启方案。这些端点重新启动有三种方案,它们是:
    Graceful:此方案表明这些端点将在指定的延时之后离线。
    Forced:此方案表明这些端点将立即离线,已建立的连接将丢失。
    Restart:此方案表明这些端点的服务将在指定的延时之后恢复(在线)。此时,这些端点上没有建立任何连接。
    RestartDelay:重启时延。即是上面所说的时延,以秒为单位。Forced方案下RestartDelay没有意义。
    收到RestartInProgress命令后,MGC作相应处理,并应答网关。
命令示例
MGCP命令编码的示例
RQNT 4561 [email protected] MGCP 1.0
N: [email protected]: 5777
X: 45848484
R: hd
第一行是命令行,RQNT是表示通知请求命令的动词,事务编号是4561,端点是[email protected],协议版本是V1.0。
第二行表示NotifiedEntity的内容:[email protected]: 5777。它表示网关观察到指定的事件后,发出通知的实体是[email protected],端口号是5777。
第三行是用于请求标识符的十六进制的字符串。发送命令时,网关通过此参数将相应的通知请求通报给MGC。
第四行表示每一个事件名称的代码,代码“hd”表示摘机。这些代码表示需要检测的网关请求的事件名称。
MGC给网关发出该命令,请求它监控摘机事件,该事件出现在中继网关tgw-21的“端点-66”,域名为“infoinst.com”。
响应格式
和MGCP命令的格式类似,响应格式由一行后接一组可选参数行的响应行组成。
响应行由响应码,事务标识和一个由空格隔开的可选注释组成。
响应码是一个三位的数值,表示命令的执行状态。MGCP 1.0版本中定义十九个代码,其范围如下:
?       200和299之间的值表示成功完成
?       400和499之间的值表示瞬态误差
?       500和599之间的值表示永久误差

下面是审计连接响应的示例:
200 1203 OK
C: A3C47F21456789F0
N: [128.96.41.12]
L: p: 10, a: PCMU; G726-32
M: sendrecv
P: PS=1245, OS=62345, PR=780, OR=45123, PL=10, JI=27,LA=48
v=0
c=IN IP4 128.96.41.1
m=audio 1296 RTP/AVP 0
v=0
c=IN IP4 128.96.63.25
m=audio 1296 RTP/AVP 0 96
a=rtpmap:96 G726-32/8000
第一行,“200”表示命令的正确接收,1203是事务标识符,OK是注释。
第二行,C代表了呼叫ID。
第三行,被通知的实体。指示网关,当检测到指定事件时,应向哪个实体发送通知。
第四行,在近端连接选项L中,封装时延是10秒,压缩算法是G.726-32。
第五行,连接方式M,表示这是一个发送和接收模式,即,该端点既可接受也可发送数据。
第六行,连接参数(P)表示,到目前为止,1245个包含62345个字节的数据包已经发出,包含45123个字节的780个数据包已经收到,10个数据包丢失,平均抖动时间是27ms,平均延迟时间是48ms。
第七行及其下面的两组参数分别是近端连接说明和远端连接说明,分别表示当地和远端IP地址,端口号和抑制算法。

你可能感兴趣的:(c,算法,网络,service,OS,audio)