SNMP - RowStatus 객체의 의미 및 사용

반응형

본 글은 SNMP 표준 중 RFC 2579 Textual Conventions for SMIv2 표준에 정의된 RowStatus 객체의 의미와 그 사용 방법을 정리한 글입니다.

    테이블 유형의 MIB 오브젝트

    MIB를 정의할 때, 테이블 유형의 오브젝트를 정의할 수 있습니다.

    테이블 유형의 오브젝트는 공통된 형식의 정보 묶음이 하나 이상 존재할 경우에 사용됩니다.

    예를 들면 다음과 같습니다.

    • SNMP 관리 대상 장치에 장착된 하나 이상의 네트워크 인터페이스에 대한 정보를 관리하고자 하는 경우,
      • 각 네트워크 인터페이스는 보통 공통된 상태정보(들)을 가집니다. 예: 연결상태, IP주소, 송신패킷 수, 수신패킷 수 등
      • 이처럼 공통된 상태정보(들)을 하나의 정보 묶음으로 정의합니다.
      • 각 네트워크 인터페이스에 대한 상태정보는 이렇게 정의된 정보 묶음을 통해 표현 및 관리됩니다.
      • 장치 내에 다수의 인터페이스가 있는 경우, 각 인터페이스에 대응되는 다수의 정보 묶음이 존재하게 되며, 이러한 정보 묶음들은 하나의 테이블로써 관리됩니다.

    테이블은 하나 이상의 엔트리(들)의 집합으로 구성되는데, 각 엔트리는 내부에 하나 이상의 오브젝트(들)을 가집니다.

    • 위 예에서의 정보 묶음이 엔트리에 해당됩니다.
    • 위 예에서 정보 묶음 내 상태정보(들)이 엔트리 내 오브젝트(들)에 해당됩니다.

    일반적인 테이블은 행(Row)과 열(Column)로 표현됩니다.

    SNMP MIB에서 역시, 테이블 내 각 엔트리는 행으로써 표현되며, 엔트리 내 각 오브젝트들은 열로써 표현됩니다.

    테이블에 새로운 엔트리가 추가되면 새로운 행이 추가되는 개념입니다. 행이 추가되면 행 내의 열(들)에 해당되는 오브젝트(들)이 자동으로 추가됩니다.

    (즉, 새로운 행은 추가할 수 있어도 새로운 열을 추가할 수는 없습니다. 열에 해당되는 오브젝트(들)을 추가하는 유일한 방법은 행 추가를 통해 간접적으로 추가하는 방법 뿐입니다.)

     

    RowStatus

    개념

    RowStatus 는 단어 의미 그대로 행의 상태를 표시하는 역할을 합니다.

    따라서 각 행마다 해당 행의 상태를 나타낼 수 있도록 RowStatus 유형의 오브젝트를 포함시켜 정의하며, 보통 엔트리의 마지막 오브젝트(=마지막 열)로써 정의합니다.

    RowStatus가 적용된 테이블 유형 오브젝트의 예는 다음과 같습니다. CitsRsuV2xMsgFwdEntry 엔트리(=행)의 마지막 오브젝트가 RowStatus 유형의 변수입니다.

    --
    -- * V2X 메시지 전달정보 테이블
    --
    citsRsuV2xMsgFwdTable OBJECT-TYPE
        SYNTAX SEQUENCE OF CitsRsuV2xMsgFwdEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "V2X message forward information table."
        ::= { citsRsuV2xMsgRx 2 }
    
    --
    -- * V2X 메시지 전달정보 엔트리
    --
    citsRsuV2xMsgFwdEntry OBJECT-TYPE
        SYNTAX CitsRsuV2xMsgFwdEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "V2X message forward information entry"
        INDEX { citsRsuV2xMsgFwdIndex }
        ::= { citsRsuV2xMsgFwdTable 1 }
    
    CitsRsuV2xMsgFwdEntry ::= SEQUENCE {
            citsRsuV2xMsgFwdIndex CitsRsuTableIndex,
            citsRsuV2xMsgFwdId Unsigned32,
            citsRsuV2xMsgFwdPsid Unsigned32,
            citsRsuV2xMsgFwdDestIpVersion INTEGER,
            citsRsuV2xMsgFwdDestIpv4Address OCTET STRING,
            citsRsuV2xMsgFwdDestIpv6Address Ipv6Address,
            citsRsuV2xMsgFwdDestPort Unsigned32,
            citsRsuV2xMsgFwdRcpiThreshold Unsigned32,        
            citsRsuV2xMsgFwdFrequency Unsigned32,
            citsRsuV2xMsgFwdStatus RowStatus
        }
    
    ...
    ...
    
    -- 
    -- * 엔트리 상태 - 각 엔트리의 생성/삭제 관리용
    --
    citsRsuV2xMsgFwdStatus OBJECT-TYPE
        SYNTAX RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION 
            "See the comments above."
        ::= { citsRsuV2xMsgFwdEntry 10 }

     

    표준 분석

    RowStatus는 RFC 2579 Textual Conventions for SMIv2 표준에 정의되어 있으며, 표준에 정의된 내용은 다음에서 확인할 수 있습니다.

     

    적용

    경험 상, 테이블 유형의 오브젝트에 RowStatus를 사용하는 것이 필수는 아닙니다.

    보통 "MAX-ACCESS = read-create" 인 내부변수(들)을 가지는 테이블(테이블 엔트리가 새롭게 생성되거나 삭제 가능한 유형의 테이블)에 사용됩니다.

    "MAX-ACCESS = "read-only" 또는 "read-write"인 내부변수(들)을 가지는 테이블(테이블 엔트리가 고정되어 있고 값만 수정 가능한 유형의 테이블)에서는 사용하지 않습니다(사용해서는 안 되는 것인지 확인 필요)

    RowStatus는 RFC 1443 Textual Conventions for SNMPv2 에 정의되어 있다. 따라서, RowStatus를 사용하는 MIB를 작성할 때에는 MIB 파일 상단에 다음과 같이 기술해 주어야 합니다.

    MY-PRIVATE-MIB DEFINITIONS ::= BEGIN
    
    IMPORTS
    RowStatus FROM SNMPv2-TC;
    
    ...

    댓글

    Designed by JB FACTORY