소개
이 문서에서는 CUCM(Cisco Unified Communications Manager)용 NTP(Network Time Protocol)에 대해 설명합니다.
사전 요구 사항
요구 사항
이 문서에 대한 특정 요건이 없습니다.
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
기능의 목적
이 문서에서는 CUCM을 통한 NTP의 목적, NTP의 컨피그레이션, 문제 해결을 위해 수집할 데이터, 데이터 분석 예, 추가 연구를 위한 관련 리소스에 대해 설명합니다.
CUCM을 사용하는 NTP의 목적은 서버가 올바른 시간을 인식하도록 하기 위한 것입니다. VOIP(Voice Over Internet Protocol)는 시간 변화에 매우 민감하기 때문에 CUCM 서버의 시간이 중요합니다.
CUCM 클러스터는 데이터베이스 복제 요구 사항 때문에 클러스터의 다른 서버에 가깝게 유지되는 시간 동기화를 유지해야 합니다.
마지막으로, 로그에 올바른 타임스탬프를 가져오려면 문제 해결에 소요되는 시간이 중요합니다.
구성
참고: CUCM에는 특정 NTP 서버가 필요합니다.
Windows NTP 서버는 CUCM에서 지원되지 않습니다. 그러나 Linux NTP 소스, Cisco IOS® NTP 소스, Nexus OS NTP 소스와 같은 다른 유형은 허용됩니다.
다른 Cisco 솔루션에서는 NTP 솔루션에 Windows Server를 활용할 수 있지만 Call Manager, Cisco Unity, Instant Messaging and Presence와 같은 UC 솔루션은 사용할 수 없으며 Linux 기반 또는 Cisco IOS® 기반 NTP 솔루션이 필요합니다.
이는 Windows Time Services에서 SNTP를 사용하는 경우가 많기 때문입니다. 이 SNTP는 Linux 시스템과 동기화하는 데 어려움이 있습니다.
네트워크 다이어그램
CUCM 게시자에는 CUCM 클러스터의 멤버가 아닌 NTP 소스가 필요하므로 CUCM 게시자는 NTP 서버와 시간을 동기화합니다. 이 거래소에서 CUCM 게시자는 NTP 클라이언트입니다.
CUCM 가입자는 CUCM 게시자와 시간을 동기화합니다. 이 교환에서 CUCM 게시자는 NTP 서버이며, 여기서 CUCM 가입자는 NTP 클라이언트입니다.
주의: Cisco IM&P(Instant Messaging & Presence) 서버도 CUCM 클러스터의 가입자로 간주되므로 CUCM의 NTP에 의존합니다. 즉, IM&P 서버에서 NTP가 동기화되지 않은 경우 시스템에서 데이터베이스 복제 및 고가용성에 문제가 발생합니다.
설치 프로세스
CUCM을 설치하면 서버가 클러스터의 첫 번째 노드인지 확인하는 프롬프트가 표시됩니다.
서버가 클러스터의 첫 번째 노드가 아닌 경우 설치 마법사가 NTP 컨피그레이션 단계를 지나 이동합니다. 그러나 NTP 서버가 클러스터의 첫 번째 노드인 경우 해당 서버에 대한 프롬프트가 표시됩니다.
설치 후 OS 관리 웹 페이지를 사용합니다.
설치 후 명령줄 인터페이스를 사용합니다
그림에 나와 있는 것처럼 CUCM 서버 내에서 NTP 서버에 액세스하고 이를 수정하는 데 사용되는 명령을 찾을 수 있습니다.
- utils ntp server list 명령은 시스템에 구성된 NTP 서버를 표시합니다.
- utils ntp server add ntp_address 명령은 시스템에 새 NTP 서버를 추가합니다.
참고: 새 NTP 서버를 추가하려는 경우 CUCM 서버는 추가하기 전에 연결 가능성을 테스트하며, 실패할 경우 다음 오류가 표시됩니다.
- utils ntp server delete 명령을 사용하면 시스템 내에 이미 구성된 NTP를 삭제할 수 있습니다.
문제 해결
수집할 데이터
NTP 문제를 해결할 때 NTP 문제가 있는 CUCM 서버에서 이 데이터를 수집해야 합니다.
- 명령 유틸리티 진단 테스트의 출력입니다.
- 명령의 출력에서는 ntp 상태를 사용합니다.
- Cisco RTMT(Real-Time Monitor Tool)에서 수집한 CUCM의 NTP 로그
예제 분석
예를 들어 CUCM 게시자 및 NTP의 다음 정보가 사용되었습니다.
CUCM 게시자
버전: 11.5(1) SU5
FQDN: cucm-115.home.lab
IP 주소는 192.X.X.X로 시작합니다.
NTP
Google NTP 서버에서
FQDN: time1.example.com.ntp
IP 주소는 216.X.X.X로 시작합니다.
CUCM에 대한 PCAP 검토 - 파일 없음
포트 번호는 123입니다. NTP에 대한 포트입니다. 텍스트 상자에 있는 명령의 출력에서 NTP 버전이 NTPv4에 표시된 4임을 확인할 수 있습니다. 또한 time1.example.com과의 통신을 설정할 때 클라이언트 역할을 하는 게시자를 메모할 수 있습니다. 그러나 cucm-sub1, cucm-sub2 및 cucm-sub3과의 통신을 설정할 때는 서버 역할을 합니다.
From the CLI of the publisher run the command "utils network capture port 123"
Wait until you see traffic (this can take a little time, or it may be instant) then hit
ctrl+c. Look in the traffic to find where your publisher is communicating with its NTP
server and the NTP server is communication with the publisher (if the NTP server isn't
replying then it is an issue in the network or with the NTP server). The primary focus of
this output is the NTP version. In CUCM 9 and later NTP version 3 (NTPv3) can cause issues
and an NTP source using NTPv4 should be the NTP server for the publisher.
admin:utils network capture size all count 10000000 port 123
Executing command with options:
size=128 count=1000 interface=eth0
src=dest= port=123
ip=
16:08:43.199710 IP cucm-sub3.home.lab.39417 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:08:43.199737 IP cucm-115.home.lab.ntp > cucm-sub3.home.lab.39417: NTPv4, Server, length 48
16:08:43.199823 IP cucm-sub3.home.lab.39417 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:08:43.199859 IP cucm-115.home.lab.ntp > cucm-sub3.home.lab.39417: NTPv4, Server, length 48
16:09:01.640980 IP cucm-115.home.lab.50141 > time1.example.com.ntp: NTPv4, Client, length 48
16:09:01.654675 IP time1.example.com.ntp > cucm-115.home.lab.50141: NTPv4, Server, length 48
16:09:01.654733 IP cucm-115.home.lab.50141 > time1.example.com.ntp: NTPv4, Client, length 48
16:09:01.667368 IP time1.example.com.ntp > cucm-115.home.lab.50141: NTPv4, Server, length 48
16:09:01.668612 IP cucm-115.home.lab.50141 > time1.example.com.ntp: NTPv4, Client, length 48
16:09:01.681366 IP time1.example.com.ntp > cucm-115.home.lab.50141: NTPv4, Server, length 48
16:09:01.681518 IP cucm-115.home.lab.50141 > time1.google.com.ntp: NTPv4, Client, length 48
16:09:01.694108 IP time1.google.com.ntp > cucm-115.home.lab.50141: NTPv4, Server, length 48
16:09:01.875016 IP cucm-115.home.lab.48422 > time1.google.com.ntp: NTPv4, Client, length 48
16:09:01.884476 IP cucm-sub3.home.lab.58072 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:01.884568 IP cucm-115.home.lab.ntp > cucm-sub3.home.lab.58072: NTPv4, Server, length 48
16:09:01.884954 IP cucm-sub3.home.lab.58072 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:01.884999 IP cucm-115.home.lab.ntp > cucm-sub3.home.lab.58072: NTPv4, Server, length 48
16:09:01.885381 IP cucm-sub3.home.lab.58072 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:01.885423 IP cucm-115.home.lab.ntp > cucm-sub3.home.lab.58072: NTPv4, Server, length 48
16:09:01.886147 IP cucm-sub3.home.lab.58072 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:01.886184 IP cucm-115.home.lab.ntp > cucm-sub3.home.lab.58072: NTPv4, Server, length 48
16:09:01.888555 IP time1.google.com.ntp > cucm-115.home.lab.48422: NTPv4, Server, length 48
16:09:01.888642 IP cucm-115.home.lab.48422 > time1.google.com.ntp: NTPv4, Client, length 48
16:09:01.900926 IP time1.google.com.ntp > cucm-115.home.lab.48422: NTPv4, Server, length 48
16:09:01.901017 IP cucm-115.home.lab.48422 > time1.google.com.ntp: NTPv4, Client, length 48
16:09:01.913497 IP time1.google.com.ntp > cucm-115.home.lab.48422: NTPv4, Server, length 48
16:09:01.913566 IP cucm-115.home.lab.48422 > time1.google.com.ntp: NTPv4, Client, length 48
16:09:01.926693 IP time1.google.com.ntp > cucm-115.home.lab.48422: NTPv4, Server, length 48
16:09:02.038981 IP cucm-sub2.home.lab.42078 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:02.039117 IP cucm-115.home.lab.ntp > cucm-sub2.home.lab.42078: NTPv4, Server, length 48
16:09:02.039281 IP cucm-sub2.home.lab.42078 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:02.039345 IP cucm-115.home.lab.ntp > cucm-sub2.home.lab.42078: NTPv4, Server, length 48
16:09:02.039434 IP cucm-sub2.home.lab.42078 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:02.039535 IP cucm-115.home.lab.ntp > cucm-sub2.home.lab.42078: NTPv4, Server, length 48
16:09:02.039607 IP cucm-sub2.home.lab.42078 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:02.039814 IP cucm-115.home.lab.ntp > cucm-sub2.home.lab.42078: NTPv4, Server, length 48
16:09:02.066544 IP cucm-sub1.home.lab.46400 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:02.066622 IP cucm-115.home.lab.ntp > cucm-sub1.home.lab.46400: NTPv4, Server, length 48
16:09:02.066751 IP cucm-sub1.home.lab.46400 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:02.066892 IP cucm-115.home.lab.ntp > cucm-sub1.home.lab.46400: NTPv4, Server, length 48
16:09:02.066968 IP cucm-sub1.home.lab.46400 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:02.067104 IP cucm-115.home.lab.ntp > cucm-sub1.home.lab.46400: NTPv4, Server, length 48
16:09:02.067155 IP cucm-sub1.home.lab.46400 > cucm-115.home.lab.ntp: NTPv4, Client, length 48
16:09:02.067189 IP cucm-115.home.lab.ntp > cucm-sub1.home.lab.46400: NTPv4, Server, length 48
CUCM에 대한 PCAP 검토 - 파일 포함
패킷 캡처에서 NTP 문제를 해결하는 데 사용되는 필터는 udp.port == 123입니다. 이 필터를 사용하면 CUCM 게시자가 Google NTP 서버와의 통신을 설정했으며 CUCM 게시자가 CUCM 가입자와도 통신을 설정했음을 확인할 수 있습니다.
CUCM에 대한 CLI 출력 검토
utils ntp 상태 출력
NOTE: All nodes will show the current time in UTC regardless of the time zone of the server
(listed in UTC time). This makes it easy to compare times on the different CUCM nodes.
NOTE: If there is a time difference of 15 minutes or more, it is expected that DB replication
will be broken
1) If the publisher is ahead by 15 minutes, this can result in the pub send data to the
sub and the sub would have a delay to process the data because it has not yet reached the time
in the timestamp of the packets from the publisher (this is expected behavior in this type of situation)
2) If the subscriber is ahead by 15 minutes, this would result in the subscriber drop
the data from the publisher because the subscriber sees it as old data (15 minutes old)
admin:utils ntp status
ntpd (pid 28435) is running...
remote refid st t when poll reach delay offset jitter
==============================================================================
203.0.113.0 .GOOG. 1 u 44 64 3 11.724 -0.021 0.064
unsynchronised
polling server every 8 s
Current time in UTC is : Fri Sep 6 20:54:50 UTC 2019
Current time in America/New_York is : Fri Sep 6 16:54:50 EDT 2019
admin:
이전 출력을 자세히 설명하므로 다음 정보를 읽어 보십시오.
The very first column contains the "tally code" character. Short overview:
* the source you are synchronized to (syspeer)
# source selected, distance exceeds maximum value
o the PPS(Pulse Per Second) source if your ntpd (ppspeer, only if you have a PPS capable system and refclock)
+ candidate, i.e. it is considered a good source
- outlyer, i.e. quality is not good enough
x falseticker, i.e. this one is considered to distribute bad time
blank: source discarded, failed sanity
See the Select field of the Peer status word on the NTP Event Messages and
Status Words page for more information on the tally codes.
remote
the hostname or IP of the remote machine.
refid
the identification of the time source to which the remote machines is synced.
May be (for example) a radio clock or another ntp server)
st
the stratum of the remote machine. 16 is "unsynchronized". 0 is the best
value, that could be (for example) a radio clock or the ntp servers private
caesium clock (see http://www.eecis.udel.edu/~mills/ntp/html/index.html#intro
for more information about ntp in general).
t
types available:
l = local (such as a GPS, WWVB)
u = unicast (most common)
m = multicast
b = broadcast
- = netaddr
when
how many seconds since the last poll of the remote machine.
poll
the polling interval in seconds.
reach
an 8-bit left-rotating register. Any 1 bit means that a "time packet" was
received. The right most bit indicate the status of the last connection
with the NTP server. It is Octal number. Use calculator in progammer
interface to translate from OCT to BIN: For example 377 translates to
11111111. Each 1 means a successful connection to the NTP server. If you
just start a NTP service, and it connects successfully with its server, this
number will change as follows (if connectivity is good):
00000001 = 001
00000011 = 003
00000111 = 007
00001111 = 017
00011111 = 037
00111111 = 077
01111111 = 177
11111111 = 377
delay
the time delay (in milliseconds) to communicate with the remote.
offset
the offset (in milliseconds) between our time and that of the remote.
jitter
the observed jitter (in milliseconds) of time with the remote.
유틸리티 진단 테스트 출력
admin:utils diagnose test
Log file: platform/log/diag1.log
Starting diagnostic test(s)
===========================
test - disk_space : Passed (available: 6463 MB, used: 12681 MB)
skip - disk_files : This module must be run directly and off hours
test - service_manager : Passed
test - tomcat : Passed
test - tomcat_deadlocks : Passed
test - tomcat_keystore : Passed
test - tomcat_connectors : Passed
test - tomcat_threads : Passed
test - tomcat_memory : Passed
test - tomcat_sessions : Passed
skip - tomcat_heapdump : This module must be run directly and off hours
test - validate_network : Passed
test - raid : Passed
test - system_info : Passed (Collected system information in diagnostic log)
test - ntp_reachability : Passed
test - ntp_clock_drift : Passed
test - ntp_stratum : Passed
skip - sdl_fragmentation : This module must be run directly and off hours
skip - sdi_fragmentation : This module must be run directly and off hours
Diagnostics Completed
The final output will be in Log file: platform/log/diag1.log
Please use 'file view activelog platform/log/diag1.log' command to see the output
admin:
유틸리티 진단 테스트 출력에서 NTP가 실패할 경우 다음과 비슷한 결과가 표시됩니다.
admin:utils diagnose test
Log file: platform/log/diag1.log
Starting diagnostic test(s)
===========================
test - disk_space : Passed (available: 6463 MB, used: 12681 MB)
skip - disk_files : This module must be run directly and off hours
test - service_manager : Passed
test - tomcat : Passed
test - tomcat_deadlocks : Passed
test - tomcat_keystore : Passed
test - tomcat_connectors : Passed
test - tomcat_threads : Passed
test - tomcat_memory : Passed
test - tomcat_sessions : Passed
skip - tomcat_heapdump : This module must be run directly and off hours
test - validate_network : Passed
test - raid : Passed
test - system_info : Passed (Collected system information in diagnostic log)
test - ntp_reachability : Warning
The NTP service is restarting, it can take about 5 minutes.
test - ntp_clock_drift : Warning
The local clock is not synchronised.
None of the designated NTP servers are reachable/functioning or legitimate.
test - ntp_stratum : Warning
The local clock is not synchronised.
None of the designated NTP servers are reachable/functioning or legitimate.
skip - sdl_fragmentation : This module must be run directly and off hours
설치 시 NTP가 정상인지 확인합니다. 다음 명령을 실행합니다.
cdrtime > getCurrTime()이 있는 장치에서 pkid,name,dbinfo('utc_to_datetime', cdrtime)를 CDRTIME으로 sql을 실행합니다.
이 명령은 현재 시간과 테이블을 수정한 cdrtime을 비교합니다. 설치/업그레이드에서 잘못된 NTP를 사용한 다음 NTP를 수정한 경우 변경 사항이 발생할 때마다 데이터베이스가 동기화되지 않습니다. 이 문제는 일반적인 NTP 명령(예: utils ntp 상태)을 실행할 때 표시되지 않습니다. 잘못된 NTP 소스에서 좋은 NTP 소스로 이동했기 때문입니다.
나쁜 NTP에서 좋은 NTP로 옮긴 것이 좋습니다. 그러나 좋은 NTP 소스로 옮기면 설치/업그레이드 중에 생성된 테이블이 수정되지 않습니다.
이 명령을 실행할 때 필요한 출력은 다음과 같습니다.
admin:run sql select pkid,name,dbinfo('utc_to_datetime', cdrtime) as CDRTIME from device where cdrtime > getCurrTime()
pkid name cdrtime
==== ==== =======
admin:
다음 출력과 유사한 출력이 있는 경우 설치/업그레이드에 사용된 NTP가 사용되지 않았으며 데이터베이스 복제에 영향을 주는 문제가 발생했음을 나타냅니다.
admin:run sql select pkid,name,dbinfo('utc_to_datetime', cdrtime) as CDRTIME from device where cdrtime > getCurrTime()
pkid name cdrtime
============================= ===== =====================
bf80dd31-9911-43ce-81fd-a99ec0333fb5 MTP_2 2016-09-11 14:38:14.0
4c38fc05-760d-4afb-96e8-69333c195e74 CFB_2 2016-09-11 14:38:14.0
90878c80-e213-4c7e-82b9-6c780aac72f3 ANN_2 2016-09-11 14:38:14.0
08b5bff4-da94-4dfb-88af-ea9ffa96872c MOH_2 2016-09-11 14:38:14.0
93320e4d-1b73-4099-9a7c-c4cddfadb5d9 MTP_3 2016-09-11 14:38:14.0
a6850d42-5f0a-49ce-9fa3-80d45b800e23 CFB_3 2016-09-11 14:38:14.0
9963c9cb-58b0-4191-93e1-8676584f6461 ANN_3 2016-09-11 14:38:14.0
def79fb7-c801-4fb3-85fb-4e94310bf0bd MOH_3 2016-09-11 14:38:14.0
4cd64584-089b-4331-9291-79774330cbc 2 MTP_4 2016-09-11 14:38:14.0
27b18882-db83-4d14-8bce-d3f8dc439610 CFB_4 2016-09-11 14:38:14.0
a40da882-e04f-4649-b2eb-2f79d1289e81 ANN_4 2016-09-11 14:38:14.0
36575ff4-cdea-4945-87e7-638cc555463e MOH_4 2016-09-11 14:38:14.0
추가 고려 사항
1) VM 하드웨어 고려 사항 없이 ESXi 호스트를 업그레이드할 경우 NTP 문제가 발생할 수 있습니다.
2) ESXi 버전이 가상화 매트릭스를 준수하는지 확인합니다.
3) ESXi 버전과 하드웨어 버전이 호환되는지 확인합니다.
관련 정보