不懂这些 你不算了解OpenDaylight项目

简介:

深入探索OpenDaylight(ODL)项目可帮助网络工程师更好地了解OpenDaylight项目控制器的工作原理以及其各组件如何配合工作,但为了学习开发人员如何与ODL交互,工程师首先需要了解一些新工具。

Maven archetypes

首先,OpenDaylight项目广泛使用Maven archetypes以确保工程师在该平台中构建的任何新项目或应用的一致性。Maven archetypes允许用户为新项目构建基本框架,包括一些默认的构建文件、目录结构和一些基本Java类。如果用户想要构建应用,则应该从该项目提供 的Maven archetypes开始。另外,开发者指南中介绍了利用Maven archetypes(使用mvn CLI工具)的工作流示例。

YANG

接下来,让我们列举YANG的一些例子来说明如何让简单的应用开始启动和运行。YANG是一种数据建模语言,工程师可以用它在平台或网络设备构建配置、运 行状态、远程过程调用(RPC)或通知。我们使用YANG有多种原因,其中一个例子是,通过构建YANG模块(我们可能会想到是单个YANG文件),工程 师可利用内置YANG工具来自动化为符合该项目标准和最佳做法的API绑定或Java类生成代码。另外,开发者指南中介绍了工程师可能生成的YANG模块 示例,其中使用IDE来定义Hello World RPC(这可能是针对该控制器发出)。

123

图1:hello.yang YANG模块示例

对于不熟悉YANG的用户,下面是帮助你了解上面YANG模块的相关细节:

• 上图所示的Hello.yang模块定义了RPC语句指示的RPC操作,由YANG RFC保留。
• 输入子语句也通过YANG规格而保留,并且,在这个示例中,为hello-world RPC操作定义了输入参数。
• 输入树的枝叶(作为名称)要求字符串数据类型。
• 输出子语句也通过YANG规格保留,并从hello-world RPC操作定义输出。
• 输出树的枝叶(作为问候语)会返回字符串数据类型。

在创建上述YANG模块后,用户可使用Maven来构建Hello World示例。在此过程中,工程师可能会提供RESTCONF接口,允许用户使用我们的示例应用发出RPC。

RESTCONF

通过使用YANG构建Hello World RPC模块,YANG工具然后可用于自动提供各种API。RESTCONF是以这种方式产生的API绑定的例子。为了让大家了解为什么RESTCONF存 在,让我们回想一下,YANG最初被创建作为NETCONF协议的数据建模语言,该协议主要使用Secure Shell进行传输以及使用XML来编码。而为确保正确映射YANG建模的应用到REST式的接口,RESTCONF随之出现。

现在我们应该说明如何为我们的Hello World RPC使用RESTCONF API。下图展示了使用谷歌Chrome的Postman生成RESTCONF API调用的例子。请注意,开发者指南详细介绍了为获得如下所示结果,不同Java类需要做出的额外改变。下图的主要目的是看看YANG模型如何影响暴露 的RESTCON API。

321

图2:POSTMAN输出YANG和RESTCONF映射示例

对于不熟悉RESTCONF的用户,下面是帮助你了解上面RESTCONF API调用的相关细节:

• 由于在hello.yang模块中我们使用了RPC语句,所产生的API使用POST操作连接到/RESTCONF/操作资源。RESTCONF RFC提供了RPC YANG语句到RESTCONF映射的更多细节。
• URI字符串的剩余部分源自YANG模块名称,hello,以及RPC标识符,hello-world。
• RESTCONF API调用中输入和输出JSON格式也是在hello.yang模块中执行建模的直接结果。

综上所述,了解OpenDaylight项目需要学习一些新的工具。通过一些努力,网络工程师可以开始了解该控制器的基本内部工作原理以及开发人员如何与OpenDaylight项目交互。


原文发布时间为: 2015年12月18日

本文作者:张程程翻译

本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

相关文章
|
负载均衡 安全 API
SDN网络架构分为哪三层
SDN软件定义网络是一种创新的网络架构,旨在提供更灵活、可编程和智能的网络管理。SDN的设计理念是通过将网络控制平面和数据平面分离,实现对网络行为的集中控制和编程。
|
存储 缓存 网络协议
深入理解Linux网络——内核是如何接收到网络包的
一、相关实际问题 RingBuffer是什么,为什么会丢包 网络相关的硬中断、软中断是什么 Linux里的ksoftirqd内核线程是干什么
|
存储 数据采集 人工智能
以Trace为核心的根因分析概述
近期一直在学习和复现“根因分析”领域的相关文章,在这里跟大家一起分享下相关内容。这里不在赘述关于“可观测性”和“AIOps”的重要性和必要性,也不过多的陈述在“复杂系统”中进行快速根因诊断的必要性,直接进入到相关算法和系统设计部分。
1994 0
以Trace为核心的根因分析概述
|
SQL 开发框架 JSON
honeycomb使用|学习笔记
快速学习honeycomb使用
909 0
honeycomb使用|学习笔记
|
XML 安全 网络协议
netconf简介
netconf简要
|
自然语言处理
大模型在应用中面临的局限性
【7月更文挑战第25天】大模型在应用中面临的局限性
1888 3
【数据结构】——双向链表详细理解和实现
【数据结构】——双向链表详细理解和实现
|
Java 数据库连接 API
seata回滚问题之全局异常如何解决
Seata是一款开源的分布式事务解决方案,旨在提供高效且无缝的分布式事务服务;在集成和使用Seata过程中,开发者可能会遇到不同的异常问题,本合集针对Seata常见异常进行系统整理,为开发者提供详细的问题分析和解决方案,助力高效解决分布式事务中的难题。
1898 105
|
SQL 关系型数据库 MySQL
MySQL根据某个字段包含某个字符串或者字段的长度情况更新另一个字段的值,如何写sql
MySQL根据某个字段包含某个字符串或者字段的长度情况更新另一个字段的值,如何写sql
631 0
|
存储 监控 算法
深入理解Java的垃圾回收机制(GC)实现原理
深入理解Java的垃圾回收机制(GC)实现原理
661 1