OpenVirteX体系结构之操作与子系统(一)


【SDNLAB独家译稿】(接本系列上一篇《OpenVirteX体系结构之组件(二)》,本文翻译第三章3.1-3.2小节,其他部分的翻译会陆续发布。)

3 操作与子系统

这一部分描述了OpenVirteX和它诸多子系统的内部工作原理。这些子系统允许OVX操作第两部分所描述的组件以用来实现OpenFlow网络的虚拟化。

3.1 系统概述
3.2 启动与关闭
3.3 事件循环
3.4 网络发现
3.5 虚拟化与去虚拟化
3.6 状态同步
3.7 弹性
3.8 持续性
3.9 JSONRPC API

3.1 系统概述

OVX被分为如下几个主要部分:

  • 面向网络的南向接口:用于建立和维持基础设施(PhysicalNetwork),管理OVX和数据路径(datapath)之间的OpenFlow信道。
  • 面对租户的北向接口:呈现由软件交换机(OVXSwitches)和虚拟链路(OVXLinks)构成的虚拟网络中的每个租户,管理OVXSwitches和租户控制器之间的OpenFlow信道。
  • 全局映射Global map(OVXMap,PhysicalPort.ovxPortMap):完成虚拟网络和物理网络之间的相互映射,并且连接这两个网络。
  • API server:监听JSONRPC调用系统配置和系统/网络状态信息。

Global mapping在创建OVXNetwork时完成,虚拟网络和物理网络的信道管理在分离的IO循环中完成。对于每个消息,循环会做如下处理:1)有一个源或目的OVXNetwork;2)必须穿过北向南向分界,也就是必须调用virtualize()和devirtualize()方法。 OVX南北向接口的这种默认解耦状态使在运行时期动态重配置OVXNetwork成为了可能,可通过API调用来操纵全局映射,并且允许OVX保留到网络的连接即使在租户不存在的情况下。

第3部分主要描述子系统和机制,使得OVX可通过函数调用的方式来创建隔离的虚拟OpenFlow网络。

3.2 启动和关闭

这个部分描述了OVX的启动和关闭过程。

3.2.1 主进程启动

OVX的main函数在OpenVirtex.java[package net.onrc.openvirtex.core]中。main函数解析系统设置的命令行参数,并且启动OpenVirteXController,OpenVirteXController实现OVX的可运行状态,记录如下系统配置信息:

  • 系统配置文件路径(目前OVX还未使用)
  • OVX南向接口监听OpenFlow连接的主机和端口
  • OVX持续性存储应该连接的主机和端口
  • 工作线程的最大数量
  • 租户网络的最大数量
  • 轮询PhysicalNetWork的统计数据率

对于完整列表,请查看OpenVirteXcontroller类的构造器或者是OVX的帮助函数。

为了初始化这些设置,OpenVirteXController,按如下顺序:

1. 初始化单个PhysicalNetwork实例
2. 尝试连接数据库(database)来恢复原先的虚拟网络配置(如果存在的话)
3. 开启API server
4. 初始化北向信道处理程序

OVX在第3步监听API调用,在第4步与datapath连接,这时我们认为OVX已经初始化。

3.2.2 PhysicalNetwork部署/南向信道初始化

随着交换机连接到OVX,二者之间的链路被发现,PhysicalNetwork结构也被部署。在per-datapath的基础上OVX初始化网络拓扑发现,per-datapath为每个交换机创建了PhysicalSwitch类和SwitchDiscoveryManger类的一个实例。先前提到,从交换机的角度,OVX更像是一个控制器。因此,在OVX作为控制器时,连接的建立遵循OpenFlow握手的过程。图3.1展示了交换机的状态机。

OVX-3.1 图3.1 ClientFSM

图3.1 南向接口与datapath握手的状态机,OVX作为控制器

SwitchChannelHandler[net.onrc.openvirtex.core.io]在ChannelState枚举中实现该状态机。每个ChannelState值代表datapath可到达的状态,并且定义了特定状态消息的处理方法。ChannelState也定义了一个默认的行为,但特定状态方法重写了这个行为无论datapath是否处于特定状态。

OVX仅在datapath到达WAIT_DESCPRIPTION_STAT_REPLY状态时将datapath映射到PhysicalSwitch上。OVX在握手期间通过datapath提供的信息配置PhysicalSwitch,并且将PhysicalSwitch加入PhysicalNetwork。一旦SwitchDiscoveryManger映射到它的PhysicalSwitch,并且PhysicalSwitch的StatisticsManger可用,这时datapath被认为处于ACTIVE状态。一个处于ACTIVE状态的物理交换机将参与网络发现和事件循环。状态和拓扑发现的细节将在3.4节讨论,事件循环将在3.3节讨论。

3.2.3 租户网络(OVXNetwork)/北向信道初始化

租户网络通过API调用来实现创建、配置和初始化。

OVX网络的创建按照如下步骤:
1. 声明OVXNetwork,使用的地址块,连接到OVX的租户控制器
2. 从可用的物理交换机中创建OVXSwitch
3. 向OVXSwitch添加虚拟端口(OVXPorts)
4. 添加虚拟链路(OVXLinks)、主机(Hosts)、BVSes,交换路由(SwitchRoutes)
5. 如果使用手动配置,为OVXLink和SwitchRoute指定路径
6. 为OVXLink和SwitchRoute添加备份路径(可选)
7. 初始化OVXNetwork

在内部,这些命令促使OVX完成:
1. 实例化虚拟组件
2. 在全局映射中将虚拟组件映射到PhysicalNetwork组件上
3. 让虚拟组件到达ACTIVE状态,依照依赖顺序,启动OVXNetwork

第一个列表中的步骤需要调用一个或多个API[net.onrc.openvirtex.api.server],这些调用由租户处理程序(tenant handles[api.server.handlers.tenant])处理。表1显示了用于映射的租户处理、实例化的虚拟元素和参数:

OVX-3.1 表1

注意,创建虚拟组件和路径,需要了解可用的物理组件和网络拓扑结构。还要注意,上面的表格是不完整的API处理程序列表,仅仅列出了在OVXNetwork初始化中发挥作用的元素。本章提供了一个完整的API调用及其语法列表,在3.9节会详细介绍API服务器。

图3.2展示了第二个列表中第三步初始化OVXNetwork的过程。

OVX-3.1 图3.2 租户网络的启动过程

图3.2 租户网络的启动过程,通过调用API服务器开始

如前所述,每个用于实现组件接口的类均包含register()和boot()方法来完成部分初始化过程。需要注意的是初始化遵循一定的顺序,首先初始化的组件状态将影响随后初始化的组件。OVX各种对象之间的状态依赖关系见图3.3。

OVX-3.2 图3.3 OVX组件依赖关系图

图3.3:OVX组件依赖关系图。箭头方向表示“影响...的状态”的关系,反向箭头表示“影响...的映射”关系。例如,移除一个OVXPort,意味着任何OVXLinks、主机和连接到该端口的SwitchRoutes被删除。相应地,OVXSwitch必须从portMap中删除该端口,OVXNetwork必须从链路集合删除任何已经被删除的OVXLinks。黑色箭头表示限于任何物理或虚拟部分的查询,绿色虚线箭头表示物理到虚拟的直接依赖。当在谈论内部状态同步时我们还会重提图3.3。

ControllerChannelHandler [net.onrc.openvirtex.core.io]实现了租户控制器与OVXSwitch实例握手的状态机,如图3.4中所示。

OVX-3.2 图3.4 控制器状态机

图3.4 控制器状态机,从OVX作为datapath的角度上看

3.2.4系统关闭

关机通过OpenVirtexShutdownHook[net.onrc.openvirtex.core.io]来实现,它调用了
OpenVirteXController.terminate方法来处理。此方法关闭网络和租户面向的信道,注销该PhysicalNetwork(即已停止状态),并从其数据库断开与OVX连接。考虑到PhysicalNetwork已经部署,并且OVXNetworks存在时,关机过程需要按照图3.3中依赖关系图规定的顺序依次销毁。

未完待续,更多精彩即将呈现!
译自:北邮FNL实验室张歌,http://ovx.onlab.us/documentation/architecture/


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

登录后才可以评论

SDNLAB君 发表于14-12-02
7