4 min read

NETCONF and YANG

NETCONF and YANG
Photo by Luke Chesser / Unsplash

NETCONF는 무엇인가

IETF netconf WG에서 표준화한 network management 프로토콜이다. (RFC 6241) 흔히 '프로토콜' 하면 7계층에 매핑되는 스택에 메시지 교환 절차 및 형식을 떠오르기 마련인데, NETCONF는 TCP/SSH 위에서 정의되는 응용 계층 프로토콜로 주로 xml 형식과 그 형식에 따른 동작에 대한 내용이 주가 된다. XMPP를 생각하면 이해하기 쉬울 것이다.

NETCONF layer 구조는 다음과 같다.

from IETF 94 Netconf Example

그림의 제일 오른쪽에 있는 example을 기준으로 설명한다. <rpc> 태그는 message 단위를 정의한다. 이외에 그 응답인 <rpc-reply>와 이벤트 발생 시 그 알림을 위한 <notification>이 있다. 그 내부의 <edit-config>는 message로 전달하고자 하는 동작의 종류를 정의한다. 다음의 동작이 정의돼 있다.

  • <get>: 현재 사용 중인 설정 및 장치 상태 정보를 요청한다.
  • <get-config>: configuration datastore (netconf에서의 configuration set 단위)을 요청하거나
  • <edit-config>: 내용을 편집하거나
  • <copy-config>: 다른 datastore로 복사하거나
  • <delete-config>: 삭제를 요청한다.
  • <lock>, <unlock>: configuration datastore 수정 앞뒤로 lock/unlock을 건다.
  • <close-session>: NETCONF session을 절차적으로 종료하거나
  • <kill-session>: 기타 다른 문제 등으로 인해 강제 종료한다.

그 내부 계층에는 YANG 형식으로 정의된 content가 <config>..</config> 태그로 싸서 들어가게 된다.

YANG은 무엇인가

YANG (yet another next generation)은 IETF netmod (network modeling) WG에서 표준화한 데이터 모델링 언어로 NETCONF로 전달하기 위한 데이터의 모델링을 위해 사용한다. RFC 6020에서는 YANG 자체의 구조와 선언, 타입에 대한 정의를 한다. 예를 들어, 다음과 같은 NETCONF XML 데이터를 만들기 위한 데이터 모델링을 정의한다.

<!-- NETCONF XML -->
<user>
 <name>glocks</name>
 <full-name>Goldie Locks</full-name>
 <class>intruder</class>
</user>
<user>
  <name>snowey</name>
  <full-name>Snow White</full-name>
  <class>free-loader</class>
</user>
<user>
  <name>rzell</name>
  <full-name>Rapun Zell</full-name>
  <class>tower</class>
</user>
/* YANG model */
list user {
    key "name";
    leaf name {
        type string;
    }
    leaf full-name {
        type string;
    }
    leaf class {
        type string;
    }
}

당연히, 각 프로토콜 별로 그에 맞는 데이터 모델을 YANG 형식으로 정의해야 한다. 예전에 새로운 프로토콜이 나올 때마다 SNMP MIB를 만들었던 것과 같다고 보면 된다.

예전 기술과 무슨 차이가 있는가

이전 네트워크 관리 프로토콜로는 SNMP (simple network management protocol)가 있었다. 그러나 UDP 기반이었고 MIB (management information base) 기반의 데이터 모델이 장비 설정 관리에 효율적이지 못하다는 단점이 있었다.

그러면서 클라우드나 SDN (software defined network), NFV (network funciton virtualization) 등 기존 HW 기반 on-premise 중심에서 탈피한 새로운 개념의 네트워크 환경이 대두되면서, 관리가 필요한 네트워크 노드의 수와 종류가 비교할 수 없이 커지고 네트워크 설정의 자동화의 필요성이 높아졌다. NETCONF와 YANG은 이러한 환경에 적합한 네트워크 관리 프로토콜로 정의되었다.

참고 자료

— END OF POST.