이 페이지의 내용
온박스 어그리게이션 개요
주니퍼 디바이스는 온박스 어그리게이션을 지원합니다. 인터페이스, CoS, MPLS, AF 및 AE 카운터가 주니퍼 디바이스에서 어그리게이션된 다음 텔레메트리 데이터가 컬렉터로 스트리밍됩니다. 카운터가 컬렉터로 스트리밍되어 집계되는 오프박스 어그리게이션과 비교했을 때, 온박스 어그리게이션은 라인 카드 재설정 또는 LAG 멤버십 변경과 같은 시스템 이벤트를 인식하는 더 정확한 텔레메트리 데이터를 제공합니다. 온박스 어그리게이션은 집진기의 생산 오류를 줄입니다. 또한 데이터가 측정되는 특정 클라우드 기반 환경에서 전체 텔레메트리 데이터 대역폭 사용률을 크게 줄입니다.
어그리게이션 로직
데이터 집계는 na-grpcd 데몬에서 Google protobuf 메시지로 수신된 모든 패킷 전달 엔진 인스턴스에서 지정된 카운터 값을 간단히 추가하는 것입니다. na-grpcd 데몬의 어그리게이션 모듈은 수신된 구독 요청을 기반으로 여러 패킷 전달 엔진의 통계를 캐시합니다. 캐싱은 수신된 구독당 수행됩니다.
데이터 집계에는 다음 사항이 적용됩니다.-
통계 데이터가 계기 유형인 경우 필드 값은 ,
Max
또는Min
가 되고Average
집계 모듈은 계기 유형 필드 값에 따라 집계를 정렬합니다. -
어그리게이션은 YANG 파일에 주석이 달린 카운터 및 게이지 데이터 유형 모두에 대해 수행됩니다.
- 언제든지 캐시에서 사용할 수 있는 지정된 패킷 전달 엔진에 대한 데이터 원본은 하나만 있습니다. 새 항목은 기존 캐시를 덮어씁니다.
-
별도의 타이머가 데이터를 집계하거나 스트리밍하지 않습니다. 패킷 전달 엔진에서 샘플 데이터를 수신할 때마다 어그리게이션 및 스트리밍 시간은 이전에 전송된 어그리게이션 타임스탬프를 사용하여 확인됩니다. 예를 들어:
-
-
현재 타임스탬프 – 이전에 집계된 타임스탬프 > reporting_interval
-
-
내보내기 타임스탬프는 집계된 데이터에 대한 중간 타임스탬프를 전달합니다.
-
na-grpcd 데몬의 레코드 캐싱은 구독이 유효(활성)인 동안에만 사용할 수 있습니다. 구독이 비활성 상태일 때 내보낸 집계된 텔레메트리 데이터가 라우팅 엔진 명령줄 인터페이스 통계와 일치하지 않을 수 있습니다. 다음 트리거로 인해 이러한 불일치가 발생할 수 있습니다.
-
하위 멤버가 어그리게이션 인터페이스의 일부인 하나 이상의 FPC를 다시 시작합니다.
-
집계 인터페이스에서 최대 n-1개의 하위 멤버(하나 이상의 하위 링크가 활성화됨) 삭제.
-
-
마지막으로 구독이 삭제되면 연결된 캐시도 삭제됩니다.
gNMI 또는 gRPC 스트림에서 라우팅 엔진의 첫 번째 간격이 여러 FPC에서 하나의 샘플만 수신했을 수 있기 때문에 첫 번째 샘플에 집계된 통계 카운터 값이 포함되지 않을 수 있습니다. 그러나 두 번째 간격부터는 모든 FPC에서 수신된 집계된 카운터 값이 스트림에 포함됩니다.
샘플 집계는 들어오는 샘플 중 하나에 따라 트리거됩니다. 그림 1에서 볼 수 있듯이 샘플 S2는 지연됩니다. 이러한 지연으로 인해 A2 집계는 샘플의 타임스탬프 중앙값이 있는 이전 t0 샘플을 사용합니다. 이것은 t1'(실제로는 t1이지만)이라는 레이블이 지정됩니다.
패킷 전달 엔진 데이터 내보내기
어그리게이션 기능은 기본 protobuf 기반 원격 분석 인터페이스를 사용하여 패킷 전달 엔진에서 데이터를 내보냅니다. protobuf 기반 원격 분석 스트림은 TelemetryStream (아래 참조)이라는 일반적인 최상위 수준 봉투에 내보낼 데이터를 캡슐화합니다.
message TelemetryStream { // router hostname // (or, just in the case of legacy (microkernel) PFEs, the IP address) required string system_id = 1 [(telemetry_options).is_key = true]; // line card / RE (slot number) optional uint32 component_id = 2 [(telemetry_options).is_key = true]; // PFE (if applicable) optional uint32 sub_component_id = 3 [(telemetry_options).is_key = true]; // configured sensor name optional string sensor_name = 4 [(telemetry_options).is_key = true]; // sequence number, monotonically increasing for each // system_id, component_id, sub_component_id + sensor_name. optional uint32 sequence_number = 5; // timestamp (milliseconds since 00:00:00 UTC 1/1/1970) optional uint64 timestamp = 6 [(telemetry_options).is_timestamp = true]; … }
이 최상위 봉투(Envelope)는 combinator라는 작업에서 패킷 전달 엔진 통계 캐시를 구축하는 데 필요한 정보를 제공합니다. 결합자는 공통 인터페이스 ID 및 대기열 ID가 있는 여러 데이터 인스턴스에서 논리적 조인을 수행하고 시스템 전체에서 집계된 출력 대기열 통계를 생성합니다. 들어오는 모든 protobuf는 센서, 구성 요소 및 TelemetryStream protobuf의 패킷 전달 엔진 슬롯 필드를 사용하여 캐시로 구성됩니다. 결합자는 특정 센서에 대한 패킷 전달 엔진에서 최신 protobuf 내보내기를 캐싱하여 패킷 전달 엔진당 인스턴스 데이터를 추적합니다. 이진 protobuf를 집계 단위로 사용하면 protobuf 내에 포함된 각 카운터 컬렉션에 대한 캐싱 및 부기 오버헤드를 최소화할 수 있습니다.
패킷 전달 엔진에서 내보낸 텔레메트리 데이터의 타임스탬프는 집계 데이터 계산을 트리거합니다. 이전 집계 데이터 내보내기 이후 경과된 시간이 센서 새로 고침 간격을 초과하면 새 집계 값을 내보냅니다. 이 새 값은 집계 값 내보내기를 트리거한 마지막 패킷 전달 엔진 샘플의 타임스탬프를 사용합니다. 이 방법을 사용하면 집계된 데이터를 수집하기 위해 결합기 내부에서 센서별 타이머를 실행할 필요가 없습니다. 또한 패킷 전달 엔진에서 마지막으로 수신된 데이터 내보내기를 캐싱하면 내보낸 집계 데이터의 "드리프트"가 최소화됩니다. 이는 패킷 전달 엔진 내보내기가 지연되거나 패킷 전달 엔진에서 추가 내보내기가 불가능할 수 있는 운영 변경과 같은 경우에 특히 유용합니다.
집계된 데이터 샘플 식별
값으로 na-grpcd
구성된 헤더 필드로 집계된 샘플을 식별할 수 있습니다. na-grpcd 데몬은 집계된 데이터를 생성합니다.
system_id: r1q13dep component_id: 65535 sensor_name: sensor_1004_1_1 subscribed_path: /interfaces/interface/subinterfaces/subinterface/ streamed_path: /interfaces/interface/subinterfaces/subinterface/ component: na-grpcd sequence_number: 2097152 export_timestamp: 1663783826926 update { timestamp: 1663783826901000000 prefix: /interfaces/interface[name='ge-1/0/0']/subinterfaces/subinterface[index='16386'] update { path { elem { name: init-time } } val { uint_val: 1663780730 } }
사용 팁
온박스 집계를 사용할 때는 다음 사항을 고려해야 합니다.
-
패킷 및 바이트 속도 계산은 집계된 통계 타임스탬프 메시지를 기반으로 합니다. 타임스탬프 메시지는 하나의 라우팅 엔진에서 합성되지만 여러 FPC의 캐시된 데이터를 기반으로 하기 때문에 패킷 및 바이트 속도가 정확하지 않을 수 있습니다. 보고 간격 구성이 적절할 때 정확도가 높아집니다(모범 사례 지침에 따름).
-
패킷 전달 엔진에서 통계 메시지를 내보내지 않으면(예: 작동 상태가 다운된 경우) 집계 통계는 수집기로 내보내지지 않습니다.
-
AE 번들이 있는 텔레메트리 MPLS LSP 통계는 패킷 및 바이트 속도에서 5%의 편차를 가질 것으로 예상합니다.
지원되는 리소스 경로
온박스 집계는 다음과 같은 리소스 경로를 지원합니다.
-
/junos/system/linecard/interface/traffic/
-
/junos/system/linecard/interface/queue/
-
/junos/system/linecard/interface/logical/usage/
-
/junos/system/linecard/cos/interface/interface-set/output/queue/
-
/junos/services/label-switched-path/usage/
-
/qos/interfaces/interface/output/queues/queue/state/
-
/interfaces/interface/state/counters/
-
/interfaces/interface/subinterfaces/subinterface/state/counters/
-
/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/
-
/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/
-
/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/state/counters/
-
/junos/system/linecard/interface/queue/(CoS 네이티브 리소스 경로)
-
/junos/system/linecard/qmon-sw/(CoS 네이티브 리소스 경로)
-
/qos/interfaces/interface/output/queues/queue/state/ (CoS OpenConfig 리소스 경로)
-
/qos/interfaces/interface/input/virtual-output-queues/voq-interface/queues/queue/state/ (CoS OpenConfig 리소스 경로)
-
/junos/system/linecard/interface/queue/(물리적 인터페이스 통계를 위한 기본 경로, AE 인터페이스 지원)
-
/qos/interfaces/interface/output/queues/queue/state/(AE 인터페이스 지원)
리소스 경로, 지원되는 리프 및 이를 지원하는 디바이스 플랫폼에 대한 자세한 내용은 Junos YANG 데이터 모델 탐색기 를 참조하십시오.