OpenConfig YANG

OpenConfig YANG について

OpenConfig YANG は、宣言型の構成やモデル駆動型の管理と操作など、最新のネットワーキングの原則をサポートしています。OpenConfig は、ネットワークの構成とモニタリングのためにベンダーに依存しないデータ モデルを提供します。また、サブスクリプションとイベント更新ストリーミングにより、プル モデルからプッシュ モデルへの移行を支援します。

Cisco NX-OS リリース 9.2(1) 以降、幅広い機能エリアにわたってサポートが追加されています。これらには、BGP、OSPF、インターフェイス L2 と L3、VRF、VLAN、TACAC が含まれます。

OpenConfig YANG の詳細については、「OpenConfig YANG について」を参照してください。

Cisco NX-OS 9.2(1)の OpenConfig モデルについては、「YANG モデル 9.2(1)」を参照してください。OpenConfig YANG モデルは Cisco NX-OS リリースごとにグループ化されているため、Cisco NX-OS リリース番号が変更されると、URL の最後の桁が変更されます。

OpenConfig YANG のガイドラインと制限事項

OpenConfig YANG には、次のガイドラインと制限事項があります。

  • IPv4 および IPv6 アドレスの場合、IP アドレス フィールド(oc-ip:ip および oc-ip:prefix_length)の削除と削除に同じ操作を提供する必要があります。

    例:

    oc-ip:ip: remove
    oc-ip:prefix_length: remove 
  • OSPF アクション メトリックが BGP set med プロパティよりも優先されるため、OpenConfig NETCONF を介して同じルート マップ内のメトリックを使用したset med と一緒のBGP アクションおよび OSPF アクションを設定することは推奨されません。

    2 つの異なるルート マップを使用して、OSPF アクションでメトリックを設定します。個別のルート マップを使用して BGP アクションの下でset-med を使用します。

    単一のペイロードで、BGP アクションのメトリックを OSPF アクションに変更したり、OSPF アクションをルート マップの BGP アクションに変更したりしないことをお勧めします。

  • システム ID をキーとして使用した ISIS の「is-reachability」リーフの取得中に、ネイティブ DME は使用可能なすべてのエントリを返します。ただし、OpenConfig はメトリック値が最大のエントリを 1 つだけ返します。

  • 有効な BGP インスタンスを使用するには、自律システム (AS) 番号を指定する必要があります。AS 番号にデフォルト値が存在しないため、NETCONF / OPENCONFIG で削除しようとすると<asn> BGP インスタンスを削除しないと、次の強調表示されたエラー メッセージが表示されます。

    764
    <nc:rpc xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:1ea09de2-605e-46aa-984b-9dfdad03354d">
      <nc:edit-config>
        <nc:target>
          <nc:running/>
        </nc:target>
        <nc:config>
          <network-instances xmlns="http://openconfig.net/yang/network-instance">
            <network-instance>
              <name>default</name>
              <protocols>
                <protocol>
                  <identifier>BGP</identifier>
                  <name>bgp</name>
                  <bgp>
                    <global>
                      <config nc:operation="delete">
                        <as>100</as>
                      </config>
                    </global>
                    <neighbors>
                      <neighbor>
                        <neighbor-address>1.1.1.1</neighbor-address>
                        <enable-bfd xmlns="http://openconfig.net/yang/bfd">
                          <config>
                            <enabled>true</enabled>
                          </config>
                        </enable-bfd>
                      </neighbor>
                    </neighbors>
                  </bgp>
                </protocol>
              </protocols>
            </network-instance>
          </network-instances>
        </nc:config>
      </nc:edit-config>
    </nc:rpc>
    
    ##
    Received:
    <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:1ea09de2-605e-46aa-984b-9dfdad03354d">
        <rpc-error>
            <error-type>protocol</error-type>
            <error-tag>operation-failed</error-tag>
            <error-severity>error</error-severity>
            <error-message xml:lang="en">invalid property value , for property asn, class bgpInst</error-message>
            <error-path>/config/network-instances</error-path>
        </rpc-error>
        <rpc-error>
            <error-type>protocol</error-type>
            <error-tag>operation-failed</error-tag>
            <error-severity>error</error-severity>
            <error-message xml:lang="en">invalid property value , for property asn, class bgpInst Commit Failed</error-message>
            <error-path>/config/network-instances</error-path>
        </rpc-error>
    </rpc-reply>
     
    
    
  • OC-BGP-POLICY には、次の OpenConfig YANG 制限があります:

    • アクション タイプは、community-set および as-path-set に対して常に[許可(permit)]され、次のコンテナに適用されます。

      • /bgp-defined-sets/community-sets/community-set/

      • /bgp-defined-sets/as-path-sets/as-path-set/

      OpenConfig YANG には、community-set および as-path-set の CLI にあるようなアクション タイプの概念はありません。したがって、community-set および as-path-set のアクション タイプは常に permit です。

    • このコンテナには、次の OpenConfig YANG 制限が適用されます。 /bgp-defined-sets/community-sets/community-set/

      CLI では、community-list には、標準と拡張の 2 つの異なるタイプがあります。ただし、OpenConfig YANG モデルでは、community-set-name にそのような区別はありません。

      OpenConfig YANG を使用して community-set-name を作成すると、次のことが内部で発生します。

      • community-member が標準形式(AS:NN)の場合、community-set-name の後に _std サフィックスが追加されます。

      • community-member が展開形式(正規表現)の場合、community-set-name の後に _exp サフィックスが追加されます。

        <community-set>
            <community-set-name>oc_commset1d</community-set-name>
            <config>
                <community-set-name>oc_commset1d</community-set-name>
                <community-member>0:1</community-member>
                <community-member>_1_</community-member>
            </config>
        </community-set>
        
        

        上記の OpenConfig YANG 構成は、次の CLI にマップされます。

        ip community-list expanded oc_commset1d_exp seq 5 permit "_1_"
        ip community-list standard oc_commset1d_std seq 5 permit 0:1
        
        
    • このコンテナには、次の OpenConfig YANG 制限が適用されます。 /bgp-conditions/match-community-set/config/community-set/

      OpenConfig YANG は 1 つのコミュニティ セットにのみマッピングできますが、CLI はコミュニティ セットの複数のインスタンスに一致できます。

      • CLI の場合:

        ip community-list standard 1-1 seq 1 permit 1:1 
          ip community-list standard 1-2 seq 1 permit 1:2
          ip community-list standard 1-3 seq 1 permit 1:3
        route-map To_LC permit 10
          match community 1-1 1-2 1-3
        
        
      • 対応する OpenConfig YANG ペイロードは次のとおりです。

        <config>
          <routing-policy xmlns="http://openconfig.net/yang/routing-policy">
            <defined-sets>
              <bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy">
                <community-sets>
                  <community-set>
                    <community-set-name>cs</community-set-name>
                    <config>
                      <community-set-name>cs</community-set-name>
                      <community-member>1:1</community-member>
                      <community-member>1:2</community-member>
                      <community-member>1:3</community-member>
                    </config>
                  </community-set>
                </community-sets>
              </bgp-defined-sets>
            </defined-sets>
            <policy-definitions>
              <policy-definition>
                <name>To_LC</name>
                <statements>
                  <statement>
                    <name>10</name>
                    <conditions>
                      <bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy">
                        <match-community-set>
                          <config>
                            <community-set>cs</community-set>
                          </config>
                        </match-community-set>
                      </bgp-conditions>
                    </conditions>
                  </statement>
                </statements>
              </policy-definition>
            </policy-definitions>
          </routing-policy>
        </config>
         
        

      回避策として、OpenConfig YANG を介して複数のステートメントを持つ 1 つのコミュニティを作成します。

      ip community-list standard cs_std seq 5 permit 1:1 
        ip community-list standard cs_std seq 10 permit 1:2
        ip community-list standard cs_std seq 15 permit 1:3
      route-map To_LC permit 10
        match community cs_std
      
      
    • 次の OpenConfig YANG 制限がこのコンテナに適用されます。 /bgp-conditions/state/next-hop-in

      OpenConfig YANG では、next-hop-in タイプは IP アドレスですが、CLI では IP プレフィックスです。

      OpenConfig YANG を介して next-hop-in を作成する際、IP アドレスは CLI 設定で「/32」マスク プレフィックスに変換されます。例:

      • 以下は、OpenConfig YANG ペイロードの next-hop-in の例です。

        <policy-definition>
            <name>sc0</name>
            <statements>
                <statement>
                    <name>5</name>
                    <conditions>
                        <bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy">
                            <config>
                                <next-hop-in>2.3.4.5</next-hop-in>
                            </config>
                        </bgp-conditions>
                    </conditions>
                </statement>
            </statements>
        </policy-definition>
        
        
      • 以下は、CLI での同じ情報の例です。

        ip prefix-list IPV4_PFX_LIST_OPENCONFIG_sc0_5 seq 5 permit 2.3.4.5/32
        route-map sc0 permit 5
          match ip next-hop prefix-list IPV4_PFX_LIST_OPENCONFIG_sc0_5
        
        
  • OC-BGP-POLICY には、次の NX-OS 制限があります。

    • /bgp-actions/set-community/config/method enum "REFERENCE" はサポートされていません。

    • /bgp-actions/config/set-next-hop の OpenConfig YANG モデルでサポートされている enum "SELF" はサポートされていません。

  • OC-BGP-POLICY の場合、/bgp-conditions/match-community-set/config/community-set は、 match community <community-set>_std にのみマップされるので、標準コミュニティのみがサポートされます。拡張コミュニティ セットへの一致はサポートされていません。

  • タグセットの定義済みセットは現在実装されていないため、match-tag-set の置換には制限があります。

    現在、match-tag-set を置き換えると、値が追加されます。match-tag-set を置き換えるには、それを削除してから、もう一度作成します。

  • FIPS には、OSPF OpenConfig YANG の注意事項および制約事項が適用されます。

    • OSPF でエリア構成を構成して削除すると、削除されたエリア (古いエントリ) が引き続き DME に表示されます。これらの古いエリア エントリは、OpenConfig YANG の GETCONFIG/GET 出力に表示されます。

    • OSPF ポリシー match ospf-area 構成の OpenConfig YANG でサポートされるエリアは 1 つだけです。CLI では、match ospf-area 100 101 など、複数のエリアに一致するように設定できます。ただし、OpenConfig YANG では、1 つのエリアのみを設定できます(たとえば、match ospf-area 100)。

    • エリア仮想リンクおよびエリア インターフェイス構成ペイロードは、同じエリア リストの下に置くことはできません。エリア コンテナ ペイロードを同じペイロード内の仮想リンク エリアとインターフェイス エリアとして分割します。

    • MD5 認証文字列は、OSPF OpenConfig YANG では構成できません。

      OSPF モデルでは、認証に対して認証タイプが定義されています。

      leaf authentication-type {
        type string;
        description
          "The type of authentication that should be used on this
          interface";
      }
      

      OSPF OpenConfig YANG は、認証パスワードのオプションをサポートしていません。

    • OSPF エリア認証構成はサポートされていません。たとえば、area 0.0.0.200 authentication message-digest は、OpenConfig YANG から設定できません。

    • デフォルトのネットワーク インスタンスでプロトコル コンテナを削除しても、デフォルトの VRF(たとえば、router ospf 1/router bgp 1 )に該当する OSPF/BGP インスタンス設定は削除されません。

  • 次に、OpenConfig ペイロードと Cisco Nexus 9000 インターフェイス間の VLAN 設定に関する注意事項と制限事項を示します。

    • トランク モード インターフェイスとトランク VLAN を同じ OpenConfig ペイロードで同時に構成しようとすると、構成が正常に完了しません。ただし、ペイロードを分割してトランク モード インターフェイスが最初に送信され、次にトランク VLAN が送信されると、構成は正常に完了します。

      Cisco NX-OS インターフェイスでは、インターフェイス モードのデフォルト値は access です。トランク関連の設定を実装するには、最初にインターフェイス モードを trunk に変更してから、トランク VLAN 範囲を設定する必要があります。これらの構成は、個別のペイロードで行います。

      次の例は、トランク モードと VLAN 範囲を設定するための個別のペイロードを示しています。

      例 1、インターフェイスをトランク モードに設定するペイロード。

      <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101">
        <edit-config>
          <target>
            <running/>
          </target>
          <config>
            <interfaces xmlns="http://openconfig.net/yang/interfaces">
              <interface>
                <name>eth1/47</name>
                <subinterfaces>
                  <subinterface>
                    <index>0</index>
                    <config>
                      <index>0</index>
                    </config>
                  </subinterface>
                </subinterfaces>
                <ethernet xmlns="http://openconfig.net/yang/interfaces/ethernet">
                  <switched-vlan xmlns="http://openconfig.net/yang/vlan">
                    <config>
                      <interface-mode>TRUNK</interface-mode>
                    </config>
                  </switched-vlan>
                </ethernet>
              </interface>
            </interfaces>
          </config>
        </edit-config>
      </rpc>
      例 2、VLAN 範囲を構成するペイロード。
      <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101">
        <edit-config>
          <target>
            <running/>
          </target>
          <config>
            <interfaces xmlns="http://openconfig.net/yang/interfaces">
              <interface>
                <name>eth1/47</name>
                <subinterfaces>
                  <subinterface>
                    <index>0</index>
                    <config>
                      <index>0</index>
                    </config>
                  </subinterface>
                </subinterfaces>
                <ethernet xmlns="http://openconfig.net/yang/interfaces/ethernet">
                  <switched-vlan xmlns="http://openconfig.net/yang/vlan">
                    <config>
                      <native-vlan>999</native-vlan>
                      <trunk-vlans xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" nc:operation="delete">1..4094</trunk-vlans>
                      <trunk-vlans>401</trunk-vlans>
                      <trunk-vlans>999</trunk-vlans>
                    </config>
                  </switched-vlan>
                </ethernet>
              </interface>
            </interfaces>
          </config>
        </edit-config>
      </rpc>
    • OpenConfig YANG の設計により、VLAN を設定する場合、ペイロード内の VLAN とインターフェイスですでに設定されている VLAN との間に重複があってはなりません。オーバーラップが存在する場合、OpenConfig による構成は失敗します。インターフェイスに設定されている VLAN が、OpenConfig ペイロードの VLAN と異なることを確認してください。範囲内の開始 VLAN と終了 VLAN に特に注意してください。

  • 次の注意事項および制約事項が OC-LACP に適用されます。

    • ポートチャネル モード:

      • OC-LACP を使用すると、ポートチャネル インターフェイスでポートチャネル モードを設定できます。ただし、NXOS-CLI を通じて、ポートチャネル モードは、チャネル グループ モードのアクティブまたはパッシブを使用してメンバー インターフェイスで設定されます。

      • OC-LACP はポートチャネル インターフェイスでポート チャネル モードを明示的に設定しますが、ポートチャネル インターフェイスで NX-OS show running-config コマンドを発行しても、空または空でないポートチャネルのポートチャネル モード設定は表示されません。

      • メンバーがポートチャネルに追加されると、show running interface ethernet <> はポート チャネル モードの構成をチャネル グループ モードのアクティブまたはパッシブとして表示されます。


      (注)  


      OpenConfig を介して作成されたすべてのポートチャネルは、引き続き OpenConfig によって管理される必要があります。


    • ポートチャネルの間隔:

      • ポートチャネルの間隔は、メンバーがシャット 状態の場合にのみ変更できます。

      • OC-LACP 間隔はポートチャネルごとです。NX-OS LACP 間隔は、ポートチャネル メンバーごとです。この違いにより、次の動作が予想されます。

        • OpenConfig を使用してポートチャネル間隔を設定すると、ポートチャネルのすべてのメンバーに同じ設定が適用されます。

        • OpenConfig を使用してポートチャネル間隔を構成し、後でメンバーがポートチャネルに追加された場合、設定を新しいメンバーに適用するには、OpenConfig を使用して間隔を再度設定する必要があります。

      • システム MAC ID:

        • このリリースでは、Cisco NX-OS はポートチャネルごとの system-id-mac をサポートしていません。

  • 次のメンバー状態データは、ポートが管理 up state:状態の場合にのみ存在します。

    • LACP

    • インターフェイス

    • インターフェイス

    • メンバー

    • 状態

  • OpenConfig YANG を介してインターフェイスを追加しようとすると、OSPFv2 はエラー応答を送信できます。問題が発生すると、インターフェイスは追加されず、RPC 応答には次のように「リストのマージに失敗しました(list merge failed)」というエラーが含まれます。

    <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:39507023-8569-4cf8-869c-e19aaf76a260">
        <rpc-error>
            <error-type>protocol</error-type>
            <error-tag>operation-failed</error-tag>    
            <error-severity>error</error-severity>
            <error-message xml:lang="en">List Merge Failed: operation-failed</error-message>  
            <error-path>/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface/id</error-path>
        </rpc-error>
    </rpc-reply>
    
  • Hig (ii) ポートの統計のキューイングはサポートされていません。

  • ユニキャスト、マルチキャスト、またはブロードキャスト キューごとの tx パケット、またはバイト、およびドロップ パケットは表示されません。OC 応答に表示される統計は、qos-group ごとの ucast、mcast、および bcast キューの合計です。

  • OpenConfig YANG は、VLAN レベルで適用される QoS ポリシーの統計をサポートしていません。

  • OC を介して取得できる入力キュー ドロップ数は、プラットフォームに応じてスライス/ポート/キュー レベルで表示できます。

  • 以下は、switchport、shut/no shut、MTU、および MAC アドレスの OpenConfig 設定のガイドラインと制限です。

    • スイッチポート、shut/no shut、MTU、および MAC アドレスを設定する場合は、ASCII リロードが必要です。バイナリ リロードを使用すると、構成が失われます。

  • 次の状態コンテナは、インターフェイス参照レベルの OpenConfig ACL に実装されています。

    • acl/interfaces/state コンテナの /acl/interfaces/interface/interface-ref/state

    • read-onlyoc-if:interface リーフの acl/interfaces/interface/interface-ref/state/interface

    • read-onlyoc-if:subinterface リーフの acl/interfaces/interface/interface-ref/state/subinterface

  • 次のシステム構成コンテナは、ドメイン名、ログイン バナー、および motd-バナー モデルに実装されています。

    • /system/config/domain-name for /top:System/top:dns-items/top:prof-items/top:Prof-list/top:dom-items/top:name container

    • system/config/login-banner for /top:System/top:userext-items/top:postloginbanner-items/top:message container

    • system/config/login-banner for /top:System/top:userext-items/top:postloginbanner-items/top:message container

  • Cisco NX-OS リリース 10.3(1)F 以降、新しい一連の動作状態 OpenConfig パスが、Cisco Nexus 9000 シリーズ スイッチでサポートされています。これらのパスは、高度にスケーリングされた動作状態データにマッピングされます。

    次に、この新しい一連の動作状態 OpenConfig パスに関する一般的なガイドラインと制限事項を示します。

    • 最適なパフォーマンスを得るには、親レベルの XPath ではなく正確な XPath を指定して、このデータを取得する必要があります。親レベルの XPath クエリも機能しますが、同じパフォーマンスは提供されません。

    • OpenConfig パスは GNMI でのみサポートされ、Restconf または NETCONF ではサポートされません。

    • OpenConfig パスは、suppress-redundant をサポートしていません。

    • GNMI ON_CHANGE サブスクリプションは、OpenConfig パスではサポートされていません。

  • 次の新しい動作状態 OpenConfig パスがサポートされています。一部のパスには、次に示す追加のガイドラインと制限事項があります。

    • /network-instances/network-instance/fdb/l2rib/mac-table

      • l2rib の親レベルのクエリは、l2rib レベルでサポートされています。たとえば、network-instances/network-instance/fdb/l2rib まではクエリできますが、fdb レベルの network-instances/network-instance/fdb ではクエリできません。

    • /interfaces/interface/routed-vlan/ipv4/neighbors/neighbor/state

    • /interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state

      • 親クエリの場合、インフラストラクチャはすべてのリスト項目のすべてのキーを取得し、これらの各リスト項目の残りのデータを入力する要求がバックエンドに送信されます。つまり、インフラストラクチャにはバックエンドと同じツリービューが必要です。

        たとえば、インフラストラクチャに静的エントリのみが表示され、バックエンドに静的エントリと動的エントリがある場合、リストウォークでは、インフラストラクチャは各静的エントリの要求のみを送信し、不完全なデータになります。現在のリリースでこの制限があるパスは、/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state および /interfaces/interface/routed-vlan/ipv4/neighbors/neighbor/state です。正確なパスが指定されている場合、データにはダイナミックとスタティックの両方の ARP および ND エントリが含まれますが、親パスが指定されている場合はスタティック エントリのみが含まれます。

    • /network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes

    • /network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets

    • /network-instances/network-instance/protocols/protocol/bgp/rib/communities

    • /network-instances/network-instance/protocols/protocol/bgp/rib/ext-communities

    • /network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-peers

    • /network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis

BGP ルーティング インスタンスの削除について

OpenConfig YANG ネットワーク インスタンス(OCNI)を使用して、BGP ルーティング インスタンス全体を削除するのではなく、デフォルトの VRF の BGP 構成のみを削除しようとすると、プロトコル/BGP レベルで BGP 情報が削除されないことがあります。この状況では、ペイロードに自律システム番号を含むプロトコルまたは BGP レベルで削除が行われると、BGP ルーティング インスタンス全体が削除されるのではなく、デフォルトの VRF の設定のみが削除されます。

以下は、BGP のデフォルト VRF で設定を削除するために使用されるペイロードの例です。

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101">
  <edit-config>
    <target>
      <running/>
    </target>
    <config>
      <network-instances xmlns="http://openconfig.net/yang/network-instance">
        <network-instance>
          <name>default</name>
          <protocols>
            <protocol>
              <identifier>BGP</identifier>
              <name>bgp</name>
              <bgp xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" nc:operation="delete">
                <global>
                  <config>
                    <as>100</as>
                  </config>
                </global>
              </bgp>
            </protocol>
          </protocols>
        </network-instance>
      </network-instances>
    </config>
  </edit-config>
</rpc>

予期される動作:BGP ルーティング インスタンス自体を削除する必要があります。これは、no router bgp 100 と同等です。

実際の動作:デフォルト VRF の BGP 構成のみが削除され、同等の単一の CLI 構成はありません。

削除操作前の実行構成は次のとおりです。

router bgp 100
  router-id 1.2.3.4
  address-family ipv4 unicast
  vrf abc
    address-family ipv4 unicast
      maximum-paths 2

削除操作後の実行構成は次のとおりです。

router bgp 100
  vrf abc
    address-family ipv4 unicast
      maximum-paths 2

YANG の検証

YANG 設定を検証するには、次のコマンドを使用します。

表 1. YANG 検証

コマンド

説明

show telemetry yang direct-path cisco-nxos-device

サポートされているパスを表示します。

OpenConfig サポートの有効化

プログラマビリティ エージェント(NETCONF、RESTCONF、および gRPC)で OpenConfig サポートを有効または無効にするには、「[no] feature openconfig」を設定します。例:
switch(config)# feature netconf
switch(config)# feature restconf
switch(config)# feature grpc
switch(config)# feature openconfig

(注)  


以前のリリースでは、mtx-openconfig-all RPM は個別にダウンロードしてインストールしていました。このメソッドは、10.2(2) リリースでは廃止されています。