Introducción
Este documento trata sobre la función de arquitectura de escala del protocolo trivial de transferencia de archivos (TFTP) implementada como parte de Cisco Unified Communication Manager (CUCM) versión 11.5, la versión más reciente de CUCM. Esta es puramente una función de ingeniería para mejorar el servicio TFTP con respecto al uso de memoria y cómo sirve a la configuración y a los archivos estáticos. La lógica empresarial sigue siendo la misma y no hay impacto con respecto a otros servicios proporcionados por TFTP.
Antecedentes
Razones por las que esta mejora fue necesaria e incorporada
Problema con el diseño actual
- La lógica de cómo TFTP atiende los archivos de configuración no ha cambiado desde hace mucho tiempo.
- Antes de 11.5, el servicio TFTP construye los archivos de configuración y almacena en memoria caché todos los archivos de configuración.
- Con más capacidad añadida a CUCM con respecto al número de teléfonos soportados, la huella de memoria del servicio TFTP aumentó linealmente.
- Las hojas de ruta futuras requieren capacidad adicional para los teléfonos con el fin de implementarlas en CUCM.
- Por lo tanto, abordar el aumento de la huella de memoria del servicio TFTP se vuelve importante.
Tiempo de inicio del servicio
- En implementaciones medianas a grandes con teléfonos de 20 000 a 40 000 configurados.
- Cuando se realiza un cambio que afecta a todos los teléfonos, el TFTP genera todos los archivos de configuración afectados y reconstruye la memoria caché.
- Esto aumenta el tiempo que tarda el servicio TFTP en iniciarse.
- En el momento en que los teléfonos solicitan el archivo de configuración, se envía una respuesta de ocupado al teléfono.
Descripción general de características
La nueva función implementada aborda los dos problemas anteriores mediante un diseño sin caché y genera el archivo de configuración a demanda. Cuando se envía una solicitud desde el teléfono, el servicio TFTP genera el archivo de configuración sobre la marcha y lo envía al teléfono en tiempo real. No guardará en memoria caché el archivo de configuración, lo que a su vez reduce el tiempo de inicio del servicio y el espacio de memoria del servicio TFTP.
Cambios de diseño
Los cambios realizados en el diseño se clasifican en dos categorías, a saber, "Gestión de conexiones" y "Generación de archivos de configuración". En la tabla siguiente se detallan los cambios realizados en cada categoría.
Gestión de conexiones |
Generación de archivos de configuración |
HTTP |
TFTP |
Marco agregado para la generación a demanda y archivos de configuración firmados
|
La capa de servicio de red está diseñada para utilizar SDL para gestionar todas las conexiones TCP |
No hay cambios cuando los teléfonos solicitan los archivos de configuración a través de UDP |
Mejoras de rendimiento
A continuación se muestran las mejoras de rendimiento logradas con la implementación de esta nueva función.
- Reducción significativa del espacio de memoria del servicio TFTP
- La huella de memoria es de aproximadamente 600 MB para el servicio TFTP
- La hora de inicio del servicio es menor, ya que los archivos no están almacenados en caché
- La hora de inicio del servicio es independiente del número de teléfonos implementados en el sistema
Valores de rendimiento
|
Nº de teléfonos |
Tiempo de espera en la versión anterior a 11.5 |
Tiempo empleado en la versión 11.5 |
Hora de inicio del servicio |
20000 |
3 minutos 38 segundos |
0 minutos 19 segundos |
Archivos almacenados en HTTP |
20000 |
7 minutos 24 segundos |
4 minutos 06 segundos |
Archivos servidos a través de TFTP |
20000 |
5 minutos 36 segundos |
4 minutos 11 segundos |
Nota: Los números anteriores no son sólo de una ejecución de prueba, sino que son una media de varias ejecuciones de prueba.
Análisis de registro:
Dispositivos utilizados:
CUCM, versión 11.5.1.10000-6
Cisco IP Communicator versión 8.6.2
Solicitud de archivo de configuración sobre HTTP en la versión anterior a 11.5
Solicitud desde el teléfono para el archivo de configuración
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
Dado que todos los archivos se almacenan en la memoria caché después de su compilación, TFTP encuentra el archivo de configuración en la memoria caché
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
El archivo de configuración se envía correctamente al teléfono
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
Solicitud de archivo de configuración sobre HTTP en 11.5
Solicitud desde el teléfono para el archivo de configuración
00000510.003 |21:47:40.683 |AppInfo | HTTPConnection::wait_SdlDataInd Printing the HTTPRequest :
msgBuffer size [148] --: GET /SEP000C29ED3D88.cnf.xml HTTP/1.1
El proceso ServeFile envía la señal 'FileRequest' a 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
Dado que se implementa el diseño de caché, verá que el TFTP genera el archivo de configuración
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]
El proceso ServeDynamicFile envía la señal 'FileResponse' a 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
El archivo solicitado se envía al teléfono
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