Konfigurieren und Überprüfen von gRPC/gNMI auf dem Nexus 9000 (2024)

    Einleitung

    In diesem Dokument wird beschrieben, wie gNMI für Einwahlabonnements für Telemetrieanwendungen eingerichtet wird, die auf den Cisco Nexus Switches der Serie 9000 ausgeführt werden.

    Voraussetzungen

    Anforderungen

    Allgemeine Empfehlungen, die Sie in folgenden Bereichen kennen:

    • gRPC (Google Remote Procedure Call)
    • gNMI (Google RPC - Network Management Interface)
    • Zertifizierungsstellenzertifikate (Zertifizierungsstelle)
    • TLS (Transport Layer Security)
    • Befehlszeile für Nexus 9000

    Verwendete Komponenten

    • Die Informationen in diesem Dokument basierend auf folgenden Software- und Hardware-Versionen:

    Server (SW1)

    N9K-C93180YC-FX

    Version 9.3(9)

    Collector (Client)

    Mac/Ubuntu

    13.4.1/5.19.0-46

    TLS

    Dienst wird unter Ubuntu ausgeführt

    3.3.6

    gNMI

    Dienst wird unter Ubuntu ausgeführt

    0.5.0

    • Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.

    Was ist gRPC?

    • gRPC (entwickelt von Google) ist ein RPC-Framework zur Erstellung verteilter Systeme.
    • Im gRPC-Protokoll kann ein Client, der auf einem System ausgeführt wird, die auf einem Remote-Server definierten Dienste aufrufen, als ob es sich um ein lokales Objekt handeln würde.
    • Ein Endpunkt (oder ein Server) ist ein laufender Prozess, der mit anderen Endpunkten über das gRPC-Protokoll kommunizieren kann. Ein Endpunkt kann mehrere Services hosten.

    Was ist gNMI (Dail-in)?

    • gNMI ist eine auf Google RPC basierende Netzwerkverwaltungsschnittstelle zur Konfiguration von Netzwerkgeräten.

    Unterstützte gNMI-RPCs

    gNMI-RPC

    Unterstützt

    Funktionen

    Ja

    Mehr erfahren

    Ja

    Festlegen

    Ja

    Abonnieren

    Ja

    Unterstützte Methoden von gNMI

    Serverseitige Authentifizierung (TLS) / Mit Kennwort


    Konfigurieren von gNMI auf Nexus 9000

    • gRPC-Funktion aktivieren


    Client-Computer konfigurieren


    gNMI-Dienst installieren:

    bash -c "$(curl -sL https://get-gnmic.openconfig.net)"

    Überprüfung von Nexus 9000

    # show run grpc
    feature grpc

    #show grpc gnmi transactions
    =============
    gRPC Endpoint
    =============
    Vrf : management
    Server address : [::]:50051
    Cert notBefore : Jul 19 13:16:53 2023 GMT <- Default switch certificates used for one day
    Cert notAfter : Jul 20 13:16:53 2023 GMT
    RPC DataType Session Time In Duration(ms) Status
    ------------ ---------- --------------- -------------------- ------------ ------
    Get ALL 3538957304 07/19 14:21:14 1 0
    subtype: dtx: st: path:
    - - OK /System/bgp-items/inst-items/dom-items/Dom-list/rtrId

    Get ALL 3536859976 07/19 14:20:30 1101 0
    subtype: dtx: st: path:
    - - OK /System/intf-items

    Client Collector überprüfen

     % gnmic -a 10.88.146.112:50051 -u (username) -p (password) --skip-verify get --path /System/bgp-items/inst-items/dom-items/Dom-list/rtrId
    [
    {
    "source": "10.88.146.112:50051",
    "timestamp": 1689773883108293792,
    "time": "2023-07-19T19:08:03.108293792+05:30",
    "updates": [
    {
    "Path": "System/bgp-items/inst-items/dom-items/Dom-list/rtrId",
    "values": {
    "System/bgp-items/inst-items/dom-items/Dom-list/rtrId": null
    }
    }
    ]
    }
    ]

    % gnmic -a 10.88.146.112:50051 -u (username) -p (password) --skip-verify capabilities
    gNMI version: 0.5.0
    supported models:
    - Cisco-NX-OS-device, Cisco Systems, Inc., 2022-02-04
    - DME, Cisco Systems, Inc.,
    - Cisco-NX-OS-Syslog-oper, Cisco Systems, Inc., 2019-08-15
    supported encodings:
    - JSON
    - PROTO

    Konfigurieren und Überprüfen von gRPC/gNMI auf dem Nexus 9000 (1)

    Hinweis: Daten werden mit Switch-Standardzertifikaten verschlüsselt, die mit Kennwortauthentifizierung installiert wurden.

    Serverseitige Authentifizierung (TLS) mit Zertifikat und Kennwort der Stammzertifizierungsstelle

    Client konfigurieren

    Lokale Stammzertifizierungsstelle werden

    Dies sind die Schritte zum Erstellen von Zertifikaten und Stammzertifikaten:

    1. Schlüssel generieren:

    bash-4.3# openssl genrsa -des3 -out myCA.key 2048 <<< Generate key for Root CA 
    Generating RSA private key, 2048 bit long modulus
    ..........
    ...............
    e is 65537 (0x10001)
    Enter pass phrase for myCA.key:
    Verifying - Enter pass phrase for myCA.key:

    2. Stammzertifikat generieren:


    bash-4.3# openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1000 -out myCA.pem
    Enter pass phrase for myCA.key:
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:IN
    State or Province Name (full name) [Some-State]:IN
    Locality Name (eg, city) []:IN
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:IN
    Organizational Unit Name (eg, section) []:IN
    Common Name (e.g. server FQDN or YOUR name) []:IN
    Email Address []:IN

    bash-4.3# pwd
    /bootflash/home/admin/certs

    bash-4.3# ls -ll
    total 8
    -rw-r--r-- 1 root root 1743 Jul 19 14:24 myCA.key
    -rw-r--r-- 1 root root 1302 Jul 19 14:25 myCA.pem

    3. Erstellen Sie ein Serverzertifikat, das vom Root-Server signiert wird:


    1. openssl genrsa -out Server.test.key 2048. << create server private key

    2. openssl req -new -key Server.test.key -out Server.test.csr << Create server csr

    3. Need to create an X509 V3 certificate extension config file, which is used to define the Subject Alternative Name (SAN) for the certificate.

    bash-4.3# cat Server.test.ext
    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names

    [alt_names]
    IP.1 = 10.88.x.x. << Server IP address

    4. Creating Server certificates singed by Root CA (myCA.pem)
    openssl x509 -req -in Server.test.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out Server.test.crt -days 825 -sha256 -extfile Server.test.ext

    5. At last, we need to create .PFX file to use on switch.

    openssl pkcs12 -export -out Server.test.pfx -inkey Server.test.key -in Server.test.crt -certfile myCA.pem -password pass:cisco

    6. All created files

    bash-4.3# ls -l
    total 32
    -rw-r--r-- 1 root root 1743 Jul 19 14:24 myCA.key
    -rw-r--r-- 1 root root 1302 Jul 19 14:25 myCA.pem <-- .pem will be used on client machine for server authentication
    -rw-r--r-- 1 root root 17 Jul 19 14:40 myCA.srl
    -rw-r--r-- 1 root root 1298 Jul 19 14:40 Server.test.crt
    -rw-r--r-- 1 root root 1054 Jul 19 14:38 Server.test.csr
    -rw-r--r-- 1 root root 203 Jul 19 14:40 Server.test.ext
    -rw-r--r-- 1 root root 1679 Jul 19 14:36 Server.test.key
    -rw-r--r-- 1 root root 3485 Jul 19 14:43 Server.test.pfx. <-- Copy file to Switch and import certificates to gRPC trust point
    bash-4.3#

    Konfigurieren des gRPC-Nexus 9000

    Feature grpc
    crypto ca trustpoint trust_my <-- trust point created
    crypto ca import trust_my pkcs12 bootflash:Server.test.pfx cisco <-- pfx file used to import certificates
    grpc certificate trust_my <-- trust point added to grpc

    Switch überprüfen

    show grpc gnmi service statistics
    =============
    gRPC Endpoint
    =============
    Vrf : management
    Server address : [::]:50051
    Cert notBefore : Jul 19 14:40:57 2023 GMT <-- Certificates installed by Admin
    Cert notAfter : Oct 21 14:40:57 2025 GMT
    Max concurrent calls : 8
    Listen calls : 1
    Active calls : 0
    Number of created calls : 29
    Number of bad calls : 28
    Subscription stream/once/poll : 0/0/0
    Max gNMI::Get concurrent : 5
    Max grpc message size : 8388608
    gNMI Synchronous calls : 34
    gNMI Synchronous errors : 19
    gNMI Adapter errors : 18
    gNMI Dtx errors : 0

    show crypto ca certificates trust_my

    Trustpoint: trust_my
    certificate:
    subject= /C=IN/ST=IN/L=IN/O=IN/OU=IN/CN=IN/emailAddress=IN
    issuer= /C=IN/ST=IN/L=IN/O=IN/OU=IN/CN=IN/emailAddress=IN
    serial=AC6E9591F0919488
    notBefore=Jul 19 14:40:57 2023 GMT
    notAfter=Oct 21 14:40:57 2025 GMT
    SHA1 Fingerprint=7D:F1:7E:CD:C7:32:7E:B9:68:16:D4:D8:9A:48:C0:4A:7E:72:15:33
    purposes: sslserver sslclient

    CA certificate 0:
    subject= /C=IN/ST=IN/L=IN/O=IN/OU=IN/CN=IN/emailAddress=IN
    issuer= /C=IN/ST=IN/L=IN/O=IN/OU=IN/CN=IN/emailAddress=IN
    serial=EE18094A2EC65F7D
    notBefore=Jul 19 14:25:49 2023 GMT
    notAfter=Apr 14 14:25:49 2026 GMT
    SHA1 Fingerprint=A4:06:6A:80:A0:2A:D5:E1:15:92:F4:2B:50:89:BF:23:A0:52:D5:54
    purposes: sslserver sslclient

    show grpc gnmi transactions

    =============
    gRPC Endpoint
    =============

    Vrf : management
    Server address : [::]:50051

    Cert notBefore : Jul 19 14:40:57 2023 GMT
    Cert notAfter : Oct 21 14:40:57 2025 GMT
    Client Root Cert notBefore : n/a
    Client Root Cert notAfter : n/a

    RPC DataType Session Time In Duration(ms) Status
    ------------ ---------- --------------- -------------------- ------------ ------
    Set - 3458208880 07/26 07:46:09 98 0
    subtype: dtx: st: path:
    Update - OK /interfaces/interface[name=mgmt0]/config/description

    show run grpc
    feature grpc
    grpc certificate trust_my

    Client überprüfen

    1: Get 

    % gnmic -a 10.88.146.112:50051 -u (username) -p (Password) --tls-ca myCA.pem get --path /System/bgp-items/inst-items/dom-items/Dom-list/rtrId
    [
    {
    "source": "10.88.146.112:50051",
    "timestamp": 1689779603147750570,
    "time": "2023-07-19T20:43:23.14775057+05:30",
    "updates": [
    {
    "Path": "System/bgp-items/inst-items/dom-items/Dom-list/rtrId",
    "values": {
    "System/bgp-items/inst-items/dom-items/Dom-list/rtrId": null
    }
    }
    ]
    }
    ]

    2: Capabilities

    % gnmic -a 10.88.146.112:50051 -u (username) --tls-ca myCA.pem capabilities
    gNMI version: 0.5.0
    supported models:
    - Cisco-NX-OS-device, Cisco Systems, Inc., 2022-02-04
    - DME, Cisco Systems, Inc.,
    - Cisco-NX-OS-Syslog-oper, Cisco Systems, Inc., 2019-08-15
    supported encodings:
    - JSON
    - PROTO

    % gnmic -a 10.88.146.112:50051 -u (username) -p (password) --tls-ca myCA.pem capabilities
    gNMI version: 0.5.0
    supported models:
    - Cisco-NX-OS-device, Cisco Systems, Inc., 2022-02-04
    - DME, Cisco Systems, Inc.,
    - Cisco-NX-OS-Syslog-oper, Cisco Systems, Inc., 2019-08-15
    supported encodings:
    - JSON
    - PROTO

    3: Set

    interface mgmt0 <-- No Description on interface
    vrf member management
    ip address x.x.x.x/x

    % gnmic -a 10.88.146.112:50051 -u (username) -p (password) --tls-ca myCA.pem set --update-path "interfaces/interface[name=mgmt0]/config/description" --update-value gnmic
    {
    "source": "10.88.146.112:50051",
    "timestamp": 1690357569933044933,
    "time": "2023-07-26T13:16:09.933044933+05:30",
    "results": [
    {
    "operation": "UPDATE",
    "path": "interfaces/interface[name=mgmt0]/config/description"
    }
    ]
    }

    interface mgmt0
    description gnmic <-- Description added with set RPC
    vrf member management
    ip address x.x.x.x/x

    Zusammenfassung

    1. Weitere Informationen und Richtlinien/Einschränkungen für gNMI finden Sie im Konfigurationsleitfaden für Nexus 9000.
    2. Finden Sie den Link, um Openconfig path für get und set RPC zu überprüfen.
    3. Sie müssen RPM für von Openconfig unterstützte Pfade in Version 9.3(x) installieren und die Funktion Openconfig ab 10.2.(2) aktivieren.

    Zugehörige Informationen

    • Technischer Support und Downloads von Cisco
    Konfigurieren und Überprüfen von gRPC/gNMI auf dem Nexus 9000 (2024)
    Top Articles
    Latest Posts
    Recommended Articles
    Article information

    Author: Mrs. Angelic Larkin

    Last Updated:

    Views: 6629

    Rating: 4.7 / 5 (67 voted)

    Reviews: 90% of readers found this page helpful

    Author information

    Name: Mrs. Angelic Larkin

    Birthday: 1992-06-28

    Address: Apt. 413 8275 Mueller Overpass, South Magnolia, IA 99527-6023

    Phone: +6824704719725

    Job: District Real-Estate Facilitator

    Hobby: Letterboxing, Vacation, Poi, Homebrewing, Mountain biking, Slacklining, Cabaret

    Introduction: My name is Mrs. Angelic Larkin, I am a cute, charming, funny, determined, inexpensive, joyous, cheerful person who loves writing and wants to share my knowledge and understanding with you.