Cumulus Linux 4.4 是具有 NVIDIA 用户体验( NVUE )的第一个版本,这是 Cumulus Linux 的全新 CLI 。对新的网络 CLI 的兴奋度和一个新的 56k 调制解调器是相同的。使 NVUE 与众不同的不仅仅是它是一个新的 CLI ,而是它所基于的原则使其独一无二。在其核心, NVUE 创建了 Cumulus Linux 的完整对象模型,实现了高级可编程性、可扩展性和可用性。
对象模型并不完全是网络工程师每天考虑的事情。在我参与帮助团队设计 NVUE 之前,我不知道对象模型是什么。
对象模型定义系统的组件及其相互之间的关系。例如,接口是一个对象。它具有 IP 地址或 MTU 设置等组件。重要的不仅仅是对象模型存在这一事实,还包括如何将对象和组件之间的关系组合在一起的思想。
接口和 IP 地址是一个简单的例子,但更复杂的是什么呢?考虑一个“ bond ”接口,也称为端口通道。键合是像以太网端口一样的顶级接口,将其他以太网接口的组件作为子接口,还是作为键合中的成员是接口的一个元素?
这些关系很快变得复杂起来。如果不仔细考虑这些问题,就会造成糟糕的用户体验,您可能需要多次定义相同的设置,以实现最终目标或不一致的配置。虚拟网络 CLI 可以让您在 VRF 对象下定义 VRF 内部的任何路由,但在顶层定义全局路由表中的任何路由,如以下示例所示:
ip vrf red ip route 10.1.1.0/24 via 169.254.1.1 !
ip route 192.168.1.0/24 via 172.16.1.1这是一个简单的示例,但现在定义路由的方式并不统一,这取决于您在系统中的位置。
了解了对象模型是什么之后,下一个问题是,“为什么要关心?”通过拥有对象模型,构建与系统交互的方式变得非常简单。系统与表示对象模型的 API 通信。当然,第一个接口是 CLI ,但现在任何东西都可以是系统的接口: REST 、 gRPC 甚至RFC1149 鸟类携带者。
图 3 . Cumulus Linux 4 . 4 中提供了 CLI 和 REST 接口。
通过让所有接口使用相同的对象模型,无论您如何与系统接口,都可以保证一致的结果。 CLI 和 REST API 使用相同的方法配置 BGP 对等机。根据您使用的接口,永远不可能看到不同的行为。因为无论您如何与对象模型交互,对象模型都是相同的,这意味着从使用 CLI 到构建完全自动化是一种演变,而不是一个全新的过程。
目前,任何网络设备都需要 REST 和 CLI 。除此之外,我们还能想到什么呢?对象模型可以直接导入 Python 或 Java 等编程语言。这使您能够使用真正的编程概念为一个设备或整个设备结构构建配置。您可以前所未有地强制执行输入、值和关系。以下代码示例显示了 NVUE Python 接口 MIGht 的外观:
from nvue import Switch spine01 = Switch() x = 1 while x < len(spine01.interfaces): spine01.interfaces.x.state = "up" spine01.interfaces.x.ip.address = “10.1.” + x + “.1/24”
spine01.apply()在本例中,我加载nvue库并创建一个名为 spine01 的新Switch对象。我让对象告诉我有len(spine01.interfaces)的系统上存在多少接口。对于每个接口,我将其置于 up 状态,并分配一个 IP 地址,其子网值与接口号匹配。例如,端口 3 的 IP 地址为 10 . 1 . 3 . 1 / 24 。
这还不存在,但绝对是可能的,因为存在一个对象模型。与所有其他网络供应商系统(其中模型由 CLI 确定)不同,此 CLI 基于模型。对象模型是一个独立的元素,可以导入到编程语言、 API 或任何其他系统中。
关于作者
Pete Lumbis 是 NVIDIA 以太网网络技术营销总监。 Pete 帮助客户构建、设计、自动化和加速下一代数据中心网络。皮特是 CCIE # 28677 和 CCDE 2012 :: 3 。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !