SNMP
1. 개요
SNMP는 IETF가 망관리를 위해 규약화한 것으로 UDP / IP 상에서 동작하는 비교적 단
순한 형태의 메시지 교환형 네트워크 관리 프로토콜을 말한다.
2. 특징
ㅇ SNMP의 장점으로는,
- 매우 간단하여 TCP/IP 망 요소 어디에도 쉽게 관리 적용이 가능
- TCP/IP를 기반으로 하는 망의 기본적인 망관리 도구의 역할을 하고 있다.
ㅇ SNMP의 단순한 요청/응답 메카니즘으로써는,
- Manager/Agent(관리자/대리인) 형태로 동작
ㅇ 사용 포트 번호 로는,
- 161(통상의 메세지) 및 162(트랩 메세지) 를 사용
- 수송(Transport)용 프로토콜은 UDP 를 이용
ㅇ 망관리를 위해서는,
- SNMP는 SMI 및 MIB 라는 다른 2개의 프로토콜과 함께 사용되어야 한다.
- TMN 망관리 관점에서볼 때, Network Element Management 를 담당한다.
3. 주요 구성
ㅇ Network Management System (NMS) : 관리하는 시스템 (호스트 등)
- Manager : 관리시스템 안에 탑재하여 관리용 메세지를 에이전트에 요청
ㅇ Managed Device : 관리되는 장비들 (허브, 라우터, 스위치, 브리지, 호스트 등)
- Agent : Managed Device 안에 탑재되는 관리 모듈
ㅇ Management Information Base (MIB) : 관리 대상을 규격화한 정보
4. 동작 구조
ㅇ Manager는 Agent에게 요청을 하고,
- Agent가 생산하는 관리정보(MIB, Management Information Base) 데이타를 통하여
관리 역할을 수행한다.
ㅇ Manager와 Agent의 상호 데이타 교환은,
- MIB라는 데이타베이스안의 변수에서 읽기,쓰기(get, set) 명령과 다음 변수값
가져오기(get-next) 명령에 의한다.
ㅇ SNMP와 관련된 모든 패킷 구조는,
- OSI가 표준화한 ASN.1/BER (Abstract Syntax Notation One/Basic Encoding Rule)
라는 문법체계를 따른다.
5. 기본 명령어/동작 체계
ㅇ Get : 관리정보를 검색
- 변수 읽어 들이기, Agent가 가지고 있는 변수 읽기
ㅇ Get-Next : 관리정보를 연속해서 검색
ㅇ Set : 관리정보를 바꾸는데 사용
- 변수 써넣기, Agent가 갖고있는 변수 바꿔쓰기
ㅇ GetResponse : 관리시스템 명령에 대한 응답
ㅇ Trap : 예외 동작을 통지, 예상치 못한 사태 발생을 알림
6. SNMP 관련 메세지 종류 및 형태 ☞ SNMP 메세지
ㅇ GET-REQUEST, GET-NEXT-REQUEST, GET-BULK-REQUEST, SET-REQUEST ... 등
ㅇ SNMP는 관리자와 에이전트 간에 주고받는 패킷의 형식을 정의하고 있다.
7. 관련 표준 ☞ 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(Simple Network Management Protocol)는 TCP/IP 프로토콜 그룹을 이용하여 인터넷상에서 장치를 관리하기 위한 기반구조이다. 이것은 인터넷을 감시하고 관리하기 위한 기본적인 운영을 제공한다. SNMP는 관리자와 대행자의 개념을 사용한다. 일반적으로 호스트는 여러 대행자(일반적으로 라우터)를 제어하고 감시한다. SNMP는 일부 관리지국이 대행자들을 제어하는 응용 레벨 프로토콜이다. 프로토콜은 서로 다른 제조업자들에 의해 만들어진 장치를 모니터하기 위해 응용 레벨로 설계되었고, 서로 다른 물리적인 네트워크에서 설치된다. 다른 말로 하면, SNMP는 관리되는 장비들의 물리적인 특성과 기존 네트워킹 기술들에 구애받지 않고 자유롭게 관리작업을 할 수 있게 한다. 이것은 서로 다른 제조업자들에 의해 만들어진 라우터와 게이트웨이에 연결된 서로 다른 LAN과 WAN으로 구성된 네트워크 간 연결에서 사용될 수 있다.
관리자(manage)라 불리는 관리지국은 SNMP 클라이언트 프로그램을 실행하는 호스트이고, 대행자(agent)라 불리는 관리되는 지국은 SNMP 프로그램을 실행하는 라우터나 호스트이다. 관리는 관리자와 대행자의 간단한 상호대화를 통해 이루어진다. 대행자는 데이터베이스에 성능정보를 가지고 있다. 관리자는 데이터베이스에 들어 있는 값을 액세스하게 된다. 예를 들면, 라우터는 수신되거나 포워드되는 패킷수를 해당변수에 저장할 수 있다. 관리자는 라우터가 혼잡한지 아닌지를 보기 위해 이들 2개의 변수값을 비교한다. 또한 관리자는 라우터가 어떤 동작을 수행하도록 할 수 있다. 예를 들면, 라우터는 정기적으로 언제 자신을 재부팅해야 되는지를 보기 위해 재부팅 카운터의 값을 확인할 수 있다. 만약 카운터 값이 0이면 자신을 재부팅시킨다. 관리자는 특정 시간에 원격으로 대행자를 재부팅하기 위하여 이 기능을 사용한다. 이것은 단순하게 카운터 값이 0이 되도록 하는 패킷을 보내는 것이다. 또, 대행자는 관리작업에 도움이 된다. 대행자에서 실행되는 서버 프로그램은 환경을 검사할 수 있고, 무언가 예외적인 상황이 보고되면 관리자에게 경고 메시지(trap이라는)를 보낼 수 있다. 다시 말하면, SNMP를 이용한 관리는 다음 세 가지 기본 아이디어를 기반으로 한다.
1. 관리자는 대행자의 동작을 반영하는 정보를 요청함으로써 대행자를 확인할 수 있다.
2. 관리자는 대행자 데이터베이스에 들어 있는 값을 재설정함으로써 대행자가 작업을 수행하도록 강요할 수 있다.
3. 대행자는 비정상적인 상황을 관리자에게 경고함으로써 관리작업에 도움을 줄 수 있다.
SNMP는 GetRequest, GetNextRequest, SetRequest, GetResponse, Trap이라는 5개의 메시지를 정의한다.
■ GETRequest : GetRequest 메시지는 변수의 값을 검색하기 위해 관리자(클라이언트)에서 대행자(서버)로 보내진다.
■ GETNextRequest : GetNextRequest 메시지는 변수의 값을 검색하기 위해 관리자에서 대행자로 보내진다. 검색된 값은 메시지에 정의된 깍체 뒤에 있는 객체의 값이다. 이것은 대부분 표에서개체들의 값을 얻기 위해 사용된다. 만약 관리자가 개체의 인덱스를 알지 못한다면,값을 검색할수 없다. 그러나, 이것은 GetNextRequest를 사용할 수 있고 객체를 정의할 수 있다.
■ GETResponse : GetResponse 메시지는 GetRequest와 GetNextReques떼 대한 응답으로 대행자가 관리자에게 보낸다. 이것은 관리자에 의해 요청된 변수들의 값을 포함한다.
■ SetRequest : SetRequest메시지는 변수의 값을 저장하기 위해 관리자가 대행자에게 보낸다.
■ Trap : Trap 메시지는 이벤트를 보고하기 위해 대행자가 관리자에게 보낸다. 만약 대행자가 재부팅된다면, 이것은 재부팅 시간을 관리자에게 통보하고 보고한다.
인터넷에서 관리는 SNMP 프로토콜뿐만 아니라 SNMP와 상호 동작하는 프로토콜을 사용함으로써 이루어진다. 최상위 레벨에서, 관리는 2개의 프로토콜인 SMI(structure of management information)와 MIB(management information base)를 통해 이루어진다. SNMP는 작업을 하기위해 이들 2개의 프로토콜에 의해 제공된 서비스를 이용한다. 다른 말로 하면, 관리는 SMI, MIB, 그리고 SNMP를 통한 상호협력으로 이루어진다. 이들 세 가지는 ASN.1(abstract syntax notation 1), BER(basic encoding rules)과 같은 다른 프로토콜을 사용한다.
SMI는 네트워크 관리에 사용되는 구성요소이다. 이의 기능은 객체에 이름을 지정하고, 객체에저장될 수 있는 데이터 유형을 정의하며.네트워크를 통한 전송을 위해 데이터를 부호화하는 방법을 알려준다.
MIB(management information base)는 네트워크 관리를 위해 사용되는 두번째 구성요소이다. 각 대행자는 자신의 MIB를 가지고 있다. 이것은 관리자가 관리할 수 있는 모든 객체의 집합이다. MIB에서 객체는 8개의 서로 다른 그룹인 시스템, 인터페이스, 주소변환, ip, icmp, top, udp, 그리고 egp으로 분류된다. 이들 그룹은 객체식별자 트리의 MIB 객체에 속해있다. 각 그룹은 규정된 변수 그리고/또는 표를 갖는다.
Microsoft Office OneNote 2007을 사용하여 작성했습니다.
모든 노트 및 정보를 한 곳에서 볼 수 있습니다.