SNMP - 1건
- 2008/02/05 [SNMP] SNMP에 대하여.
[SNMP] SNMP에 대하여.
SNMP란 무엇인가
SNMP는 Simple Network Management Protocol의 약자이다. 해석을 해보자면 간단한 네트워크관리를 위한 규약 인데, 말그대로 SNMP는 네트워크관리를 위한 용도로 사용되는 프로토콜이다 그럼 먼저 SNMP가 나타난 배경에 대해서 알아보도록 하겠다 SNMP가 쓰이기 전에는 일반적으로 사용되는 네트워크 관리는 ICMP에 의존했었다. ICMP는 Network계층의 프로토콜로써, 운영체제에 관계없이 사용할수 있는 간단한 프로토콜이였다. 이 프로토콜을 이용해서 우리는 네트워크로 연결된 각각의 호스트가 작동하고 있는지, 작동한다면 어느정도의 응답시간을 가지고 작동하는지 등의 간단한 정보를 얻을수 있었으며, 초기에는 이정도로도 필요한 네트워크 관리가 가능했었다.
그러나 인터넷의 사용이 보편화되고 네트워크에 연결된 호스트의 수가 증가하자 거기에 따라서 네트워크 구성역시 복잡해지고, ICMP만을 가지고는 이러한 네트워크의 관리를 효율적으로 할수 없게 되었다.
그래서 몇가지 프로토콜에 대한 연구가 진행되었고 이중에서 SGMP를 발전시킨 SNMP가 사실상 네트워크 관리를 위한 표준적인 프로토콜로 자리잡게 되었다. 다른 프로토콜들이 사용되지 않은데에는 몇가지 이유가 있었다. CMIP/CMIS는 너무 방대하고 너무 복잡했으며, HEMS의 경우에는 실제 적용사례가 적었기 때문이다.
SNMP를 통한 망의 구성
일반적으로 SNMP망 에서는 서버/클라이언트라고 부르지 않고 snmp manager/snmp agent라고 부른다. snmp agent는 관리대상이 되는 시스템에 설치되어서 필요한 정보(네트워크 혹은 시스템)를 수집하기 위한 snmp 모듈(혹은 애플리케이션) 이며, snmp manager은 snmp agent가 설치된 시스템에 필요한 정보를 요청하는 snmp 모듈이다. 
MIB에 대해서
SNMP는 네트워크를 관리하기 위한 프로토콜이다. 그렇다면 무엇을 관리할 것인가(관리객체)를 결정해야 할것이다. 관리객체를 결정했다면, 이러한 관리객체를 효과적으로 관리하기 위해서 이를 분류해야 할것이다. 이게 바로 MIB이다. Management Information Base의 줄임말인데, 관리되어야할 자원 객체의 분류된 정보를 말한다. 관리되어야할 객체는 시스템정보, 네트워크사용량, 네트워크 인터페이스정보 등이 된다.
이 MIB객체들은 관리하기 편하도록 Tree구조를 가지게 된다. 다음은 MIB의 일반적인 구조이다. 
MIB는 위에서 처럼 계층적인(디렉토리) 구조를 가지게 된다(위의 그림은 MIB를 설명하기 위해 일부만을 표시하고 있다). 예를들어서 agent가 설치되어 있는 시스템으로 부터 시스템부가정보(sysDescr)를 원한다면 ISO.org.dod.internet.mgmt.mib-2.system.sysDescr과 같은 식으로 manger에서 데이타를 요청하면 된다. 위의 MIB계층 구조를 보면 각 MIB옆에 숫자가 있는것을 볼수 있다. 이 숫자가 OID번호이다. 즉 sysDescr의 OID값은 1.3.6.1.1.2.1.1.1 이 될것이다. OID번호를 이용하는 이유는 MIB고유 문자열을 통해서 원하는 데이타를 가져오기위해서는 아무래도 요청이 길어질수가 있기 때문이다.
MIB는 IANA(Internet Assigned Number Authority)라는 단체에서 관리하며 표준적으로 사용되고 있다. 그럼으로 표준적인 MIB구현을 위해서는 IANA에서 OID를 부여받아야만 한다. 그래야 전체네트워크상에서 다른 여러가지 MIB와 중복되지 않고 사용이 가능할것이다.
SNMP 메시지
SNMP(단순 네트워크 관리 프로토콜) 관리 프로그램이 네트워크 장치로 요청을 보내면 그 장치에 있는 에이전트 소프트웨어가 요청을 받아 MIB에서 정보를 검색합니다. 그런 다음 에이전트는 요청된 정보를 초기의 SNMP 관리 프로그램으로 돌려 보냅니다. 에이전트는 이러한 작업을 수행하기 위해 다음 메시지 유형을 사용합니다
Get
기본적인 SNMP 요청 메시지입니다. SNMP 관리 시스템이 보내는 이 메시지는 SNMP 에이전트의 단일 MIB 항목에 대한 정보를 요청합니다. 사용 가능한 드라이브 공간에 대한 정보 요청이 그 예가 될 수 있습니다.
Get-next
관리 개체의 전체 트리를 검색하는 데 사용할 수 있는 확장된 형식의 요청 메시지입니다. 특정 개체에 대한 Get-next 요청을 처리할 때 에이전트는 요청한 개체에 대해 논리적으로 다음에 오는 개체의 ID와 값을 반환합니다. Get-next 요청은 내부 IP 경로 테이블 같은 동적 테이블에 유용합니다.
Set
쓰기 액세스가 허용되는 경우 이 메시지를 사용하여 업데이트된 MIB 값을 에이전트에 보내고 지정할 수 있습니다.
Getbulk
호스트 에이전트가 주어진 메시지 크기 제한을 넘지 않는 범위에서 최대 크기의 데이터를 전송하도록 요청합니다. 이 메시지는 대량의 관리 정보를 검색하는 데 필요한 프로토콜 교환 횟수를 최소화합니다. 최대 메시지 크기는 경로 MTU(최대 전송 단위), 즉 네트워크의 단일 프레임에 허용되는 최대 프레임 크기를 넘지 않아야 합니다. 그렇지 않은 경우 데이터가 조각화됩니다.
Trap
특정 종류의 이벤트가 관리된 호스트에서 로컬로 발생했음을 감지할 때 SNMP 에이전트가 SNMP 관리 시스템에 보내는 임의의 메시지입니다. 트랩 메시지를 받는 SNMP 관리 콘솔이 트랩 대상으로 간주됩니다. 예를 들어 시스템 다시 시작 이벤트에 대해 트랩 메시지가 보내질 수 있습니다.

SNMP Agent는 네트웍장비 기능에 관련된 파라메트들로 구성된 MIB를 관리한다. 스위치를 예를 들면, 네트웍시스템이 연결과는 상관없이 각 스위치 포트당 송.수신된 프레임의 수, 충돌 발생횟수, CRC에러 수를 알수 있는 파라메트들을 지속적 검색할수 있다. 이러한 정보는 SNMP agent에의하여 작동적으로 꾸준히 수집 및 검색되고, 관리시스템은 SNMP명령어를 통하여 변경시킬수 있다.
SNMP Community
SNMP는 IP (Internet Protocol) 기반의 UDP( User Datagram Protocol )환경에서 작동되고, 관리시스템과 Agent은 각각 특정 IP가 필요하다.
SNMP는 아주 기초적인 보안시스템이 제공된다. SNMP에서 Community Name이라는 암호화 되지않은 문자 패스워드를 사용한다. Community Name이 서로 동일해야만 SNMP메시지 전송 프로세스를 시작할수 있다.
SNMP Agent는 일반적으로 Read Community User와 Read/ Wirte Community User로 구별된다. SNMP명령어를 통하여 네트웍장비로부터 정보를 읽고, 셋팅할수 있는 사용자들은 Read/ Wirte Community User 그룹에 속하고, 단지 정보만을 읽고, 셋팅할수 없는 사용자들은 Read Community User그룹에 속한다.

SNMP Agent는 SNMP Request에 의한 읽기또는 셋팅작업을 하기전에 Community Name을 체크한다. 만약 Community Name이 동일하지 않다면, 요청된 Request를 거절한다.
- [위 문서는 인터넷에 있는 SNMP 관련 문서들을 참조 했음을 밝힙니다]
