【SDN控制器分析之三】ONOS Device Subsystem

来源:互联网 发布:淘宝账号密码分享 编辑:程序博客网 时间:2024/04/28 16:52

概述

设备子系统负责发现和跟踪组成网络的设备,并使管理员和应用程序能够控制它们。大多数ONOS核心子系统都依赖Device子系统的Device和Port的模型对象来进行管理和创建,也会通过Device Provider来和网络进行交互。

Device子系统由以下几个部分组成:

  • DeviceManager : 能够与多个Provider通过deviceproviderservice接口交互和多个监听者通过deviceservice接口进行交互。
  • DeviceProviders,各有自己的网络协议库或手段与网络进行交互。
  • Devicestore,跟踪Device模型对象并生成deviceevents。

Model Objects and Provider Representations

上一节曾讲过ONOS会描述各种网络组件和属性为Core层协议无关的模型对象,在Provider层表述为协议相关的具体对象。以下是两层之间翻译的主要表达方式:

The OpenFlow Subsystem

OpenFlow的南向是由openflowdeviceprovider和OpenFlow驱动组件组成的。OpenFlow的子系统实现了控制器端的OpenFlow协议,通过Loxi工具来生成java代码实现的。因此,当前支持的协议版本1.0和1.3,前者有Nicira扩展的角色协商功能。
下图概述了南向的组织情况:

这里写图片描述

The OpenFlow Controller

OpenFlow的功能是通过openflowcontroller(OFController图)来进行协同的。这个组件的存储了Switch dpid和OpenFlowSwitch对象之间的映射关系,并生成OpenFlow事件给听众(Provider)订阅。Provider可以订阅以下侦听器中的一个或多个:

  • openflowswitchlistener - 设备事件监听器,例如设备连接和断开。例子:openflowdeviceprovider,openflowlinkprovider。
  • openfloweventlistener - OpenFlow消息监听器。例如:在openflowruleprovider。
  • packetlistener - 传入流量包监听器(packetins)。例子:openflowpacketprovider,openflowlinkprovider,openflowhostprovider。

OpenflowController还负责给每一个Switch对象建立、管理沟通Channel为每个开关对象的了解。连接是通过控制器的建立的,和每个连接的Switch的状态是由openflowswitchagent来记录的。具体来说,控制器将TCP OpenFlow通道(OFChannelHandler, 当前是Netty实现)和一个接入的TCP连接相关联(标记为“通道”上)。

Switch States

这里写图片描述

原创粉丝点击