Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

gNOI 서비스 구성

원격 네트워크 관리 시스템을 네트워크 디바이스에서 gNOI 작업을 실행할 수 있는 gRPC 클라이언트로 구성합니다.

gRPC 네트워크 운영 인터페이스(gNOI)는 gRPC 원격 프로시저 호출(gRPC) 프레임워크를 사용하여 네트워크 디바이스에서 작업을 수행합니다. 네트워크 관리 시스템에 gRPC 스택이 설치되어 있어야 합니다.

OpenConfig는 gNOI 서비스에 대한 프로토 정의 파일을 정의합니다. 프로토 정의 파일은 주어진 서비스에 대한 작업(RPC)과 데이터 구조(메시지)를 정의합니다. 정의는 언어에 구애받지 않습니다. gRPC는 다양한 언어를 사용하여 서비스 작업을 실행할 수 있도록 지원합니다. 선택한 언어에 대한 프로토 정의 파일을 컴파일해야 합니다. 그런 다음 컴파일된 파일의 개체(클래스, 함수, 메서드 등)를 사용하여 네트워크 디바이스의 gRPC 서버에 연결하고 원하는 작업을 실행하는 애플리케이션을 만듭니다.

지원되는 다양한 언어와 함께 gRPC를 사용하는 방법에 대한 자세한 내용은 gRPC 설명서를 참조하십시오. 다음 섹션에서는 gRPC 클라이언트를 설정하고 Python용 gNOI 프로토 정의 파일을 다운로드 및 컴파일하기 위한 샘플 명령을 제공합니다. 선택한 운영 체제, 환경 및 gRPC 언어에 적합한 명령을 사용해야 합니다.

시작하기 전에:

gRPC 클라이언트 설정

gNOI는 gRPC 프레임워크를 사용하여 네트워크 디바이스에서 작업을 수행합니다. gRPC는 다양한 언어 사용을 지원합니다. 선택한 언어를 사용하여 gNOI 작업을 수행하려면 먼저 네트워크 관리 시스템에 gRPC 스택을 설치해야 합니다.

예를 들어 Ubuntu 20.04 LTS를 실행하는 네트워크 관리 시스템에 Python용 gRPC 스택을 설치하려면(적절한 경우 사용 sudo ):

  1. Python 3용으로 설치 pip 합니다.
  2. Python용 패키지를 grpcio 설치합니다.
  3. Python용 패키지를 grpcio-tools 설치합니다.

프로토 정의 파일 컴파일

gRPC는 여러 언어 사용을 지원합니다. 네트워크 디바이스에서 gRPC 작업을 수행하려면 선택한 언어에 대한 해당 프로토 정의 파일 및 종속 파일을 컴파일해야 합니다. OpenConfig는 OpenConfig GitHub 리포지토리에 필요한 프로토 정의 파일을 제공합니다. 프로토콜 버퍼 컴파일러(protoc또는 동등한 애플리케이션)를 사용하여 파일을 컴파일합니다..proto

이 설정에서는 원하는 파일과 종속 .proto 파일을 모두 디렉터리에 복사하고 상대 가져오기 문을 사용하도록 파일을 업데이트한 다음 파일을 컴파일하는 스크립트를 실행합니다.

Python용 gNOI 프로토 정의 파일을 다운로드하고 컴파일하려면:

  1. 원본 소스 파일에 대한 임시 디렉터리를 만듭니다.
  2. gNOI GitHub 리포지토리 및 종속 리포지토리를 로컬 디바이스에 복제합니다.
  3. 사용자 언어(이 예제에서는 Python)에 대한 파일을 컴파일 .proto 합니다.

    샘플 셸 스크립트는 다음 작업을 수행합니다.

    • src/proto 디렉터리를 만듭니다.
    • 원하는 프로토 파일을 새 디렉터리에 복사합니다.
    • 상대 경로를 사용하도록 각 proto 파일의 import 문을 업데이트합니다.
    • Python에서 사용하기 위해 지정된 목록의 각 프로토 파일을 컴파일합니다.

    스크립트를 사용하여 파일을 컴파일하려면 디렉터리가 포함된 상위 디렉터리에서 스크립트를 실행합니다.src

    참고:

    이 스크립트는 Junos 디바이스에서 지원되는 서비스가 있는 gNOI 프로토 파일의 하위 집합(에 gnoi_files정의됨)과 종속된 프로토 파일만 컴파일합니다. 다른 서비스를 사용할 수 있게 되면 컴파일하기 위해 해당 서비스를 포함하도록 변수를 업데이트할 수 있습니다.

  4. 대상 디렉터리의 출력 파일을 보고 프로토 파일이 컴파일되었는지 확인합니다.

    파일 목록에는 컴파일된 파일이 포함되어야 하며, Python의 경우 출력 파일 이름에 _pb2pb2_grpc 가 있습니다.

gNOI 애플리케이션 생성

프로토 정의 파일을 컴파일한 후 컴파일된 파일의 개체를 사용하는 응용 프로그램을 만듭니다. 애플리케이션은 네트워크 디바이스의 gRPC 서버에 연결하고 원하는 작업을 수행합니다. 이 섹션에서는 해당 섹션에 설명된 두 개의 샘플 Python 모듈을 제공합니다.

grpc_channel.py

grpc_channel.py Python 모듈은 선택한 인증 방법(서버 전용 또는 상호 인증)에 대해 제공된 인수를 사용하여 gRPC 채널을 생성하는 샘플 함수를 제공합니다.

gnoi_connect_cert_auth_mutual.py

Python 애플리케이션은 gnoi_connect_cert_auth_mutual.py 주어진 gRPC 서버와 함께 gRPC 채널을 설정하고 간단한 gNOI System 서비스 작업을 실행합니다. 사용자는 필요한 연결 및 상호 인증 정보를 애플리케이션에 대한 입력으로 제공합니다. 애플리케이션은 모듈에서 grpc_channel.py 적절한 함수를 호출하여 클라이언트와 서버 간에 gRPC 채널을 설정합니다. 애플리케이션이 gRPC 채널을 성공적으로 설정하면 간단한 시스템 서비스 RPC를 실행하여 네트워크 디바이스에서 시간을 검색합니다.

애플리케이션 실행

gNOI 서비스 작업을 수행하기 위한 애플리케이션을 생성한 후에는 애플리케이션을 실행하고 필요한 인수를 제공합니다. 다음 예제에서는 이전 섹션에서 제공한 스크립트를 사용하여 네트워크 디바이스의 gRPC 서버에 연결하고 시간을 요청합니다. gRPC 서버는 클라이언트의 인증서를 요구하고 확인하도록 구성됩니다.

  • 상호 인증의 경우, 클라이언트는 서버의 IP 주소, gRPC 포트 및 루트 CA 인증서 외에 PEM 형식의 자체 키와 X.509 공개 키 인증서를 제공합니다. 또한 클라이언트는 RPC 호출에 대한 자격 증명을 제공합니다. user_id 인수는 사용자 이름을 제공하고 애플리케이션은 사용자 암호를 묻는 메시지를 표시합니다.