モデル駆動型テレメトリ
モデル駆動型テレメトリでは、ネットワーク デバイスからサブスクライバに、リアルタイムの設定や運用状態の情報を継続的にストリームすることができます。
アプリケーションは NETCONF-YANG により標準ベースの YANG データ モデルを使用して、必要とする特定のデータ項目をサブスクライブします。
構造化データは、サブスクリプション基準とデータ タイプに基づき、定義されたパターンでまたは変更時にパブリッシュされます。
モデル駆動型テレメトリの前提条件
-
NETCONF-YANG の知識とその使用方法。これには以下が含まれます。
-
NETCONF セッションの確立。
-
hello メッセージと機能メッセージの送信および受信。
-
確立された NETCONF セッションによる YANG XML リモート プロシージャ コール(RPC)の送受信詳細については、『NETCONF-YANG の設定例』を参照してください。
NETCONF-YANG の詳細については、『データモデル』の章を参照してください。
-
-
XML、XML 名前空間、および XML XPath の知識。
-
IETF 動的テレメトリ仕様で定義された標準および原則の知識。
-
NETCONF-YANG がデバイス上で設定済みであり稼働している必要があります。show platform software yang-management process コマンド を使用して、以下のプロセスが実行中であることを確認します。 Device# show platform software yang-management process confd : Running nesd : Running syncfd : Running ncsshd : Running dmiauthd : Running vtyserverutild : Running opdatamgrd : Running nginx : Running ndbmand : Running pubd : Running
(注)
プロセス pubd はモデル駆動型テレメトリ プロセスであり、これが実行していない場合にはモデル駆動型テレメトリは機能しません。
-
urn:ietf:params:netconf:capability:notification:1.1 機能は、hello メッセージでリストする必要があります。この機能は、IETF テレメトリをサポートするデバイスでのみアドバタイズされます。
モデル駆動型テレメトリについて
モデル駆動型テレメトリの概要
テレメトリは、自動の通信プロセスです。これにより、測定およびその他のデータがリモート ポイントまたはアクセス不能なポイントで収集され、モニタ用の受信装置に送信されます。モデル駆動型テレメトリは、モデル駆動型テレメトリ対応デバイスから送信先へとデータをストリームするメカニズムを提供します。
テレメトリでは、情報の送信元と送信先を識別するためにサブスクリプション モデルが使用されます。モデル駆動型テレメトリでは、ネットワーク要素の定期的なポーリングが不要になります。その代わりに、ネットワーク要素により、サブスクライバに配信される情報の継続的な要求が確立されます。その後、定期的に、またはオブジェクトの変更のたび、サブスクライブされている YANG オブジェクトのセットが当該のサブスクライバにストリーミングされます。
ストリーミングされるデータは、サブスクリプションによって駆動されます。サブスクリプションにより、アプリケーションは YANG データストアから更新(自動または継続的な更新)をサブスクライブすることができるようになるため、発行者は、それらの更新をプッシュし、実質的にストリーミングすることができます。
サブスクリプションの概要
サブスクリプションとは、プッシュされるデータのタイプおよび関連する条件を規定する、パブリッシャとサブスクライバとの間の契約です。サブスクリプションにより、クライアントは自動データ更新を含むイベント ストリームをサブスクライブできます。
動的サブスクリプションはサブスクライバとパブリッシャの間で合意されたサブスクリプションであり、<establish-subscription> RPC により確立されます。動的サブスクリプションでは、サブスクライバは RPC 経由でパブリッシャとのサブスクリプション トランザクションを開始します。動的サブスクリプションの有効期間は、それを確立するために使用されるトランスポート セッションによって制約されます。NETCONF の場合、トランスポート セッションがなくなると、関連する動的サブスクリプションは即時に終了します。有効期間は、<delete-subscription> RPC で定義できます。
サブスクリプションで使用されるデータは、ストリームで定義される一連の使用可能なイベントに対して XPath ホワイトリスト フィルタを使用することで指定されます。yang-push は、モデル駆動型テレメトリでサポートされる唯一のストリームです。
サブスクリプション トリガー
定期的にトリガーされるサブスクリプションは、更新トリガー選択で period 要素を使用して指定されます。
<establish-subscription> RPC の例
次に、<establish-subscription> RPC の例を示します。RPC では、stream、xpath-filter、および period の各フィールドが必須です。
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<establish-subscription
xmlns="urn:ietf:params:xml:ns:yang:ietf-event-notifications"
xmlns:yp="urn:ietf:params:xml:ns:yang:ietf-yang-push">
<stream>yp:yang-push</stream>
<yp:xpath-filter>/mdt-oper:mdt-oper-data/mdt-subscriptions</yp:xpath-filter>
<yp:period>1000</yp:period>
</establish-subscription>
</rpc>
YANG-push
YANG-push は、YANG データベース用のサブスクリプションおよびプッシュのメカニズムです。YANG-push サブスクリプションは、データ モデルを使用して定義されます。YANG-push を使用して、サブスクライバ アプリケーションは YANG データベースから更新の継続的なカスタマイズ ストリームを要求できます。YANG-push はデバイス上にインストールされている YANG モデルにより説明される構成データベース内と運用データベース内のすべてのデータを対象にしますすべてのデータのサブスクリプションがサポートされているわけではないので、データ用のフィルタを備える必要があります。
(注) |
YANG-push ストリームを指定する必要があります。 |
XPath フィルタのサポート
XML パス言語(XPath)フィルタは、サブスクライブする情報要素を指定します。テレメトリ パーサーに、必要なサブスクリプション情報がデータ モデル内のどこにあるかを通知します。XPath フィルタの更新フィルタ グループがサブスクリプション用にサポートされます。
定期パブリケーション
定期サブスクリプションでは、サブスクライブ対象情報による最初のプッシュ更新は即時に送信されます。ただしデバイスがビジー状態であったりネットワークが混雑していたりすると遅延することがあります。次に更新は、設定された定期タイマーの満了時に送信されます。たとえば、期間を 10 分と設定すると、サブスクリプションの作成直後に最初の更新が送信され、その後は 10 分おきに送信されます。
期間とは、定期的なプッシュ更新間のセンチ秒(1/100 秒)単位の時間です。期間が 1000 であれば、サブスクライブ対象情報の更新は 10 秒ごとになります。最小の期間間隔は 100(つまり 1 秒)です。デフォルト値はありません。この値は <establish subscription> RPC に明示的に設定する必要があります。
現在存在しないデータのサブスクリプションは許可され、通常のサブスクリプションとして実行されます。空のデータをサブスクライブすると、要求された期間で空の更新通知が送信されます。
定期的な更新には、サブスクライブ対象のデータ要素またはテーブルのフルコピーが含まれます。
テレメトリの RPC サポート
テレメトリには <establish-subscription> RPC と <delete-subscription> RPC がサポートされています。
<establish-subscription> RPC が送信されると、パブリッシャからの RPC 応答には <rpc-reply> メッセージと、結果ストリングを含む <subscription-result> 要素が含まれます。
次の表は、<rpc-reply> メッセージでの応答と、応答の理由を示しています。
結果文字列 |
RPC |
原因 |
---|---|---|
OK |
<establish-subscription> <delete-subscription> |
Success |
error-no-such-subscription |
<delete-subscription> |
指定されたテンプレートは存在しません。 |
error-no-such-option |
<establish-subscription> |
要求されたサブスクリプションはサポートされていません。 |
error-insufficient-resources |
<establish-subscription> |
サブスクリプションは次の理由により作成できません。
|
error-other |
<establish-subscription> |
その他の何らかのエラーです。 |
テレメトリでの NETCONF セッション
テレメトリのサブスクリプションおよび更新は、NETCONF セッションを介して転送されます。テレメトリのサブスクリプションを確立するために使用される NETCONF セッションは、テレメトリの更新を受け取ります。NETCONF セッションが破棄されたり、接続が切断された場合は、関連付けられたテレメトリ サブスクリプションも破棄されます。
すべてのセッションが NETCONF セッションであるため、すべてのセッションの制約は、NETCONF の実装に応じたものとなります。
テレメトリにおけるハイ アベイラビリティ
ダイナミック テレメトリの接続は、アクティブなスイッチもしくはスイッチ スタック内のメンバーへの SSH、またはハイ アベイラビリティ対応ルータにおけるアクティブなルート プロセッサへの SSH による NETCONF セッションで確立されます。切り替え後は、テレメトリのサブスクリプションを伝送する NETCONF セッションを含め、暗号を使用するすべてのセッションを破棄し、再確立する必要があります。切り替え後は、すべてのサブスクリプションも再作成する必要があります。
サンプルのモデル駆動型テレメトリ RPC
サブスクリプションの作成
サブスクリプションは、確立された NETCONF セッションを介して、XML RPC を使用して作成されます。<establish-subscription> RPC が IETF テレメトリのクライアントまたはコレクタからネットワーク デバイスに送信されます。RPC では、stream、xpath-filter、および period の各フィールドが必須です。
次に、運用データベースのサブスクリプション テーブルへのサブスクリプションの例を示します。
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<establish-subscription
xmlns="urn:ietf:params:xml:ns:yang:ietf-event-notifications"
xmlns:yp="urn:ietf:params:xml:ns:yang:ietf-yang-push">
<stream>yp:yang-push</stream>
<yp:xpath-filter>/mdt-oper:mdt-oper-data/mdt-subscriptions</yp:xpath-filter>
<yp:period>1000</yp:period>
</establish-subscription>
</rpc>
応答コードの受信
サブスクリプションが正常に作成されると、デバイスはサブスクリプション結果 notif-bis:ok およびサブスクリプション ID で応答します。次に、サンプル応答 RPC メッセージの例を示します。
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101">
<subscription-result xmlns="urn:ietf:params:xml:ns:yang:ietf-event-notifications"
xmlns:notif-bis="urn:ietf:params:xml:ns:yang:ietf-event-notifications">notif-bis:
ok</subscription-result>
<subscription-id xmlns="urn:ietf:params:xml:ns:yang:ietf-event-notifications">2147484201</subscription-id>
</rpc-reply>
サブスクリプションのプッシュ更新の受信
デバイスからプッシュされるサブスクリプション更新は XML RPC 形式であり、それらが作成された同じ NETCONF セッションにより送信されます。サブスクライブ対象情報の要素またはツリーは datastore-contents-xml タグ内で返されます。次に示すのは、サブスクライブ対象情報を提供するサンプル RPC メッセージです。
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2017-05-09T21:34:51.74Z</eventTime>
<push-update xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-push">
<subscription-id>2147483650</subscription-id>
<datastore-contents-xml>
<cpu-usage xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-process-cpu-oper"><cpu-utilization>
<five-minutes>5</five-minutes></cpu-utilization></cpu-usage>
</datastore-contents-xml>
</push-update>
</notification>
サブスクリプションが行われる情報要素が空である場合、またはそれが動的(名前付きアクセス リストなど)であり存在しない場合、定期更新は空になり、自己終結 datastore-contents-xml タグを持つことになります。次に示すのは、定期更新が空であるサンプル RPC メッセージです。
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2017-05-09T21:34:09.74Z</eventTime>
<push-update xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-push">
<subscription-id>2147483649</subscription-id>
<datastore-contents-xml />
</push-update>
</notification>
サブスクリプションの詳細の取得
現在のサブスクリプションの一覧を取得するには、<get> RPC を Cisco-IOS-XE-mdt-oper モデルに送信します。現在のサブスクリプションの一覧を表示するには、show telemetry ietf subscription コマンドも使用できます。
次に、<get> RPC メッセージの例を示します。
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get>
<filter>
<mdt-oper-data xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-mdt-oper">
<mdt-subscriptions/>
</mdt-oper-data>
</filter>
</get>
</rpc>
次に、RPC 応答の例を示します。
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101">
<data>
<mdt-oper-data xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-mdt-oper">
<mdt-subscriptions>
<subscription-id>2147485164</subscription-id>
<base>
<stream>yang-push</stream>
<encoding>encode-xml</encoding>
<period>100</period>
<xpath>/ios:native/router/ios-rip:rip/ios-rip:version</xpath>
</base>
<type>sub-type-dynamic</type>
<state>sub-state-valid</state>
<comments/>
<updates-in>0</updates-in>
<updates-dampened>0</updates-dampened>
<updates-dropped>0</updates-dropped>
</mdt-subscriptions>
</mdt-oper-data>
</data>
</rpc-reply>
次に、show telemetry ietf subscription dynamic brief コマンドの出力例を示します。
Device# show telemetry ietf subscription dynamic brief
Telemetry subscription brief
ID Type State Filter type
-----------------------------------------------------
2147483667 Dynamic Valid xpath
2147483668 Dynamic Valid xpath
2147483669 Dynamic Valid xpath
次に、show telemetry ietf subscription subscription-ID detail コマンドの出力例を示します。
Device# show telemetry ietf subscription 2147483667 detail
Telemetry subscription detail:
Subscription ID: 2147483667
State: Valid
Stream: yang-push
Encoding: encode-xml
Filter:
Filter type: xpath
XPath: /mdt-oper:mdt-oper-data/mdt-subscriptions
Update policy:
Update Trigger: periodic
Period: 1000
Notes:
サブスクリプションの削除
テレメトリ サブスクリプションは、2 つの方法で削除できます。1 つ目は、subscription-id タグにサブスクリプション ID を含む <delete-subscription> RPC を送信することです。これは、サブスクライバのみが実行できます。サブスクリプションは、親 NETCONF セッションが破棄または切断されたときにも削除されます。ネットワーク接続が中断された場合は、SSH/NETCONF セッションがタイムアウトしてその後にサブスクリプションが削除されるまで、多少の時間がかかることがあります。
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<delete-subscription xmlns="urn:ietf:params:xml:ns:yang:ietf-event-notifications"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<subscription-id>2147483650</subscription-id>
</delete-subscription>
</rpc>
モデル駆動型テレメトリに関するその他の参考資料
関連資料
関連項目 | 参照先 |
---|---|
NETCONF-YANG パッチ |
https://tools.ietf.org/wg/netconf/draft-ietf-netconf-yang-patch/ |
YANG エクスプローラ |
標準および RFC
標準/RFC | タイトル |
---|---|
イベント通知の NETCONF サポート |
|
RFC 6241 |
|
イベント通知への登録 |
|
YANG データストア プッシュのサブスクライブ |
テクニカル サポート
説明 | リンク |
---|---|
シスコのサポート Web サイトでは、シスコの製品やテクノロジーに関するトラブルシューティングにお役立ていただけるように、マニュアルやツールをはじめとする豊富なオンライン リソースを提供しています。 お使いの製品のセキュリティ情報や技術情報を入手するために、Product Alert Tool(Field Notice からアクセス)、Cisco Technical Services Newsletter、Really Simple Syndication(RSS)フィードなどの各種サービスに加入できます。 シスコのサポート Web サイトのツールにアクセスする際は、Cisco.com のユーザ ID およびパスワードが必要です。 |
モデル駆動型テレメトリの機能情報
次の表に、このモジュールで説明した機能に関するリリース情報を示します。この表は、ソフトウェア リリース トレインで各機能のサポートが導入されたときのソフトウェア リリースのみを示しています。その機能は、特に断りがない限り、それ以降の一連のソフトウェア リリースでもサポートされます。
プラットフォームのサポートおよび Cisco ソフトウェア イメージのサポートに関する情報を検索するには、Cisco Feature Navigator を使用します。Cisco Feature Navigator にアクセスするには、www.cisco.com/go/cfn に移動します。Cisco.com のアカウントは必要ありません。
機能名 |
リリース |
機能情報 |
---|---|---|
モデル駆動型テレメトリ |
Cisco IOS XE Everest 16.6.1 |
モデル駆動型テレメトリでは、ネットワーク デバイスからサブスクライバに、リアルタイムの設定や運用状態の情報を継続的にストリームすることができます。 この機能は、次のプラットフォームに実装されていました。
|
Cisco IOS XE Everest 16.6.2 |
この機能は、Cisco IOS XE Everest 16.6.2 で、Cisco Catalyst 9400 シリーズ スイッチに実装されました。 |
|
Cisco IOS XE Fuji 16.7.1 |
|