Network Management & SNMP
네트워크 관리와 SNMP, NETCONF/YANG
네트워크 관리
란 무엇인가?
[Saydam 1996]에는 이에 대해 잘 정리된, 한 문장으로 된 정의가 나온다.
네트워크 관리는 적정한 비용으로 실시간, 운용 성능, 서비스 품질 등의 요구사항을 만족시키기 위해
네트워크와 구성요소 자원을 감시, 테스트, 폴링, 설정, 분석, 평가, 제어하는
하드웨어, 소프트웨어, 인간 요소 등을 배치하고, 통합, 조정하는 것이다.
이 절에서는 이 광범위한 정의 중에서 네트워크 관리의 기초,
즉 네트워크 관리자가 자신의 일을 수행하는 데 사용하는 구조, 프로토콜, 데이터만을 다룬다.
네트워크 관리 프레임워크
아래 그림은 네트워크 관리의 핵심 요소들을 나타낸다.
관리 서버(managing server)
관리 서버는
네트워크 운영 센터(network operations center, NOC)
의 중앙 집중형 네트워크 관리 스테이션에서 동작하는,
일반적으로네트워크 관리자(network managers, 사람)
와 상호작용하는 애플리케이션이다.
- 네트워크 관리 활동이 일어나는 장소로서 네트워크 관리 정보의 수집, 처리, 분석, 발송을 제어한다.
- 여기서 네트워크의 피관리 장치를 설정, 감시, 제어하기 위한 작업이 시작된다.
- 하나의 네트워크는 여러 개의 관리 서버를 가질 수 있다.
피관리 장치(managed devicE)
피관리 장치는 관리 대상 네트워크에 존재하는 네트워크 장비(소프트웨어 포함)들이다.
- e.g., 호스트, 라우터, 스위치, 미들박스, 모뎀, 온도계, 그 외 네트워크에 연결된 그 밖에 장치들
- 이 장치들은 많은 관리 가능한 요소들(e.g,. 네트워크 인터페이스 카드는 호스트나 라우터의 구성요소)과
이러한 하드웨어 및 소프트웨어 요소에 대한 설정 매개변수들(e.g., OSPF와 같은 AS 내부 라우팅 프로토콜)을 갖는다.
데이터(data)
각 피관리 장치는 ‘
상태(state
)’라고 부르는, 장치와 관련된 데이터를 갖는다.
데이터의 유형들
-
설정 데이터(configuration data)
- 장치 인터페이스에 관리자가 할당 및 설정한 장치 정보
- e.g., IP 주소 또는 인터페이스 속도
-
동작 데이터(operational data)
- 장치가 동작하면서 획득하는 정보
- e.g., OSPF 프로토콜의 인접 항목 목록
-
장치 통계(device statistics)
- 장치가 운영되면서 갱신되는 상태 표시기 및 계수기
- e.g., 인터페이스에서 삭제된 패킷 수 또는 장치의 냉각 팬 속도
관리 서버는 네트워크 토폴로지 같은 전체 네트워크와 관련된 데이터뿐만 아니라
관리 대상 장치들의 구성과 운영, 그리고 통계 데이터의 복사본도 유지 관리한다.
네트워크 관리 에이전트(network management agent)
네트워크 관리 에이전트는 관리 서버와 통신하는 피관리 장치상의 소프트웨어 프로세스다.
관리 서버의 명령과 제어에 따라 피관리 장치에 국한되는 행동을 취한다.
네트워크 관리 프로토콜(network management protocol)
네트워크 관리 프로토콜은 관리 서버와 피관리 장치들 사이에서 동작하면서
(1) 관리 서버가 피관리 장치의 상태에 대해 질의하고
(2) 에이전트를 통해 피관리 장치에 행동을 취할 수 있도록 해준다.
에이전트는 예외적인 사건을 관리 서버에게 알리기 위해 네트워크 관리 프로토콜을 사용할 수 있다.
(e.g., 부품의 고장 또는 성능 임계치의 위반)
💡 네트워크 관리 프로토콜 스스로가 네트워크를 관리하지 않는다.
대신에 네트워크 관리자가 네트워크를 관리(감시, 테스트, 폴링, 설정, 분석, 평가, 제어)할 수 있도록 기능을 제공한다.
네트워크 운영자가 위의 구성요소들을 활용하여 네트워크를 관리할 수 있는, 흔히 사용하는 세 가지 방법이 있다.
1️⃣ CLI
네트워크 운영자는
명령줄 인터페이스(Command Line Interaface, CLI)
를 통해 장치에 직접 명령을 보낼 수 있다.
이러한 명령은
(1) 운영자가 피관리 장치과 물리적으로 같은 공간에 있는 경우 피관리 장치의 콘솔에 직접 입력하거나
(2) 피관리 장치 사이의 텔넷(Telnet) 또는 SSH(secure shell) 연결을 통해 전달할 수 있다.
이 방법을 통해서는 대체로 오류가 발생하기 쉽고, 대규모 네트워크를 자동화하거나 효율적으로 관리하기 어렵다.
2️⃣ SNMP/MIB
이 방식에서 네트워크 운영자는
SNMP(Simple Network Management Protocol)
를 사용하여
장치의MIB(Management Information Base)
에 있는 데이터를 질의하거나 설정할 수 있다.
일부 MIB 데이터는 장치 및 공급업체에 따라 다르지만,
다른 MIB 데이터(e.g., IP 데이터그램 헤더의 오류 때문에 라우터에서 버려지는 IP 데이터그램의 개수, 호스트에서 수신하는 UDP 세그먼트 개수)는
장치에 종속되지 않고 추상성과 일반성을 갖는다.
일반적으로 네트워크 운영자는
- 이 방식으로 동작 상태 및 장치 통계 정보를 질의 및 모니터링한 다음
- 명령줄 인터페이스를 사용하여 장치를 실제로 제어하고 설정한다.
💡 CLI와 SNMP/MIB 모두 장치를 개별적으로 관리한다.
SNMP/MIB
로도 장치 설정 및 대규모 네트워크 관리의 어려움이 존재한다.
이로 인해 NETCONF
와 YANG
을 사용하는 가장 최근의 네트워크 관리 방식이 나타났다.
3️⃣ NETCONF/YANG
이 방식은 네트워크 관리에 대해 좀 더 추상적이고 네트워크 전체를 아우르는 전체론적인 관점을 취하면서도,
정확성의 제약 정도를 구체화하고 여러 장치에 대한 세세한 관리 작업을 제공하는 등 설정 관리에 훨씬 더 중점을 둔다.
YANG
: 설정 및 동작 데이터를 모델링하는 데 사용되는 데이터 모델링 언어NETCONF 프로토콜
: 원격 장치과 YANG 호환 작업 및 데이터를 주고받거나 원격 장치 간에 통신하는 데 사용됨
SNMP와 MIB
SNMP
SNMPv3(Simple Network Management Protocol version 3)
는
관리 서버와 그 관리 서버를 대표하여 실행되고 있는 에이전트 사이에서 네트워크 관리 제어 및 정보 메시지를 전달하기 위해 사용된다.
요청-응답 모드(request-response mode)
이는 SNMP의 가장 흔한 사용 행태이다.
- SNMP 관리 서버는 에이전트에게
요청
을 송신하고- 일반적으로 요청은 피관리 장치과 관련된 MIB 객체 값들을 질의(검색) 또는 수정(설정)하기 위해 이용
- 이를 받은 SNMP 에이전트는 이를 수행한 후 요청에 대한
응답
을 보낸다.
트랩 메시지(trap message)
SNMP의 두 번째로 일반적인 사용은
에이전트가 요구받지 않았더라도 트랩 메시지
라는 이름의 메시지를 관리 서버에게 전송하는 것이다.
트랩 메시지들은 관리 서버들에게
MIB 객체 값들을 변화시킨 예외 사항(e.g., 링크 인터페이스의 활성 또는 비활성)의 발생을 통지하기 위해 이용된다.
아래 표는 SNMPv2에 대한 것이며, 일반적으로 PDU(Protocol Data Unit)
으로 알려진 일곱 가지 타입의 메시지를 정의하고 있다.
-
GetRequest
,GetNextRequest
,GetBulkRequest
PDU들은 모두
에이전트의 피관리 장치 내 하나 이상의 MIB 객체의 값을 요청하기 위해 관리 서버로부터 에이전트로 전송된다.- 이들은 데이터 요청들의 정밀도(granularity) 면에서 다르다.
- 에이전트는 객체 식별자들과 그에 관련된 값들을
Response
PDU에 담아 응답한다.
-
SetRequest
PDU는 관리 서버가 피관리 장치 안의 하나 또는 그 이상의 MIB 객체들의 값을 설정하기 위해 사용한다.- 에이전트는 값이 제대로 설정되었음을 알려주기 위해 ‘noError’라는 오류 상탯값을
Response
PDU에 담아 응답한다.
- 에이전트는 값이 제대로 설정되었음을 알려주기 위해 ‘noError’라는 오류 상탯값을
-
SNMPv2-Trap
은 트랩 메시지로, 비동기적으로 발생한다.- 즉, 요청을 수신했을 때가 아니라 관리 서버가 통지를 요구한 이벤트가 발생했을 때 발생한다.
- 수신된 트랩 요청은 관리 서버로부터 어떤 응답도 요구하지 않는다.
아래 그림은 SNMP PDU의 포맷을 나타낸 것이다.
SNMP PDU들이 다른 많은 전송 프로토콜에 의해 운반될 수 있기는 하지만 일반적으로는 UDP 데이터그램의 페이로드 부분에 실린다.
그러나 UDP는 신뢰성이 보장되지 않는 전송 프로토콜이므로,
요청 또는 그에 대한 응답이 의도한 목적지에 도착한다는 보장이 없다.
따라서 아래처럼 요청 ID 필드
는 관리 서버가 요청 또는 응답의 분실을 검출하는 데 이용될 수 있다.
- PDU의 요청 ID 필드는 관리 서버가 에이전트에 보내는 요청에 번호를 매기기 위해 사용된다.
- 에이전트의 응답은 수신된 요청으로부터 요청 ID 값을 취한다.
MIB
MIB 객체는 SMI(Structure of Management Information, 관리 정보 구조)
라고 하는 데이터 기술 언어로 명세되는데,
이 이름은 그 기능에 대한 아무런 힌트를 주지 않는 다소 엉뚱한 이름의 네트워크 관리 프레임워크 구성요소다.
SMI
는 SNMP
(네트워크 관리를 위해 관리 정보 및 정보 운반을 위한 프로토콜)에서 관리 정보의 구조를 말하며,
MIB 객체를 정의하는 일반적인 규칙들의 모음이다.
MIB
는 망관리 자원 정보를 구조화시킨, 대규모 관리 정보 집합을 말한다.
앞에서 SNMP/MIB 방식의 네트워크 관리에서
피관리 장치의 동작 상태 데이터가 해당 장치를 위한 MIB에 수집된 객체들로 표현된다는 사실을 배웠다.
MIB 객체는 다음과 같은 정보일 수도 있다.
- IP 데이터그램 헤더의 오류로 인해 라우터에서 버려지는 데이터그램 개수
- 이더넷 엔터페이스 카드의 반송파 감지 오류 횟수를 세는 카운터
- DNS 서버에서 실행되는 소프트웨어 버전과 같은 설명 정보
- 특정 장치가 올바르게 작동하는지 여부와 같은 상태 정보
- 어떤 목적지로의 라우팅 경로 같은 프로토콜에 특정된 정보 등..
관련된 MIB 객체들은 MIB 모듈로 합쳐진다.
네트워크 설정 프로토콜(NETCONF)과 YANG
NETCONF
NETCONF 프로토콜
은 관리 서버과 피관리 네트워크 장치 사이에서 동작하면서
- 피관리 장치의 설정 데이터를 검색, 셋업, 수정하거나
- 피관리 장치의 동작 데이터 및 통계를 질의하거나
- 피관리 장치에서 생성된 알림을 구독하기 위한 메시지 전송 기능을 제공한다.
관리 서버는 피관리 장치를 제어하기 위해 구조화된 XML 문서 형식의 설정 내용을 보내 피관리 장치에서 활성화한다.
- NETCONF는
원격 프로시너 호출(remote procedure call, RPC) 패러다임
을 사용한다. - XML로 인코딩된 프로토콜 메시지는 TCP상의
TLS(Transport Layer Security) 프로토콜
과 같은
안전한 연결 지향 세션을 통해 관리 서버와 피관리 장치 사이에서 교환된다.
e.g., NETCONF <get>
명령
이 명령을 통해 서버는 장치의 설정에 대해 알 수 있다.
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get/>
</rpc>
아래는 NETCONF 세션의 예다.
-
관리 서버는 피관리 장치와 보안 연결을 설정한다.
-
보안 연결이 설정되면 관리 서버와 피관리 장치는
<hello>
메시지를 교환하고,
기본 NETCONF 명세를 보완하는 어떠한 추가 ‘기능’이 있는지를 알린다. -
관리 서버와 피관리 장치 간의 상호작용은
<rpc>
와<rpc-reply>
메시지를 사용하는 원격 프로시저 호출 형식을 갖는다.- 이러한 메시지는 장치 설정 데이터와 동작 데이터 및 통계를 검색, 설정, 질의, 수정하고 장치의 알림을 구독하는 데 사용된다.
-
<close-session>
메시지로 세션을 종료한다.
아래 표는 관리 서버가 피관리 장체에서 수행할 수 있는 여러 가지 중요한 NETCONF 작업을 보인다.
YANG
YANG
은 NETCONF가 사용하는 네트워크 관리 데이터의 구조, 구문 및 의미를 정확하게 표현하는 데 사용되는 데이터 모델링 언어다.
모든 YANG 정의는 모듈에 포함되고, 장치와 해당 기능을 설명하는 XML 문서는 YANG 모듈에서 생성할 수 있다.