しかし、私はNETCONFを知っている人々に会ったことはほとんどありません。NETCONFは 、その作成者が望むように、SNMPの代わりになるでしょう。
彼はどんな人ですか? これはSNMPの類似物ですか? これは管理の進化ですか? それとも行き止まりのブランチですか?
NETCONFについて簡単に
したがって、 NETCONFはネットワーク構成プロトコルです(「シンプル」という言葉はありません。明らかにこれは彼の問題です)。 それはIETF NETCONF作業部会によって開発されています。 彼の「人生」はRFC 4741で2006年12月に始まり、2011年6月にRFC 6241が公開されました。
それはジュニパーの会社の腸から来ました。より正確には、ファイルJunos XML APIと呼ばれます。
SNMPが悪いのはなぜですか?
そして本当に、なぜNETCONFを再発明するのでしょうか? 結局のところ、SNMPは80年代後半に登場した(1988年のSNMPv1)非常に「新鮮な」プロトコルです。 比較のために、telnetは1969年に開発され、現在も使用されています。 彼らは、暗号化されたSNMPv3を思い付きました。
それでも、2002年にはインターネットアーキテクチャ委員会(IAB)ネットワーク管理ワークショップの会議が開催され、 RFC 3535が発表されました 。 特に、以下を含むネットワーク管理技術の長所と短所の概要を説明しています(パラグラフ2)。 SNMP(2.1節)。
私の意見では、SNMPの不利な点の最も明白なものをいくつか挙げます。
- ほとんどの実装では、トランスポートプロトコルとしてUDPを使用します。 途中で何かが失われた場合、まあ、何ができますか。
- 一度に1つの特定の値のみを書き込み/読み取りできます。 単一のトランザクションで複数の値を送信することはできません。
- 構成のロールバック/バックアップの可能性はありません。snmpsetは、アクティブな構成ですぐに変更を加えます。
- SMIの制限(たとえば、一部のフィールドの長さ)。
- MIB動物園には、1つのタイプのデバイス(スイッチなど)でさえ、1つのベンダーがいます。
- 古いMIBの新機能のサポートには遅延があります。 たとえば、CISCO-BGP-MIBは、私の知る限り、IPv6についてはまだ知りません。
NETCONFの準備
私の意見では、プロトコルは非常にシンプルで、RFCは非常によく書かれています。
概念的には、NETCONFは次のようになります。
ここで写真を撮りました 。
現在、4つのオプションがトランスポートとして定義されています。
- Ssh
- SOAP
- ビープ音
- TLS
操作は、XMLで表されるRPC要求で「ラップ」されます。
次の基本操作が定義されています。
< get > , < get-config > , < edit-config > , < copy-config > , < delete-config > , < lock > , < unlock > , < close-session > , < kill-session > .
クライアント/サーバープロトコルモデルが使用されます。 確立されたセッションは、必要な限り(接続があり、サーバーがまだ稼働している限り)保持できます。
接続が確立されると、クライアントとサーバーはサポートされているパラメーターを交換します(RPC通知を使用)。
何ができますか? そして、例えば次のことができます。
- 複数のセッションを開く
- さまざまな構成で動作する(例:実行中または起動中)
- 単一の検索要求で構成とステータスを要求する
- 1つの要求で複数のパラメーターを構成する
- 回答の形式で操作の結果を受け取る(rpc-reply)
- コミットとロールバックを行います(構成の適用とロールバック)
NETCONFの操作方法を理解する最も簡単な方法は、一例だと思います。
ジュニパーのNETCONFの例
NETCONFをオンにします。
システムサービスを設定するnetconf ssh
そして、接続してみてください:
sshユーザー名@ host -s netconf
パスワードを入力(またはキーを確認)した後、「サーバー」からhelloを取得します。
<!-- No zombies were killed during the creation of this user interface -->
<!-- user test, class j-super-user -->
< hello >
< capabilities >
< capability > urn:ietf:params:xml:ns:netconf:base:1.0 </ capability >
< capability > urn:ietf:params:xml:ns:netconf:capability:candidate:1.0 </ capability >
< capability > urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0 </ capability >
< capability > urn:ietf:params:xml:ns:netconf:capability:validate:1.0 </ capability >
< capability > urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file </ capability >
< capability > xml.juniper.net/netconf/junos/1.0 </ capability >
< capability > xml.juniper.net/dmi/system/1.0 </ capability >
</ capabilities >
< session-id > 666 </ session-id >
</ hello >
]] > ]] >
* This source code was highlighted with Source Code Highlighter .
サーバーから、その機能のリストが通知されました。
ゾンビについて-これは冗談です、Junosで時々起こります。 たとえば、 俳句を表示する隠しコマンドもあります。
バージョンと俳句を表示
helloに応答して、クライアントは、たとえば同じ機能のリストを使用してhelloで応答する必要があります。
< hello >
< capabilities >
< capability > urn:ietf:params:xml:ns:netconf:base:1.0 </ capability >
< capability > urn:ietf:params:xml:ns:netconf:capability:candidate:1.0 </ capability >
< capability > urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0 </ capability >
< capability > urn:ietf:params:xml:ns:netconf:capability:validate:1.0 </ capability >
< capability > urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file </ capability >
< capability > xml.juniper.net/netconf/junos/1.0 </ capability >
< capability > xml.juniper.net/dmi/system/1.0 </ capability >
</ capabilities >
</ hello >
]] > ]] >
* This source code was highlighted with Source Code Highlighter .
それだけです これで、サーバーを操作できます。 たとえば、現在の構成の一部を確認します。
< rpc message-id ="100" xmlns ="urn:ietf:params:xml:ns:netconf:base:1.0" >
< get-config >
< source >
< running />
</ source >
< filter type ="subtree" >
< configuration >
< protocols />
</ configuration >
</ filter >
</ get-config >
</ rpc >
* This source code was highlighted with Source Code Highlighter .
答えを得るもの:
< rpc-reply message-id ="100" xmlns:junos ="http://xml.juniper.net/junos/11.2R5/junos" >
< configuration junos:commit-seconds ="1311003260" junos:commit-localtime ="2012-06-06 11:21:40 UTC" junos:commit-user ="test" >
< protocols >
SKIPPED
</ protocols >
</ configuration >
</ rpc-reply >
* This source code was highlighted with Source Code Highlighter .
リクエストで指定されたmessage-id = "100"は、レスポンスにも保存されます。 T.O. 異なる順序で受信できる異なる回答を区別できます。
rpc-replyに加えて、クライアントからのリクエストの処理中にエラーが発生したときにrpc-errorをキャッチできます。 RFCの例:
< rpc-reply message-id ="110" xmlns ="urn:ietf:params:xml:ns:netconf:base:1.0" >
< rpc-error >
< error-type > rpc </ error-type >
< error-tag > missing-attribute </ error-tag >
< error-severity > error </ error-severity >
< error-info >
< bad-attribute > message-id </ bad-attribute >
< bad-element > rpc </ bad-element >
</ error-info >
</ rpc-error >
</ rpc-reply >
* This source code was highlighted with Source Code Highlighter .
出力を必要としない要求(コマンドなど)が正常に実行された場合、サーバーは次のようにOKで応答します。
< rpc-reply message-id ="201" xmlns ="urn:ietf:params:xml:ns:netconf:base:1.0" >
< ok />
</ rpc-reply >
* This source code was highlighted with Source Code Highlighter .
ジョブを終了するには、セッションを閉じる必要があります。
< rpc message-id ="100500" xmlns ="urn:ietf:params:xml:ns:netconf:base:1.0" >
< close-session />
</ rpc >
* This source code was highlighted with Source Code Highlighter .
NETCONFはどこで機能しますか?
ジュニパー、ブロケード、シスコ、Huaweiなどのデバイスでは噂されています。
...しかし
それほど良くありません。 NETCONFによって十分に文書化および管理されており、ジュニパーでしか見たことがない。 残念ながら、Huaweiではテストしませんでした。 必要はありませんでした。ブロケードの場合、実験的な被験者はいませんでした。 しかし、シスコ...
少なくともiOSバージョン15までのCatalystラインでのNETCONFの操作について:
- リクエストへの回答はCPUを非常に貪ります。 XMLフォーマットのrunning-configでは、CPUが100%でロードされると5分間待つことができます。
- ステータスの取得は、RFC(sic!)を使用して実装されていません。たとえば、「show int status」に応答して、Ciscoは常に完全な実行設定を追加します。
- XMLスキーマはなく、出力が奇妙に切り取られることがあります。 たとえば、シスコは「sh run int vlan777」リクエストに次のように応答します。
<? xml version ="1.0" encoding ="UTF-8" ? >< rpc-reply message-id ="101" xmlns =" urn:ietf:params:netconf:base:1 . 0 &# 60 ;/ cmd > a >< cli-config-data >< cmd > !
</ cmd > nterface Vlan777
</ cmd > description TEST
</ cmd > ip address 192.168.0.1 255.255.255.0
</ cmd ></ cli-config-data ></ data ></ rpc-reply > ]] > ]] >
* This source code was highlighted with Source Code Highlighter .
「インターフェース」という単語の最初の文字はどこかで消えました。
私の意見では、シスコの実装は仕事よりもショーのためのものです。
おわりに
NETCONFについて簡単に話したかったのは、 ハブレで彼の言及すら見つけられませんでした。
このプロトコルは、生きて利益をもたらすことができると思います。
また、コメントで他の意見、特に異なる機器での興味深いパフォーマンスを聞きたいです。