De documentatie van dit product is waar mogelijk geschreven met inclusief taalgebruik. Inclusief taalgebruik wordt in deze documentatie gedefinieerd als taal die geen discriminatie op basis van leeftijd, handicap, gender, etniciteit, seksuele oriëntatie, sociaaleconomische status of combinaties hiervan weerspiegelt. In deze documentatie kunnen uitzonderingen voorkomen vanwege bewoordingen die in de gebruikersinterfaces van de productsoftware zijn gecodeerd, die op het taalgebruik in de RFP-documentatie zijn gebaseerd of die worden gebruikt in een product van een externe partij waarnaar wordt verwezen. Lees meer over hoe Cisco gebruikmaakt van inclusief taalgebruik.
Cisco heeft dit document vertaald via een combinatie van machine- en menselijke technologie om onze gebruikers wereldwijd ondersteuningscontent te bieden in hun eigen taal. Houd er rekening mee dat zelfs de beste machinevertaling niet net zo nauwkeurig is als die van een professionele vertaler. Cisco Systems, Inc. is niet aansprakelijk voor de nauwkeurigheid van deze vertalingen en raadt aan altijd het oorspronkelijke Engelstalige document (link) te raadplegen.
In dit document worden problemen met de XML-geheugenbeperking beschreven die worden gezien in serviceaanvragen en Cisco-hulpprogramma's.
Cisco raadt kennis van de volgende onderwerpen aan:
De informatie in dit document is gebaseerd op ASR9000.
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
Er werd een zaak geopend met de volgende vragen:
Antwoord:
In 64-bits versie (eXR). U hebt één gashendelgeheugengrootte:
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)
In 32-bits versie (cXR). Je hebt een andere limiet:
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)
Opmerking: de standaardwaarde in beide versies is 300 MB
2. Er zijn verschillende manieren om het XML-antwoord te breken:
Wanneer iterators zijn geconfigureerd, segmenteert u het totale XML-antwoord in een specifieke venstergrootte. Het venster heeft de grootte van de iterator. Als de respons bijvoorbeeld 1 Gb is en de grootte van de iterator 500 Mb, segmenteer je de XML in 2 antwoorden.
Deze methode wijzigt de respons door (op basis van de grootte van de iterator) GetNext-bewerkingen toe te voegen (wat de respons nodig heeft ).
Er kunnen maximaal 10 iterators zijn voor een sessie.
Deze functie beperkt het geheugen dat wordt verbruikt door het XML-proces. In het geval dat een proces het geheugen overschrijdt, antwoordt het met de foutmelding: "De gashendel voor het geheugengebruik is bereikt".
Net als bij iterators segmenteert Streaming de XML-respons in specifieke vensters. Het verschil is het antwoord, het verwijdert de GetNext-bewerking en de Iterator ID. De XML verzendt de gestreamde pakketten en de client bouwt de respons op wanneer de stream eindigt.
Gebruik de tool pyIOSXR voor gebruikssituaties waarin automatisering nodig is. Dit automatiseringstool is een XML-agent, het helpt om enkele show-opdrachten uit te geven en maakt over het algemeen verbinding met het apparaat.
Telkens wanneer u een groot verzoek verzendt met deze agent, wordt een fout weergegeven:
Opmerking: alleen geregistreerde Cisco-gebruikers hebben toegang tot interne Cisco-tools en -informatie.
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.'
Met de foutmelding "optimaliseer het verzoek om kleinere gegevens op te vragen", kunt u de agent XML API configureren met iterators. Dit maakt het in theorie mogelijk om de reactie te segmenteren.
Toen iterators werden geconfigureerd, werd hetzelfde foutbericht weergegeven: "RESPONSE ERROR...Please optimalised the request to query smaller data".
Wanneer een fout wordt weergegeven, is de volgende stap om te begrijpen waarom de functie, in dit geval Interators, niet werkte voor de query.
De pyIOSXR raadt de XML-agent aan om correct te worden ingeschakeld in het apparaat, wat betekent dat de API het gebruik van iterators niet toestaat.
De volgende stap is het testen van de tweede optie: Streaming.
Opmerking: pyIOSXR staat ons niet toe om te werken met andere headers dan de standaard XML-query die de volgende elementen hebben:
.
.
.
Streaming en iterators voegen een koptekst toe aan de query's. Streaming voegt een stream-ID toe die het systeem helpt om de volledige respons op te bouwen. Iterators voegen de ID GET_Next en Iterator toe.
Het testen van streaming liet ook dezelfde foutmelding zien als Iterators.
In de sectie Meer aanbevelingen om query's naar het apparaat te doen, zijn meer hulpmiddelen om deze problemen op te lossen. Wildcard is daar één van. Wildcard is de oplossing voor de limiet van de geheugengashendel.
Wildcard bouwt een specifieke query om te voorkomen dat onnodige informatie wordt gevraagd. Gebruik bijvoorbeeld voor BGP-informatie de opdracht route tonen bgp in plaats van de algemene opdracht route tonen. Dit voorbeeld is van toepassing op de XML query's en logica. Het opvragen van bulkgegevens naar het systeem kan geheugen- en verwerkingsproblemen veroorzaken.
Toen de kwestie werd geopend, werd deze query gebruikt:
DEFAULT
VRF_NAME
NAME
>
Deze query richt zich op de volledige BGP-tabellen. Voor dit niet-specifieke verzoek was het antwoord bijna 2,2 Gb, daarom wordt de limiet voor geheugengashendel bereikt.
Om het op te lossen, is een specifieke query vereist, dit stelt het systeem in staat om de query te verwerken en de informatie terug te sturen.
Opmerking: Als u meer informatie, specificaties of andere opdrachten nodig hebt, klikt u op de volgende koppeling XML-programmeergids: XR XML-programmeergids
De XML definieert hoe gegevens worden weergegeven en gestructureerd. Dit is een manier om te ontleden wat de computer begrijpt als bits en geeft gestructureerde, gestandaardiseerde informatie weer.
XML heeft deze structuur:
This is an example
Alle tags hebben twee delen, de openingstag (<init>) en de sluitingstag (</init>). Als deze structuur niet wordt gebruikt, kan XML niet begrijpen waar een tag eindigt.
XML bestaat uit twee entiteiten:
Een analogie voor deze gestructureerde gegevens is het vergelijken van XML-gegevens als een boom. Een container is een tak en elke tak heeft stoppelbladeren. Leafs bevatten geen andere informatie dan informatie.
De volgende boom heeft bijvoorbeeld de wortel in grijs, containers in wit en bladeren in blauw.
Om de XML API te testen / gebruiken, is het eerste wat u nodig hebt een query.
1. Query heeft een koptekst:
Opmerking: dit is de enige tag waarvoor geen afsluitende tag nodig is.
2. U moet een tag toevoegen voor het verzoek. In de aanvraag moet u de versie opgeven.
3. Met de koptekst, het verzoek en de versie gaat de hoofdtekst verder met elke XML-bewerking die de API heeft:
…
Opmerking: Merk op dat verzoeken verschillende bewerkingen in elke query bevatten. Het is niet nodig om een verzoek per bewerking uit te voeren.
In het volgende voorbeeld wordt een verzoek weergegeven met alle vereiste informatie:
…
Cisco IOS XR ondersteunt 5 bewerkingen waarmee gebruikers kunnen communiceren met de informatie in het XML-schema:
1. Native Data Operations:
2. CLI-bewerkingen:
XML API implementeert de volgende naamruimten:
Opmerking: Als u root-objecten wilt zien, gaat u naar: Cisco IOS-XR XML Network Management.
Let op: houd er rekening mee dat elke naamruimte verschillende gegevens en bewerkingen beheert.
Er zijn twee verschillende wegen om te reizen. Nadat u de naamruimten voor de query hebt geselecteerd, moet u een schema gebruiken om mee te werken:
1. XML-schemadocumentatie
Deze opties bieden een volledige XML-structuur met containers en bladeren. Klik voor documentatie op CRS XML Schemas.
De documentatiepagina wordt weergegeven.
Op deze pagina worden objecten, containers en kinderen weergegeven. Elk object bevat een onderliggend object. Als het onderliggende object geen andere container bevat, wordt het beschouwd als een blad.
U kunt op het kind klikken en de informatie voor het maken van een query wordt weergegeven. Bijvoorbeeld voor IPv4:
In het vorige image kan voor elke IPv4-query de Configuration-bewerking worden uitgevoerd, gericht op het IP-adres van de container, in de container Cinted, in de container Services, en vervolgens ten slotte in het blad IPv4.
Opmerking: elke bewerking die een blad moet zijn om de query uit te voeren.
De query zou de volgende zijn:
2. XML-API
De XML API is ingebed in Cisco IOS XRl. Als u de XML-structuur wilt zien, gebruikt u de opdracht XML-schema tonen. Door de opdracht uit te geven, wordt het hele XML-schema weergegeven in een CLI die vergelijkbaar is met Linux.
In deze CLI zijn er de volgende acties:
?:Net als --hulp
LS: Geef een lijst van de containers/bladeren in de aftakkingsgebruiker.
<operation>: Door te geven ? kunt u controleren of de bewerkingen en opdrachten kunnen worden uitgegeven:
Sommige operaties zijn:
-config
- administreren
- CD
- lijst
- operateur
-actie
CD: Directory/container wijzigen.
Voorbeeld toont het volgende:
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
Waarschuwing: u hebt referenties nodig om u aan te melden bij het apparaat. Deze referenties zijn lokaal voor het apparaat en vereisen root-ls/admin-profielen.
In het volgende voorbeeld wordt getoond hoe u een query kunt maken met behulp van de XML-API. De query moet bijvoorbeeld controleren of de XML-agent is ingeschakeld:
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
Let op de volgende prompt:
xml-schema[config]:XML.Agent.TTY>
De vorige prompt geeft de XML-structuur weer. Met deze informatie is de query:
Zodra de query is gebouwd, is de volgende stap om deze te testen. Als u het wilt testen, kunt u de opdracht xml echo-indeling in de CLI uitvoeren. Deze actie kan op hetzelfde apparaat worden gearchiveerd.
Tip: houd er rekening mee dat gebruikers na het invoeren van de vorige opdracht de query kunnen kopiëren/plakken en op enter drukken. Het apparaat geeft het antwoord op de query weer.
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
De router geeft het antwoord en de samenvatting van het resultaat weer.
Opmerking: dit XML-antwoord geeft geen gasklepgeheugen weer en vereist geen configuratie. Het antwoord wordt gevraagd, omdat het geen SSH/TTY gebruikt, ongeacht de grootte. Een ding is de XML-client en de andere ingesloten XML-echo-opdracht, het gedrag kan veranderen.
Cisco IOS XR is een modulair systeem dat verschillende pakketten nodig heeft om te werken. XML wordt beschouwd als onderdeel van de subsystemen van het beheerplan.
Toen XR werd gestart, waren er 2 verschillende manieren om XML in het apparaat te gebruiken:
Opmerking: CORBA is afgeschreven na versie 3.7.
CORBA als een legacy-protocol gebruikt SSL dat is gevonden in de Beveiligingspakketten. Aan de andere kant heeft de SSH-methode het beheerbaarheidspakket nodig om te worden gebruikt.
De infra wordt op deze manier verdeeld:
In de vorige afbeelding is het hoofdproces van XML te zien in de Router and Switch Processor (RSP). Deze processen hebben een gemeenschappelijke API die toezicht houdt op alle informatie van de andere processen in het apparaat, namelijk:
Opmerking: Als u meer informatie hierover wilt zien, raadpleegt u de sectie XML-fouten in Cisco IOS XR.
Afhankelijk van het verzoek worden één of meerdere processen geactiveerd. Bij het ontwikkelen van automatiseringstools, als de respons groter is dan de blokgrootte, kan de respons niet slagen. Als een proces lang duurt om te reageren, kan het EDM-logs genereren, afsluiten of services beïnvloeden.
De volgende afbeelding toont de interactie:
Als u de XML-agent op het apparaat wilt configureren/inschakelen, gebruikt u:
RP/0/RP0/CPU0:XR#config
RP/0/RP0/CPU0:XR(config)#xml agent tty
RP/0/RP0/CPU0:XR(config-xml-tty)#commit
Het systeem moet het op deze gebieden met de klant eens zijn:
Versies kunnen worden gedefinieerd in 2 gebieden:
Dit geldt voor het specifieke onderdeel:
Opmerking: vergeet niet dat u de schemaversie kunt controleren met de GetVersionInfo-bewerking die op de container is toegepast.
U kunt de versie controleren. Het volgende voorbeeld laat zien hoe dit te doen:
Opmerking: De XML-bewerkingen zijn GET, SET, enzovoort.
Gebruik de formele opdracht xml echo en voeg vervolgens de tag GetVersionInfo toe aan de query om de versie te vinden die op de router wordt uitgevoerd. zoals hier weergegeven:
RP/0/RSP0/CPU0:XR#xml echo format
Mon Jul 31 13:53:50.993 UTC
XML>
>>> This is the request
XML>
Opmerking: Verzoek geeft alle actieve versies in de hoofdcomponent weer en geeft ook de versie weer in de containers erin.
Als het pad juist is, geeft elk XML API-verzoek de gevraagde informatie weer.
De router geeft drie verschillende berichten weer:
Dit bericht wordt weergegeven telkens wanneer een GET-bewerking een leeg antwoord heeft.
De bewerking GET bevat deze bewerking niet in het XML-schema.
Het gevraagde element kan niet worden gevonden op het niveau van het element.
1.Transport: Fouten in deze categorie omvatten alles tussen de XML-agent/client-communicatie. Dit betekent dat elke SSH-interactie of problemen in het transport kunnen plaatsvinden. Om dit soort problemen te controleren, wordt daarom voorgesteld om de SSH-sporen te controleren om te controleren op problemen met verificatie, poort, enzovoort.
2. XML-parser: elk probleem met het formaat en de syntaxis, problemen in het antwoord dat is verzonden of in de query. Deze problemen sturen meestal de reden voor het falen wanneer een fout optreedt.
Voorbeeld:
ERROR: 0xa367a600 'XML Service Library' detected the 'fatal' condition 'The throttle on the memory usage has been reached.
3. XML-schema: elk schema dat verschilt van het routerschema. Om deze problemen aan te pakken, controleert u het CLI-schema en de versies.
Voorbeeld:
ErrorCode="0x43688400" ErrorMsg="'XMLMDA' detected the 'warning' condition 'An XML request contains an element which is unrecognised or incorrectly positioned&apos
4. Verwerkingsverwerking: Wanneer u het apparaat configureert, kunnen deze problemen optreden. Om deze problemen op te lossen, moet u de processen oplossen, bijvoorbeeld commit, sysdb, enzovoort.
Opmerking: foutinformatie wordt toegevoegd aan het niveau van het bewerkingselement. Dit wordt gecodeerd in de vorm van ErrorCode (32-bits int) en ErrorMSG attributen.
Andere nuttige technieken:
1. Wildcarding: Dit is het ook bekend als Specifieke query's.
2. Batching: het combineren van verschillende technieken of bewerkingen in één verzoek (best effort operations).
3. Aangepaste filtering: als het schema dit toestaat, om de selectie van rijen in tabellen te helpen.
Revisie | Publicatiedatum | Opmerkingen |
---|---|---|
1.0 |
16-Feb-2024 |
Eerste vrijgave |