SNMP와 네트워크 관리 시스템(NMS)
1. 개요
가. 정의
SNMP(Simple Network Management Protocol) 는 IP 네트워크에 연결된 장비(라우터·스위치·서버·프린터·IoT 센서 등)의 상태 정보를 표준화된 변수 집합(MIB) 으로 모델링하고, 관리자(Manager)와 에이전트(Agent) 간에 UDP 기반 메시지로 수집·설정·통지하는 응용계층 관리 프로토콜이다.
네트워크 관리 시스템(NMS, Network Management System) 은 SNMP 등 관리 프로토콜을 이용해 다수의 장비를 중앙에서 감시·제어하고, 장애·성능·구성·보안·과금을 통합 관리하는 소프트웨어 체계이다.
네트워크 관리는 단순히 "장비가 살아 있는가"를 묻는 것을 넘어, 수천~수만 대의 이기종 장비를 하나의 창에서 일관된 모델로 바라보고, 장애를 조기에 탐지하며, 용량을 예측하고, 설정 변경의 영향을 통제하는 운영공학의 영역이다. SNMP는 1988년 IETF가 TCP/IP 환경의 관리 표준으로 제정한 이래 사실상 업계 표준으로 자리 잡아, 벤더·장비 종류가 달라도 동일한 방식으로 상태를 질의할 수 있는 상호운용성의 기반을 제공해 왔다.
나. 등장 배경 및 필요성
1980년대 후반 인터넷이 폭발적으로 성장하면서, 서로 다른 제조사의 장비를 수작업 CLI로 일일이 점검하는 방식은 한계에 부딪혔다. 각 벤더가 독자적 관리 인터페이스를 제공하는 상황에서는 운영자가 장비 수만큼의 명령체계를 익혀야 했고, 장애의 전조를 놓치기 쉬웠다. SNMP는 "관리 대상의 모든 상태를 OID로 주소화된 변수(object)로 추상화한다" 는 단순하고 강력한 아이디어로 이 문제를 풀었다. 관리자는 장비 내부 구현을 몰라도 1.3.6.1.2.1.2.2.1.10(ifInOctets)이라는 OID만 알면 모든 벤더의 인터페이스 수신 바이트를 동일하게 읽을 수 있다.
필요성은 세 가지 축으로 정리된다. 첫째, 가시성(Visibility) — 분산된 장비 상태를 중앙에서 실시간으로 조망해야 SLA를 지킬 수 있다. 둘째, 선제적 운영(Proactive Operation) — 임계치 기반 트랩으로 장애를 사후가 아니라 사전에 인지해 평균복구시간(MTTR)을 줄인다. 셋째, 자동화와 감사(Automation & Audit) — 설정 변경·용량 증설을 스크립트로 반복 가능하게 만들고 변경 이력을 남겨 규제·감리에 대응한다. 실제로 통신사·금융 데이터센터에서는 NMS가 수집하는 초당 수십만 건의 지표가 용량 계획과 장애 상관분석의 1차 데이터로 쓰인다.
다. 네트워크 관리의 범위 — FCAPS
ISO/ITU-T는 네트워크 관리 기능을 FCAPS 5개 영역으로 분류한다. SNMP와 NMS는 이 다섯 영역을 모두 지원하는 공통 토대 역할을 한다.
| 영역 | 핵심 질문 | SNMP/NMS 활용 예 |
|---|---|---|
| Fault(장애) | "무엇이 고장났는가?" | 트랩/인폼 수신, 알람 상관분석, 근본원인 분석 |
| Configuration(구성) | "무엇이 어떻게 설정됐는가?" | SET 명령, 설정 백업·버전관리, 변경 추적 |
| Accounting(과금) | "누가 얼마나 썼는가?" | ifInOctets·ifOutOctets 수집, 트래픽 정산 |
| Performance(성능) | "얼마나 잘 동작하는가?" | 폴링 기반 지표 수집, 임계치 분석, 추세 예측 |
| Security(보안) | "누가 접근 가능한가?" | SNMPv3 인증·암호화, 접근제어(VACM) |
FCAPS는 추상적 분류이지만 실무적으로 중요한 함의를 가진다. 예컨대 성능(P) 데이터는 장애(F)의 선행지표가 되고, 구성(C) 변경 이력은 장애 근본원인 분석의 핵심 단서가 된다. 따라서 성숙한 NMS는 FCAPS 데이터를 단일 토폴로지 모델 위에서 상호 연계해, "어제 오후의 설정 변경이 오늘 새벽 장애를 유발했다"는 식의 인과 추적을 가능하게 한다.
2. NMS 전체 구성과 SNMP 동작 구조
NMS는 관리를 수행하는 매니저(Manager), 관리 대상 장비에 상주하며 상태를 노출하는 에이전트(Agent), 관리 가능한 변수의 명세인 MIB, 그리고 수집 데이터를 저장·시각화·경보화하는 상위 애플리케이션으로 구성된다. 아래 구조도는 이들의 관계와 데이터 흐름을 나타낸다.
graph TB
subgraph NMS["NMS 플랫폼 (중앙)"]
MGR["SNMP Manager<br/>(폴러/트랩 수신기)"]
TSDB["시계열 DB<br/>(지표 저장)"]
ALARM["알람/상관분석 엔진"]
DASH["대시보드/리포팅"]
end
subgraph DEV1["라우터/스위치"]
AG1["SNMP Agent"]
MIB1["MIB (장비별 객체)"]
end
subgraph DEV2["서버/스토리지"]
AG2["SNMP Agent"]
MIB2["MIB"]
end
MGR -- "GET/GETBULK (폴링, UDP 161)" --> AG1
MGR -- "GET/SET" --> AG2
AG1 -- "TRAP/INFORM (UDP 162)" --> MGR
AG2 -- "TRAP/INFORM" --> MGR
AG1 --- MIB1
AG2 --- MIB2
MGR --> TSDB --> DASH
MGR --> ALARM --> DASH
가. 구성요소
매니저는 관리 로직의 중심으로, 주기적으로 에이전트에 질의(polling)하여 지표를 끌어오고(pull), 동시에 에이전트가 보내는 트랩을 받아(push) 이상 상황을 즉시 인지한다. 매니저는 보통 포트 UDP 161로 요청을 보내고, 트랩은 UDP 162로 수신한다. 에이전트는 장비 OS에 내장된 소프트웨어 모듈로, 커널·드라이버가 집계한 카운터를 MIB 변수 형태로 외부에 노출한다. 에이전트는 수동적(passive)이어서 질의가 오면 응답하고, 사전 정의된 조건이 발생하면 자발적으로 트랩을 발사한다.
MIB(Management Information Base) 는 "이 장비가 어떤 변수를 가지며 각 변수가 무슨 의미인지"를 기술한 데이터 모델 명세이다. MIB는 실제 데이터가 아니라 스키마에 해당하며, 실데이터는 에이전트가 질의 시점에 동적으로 채워 반환한다. 상위 애플리케이션(시계열 DB·상관분석·대시보드)은 수집한 원시 지표를 저장·가공해 운영자가 의미를 해석할 수 있는 형태로 가공한다.
나. SNMP 메시지 흐름
SNMP의 기본 동작은 폴링(요청-응답) 과 트랩(비동기 통지) 의 두 모드로 나뉜다. 아래 시퀀스는 두 모드가 실제로 어떻게 교차하는지를 보여준다.
sequenceDiagram
participant M as "SNMP Manager (NMS)"
participant A as "SNMP Agent (장비)"
Note over M,A: 폴링 모드 (주기적 성능 수집)
M->>A: "GetRequest (ifInOctets 등 OID)"
A-->>M: "GetResponse (값, 타임스탬프)"
M->>A: "GetBulkRequest (대량 테이블 조회)"
A-->>M: "GetResponse (다중 OID 일괄)"
Note over M,A: 설정 변경
M->>A: "SetRequest (관리 변수 쓰기)"
A-->>M: "Response (성공/오류)"
Note over M,A: 트랩 모드 (비동기 장애 통지)
A-->>M: "Trap (링크 다운 등, 응답 없음)"
A->>M: "Inform (확인 요구형 통지)"
M-->>A: "Response (수신 확인 ACK)"
주요 PDU(Protocol Data Unit)의 의미는 다음과 같다. GetRequest는 특정 OID 값을 조회하고, GetNextRequest는 MIB 트리의 다음 객체를 순회하여 테이블 전체를 훑을 때 쓴다. SNMPv2c에서 추가된 GetBulkRequest는 한 번의 요청으로 대량의 연속 OID를 가져와 왕복 횟수를 줄이는 성능 최적화 수단이다. SetRequest는 쓰기 가능한 변수를 변경한다. Trap은 에이전트가 자발적으로 보내는 비확인형 통지이고, SNMPv2c의 Inform은 매니저의 ACK를 요구하는 신뢰형 통지로 UDP의 유실 가능성을 보완한다.
3. MIB와 OID 구조
MIB는 계층적 트리 로 조직되며, 각 노드는 점(.)으로 구분된 정수 경로인 OID(Object Identifier) 로 전역적으로 유일하게 주소화된다. 이 구조 덕분에 전 세계 어느 벤더의 객체든 중복 없이 식별된다. 예를 들어 인터넷 표준 MIB-II의 인터페이스 그룹은 1.3.6.1.2.1.2(iso.org.dod.internet.mgmt.mib-2.interfaces)에 위치하며, 그 하위의 ifInOctets는 1.3.6.1.2.1.2.2.1.10이다. 벤더 전용 객체는 1.3.6.1.4.1.<기업번호> 아래의 사설 엔터프라이즈(Private Enterprise) 영역에 등록한다.
graph TD
ROOT["root"] --> ISO["iso (1)"]
ISO --> ORG["org (3)"]
ORG --> DOD["dod (6)"]
DOD --> INET["internet (1)"]
INET --> MGMT["mgmt (2)"]
INET --> PRIV["private (4)"]
MGMT --> MIB2["mib-2 (1)"]
MIB2 --> SYS["system (1)"]
MIB2 --> IF["interfaces (2)"]
PRIV --> ENT["enterprises (1)"]
ENT --> VENDOR["벤더 사설 MIB<br/>(기업번호별)"]
IF --> IFT["ifTable → ifInOctets 등"]
OID 체계는 구조 자체가 의미를 담는다는 점이 핵심이다. 상위 경로는 표준화 주체(ISO→IETF)를, 중간 경로는 기능 그룹(system·interfaces·ip·tcp)을, 말단은 구체 변수를 나타낸다. MIB는 ASN.1 기반 SMI(Structure of Management Information) 문법으로 정의되며, 각 객체는 자료형(Counter32·Gauge32·TimeTicks 등), 접근권한(read-only·read-write), 상태(current·deprecated)를 명시한다. 테이블형 객체(예: 인터페이스 목록)는 인덱스로 행을 구분하는데, 이 때문에 테이블 순회에는 GetNext/GetBulk가 필수가 된다.
실무에서는 표준 MIB-II로 공통 지표(인터페이스 트래픽·CPU·메모리·업타임)를 수집하고, 벤더 사설 MIB로 장비 고유 지표(예: 특정 스위치의 백플레인 온도, 광 모듈 수광 세기)를 보완한다. NMS는 수집한 OID를 사람이 읽을 수 있는 이름으로 변환하기 위해 MIB 컴파일러로 MIB 파일을 사전 로딩한다.
4. SNMP 버전별 비교와 보안
SNMP는 세 세대를 거치며 특히 보안이 크게 보강되었다. 초기 v1·v2c는 "커뮤니티 스트링"이라는 평문 공유 비밀번호로 접근을 통제했는데, 이는 사실상 평문으로 네트워크를 흐르므로 스니핑에 무방비였다. 이 치명적 약점이 v3 설계의 가장 큰 동기였다.
| 구분 | SNMPv1 | SNMPv2c | SNMPv3 |
|---|---|---|---|
| 인증 | 커뮤니티 스트링(평문) | 커뮤니티 스트링(평문) | USM — 사용자 기반 인증(MD5/SHA) |
| 암호화 | 없음 | 없음 | DES/AES로 페이로드 암호화 |
| 접근제어 | 단순 | 단순 | VACM — 뷰 기반 세분화 접근제어 |
| 대량조회 | 미지원 | GetBulk 지원 | GetBulk 지원 |
| 신뢰성 통지 | Trap만 | Inform 추가 | Inform |
| 보안 수준 | 낮음 | 낮음 | 높음(무결성·기밀성·인증) |
SNMPv3의 핵심은 USM(User-based Security Model) 과 VACM(View-based Access Control Model) 이다. USM은 세 가지 보안수준 — noAuthNoPriv(인증·암호화 없음), authNoPriv(인증만), authPriv(인증+암호화) — 을 제공하여, 운영 환경의 민감도에 맞게 선택할 수 있다. 인증은 HMAC-SHA로 메시지 무결성과 발신자 신원을 보장하고, 암호화는 AES로 페이로드 기밀성을 지킨다. VACM은 "어떤 사용자가 MIB 트리의 어느 부분(view)을 읽고/쓸 수 있는가"를 정교하게 통제해, 예컨대 외주 운영자에게는 성능 지표만 읽기 권한을 주고 설정 변경은 차단할 수 있다.
구체 사례로, 금융권 데이터센터는 보안 규정상 SNMPv3 authPriv 외에는 금지하는 정책을 두는 경우가 많다. 반면 폐쇄망 내부의 저사양 IoT 센서는 암호화 연산 부담 때문에 v2c를 불가피하게 쓰되, 관리망을 물리·논리적으로 분리(OOB, Out-of-Band 관리망)해 위험을 상쇄하는 보완통제를 적용한다. 이처럼 버전 선택은 보안 요구와 성능·호환성의 트레이드오프 위에서 결정된다.
5. 모니터링 심화 — 폴링 vs 트랩, RMON
성능 데이터 수집에는 폴링(pull) 과 트랩(push) 두 방식이 상호보완적으로 쓰인다. 폴링은 매니저가 정해진 주기(일반적으로 1~5분, 임계 회선은 30초 이하)로 전체 장비를 순회하며 지표를 끌어오는 방식으로, 추세 분석에 적합하지만 장비·회선이 늘수록 매니저와 네트워크에 부하를 준다. 수천 대 규모에서는 폴링 간격·대상 수·OID 수의 곱이 트래픽을 좌우하므로, GetBulk로 왕복을 줄이고 폴러를 분산 배치하는 설계가 필수다.
트랩은 반대로 장비가 이상 조건(링크 다운·임계치 초과·인증 실패)을 감지한 순간 즉시 통지하므로 지연이 거의 없다. 다만 UDP 기반 비확인형이라 네트워크 혼잡 시 유실될 수 있고, 장애 폭주 시 트랩 스톰이 매니저를 마비시킬 수 있다. 이를 보완하기 위해 신뢰형 Inform과 트랩 억제(trap dampening)·상관분석을 함께 설계한다. 실무 권고는 "추세·용량은 폴링, 즉시성 장애는 트랩"으로 역할을 나누되, 둘을 상관분석 엔진에서 교차검증하는 것이다.
대규모 환경의 폴링 부하를 줄이기 위해 RMON(Remote Monitoring) MIB가 등장했다. RMON은 에이전트(프로브)가 로컬에서 통계를 선집계·임계판정한 뒤 요약만 매니저에 전달하게 하여, 매니저의 지속 폴링 없이도 세밀한 통계(히스토리·알람·이벤트·호스트별 트래픽 매트릭스)를 얻게 한다. 예컨대 한 지사 스위치의 포트별 초당 패킷을 매니저가 1분마다 긁는 대신, RMON 프로브가 1초 단위로 집계하고 임계 초과 시에만 알람을 올리면 WAN 대역과 매니저 부하를 동시에 절감한다.
6. 심화: 모델 기반 관리와 스트리밍 텔레메트리로의 전환
SNMP는 30년 넘게 사실상 표준이었지만, 클라우드·초대형 네트워크 시대에 들어 구조적 한계가 드러났다. 첫째, 폴링 기반이라 초단위 고해상도 수집에 비효율적이고, 둘째, 설정(write) 작업의 트랜잭션성·롤백이 약하며, 셋째, 사람이 읽기 어려운 OID 체계로 자동화 친화성이 낮다. 이에 모델 기반(model-driven) 관리 패러다임이 부상했다.
NETCONF(RFC 6241) 는 XML 기반으로 장비 설정을 후보(candidate)→검증→커밋 트랜잭션으로 안전하게 변경하고 롤백까지 지원하며, YANG은 장비의 설정·상태를 사람이 읽을 수 있는 계층 모델로 기술하는 현대적 데이터 모델링 언어다. 조회/실행 측면에서는 Google이 제안한 gNMI(gRPC Network Management Interface) 가 gRPC/HTTP2 위에서 스트리밍 텔레메트리 — 장비가 상태 변화를 구독자에게 push로 밀어 보내는 방식 — 를 지원해, 폴링 없이 초당 수천 건의 고해상도 지표를 얻는다. 클라우드 사업자와 대형 ISP는 이미 SNMP 폴링을 스트리밍 텔레메트리로 대체·병행하는 추세다.
이 전환은 인텐트 기반 네트워킹(IBN) 및 AIOps와도 맞물린다. YANG 모델로 추상화된 "의도(intent)"를 컨트롤러가 장비 설정으로 번역하고, 스트리밍 텔레메트리로 실시간 상태를 되먹여 의도와 실제의 차이를 자동 교정한다. 다만 레거시 장비·IoT·프린터 등은 여전히 SNMP만 지원하므로, 현실의 NMS는 SNMP(기존 자산)와 텔레메트리(신규 자산)를 공존 수용하는 하이브리드 수집 계층으로 설계된다. 즉 SNMP는 사라지는 것이 아니라 "레거시 광범위 호환 계층"으로 역할이 재정의되고 있다.
7. 고려사항 및 시사점
기술사 관점에서 SNMP/NMS 도입·운영 시 다음을 종합적으로 고려해야 한다.
- 보안 우선 설계: 신규 구축은 SNMPv3 authPriv를 기본으로 하고, 불가피한 v2c 구간은 OOB 관리망 분리·ACL·커뮤니티 스트링 주기 교체로 위험을 상쇄한다. SNMP write(SET) 권한은 최소권한 원칙으로 VACM 뷰를 분리하고, 관리 포트(161/162)는 방화벽에서 관리망만 허용한다.
- 확장성·수집 아키텍처: 장비 수천~수만 대 규모에서는 폴러를 지역·세그먼트별로 분산하고
GetBulk·RMON·스트리밍 텔레메트리를 조합한다. 폴링 주기×대상×OID 수가 매니저·WAN 부하를 좌우하므로, 지표의 중요도에 따라 수집 해상도를 차등화(tiered polling) 한다. - 장애 상관분석과 노이즈 억제: 단일 물리 장애가 수백 개 트랩을 유발하는 알람 폭주(alarm storm) 를 상관분석·근본원인 분석(RCA)·토폴로지 기반 억제로 걸러, 운영자가 핵심 신호에 집중하도록 한다. 임계치는 정적 값보다 베이스라인 대비 이상(동적 임계치) 으로 설정하는 것이 오탐을 줄인다.
- 표준·미래 대응(기술 로드맵): 레거시 SNMP와 신규 NETCONF/YANG·gNMI 텔레메트리의 하이브리드 공존 전략을 수립하고, 수집 데이터를 관측성(Observability)·AIOps·IBN 플랫폼과 연계해 예지적 운영으로 진화시킨다. 데이터 모델을 YANG으로 통일해 두면 멀티벤더 자동화와 디지털 트윈 기반 사전 검증이 수월해진다.
- 운영 거버넌스: MIB 버전·사설 MIB 라이선스·에이전트 펌웨어의 형상관리를 체계화하고, 수집 지표를 용량계획·SLA 보고·감리 증적으로 재활용하여 투자 대비 효과를 극대화한다.
참고자료
- IETF RFC 1157 (SNMP v1), RFC 3416/3414/3415 (SNMPv2 PDU·USM·VACM): https://www.ietf.org/rfc/rfc3414.txt
- IETF RFC 6241 (NETCONF), RFC 7950 (YANG 1.1): https://datatracker.ietf.org/doc/html/rfc6241
- Cisco, "Model-Driven Telemetry / gNMI" 기술 문서: https://www.cisco.com/
한 줄 요약: SNMP는 관리 대상을 OID로 주소화된 MIB 변수로 추상화해 매니저-에이전트가 폴링·트랩으로 상태를 수집·설정·통지하는 네트워크 관리 표준이며, v3의 USM·VACM으로 보안을 확보하고 FCAPS 전 영역을 지원하되, 클라우드 시대에는 NETCONF/YANG·스트리밍 텔레메트리와 공존하는 하이브리드 관리 체계로 진화하고 있다.