阿凡达

接发邮件时, 发现一个大问题或更精确地说 大问题全与YANG模型相关 网络自动化工程师可用

深入Yang模型时,我意识到联网Yang模式有两种方式:OpenConfig和IETF商家原创OpenConfig模型 但他们也建IETF模型是吗这两种模型是否都用Cisco设备?OpenConfig模型近期内会与IEFT模型汇合吗?Cisco方法是什么?

人,多大套问题沉入水中

模型从何而来

阳模型或取自厂商或发自部分 "其它组.商家像思科公司生产硬件软件产品Other group可称为squalsbodies, 但不是所有组创建YANG模型都是技术标准体,

商家创建模型常被称为Native模型-和Native模型一样原生与设备/软件相关联

IETFOpenConfig即两个创建YANG模型的“ObjectiveGroup”。它们是成员和目标不同的集团IETF是一个标准机构,通过带入IETF其他标准(IETF标准)的同进程构建模型杨市,NETCONFESTCONF全部IETF标准)OpenConfig由一组网络运算符大服务提供商或网络公司聚集一堂建立一套满足需求Yang模式

商家常支持除原生模型外“其他集团”模型仿佛路由器支持RIP、OSPF、BGP和EIGRP同时全部

常发现原生、IETF和OpenConfig模型,所有模型都以单设备支持的同基本网络特征为对象介质间将出现差异,例如:

  • 数据表示基本格式
  • 配置元素可用
  • 操作细节可用

注意:IETF和OpenConfig并非唯一创建YANG模型的“其他群组”。举例说工作杨二EE标准加

相同数据实例,不同模型

使用DevNetOSXE常更新沙盒,我们可以研究这些模型在查看单一网络接口时如何比较

第一,我们有IETF模型ietf界面

curl https://sandbox-iosxe-latest-1.cisco.com/restconf/data/ietf-interfaces:interfaces/interface=GigabitEthernet1 \    -u developer:C1sco12345 \    --header 'Accept: application/yang-data+json'    {      "ietf-interfaces:interface": {          "name": "GigabitEthernet1",          "description": "MANAGEMENT INTERFACE - DON'T TOUCH ME",          "type": "iana-if-type:ethernetCsmacd",          "enabled": true,          "ietf-ip:ipv4": {              "address": [                  {                      "ip": "10.10.20.48",                      "netmask": "255.255.255.0"                  }              ]          },          "ietf-ip:ipv6": {}      }  }

第二,OpenConfig界面模型

curl https://sandbox-iosxe-latest-1.cisco.com/restconf/data/openconfig-interfaces:interfaces/interface=GigabitEthernet1?content=config \    -u developer:C1sco12345 \    --header 'Accept: application/yang-data+json'     {      "openconfig-interfaces:interface": {          "name": "GigabitEthernet1",          "config": {              "name": "GigabitEthernet1",              "type": "iana-if-type:ethernetCsmacd",              "description": "MANAGEMENT INTERFACE - DON'T TOUCH ME",              "enabled": true          },          "subinterfaces": {              "subinterface": [                  {                      "index": 0,                      "config": {                          "index": 0,                          "description": "MANAGEMENT INTERFACE - DON'T TOUCH ME",                          "enabled": true                      },                      "openconfig-if-ip:ipv4": {                          "addresses": {                              "address": [                                  {                                      "ip": "10.10.20.48",                                      "config": {                                          "ip": "10.10.20.48",                                          "prefix-length": 24                                      }                                  }                              ]                          }                      },                      "openconfig-if-ip:ipv6": {                          "config": {                              "enabled": false                          }                      }                  }              ]          },          "openconfig-if-ethernet:ethernet": {              "config": {                  "mac-address": "00:50:56:bf:78:ac",                  "auto-negotiate": true,                  "enable-flow-control": true              }          }      }  }

注:IETF和IOS XE原生模型使用单独的容器/模型运维数据,OpenConfig将配置和运维数据合并成同一个容器保持示例一致性,我已将“content=config”查询参数列入OpenConfig URL

最后,OS XE本地界面模型

curl https://sandbox-iosxe-latest-1.cisco.com/restconf/data/Cisco-IOS-XE-native:native/interface/GigabitEthernet=1 \    -u developer:C1sco12345 \    --header 'Accept: application/yang-data+json'    {      "Cisco-IOS-XE-native:GigabitEthernet": {          "name": "1",          "description": "MANAGEMENT INTERFACE - DON'T TOUCH ME",          "ip": {              "address": {                  "primary": {                      "address": "10.10.20.48",                      "mask": "255.255.255.0"                  }              }          },          "mop": {              "enabled": false,              "sysid": false          },          "Cisco-IOS-XE-ethernet:negotiation": {              "auto": true          }      }  }

何模式应使用

选择项目使用模型取决于个体开发者或团队然而,这里有一些基本建议我提供

  1. 启动非本地模式代码/脚本互操作性使用IETF或OpenConfig模型效果很好
    • 备注-OpenConfig模型往往比IEFT模型综合相同特征刚开机时IETF模型可成为学习协议、特征和模型驱动可编程工具的极佳选择更多生产级项目或许应该先研究OpenConfig模型
  2. 如有必要,请查看原生模型项目原生模型将是唯一你可能找到支持 网络特征原生模型也可以提供特征和数据访问,然后IETF和OpenConfig模型更新支持新事物
  3. 罐头建设项目肯定能同时利用原生模式和OpenConfig/IETF模型,然而,努力维护项目会随你带入的外部依存增加少依赖性通常是一个很好的选择我的建议是选择一组模型提供所需能力并坚持使用
    • 警告注解-您应该避免使用两个模型处理网络特征,因为它可能导致意外配置问题网络接口不同时使用原生机和OpenConfig模型选择使用两个不同组模式时,应使用不同的网络特征

一模型统治所有

您询问OpenConfig未来是否会与IETF并发信息在上面你可能已经知道答案它们是两个不同的组别,虽然它们的工作有重叠之处,但有足够的差别,我期望在可预见的未来两者都存在。

Cisco方法是什么?

Cisco平台(OS XE、OS XR、NX-OS)将继续支持IETF、OpenConfig和原生模型三位客户都有正当需求,我们希望允许选择最佳观察平台支持模型GitHubYangModels/Yang/Vendor/Cisco.软件发布后,支持模型公开发布供任何人查找

终极思想

模型驱动程序性专题是我最喜欢讨论和探索的部分自动化工程师基础技术这使得我们必须真正理解并深入这使工程师网络自动化行程所有阶段提出大题的时机成熟有问题吗或Twitter上通知hfpresston网站)或通过邮箱hapresto@cisco.com.

和这里一些伟大的资源探索模型驱动程序


我们想听听你的想法问题或留言下文
并保持连接思科DevNet社会

微博@CiscoDevNet|脸书|LinkedIn

访问新开发者视频通道



作者类

阿凡达

汉克普里斯顿

首席工程师

学习认证