看看有趣的ONOS Ⅱ:NETCONF

2020-05-26  本文已影响0人  SmartSloth

说明:翻译自NETCONF,学习自用

目录

贡献者

名称 组织 角色 电子邮件
Andrea Campanella ONF Developer andrea@opennetworking.us
吴海伦 Developer

总览

本节概述了ONOS中NETCONF协议​​的实现。

接口和类

通过实现NetconfDeviceOutputEventListener.java并将listener添加到任何需要获取设备通知的会话中,这些会话都可以侦听由设备侦听器实现拾取的设备生成的消息,该消息位于StreamHandler实现(现在为NetconfStreamThread.java)的通知侦听器集中。

支持的NETCONF操作

有关NETCONF操作的更多背景,请参考此参考源中的NETCONF协议​​操作

设备发现

当前,ONOS通过使用网络配置服务JSON文件来了解NETCONF设备,该文件代表设备的配置并提供有关设备的信息。如果您没有签出源代码,或者${ONOS_ROOT}/tools/test/configs/netconf-cfg.json中的ONOS源代码中没有提供源代码,请在GitHub上提供此类文件的示例。推送时,此JSON文件会通知ONOS这些设备的存在,但是在设备提供程序NetconfDeviceProvider中会确认其可访问性和可用性。有关设备子系统的更多信息,请参阅设备子系统Wiki页面。将JSON文件中的NETCONF设备推送到ONOS时,将在默认可用性设置为false的情况下创建设备,表示无法使用该设备。不久之后(将设备配置推送到ONOS后大约3秒),然后每隔30秒检查一次配置中所有设备的可访问性,并根据收集的信息将设备标记为在线(可用= true),标记为离线(available = false)或可用性状态保持不变。

将您自己的设备连接到ONOS

如果您拥有使用NETCONF协议​​的设备,请遵循本节。否则,如果您想通过测试VM尝试ONOS NETCONF实施,请转到示例部分

一旦您的设备在某个IP地址和某个端口上运行,为了使ONOS能够看到它,您应该遵循以下步骤。

超时时间

NETCONF控制器具有3个超时参数,这些参数控制基础SSH客户端如何连接到远程NETCONF设备。

可通过网络配置服务来设置各个设备的值。在“netconf”分组下,可以选择以任何顺序添加以下附加属性

SSH客户端

ONOS上有两个用于NETCONF连接的不同的SSH客户端库—Apache Mina SSH客户端和Ganymede SSH客户端—Apache Mina是默认库。

同样,客户端库可以设置为系统范围的或每个设备单独设置的。要通过设备配置每个设备,请通过网络配置服务配置以下设备。

示例:获取和设置控制器。

NETCONF基础结构用法的一个示例是在设备上获取和设置控制器。这些操作在ONOS Behavior(在我们的示例中为NetconfControllerConfig.java)中定义,该Behavior实现ControllerConfig的常规行为。要在设备上执行Behavior操作,您需要NetconfController,可以通过DriverHandler获得。 NetconfController实例现在使您可以访问所有设备或单个设备。一旦有了基于deviceId的感兴趣的设备,就可以获取NetconfSession对象与该设备通信并在物理设备上进行操作,例如在get controllers方法中获取配置或为该对象setControllers设置预构建的新对象。XmlConfigParser.java提供了一种从设备的XML响应中提取所需信息的方法,以及另一种生成正确的XML以在特定设备上设置一个或多个控制器的方法。

您可以在NetconfControllerConfig.java类中查看get和set控制器操作的实际实现。对于可以实现的其他操作的示例,OVSDB基础结构提供了一个很好的起点。

要调用getControllers和setControllers方法,您需要获取ControllerConfig Behavior,然后在此实例上调用这些方法。例如,在两个命令行界面命令中提供的DeviceControllersCommand.javaDeviceSetControllersCommand.java中实现了set和get命令。

onos> device-controllers
onos> device-setcontrollers

示例:测试基础结构

要在本地(不是在真正的交换机上)测试NETCONF实现,您需要安装了of-config的Mininet计算机(链接到mininet计算机)。

虚拟机 描述 注释
onos-ofconfig-mininet.ova 安装了配置的Mininet机器 用户名/密码:mininet / mininet

of-config是openvswitch实例的包装程序,该实例使用NETCONF协议​​并将其转换为OVSDB以使用该数据库实现。

基础架构设置:

故障管理

如果使用createSubscription启动对设备的订阅,则ONOS将从NETCONF设备接收<notification> XML消息。NetconfAlarmProviderNetconfAlarmTranslator将这些通知消息转换为警报(如Alarm.java中所定义),并向核心通知新警报。有关故障管理的更多信息,请参考NETCONF故障管理

未来的工作

有很多改进和测试的空间,这只是基础架构的基本框架。改进应该集中在提取NetconfSessionImpl方法中已编码的XML并测试每个操作。将来,可以通过YANG模型生成XML,因此它可以特定于我们要连接的每种类型的设备。

上一篇 下一篇

猜你喜欢

热点阅读