YANGとは
「YANG」とは「Yet Another Next Generation(さらに別の次世代)」の略で、 ネットワーク機器の管理プロトコル「NETCONF」で使われる、 設定項目などの記述言語です*1。 同様の役割を持つ記述言語「SMI」の次世代版として「SMIng (Next Generation Structure of Management Information)*2」が策定されたこともあって、 SMIngとは異なる、 もう一つの次世代版を意味するYet Another(さらにもう一つの)が付けられています。
YANGは、ネットワーク機器の設定項目や状態、 手続き呼び出しなどの構造を、 人が解釈しやすい形式で記述することを目的として提案されました。 このYANGを使って記述されたデータを元にして、 実際にネットワーク機器の設定などを行うのが、 NETCONFプロトコルであるという関係になります。 これはちょうど、 SMIとSimple Network Management Protocol (SNMP)の関係に相当します。
また、仕組みの複雑さを避けるために、 YANGの利用はNETCONFにおける利用に特化されています。 そしてYANGを使ってネットワーク機器の値や構造を抽象化したものが「YANGデータモデル」と呼ばれます。
NETCONFは、ネットワークを使って、 ネットワーク機器の設定等を行うために使われるプログラム(e.g.コントローラ)から、 複数のネットワーク機器を扱うことが想定されており、 仮想ルータのように管理対象の数が多い場合に対応できるようになっています。 また、複数のトランスポート(転送方法)があり、SSHなどが使われます。
YANGとNETCONFの仕組みは、 2002年に開かれたInternet Architecture Board (IAB)主催のワークショップで要件などが議論されて以降*3、 2003年に設立されたNETCONF WG*4で議論が進むことで具体化されてきました。 その後の2008年にYANGの策定を行うNETMOD WGが設立され*5、 SMIngに似た書式を使いつつ、 NETCONFに特化した仕組みとして検討されました。 YANGの仕様を記述したRFC6020は、2010年に公開されています。 NETMOD WGではアクセス制御リスト(ACL)の設定など、 YANGによる記述対象を充実させていく活動が進められています。
*1 "YANG - A Data Modeling Language for the Network
Configuration Protocol (NETCONF)", October 2010, RFC6020,
https://tools.ietf.org/html/rfc6020
- YANGに関わる用語や、データモデルの基本構造、さまざまなタイプの項目の記述方法がまとめられている
*2 "SMIng - Next Generation Structure of Management
Information", May 2004, RFC3780,
https://tools.ietf.org/html/rfc3780
- ネットワーク機器の管理情報をプロトコルとは独立した形式で記述できる言語SMIngについてまとめたRFC
- SMIv2からSMIngに至る背景もまとめられている
*3 "Overview of the 2002 IAB Network Management Workshop",
May 2003, RFC3535,
https://tools.ietf.org/html/rfc3535
- 2002年6月にIAB(Internet Architecture Board)主催で行われたネットワーク管理に関するワークショップの報告
- ネットワーク管理者とプロトコルの設計を行う人の間の認識共有を図り、IETFにおける標準化策定を促進する目的で開かれ、さまざまなプロトコルについての意見集約が図られた
*4 Network Configuration (netconf) - Charter, IETF
https://datatracker.ietf.org/wg/netconf/charter/
*5 NETCONF Data Modeling Language (netmod) - Charter, IETF
https://datatracker.ietf.org/wg/netmod/charter/