El conjunto de documentos para este producto aspira al uso de un lenguaje no discriminatorio. A los fines de esta documentación, "no discriminatorio" se refiere al lenguaje que no implica discriminación por motivos de edad, discapacidad, género, identidad de raza, identidad étnica, orientación sexual, nivel socioeconómico e interseccionalidad. Puede haber excepciones en la documentación debido al lenguaje que se encuentra ya en las interfaces de usuario del software del producto, el lenguaje utilizado en función de la documentación de la RFP o el lenguaje utilizado por un producto de terceros al que se hace referencia. Obtenga más información sobre cómo Cisco utiliza el lenguaje inclusivo.
Cisco ha traducido este documento combinando la traducción automática y los recursos humanos a fin de ofrecer a nuestros usuarios en todo el mundo contenido en su propio idioma. Tenga en cuenta que incluso la mejor traducción automática podría no ser tan precisa como la proporcionada por un traductor profesional. Cisco Systems, Inc. no asume ninguna responsabilidad por la precisión de estas traducciones y recomienda remitirse siempre al documento original escrito en inglés (insertar vínculo URL).
Este documento describe los problemas de aceleración de memoria XML observados en las solicitudes de servicio y las herramientas de Cisco.
Cisco recomienda que tenga conocimiento sobre estos temas:
La información de este documento se basa en ASR9000.
La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Se abrió un caso con estas preguntas:
Respuesta:
En la versión de 64 bits (eXR). Dispone de un tamaño de memoria del acelerador:
RP/0/RSP1/CPU0:XR#show version
Wed Jul 26 21:10:16.761 IST
Cisco IOS XR Software, Version 7.1.3
Copyright (c) 2013-2020 by Cisco Systems, Inc.
Build Information:
Built By : gopalk2
Built On : Thu Nov 26 10:51:48 PST 2020
Built Host : iox-ucs-027
Workspace : /auto/srcarchive17/prod/7.1.3/asr9k-x64/ws
Version : 7.1.3
Location : /opt/cisco/XR/packages/
Label : 7.1.3
cisco ASR9K () processor
System uptime is 2 weeks 17 hours 22 minutes
RP/0/RSP1/CPU0:XR# configuration
RP/0/RSP1/CPU0:XR(config)#xml agent throttle ?
memory Memory usage
process-rate Process rate
RP/0/RSP1/CPU0:XR(config)#xml agent throttle memory ?
<100-1024> Size of the memory usage in Mbytes per session (default 300 Mbytes)
En versión de 32 bits (cXR). Tiene otro límite:
RP/0/RSP0/CPU0:XR#show version
Cisco IOS XR Software, Version 6.4.2[Default]
Copyright (c) 2020 by Cisco Systems, Inc.
ROM: System Bootstrap, Version 10.59(c) 1994-2014 by Cisco Systems, Inc.
<snip>
Configuration register on node 0/RSP0/CPU0 is 0x102
Boot device on node 0/RSP0/CPU0 is disk0:
RP/0/RSP0/CPU0:XR# configuration
RP/0/RSP0/CPU0:XR(config)#xml agent throttle memory ?
<100-600> Size of the memory usage in Mbytes per session (default 300 Mbytes)
Nota: El valor por defecto en cualquier versión es 300 Mbytes
2. Hay diferentes maneras de romper la respuesta XML:
Cuando se configuran los iteradores, el segmento de la respuesta total XML en un tamaño de ventana específico. La ventana tiene el tamaño del iterador. Por ejemplo, si la respuesta es de 1 Gb y el tamaño del iterador es de 500 Mb, se segmenta el XML en 2 respuestas.
Este método cambia la respuesta agregando (en función del tamaño del iterador) operaciones GetNext (lo que necesita la respuesta ).
Puede haber hasta 10 iteradores para una sesión.
Esta característica limita la memoria consumida por el proceso XML. En caso de que un proceso sobrepase la memoria, responde con el mensaje de error: "Se ha alcanzado el acelerador en el uso de la memoria".
Al igual que Iterators, Streaming segmenta la respuesta XML en ventanas específicas. La diferencia es la respuesta, elimina la operación GetNext y el identificador del iterador. El XML envía los paquetes transmitidos y el cliente genera la respuesta cuando finaliza la secuencia.
Para los casos prácticos en los que se necesita automatización, utilice la herramienta pyIOSXR. Esta herramienta de automatización es un agente XML, ayuda a ejecutar algunos comandos show y, en general, se conecta al dispositivo.
Cada vez que envía una solicitud grande con este agente, se muestra un error:
Nota: solo los usuarios registrados de Cisco pueden acceder a la información y las herramientas internas de Cisco.
RESPONSE ERROR: 0xa367a600 'XML Service Library' detected the 'fatal' condition 'The throttle on the memory usage has been reached. Please optimize the request to query smaller data.'
Si aparece el mensaje de error "optimizar la solicitud para consultar datos más pequeños", puede configurar la API XML del agente con iteradores. Esto, en teoría, permite segmentar la respuesta.
Cuando se configuraron los iteradores, se muestra el mismo mensaje de error: "RESPONSE ERROR...Please optimize the request to query small data" (Error de respuesta... Optimice la solicitud para consultar datos más pequeños).
Cuando se muestra un error, el siguiente paso es comprender por qué la función, en este caso Iteradores, no funcionó para la consulta.
El pyIOSXR recomienda que el agente XML esté habilitado correctamente en el dispositivo, lo que significa que la API no permite el uso de iteradores.
El siguiente paso es probar la segunda opción: Streaming.
Nota: pyIOSXR no nos permite trabajar con encabezados diferentes a la consulta XML básica que tiene los siguientes elementos:
<?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
<Operation>
.
.
.
</Operation>
</Request>
La transmisión por secuencias y los iteradores agregan un encabezado a las consultas. La transmisión agrega una ID de secuencia que ayuda al sistema a generar la respuesta completa. Los iteradores agregan GET_Next e ID de iterador.
La prueba de streaming también mostró el mismo mensaje de error que Iterators.
En la sección Más recomendaciones para realizar consultas al dispositivo, encontrará más herramientas para resolver estos problemas. El comodín es uno de ellos. El comodín es la solución para el límite del acelerador de memoria.
Los comodines crean una consulta específica para evitar solicitar información innecesaria. Por ejemplo, para la información de BGP utilice el comando show route bgp en lugar del comando genérico show route. Este ejemplo se aplica a la lógica y las consultas XML. Solicitar información masiva al sistema puede generar problemas de memoria y de procesamiento.
Cuando se abrió el caso, se utilizó esta consulta:
<?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
<Get>
<Operational>
<BGP MajorVersion="36" MinorVersion="1">
<InstanceTable>
<Instance>
<Naming>
<InstanceName>
DEFAULT
</InstanceName>
</Naming>
<InstanceActive>
<VRFTable>
<VRF>
<Naming>
<VRFName>
VRF_NAME
</VRFName>
</Naming>
<AFTable>
<AF>
<Naming>
<AFName>
NAME
</AFName>
</Naming>
<NetworkTable>
</NetworkTable>
</AF>
</AFTable>
</VRF>
</VRFTable>
</InstanceActive>
</Instance>
</InstanceTable>
</BGP>>
</Operational>
</Get>
</Request>
Esta consulta se dirige a las tablas BGP completas. Para esta solicitud no específica, la respuesta fue de casi 2,2 Gb, por lo tanto, se alcanza el límite de aceleración de memoria.
Para solucionarlo, se requiere una consulta específica, esto permite que el sistema procese la consulta y devuelva la información.
Nota: En caso de que se requiera más información, especificaciones u otros comandos, haga clic en el siguiente enlace Guía de programación XML: Guía de programación XML XR
El XML define cómo se muestran y estructuran los datos. Esta es una manera de analizar lo que el equipo entiende como bits, y muestra información estructurada y estandarizada.
XML tiene esta estructura:
<init>
<body>
<message>This is an example</message>
</body>
</init>
Todas las etiquetas tienen dos partes, la etiqueta de apertura (<init>) y la etiqueta de cierre (</init>). Si no se utiliza esta estructura, XML no puede comprender dónde termina una etiqueta.
XML está formado por dos entidades:
Una analogía para estos datos estructurados es comparar los datos XML como un árbol. Un contenedor es una rama y cada rama tiene hojas tropezadas. Las hojas no contienen más que información.
Por ejemplo, el siguiente árbol tiene la raíz en gris, los contenedores en blanco y las hojas en azul.
Para probar/utilizar la API XML, lo primero que necesita es una consulta.
1. La consulta tiene una cabecera:
<?xml version="1.0" encoding="UTF-8”?>
Nota: Esta es la única etiqueta que no necesita una etiqueta de cierre.
2. Debe agregar una etiqueta para la solicitud. En la solicitud, debe especificar la versión.
<Request MajorVersion="1" MinorVersion="0">
3. Con el encabezado, la solicitud y la versión, el cuerpo continúa con cualquier operación XML que tenga la API:
<Operation>
<Operation_1>
<Operation_2>
…
<Operation_n>
Nota: Tenga en cuenta que las solicitudes incluyen diferentes operaciones en cada consulta. No es necesario realizar una solicitud por operación.
En el siguiente ejemplo, se muestra una solicitud con toda la información necesaria:
<?xml version="1.0" encoding="UTF-8”?>
<Request MajorVersion="1" MinorVersion="0">
<Operation></Operation>
<Operation_1></Operation_1>
<Operation_2></Operation_2>
…
<Operation_n></Operation_n>
</Request>
Cisco IOS XR admite 5 operaciones que permiten a los usuarios interactuar con la información que tiene el esquema XML:
1. Operaciones de datos nativos:
2. Operaciones CLI:
La API XML implementa los siguientes espacios de nombres:
Nota: En caso de que necesite ver objetos raíz, visite: Administración de redes XML de Cisco IOS-XR.
Precaución: tenga en cuenta que cada espacio de nombres supervisa datos y operaciones diferentes.
Hay dos caminos diferentes para viajar. Una vez seleccionados los espacios de nombres para la consulta, debe utilizar un esquema para trabajar con:
1. Documentación del esquema XML
Estas opciones proporcionan un árbol XML completo que muestra contenedores y hojas. Para obtener documentación, haga clic en Esquemas XML de CRS.
Se muestra la página de documentación.
Esta página muestra objetos, contenedores y elementos secundarios. Cada objeto contiene un objeto secundario. Si el objeto secundario no contiene ningún otro contenedor, se considera una hoja.
Puede hacer clic en el elemento secundario y se mostrará la información para crear una consulta. Por ejemplo, para IPv4:
En la imagen anterior, para cualquier consulta de IPv4, se puede ejecutar la operación de configuración, dirigida a la IP del contenedor, en el contenedor Cinetd, en el contenedor Services y, finalmente, en la hoja IPv4.
Nota: Cualquier operación que necesite ser una hoja para realizar la consulta.
La consulta sería la siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
<Get>
<Configurations>
<IP>
<Cinetd>
<Services>
<IPv4/>
</Services>
</Cinetd>
</IP>
</Configurations>
</Get>
</Request>
2. API XML
La API XML está integrada en Cisco IOS XRl. Para ver el árbol XML, utilice el comando show xml schema. Al ejecutar el comando, todo el esquema XML se ve en una CLI similar a Linux.
En esta CLI se incluyen las siguientes acciones:
?:Igual que —help
LS: Enumere los recipientes/hojas en la sucursal en la que se encuentra el usuario.
<operation>: Al ejecutar ? puede comprobar las operaciones y los comandos que se pueden ejecutar:
Algunas operaciones son:
-config
- adminconfig
-cd
-lista
- oper
-acción
CD: Cambiar directorio/contenedor.
El ejemplo muestra el siguiente:
RP/0/RP0/CPU0:XR#show xml schema
Username:admin
Password:
xml-schema[config]:> ?
config oper action
adminconfig adminoper adminaction
cd pwd classinfo
list ls datalist
walk walkdata get
hierarchy quit exit
help
xml-schema[config]:> ls
[container] RIP
[container] TCL
[container] LawfulIntercept
[container] ErrorDisable
[container] PerfMgmt
[container] RCC
[container] FrequencySynchronization
[container] HwModuleProfileConfig
[container] MPLSStatic
[container] XML
[container] Tpa
[container] MLD
[leaf] RPIsolationEnabled
[leaf] RPIsolationMultiple
[container] AMT
[container] PriorityFlowControlWatchdog
[container] SSH
[container] BNG_PBR
<snip>
Advertencia: tenga en cuenta que se necesitan credenciales para iniciar sesión en el dispositivo. Estas credenciales son locales para el dispositivo y requieren perfiles root-ls/admin.
En el ejemplo siguiente se muestra cómo generar una consulta mediante la API XML. Por ejemplo, la consulta debe comprobar si el agente XML está habilitado:
xml-schema[config]:> ls
[container] RIP
[container] TCL
[container] LawfulIntercept
[container] ErrorDisable
[container] PerfMgmt
[container] RCC
[container] FrequencySynchronization
[container] HwModuleProfileConfig
[container] MPLSStatic
[container] XML >>> Here
[container] Tpa
[container] MLD
[leaf] RPIsolationEnabled
[leaf] RPIsolationMultiple
[container] AMT
[container] PriorityFlowControlWatchdog
[container] SSH
[container] BNG_PBR
[container] L2TP
[container] Exception
[container] IP_RAW
[container] MSTAG
[container] FpdXRConfig
xml-schema[config]:> cd XML
xml-schema[config]:XML> ls
[container] Agent
xml-schema[config]:XML> cd Agent
xml-schema[config]:XML.Agent> ls
[container] Default
[container] SSL
[container] TTY
xml-schema[config]:XML.Agent> cd TTY
xml-schema[config]:XML.Agent.TTY> ls
[leaf] Enable >>> Leaf of interest.
[leaf] IterationSize
[leaf] StreamingSize
[container] Throttle
[container] Session
Observe el siguiente mensaje:
xml-schema[config]:XML.Agent.TTY>
El mensaje anterior muestra el árbol XML. Con esta información la consulta es:
<?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
<Get>
<Configuration>
<XML>
<Agent>
<TTY></TTY>
</Agent>
</XML>
</Configuration>
</Get>
</Request>
Una vez generada la consulta, el siguiente paso es probarla. Para probarlo, puede ejecutar el comando xml echo format en la CLI. Esta acción se puede archivar en el mismo dispositivo.
Sugerencia: tenga en cuenta que después de introducir el comando anterior, los usuarios pueden copiar/pegar la consulta y pulsar Intro. El dispositivo muestra la respuesta a la consulta.
RP/0/RP0/CPU0:XR#xml echo format
XML>
XML> <?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
<Get>
<Configuration>
<XML>
<Agent>
<TTY></TTY>
</Agent>
</XML>
</Configuration>
</Get>
</Request> >>> Hit enter here. Immediately getting the reply.
! Reply:
<?xml version="1.0" encoding="UTF-8"?>
<Response MajorVersion="1" MinorVersion="0">
<Get>
<Configuration>
<XML MajorVersion="1" MinorVersion="4">
<Agent>
<TTY>
<Enable>
true >>> This is the requested value.
</Enable>
</TTY>
</Agent>
</XML>
</Configuration>
</Get>
<ResultSummary ErrorCount="0"/>
</Response>
XML> exit
El router muestra la respuesta y ResultSummary.
Nota: Esta respuesta XML no muestra ni requiere que se configure ninguna memoria de aceleración. La respuesta, ya que no utiliza ningún SSH/TTY, se solicita independientemente del tamaño. Una cosa es el cliente XML y otra el comando incrustado de eco XML, el comportamiento puede cambiar.
Cisco IOS XR es un sistema modular que requiere diferentes paquetes para funcionar. Se considera que XML está en los subsistemas del plano de administración.
Cuando XR se inició, había 2 maneras diferentes de utilizar XML en el dispositivo:
Nota: CORBA ha quedado obsoleto después de la versión 3.7.
CORBA como protocolo heredado utiliza SSL, que se encuentra en los paquetes de seguridad. Por otro lado, el método SSH necesita que se utilice el paquete de capacidad de administración.
El infra se distribuye de la siguiente manera:
A partir de la imagen anterior, el proceso principal de XML se ve en el procesador del router y del switch (RSP). Estos procesos tienen una API común que supervisa toda la información de los demás procesos del dispositivo, que son:
Nota: Para ver más información al respecto, verifique la sección Errores XML en Cisco IOS XR.
Dependiendo de la solicitud, se desencadenan uno o más procesos. Cuando se desarrollan herramientas de automatización, si la respuesta es mayor que el tamaño del bloque, la respuesta no puede tener éxito. Si un proceso tarda mucho tiempo en responder, puede generar registros de EDM, apagarse o afectar a los servicios.
La siguiente imagen muestra la interacción:
Para configurar/activar el agente XML en el dispositivo, utilice:
RP/0/RP0/CPU0:XR#config
RP/0/RP0/CPU0:XR(config)#xml agent tty
RP/0/RP0/CPU0:XR(config-xml-tty)#commit
El sistema debe ponerse de acuerdo con el cliente en las siguientes áreas:
Las versiones se pueden definir en 2 áreas:
<Request Major Version=“1” MinorVersion=“0”>
Que se aplica al componente específico:
<BGP MajorVersion=“1” MinorVersion=“0”>
Nota: Recuerde que puede comprobar la versión del esquema con la operación GetVersionInfo aplicada al contenedor.
Puede comprobar la versión. El siguiente ejemplo muestra cómo hacerlo:
Nota: Las operaciones XML son GET, SET, etc.
<?xml version=”1.0” encoding=“UTF-8”?>
<Request Major Version=“1” MinorVersion=“0”>
<GetVersionInfo>
<Operation/>
</GetVersionInfo>
</Request>
Utilice el comando xml echo formal y luego agregue la etiqueta GetVersionInfo a la consulta para encontrar la versión que se está ejecutando en el router. como se muestra aquí:
RP/0/RSP0/CPU0:XR#xml echo format
Mon Jul 31 13:53:50.993 UTC
XML> <?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
<GetVersionInfo>
<Configuration>
<XML>
<Agent>
</Agent>
</XML>
</Configuration>
</GetVersionInfo>
</Request> >>> This is the request
<?xml version="1.0" encoding="UTF-8"?>
<Response MajorVersion="1" MinorVersion="0">
<GetVersionInfo>
<Configuration>
<XML MajorVersion="1" MinorVersion="4">
<Agent>
<Default>
<VRFTable>
<VRF>
<ApplyGroup MajorVersion="2" MinorVersion="3"/>
<ExcludeGroup MajorVersion="2" MinorVersion="3"/>
<ApplyGroupAppend MajorVersion="2" MinorVersion="3"/>
<ApplyGroupRemove MajorVersion="2" MinorVersion="3"/>
</VRF>
</VRFTable>
</Default>
<SSL>
<VRFTable>
<VRF>
<ApplyGroup MajorVersion="2" MinorVersion="3"/>
<ExcludeGroup MajorVersion="2" MinorVersion="3"/>
<ApplyGroupAppend MajorVersion="2" MinorVersion="3"/>
<ApplyGroupRemove MajorVersion="2" MinorVersion="3"/>
</VRF>
</VRFTable>
</SSL>
</Agent>
</XML>
</Configuration>
</GetVersionInfo>
<ResultSummary ErrorCount="0"/>
</Response>
XML>
Nota: La solicitud muestra todas las versiones en ejecución del componente principal y también muestra la versión en los contenedores que contiene.
Si la ruta de acceso es correcta, cada solicitud de API XML muestra la información solicitada.
El router muestra tres mensajes diferentes:
Este mensaje se muestra cada vez que una operación GET tiene una respuesta vacía.
La operación GET no contiene esta operación en el esquema XML.
No se puede encontrar el elemento solicitado en el nivel de elemento.
1.Transport: Los errores de esta categoría incluyen cualquier cosa entre la comunicación XML agente/cliente. Esto significa que cualquier interacción SSH o problemas pueden ocurrir en el transporte. Por lo tanto, para verificar este tipo de problemas, se sugiere verificar los seguimientos de SSH para verificar cualquier problema con la autenticación, el puerto, etc.
2. Analizador XML: cualquier problema con el formato y la sintaxis, problemas en la respuesta enviada o en la consulta. Estos problemas normalmente envían la razón del error cuando se produce un error.
Por ejemplo:
ERROR: 0xa367a600 'XML Service Library' detected the 'fatal' condition 'The throttle on the memory usage has been reached.
3. Esquema XML: Cualquier esquema distinto del esquema del router. Para resolver estos problemas, verifique el esquema y las versiones de CLI.
Por ejemplo:
ErrorCode="0x43688400" ErrorMsg="'XMLMDA' detected the 'warning' condition 'An XML request contains an element which is unrecognised or incorrectly positioned&apos
4. Procesamiento de la operación: Al configurar el dispositivo, estos problemas pueden ocurrir. Para resolver estos problemas, debe resolver los problemas de los procesos, por ejemplo commit, sysdb, etc.
Nota: La información de error se añade en el nivel de elemento de operación. Se codifica en forma de código de error (int de 32 bits) y atributos Errormsg.
Otras técnicas útiles:
1. Caracteres comodín: esta consulta también se conoce como consultas específicas.
2. Lotes: Combinación de varias técnicas u operaciones en una sola solicitud (operaciones de mejor esfuerzo).
3. Filtrado personalizado: Si el esquema lo permite, para ayudar a la selección de filas en tablas.
Revisión | Fecha de publicación | Comentarios |
---|---|---|
1.0 |
16-Feb-2024 |
Versión inicial |