ODL中拓扑展现功能总结(二)

作者简介:鸿哥,硕士研究生,国内某通信设备公司软件研发工程师,主要从事云计算、SDN技术开发

前言

在上一篇文章《ODL中拓扑展现功能总结》中提到inventory-manager模块,现在来分析下inventory-manager模块。inventory-manager模块也是作为openflowplugin的应用层程序,位于openflowplugin-release-lithium-sr3文件夹的applications当中,负责处理operational数据库下的opendaylight-inventory数据节点(datastore数据库)的增删改查,比如odl控制器新加一台openflow交换机或者移除一台交换机。同时opendaylight-inventory数据节点还为前端提供数据支撑,首先来看yang模型。

1 YANG数据模型

ODL在controller\opendaylight\md-sal\model\model-inventory\src\main\yang\opendaylight-inventory.yang文件当中定义了inventory的数据节点的树形结构:

并且在yang语法当中还可以使用Augmentation来在某个节点下插入其他数据。同时还定义了以下notification通告:

这样在openflowplugin基础模块中发通告,在inventory-manager中接收通告并处理交换机节点信息。

2 相关依赖

ODL控制器与openflow交换机通过openflow协议建立连接(注意此时的链接已经实现TLS加密,所以可以在配置文件当中启用)之后,openflowplugin会通过notification的形式发布通告,具体在org.opendaylight.openflowplugin.openflow.md.core.sal包下的SalRegistrationManager.java文件当中的以下两个函数。

例如进入onSessionAdded函数,将会发出NodeUpdated的notification,而inventory-manager管理模块因为事先注册接收该通告,所以能够收到该通告并进入inventory-manager的处理逻辑。

3 代码流程

inventory-manager的入口在InventoryManagerImplModule.java文件的createInstance()函数,进入该函数后new出NodeChangeCommiter对象,并注册OpendaylightInventoryListener通告的接收器,因此NodeChangeCommiter对象专门处理以下几类通告:

3.1 onNodeUpdated事件

当ODL控制器与openflow交换机建立连接之后,就会触发onNodeUpdated函数,此时Inventory-manager模块做的事情就是将该节点写入yang的node节点(datastore数据库)。

3.2 onNodeRemoved事件

ODL控制器与openflow交换机断开连接之后,就会触发onNodeRemoved函数,此时Inventory-manager模块需要将该节点从数据库datastore删除该node节点。

3.3 onNodeConnectorRemoved事件

当openflow交换机端口变成down之后,就会触发onNodeConnectorRemoved函数,此时Inventory-manager模块需要将该节点从数据库datastore删除该NodeConnector节点。

3.4 onNodeConnectorUpdated事件

当openflow交换机端口变成up之后,就会触发onNodeConnectorUpdated函数,此时Inventory-manager模块需要添加该NodeConnector节点到数据库datastore。

4 总结

inventory-manager同样作为ODL的APP形式管理inventory节点信息,位于Openflowplguin的applications文件夹,而Openflowplguin模块当中的applications是建立在Openflowplguin基础模块之上的,比如openflowplugin-impl、openflowplugin等,由Openflowplguin基础模块处理好openflow协议最后发出node新加、更新、删除等通告。

一旦inventory-manager模块更新datastore数据树,topology-manager模块会监听此变化,并且更新自己的数据树,需要注意的是在web上显示的拓扑图都是拿topology-manager模块的数据树而非拿inventory-manager数据树进行展现。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/18730.html
分享到:
相关文章
条评论

登录后才可以评论

wellbeing 发表于17-03-16
0