带你走进OpenVirteX之环境搭建

1 简介

OpenVirteX(以下简写为OVX)是一个网络虚拟化平台,操作人员可以用来创建和管理虚拟SDN网络(vSDNs)。租户可以通过虚拟化的OF网络构建特定的网络拓扑,寻址等。同FlowVisor相似,OVX也处于Physical Network与Controller的中间层,担任相同的角色。两者区别在于对数据包头的处理粒度不同,FlowVisor会根据flowspace的信息(如端口、ip地址等)将不同主机进行划分,以此来组成不同的slice。而OVX则是提供一个完整的虚拟网络。

01-ovx-introduction

图1 OpenVirteX的布局

OVX位于物理设备以及控制器之间,它的功能如下:

  • 创建一个特定拓扑的独立虚拟网络
  • 使用自己想要的网络控制器(OpenDaylight, Floodlight, NOX, BEACON)
  • 能够使用整个地址空间
  • 可以动态改变运行中的虚拟网络,并且能够从物理失效情况下自动恢复

2 OVX模块组成

  • PHYSICAL COMPONET:面向网络的的南向部分,管理OVX与物理交换机的of通信(见图2粉色部分)
  • VIRTUAL COMPONENT:面向租户的北向部分,其中每一个租户拥有一个众多OVXSwitch组成的虚拟网络,此部分负责OVXSwitch与controller之间的of通信(见图2蓝色部分)
  • GLOBAL COMPONENT:作为连接上面两部分的桥梁,维护一套Physical Network 和OVXNetwork的对应关系(见图2绿色部分)
  • API SERVER:提供关于系统配置,系统和网络状态的jsonrpc api
01-ovx-event flow

图2 事件流转过程

如上图所示,两个重要类ControllerChannelHandler和SwitchChannelHandler分别作为北向和南向接口的中枢处理发送过来的消息,当物理交换机packet-in消息过来时,SwitchChannelHandler.messageReceived()会进行分解LLDP与非LLDP消息,然后交给不同的消息方法处理,ControllerChannelHandler类似。作为中间层的GLOBAL COMPONENT担任着virtual和physical两部分的转化工作,即devirtualize和virtulize。

3 OVX组件的四种状态

目前在Java中实现OVX的迭代。组件被定义为[net.onrc.openvirtex.elements.*]包下的类。每个组件由一个基类定义。

OVX组件需要处理4种状态

  • INIT:初始化,调用构造函数创建
  • INACTIVE:非活跃状态,不处理of消息以及网络发现
  • ACTIVE:运行状态,系统消息事件正常流转处理
  • STOPPED:销毁,必须重新创建才能使用
01-ovx-component

图3 组件的状态迁移

状态迁移接口

  • register() [INIT -> INACTIVE]:将组件添加到映射和存储中,检查依赖关系。 (例如:为交换机创建一个新的端口。)
  • boot() [INACTIVE -> ACTIVE]:打开控制通道,激活相关组件。(例如: 如果端口启动( boot()ed),就建立一个连接。)
  • teardown() [ACTIVE -> INACTIVE]:关闭控制通道,关闭相关组件。(例如:如果一个端口不起作用了,那么与之相连的组件也不起作用。)
  • unregister() [INACTIVE -> STOPPED]:从映射和存储中删除组件 ,必要的时候注销组件。(例如:一个连接不存在了, 那么不管一个或两个连接的端口注销了(unregister()ed),组件必须注销。)

4 OVX虚拟机

OVXSwitch分为两种虚拟化子类:

  • VSW(OVXSingleSwitch): 对应一个单独的虚拟switch。
  • BVS(OVXBigSwitch):将多个switch的集合看做一个crossbar,BVS保存有switch集合的route table。
01-ovx-nw

图4 三个switch类切换到一个虚拟网络

图4是三个switch类切换到一个虚拟网络的结构图。每个Physical Switch (psw1, 2 and 3) 映射到对应的switch (switch1, 2, and 3)上。虚拟交换机vsw1是一个单独的交换机,映射到物理交换机psw1上,vsw2是一个集成的虚拟机,映射到psw2和psw3上,并且使用它们之间的连接作为SwitchRoute。每个tenant可以同时拥有VSW和BVS, 只要他们对应的psw没有重叠。最后,经OpenFlow通道(蓝色箭头)到控制平台。

5 OVX环境搭建

OpenVirteX官网提供了一套完整的OVX测试环境,除了OpenVirteX本身,还有Mininet、Floodlight等工具。下面介绍OVX集成环境的安装。

(1)环境准备:windows + vmware workstation。

(2)下载OVX虚拟磁盘文件,并解压http://ovx.onlab.us/wp-content/uploads/ovx-vm-x86_64-2014-10-14.zip

(3)在vmware workstation上新建一个虚拟机,步骤如下(此处不再给出安装图):选择“自定义”选项 —>选择“稍后安装系统”—>选择ubuntu 64位—>选择官网推荐2G内存,资源不够用1G也可以—>使用桥接网络—>使用现有虚拟磁盘,并选择下载的ovx虚拟磁盘文件。

(4)完成步骤(3)后,启动虚拟机,登陆用户名及密码均为ovx。

01-ovx-login

(5)成功后的图形界面如下,进入/home/ovx/可以看到集成的OVX服务目录,包括Mininet、Floodlight、OpenVirteX,但MongoDB数据库需要自己安装。(集成环境默认使用Floodlight控制器,如需使用其他控制器,需额外安装,在这篇文章中就不作介绍了。)

01-ovx-console

集成环境说明:

  • Floodlight是会随着虚拟机Linux系统启动而启动的,脚本位置为/home/ovx/ctrl/start-controllers.sh。floodlight默认tcp连接端口为10000、20000和30000,而ui默认端口为10001、20001、和30001。
  • OVX默认启动6633端口,对物理交换机而言它就是控制器,当虚网启动后ovx会连接到floodlight的端口10000建立tcp连接。

6 MongoDB安装

参照http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/#install-mongodb

(1)导入MongoDB公共GPG密钥

Ubuntu软件包管理工具(即dpkg和apt)通过要求分销商签订GPG密钥包确保方案的一致性和真实性。发出以下命令来导入MongoDB公共GPG密钥。

(2)为MongoDB创建一个列表文件,使用下面的命令行创建/etc/apt/sources.list.d/mongodb.list列表文件。

(3)重新加载本地包数据库

(4)安装MongoDB数据包

1)你可以安装MongoDB的最新稳定版本或MongoDB的特定版本。

  • 安装MongoDB的最新的稳定版本

  • 安装MongoDB的特定版本

2)虽然您可以指定任何可用版本的MongoDB,apt-get将升级到可用的最新版本。但为了防止意外升级,需要使用以下命令序列:

(5)安装完成后,通过whereis命令可以查看到MongoDB安装成功的路径。

(6)更改MongoDB配置文件

将下面的配置项设置true(如果MongoDB数据库所在磁盘空间大于4G则无需更改,否则启动异常)

(7)启动MongoDB

7 启动OVX

进入/home/ovx/OpenVirteX/scripts,执行如下命令启动OVX。

第一次启动OVX,会提示packaging……..,耐心等待,成功启动后,会有相关数据库、switch连接信息,如下图。

01-ovx-run result

更多OVX详情请参考链接:http://ovx.onlab.us/getting-started/tutorial/


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

登录后才可以评论

SDNLAB君 发表于14-10-23
3