본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 서비스 요청 및 Cisco 툴에서 나타나는 XML 메모리 제한 문제에 대해 설명합니다.
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
이 문서의 정보는 ASR9000을 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
다음과 같은 질문으로 케이스가 열렸습니다.
답변:
64비트 버전(eXR). 스로틀 메모리 크기가 하나 있습니다.
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)
32비트 버전(cXR)입니다. 또 다른 제한이 있습니다.
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)
참고: 두 버전 모두 기본값은 300MB입니다
2. XML 회신을 끊는 방법은 여러 가지가 있습니다.
반복기가 구성된 경우 XML 총 응답을 특정 창 크기로 분할합니다. 창에 반복기 크기가 있습니다. 예를 들어 응답이 1Gb이고 반복기 크기가 500Mb인 경우 XML을 2개의 회신으로 분할합니다.
이 메서드는 반복기 크기에 따라 GetNext 작업(응답에 필요한 작업)을 추가하여 응답을 변경합니다.
한 세션에 최대 10개의 반복기가 있을 수 있습니다.
이 기능은 XML 프로세스에서 사용하는 메모리를 제한합니다. 프로세스가 메모리를 초과한 경우 "메모리 사용량에 대한 조절(throttle)에 도달했습니다"라는 오류 메시지가 표시됩니다.
스트리밍은 반복기와 마찬가지로 XML 응답을 특정 창으로 분할합니다. 차이점은 응답이며, GetNext 작업 및 반복자 ID를 제거합니다. XML은 스트리밍된 패키지를 전송하고 클라이언트는 스트림이 종료될 때 응답을 빌드합니다.
자동화가 필요한 사용 사례의 경우, pyIOSXR 툴을 사용합니다. 이 자동화 툴은 XML 에이전트이며, 일부 show 명령을 실행하고, 전체적으로 디바이스에 연결하는 데 도움이 됩니다.
이 상담원에게 큰 요청을 보낼 때마다 오류가 표시됩니다.
참고: 등록된 Cisco 사용자만 내부 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.'
"더 작은 데이터를 쿼리하기 위한 요청 최적화"를 표시하는 오류 메시지와 함께 상담원 XML API를 반복기로 구성할 수 있습니다. 이는 이론적으로 응답을 세분화할 수 있습니다.
반복기가 구성되면 동일한 오류 메시지가 표시됩니다. "RESPONSE ERROR...Please optimize the request to query smaller data."
오류가 표시되면 다음 단계는 해당 기능(이 경우 반복기)이 질의에 대해 작동하지 않은 이유를 파악하는 것입니다.
pyIOSXR에서는 디바이스에서 XML 에이전트를 올바르게 활성화할 것을 권장합니다. 즉, API에서 반복기의 사용을 허용하지 않습니다.
다음 단계는 두 번째 옵션인 스트리밍을 테스트하는 것입니다.
참고: pyIOSXR에서는 다음 요소가 있는 기본 XML 쿼리 이외의 다른 헤더로 작업할 수 없습니다.
<?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
<Operation>
.
.
.
</Operation>
</Request>
스트리밍 및 반복기는 쿼리에 헤더를 추가합니다. 스트리밍은 시스템이 전체 응답을 구축하는 데 도움이 되는 스트림 ID를 추가합니다. 반복기는 GET_Next 및 반복기 ID를 추가합니다.
스트리밍 테스트에서도 반복기와 동일한 오류 메시지가 나타났습니다.
이 섹션에서는 장치에 대한 쿼리 추가 권장 사항을 참조하여 이러한 문제를 해결할 수 있습니다. 와일드카드 중 하나입니다. 와일드카드는 메모리 제한 제한에 대한 솔루션입니다.
와일드카드는 불필요한 정보를 요청하지 않도록 특정 쿼리를 빌드합니다. 예를 들어 BGP 정보의 경우 일반 show route 명령 대신 show route bgp 명령을 사용합니다. 이 예는 XML 쿼리 및 논리에 적용됩니다. 시스템에 대량 정보를 요청하면 메모리 및 처리 문제가 발생할 수 있습니다.
케이스를 열었을 때 이 쿼리가 사용되었습니다.
<?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>
이 쿼리는 전체 BGP 테이블을 대상으로 합니다. 이 비특정 요청의 경우 응답이 거의 2.2Gb였으므로 메모리 제한 제한에 도달했습니다.
이를 해결하려면 특정 쿼리가 필요하므로 시스템에서 쿼리를 처리하고 정보를 반환할 수 있습니다.
참고: 세부 정보, 사양 또는 기타 명령이 필요한 경우 다음 링크를 클릭하십시오. XML Programming guide: XR XML programming guide
XML은 데이터가 표시되고 구조화되는 방법을 정의합니다. 이는 컴퓨터가 비트로 이해하는 내용을 구문 분석하고, 정형화된 표준화된 정보를 표시하는 방법입니다.
XML의 구조는 다음과 같습니다.
<init>
<body>
<message>This is an example</message>
</body>
</init>
모든 태그는 두 부분으로 나뉘는데, 여는 태그(<init>)와 닫는 태그(</init>)입니다. 이 구조를 사용하지 않으면 태그가 끝나는 위치를 XML에서 인식할 수 없습니다.
XML은 두 개의 엔터티로 구성됩니다.
이 구조화된 데이터에 대한 비유는 XML 데이터를 트리로 비교하는 것입니다. 용기는 나뭇가지이고 나뭇가지마다 잎을 박아 넣었습니다. Leaf에는 정보 이외의 다른 정보가 포함되지 않습니다.
예를 들어, 다음 트리는 뿌리가 회색이고, 컨테이너가 흰색이며, 잎이 파란색입니다.
XML API를 테스트/활용하려면 먼저 쿼리가 필요합니다.
1. 질의에 헤더가 있습니다.
<?xml version="1.0" encoding="UTF-8”?>
참고: 이 태그는 닫기 태그가 필요하지 않은 유일한 태그입니다.
2. 요청에 대한 태그를 추가해야 합니다. 요청에서 버전을 지정해야 합니다.
<Request MajorVersion="1" MinorVersion="0">
3. 헤더, 요청 및 버전의 경우 본문은 API에 포함된 모든 XML 작업으로 계속됩니다.
<Operation>
<Operation_1>
<Operation_2>
…
<Operation_n>
주: 요청에는 각 질의에 서로 다른 작업이 포함됩니다. 작업별로 요청을 수행할 필요는 없습니다.
다음 예에서는 모든 필수 정보가 포함된 요청을 표시합니다.
<?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은 사용자가 XML 스키마의 정보를 상호 작용할 수 있도록 하는 5가지 작업을 지원합니다.
1. 고유자료업무
2. CLI 운영:
XML API는 다음 네임스페이스를 구현합니다.
참고: 루트 개체를 확인해야 하는 경우 Cisco IOS-XR XML Network Management를 참조하십시오.
주의: 각 네임스페이스는 서로 다른 데이터 및 작업을 감독합니다.
여행에는 두 가지 다른 길이 있습니다. 쿼리에 대한 네임스페이스를 선택한 후에는 스키마를 사용하여 작업해야 합니다.
1. XML 스키마 설명서
이러한 옵션은 컨테이너와 leaf를 표시하는 전체 XML 트리를 제공합니다. 설명서를 보려면 CRS XML Schemas(CRS XML 스키마)를 클릭합니다.
설명서 페이지가 표시됩니다.
이 페이지에는 객체, 컨테이너 및 1차 하위 구성요소가 표시됩니다. 각 개체에는 자식 개체가 포함되어 있습니다. 자식 개체에 다른 컨테이너가 없으면 leaf로 간주됩니다.
하위 항목을 클릭하면 쿼리를 빌드할 수 있는 정보가 표시됩니다. IPv4의 경우:
이전 이미지에서 모든 IPv4 쿼리의 경우 컨테이너 IP, 컨테이너 Cinetd, 컨테이너 서비스, 리프 IPv4를 대상으로 컨피그레이션 작업을 실행할 수 있습니다입니다.
참고: 쿼리를 수행하기 위해 leaf여야 하는 모든 작업입니다.
쿼리는 다음이 됩니다.
<?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
XML API는 Cisco IOS XRl에 내장되어 있습니다. XML 트리를 보려면 show xml schema 명령을 사용합니다. 명령을 실행하면 전체 XML 스키마가 Linux와 유사한 CLI에서 표시됩니다.
이 CLI에는 다음 작업이 있습니다.
?:도움말
LS: 브랜치 사용자의 컨테이너/leaf 나열
<operation>: 명령을 실행하여 작업을 확인하고 명령을 실행할 수 있는지 확인할 수 있습니다.
일부 작업은 다음과 같습니다.
-설정
- adminconfig
- cd
- 목록
- 오퍼르
-작업
CD: 디렉터리/컨테이너를 변경합니다.
다음 예를 보여 줍니다.
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>
경고: 디바이스에 로그인하려면 자격 증명이 필요합니다. 이러한 자격 증명은 디바이스의 로컬이며 루트 ls/관리자 프로필이 필요합니다.
다음 예에서는 XML API를 사용하여 쿼리를 빌드하는 방법을 보여 줍니다. 예를 들어 쿼리는 XML 에이전트가 활성화되어 있는지 확인해야 합니다.
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
다음 프롬프트를 확인합니다.
xml-schema[config]:XML.Agent.TTY>
이전 프롬프트에 XML 트리가 표시됩니다. 이 정보를 사용하여 쿼리는 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<Request MajorVersion="1" MinorVersion="0">
<Get>
<Configuration>
<XML>
<Agent>
<TTY></TTY>
</Agent>
</XML>
</Configuration>
</Get>
</Request>
쿼리가 빌드되면 다음 단계로 쿼리를 테스트합니다. 테스트하기 위해 CLI에서 xml echo format 명령을 실행할 수 있습니다. 이 작업은 동일한 디바이스에 보관할 수 있습니다.
팁: 사용자가 이전 명령을 입력한 후 쿼리를 복사/붙여넣은 다음 enter 키를 누를 수 있습니다. 디바이스가 쿼리에 대한 응답을 표시합니다.
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
라우터에 응답 및 ResultSummary가 표시됩니다.
참고: 이 XML 응답은 표시되지 않으며 스로틀 메모리를 구성할 필요가 없습니다. 어떤 SSH/TTY도 사용하지 않으므로, 크기에 관계없이 응답을 요청합니다. 한 가지는 XML 클라이언트와 다른 내장된 XML echo 명령이며, 동작은 변경될 수 있습니다.
Cisco IOS XR은 서로 다른 패키지가 작동해야 하는 모듈형 시스템입니다. XML은 관리 평면 하위 시스템에 있는 것으로 간주됩니다.
XR가 시작되었을 때 디바이스에서 XML을 활용하는 두 가지 방법이 있었습니다.
참고: CORBA는 버전 3.7 이후 더 이상 사용되지 않습니다.
레거시 프로토콜인 CORBA는 보안 패키지에 있는 SSL을 사용했습니다. 반면, SSH 방법에는 관리 용이성 패키지를 사용해야 합니다.
인프라는 다음과 같이 분산됩니다.
이전 이미지에서 XML의 주요 프로세스는 RSP(Router and Switch Processor)에서 볼 수 있습니다. 이러한 프로세스에는 디바이스의 다른 프로세스에서 오는 모든 정보를 감독하는 공통 API가 있습니다.
참고: 이에 대한 자세한 내용은 Cisco IOS XR 섹션의 XML 오류를 참조하십시오.
요청에 따라 하나 이상의 프로세스가 트리거됩니다. 자동화 도구를 개발할 때 응답이 블록 크기보다 크면 응답이 성공할 수 없습니다. 프로세스에 회신하는 데 시간이 오래 걸리는 경우 EDM 로그를 생성하거나, 종료하거나, 서비스에 영향을 줄 수 있습니다.
다음 그림에서는 상호 작용을 보여줍니다.
디바이스에서 XML 에이전트를 구성/활성화하려면 다음을 사용합니다.
RP/0/RP0/CPU0:XR#config
RP/0/RP0/CPU0:XR(config)#xml agent tty
RP/0/RP0/CPU0:XR(config-xml-tty)#commit
시스템은 다음 영역에서 클라이언트와 일치해야 합니다.
버전은 2개의 영역으로 정의할 수 있습니다.
<Request Major Version=“1” MinorVersion=“0”>
이는 특정 구성 요소에 적용됩니다.
<BGP MajorVersion=“1” MinorVersion=“0”>
참고: 컨테이너에 적용된 GetVersionInfo 작업으로 스키마 버전을 확인할 수 있습니다.
버전을 확인할 수 있습니다 다음 예에서는 이를 수행하는 방법을 보여 줍니다.
참고: XML 작업은 GET, SET 등입니다.
<?xml version=”1.0” encoding=“UTF-8”?>
<Request Major Version=“1” MinorVersion=“0”>
<GetVersionInfo>
<Operation/>
</GetVersionInfo>
</Request>
xml echo formal 명령을 사용한 다음 GetVersionInfo 태그를 쿼리에 추가하여 라우터에서 실행 중인 버전을 찾습니다.
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>
주: 요청에는 주요 구성 요소에서 실행 중인 모든 버전이 표시되며, 해당 구성 요소 내의 컨테이너에도 버전이 표시됩니다.
경로가 올바르면 각 XML API 요청에서 요청된 정보를 표시합니다.
라우터에 세 가지 메시지가 표시됩니다.
이 메시지는 GET 작업에 빈 응답이 있을 때마다 표시됩니다.
GET 작업에 XML 스키마에 이 작업이 없습니다.
요청한 요소가 요소 수준을 찾을 수 없습니다.
1.Transport(전송): 이 범주의 오류는 XML 에이전트/클라이언트 통신 사이의 모든 것을 포함합니다. 이는 모든 SSH 상호 작용 또는 문제가 전송에서 발생할 수 있음을 의미합니다. 따라서 이러한 종류의 문제를 확인하려면 SSH 추적을 검사하여 인증, 포트 등과 관련된 문제를 확인하는 것이 좋습니다.
2. XML 파서: 형식 및 구문에 대한 모든 문제, 전송 응답 또는 쿼리에서 문제. 이러한 문제는 일반적으로 오류가 발생할 때 실패 사유를 보냅니다.
예를 들면 다음과 같습니다.
ERROR: 0xa367a600 'XML Service Library' detected the 'fatal' condition 'The throttle on the memory usage has been reached.
3. XML 스키마: 라우터 스키마와 다른 모든 스키마 이러한 문제를 해결하려면 CLI 스키마 및 버전을 확인합니다.
예를 들면 다음과 같습니다.
ErrorCode="0x43688400" ErrorMsg="'XMLMDA' detected the 'warning' condition 'An XML request contains an element which is unrecognised or incorrectly positioned&apos
4. 작업 처리: 장치를 구성할 때 이러한 문제가 발생할 수 있습니다. 이 문제를 해결하려면 커밋, sysdb 등과 같은 프로세스 트러블슈팅이 필요합니다.
주: 오류 정보는 공정 요소 레벨에 추가됩니다. 이 코드는 ErrorCode(32비트 int) 및 Errormsg 특성의 형태로 코딩됩니다.
기타 유용한 기술:
1. 와일드카드: 특정 쿼리라고도 합니다.
2. 일괄 처리: 하나의 요청에 여러 가지 기술이나 작업을 결합하는 것(최선의 작업)
3. 사용자 정의 필터링: 스키마에서 허용하는 경우 테이블에서 행을 선택할 수 있습니다.
개정 | 게시 날짜 | 의견 |
---|---|---|
1.0 |
16-Feb-2024 |
최초 릴리스 |