Network

NETCONF에 대해

범데이 2022. 9. 5. 17:13

1. NETCONF란?

1.1 NETCONF란

IETF NETCONF WG에서 표준화한 network management 프로토콜이다. (RFC 6241)

흔히 '프로토콜' 하면 7계층에 매핑되는 스택에 메시지 교환 절차 및 형식을 떠오르기 마련인데, NETCONF는 TCP/SSH 위에서 정의되는 응용 계층 프로토콜로 주로 xml 형식과 그 형식에 따른 동작에 대한 내용이 주가 된다.

 

 

1.2 NETCONF 의 구조

NETCONF layer 구조는 다음과 같다.

 

그림의 제일 오른쪽에 있는 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> 태그로 싸서 들어가게 된다.

 

 

 

1.3 NETCONF의 특징

1. NETCONF의 핵심은 설정 관리만을 고민한 프로토콜이다.

프로토콜의 핵심을 이루는 오퍼레이션이 <edit-config>, <get-config>, <copy-config> 등으로 이루어져 있어서 근본이 설정 관리 맞춤형 프로토콜인 것이다.

 

2. NETCONF의 핵심은 기존 CLI 방식에서 할 수 없었던 데이터 모델을 사용하는 것이다.

현재 많이 사용하고 있는 CLI Script 3방식은 장비마다 사용하는 명령어를 스크립트에 적용하여 실행한다. 한마디로 "제 각각"이니 복잡해지고, 다양해지는 상황에는 아주 취약한 것이다. 이 문제를 깔끔하게 해결하기 위해 표준화된 데이터 모델을 사용하게 되고, 이 모델이 바로 YANG이라는 모델링 언어를 통해 설계되는 것이다.

 

3. NETCONF의 핵심은 바로 에러 정보에 대한 관리이다.

이전 설정 관리의 최대 고민은 바로 설정 작용이 원할하지 못했을 대, 설정 중도에 문제가 발생했을 때 이 부분을 확인하고, 해결할 수 있는 방법이 전무했다는 것이다. 문제점을 보완한 솔루션답게 설정을 적용하는 단계에 신중을 기하는 기능과 에러를 전달하고 복구하는 기능을 데이터 모델에 포함했다는 것은 기존과는 차별화된 기능이다.

 

 

 

 

2. YANG이란?

2.1 YANG이란?

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

 

2.2 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 형식으로 정의해야 한다. 

 

 

2.3 YANG의 특징

1. 쉬운 스크립트 언어처럼 기본 문법을 이해하게 된다면 누구나 쉽게 읽고, 쉽게 작성할 수 있는 표현 방식을 제공한다.

그래서 장비 각각이 자신의 설정 정보를 담고 있는 모델링 정보를 사용자에게 제공되는 서비스 정보로 쉽게 확장하여 서비스 기반의 모델링을 제공할 수 있다.

 

2. 잘 설계된 모델링은 바로 XML로 쉽게 전환되어 NETCONF를 통해 전달되는 것이다.

다양한 데이터의 전환이 쉽게 이루어지니 서로 다른 제조사의 장비 모델들이 하나의 서비스 모델로 변환하는데 SNMP대비 3배의 성능을 제공해 줄 수 있는 것이다. 더불어, 이 효과적인 전환의 특징은 데이터 모델을 쉽게 웹 UI로 옮길 수 있어서 새롭게 설계한 서비스 모델링을 바로 GUI 기반으로 노출하여, 운영자가 쉽게 GUI로 서비스를 적용할 수 있도록 도와준다. 다시 운영자를 위한 웹 UI작업을 해야하는 번거로움을 획기적으로 줄일 수 있는 것이다.

 

3. 기존의 SNMP로 표현할 수 없는 데이터에 대한 제약 사항을 완화하고 데이터 검증을 위한 강력한 기능을 제공하는 것이다.

실제로 많은 수의 네트워크 장비를 기반으로 성능 시험을 한 자료를 보면 기존 방식의 설정 변경과 NETCONF-YANG기반의 설정 변경은 평균 2배의 성능 차이를 보였고, 그 효과는 장비 수가 많을 수록 더 커지는 것으로 확인 되었다.

 

 

3. 기존 기술과 NETCONF-YANG 구조의 차이점

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

 

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

 

 


#References

https://korea916.rssing.com/chan-5026345/article421.html

https://devage.tistory.com/77

 

 

반응형