Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Limitazione dei problemi di memoria

Ulteriore descrizione del problema

Soluzione

XML in Cisco IOS XR

Uso dell'API XML

Operazioni supportate dall'API XML

Servizi XML Schema offerti

Creazione di una query

Test delle query XML

XML Deep Dive in Cisco IOS XR

Interazione API con il client

Errori XML in Cisco IOS XR

Quando la query è errata

Tipi di errore

Ulteriori suggerimenti

Introduzione

In questo documento vengono descritti i problemi relativi alla limitazione della memoria XML rilevati nelle richieste di servizio e negli strumenti Cisco.

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza dei seguenti argomenti:

- Piattaforma Cisco IOS® XR

- Infrastruttura XML (Extensible Markup Language)

- Architettura CORBA (Common Object Request Broker)

- Sistema di gestione degli elementi (EMS)

- EDM (External Data Manager)

Componenti usati

Il riferimento delle informazioni contenute in questo documento è ASR9000.

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Limitazione dei problemi di memoria

È stato aperto un caso con queste domande:

1. Qual è la memoria massima configurabile sul router?

2. È possibile interrompere le risposte XML di grandi dimensioni?

Risposta.

1. La variazione massima della memoria dipende dalla versione in esecuzione dell'RSP/nodo (versioni per cXR e eXR)

Nella versione a 64 bit (eXR). La memoria è di una velocità:

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)

Nella versione a 32 bit (cXR). Hai un altro limite:

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: L'impostazione predefinita in entrambe le versioni è 300 Mbyte

2. Esistono diversi modi per interrompere la risposta XML:

- Iteratori:

Quando gli iteratori vengono configurati, la risposta totale XML viene segmentata in base alle dimensioni specifiche delle finestre. La finestra ha le dimensioni dell'iteratore. Ad esempio, se la risposta è 1 Gb e la dimensione dell'iteratore è 500 MB, il codice XML viene segmentato in 2 risposte.

Questo metodo modifica la risposta aggiungendo (in base alle dimensioni dell'iteratore) le operazioni GetNext (ovvero le informazioni necessarie per la risposta).

Per una sessione possono essere presenti fino a 10 iteratori.

- Limitazione (velocità di elaborazione):

Questa funzionalità limita la memoria utilizzata dal processo XML. Se un processo supera la memoria, risponde con il messaggio di errore: "È stata raggiunta la limitazione sull'utilizzo della memoria".

- Streaming:

Analogamente agli iteratori, lo streaming segmenta la risposta XML in finestre specifiche. La differenza è rappresentata dalla risposta, che rimuove l'operazione GetNext e l'ID iteratore. Il codice XML invia i pacchetti trasmessi e il client genera la risposta al termine del flusso.

Ulteriore descrizione del problema

Per i casi in cui è necessaria l'automazione, utilizzare lo strumento pyIOSXR. Questo strumento di automazione è un agente XML, consente di eseguire alcuni comandi show e, in generale, si connette al dispositivo.

Ogni volta che si invia una richiesta importante con questo agente, viene visualizzato un errore:

Nota: Solo gli utenti Cisco registrati possono accedere agli strumenti e alle informazioni interne di 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.'

Con il messaggio di errore "optimize the request to query small data" (ottimizza la richiesta per eseguire query su dati di dimensioni inferiori), è possibile configurare l'API XML dell'agente con gli iteratori. Questo, in teoria, permette di segmentare la risposta.

Quando sono stati configurati gli iteratori, viene visualizzato lo stesso messaggio di errore: "ERRORE DI RISPOSTA...Ottimizzare la richiesta per eseguire una query su dati di dimensioni inferiori".

Quando viene visualizzato un errore, il passaggio successivo consiste nel comprendere il motivo per cui la funzione, in questo caso gli iteratori, non ha funzionato per la query.

pyIOSXR consiglia di abilitare correttamente l'agente XML nel dispositivo, ovvero l'API non consente l'utilizzo degli iteratori.

Il passo successivo è provare la seconda opzione: Streaming.

Nota: pyIOSXR non consente l'utilizzo di intestazioni diverse dalla query XML di base, che includono gli elementi seguenti:

.

.

.

Streaming e iteratori aggiungono un'intestazione alle query. Lo streaming aggiunge un ID di flusso che aiuta il sistema a generare la risposta completa. Gli iteratori aggiungono GET_Next e l'ID iteratore.

Il test dello streaming ha inoltre mostrato lo stesso messaggio di errore degli iteratori.

Soluzione

Nella sezione Ulteriori suggerimenti per eseguire query sul dispositivo sono disponibili ulteriori strumenti per risolvere questi problemi. Uno di questi è il carattere jolly. Il carattere jolly rappresenta la soluzione per il limite di velocità della memoria.

Un carattere jolly consente di creare una query specifica per evitare la richiesta di informazioni non necessarie. Ad esempio, per le informazioni BGP, usare il comando show route bgp anziché il comando generico show route. Questo esempio si applica alla logica e alle query XML. La richiesta di informazioni di massa al sistema può generare problemi di memoria e di elaborazione.

Query utilizzata all'apertura del caso:

DEFAULT

VRF_NAME

NAME

>

Questa query è destinata alle tabelle BGP complete. Per questa richiesta non specifica, la risposta è stata di quasi 2,2 Gb, pertanto viene raggiunto il limite di velocità della memoria.

Per risolvere il problema, è necessaria una query specifica, che consente al sistema di elaborare la query e restituire le informazioni.

XML in Cisco IOS XR

Nota: Se sono necessarie ulteriori informazioni, specifiche o altri comandi, fare clic sul collegamento successivo Guida alla programmazione XML: Guida alla programmazione XML XR

Il codice XML definisce il modo in cui i dati vengono visualizzati e strutturati. Questo è un modo per analizzare ciò che il computer comprende come bit e visualizza informazioni strutturate e standardizzate.

XML presenta la struttura seguente:

This is an example

Tutti i tag sono composti da due parti, il tag di apertura (<init>) e il tag di chiusura (</init>). Se questa struttura non viene utilizzata, XML non è in grado di capire dove termina un tag.

XML è costituito da due entità:

- Contenitori

- Foglie

Un'analogia per questi dati strutturati consiste nel confrontare i dati XML come una struttura. Un contenitore è un ramo e ogni ramo ha foglie stubbed. Le foglie non contengono altro che informazioni.

Ad esempio, l'albero successivo presenta la radice in grigio, i contenitori in bianco e le foglie in blu.

Uso dell'API XML

Per verificare/utilizzare l'API XML, è innanzitutto necessario eseguire una query.

1. La query ha un'intestazione:

Nota: Questo è l'unico tag che non richiede un tag di chiusura.

2. È necessario aggiungere un tag per la richiesta. Nella richiesta è necessario specificare la versione.

3. Con l'intestazione, la richiesta e la versione, il corpo continua con qualsiasi operazione XML che l'API ha:

…

Nota: Si noti che le richieste includono operazioni diverse in ogni query. Non è necessario eseguire una richiesta per operazione.

Nell'esempio seguente viene visualizzata una richiesta con tutte le informazioni richieste:

…

Operazioni supportate dall'API XML

Cisco IOS XR supporta 5 operazioni che consentono agli utenti di interagire con le informazioni dello schema XML:

1. Operazioni sui dati nativi:

- <Get></Get>: Per raccogliere elementi dati di azione (dati presenti nella foglia).

- <Set></Set>: Per configurare, modificare o aggiungere elementi dati.

- <Delete></Delete>: Eliminare uno o più dati.

- <GetVersionInfo></GetVersionInfo>: Operazione che recupera i numeri di versione principale e secondaria dei componenti richiesti.

- <GetDataSpaceInfo></GetDataSpaceInfo>: In questi tag operativi vengono visualizzati i nomi delle foglie mappati ai contenitori.

2. Operazioni CLI:

- <CLI><CLI/>: Tag che consente di inviare una richiesta di configurazione come comando CLI.

- <GetNext><GetNext/>:se i dati sono più grandi delle dimensioni del blocco, questo tag viene aggiunto alla risposta segmentata successiva.

Servizi XML Schema offerti

L'API XML implementa gli spazi dei nomi seguenti:

Nota: Per visualizzare gli oggetti radice, visitare: Cisco IOS-XR XML Network Management (informazioni in lingua inglese).

Attenzione: Tenere presente che ogni spazio dei nomi controlla dati e operazioni diversi.

- Configurazione: Operazione che consente le azioni Leggi, Imposta ed Elimina.

- Operativo: Come i comandi show della CLI.

- Azione: supportare l'azione Imposta. Con questa operazione è possibile accedere ai dati dell'azione, come i comandi clear e altri comandi simili.

- AdminOperational: Accesso ai dati operativi di amministrazione.

- Azione amministratore: Accesso ai dati relativi alle azioni di amministrazione.

- Configurazione amministratore: Accesso ai dati di configurazione dell'amministrazione.

Creazione di una query

Ci sono due percorsi diversi per viaggiare. Dopo aver selezionato gli spazi dei nomi per la query, è necessario utilizzare uno schema per:

1. Documentazione relativa allo schema XML

Queste opzioni forniscono una struttura XML completa che mostra i contenitori e i fogli. Per la documentazione, fare clic su Schemi XML CRS.

Viene visualizzata la pagina della documentazione.

In questa pagina vengono visualizzati oggetti, contenitori e figli. Ogni oggetto contiene un oggetto figlio. Se l'oggetto figlio non contiene altri contenitori, viene considerato come foglia.

È possibile fare clic sul figlio per visualizzare le informazioni per la creazione di una query. Ad esempio, per IPv4:

Nell'immagine precedente, per ogni query IPv4 è possibile eseguire l'operazione di configurazione, specificando come destinazione l'IP del contenitore, il Cinetd del contenitore, i Servizi del contenitore e infine l'IPv4 foglia.

Nota: Qualsiasi operazione che deve essere di tipo foglia per poter eseguire la query.

La query sarà la seguente:

2. API XML

L'API XML è incorporata in Cisco IOS XRl. Per visualizzare la struttura XML, utilizzare il comando show xml schema. Emettendo il comando, l'intero schema XML viene visualizzato in una CLI simile a Linux.

In questa CLI sono disponibili le seguenti azioni:

?:Proprio come —aiuto

LS: Elencare i contenitori/foglioline nella diramazione in cui si trova l'utente.

<operazione>: Emettendo ? è possibile verificare la presenza di operazioni ed emettere i comandi:

Alcune operazioni sono:

-config

- adminconfig

-cd

- elenco

- oper

-azione

CD: Cambia directory/contenitore.

Nell'esempio viene mostrato il seguente:

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

Avviso: Le credenziali sono necessarie per accedere al dispositivo. Queste credenziali sono locali per il dispositivo e richiedono i profili root-ls/admin.

Nell'esempio seguente viene illustrato come creare una query utilizzando l'API XML. Ad esempio, la query deve verificare se l'agente XML è attivato:

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

Viene visualizzato il prompt successivo:

xml-schema[config]:XML.Agent.TTY>

Il prompt precedente visualizza la struttura XML. Con queste informazioni la query è:

Test delle query XML

Una volta creata l'interrogazione, il passaggio successivo consiste nel testarla. Per verificarlo, è possibile usare il comando xml echo format nella CLI. Questa azione può essere archiviata nello stesso dispositivo.

Suggerimento: Dopo aver immesso il comando precedente, gli utenti possono copiare/incollare la query e premere Invio. Il dispositivo visualizza la risposta alla query.

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

Il router visualizza la risposta e il riepilogo dei risultati.

Nota: Questa risposta XML non visualizza né richiede alcuna memoria di limitazione da configurare. La risposta, poiché non utilizza SSH/TTY, è richiesta a prescindere dalle dimensioni. Il client XML e il comando echo XML incorporato possono cambiare.

XML Deep Dive in Cisco IOS XR

Cisco IOS XR è un sistema modulare che richiede diversi pacchetti per funzionare. Il codice XML è considerato presente nei sottosistemi del piano di gestione.

Quando XR è stato avviato, erano disponibili due modi diversi per utilizzare XML nel dispositivo:

1. Agente CORBA (tramite SSL).

2. Agente SSH.

Nota: CORBA è stato deprecato dopo la versione 3.7.

CORBA è un protocollo legacy che utilizza SSL presente nei pacchetti di sicurezza. D'altra parte, il metodo SSH richiede l'uso del pacchetto di gestibilità.

L'infra viene distribuita nel modo seguente:

Dall'immagine precedente, il processo principale del codice XML è rappresentato dal processore RSP (Router and Switch Processor). Questi processi hanno un'API comune che controlla tutte le informazioni provenienti dagli altri processi nel dispositivo, che sono:

- Dalla scheda di linea:

- Stats Collector

- Server di statistiche

- Dal processore del router:

- Gestione statistiche.

- SysDB

- TCP (per XML API è utilizzato TCP 38751)

- NetIO

Nota: Per ulteriori informazioni su questo argomento, controllare la sezione Errori XML in Cisco IOS XR.

A seconda della richiesta, vengono attivati uno o più processi. Quando si sviluppano strumenti di automazione, se la risposta è maggiore della dimensione del blocco, la risposta non può avere esito positivo. Se la risposta a un processo richiede molto tempo, è possibile generare log EDM, arrestarlo o influire sui servizi.

Interazione API con il client

L'immagine seguente mostra l'interazione:

Per configurare/abilitare l'agente XML sul dispositivo, utilizzare:

RP/0/RP0/CPU0:XR#config

RP/0/RP0/CPU0:XR(config)#xml agent tty

RP/0/RP0/CPU0:XR(config-xml-tty)#commit

Il sistema deve concordare con il cliente nelle seguenti aree:

1. Versioni

2. Schema

Le versioni possono essere definite in 2 aree:

- Tag richiesta:

- Tag componente principale:

Applicabile al componente specifico:

Nota: È possibile controllare la versione dello schema con l'operazione GetVersionInfo applicata al contenitore.

- Aggiornamento versione secondaria: Qualsiasi aggiunta allo schema XML, ad esempio l'aggiunta di un nuovo elemento di dati.

- Aggiornamento versione principale: Modifiche semantiche, eliminazioni dello schema o del componente e così via.

Puoi controllare la versione. Nell'esempio seguente viene illustrato come eseguire questa operazione:

Nota: Le operazioni XML sono GET, SET e così via.

Utilizzare il comando xml echo formal e quindi aggiungere il tag GetVersionInfo alla query per trovare la versione in esecuzione sul router. come mostrato di seguito:

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

Mon Jul 31 13:53:50.993 UTC

XML>

>>> This is the request

XML>

Nota: Nel campo Richiesta vengono visualizzate tutte le versioni in esecuzione nel componente principale, nonché la versione nei contenitori in esso contenuti.

Errori XML in Cisco IOS XR

Se il percorso è corretto, per ogni richiesta XML API verranno visualizzate le informazioni richieste.

Quando la query è errata

Il router visualizza tre messaggi diversi:

- ElementoNonTrovato

Questo messaggio viene visualizzato ogni volta che un'operazione GET ha una risposta vuota.

- ElementoNonTrovatoSotto

L'operazione GET non contiene questa operazione nello schema XML.

- NonTrovato

Impossibile trovare il livello dell'elemento richiesto.

Tipi di errore

1.Trasporto: Gli errori in questa categoria includono qualsiasi elemento tra la comunicazione agente/client XML. Ciò significa che possono verificarsi problemi o interazioni SSH nel trasporto. Pertanto, per controllare queste tipologie di problemi, si consiglia di controllare le tracce SSH per verificare eventuali problemi di autenticazione, porta, e così via.

2. Parser XML: Eventuali problemi relativi al formato e alla sintassi, problemi nella risposta inviata o nella query. Questi problemi in genere inviano il motivo dell'errore quando si verifica un errore.

Ad esempio:

ERROR: 0xa367a600 'XML Service Library' detected the 'fatal' condition 'The throttle on the memory usage has been reached.

3. Schema XML: Qualsiasi schema diverso dallo schema del router. Per risolvere questi problemi, controllare lo schema e le versioni di CLI.

Ad esempio:

ErrorCode="0x43688400" ErrorMsg="'XMLMDA' detected the 'warning' condition 'An XML request contains an element which is unrecognised or incorrectly positioned&apos

4. Elaborazione delle operazioni: Quando si configura il dispositivo, è possibile che si verifichino questi problemi. Per risolvere questo problema è necessario risolvere i problemi dei processi, ad esempio commit, sysdb e così via.

Nota: Le informazioni sull'errore vengono aggiunte al livello dell'elemento operazione. Viene codificato sotto forma di attributi ErrorCode (int a 32 bit) ed Errormsg.

Ulteriori suggerimenti

Altre tecniche utili:

1. Carattere jolly: Questo processo è noto anche come query specifiche.

2. Batch: Combinazione di diverse tecniche o operazioni in un'unica richiesta (operazioni ottimali).

3. Filtro personalizzato: Se lo schema lo consente, per facilitare la selezione delle righe nelle tabelle.