简介
本文档介绍如何配置媒体网关控制协议(MGCP)并排除故障。MGCP是呼叫代理/终端协议。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
注意:本文档将配置示例以及debug和show命令输出用作参考点。本文档中的许多功能都明确标有Cisco IOS®和Cisco IOS-XE®引入的功能的版本。
常见定义
属性 |
定义 |
呼叫代理 |
扮演主要角色并提供集中呼叫智能的呼叫控制元素。 |
终端 |
终端是呼叫代理控制的设备。例如:FXO、FXS或DS0通道。 |
PSTN |
公共交换电话网络。 |
MGCP基础
媒体网关控制协议(MGCP)由RFC 2705定义。MGCP是呼叫代理/终端协议,其中终端由某种类型的呼叫代理控制。整个控制智能由呼叫代理控制,该呼叫代理指示终端在检测到事件后采取什么操作。MGCP使用TCP端口2428和UDP端口2427。
MGCP中的TCP端口2428用于打开与呼叫代理的新套接字,以确定是否可以建立连接。如果没有此新套接字,则无法交换后续的MGCP消息。它还用于在PRI终端和其注册的呼叫代理之间发送/接收回程消息。最后,TCP端口2428用于在主呼叫代理无响应时故障切换到备份呼叫代理。
MGCP中的UDP端口2427用于终端和呼叫代理之间交换的MGCP消息。
基本流
这是基本MGCP流的示例。您可以在示例中看到网关在此语音网关(终端)上接收来自PSTN的新呼叫。 然后,网关将收到的此新呼叫通知呼叫代理(CUCM),呼叫代理随后指示网关为此新呼叫创建连接。最后,网关向呼叫代理发送OK以建立呼叫。

终端标识符
每个终端都需要一个标识符,以便呼叫代理能够确定需要向谁发送事件或事件来自何处。终端标识符有两个主要组件:
- 该网关中的本地名称(不区分大小写)。
- 管理终端的网关的域名(区分大小写)。
示例:
- AALN/S1/SU0/0@AV-VG200-2.cisco.com
- S0/SU0/DS1-0@AV-VG200-1
MGCP的基本配置
本文档将每个配置组件分为各个步骤。
网关CLI配置
在您计划注册到CUCM的模拟网关上,这是实际所需的最低配置。您只需添加此配置即可开始注册过程,因为其余配置随后会从CUCM下载:
VG320(config)# mgcp call-agent 10.50.217.100 2427 service-type mgcp version 0.1
VG320(config)# ccm-manager config server 10.50.217.100
VG320(config)# ccm-manager config
VG320(config)# ccm-manager mgcp
VG320(config)# mgcp
**Note on the ISR4000s if you fail to down load your configuration file, you must add the command:
VG320(config)# ip tftp source-interface GigabitEthernet x/x/x
CUCM 配置
要在CUCM中配置MGCP网关,您需要登录Cisco Unified CM管理。登录后,导航至Device > Gateway:

上一个选择将在“查找并列出网关”页面启动。在此,您要选择带加号的“添加新”按钮:

选择Add New后,系统会提示您选择Gateway Type。使用此下拉框选择您计划注册的硬件,并选择Next以选择您希望为此设备使用的协议(您需要选择MGCP):

现在,您已选择所用的硬件和协议,需要配置域名、Cisco Unified Communications Manager组和模块信息。这些是通过MGCP注册终端所需的主要字段。
域名由1到2个部分组成。至少需要在域名字段中输入路由器的主机名。在我的场景中,主机名为:
VG320
但是,如果在网关上配置了域名,则需要配置此设备的完全限定域名:

现在,您必须点击Save。这将更新页面,并允许您立即选择子单元。选择子单元后,再次选择保存。您现在可以看到可配置端口:

要立即配置终端,请单击模拟设备插入的端口(在本例中为0/0/0)。 选择端口后,系统会提示您配置端口类型:

在这种情况下,您选择POTS。选中此选项后,您可以像输入任何其他Call Manager终端一样输入设备信息的所有必要值。唯一必填字段是“设备池”,但是,您可以输入其他值,如“呼叫搜索空间”。完成此操作后,可单击“保存”。此时,您会看到左侧窗格已为您填充了Add a new DN字段。现在,您可以将DN与此端口关联,保存并应用配置。完成此操作后,返回端口配置页面,您现在可以看到端口已注册:

终端注册和呼叫设置
在本节中,您将介绍MGCP终端注册和呼叫设置的基础知识。这包括网关与呼叫代理交互时显示的命令消息。在此场景中,CUCM是我们的呼叫代理。
MGCP终端注册

对于要注册到CUCM的MGCP终端,网关会从此处打开TCP套接字2428到CUCM,它使用UDP端口2427发送命令消息。套接字打开后,网关向CUCM发送RSIP命令,通知其终端必须在重新启动时停止服务,CUCM向此发送简单确认。重新启动完成后,CUCM发送带参数R的RQNT:L/hd。这表示网关必须将摘机事件通知CUCM。
此时,CUCM向网关发送AUEP(审核终端),以确定给定终端的状态。网关的响应是具有终端功能的ACK。完成后,终端向CUCM注册。以下是调试输出示例:
000138: *Apr 23 19:41:49.010: MGCP Packet sent to <CUCM IP>:2427--->
RSIP 39380951 aaln/S0/SU0/0@VG320.dillbrowLab.local MGCP 0.1
RM: restart
<---
000139: *Apr 23 19:41:49.030: MGCP Packet received from <CUCM IP>:2427--->
200 39380951
<---
000140: *Apr 23 19:41:49.030: MGCP Packet received from <CUCM IP>:2427--->
RQNT 3 AALN/S0/SU0/0@VG320.dillbrowLab.local MGCP 0.1
X: 2
R: L/hd
Q: process,loop
<---
000141: *Apr 23 19:41:49.030: MGCP Packet sent to <CUCM IP>:2427--->
200 3 OK
<---
000142: *Apr 23 19:41:49.050: MGCP Packet received from <CUCM IP>:2427--->
AUEP 4 AALN/S0/SU0/0@VG320.dillbrowLab.local MGCP 0.1
F: X, A, I
<---
000143: *Apr 23 19:41:49.050: MGCP Packet sent to <CUCM IP>:2427--->
200 4
I:
X: 2
L: p:10-20, a:PCMU;PCMA;G.nX64, b:64, e:on, gc:1, s:on, t:10, r:g, nt:IN, v:T;G;D;L;H;R;ATM;SST;PRE
L: p:10-220, a:G.729;G.729a;G.729b, b:8, e:on, gc:1, s:on, t:10, r:g, nt:IN, v:T;G;D;L;H;R;ATM;SST;PRE
L: p:10-110, a:G.726-16;G.728, b:16, e:on, gc:1, s:on, t:10, r:g, nt:IN, v:T;G;D;L;H;R;ATM;SST;PRE
L: p:10-70, a:G.726-24, b:24, e:on, gc:1, s:on, t:10, r:g, nt:IN, v:T;G;D;L;H;R;ATM;SST;PRE
L: p:10-50, a:G.726-32, b:32, e:on, gc:1, s:on, t:10, r:g, nt:IN, v:T;G;D;L;H;R;ATM;SST;PRE
L: p:30-270, a:G.723.1-H;G.723;G.723.1a-H, b:6, e:on, gc:1, s:on, t:10, r:g, nt:IN, v:T;G;D;L;H;R;ATM;SST;PRE
L: p:30-330, a:G.723.1-L;G.723.1a-L, b:5, e:on, gc:1, s:on, t:10, r:g, nt:IN, v:T;G;D;L;H;R;ATM;SST;PRE
M: sendonly, recvonly, sendrecv, inactive, loopback, conttest, data, netwloop, netwtest
<---
MGCP呼叫设置

上一个映像是出站呼叫的示例。
您可以看到您的呼叫代理(本例中为CUCM)以一个CRCX开头,该CRCX只能连接到网关以建立呼叫连接。网关以包含SDP的200 OK作为响应,以了解其支持的内容。完成此交换后,CUCM将RQNT消息发送到网关,其中参数为S:G/rt。这将告知网关播放设备回铃。远端接收呼叫并接听后,CUCM随后将带SDP的MDCX发送到网关,以告知远端设备的介质信息。网关发送一个简单的200 OK来确认此情况,此时您有双向介质。
呼叫已应答后,CUCM将发送另一个RQNT,其参数为R:D/[0-9ABCD*#]。这将告知网关让CUCM知道呼叫处于活动状态时被按的任何DTMF,以便它可以中继到下一台设备。
呼叫结束后,CUCM将MDCX发送到网关,其中M:recvonly以终止介质,然后是DLCX以断开呼叫。以下是调试输出示例:
001005: *May 13 14:28:15.633: MGCP Packet received from <CUCM IP>:2427--->
CRCX 174 AALN/S0/SU1/0@VG320.dillbrowLab.local MGCP 0.1
C: A000000001b79063000000F5
X: 21
L: p:20, a:PCMU, s:off, t:b8
M: recvonly
R: L/hu
Q: process,loop
<---
001006: *May 13 14:28:15.637: MGCP Packet sent to <CUCM IP>:2427--->
200 174 OK
I: 6
v=0
c=IN IP4 <Gateway IP>
m=audio 16410 RTP/AVP 0 101 100
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=rtpmap:100 X-NSE/8000
a=fmtp:100 192-194
<---
001007: *May 13 14:28:15.789: MGCP Packet received from <CUCM IP>:2427--->
RQNT 175 AALN/S0/SU1/0@VG320.dillbrowLab.local MGCP 0.1
X: 22
R: L/hu
S: G/rt
Q: process,loop
<---
001008: *May 13 14:28:15.789: MGCP Packet sent to <CUCM IP>:2427--->
200 175 OK
<---
001009: *May 13 14:28:17.793: MGCP Packet received from <CUCM IP>:2427--->
MDCX 176 AALN/S0/SU1/0@VG320.dillbrowLab.local MGCP 0.1
C: A000000001b79063000000F5
I: 6
X: 23
L: p:20, a:PCMU, s:off, t:b8
M: sendrecv
R: L/hu, L/hf, D/[0-9ABCD*#]
S:
Q: process,loop
v=0
o=- 6 0 IN EPN AALN/S0/SU1/0@VG320.dillbrowLab.local
s=Cisco SDP 0
t=0 0
m=audio 18946 RTP/AVP 0 101
c=IN IP4 <Phone IP>
a=rtpmap:101 telephone-event
a=fmtp:101 0-15
<---
001010: *May 13 14:28:17.797: MGCP Packet sent to <CUCM IP>:2427--->
200 176 OK
<---
001011: *May 13 14:28:17.797: MGCP Packet received from <CUCM IP>:2427--->
RQNT 177 AALN/S0/SU1/0@VG320.dillbrowLab.local MGCP 0.1
X: 24
R: L/hu, D/[0-9ABCD*#], L/hf
S:
Q: process,loop
<---
001012: *May 13 14:28:17.797: MGCP Packet sent to <CUCM IP>:2427--->
200 177 OK
<---
001015: *May 13 14:28:20.813: MGCP Packet received from <CUCM IP>:2427--->
DLCX 178 AALN/S0/SU1/0@VG320.dillbrowLab.local MGCP 0.1
C: A000000001b79063000000F5
I: 6
X: 25
R: L/hd
S:
Q: process,loop
<---
001016: *May 13 14:28:20.845: MGCP Packet sent to <CUCM IP>:2427--->
250 178 OK
P: PS=151, OS=24160, PR=146, OR=23360, PL=0, JI=0, LA=0
<---
排除MGCP故障
排除MGCP故障时,您可以查看一些有用的show命令和调试,以确定注册或呼叫失败的原因。最好的起点是检查您的MGCP网关是否已注册到呼叫代理。您可以通过show命令show ccm-manager或show mgcp 检查此项:
VG320# show ccm-manager
MGCP Domain Name: VG320.dillbrowLab.local
Priority Status Host
============================================================
Primary Registered <CUCM IP>
First Backup None
Second Backup None
Current active Call Manager: <CUCM IP>
Backhaul/Redundant link port: 2428
Failover Interval: 30 seconds
Keepalive Interval: 15 seconds
Last keepalive sent: 17:42:40 UTC Jul 12 2019 (elapsed time: 00:00:15)
Last MGCP traffic time: 17:42:55 UTC Jul 12 2019 (elapsed time: 00:00:00)
VG320# show mgcp
MGCP Admin State ACTIVE, Oper State ACTIVE - Cause Code NONE
MGCP call-agent: <CUCM IP> 2427 Initial protocol service is MGCP 0.1
MGCP validate call-agent source-ipaddr DISABLED
MGCP validate domain name DISABLED
MGCP block-newcalls DISABLED
这些命令已缩短,仅包含相关输出。有关其他信息,您可以查看以下show输出:
show mgcp
show mgcp endpoint
show mgcp connection
show ccm-manager
show voice port summary
show isdn status
show controller [t1/e1] x/x/x
show call active voice brief
show voice call summary
show voice call status
如果之前的show命令签出,您可以在设备上运行这些调试以进一步确定呼叫失败的原因:
debug mgcp [endpoint |错误 |事件 |数据包]
debug mgcp all(用于高级调试)
debug ccm-manager [backhaul | config-download |错误 |事件]
debug voip ccapi inout
debug vpm signal
debug voip vtsp session
debug isdn q931
前面的调试是您排除注册和呼叫设置问题故障所需的良好起点。
相关信息
RFC 2705:
https://tools.ietf.org/html/rfc2705#section-2.3.2