38
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

YANGを使いこなす! (1) 概要

Last updated at Posted at 2018-05-01

はじめに

突然ですが、ネットワークエンジニアの皆様、YANG って使えてますか?

ネットワーク業界では、ネットワーク機器等のデータモデルを定義するのに YANG というデータモデリング言語を使いましょう、という動きが進んでいます。ネットワーク機器をあつかう際、これまでは機器/OSごとに異なるコマンドを使って設定する必要がありました。(ありました、と過去形で書いたものの、今後もまだしばらくはそうした状況が続くでしょう……。) これは、マルチベンダ構成の(特に大規模な)ネットワークでは不便なので、共通のデータモデルに基づいて統一したオペレーションができるようにしたいという話があるわけです。最近その中でも大きな動きは OpenConfig でしょうか。そうした状況で、データ構造や形式を定義するための言語(データモデリング言語)として YANG が使われています。

では「この機械はこういうデータモデルで動くんですよ」というのが YANG で定義され、提示されるとして、[あなた/私/我々]は、その機械を適切に扱うことができますか? その機械を使って目的とするシステムが組めますか? というのが今回(を含む数回の記事で)考えたいことです。

少なくとも筆者は、そう問われたときに何をしていいのやら、という状況でした。なので、ネットワークオペレータの視点で、YANG 形式で操作対象のデータモデルが与えられたときに、どのようにそれを「使う」のか…というのを、順を追って、数回に分けてみていきたいと思います。今回はまず全体の流れの説明だけ。

なにをしたらいいのか?

YANG とはなにか

YANG という言語そのものの話に踏み込むときりがないので、今回これはパスします。RFC 7950 - The YANG 1.1 Data Modeling Language を読みましょう……といってもヘビーなので他の解説資料を見るのが良いと思います。いろいろ解説があります。あるいは、ある程度「使い方」を見た上でわからないところや気になるところを追うというやり方もアリだと思います。いきなり YANG モデル読みましょうみたいなのはちょっとしんどい。

上の資料を見ていくとわかるのですが、ちょっと前の資料とかを見る場合は特に、NETCONF 基礎の話もおさえておくとわかりやすいことが多いように思います。XML によるオペレーションで組み合わせて使うことが想定されていたので。

YANG を使って何ができれば良いのか

使い方を知る: Tutorial をやってみよう!

さて。YANG ファイル (データモデルを定義したもの) が与えられたとして、何をしたらいいのでしょうか? という話なんですが、まあこの辺は当然先人がいろいろ残してくれているものがあるわけでですね。下記の YANG Tutorial をベースに話を進めたいと思います。とはいえ、そのままやるだけだとあえてブログを書く意味がないので、いくつか +α の話を加えていきます。

チュートリアルの流れ: 何をどこまでやるのか

github CESNET/netopeer にあるものは実際に動く Turing Machine 実装も含めてあるようなのですが、どうやらこれ単体で動くのではなく、netopeer というツールのプラグインか何かとして動くようです。Netopeer については やってみよう NETCONF - LGTM で触れられています。正直これを動かすのは難しそうだったのでパス…。

かわりに、自前でこのチュートリアルで出てくるデータ (XML) を処理できる Turing Machine 実装を作ってみました。この Turing Machine 実装を作るにあたって、gRPC インタフェースを YANG データモデルから生成するということも試しています。一連の使い方をチュートリアルベースに見ていった後に gRPC の話もします。

以下の話を何回かに分けて掲載していきます。

  • Turing Machine がどういうデータを受け取っているか・どのように動作しているのかを把握する
    • そもそも、Turing Machine ってなんだっけ?
    • Turing Machine を動かしてみて、操作対象と操作を理解する
      • Turing Machine サーバ/クライアント の起動
      • サーバを設定する
      • サーバに計算を実行させる
      • サーバの状態を取得する
  • YANG データモデルをどのように使うのかを把握する
    • Turing Machine にさせてみたい(別の)計算を定義する
    • 実際に (新しく) Turing Machine の設定データを作ってみる
      • 作ってみた設定データで Turing Machine に別の計算をさせてみる
    • Turing Machine クライアント/サーバ RPC の作り方を見る

Index

YANGを使いこなす!

38
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?