SNMP를 설명하기 전에 나온 배경부터 간단하게 알아보자. SNMP가 나오기 이전에 사용하던 네트워크 관리 프로토콜은 ICMP이 주로 사용되었다. ICMP에 대한 간단한 설명은 아래와 같다.

 - ICMP(Internet control  message protocol) : 인터넷 제어 메시지 프로토콜로 네트워크 계층의 프로토콜로써 운영체제에 관계없이 사용 할 수 있는 간단한 프로토콜이다. 네트워크로 연결된 각각의 호스트가 잘 작동하는지와 응답시간 등 간단한 정보를 얻을 수 있었으며 이를 이용한 프로그램 중 대표는 ping이라는 프로그램이다. 그러나 시대가 발전하면서 네트워크는 점점 복잡해지고 방대해지면서 ICMP만으로는 네트워크 관리를 효율적으로 할 수 없게 됬다.

 

 이로 인해 나온 프로토콜이 SGMP, HIMS, CMIP/CMIS 등이 생겨나게 되었다. 그 중에서 SGMP를 발전시킨 것이 SNMP가 된 것이다. 나머지 프로토콜을 주로 사용하지 않은 이유는 CMIP/CMIS는 너무 방대하고 복잡했으며, HIMS는 실제 적용사례가 많지 않기 때문이다. 이제 SNMP에 관해 자세히 알아보도록 하자.

 

 SNMP(Simple Network Management Protocol)란 간이 망 관리 프로토콜이라고 하며 IP 네트워크상의 장치로부터 정보를 수집 및 관리하고 수정하여 장치의 동작을 변경하는 데에 사용되는 인터넷 표준 프로토콜이다. SNMP는 네트워크 7계층 중에서 응용 계층에 해당하는 프로토콜로 TCP/IP 기반이며 메시지 교환에 의해 통신이 이루어진다.

 

 밑의 그림은 SNMP의 구조이며 Client(관리자) = Manager, Server(각 장치) = Agent라고 정의한다.

 

SNMP 통신 원리<출처 : 위키백과>

▶ SNMP 메시지 종류(PDU 타입에 따라 정의)

  • getRequest : 매니저가 하나 이상의 에이전트에게 오브젝트 값을 요청하는 메시지

  • getNextRequest : 위에 메시지와 비슷하지만 MIB상에 정의된 오브젝트 다음 값을 요청하는 메시지

  • setRequest : 매니저가 값을 요청하기 위한 것이 아니라 값을 설정하기 위해 에이전트에게 요청하는 메시지

  • getResponse : 매니저가 보낸 메시지에 에이전트가 응답하는 메시지

  • Trap : 에이전트가 자신에게 일어난 사건들에 대한 정보를 매니저에게 알리는 메시지(0~6까지의 flag 값 존재)

             0 - Cold Start : 에이전트 초기화

             1 - Warm Start : 에이전트를 설정의 변화 없이 초기화

             2 - Link Down : 통신 연결 링크 하나가 끊어짐

             3 - Link Up : 통신 연결 링크 하나가 연결됨

             4 - Authentication Failure : 서로간의 커뮤니티가 일치하지 않음

             5 - Egp Neighbor Loss : EGP의 상태가 변함

             6 - Enterprise Specific : 벤더별 특정한 코드 값의 Trap

SNMP Manager와 Agent간의 통신

 

 위의 그림을 살펴보면 manager에서 메시지 요청을 보낼 때마다 agent는 response로 manager에게 응답을 해주고 있다. 그리고 Trap은 agent가 mamager에게 자신의 상황을 알리는 것이기 때문에 따로 응답 메시지가 존재하지 않는다.

 

 다음은 현재 SNMP 버전에 대해서 살펴보도록 하자. 초기의 버전은 v1으로 위의 메시지 종류(get, getnext, set, response, trap)를 사용한다. 여기서 업그레이드 된 v2에서는 위에 메시지 + getbulk, inform이 추가되었는데 getbulk는 getnext의 업그레이드 형태로 기존의 getnext가 다음 값 하나만 가져오는 것에 반해 getbulk는 다음의 값들을 연속한 n개를 가져올 수 있다.

 그리고 inform은 trap의 업그레이드 버전으로 기존의 응답이 없던 trap에서 ack을 받을 수 있게 reliable trap이라고 이해하면 편할 것이다. 또 trap은 manager와 agent간의 관계에서 발생했지만 inform은 Infomer와 manager의 관계로 확장된다. 즉 agent가 아니라도 informer가 될 수 있다는 것이다.

 동작에서도 v1과 v2는 차이가 있는데 예를 들어서 10개의 인스턴스 값을 요청했을 경우 v1의 경우에는 하나라도 인스턴스가 존재하지 않는다면 10개 모든 값이 올라오지 않는데 반해 v2는 해당 인스턴스만 error를 나타내고 나머지 인스턴스의 값은 정상적으로 올라오게 된다. 밑의 표로 v1과 v2를 한 번 비교해 보았다.

 

v1

v2

보안 기능의 거의 없음

DES 알고리즘 도입 : 전송되는 테이블 보안 강화

MD5 알고리즘 도입 : 인증절차 보안 강화

관리자간의 통신 기능이 없음

PDU와 이를 위한 관리자간의 MIB 정의

-> 이를 통한 분산관리 도입 가능

UDP 기반으로 사용

UDP 뿐만 아니라 OSI CLNS, Apple talk의 DDP, 노벨의 IPX 등도 구현할 수 있도록 정의

기본 메시지만 사용

Bulk와 inform 메시지 추가

사전 : OSI CLNS, talk의 DDP, 노벨의 IPX

 

SNMP 각 Version<출처 : https://codeyk.tistory.com/21>

 

 SNMP로 네트워크를 관리하엿다면 무엇을 관리할 것인가(관리객체)를 결정해야 된다. 관리객체를 결정했다면 이러한 관리객체를 효과적으로 관리하기 위해서 분류를 해야하는데 그 때 필요한 것이 MIB이다. 다음은 장에서 MIB에 대하여 자세하게 알아보자.

'네트워크 > NMS' 카테고리의 다른 글

MIB(Management Information Base)란?  (0) 2020.01.03
NMS(Network Management System)이란?  (0) 2020.01.03
블로그 이미지

Mr.HB

프로그래밍 이야기

,