관리 메뉴

아이짱구

NMS | Network Management System 본문

development/network

NMS | Network Management System

아이짱구 2008. 7. 8. 14:01

NMS의 개념

네트워크와 분산 시스템은 정보화 사회의 중추적인 역할을 담당하고 있으며 그 중요성이 날로 커지고 있다. 이에따라 얼마  전부터 안전하고 효율적인 네트워크 환경을 위한 관리의 개념이 중요하게 대두되고 있다.  이에 연재를 통해 인터넷 환경에서의 네트워크 관리 시스템에 대한 전반적인 내용을 살펴보도록 하겠다. 이번 호에서는 네트워크 관리 시스템의 개념과 이를 기술하기 위한 언어인 ASN.1(Abstract Syntax Notation.1)에 대해 알아보도록 하겠다.

노정민 한국항공대학교 항공통신정보공학과 대학원
hmask@esc.cl.hangkong.ac.kr


디지털 시대를 맞아 대부분의 대기업과 관공서에서 네트워크를 기반으로  주요 업무를 처리하고 있다. 따라서 네트워크가 다운된다거나 갑자기 속도가 떨어진다면 단순한 문제가 아니라 국가적인 문제가 될 수  있다. 이같은 이유로 21세기 기업 컴퓨팅 환경의 인프라라고 할 수 있는 네트워크의 중요성은 나날이 커지고 있다.


네트워크 관리의 개요

네트워크는 인터넷의  보편화와 함께  급속도로 번지고  있다. 또한 데이터망(Data Network)과 기존 통신망(Telecom m unication Network)의 통합과 서로 다른 시스템, 네트워크 장비, 운영체계(Operating  System), 통신규약(Protocol) 등이 복잡하게 묶여 있으며 이를 사용하는 서비스와 사용자가 급격하게 증가하여 점점 규모가 커지고 있다. 따라서 안정적이고 효율적인 네트워크 환경을 제공하기 위해서 네트워크 상에 존재하는 다양한 자원들을  모니터링하고 제어하는 네트워크 관리의 개념이 필요하게 되었다.

네트워크 관리의 개념을 세분화 시켜보면 다음과 같다.

① 전산 자윈의 중요성이 커짐
네트워크와 분산된 전산 자원들은 그 단체에서 가장 중요한 역할을 수행할 뿐만 아니라 자산으로서도 중요성이 커지게 되어 전산자원 자체도 효율적인 관리를 필요로 하게 되었다.

② 복잡해진 네트워크 관리 구조
다양한 네트워크 구성요소와 인터페이스, 프로토콜의 사용과 서비스로 인해 네트워크가 한층 복잡해져 관리가 어려워졌다.

③ 서비스 개선
네트워크를 이용하는 규모가 커지고 이에따라 자원과 정보가 증가함에 따라 안정적인 고속 서비스를 원하게 되었다.

④ 사용자의 다양한 요구 충족
성능, 가동율(Availablity), 보안(Security) 등에서 사용자의 다양한 요구를 만족시켜야 한다.

⑤ 자원의 활용성(Utilization) 증대
네트워크에 소요되는 경비를 조절하기 위해 분산된 네트워크 자원의  활용성을 모니터링하고 제어하는 것이 필요해졌다.


네트워크 관리 시스템

네트워크 관리 시스템(이하 NMS)은 네트워크 상의 자원들을 모니터링하고 제어하기 위한 도구로 네트워크 관리 정보를 입력받아 적당한 관리 동작을 한다.

NMS는 하드웨어 또는 소프트웨어로 구성되며 기존의 네트워크 자원에 덧붙여 사용된다.


네트워크 관리 시스템의 구조

NMS는 관리자가 쉽게 사용할  수 있는 간단명료한 인터페이스로  구성되어야 하지만 전체 네트워크를 일관된 구조로 살펴보기 위해서는 모든 네트워크 관리업무를 수행할 수 있을 만큼 기능이 강력해야 한다.

이를 위해 NMS는 전체 시스템에서 관리하는 네트워크 요소의 각 지점과 특정한 속성에 주소와 이름을 지정하고, 반대로  작동하는 네트워크 요소들은 주기적으로 자신이 가진 정보를 중앙  제어 센터에 제공하는 구조를  취한다. 이런 구조를 관리자-대리자(Manager-Agent Paradigm) 구조라고 한다.


네트워크 관리 시스템의 구성

NMS는 에이전트(Agent)와  매니저(Manager)로 나뉘어지며  NME와 NMA로 이루어져 있다. NME(Net work Management Entity)는 실제 에이전트의 역할을 수행하는 객체로 네트워크 자원들에 대한 직접적인 관리를 한다. 워크스테이션(Workstation), 브릿지(Bridge), 라우터, PC를 비롯해서 기타 관리되는 시스템에 존재하며, 네트워크와 관련된 정보를 수집하여 저장하고 매니저로부터 요청이 들어오면 자신이 관리하는 정보를 보내준다.

NMA(Network Management Application)는 매니저의 역할을 수행하는 응용프로그램으로 에이전트가 관리하는 객체의  내용들을 수집해서 전체  네트워크를 관리한다. 에이전트와 통신을 할 때는 다양한  종류의 네트워크로 인해 표준화된 프로토콜(SNMP, CMIP)을 사용하여 정보를 교환한다.

Proxy
매니저와 에이전트가 서로 다른 프로토콜을 사용하거나 표준에 맞지 않는 자체적인 관리 인터페이스를 가지는 경우 중간에 프록시(Proxy)를 둔다. 프록시는 매니저의 표준 프로토콜을 받아 상대 시스템에 맞는 형태로 변환시켜서 전달하고, 상대 시스템에서 되돌아온 결과를  표준 프로토콜로 바꾸어 매니저에게 전달한다.

네트워크 모니터링
네트워크 모니터링이란 NMS를 이용하여 네트워크 자원들의  상태를 관찰하여 분석하는 것이다.

모니터링 정보의 분류
네트워크 모니터링에서 얻는 정보는 크게 정적 정보(Stat ic Information), 동적 정보(Dynamic Information), 통계 정보(Statistical Information)로 구분된다. 정적 정보는 네트워크의 구성과 구성 요소와 같이 쉽게 변하지 않는 정보를 말한다(예:포트 번호).
동적 정보는 네트워크의 상태와 이벤트에 의해서 변하는 정보를 말한다(예:패킷의 전송량, 에러 개수). 마지막으로  통계 정보는 동적 정보의 통계치(평균 전송량)를 뜻한다.

모니터링 방법
에이전트의 내용을 매니저에게 전달하는 방법에는 폴링(Polling)과 이벤트 보고(Event   Reporting)가 있다. 폴링은 요청에 의한 응답(Request-Response) 방식으로서 매니저가 에이전트에게 원하는 정보를 요구(Request)하면 에이전트는 매니저가  원하는 정보를 찾아서 응답(Response)해 준다. 그리고 SNMP(Simple Network Management Protocol)에서 정보를 교환하는 주된 방법으로 구현은 쉽지만 네트워크에 부하를 많이 주는 단점이 있다.
다음으로 이벤트 보고는 에이전트가 매니저의 요구가 없어도 매니저에게  정보를 보내는 방법으로 상태나 속성값이 자주 바뀌지 않는 경우에 폴링  방식보다 효율적이다. 특별한 이벤트가 발생했을 경우에 주로 사용되며 SNMP에서는 트랩(Trap)이라고 한다.

네트워크 모니터링에 의한 관리
네트워크 모니터링에 의한 관리는 크게 결함 관리, 과금 관리, 성능 관리로 구분할 수 있다. 이들 관리를 자세히 살펴보도록 하겠다.

결함 관리(Fault Management)
결함 관리 기능은 관리하고 있는 네트워크 장비에 결함이 발생했을 경우 원격에 위치한 관리 시스템이 이를 빠르고 효과적으로 처리하여 시스템과 네트워크가 정상적으로 동작하도록 하기 위한  기능이다. 결함 처리 과정은 다음과 같다.

① 결함이 발생한 위치를 파악한다(Detect).
② 결함이 발생한 부분을 다른 부분으로부터 격리한다(Isolate).
③ 결함의 영향을 최소화하기 위해 네트워크를 변경해서 재구성한다(Reconfigure).
④ 결함을 일으킨 구성 요소를 수리하거나 교체한다(Repair).

이런 결함 관리를 위해서는 로깅(Logging),  이벤트 보고, 연결 테스트  기능이 필요하다. 로깅 기능은 중요한 사건들과 에러를  기록하는 기능으로서 로그 데이터의 분석을 통해 결함을 발견할 수 있다. 이벤트  보고 기능은 어떤 사건이 발생하면 바로 관리자에게 보고하는 기능이다.  진단 기능은 연결 테스트(예: traceroute), 프로토콜의 무결성, 응답시간검사(Response Time Check), 생존 검사(예 : ping), 루프백(loop-back) 등을 검사하는 기능이다.

과금 관리(Accounting Management)
과금 관리는 네트워크 자원에 대한 활용(Utilization) 정보를 얻기 위해서는 사용 용도에 따른 쿼터(quota)를 할당하고 사용자를 구분(Identify)해서 사용자별로 관리 내역을 기록해야 한다. 이와 같이 과금 관리는 사용자들의 네트워크 자원 사용 현황을 지속적으로 검사하여 이를 데이터베이스에 저장해서 자원의 사용 정도에 따라 이용료를 부과하기 위해 필요한 기능이다. 또한 과금 관리에서 얻어진 정보들은 다른 곳에서도 유용한 정보로 사용된다.

성능 관리 기능(Performance Management)
현재 네트워크 장비들과 링크에 대한 활용도를 조사해서 가장 효율이 높은 경로를 찾거나, 성능 저하가 있는 부분을 찾아내어 문제를 해결하는 기능이다. 네트워크 성능을 측정하기 위한 지표들은 표 1과 같고 성능은 다음 사항들과 밀접한 관련이 있다.

·용량 활용도(Capacity Utilization)가 얼마나 높은가?
·과도한 흐름(Excessive Traffic)이 있는가?
·처리량(Throughput)이 줄어들었는가?
·어디서 병목(Bottleneck)이 일어나는가?

따라서 성능 관리에는 이들을 모니터링 할 수 있는 다음 기능들이 필요하다.

·성능 측정(Performance Measurement): 실제 트래픽을 측정하는 기능으로 에이전트에 의해 수행된다.
·성능 분석(Performance Analysis): 에이전트들이 측정한 통계치를 모아서 분석하는 기능으로 매니저에 의해 수행된다.
·테스트 트래픽 생성(Synthetic Traffic Generation): 인위적으로 트래픽을 생성하여 성능을 측정하는데 사용한다.

네트워크 제어에 의한 관리
네트워크 제어는 네트워크 관리와 관련된 여러 가지 설정값들을 변화시키고 각 자원들에 대한 구성에 대한 관계를 정의하는 것이다.
 
구성 관리 기능(Configuration Management)
구성 관리는 그림 11과 같이 관리하려는 대상을 정의하고 대상들 간의  관계를 설정해서 관리자가 관리 대상의 설정을 바꾼다거나 관리 정보를 가져오는 것을 쉽게 할 수 있도록 도와주는 기능이다.

보안 관리 기능(Security Management)
보안 관리 기능은 중요한 정보를  침입자로부터 보호하기 위해 허락되지 않은 사용자들이 네트워크 자원을 사용하는 것을  막고 관리 정보에 접근하는 것을 막아 안전한 네트워크 환경을 제공하기 위한 것이다. 보안 관리를 위해서는 먼저 표 2와 같은 사항을 고려해야 한다. 보안 관리를 위한 기능은 다음과 같다.

·데이터를 암호화하는 기능
·암호화에 필요한 키를 생성하고 분산시켜 관리하는 기능 사용자를 인증할 수 있는 기능
·네트워크 자원에 대한 접근 권한을 제어하는 기능
·보안정보와 감사정보(Audit Records or Security Logs)를 모아  저장하고 점검하는 기능

-- 객체의 자리를 구분짓는 색인
   internet   OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }
   directory OBJECT IDENTIFIER ::= { internet 1 }
   mgmt      OBJECT IDENTIFIER ::= { internet 2 }
          
-- 객체가 가질 수 있는 type의 종류
   IpAddress  ::= [APPLICATION 0] IMPLICIT OCTET STRING (SIZE (4))     
   Counter     ::= [APPLICATION 1] IMPLICIT INTEGER (0..4294967295)
   Gauge       ::= [APPLICATION 2] IMPLICIT INTEGER (0..4294967295)
   TimeTicks  ::= [APPLICATION 3] IMPLICIT INTEGER (0..4294967295)
   Opaque     ::= [APPLICATION 4]            -- arbitrary ASN.1 value,
                       IMPLICIT OCTET STRING   --   “double-wrapped”

네트워크 관리 정보의 정의방법과 표현 방법
앞서 설명한 많은  종류의 네트워크  관리를 효과적으로 수행하고 서로 다른 NMS 간에 정보를 공유하기 위해서는  먼저 관리 정보의 정의와 표현 방법에 대한 표준안이 있어야 한다. 이를 위해서  NMS는 관리 정보를 정의하기 위해 공통의 구조를 가지며, 이 구조를 통해 다양한 객체를 정의한다. 정의된 객체들은 모든 NMS가 이해할 수 있는  추상적인 언어를 통해 표현된다. 실제 NMS 시스템에서는 다음과 같은 구조로 구현된다.

SMI(Structure Management Information)
관리 대상이 되는 객체를 정의하기 위한 스키마로 객체가 가질 수 있는 다양한 형태(Type)와 서로 다른 객체들을 구분 짓기 위한 색인(Index)으로 MIB의 뼈대를 이룬다. SNMP에서 사용하는 SMI의 예(RFC1155)는 다음과 같다.

MIB(Management Information Base)
NMS가 관리하는 객체를 정의하고 객체의 특성을 기술해서 모아놓은 데이터베이스로서, 관리하는 객체는 SMI의 기초 아래  정의된다. MIB는 개념적으로 트리(Tree) 구조로  이루어져 있으며  관리되는 알맹이 객체들은  Leaf Node라고 한다. 실제 Leaf Node들이 구현될 때는 객체의 수에 따라 하나 혹은 여러 개의 인스턴스(Instance)로 만들어진다. 참고로 예를 하나 들면 NIC(Network Interface Card)는 한 시스템에 여러 개 존재할 수 있다. 여기서 객체는 NIC이 되며 인스턴스화 되면 NIC[0], NIC[1] 등이 된다.

ASN(Abstract Syntax Notation)
시스템에 따라 사용하는 바이트 순서가 다르고 표현하는 방법도 다르기 때문에 하나의 시스템에 의존적인 언어나 기계어로 SMI와 MIB를 표현하면 다른 시스템에서는 사용할 수 없는 문제가 발생한다. 이런 문제를 해결하기 위한 객체의 표현 방식이 ASN이다.
ASN은 인코딩 규칙에 상관없이 데이터를 표현하기 위해, 일반적인 데이터 구조를 가진 단순한 형태의 문법으로 이루어진 언어다. ASN을 이용하여 응용프로그램 계층 간에 정보를 교환하여 사용자가 그 내용을 볼 수 있게 해주고, 인코딩 규칙에 의해 데이터를 변환하여 상대방 시스템에 전송할 수 있도록 도와준다.

변환 규칙(Encoding Rules)
ASN으로 정의된 SMI와 MIB의 내용을 상대방 시스템에 전달하기 위해서는 데이터를 상대방 시스템에 사용할 수 있는 형태로 바꾸어야 한다. 이렇게 ASN으로 정의한 객체들을 다른 시스템으로  전송하기 위해 변환하는 규칙에 따라 이루어지며, 변환된 데이터는 Octet의 배열이 된다. 또 Octet 형태의 변환된 데이터는 디코딩을 통해 원래의 ASN 형태로 돌아가기도 한다.

리스트 1 : 구조적 형인 SEQUENCE의 예(RFC1213)
IpAddrEntry ::= SEQUENCE {--IP 주소의 엔트리를 표현
        ipAdEntAddr                IpAddress,
        ipAdEntIfIndex             INTEGER,
        ipAdEntNetMask           IpAddress,
        ipAdEntBcastAddr         INTEGER,
        ipAdEntReasmMaxSize   INTEGER (0..65535)
}

리스트 2 : APPLICATION type의 예(RFC1155)
IpAddress ::=[APPLICATION 0] IMPLICIT OCTET STRING (SIZE (4))  
Counter    ::=[APPLICATION 1] IMPLICIT INTEGER (0..4294967295)    
Gauge      ::=[APPLICATION 2] IMPLICIT INTEGER (0..4294967295)

ASN.1
ASN.1(Abstract Syntax Notation.1)은 서로 다른  CPU나 언어 체계에 종속적이지 않은 표준 object define 언어로, CCITT와 ISO(ISO.8824)의 표준이다. 이는 응용 프로그램의 데이터를  추상적으로 정의하거나 응용프로그램의 구조를 정의하기 위해 사용되는 언어로서 BNF(Backus-Naur Form) 형태를 가지는 파스칼이나 C와 비슷한 문법으로 이루어져 있다. ASN.1의 자세한 사항을 6가지 부분으로 나누어 살펴보도록 하겠다.

① ASN.1의 특징(Lexical Convention)
ASN.1 구조에서는 type과 value가 다른 프로그래밍 언어와  비슷한 형태로 표현되며 이들과 구별되는 고유한 특징은 다음과 같다.

·Layout은 크게 중요하지 않다.  multiple space나 blank lines 등은 single space로 간주된다.
·주석은 두 개의  연결된 하이픈‘--’로 시작해서 다른 하이픈이 나오거나 한줄이 끝날 때까지 계속된다.
·값과 필드 이름의 Identifier나 형(type)의 이름, 모듈(module) 등은 대문자나 소문자, 숫자, 하이픈 등으로 표현할 수 있다.
·형(type)의 identifier는 항상 대문자로 시작해야 한다.
·값(value)의 identifier는 항상 소문자로 시작해야 한다.
·type에 의한 값의 할당은 다음과 같은 형태로 이루어진다.

     ::=

② 문자
ASN.1에서 사용 가능한 문자는 다음과 같다.

(1) A to Z
(2) a to z
(3) 0 to 9
(4) :  ;  |  =  ,  {  }  .  (  )  [  ]  -  ‘  “

③ 키워드(keyword)
ASN.1에서 사용되는 키워드는 표 3과 같다.

④ 데이터 형과 값의 정의
ASN.1에서 사용되는 데이터 형들은 표  4와 같은 네 개의 카테고리로  구분할 수 있다. 참고로 구조적 형인 SEQUEN CE의  예(RFC1213)와 APPLICATION type의 예(RFC 1155)를 살펴보기 바란다(리스트 1, 2).

⑤ 모듈(module)의 정의
ASN.1 문법으로 정의하는 객체는 모듈(module)이라고 하며, 모듈의 기본 형태는 다음과 같다.

‘module reference’에 모듈의 이름을 정하고 ‘DEFINITI ON’키워드를 사용해 모듈을 정의함을  알린다. 모듈은 ‘BEGIN’  키워드로 시작해서  ‘END’ 키워드로 끝나며, 다른 모듈을 가지고 오는 경우에는 ‘IMPORTS’ 키워드로 이를 선언하고 ‘FROM’ 키워드를  사용해서 다른 모듈의 내용을 가지고 온다. ‘Assignment list’에서는 할당 연산자인 ‘::=’를 사용하여 형이나 값을 할당한다. 마지막으로 ‘END’ 키워드를 사용해서 모듈 정의를 마친다.

⑥ ASN.1의 매크로(MACRO) 정의
매크로는 새로운 형이나 값을  정의하여 ASN.1의 문법을  확장시킨다. 매크로 안에는 새로운 형과 값이 동시에 들어갈 수 있다.  매크로의 구분은 표 5와 같다. 그리고 매크로의 정의 형식은 다음과 같다.

마치며
이번 호에는 NMS에 대한 전반적인 내용과 실제 표현 문법인 ASN.1에 대해 살펴보았다. 다음 호에는 인터넷 관리체제 표준인 SNMP에 대해 구체적으로 알아보고 각 운영체계 별로 구현되어 쉽게 접할 수 있는 네트워크 관리 프로그램들에 대해 알아보겠다.

DEFINITIONS ::=
   BEGIN
     EXPORTS
     IMPORTS  FROM
                Assignment list (type assignment,
                value assignment)
                ::=
   END

MACRO ::=       --은 전부 대문자로 쓴다.
BEGIN
    TYPE NOTATION ::=
        --새로운 형을 정의한다.
    VALUE NOTATION ::=
        --형의 값을 정의한다.
        --새로운 형을 추가하는 문법 규칙을 제시한다.
END

Comments