NETCONF

섬네일|오른쪽|300px|NETCONF 프로토콜 계층

**네트워크 설정 프로토콜**(Network Configuration Protocol, **NETCONF**)은 IETF에서 개발하고 표준화한 네트워크 관리 프로토콜이다. NETCONF 워킹 그룹에서 개발되었으며 2006년 12월 RFC 4741로 발표되었다. 이후 2011년 6월 개정되어 RFC 6241로 발표되었다. NETCONF 프로토콜 사양은 인터넷 표준 트랙 문서이다.

NETCONF는 네트워크 장치의 구성을 설치, 조작 및 삭제하는 메커니즘을 제공한다. 이 작업은 간단한 RPC 계층 위에 구현된다. NETCONF 프로토콜은 구성 데이터와 프로토콜 메시지에 대해 XML 기반 데이터 인코딩을 사용한다. 프로토콜 메시지는 보안 전송 프로토콜을 통해 교환된다.

NETCONF 프로토콜은 개념적으로 네 개의 계층으로 나눌 수 있다.

# 콘텐츠 계층은 구성 데이터 및 알림 데이터로 구성된다.
# 작업 계층은 구성 데이터를 검색하고 편집하기 위한 기본 프로토콜 작업 집합을 정의한다.
# 메시지 계층은 원격 프로시저 호출(RPC) 및 알림을 인코딩하는 메커니즘을 제공한다.
# 보안 전송 계층은 클라이언트와 서버 간에 메시지를 안전하고 신뢰할 수 있게 전송한다.

NETCONF 프로토콜은 일부 주요 장비 공급업체의 라우터 및 스위치와 같은 네트워크 장치에 구현되었다. NETCONF의 특정 강점은 여러 장치를 포함하는 트랜잭션을 사용하여 강력한 구성 변경을 지원한다는 점이다.

## 역사

IETF는 1980년대 후반에 SNMP를 개발했으며 매우 인기 있는 네트워크 관리 프로토콜임이 입증되었다. 21세기 초에는 원래 의도와 달리 SNMP가 네트워크 장비를 구성하는 데 사용되지 않고 주로 네트워크 모니터링에 사용되고 있다는 사실이 명확해졌다. 2002년 6월, 인터넷 아키텍처 위원회와 IETF 네트워크 관리 커뮤니티의 주요 구성원들이 네트워크 운영자들과 함께 이 상황을 논의하기 위해 모였다. 이 회의 결과는 RFC 3535에 문서화되어 있다. 각 네트워크 운영자는 주로 다른 독점적인 CLI를 사용하여 장치를 구성하고 있음이 밝혀졌다. 여기에는 BER-인코딩된 SNMP와 달리 텍스트 기반이라는 사실을 포함하여 운영자들이 선호하는 여러 기능이 있었다. 또한 많은 장비 공급업체는 SNMP를 통해 장치를 완전히 구성할 수 있는 옵션을 제공하지 않았다. 운영자들은 일반적으로 상자 관리를 돕기 위해 스크립트를 작성하는 것을 좋아했기 때문에 SNMP CLI가 여러 면에서 부족하다는 것을 발견했다. 가장 두드러진 것은 예측 불가능한 출력의 특성이었다. 출력의 내용과 형식은 예측할 수 없는 방식으로 변경될 수 있었다.

같은 시기에 주니퍼 네트웍스는 XML 기반 네트워크 관리 접근 방식을 사용하고 있었다. 이것은 IETF에 가져와 더 넓은 커뮤니티와 공유되었다. 집단적으로 이 두 가지 사건은 2003년 5월 IETF가 NETCONF 워킹 그룹을 만들도록 이끌었다. 이 워킹 그룹은 네트워크 운영자 및 장비 공급업체의 요구에 더 잘 부합하는 네트워크 구성 프로토콜을 개발하기 위해 구성되었다. 기본 NETCONF 프로토콜의 첫 번째 버전은 2006년 12월 RFC 4741로 발표되었다. 몇 가지 확장이 이후 몇 년 동안 발표되었다 (2008년 7월 RFC 5277의 알림, 2009년 12월 RFC 5717의 부분 잠금, 2011년 6월 RFC 6243의 기본값 포함, 2012년 2월 RFC 6470의 시스템 알림, 2012년 3월 RFC 6536의 액세스 제어). 기본 NETCONF 프로토콜의 개정판은 2011년 6월 RFC 6241로 발표되었다.

## 프로토콜 계층

### 콘텐츠

NETCONF 작업의 내용은 잘 구성된 XML이다. 대부분의 콘텐츠는 네트워크 관리와 관련이 있다. 이후 JSON 인코딩도 지원하게 되었다.

NETMOD 워킹 그룹은 운영 데이터, 구성 데이터, 알림 및 작업의 의미를 정의하기 위한 "사람에게 친숙한" 모델링 언어인 YANG을 정의하는 작업을 완료했다. YANG은 RFC 6020(버전 1)과 RFC 7950(버전 1.1)에 정의되어 있으며, RFC 6991에서 찾을 수 있는 "공통 YANG 데이터 유형"이 함께 제공된다.

2010년 여름, NETMOD 워킹 그룹은 핵심 구성 모델(시스템, 인터페이스 및 라우팅)과 SNMP 모델링 언어와의 호환성 작업을 위해 재조직되었다.

### 작업

기본 프로토콜은 다음 프로토콜 작업을 정의한다.

기본 NETCONF 기능은 NETCONF 기능 정의를 통해 확장될 수 있다. 구현이 지원하는 추가 프로토콜 기능 세트는 세션 설정의 기능 교환 부분에서 서버와 클라이언트 간에 통신된다. 필수 프로토콜 기능은 가정되므로 기능 교환에 포함되지 않는다. RFC 4741은 :XPath 및 :validate를 포함하여 여러 선택적 기능을 정의한다. RFC 6241은 RFC 4741을 대체한다는 점에 유의한다.

비동기 이벤트 알림 구독 및 수신을 지원하는 기능은 RFC 5277에 게시되어 있다. 이 문서에는 실시간 및 재생 구독 생성을 가능하게 하는  작업이 정의되어 있다. 알림은  구조를 사용하여 비동기적으로 전송된다. 또한 구독이 활성화되어 있는 동안 다른 NETCONF 작업 처리를 용이하게 하는 기본 :notification 기능과 함께 지원될 때 :interleave 기능도 정의한다.

실행 중인 구성의 부분 잠금을 지원하는 기능은 RFC 5717에 정의되어 있다. 이를 통해 여러 세션이 실행 중인 구성 내에서 겹치지 않는 하위 트리를 편집할 수 있다. 이 기능이 없으면 사용 가능한 유일한 잠금은 전체 구성에 대한 것이다.

NETCONF 프로토콜 모니터링 기능은 RFC 6022에 정의되어 있다. 이 문서에는 NETCONF 데이터 저장소, 세션, 잠금 및 통계에 대한 정보가 포함된 데이터 모델이 포함되어 NETCONF 서버 관리를 용이하게 한다. 또한 NETCONF 클라이언트가 NETCONF 서버가 지원하는 데이터 모델을 검색하는 메서드를 정의하고 이를 검색하기 위한  작업을 정의한다.

### 메시지

NETCONF 메시지 계층은 인코딩을 위한 간단하고 전송 독립적인 프레이밍 메커니즘을 제공한다.

* RPC 호출( 메시지),
* RPC 결과( 메시지), 및
* 이벤트 알림( 메시지).

모든 NETCONF 메시지는 잘 구성된 XML 문서이다. RPC 결과는 메시지-ID 속성으로 RPC 호출에 연결된다. NETCONF 메시지는 파이프라인될 수 있다. 즉, 클라이언트는 RPC 결과 메시지를 먼저 기다릴 필요 없이 여러 RPC를 호출할 수 있다. RPC 메시지는 RFC 6241에 정의되어 있으며 알림 메시지는 RFC 5277에 정의되어 있다.

### 전송

* SSH를 통한 NETCONF 프로토콜: rfc:6242
* 상호 X.509 인증을 사용하는 TLS(Transport Layer Security)를 통한 NETCONF 프로토콜: rfc:7589

## 같이 보기

* YANG
* RESTCONF
* 
* 네트워크 관리
* 구성 관리
* 네트워크 모니터링
* XML 스키마

## 각주

분류:인터넷 기반 프로토콜
분류:네트워크 관리
분류:시스템 관리
분류:응용 계층 프로토콜
분류:인터넷 표준