소개
이 문서에서는 MGCP(Media Gateway Control Protocol)를 구성하고 문제를 해결하는 방법에 대해 설명합니다. MGCP는 통화 에이전트/엔드포인트 프로토콜입니다.
사전 요구 사항
요구 사항
이 문서에 대한 특정 요건이 없습니다.
사용되는 구성 요소
- Cisco Unified Communications Manager 11.5
- VG320
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
참고: 이 문서에서는 컨피그레이션 예제와 디버그 및 show 명령 출력을 참조점으로 사용합니다. 이 문서의 많은 기능은 Cisco IOS® 및 Cisco IOS® XE에 도입된 버전으로 명확하게 표시되어 있습니다.
공통 정의
속성 |
정의 |
통화 에이전트 |
주요 역할을 수행하며 중앙 집중식 통화 인텔리전스를 제공하는 통화 제어 요소. |
엔드포인트 |
엔드포인트는 통화 에이전트가 제어하는 디바이스입니다. 예: FXO, FXS 또는 DS0 채널 |
PSTN |
공용 교환 전화망. |
MGCP 기본 사항
MGCP(Media Gateway Control Protocol)는 RFC 2705에 의해 정의됩니다. MGCP는 통화 에이전트/엔드포인트 프로토콜로서 엔드포인트가 특정 유형의 통화 에이전트에 의해 제어됩니다. 전체 제어 인텔리전스는 이벤트가 탐지된 후 수행할 작업을 엔드포인트에 지시하는 통화 에이전트에 의해 제어됩니다. MGCP는 TCP 포트 2428 및 UDP 포트 2427을 사용합니다.
MGCP의 TCP 포트 2428은 통화 에이전트에서 새 소켓을 열어 연결 설정 가능 여부를 확인하는 데 사용됩니다. 이 새 소켓이 없으면 후속 MGCP 메시지를 교환할 수 없습니다. 또한 PRI 엔드포인트와 이 엔드포인트가 등록된 통화 에이전트 간에 백홀 메시지를 송/수신하는 데에도 사용됩니다. 마지막으로, 기본 통화 에이전트가 응답하지 않는 경우 TCP 포트 2428을 사용하여 백업 통화 에이전트로 장애 조치를 수행합니다.
MGCP의 UDP 포트 2427은 엔드포인트와 통화 에이전트 간에 교환되는 MGCP 메시지에 사용됩니다.
기본 흐름
기본 MGCP 플로우의 예입니다. 이 예에서 게이트웨이가 이 음성 게이트웨이(엔드포인트)의 PSTN에서 새 통화를 수신함을 확인할 수 있습니다. 그런 다음 게이트웨이는 CUCM(Call Agent)에게 수신된 이 새 통화를 알리고, 통화 에이전트는 게이트웨이에 이 새 통화에 대한 연결을 생성하도록 지시합니다. 마지막으로 게이트웨이가 통화 에이전트에 확인을 다시 전송하여 통화를 설정합니다.
엔드포인트 식별자
통화 에이전트가 이벤트를 보내야 하는 사람 또는 이벤트가 어디에서 오는지 확인할 수 있도록 통화 에이전트의 엔드포인트당 식별자가 필요합니다. 엔드포인트 식별자에는 두 가지 기본 구성 요소가 있습니다.
- 해당 게이트웨이 내의 로컬 이름(대/소문자 구분 안 함)
- 엔드포인트를 관리하는 게이트웨이의 도메인 이름입니다(대/소문자 구분).
예:
- 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 Administration에 로그인해야 합니다. 로그인한 후 Device(디바이스) > Gateway(게이트웨이)로 이동합니다.
이전 선택 항목은 Find and List Gateway(게이트웨이 찾기 및 나열) 페이지에서 시작합니다. 더하기 기호가 있는 [새로 추가] 단추를 선택합니다.
Add New(새로 추가)를 선택한 후 Gateway Type(게이트웨이 유형)을 선택하라는 메시지가 표시됩니다. 등록하려는 하드웨어를 선택하려면 이 드롭다운을 사용하고, 이 디바이스에 대해 원하는 프로토콜을 선택하려면 Next(다음)를 선택합니다(MGCP를 선택해야 함).
사용된 하드웨어 및 프로토콜을 선택했으므로 이제 도메인 이름, Cisco Unified Communications Manager 그룹 및 모듈 정보를 구성해야 합니다. MGCP를 통해 엔드포인트를 등록하는 데 필요한 주요 필드입니다.
Domain Name(도메인 이름)은 1~2개의 부분으로 구성됩니다. Domain Name(도메인 이름) 필드에서 최소한 라우터의 호스트 이름을 입력해야 합니다. 내 시나리오에서 호스트 이름은 다음과 같습니다.
VG320
그러나 게이트웨이에 도메인 이름이 구성된 경우 이 디바이스의 FQDN(Fully Qualified Domain Name)을 구성해야 합니다.
이제 저장을 선택합니다. 페이지가 업데이트되고 서브유닛을 선택할 수 있습니다. 서브유닛을 선택한 후 Save(저장)를 다시 선택합니다. 이제 구성 가능한 포트를 확인할 수 있습니다.
지금 엔드포인트를 구성하려면 아날로그 디바이스를 연결한 포트를 클릭합니다(여기서는 0/0/0). 포트를 선택하면 포트 유형을 구성하라는 프롬프트가 표시됩니다.
이 경우 POTS를 선택합니다. 이 옵션을 선택하면 다른 Call Manager 엔드포인트와 마찬가지로 디바이스 정보에 필요한 모든 값을 입력할 수 있습니다. 단, Device Pool(디바이스 풀)만 필수 항목이지만 Calling Search Space(발신 검색 공간)와 같은 추가 값을 입력할 수 있습니다. 이 작업을 마치면 저장을 클릭할 수 있습니다. 이제 왼쪽 창에 Add a new DN(새 DN 추가) 필드가 입력되어 있습니다. 이제 DN을 이 포트에 연결하고 저장하고 컨피그레이션을 적용할 수 있습니다. 이렇게 하면 포트 컨피그레이션 페이지로 돌아가 포트가 등록된 것으로 표시됩니다.
엔드포인트 등록 및 통화 설정
이 섹션에서는 MGCP 엔드포인트 등록 및 통화 설정의 기본 사항에 대해 설명합니다. 여기에는 게이트웨이가 통화 에이전트와 상호 작용할 때 표시되는 명령 메시지가 포함됩니다. 이 시나리오에서 CUCM은 통화 에이전트입니다.
MGCP 엔드포인트 등록
MGCP 엔드포인트가 CUCM에 등록될 경우 게이트웨이는 CUCM에 대한 TCP 소켓 2428을 엽니다. 여기에서는 UDP 포트 2427을 사용하여 명령 메시지를 전송합니다. 소켓이 열리면 게이트웨이가 RSIP 명령을 CUCM에 전송하여 재시작이 진행되는 동안 엔드포인트가 서비스 해제되어야 함을 알리고 CUCM에서 이에 대한 간단한 확인 응답을 보냅니다. 재시작이 완료되면 CUCM은 매개변수 R: L/hd와 함께 RQNT를 전송합니다. 그러면 게이트웨이가 CUCM에 오프 훅 이벤트를 알려야 합니다.
이때 CUCM은 지정된 엔드포인트의 상태를 확인하기 위해 게이트웨이에 AUEP(Audit Endpoint)를 전송합니다. 게이트웨이의 응답은 엔드포인트 기능이 있는 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로 시작하여 통화에 대한 연결을 설정하는 것을 볼 수 있습니다. 게이트웨이에서 지원하는 항목에 대한 SDP가 포함된 200 OK로 응답합니다. 이 교환이 완료되면 CUCM은 S: G/rt 매개변수와 함께 RQNT 메시지를 게이트웨이로 전송합니다. 이렇게 하면 게이트웨이가 디바이스에 대한 링백을 재생합니다. 상대방이 전화를 받고 전화를 받으면 CUCM은 게이트웨이에 SDP가 있는 MDCX를 보내 상대편 장치에 대한 미디어 정보를 알려줍니다. 게이트웨이에서 이를 승인하기 위해 간단한 200 OK를 다시 전송하며, 이 시점에는 양방향 미디어가 있습니다.
이제 통화에 응답했으므로 CUCM은 매개변수 R: D/[0-9ABCD*#]과 함께 다른 RQNT를 전송합니다. 그러면 게이트웨이는 통화가 활성 상태일 때 누른 DTMF를 CUCM에게 알려 다음 디바이스로 릴레이할 수 있도록 합니다.
통화가 완료되면 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 출력들을 참조하십시오.
mgcp 표시
mgcp 끝점 표시
mgcp 연결 표시
ccm 관리자 표시
음성 포트 요약 표시
isdn 상태 표시
show controller [t1/e1] x/x/x
통화 활성 음성 요약 표시
음성 통화 요약 표시
음성 통화 상태 표시
이전 show 명령이 체크 아웃된 경우 디바이스에서 이러한 디버그를 실행하여 통화가 실패한 이유를 더 자세히 확인할 수 있습니다.
mgcp [엔드포인트 디버그 | 오류 | 이벤트 | 패킷]
모두 디버그 mgcp(고급 디버깅용)
디버그 ccm-manager [백홀 | 컨피그레이션 다운로드 | 오류 | 이벤트]
voip ccapi inout 디버그
디버그 vpm 신호
voip vtsp 세션 디버그
디버그 isdn q931
이전 디버그는 등록 및 통화 설정 문제를 해결하는 데 필요한 작업을 시작할 수 있는 좋은 장소입니다.
관련 정보
RFC 2705:
데이터 추적기 - 알림 요청