소개
이 문서는 CUCM(Cisco Unified Communication Manager) 버전 11.5의 일부로 구현된 TFTP(Trivial File Transfer Protocol) 확장 아키텍처 기능에 대해 설명합니다.이는 메모리 사용량 및 컨피그레이션 및 정적 파일 제공 방식과 관련하여 TFTP 서비스를 개선하기 위한 순수 엔지니어링 기능입니다.비즈니스 논리는 동일하게 유지되며 TFTP에서 제공하는 다른 서비스와 관련하여 영향을 미치지 않습니다.
배경 정보
이러한 개선이 필요하고 통합된 이유
현재 설계 문제
- TFTP가 컨피그레이션 파일을 제공하는 방식에 대한 논리는 오랫동안 변경되지 않았습니다.
- 11.5 이전 버전의 TFTP 서비스는 컨피그레이션 파일을 빌드하고 모든 컨피그레이션 파일을 메모리에 캐시합니다.
- 지원되는 전화 수와 관련하여 CUCM에 더 많은 용량이 추가되면서 TFTP 서비스의 메모리 풋프린트가 선형으로 증가했습니다.
- 향후 로드맵은 CUCM에서 구현하기 위해 전화기의 추가 용량이 필요합니다.
- 따라서 TFTP 서비스의 증가하는 메모리 풋프린트 문제를 해결해야 합니다.
서비스 시작 시간
- 20,000~40,000대의 전화기가 구성된 중대형 구축입니다.
- 모든 전화기에 영향을 주는 변경 사항이 발생하면 TFTP는 영향을 받는 모든 컨피그레이션 파일을 빌드하고 캐시를 재구축합니다.
- 이렇게 하면 TFTP 서비스를 시작하는 데 걸리는 시간이 늘어납니다.
- 컨피그레이션 파일에 대한 전화기 요청이 전화기에 통화 중 응답이 전송됩니다.
기능 개요
새로운 기능이 구현되어 캐시 없는 설계로 위의 두 가지 문제를 해결하고 온디맨드 방식으로 구성 파일을 작성합니다.전화기에서 요청이 전송되면 TFTP 서비스는 컨피그레이션 파일을 즉시 빌드하고 이를 전화기에 실시간으로 제공합니다.컨피그레이션 파일을 메모리에 캐시하지 않으므로 서비스 시작 시간과 TFTP 서비스의 메모리 공간이 줄어듭니다.
설계 변경
설계 변경은 '연결 관리'와 '구성 파일 생성'이라는 두 가지 범주로 분류됩니다. 아래 표에는 각 카테고리에서 수행된 변경 사항이 자세히 설명되어 있습니다.
연결 관리 |
구성 파일 생성 |
HTTP |
TFTP |
온디맨드 빌드 및 서명된 컨피그레이션 파일에 대해 프레임워크 추가됨
|
네트워크 서비스 레이어는 모든 TCP 연결을 처리하기 위해 SDL을 사용하도록 설계되었습니다. |
전화기가 UDP를 통해 컨피그레이션 파일을 요청하는 경우 변경 사항 없음 |
성능 향상
아래는 이 새로운 기능의 구현과 함께 향상된 성능을 제공합니다.
- TFTP 서비스의 메모리 공간 대폭 감소
- 메모리 공간은 TFTP 서비스에 약 600MB입니다.
- 파일이 캐시되지 않으므로 서비스 시작 시간이 더 짧습니다.
- 서비스 시작 시간은 시스템에 구축된 전화 수와 상관없습니다.
성능 수치
|
전화 번호 |
11.5 이전 버전의 소요 시간 |
11.5 버전에서 소요된 시간 |
서비스 시작 시간 |
20000 |
3분 38초 |
0분 19초 |
HTTP를 통해 제공되는 파일 |
20000 |
7분 24초 |
4분 06초 |
TFTP를 통해 제공되는 파일 |
20000 |
5분 36초 |
4분 11초 |
참고:위의 숫자는 한 테스트 실행에서 나온 것이 아니라 여러 테스트 실행의 평균입니다.
로그 분석:
사용된 디바이스:
CUCM 버전 11.5.1.10000-6
Cisco IP Communicator 버전 8.6.2
11.5 이전의 HTTP를 통한 구성 파일 요청
전화기에서 구성 파일에 대한 요청
00593088.000 |21:58:11.698 |AppInfo | TID[da900b70] HTTPEngine::getRequest(),
[0xa0d6c90~7~10.65.64.132~54462] INFO:: socket(12), ReqTimeout[60],
Request[GET /SEP000C29ED3D88.cnf.xml HTTP/1.1
모든 파일은 작성된 후 캐시되므로 TFTP는 캐시된 구성 파일을 찾습니다
00593097.000 |21:58:11.698 |AppInfo |CReqContext::FindAndServe(1)[0xa0d6c90~7~10.65.64.132~54462]
,[(SEP000C29ED3D88.cnf.xml),(6779),(0xf388c2a8)] found in config cache
구성 파일이 전화기에 성공적으로 제공됨
00593102.000 |21:58:11.698 |AppInfo | HTTPEngine::sendResponse[0xa0d6c90~7~10.65.64.132~54462]
FileName[SEP000C29ED3D88.cnf.xml], Version[HTTP/1.1], Size[6779]
00593103.000 |21:58:11.698 |AppInfo | HTTPEngine::sendResponse[0xa0d6c90~7~10.65.64.132~54462]
INFO:: [85][HTTP/1.1 200 OK
11.5에서 HTTP를 통한 구성 파일 요청
전화기에서 구성 파일에 대한 요청
00000510.003 |21:47:40.683 |AppInfo | HTTPConnection::wait_SdlDataInd Printing the HTTPRequest :
msgBuffer size [148] --: GET /SEP000C29ED3D88.cnf.xml HTTP/1.1
ServeFile 프로세스에서 'FileRequest' 신호를 ServeDynamicFile로 보냅니다.
00000511.010 |21:47:40.683 |AppInfo | ServeFile::wait_FileRequest Sending the
FileRequest signal to ProcessServeDynamicFile process
00000511.011 |21:47:40.683 |AppInfo |<--ServeFile::wait_FileRequest
00000512.000 |21:47:40.683 |SdlSig |FileRequest |wait
|ServeDynamicFile(1,600,25,1) |ServeFile(1,600,24,1) |1,600,14,4.3^*^* |*TraceFlagOverrode
액세스 설계 구현이 이루어지므로 TFTP가 컨피그레이션 파일을 구축합니다
00000512.027 |21:47:40.684 |AppInfo |TFTPList::GetSupportsFMT(), Pkid[9e9cb809-df9f-4bce-8a41-37cd5f7e4d21] Name[SEP000C29ED3D88] Class[1] Product[30041] Model[30016] Protocol[0], DevProfile[0] SUPPORTs[2], Value[2]
00000512.028 |21:47:40.684 |AppInfo |<--TFTPList::SelectByDeviceID[0,0]
00000512.029 |21:47:40.684 |AppInfo | ServeDynamicFile::wait_FileRequest
Build Config file for Device [SEP000C29ED3D88]
ServeDynamicFile 프로세스에서 'FileResponse' 신호를 ServeFile로 보냅니다.
00000512.091 |21:47:40.686 |AppInfo |<--ServeDynamicFile::wait_FileRequest
00000513.000 |21:47:40.686 |SdlSig |FileResponse |wait
|ServeFile(1,600,24,1) |ServeDynamicFile(1,600,25,1) |1,600,14,4.3^*^* |*TraceFlagOverrode
00000513.002 |21:47:40.686 |AppInfo | ServeFile::wait_FileResponse File
Response signal received by ServeFile process
요청한 파일이 전화로 전송됨
00000514.001 |21:47:40.686 |AppInfo |-->HTTPConnection::wait_FileResponse
00000514.002 |21:47:40.686 |AppInfo | HTTPConnection::wait_FileResponse Requested
file FOUND... Sending file Response
00000514.003 |21:47:40.686 |AppInfo |<--HTTPConnection::wait_FileResponse