gRPC トンネル

gRPC トンネルについて

この機能は、NX-OS に grpc-tunnel サポートを追加することを目的としています。grpc トンネルは、grpc の上にトラフィック トンネルを実装します。grpc の詳細については、gNMI-gRPC ネットワーク管理インターフェイスを参照してください。

注意事項と制約事項

gRPC トンネルには、次の注意事項と制約事項があります。

  • トンネルのターゲット識別子を割り当てるときの命名規則は、完全にユーザーに任されています。

  • ユーザーは、ターゲット識別子の命名規則が一意であることを確認する必要があります。自動展開ワークフローでターゲット識別子の一意性を扱うようにすることをお勧めします。

gRPC トンネルの設定

この手順では、gRPC トンネルを有効にして構成する方法について説明します。

手順の概要

  1. configure terminal
  2. feature grpc
  3. [no] feature grpctunnel
  4. [no] grpctunnel destination

手順の詳細

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal

グローバル コンフィギュレーション モードを開始します。

ステップ 2

feature grpc

例:

switch(config)# feature grpc

ダイヤルイン用の gNMI インターフェイスをサポートする gRPC エージェントを有効にします。

ステップ 3

[no] feature grpctunnel

例:

switch(config)# feature grpctunnel
grpc-tunnel 機能を有効または無効にします。

ステップ 4

[no] grpctunnel destination

例:

switch(config)# grpctunnel destination 1.1.1.1 port 8000 target test1 type GNMI_GNOI use-vrf management
grpc-tunnel 機能を有効にします。機能を無効にするには、このコマンドの no 形式を使用します。
  • destination:(タイプ:IPv4/IPv6 アドレスまたはホスト名文字列)トンネル サーバーの IP アドレスまたはホスト名。ホスト名が指定されている場合は、有効なネームサーバー構成が必要です。

  • port:(タイプ:tcp port)トンネル サーバーのポート番号。

  • target:(タイプ:文字列、最大 64 バイト)ターゲット ID は文字列です。予約済みキーワード「HOSTNAME」が存在しており、ユーザーが ID をこれに設定すると、スイッチはスイッチのホスト名でターゲットを置き換えます。

  • type:(タイプ:文字列、制限 64 バイト)タイプは、10.3.2F リリースの GNMI_GNOI のみをサポートします。

  • use-vrf:(タイプ:文字列)スイッチが grpc トンネル セッションのダイヤル アウトに使用する VRF 名文字列。

  • (オプション)source-interface:(タイプ:インターフェイス名文字列)source-interface は、トンネル確立の際の出力送信元 IP アドレスを決定するために使用されます。設定すると、スイッチは、インターフェイスの最初の ipv6 グローバル ユニキャスト アドレスを選択します。それ以外の場合は、インターフェイスの ipv4 ユニキャスト アドレスを選択します。この設定は、ループバックおよび svi インターフェイスのみをサポートします。インターフェイスは、Lo10、Vlan100 などの短縮名形式で指定する必要があります。

  • (オプション)cert:(タイプ:文字列)トンネルサーバー証明書を保持するトラストポイント。指定しない場合、サーバーの検証はスキップされます。

  • (オプション)client-cert:(タイプ:文字列)クライアント証明書を保持するトラストポイント。指定した場合、 スイッチはトンネル サーバーとの相互認証を実行します。

  • (オプション)target-vrf:(タイプ:文字列)ローカル grpc サーバー ターゲットに到達するため、指定した VRF 名を使用します。指定しない場合は、vrf パラメータと同じ名前を使用します。たとえば、grpctunnel のように指定します。use-vrf foo ...target-vrf bar は、スイッチが vrf foo の外部トンネル サーバーへの接続を確立しますが、着信 grpc 要求を vrf bar に存在するローカル スイッチ grpc サーバーに転送することを意味します。

gRPC トンネルの構成例

次の手順では、サーバー検証を行わずにトンネルの宛先を設定する方法について説明します。


switch # config t 
switch(config)# grpctunnel destination 1.1.1.1 port 8000 target test1 type GNMI_GNOI use-vrf management
switch(config)# grpctunnel destination server.foo.com port 8000 target test2 type GNMI_GNOI use-vrf management

次の手順では、サーバー検証を行ってトンネルの宛先を設定する方法について説明します。

次のコマンドを実行して、トラストポイントにサーバー証明書をインポートします。


switch(config)# crypto ca trustpoint tunnel_server_trustpoint
switch(config-trustpoint)# crypto ca authenticate tunnel_server_trustpoint
input (cut & paste) CA certificate (chain) in PEM format;
end the input with a line containing only END OF INPUT :
-----BEGIN CERTIFICATE-----
MIIC3TCCAcWgAwIBAgIJAO4xEeL+IrpuMA0GCSqGSIb3DQEBCwUAMBcxFTATBgNV
BAMMDHNqYy1hZHMtNjAxNDAeFw0yMjA1MjYwMDE4MzBaFw0zMjA1MjMwMDE4MzBa
MBcxFTATBgNVBAMMDHNqYy1hZHMtNjAxNDCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBALudrG824XmW/4+BNd632CT3x47akV0QfjwAU1xBDScpAw9brERO
YTLP9BxInbA+WAS+zGql6nmBoZxbqZZL/NVD8ltLKYJJxtDQHJkqdX2lURnMUFr2
9pyJQtuh/udq9hp8zGcEpbPayfIdHCnZqraWMLvk1W0mqAa7ek0iizIZNwKmU3oR
7CGQOxi8aMsAfH5iBsRTNURFdaXdJYTOjry0il+jBKT21F2Z3vGcB7ddTt+I7qrd
GjJs4BI4a22Y3usYb/dnsEa0ZCFTFIq6Y2Pwc3DOuKalUhujSqisqfMDuqC34ATw
kWwLnHDWVu0iVaWndy3uvQZKDNv/bIIuoo8CAwEAAaMsMCowFwYDVR0RBBAwDoIM
c2pjLWFkcy02MDE0MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB
AIjNgq/paYfPtHDe9PlZKzrmGz+UlUAx8saj2WHtrKgBj48J6fYvz1yTPWLKMPct
/5y+nhia6gRlV/navFcpiUUpQGpoZQnaa40/nkBMDvVxnTu6l9UC0WUAyTh2l7ec
BriY8yq3elpQWHZS4KRNmBH8fuviAv4f0fzOAuNGeIuv7UGnfA8Ed/q/Z3frQxOI
qNXr3vBBTptYTLwdrRM0axagL6waZgZyTFfFHpIXBPEtsXKb/5GuP4+nqXvtfkfe
d6P9jA4BKA/e6Gu6NAR0JMOdmJeEFjMbg+uu8jghcRTcwRsGeb9DqPUL+5IsVg3a
dKMaZxyQFiRz0LyTqQtZmE0=
-----END CERTIFICATE-----
END OF INPUT
Fingerprint(s): SHA1 Fingerprint=D4:9D:79:5B:8B:38:D6:50:6D:46:89:A8:C4:41:AB:
C9:D9:9F:D1:66
Do you accept this certificate? [yes/no]:yes

次のコマンドを実行して、トンネルの接続先を設定します。

switch(config)# grpctunnel destination 1.1.1.1 port 8000 target test1 type GNMI_GNOI use-vrf management cert tunnel_server_trustpoint
switch(config)# show system internal dme running-config all dn sys/grpctunnel
{ 
  "grpctunnelInst": {
    "attributes": {
      "childAction": "",
      "dn": "sys/grpctunnel",
      "modTs": "2022-12-02T12:57:37.891+00:00",
      "status": ""
    },
    "children": [
      { 
        "grpctunnelTunnelMgr": {
          "attributes": {
            "childAction": "",
            "dn": "sys/grpctunnel/tunnelmgr",
            "modTs": "2022-12-02T12:57:37.891+00:00",
            "status": ""
          },
          "children": [
            { 
              "grpctunnelTunnel": {
                "attributes": {
                  "cert": "tunnel_server_trustpoint",
                  "certClient": "",
                  "childAction": "",
                  "dest": "1.1.1.1",
                  "dn": "sys/grpctunnel/tunnelmgr/tunnel-[1.1.1.1]-port-[8000]-target-[test1]-type-[GNMI_GNOI]-vrf-[management]",
                  "modTs": "2022-12-05T10:09:45.163+00:00",
                  "port": "8000",
                  "srcIf": "unspecified",
                  "status": "",
                  "targetId": "test1",
                  "targetType": "GNMI_GNOI",
                  "targetVrf": "",
                  "vrf": "management"
                }
              }
            }
          ]
        }
      }
    ]
  }
}