SNMP - RowStatus 객체의 의미 및 사용
- 개발/임베디드 리눅스
- 2021. 3. 30.
본 글은 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;
...
'개발 > 임베디드 리눅스' 카테고리의 다른 글
SNMP - RowStatus 표준 분석 (rfc 2579) (0) | 2021.03.29 |
---|---|
ffmpeg 사용법 - 임베디드 플랫폼용으로 빌드하기 (0) | 2021.03.21 |
JSMN(JSON parse library) 사용법 - 임베디드 플랫폼용으로 빌드하기 (0) | 2021.03.15 |
pps-tools 빌드하기 (0) | 2021.02.15 |
임베디드 리눅스 플랫폼에 DHCP 서버 구축하기 - udhcp (0) | 2020.04.09 |
OpenSSL 을 임베디드 리눅스용으로 크로스 컴파일하기 (0) | 2020.01.31 |
임베디드 리눅스 장치에 GPS 모듈을 USB 로 연결하기 (0) | 2020.01.30 |
dfu-util을 임베디드 리눅스용으로 크로스 컴파일하기 (1) | 2020.01.30 |