Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Problemas de memoria del acelerador

Descripción adicional del problema

Solución

XML en Cisco IOS XR

Uso de API XML

Operaciones admitidas por la API XML

Servicios de esquema XML ofrecidos

Creación de una consulta

Prueba de consultas XML

Perspectiva XML en profundidad en Cisco IOS XR

Interacción de API con el cliente

Errores XML en Cisco IOS XR

Cuando la consulta es incorrecta

Tipos de error

Más Recomendaciones

Introducción

Este documento describe los problemas de aceleración de memoria XML observados en las solicitudes de servicio y las herramientas de Cisco.

Prerequisites

Requirements

Cisco recomienda que tenga conocimiento sobre estos temas:

- Plataforma Cisco IOS® XR

- Infraestructura XML (Lenguaje de marcado extensible)

- Common Object Request Broker Architecture (CORBA)

- Sistema de gestión de elementos (EMS)

- External Data Manager (EDM)

Componentes Utilizados

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.

Problemas de memoria del acelerador

Se abrió un caso con estas preguntas:

1. ¿Cuál es la memoria máxima configurable en el router?

2. ¿Hay alguna forma de interrumpir las respuestas XML grandes?

Respuesta:

1. El cambio máximo de memoria depende de la versión que esté ejecutando el RSP/nodo (versiones para cXR y eXR)

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.

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 predeterminado en cualquier versión es 300 Mbytes

2. Hay diferentes maneras de romper la respuesta XML:

- Iteradores:

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.

- Regulación (velocidad de proceso):

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 límite de uso de memoria".

- Transmisión:

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.

Descripción adicional del problema

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 tener acceso a las herramientas y la información para el uso interno 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: "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: Transmisión.

Nota: pyIOSXR no nos permite trabajar con encabezados diferentes a los de la consulta XML básica que tienen los siguientes elementos:

.

.

.

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.

Solución

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:

DEFAULT

VRF_NAME

NAME

>

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.

XML en Cisco IOS XR

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:

This is an example

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:

- Contenedores

- Hojas

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.

Uso de API XML

Para probar/utilizar la API XML, lo primero que necesita es una consulta.

1. La consulta tiene una cabecera:

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.

3. Con el encabezado, la solicitud y la versión, el cuerpo continúa con cualquier operación XML que tenga la API:

…

Nota: Observe 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:

…

Operaciones admitidas por la API XML

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:

- <Get></Get>: Para recopilar elementos de datos de acción (datos que tiene la hoja).

- <Set></Set>: Para configurar, cambiar o agregar elementos de datos.

- <Eliminar></Delete>: Elimine uno o varios elementos de datos.

- <GetVersionInfo></GetVersionInfo>: Operación que recupera los números de versión principal y secundaria de los componentes solicitados.

- <GetDataSpaceInfo></GetDataSpaceInfo>: Estas etiquetas operativas muestran los nombres de hojas que se asignan a los contenedores.

2. Operaciones CLI:

- <CLI><CLI/>: Etiqueta que nos permite emitir una solicitud de configuración como un comando CLI.

- <GetNext><GetNext/>:Si los datos son mayores que el tamaño del bloque, esta etiqueta se agrega a la siguiente respuesta segmentada.

Servicios de esquema XML ofrecidos

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.

- Configuración: Operación que permite las acciones Obtener, Establecer y Eliminar.

- Operativo: Como los comandos show de CLI.

- Acción: admite la acción Establecer. Con esta operación puede acceder a los datos de acción, como los comandos clear y otros comandos similares.

- AdminOperational: Acceso a los datos operativos del administrador.

- AcciónAdmin: Acceso a los datos de la acción de administración.

- ConfiguraciónAdmin: Acceso a los datos de configuración de la administración.

Creación de una consulta

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:

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 donde se encuentra el usuario.

<operation>: ¿Mediante emisión? puede verificar las operaciones y se pueden ejecutar comandos:

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

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:

Prueba de consultas XML

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.

Consejo: Tenga en cuenta que después de ingresar el comando anterior, los usuarios pueden copiar/pegar la consulta y presionar Enter. El dispositivo muestra la respuesta a la consulta.

RP/0/RP0/CPU0:XR#xml echo format

XML>

XML>

>>> Hit enter here. Immediately getting the reply.

! Reply:

true  >>> This is the requested value.

XML> exit

El router muestra la respuesta y ResultSummary.

Nota: Esta respuesta XML no muestra ni requiere la configuración de memoria del acelerador. 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.

Perspectiva XML en profundidad en Cisco IOS XR

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:

1. Agente CORBA (mediante SSL).

2. Agente SSH.

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:

- En la tarjeta de línea:

- Recopilador de estadísticas

- Servidor de estadísticas

- Desde el procesador del router:

- Administrador de estadísticas.

- SysDB.

- TCP (para la API XML se utiliza TCP 38751)

- NetIO

Nota: Para ver más información sobre esto, consulte 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.

Interacción de API con el cliente

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:

1. Versiones

2. Esquema

Las versiones se pueden definir en 2 áreas:

- Etiqueta de solicitud:

- Etiqueta de componente principal:

Que se aplica al componente específico:

Nota: Recuerde que puede comprobar la versión del esquema con la operación GetVersionInfo aplicada al contenedor.

- Actualización de versión secundaria: Cualquier adición al esquema XML, como agregar un nuevo elemento de datos.

- Actualización de la versión principal: Cambios semánticos, eliminaciones del esquema o componente, etc.

Puede comprobar la versión. El siguiente ejemplo muestra cómo hacerlo:

Nota: Las operaciones XML son GET, SET, etc.

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>

>>> This is the request

XML>

Nota: Request muestra todas las versiones en ejecución del componente principal y también muestra la versión en los contenedores que contiene.

Errores XML en Cisco IOS XR

Si la ruta de acceso es correcta, cada solicitud de API XML muestra la información solicitada.

Cuando la consulta es incorrecta

El router muestra tres mensajes diferentes:

- ElementoNoEncontrado

Este mensaje se muestra cada vez que una operación GET tiene una respuesta vacía.

- ElementoNoEncontradoDebajo

La operación GET no contiene esta operación en el esquema XML.

- NotFound

No se puede encontrar el elemento solicitado en el nivel de elemento.

Tipos de error

1.Transporte: Los errores de esta categoría incluyen cualquier elemento comprendido entre la comunicación agente/cliente XML. 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 diferente 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, pueden producirse estos problemas. Para resolver estos problemas, debe resolver los problemas de los procesos, por ejemplo commit, sysdb, etc.

Nota: La información de error se agrega en el nivel de elemento de operación. Se codifica en forma de código de error (int de 32 bits) y atributos Errormsg.

Más Recomendaciones

Otras técnicas útiles:

1. Caracteres comodín: Este es el también conocido como Consultas específicas.

2. Lotes: Combinación de varias técnicas u operaciones en una única solicitud (operaciones de mejor esfuerzo).

3. Filtrado personalizado: Si el esquema lo permite, para ayudar a seleccionar las filas de las tablas.