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.
Dit document beschrijft problemen met het XML-geheugen door de throttle die worden gezien in serviceaanvragen en Cisco-tools.
Cisco raadt kennis van de volgende onderwerpen aan:
De informatie in dit document is gebaseerd op ASR 9000.
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 case geopend met de volgende vragen:
Antwoord:
In 64-bits versie (eXR). U hebt een throttle-geheugengrootte:
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 nog een 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.
<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)
Opmerking: de standaardinstelling in beide versies is 300 mB
2. Er zijn verschillende manieren om het XML-antwoord te breken:
Wanneer Iterators zijn geconfigureerd segmenteer je de totale reactie van XML in specifieke Windows-grootte. Het venster heeft de grootte van het evenaar. Bijvoorbeeld als de reactie 1 Gb is, en de grootte van de Iterator van 500 Mb, segmenteert u XML in 2 antwoorden.
Deze methode wijzigt de respons door toe te voegen (op basis van de grootte van de coördinator) GetNext-bewerkingen (wat de respons nodig heeft ).
Er kunnen maximaal 10 deelnemers zijn voor een sessie.
Deze eigenschap beperkt het geheugen dat door het proces van XML wordt verbruikt. Indien een proces het geheugen overtreft, reageert het met de foutmelding: "The throttle on the memory use is has been reach".
Gelijkaardig aan Iterators, die segmenteert de reactie van XML in specifieke vensters. Het verschil is de respons, het verwijdert de GetNext operatie en de Iterator ID. XML verstuurt de gestreamde pakketten en de client bouwt de reactie wanneer de stream eindigt.
Voor gebruiksgevallen waarin automatisering nodig is, gebruikt u de tool pyIOSXR. Dit automatiseringshulpmiddel is een XML-agent, helpt het om enkele showopdrachten uit te geven en verbindt, over het algemeen, met het apparaat.
Elke keer dat u een grote aanvraag verstuurt met deze agent, wordt er een fout weergegeven:
Opmerking: alleen geregistreerde Cisco-gebruikers kunnen toegang krijgen 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 foutmelding die "optimaliseer het verzoek om kleinere gegevens te vragen" weergeeft, kunt u de agent XML API met Interators configureren. Dit maakt het in theorie mogelijk de respons te segmenteren.
Wanneer Interators zijn geconfigureerd, wordt dezelfde foutmelding weergegeven: "RESPONSE ERROR... Please optimaliseer het verzoek om kleinere gegevens op te vragen".
Wanneer een fout wordt weergegeven, is de volgende stap om te begrijpen waarom de functie, in dit geval Iterators, niet werkte voor de query.
De pyIOSXR raadt de XML-agent aan om correct ingeschakeld te worden in het apparaat, wat betekent dat de API het gebruik van Iterators niet toestaat.
De volgende stap is om de tweede optie te testen: Streaming.
Opmerking: pyIOSXR staat ons niet toe te werken met andere headers dan de basis XML query die de volgende elementen hebben:
<?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
<Operation>
.
.
.
</Operation>
</Request>
Streaming en interpretators voegen een kop toe in de query's. Streaming voegt een stream-id toe die het systeem helpt de volledige respons op te bouwen. Iterators voegen de GET_Next en Iterator ID toe.
Bij het testen van streaming werd ook dezelfde foutmelding getoond als bij Iterators.
In de sectie, Meer Aanbeveling om Vragen aan het Apparaat te doen, zijn meer hulpmiddelen om deze kwesties uit te sorteren. Wildcard is een van hen. Wildcard is de oplossing voor de geheugengaspedaallimiet.
Met jokerteken wordt een specifieke query gemaakt om te voorkomen dat er onnodige informatie wordt opgevraagd. Bijvoorbeeld, voor BGP informatie gebruik het bevel van de showroute bgp in plaats van het generische bevel van de showroute. Dit voorbeeld is van toepassing op de XML queries en de logica. Het aanvragen van bulkinformatie aan het systeem kan geheugen en verwerkingskwesties produceren.
Toen de case werd geopend, werd deze query gebruikt:
<?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>
Deze query richt zich op de volledige BGP-tabellen. Voor dit niet-specifieke verzoek was de respons bijna 2,2 Gb, waardoor de geheugengaspedaallimiet wordt bereikt.
Om het te repareren, is een specifieke query vereist, dit stelt het systeem in staat om de query te verwerken, en de informatie terug te geven.
Opmerking: Als er meer informatie nodig is, klik dan op de volgende link XML Programming guide: XR XML programmeer guide
XML definieert hoe gegevens worden weergegeven en gestructureerd. Dit is een manier om te ontleden wat de computer als bits begrijpt, en om gestructureerde, gestandaardiseerde informatie weer te geven.
XML heeft deze structuur:
<init>
<body>
<message>This is an example</message>
</body>
</init>
Alle tags hebben twee delen, de openingstag (<init>) en de afsluitende tag (</init>). Als deze structuur niet wordt gebruikt, kan XML niet begrijpen waar een tag eindigt.
XML is opgebouwd uit twee entiteiten:
Een analogie voor deze gestructureerde gegevens vergelijkt XML-gegevens als een boom. Een container is een tak en elke tak heeft gestopte bladeren. De bijsluiters bevatten uitsluitend informatie.
De volgende boom heeft bijvoorbeeld de wortel in grijs, de containers in wit en de bladeren in blauw.
Om de XML API te testen/gebruiken, is het eerste wat je nodig hebt een query.
1. Query heeft een header:
<?xml version="1.0" encoding="UTF-8”?>
Opmerking: dit is de enige tag die geen afsluitende tag nodig heeft.
2. U moet een tag voor het verzoek toevoegen. In het verzoek moet u de versie specificeren.
<Request MajorVersion="1" MinorVersion="0">
3. Met de header, het verzoek en de versie, gaat de body verder met elke XML-bewerking die de API heeft:
<Operation>
<Operation_1>
<Operation_2>
…
<Operation_n>
Opmerking: Bericht dat verzoeken verschillende bewerkingen in elke query bevatten. Het is niet noodzakelijk om een verzoek per verrichting uit te voeren.
In het volgende voorbeeld wordt een verzoek met alle benodigde informatie weergegeven:
<?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 ondersteunt 5 bewerkingen die gebruikers in staat stellen te communiceren met de informatie in het XML-schema:
1. Native gegevensbewerkingen:
2. CLI-activiteiten:
XML API implementeert de volgende namespaces:
Opmerking: Ga voor het geval u rootobjecten wilt zien naar: Cisco IOS-XR XML Network Management.
Waarschuwing: wees erop gewezen dat elke naamruimte verschillende gegevens en bewerkingen overziet.
Er zijn twee verschillende manieren om te reizen. Zodra u de naamruimten voor de query hebt geselecteerd, moet u een schema gebruiken om met te werken:
1. Documentatie voor XML-schema
Deze opties bieden een volledige XML-structuur die containers en bladeren toont. Voor documentatie klik op CRS XML Schema's.
De documentatiepagina wordt weergegeven.
Op deze pagina worden objecten, containers en kinderen weergegeven. Elk object bevat een onderliggend object. Als het onderliggend object geen andere container bevat, wordt het als een blad beschouwd.
U kunt op het kind klikken en de informatie om een query te maken wordt weergegeven. Bijvoorbeeld voor IPv4:
In de vorige afbeelding kan bij elke IPv4-query de Configuration-handeling worden uitgevoerd, gericht op de container IP, in de container Cinetd, in de container Services, en tot slot in het blad IPv4.
Opmerking: Elke handeling die een blad moet zijn om de query uit te voeren.
De vraag zou de volgende zijn:
<?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. XML-API
De XML API is ingesloten in Cisco IOS XRl. Om de boom van XML te zien gebruik het bevel van het show xml schema. Door het uitgeven van het bevel, wordt het gehele schema van XML gezien in een CLI gelijkend op Linux.
In deze CLI zijn er de volgende acties:
?:Net als —help
LS: Lijst van de containers/bladen in de takgebruiker is.
<operation>: Door uit te geven ? U kunt controleren of de bewerkingen en opdrachten kunnen worden gegenereerd:
Sommige bewerkingen zijn:
-config
- adminconfig
- cd
- lijst
- oper
-actie
CD: Andere map/container.
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
<snip>
Waarschuwing: Merk op dat referenties nodig zijn om in te loggen op het apparaat. Deze referenties zijn lokaal voor het apparaat en vereisen wortel-ls/admin profielen.
Het volgende voorbeeld toont hoe een query te bouwen 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 vraag:
<?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
<Get>
<Configuration>
<XML>
<Agent>
<TTY></TTY>
</Agent>
</XML>
</Configuration>
</Get>
</Request>
Zodra de query is gebouwd, is de volgende stap om het te testen. Om het te testen, kunt u het bevel van het xml echoformaat in CLI uitgeven. Deze actie kan op hetzelfde apparaat worden gearchiveerd.
Tip: Laat het raadzaam zijn dat gebruikers na het invoeren van de vorige opdracht de query kunnen kopiëren/plakken en op enter kunnen klikken. Het apparaat toont de reactie op de vraag.
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
De router toont reactie en ResultaatSamenvatting.
Opmerking: deze XML-respons wordt niet weergegeven en vereist geen throttle-geheugen dat geconfigureerd moet worden. Het antwoord, aangezien het geen SSH/TTY gebruikt, wordt ongeacht de grootte gevraagd. Een ding is de XML client en andere de ingesloten XML echo opdracht, het gedrag kan veranderen.
Cisco IOS XR is een modulair systeem waarin verschillende pakketten moeten werken. XML wordt beschouwd als te zijn in de Management Plane Subsystems.
Toen XR geïnitieerd werd, waren er 2 verschillende manieren om XML in het apparaat te gebruiken:
Opmerking: CORBA is afgekeurd na versie 3.7.
CORBA als een legacy protocol gebruikte SSL die in de Security Packages wordt gevonden. Anderzijds heeft de SSH-methode het beheerpakket nodig dat moet worden gebruikt.
De informatie wordt op deze manier verspreid:
Van het vorige beeld, wordt het belangrijkste proces van XML gezien in de Router en de Bewerker van de Switch (RSP). Deze processen hebben een gemeenschappelijke API die toezicht houdt op alle informatie van de andere processen in het apparaat, die zijn:
Opmerking: controleer de XML-fouten in de sectie Cisco IOS XR voor meer informatie over deze optie.
Afhankelijk van het verzoek worden een of meer processen geactiveerd. Als er automatiseringsgereedschappen worden ontwikkeld en de respons groter is dan de blokgrootte, kan de respons niet slagen. Als een proces lang duurt om te reageren, kan het EDM-logbestanden genereren, afsluiten of de services beïnvloeden.
Het volgende beeld toont de interactie:
Gebruik om XML-agent op het apparaat te configureren/in te schakelen:
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 op deze gebieden met de klant akkoord gaan:
Er kunnen versies worden gedefinieerd in 2 gebieden:
<Request Major Version=“1” MinorVersion=“0”>
Dit is van toepassing op het specifieke onderdeel:
<BGP MajorVersion=“1” MinorVersion=“0”>
Opmerking: Vergeet niet dat u de schemaversie kunt controleren met de GetVersionInfo-operatie die op de container is toegepast.
U kunt de versie controleren. Het volgende voorbeeld laat zien hoe u dit kunt doen:
Opmerking: de XML-bewerkingen zijn GET, SET, etc.
<?xml version=”1.0” encoding=“UTF-8”?>
<Request Major Version=“1” MinorVersion=“0”>
<GetVersionInfo>
<Operation/>
</GetVersionInfo>
</Request>
Gebruik de xml echo formele opdracht en voeg vervolgens de tag GetVersionInfo toe aan de query om de versie te vinden die op de router wordt uitgevoerd. zoals hier getoond:
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>
Opmerking: De aanvraag toont alle actieve versies in de belangrijkste component en toont ook de versie in de containers.
Als het pad correct is, geeft elk XML API-verzoek de gevraagde informatie weer.
De router toont drie verschillende berichten:
Dit bericht wordt weergegeven elke keer dat een GET operatie een lege respons heeft.
GET operatie bevat deze operatie niet in het XML Schema.
Het gevraagde element kan niet het element niveau vinden.
1.Transport: De fouten in deze categorie omvatten om het even wat tussen de de agent van XML/cliëntmededeling. 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 elk probleem met verificatie, poort, enzovoort.
2. XML Parser: elk probleem met het formaat en de syntaxis, problemen in het antwoord verzonden of in de query. Deze kwesties verzenden gewoonlijk de reden voor mislukking wanneer een fout voorkomt.
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 kwesties aan te pakken, controleer 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. Verwerking van de bediening: wanneer u het apparaat configureert, kunnen deze problemen optreden. Om deze problemen op te lossen moet u de processen, bijvoorbeeld commit, sysdb, enzovoort oplossen.
Opmerking: foutinformatie wordt toegevoegd op het niveau van het verwerkingselement. Dit wordt gecodeerd in de vorm van ErrorCode (32-bit int) en ErrorMsg attributen.
Andere nuttige technieken:
1. Wildcarding: Dit is de ook bekend als Specific Queries.
2. Batching: het combineren van verschillende technieken of operaties in één aanvraag (best-performance operaties).
3. Aangepaste filtering: Als het schema het toestaat, om de selectie van rijen in tabellen te helpen.
Revisie | Publicatiedatum | Opmerkingen |
---|---|---|
1.0 |
16-Feb-2024 |
Eerste vrijgave |