decodesflow

이더넷 프레임에서 sFlow v5 패킷을 디코딩하여 에이전트 정보, 샘플 유형, 샘플링 통계 등을 추출합니다.

명령어 속성

항목설명
명령어 유형가공 쿼리
필요 권한없음
라이선스 사용량해당 없음
병렬 실행지원
분산 실행수집 노드에서 실행 (mapper)

문법

decodesflow

입력 필드

필드타입필수 여부설명
payload바이너리필수이더넷 프레임 데이터. 바이너리 타입이 아닌 경우 해당 레코드를 무시합니다.

출력 필드

필드타입설명
src_ipIP 주소출발지 IP 주소
src_port32비트 정수출발지 포트 번호
dst_ipIP 주소목적지 IP 주소
dst_port32비트 정수목적지 포트 번호
protocol문자열전송 프로토콜. udp
ver32비트 정수sFlow 프로토콜 버전. 5
agent_addrIP 주소sFlow 에이전트 IP 주소
agent_id32비트 정수sFlow 서브 에이전트 ID
flow_seq64비트 정수sFlow 패킷 시퀀스 번호
uptime64비트 정수에이전트 시스템 가동 시간 (밀리초)
sample_type문자열샘플 유형. flow 또는 counters
sample_seq64비트 정수샘플 시퀀스 번호
src_id_type32비트 정수소스 ID 유형
src_id32비트 정수소스 인덱스
sampling_rate32비트 정수샘플링 비율. flow 샘플에만 해당
sample_pool64비트 정수총 샘플링 풀 카운트. flow 샘플에만 해당
drops64비트 정수드롭된 패킷 수. flow 샘플에만 해당
input_if_format32비트 정수입력 인터페이스 형식. flow expanded 샘플에만 해당
input_if_value32비트 정수입력 인터페이스 값. flow expanded 샘플에만 해당
output_if_format32비트 정수출력 인터페이스 형식. flow expanded 샘플에만 해당
output_if_value32비트 정수출력 인터페이스 값. flow expanded 샘플에만 해당
input_if_index32비트 정수입력 인터페이스 인덱스. flow 샘플에만 해당
output_if_index32비트 정수출력 인터페이스 인덱스. flow 샘플에만 해당
flows배열플로우 데이터 레코드 목록. flow 샘플에만 해당
counters배열카운터 데이터 레코드 목록. counters 샘플에만 해당

오류 코드

파싱 오류

해당 사항 없음

런타임 오류

해당 사항 없음

설명

decodesflow 명령어는 입력 레코드의 payload 필드에서 이더넷 프레임을 읽어 sFlow v5 패킷을 디코딩합니다. payload 필드가 바이너리 타입이 아닌 경우 해당 레코드를 무시합니다.

이더넷 프레임에서 IPv4 헤더와 UDP 헤더를 순차적으로 파싱한 후, UDP 페이로드에서 sFlow v5 매직 넘버(0x00000005)를 확인합니다. sFlow v5 패킷이 아니거나 IPv4가 아니거나 UDP가 아닌 경우 해당 레코드를 무시합니다.

하나의 sFlow 패킷에 여러 개의 샘플이 포함될 수 있으므로, 하나의 입력 레코드에서 여러 개의 출력 레코드가 생성될 수 있습니다. 샘플 유형에 따라 flow 샘플은 sampling_rate, sample_pool, drops, 인터페이스 정보 등을 포함하고, counters 샘플은 counters 배열을 포함합니다.

디코딩에 실패하면 해당 레코드를 무시하고 다음 레코드를 처리합니다.

이 명령어는 병렬 실행을 지원하며, 분산 환경에서는 수집 노드에서 실행됩니다.

사용 예

  1. PCAP 파일에서 sFlow 패킷 디코딩

    pcapfile /opt/logpresso/sflow-capture.pcap
    | decodesflow
    

    PCAP 파일에서 읽은 이더넷 프레임의 sFlow v5 패킷을 디코딩합니다.

  2. sFlow 에이전트별 샘플 수 집계

    pcapfile /opt/logpresso/sflow-capture.pcap
    | decodesflow
    | stats count by agent_addr
    

    sFlow 에이전트 IP 주소별로 샘플 수를 집계합니다.

  3. flow 샘플만 필터링하여 조회

    pcapfile /opt/logpresso/sflow-capture.pcap
    | decodesflow
    | search sample_type == "flow"
    | fields agent_addr, sample_seq, sampling_rate, drops, src_ip, dst_ip
    

    sFlow 패킷 중 flow 유형의 샘플만 필터링하여 주요 필드를 조회합니다.

호환성

decodesflow 명령어는 소나 4.0 이전 버전부터 제공되었습니다.